diff --git a/CHANGELOG_v0.4.1Beta.md b/CHANGELOG_v0.4.1Beta.md new file mode 100644 index 0000000..ed00ffa --- /dev/null +++ b/CHANGELOG_v0.4.1Beta.md @@ -0,0 +1,33 @@ +# Changelog - Project RawHorse v0.4.1 Beta + +**Release Date:** February 2026 + +## Summary + +v0.4.1 Beta adds the dedicated FOIA Targets page, UX quick wins (ErrorBoundary, TableSkeleton, EmptyState), a cyberpunk neon UI aesthetic overhaul, UI bug fixes, and screenshot management. + +## Added + +- **FOIA Targets Page** at `/analysis/foia` with sortable table, filters, pagination, expandable quality notes +- **ScoreBadge** shared component +- **TableSkeleton** shared component for table pages +- **EmptyState** shared component +- **ErrorBoundary** wrapping all route pages +- Loading spinners on NetworkGraph and SankeyDiagram +- Export FOIA Targets (CSV) button +- Dashboard stat cards click-through to Browse tabs +- Screenshots directory with placeholder images +- README updated to use relative screenshot paths +- **Cyberpunk Neon UI Overhaul** (dark mode): deep blue-black backgrounds; neon purple/cyan/gold accents; neon border glow on cards and stat-card values; glitch/retro hover effect on cards; sidebar and tab/button neon treatments; subtle CRT scanline overlay; neon cyan focus outlines. Primary colors (logo purple/gold) unchanged. +- **Analysis Overview card icons** — Distinct gradients per card: Entity Network Graph (purple), Sankey Flow Diagram (gold), Intelligence Stack Pyramid (red-orange), FOIA Targets (green-teal). +- **PRH Development Roadmap** — `docs/development/PRH_DEVELOPMENT_ROADMAP.md`: codebase audit findings organized by priority (P0–P3); immediate fixes, refactoring, TypeScript/React, security, testing, performance, infrastructure. + +## Fixed + +- Browse FOIA tab: added score columns +- Browse Entities: View Network column width +- Light mode contrast on cards +- Search dropdown truncation (min-width, title tooltips) +- Network Graph center panel squeeze (min-width) +- Browse tab not syncing from URL on load (activeTab initialized from searchParams) +- FOIA Targets page table columns overflow (table-layout: fixed, column widths) diff --git a/README.md b/README.md index a526384..2bdcfe5 100644 --- a/README.md +++ b/README.md @@ -41,21 +41,26 @@ To remove Project RawHorse and free disk space: **Windows** — double-click `UN --- ## Screenshots of Applications UI -PRHScreenshot_7 -PRHScreenshot_1 +![Dashboard](screenshots/dashboard-overview.png) -PRHScreenshot_6 +![Browse Entities](screenshots/browse-entities.png) -PRHScreenshot_5 +![Browse FOIA](screenshots/browse-foia.png) -PRHAnalysisScreenshot_1 +![Analysis Overview](screenshots/analysis-overview.png) -PRHIntelStackPyramidScreenshot_1 +![Network Graph](screenshots/network-graph-3panel.png) -PRHIntelStackPyramidScreenshot_2 +![Network Graph Proximity](screenshots/network-graph-proximity.png) -PRHScreenshot_3 +![Sankey Diagram](screenshots/sankey-diagram.png) + +![Intelligence Stack Pyramid](screenshots/pyramid-visualization.png) + +![FOIA Targets Page](screenshots/foia-targets-page.png) + +![Search Suggestions](screenshots/search-suggestions.png) ## Features @@ -413,6 +418,14 @@ Built on publicly available data from: ## Version History +### v0.4.1 (2026-02) +- **FOIA Targets Page**: Dedicated `/analysis/foia` with sortable table, filters, quality scoring +- **UX Quick Wins**: ErrorBoundary, TableSkeleton, EmptyState; loading spinners on Network Graph and Sankey +- **UI Fixes**: Dashboard stat cards click-through, Browse FOIA score columns, Export FOIA, light mode contrast, search truncation, network graph min-width +- **Screenshots**: Version-controlled screenshots in `screenshots/` directory +- **Code review**: Analysis Overview card icon gradients (purple/gold); development roadmap (`docs/development/PRH_DEVELOPMENT_ROADMAP.md`) +- See [CHANGELOG_v0.4.1Beta.md](CHANGELOG_v0.4.1Beta.md) for full details + ### v0.4.0 (2026-02) - **Data Enrichment**: 26 new entities from UAPGerb's "The Hidden Wing" transcript (Air Force SAF hierarchy) - **Intelligence Stack Pyramid**: Hierarchical L1–L6 visualization with chain-of-command tracing diff --git a/backend/routers/export_router.py b/backend/routers/export_router.py index c42fa65..d2f3999 100644 --- a/backend/routers/export_router.py +++ b/backend/routers/export_router.py @@ -109,6 +109,39 @@ async def export_awards_csv( ) +@router.get("/csv/foia-targets") +async def export_foia_targets_csv( + db: Session = Depends(get_db) +): + """Export FOIA targets to CSV""" + targets = db.query(FOIATarget).order_by(FOIATarget.priority_score.desc().nullslast()).all() + + output = io.StringIO() + writer = csv.writer(output) + + writer.writerow([ + 'id', 'agency', 'record_request', 'timeframe', 'relevance', 'notes', + 'priority_score', 'specificity_score', 'likelihood_score', 'quality_notes' + ]) + + for t in targets: + writer.writerow([ + t.id, t.agency, t.record_request, t.timeframe or '', t.relevance or '', + t.notes or '', + t.priority_score if t.priority_score is not None else '', + t.specificity_score if t.specificity_score is not None else '', + t.likelihood_score if t.likelihood_score is not None else '', + t.quality_notes or '' + ]) + + output.seek(0) + return StreamingResponse( + iter([output.getvalue()]), + media_type="text/csv", + headers={"Content-Disposition": "attachment; filename=foia_targets.csv"} + ) + + @router.get("/json/entities") async def export_entities_json( db: Session = Depends(get_db) diff --git a/backend/static/assets/index-CzXLV2a0.css b/backend/static/assets/index-CzXLV2a0.css deleted file mode 100644 index 004db6e..0000000 --- a/backend/static/assets/index-CzXLV2a0.css +++ /dev/null @@ -1 +0,0 @@ -.skeleton-line,.skeleton-card,.skeleton-table,.skeleton-stat{background:linear-gradient(90deg,var(--bg-secondary) 0%,var(--bg-tertiary) 50%,var(--bg-secondary) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{padding:24px;border-radius:12px;border:1px solid var(--border-color)}.skeleton-table{width:100%;border-radius:8px;overflow:hidden}.skeleton-table-header{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:12px;background-color:var(--bg-secondary);margin-bottom:8px}.skeleton-table-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:12px;margin-bottom:8px}.skeleton-stat{padding:24px;border-radius:12px;border:1px solid var(--border-color)}[data-theme=dark] .skeleton-line,[data-theme=dark] .skeleton-card,[data-theme=dark] .skeleton-table,[data-theme=dark] .skeleton-stat{background:linear-gradient(90deg,#ffffff0d,#ffffff1a,#ffffff0d);background-size:200% 100%}@media (max-width: 768px){.skeleton-table-header,.skeleton-table-row{grid-template-columns:repeat(3,1fr);gap:8px;padding:8px}.skeleton-card,.skeleton-stat{padding:16px}}.browse{padding:1rem 2rem;max-width:1600px;margin:0 auto}.search-section{background:var(--card-bg, #1a1a2e);border-radius:12px;padding:1.5rem;margin-bottom:1rem;border:1px solid var(--border-color, #2a2a4a)}.search-input-wrapper{position:relative;display:flex;align-items:center;background:var(--input-bg, #0d0d1a);border:2px solid var(--border-color, #2a2a4a);border-radius:8px;transition:border-color .2s}.search-input-wrapper:focus-within{border-color:var(--primary-color, #6366f1)}.search-icon{padding:0 .75rem;font-size:1.2rem;opacity:.6}.search-input-enhanced{flex:1;padding:.875rem .5rem;font-size:1rem;background:transparent;border:none;color:var(--text-color, #e0e0e0);outline:none}.search-input-enhanced::placeholder{color:var(--text-muted, #888)}.clear-search-btn{background:none;border:none;color:var(--text-muted, #888);padding:.5rem 1rem;cursor:pointer;font-size:1rem;transition:color .2s}.clear-search-btn:hover{color:var(--text-color, #e0e0e0)}.search-actions{display:flex;gap:.5rem;margin-top:1rem}.recent-searches,.quick-searches{display:flex;align-items:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.recent-label,.quick-label{font-size:.8rem;color:var(--text-muted, #888);text-transform:uppercase;letter-spacing:.05em}.recent-search-chip,.quick-chip{background:var(--input-bg, #0d0d1a);border:1px solid var(--border-color, #2a2a4a);color:var(--text-color, #e0e0e0);padding:.35rem .75rem;border-radius:16px;font-size:.85rem;cursor:pointer;transition:all .2s}.recent-search-chip:hover,.quick-chip:hover{background:var(--primary-color, #6366f1);border-color:var(--primary-color, #6366f1)}.active-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;padding:.75rem;background:#6366f11a;border-radius:8px;border:1px solid rgba(99,102,241,.2)}.filter-chip{display:inline-flex;align-items:center;gap:.5rem;background:var(--primary-color, #6366f1);color:#fff;padding:.35rem .75rem;border-radius:16px;font-size:.85rem}.remove-filter{background:none;border:none;color:#ffffffb3;cursor:pointer;padding:0;font-size:.9rem;line-height:1}.remove-filter:hover{color:#fff}.tabs{display:flex;gap:.25rem;margin-bottom:1rem;background:var(--card-bg, #1a1a2e);padding:.5rem;border-radius:10px;border:1px solid var(--border-color, #2a2a4a)}.tabs button{flex:1;padding:.75rem 1rem;background:transparent;border:none;color:var(--text-muted, #888);cursor:pointer;border-radius:6px;font-weight:500;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.tabs button:hover{background:#6366f11a;color:var(--text-color, #e0e0e0)}.tabs button.active{background:var(--primary-color, #6366f1);color:#fff}.tab-count{font-size:.75rem;background:#fff3;padding:.15rem .5rem;border-radius:10px}.filters-panel{background:var(--card-bg, #1a1a2e);border:1px solid var(--border-color, #2a2a4a);border-radius:10px;padding:1.25rem;margin-bottom:1rem}.filters-panel h4{margin:0 0 1rem;color:var(--text-color, #e0e0e0);font-size:1rem}.filter-group{margin-bottom:1rem}.filter-group label{display:block;margin-bottom:.5rem;color:var(--text-muted, #888);font-size:.9rem}.filter-checkboxes{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--text-color, #e0e0e0);font-size:.9rem}.checkbox-label input[type=checkbox]{accent-color:var(--primary-color, #6366f1)}.range-inputs{display:flex;align-items:center;gap:.75rem}.range-inputs input{flex:1;max-width:180px}.range-inputs span{color:var(--text-muted, #888)}.results-bar{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--card-bg, #1a1a2e);border-radius:8px;margin-bottom:1rem;border:1px solid var(--border-color, #2a2a4a)}.results-count{color:var(--text-muted, #888);font-size:.9rem}.results-controls{display:flex;align-items:center;gap:1.5rem}.results-controls label{display:flex;align-items:center;gap:.5rem;color:var(--text-muted, #888);font-size:.85rem}.results-controls select{padding:.35rem .5rem;background:var(--input-bg, #0d0d1a);border:1px solid var(--border-color, #2a2a4a);border-radius:4px;color:var(--text-color, #e0e0e0)}.pagination{display:flex;align-items:center;gap:.5rem}.page-info{color:var(--text-muted, #888);font-size:.85rem;padding:0 .5rem}.data-table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:.875rem 1rem;text-align:left;border-bottom:1px solid var(--border-color, #2a2a4a)}.data-table th{background:#0003;color:var(--text-muted, #888);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.sortable-header:hover{background:#6366f11a}.sort-indicator{opacity:.5;margin-left:.25rem}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:#6366f10d}.row-highlight-flash{animation:row-flash 2.5s ease-out}@keyframes row-flash{0%{background-color:#6366f159}40%{background-color:#6366f133}to{background-color:transparent}}.clickable-row{cursor:pointer}.search-highlight{background:#ffd5004d;color:#ffd500;padding:.1rem .2rem;border-radius:2px}.type-badge{display:inline-block;padding:.25rem .65rem;border-radius:12px;font-size:.8rem;font-weight:500;text-transform:capitalize}.type-badge.type-corporation{background:#3b82f633;color:#60a5fa}.type-badge.type-government-agency{background:#ef444433;color:#f87171}.type-badge.type-individual{background:#10b98133;color:#34d399}.type-badge.type-research-institution{background:#8b5cf633;color:#a78bfa}.type-badge.type-facility{background:#f59e0b33;color:#fbbf24}.type-badge.type-program{background:#ec489933;color:#f472b6}.type-badge.type-organization{background:#9ca3af33;color:#9ca3af}.type-badge.type-investment-firm{background:#14b8a633;color:#2dd4bf}.intel-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.intel-badge.level-1{background:#ef44444d;color:#fca5a5}.intel-badge.level-2{background:#f973164d;color:#fdba74}.intel-badge.level-3{background:#eab3084d;color:#fde047}.intel-badge.level-4{background:#22c55e4d;color:#86efac}.intel-badge.level-5{background:#3b82f64d;color:#93c5fd}.intel-badge.level-6{background:#8b5cf64d;color:#c4b5fd}.relationship-badge{display:inline-block;padding:.2rem .5rem;background:#6366f126;color:var(--primary-color, #6366f1);border-radius:4px;font-size:.8rem}.amount-cell{font-family:SF Mono,Consolas,monospace;font-weight:500;color:#34d399}.piid-cell{font-family:SF Mono,Consolas,monospace;font-size:.85rem;color:var(--text-muted, #888)}.record-request-cell{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600}.score-badge.high{background:#22c55e33;color:#34d399}.score-badge.medium{background:#eab30833;color:#fbbf24}.score-badge.low{background:#ef444433;color:#f87171}.empty-state{text-align:center;padding:4rem 2rem}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h3{margin:0 0 .5rem;color:var(--text-color, #e0e0e0)}.empty-state p{color:var(--text-muted, #888);margin-bottom:1.5rem}.btn-sm{padding:.35rem .75rem;font-size:.85rem}.btn-outline{background:transparent;border:1px solid var(--border-color, #2a2a4a);color:var(--text-color, #e0e0e0)}.btn-outline:hover{border-color:var(--primary-color, #6366f1);color:var(--primary-color, #6366f1)}@media (max-width: 768px){.browse{padding:1rem}.tabs{flex-wrap:wrap}.tabs button{flex:1 1 45%}.results-bar{flex-direction:column;gap:1rem;align-items:flex-start}.results-controls{width:100%;justify-content:space-between}.filter-checkboxes{flex-direction:column}.range-inputs{flex-direction:column;align-items:stretch}.range-inputs input{max-width:none}}.browse-pyramid-link{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;padding:4px;border-radius:4px;color:var(--primary-color, #5B4FFF);transition:background .15s ease,color .15s ease}.browse-pyramid-link:hover{background:var(--border-color);color:var(--text-primary)}.sankey-container{width:100%;min-height:600px;position:relative;background:var(--bg-secondary);border-radius:8px;padding:16px}.sankey-svg{width:100%;height:100%;min-height:600px;cursor:grab;background:var(--bg-primary);border-radius:4px}.sankey-svg:active{cursor:grabbing}.sankey-controls{display:flex;gap:16px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:4px}.control-group label{font-size:12px;font-weight:500;color:var(--text-secondary)}.control-group select,.control-group input[type=range]{padding:6px 12px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:14px}.control-group input[type=range]{width:200px;padding:0}.sankey-tooltip{position:fixed;background:#000000e6;color:#fff;padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000;white-space:pre-line;box-shadow:0 2px 8px #0000004d}.sankey-container.error{display:flex;align-items:center;justify-content:center;color:var(--color-error);font-weight:500}.sankey-container .btn{padding:6px 12px;font-size:14px}.sankey-container .btn.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.sankey-legend{position:absolute;top:70px;left:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:12px;z-index:50;max-width:200px;box-shadow:0 2px 8px #0000001a}.sankey-legend h5{margin:0 0 10px;font-size:.85rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color);padding-bottom:6px}.sankey-legend .legend-items{display:flex;flex-direction:column;gap:6px}.sankey-legend .legend-item{display:flex;align-items:center;gap:8px;font-size:.8rem}.sankey-legend .legend-color{width:14px;height:14px;border-radius:3px;flex-shrink:0}.sankey-legend .legend-label{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sankey-stats{position:absolute;bottom:16px;right:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:8px 12px;display:flex;gap:16px;font-size:.85rem;color:var(--text-secondary);z-index:50}.sankey-stats .filter-badge{background:var(--primary-color);color:#fff;padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600}@media (max-width: 768px){.sankey-legend{top:auto;bottom:60px;left:8px;max-width:160px}.sankey-stats{bottom:8px;right:8px;padding:6px 10px;gap:10px;font-size:.75rem}}.network-graph-container{width:100%;height:100%;position:relative;overflow:hidden;background:#030712}.network-graph-container canvas{display:block}.network-graph-container .loading,.network-graph-container .error,.network-graph-container .empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:1.1rem;color:#94a3b8;flex-direction:column;gap:12px}.network-graph-container .error{color:#f87171}.network-graph-container .error button{padding:6px 16px;background:#06b6d4;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.85rem}.graph-tooltip{background:#000000d9;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;pointer-events:none;z-index:500;max-width:260px;box-shadow:0 4px 16px #0006}.graph-tooltip .tooltip-name{font-weight:600;font-size:13px;margin-bottom:4px}.graph-tooltip .tooltip-type{display:inline-block;font-size:10px;background:#ffffff26;padding:1px 6px;border-radius:3px;margin-bottom:4px}.graph-tooltip .tooltip-connections{font-size:11px;color:#94a3b8}.graph-instructions-bar{position:absolute;bottom:0;left:0;right:0;background:#03071299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:8px 16px;text-align:center;font-size:.78rem;color:#94a3b8;z-index:10;-webkit-user-select:none;user-select:none}.graph-instructions-bar .separator{margin:0 10px;color:#475569}@media (max-width: 768px){.graph-instructions-bar{font-size:.7rem;padding:6px 10px}.graph-instructions-bar .separator{margin:0 6px}}.intel-stack-filter{background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:12px;min-width:220px}.intel-stack-filter.compact{padding:8px;min-width:180px}.intel-stack-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.intel-stack-header h4{margin:0;font-size:.9rem;font-weight:600;color:var(--text-primary)}.select-all-btn{padding:4px 8px;font-size:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.select-all-btn:hover,.select-all-btn.all-selected{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.intel-stack-pyramid{display:flex;flex-direction:column;gap:4px}.stack-level{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s ease;width:var(--stack-width, 100%);margin-left:auto;margin-right:auto}.intel-stack-filter.compact .stack-level{padding:6px 10px}.stack-level:hover{border-color:var(--stack-color);background:color-mix(in srgb,var(--stack-color) 10%,var(--bg-secondary))}.stack-level.active{border-color:var(--stack-color);background:color-mix(in srgb,var(--stack-color) 15%,var(--bg-secondary));box-shadow:0 0 0 1px var(--stack-color)}.stack-level.inactive{opacity:.5}.stack-level.inactive:hover{opacity:.8}.stack-indicator{width:12px;height:12px;border-radius:50%;flex-shrink:0}.stack-name{flex:1;font-size:.85rem;font-weight:500;color:var(--text-primary);text-align:left}.intel-stack-filter.compact .stack-name{font-size:.8rem}.stack-level-num{font-size:.7rem;color:var(--text-muted);font-weight:600;padding:2px 6px;background:var(--bg-primary);border-radius:4px}.intel-stack-info{margin-top:8px;text-align:center;color:var(--text-muted)}.intel-stack-info small{font-size:.75rem}@media (prefers-color-scheme: dark){.stack-level.active{background:color-mix(in srgb,var(--stack-color) 20%,var(--bg-secondary))}}@media (max-width: 768px){.intel-stack-filter{min-width:160px}.stack-level{width:100%}.stack-level-num{display:none}}.graph-sidebar{width:280px;min-width:280px;height:100%;background:#0a0a1a;border-right:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;overflow-y:auto;color:#e2e8f0;font-size:.85rem}.graph-sidebar-header{padding:16px;border-bottom:1px solid rgba(255,255,255,.08)}.graph-sidebar-header h2{margin:0 0 4px;font-size:1.1rem;color:#fff;font-weight:700}.graph-sidebar-header .back-link{display:inline-flex;align-items:center;gap:4px;color:#94a3b8;text-decoration:none;font-size:.8rem;transition:color .2s}.graph-sidebar-header .back-link:hover{color:#06b6d4}.graph-sidebar-stats{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:6px}.stat-row{display:flex;justify-content:space-between;align-items:center}.stat-row .stat-label{color:#94a3b8}.stat-row .stat-value{color:#22d3ee;font-weight:600;font-variant-numeric:tabular-nums}.graph-sidebar-selected{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);background:#06b6d414}.selected-actor-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-actor-header .actor-label{font-size:.75rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.selected-actor-name{font-size:1rem;font-weight:600;color:#22d3ee;margin-top:4px;word-break:break-word}.clear-actor-btn{padding:4px 10px;background:#dc2626;color:#fff;border:none;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .2s;white-space:nowrap}.clear-actor-btn:hover{background:#ef4444}.sidebar-section{border-bottom:1px solid rgba(255,255,255,.08)}.section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 16px;background:transparent;border:none;color:#e2e8f0;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s}.section-toggle:hover{background:#ffffff0a}.section-toggle .toggle-arrow{font-size:.7rem;color:#64748b;transition:transform .2s}.section-content{padding:0 16px 12px}.graph-search-container{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);position:relative}.graph-search-container label{display:block;font-size:.75rem;color:#94a3b8;margin-bottom:6px}.graph-search-input{width:100%;padding:8px 10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:6px;color:#e2e8f0;font-size:.85rem;outline:none;transition:border-color .2s;box-sizing:border-box}.graph-search-input:focus{border-color:#06b6d4}.graph-search-input::placeholder{color:#64748b}.search-results-dropdown{position:absolute;top:100%;left:16px;right:16px;background:#1e1e2e;border:1px solid rgba(255,255,255,.12);border-radius:6px;max-height:240px;overflow-y:auto;z-index:200;box-shadow:0 8px 24px #00000080}.search-result-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;transition:background .15s;border-bottom:1px solid rgba(255,255,255,.04);width:100%;background:transparent;border-left:none;border-right:none;border-top:none;text-align:left;font-family:inherit}.search-result-item:hover{background:#06b6d41f}.search-result-item .result-name{font-size:.85rem;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-item .result-count{font-size:.75rem;color:#64748b;white-space:nowrap;margin-left:8px}.filter-row{display:flex;align-items:center;gap:8px;padding:4px 0}.filter-row label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.8rem;color:#cbd5e1}.filter-row input[type=checkbox]{accent-color:#06b6d4;cursor:pointer}.filter-row input[type=number]{width:54px;padding:4px 6px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#e2e8f0;font-size:.8rem}.color-mode-toggle{display:flex;gap:4px;margin-top:4px}.color-mode-btn{flex:1;padding:5px 8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#94a3b8;font-size:.75rem;cursor:pointer;transition:all .2s}.color-mode-btn:hover{background:#ffffff1a}.color-mode-btn.active{background:#06b6d433;border-color:#06b6d4;color:#22d3ee}.sidebar-legend-items{display:flex;flex-direction:column;gap:4px}.sidebar-legend-item{display:flex;align-items:center;gap:8px;font-size:.78rem;color:#cbd5e1}.sidebar-legend-color{width:12px;height:12px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.15)}@media (max-width: 900px){.graph-sidebar{width:220px;min-width:220px;font-size:.8rem}}@media (max-width: 700px){.graph-sidebar{display:none}}.relationship-timeline{width:350px;min-width:300px;height:100%;background:#0a0a1a;border-left:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;color:#e2e8f0;font-size:.85rem;overflow:hidden}.timeline-header{padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.timeline-header-top{display:flex;align-items:center;justify-content:space-between}.timeline-header h3{margin:0;font-size:1rem;font-weight:700;color:#fff}.timeline-close-btn{padding:4px 8px;background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#94a3b8;cursor:pointer;font-size:1rem;line-height:1;transition:all .2s}.timeline-close-btn:hover{background:#ffffff1a;color:#fff}.timeline-actor-name{font-size:1.05rem;font-weight:600;color:#22d3ee;margin-top:6px;word-break:break-word}.timeline-subtitle{font-size:.78rem;color:#64748b;margin-top:4px}.timeline-filter{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.timeline-filter label{display:block;font-size:.72rem;color:#64748b;margin-bottom:4px}.timeline-filter-input{width:100%;padding:6px 10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:5px;color:#e2e8f0;font-size:.82rem;outline:none;box-sizing:border-box}.timeline-filter-input:focus{border-color:#06b6d4}.timeline-filter-input::placeholder{color:#475569}.timeline-entries{flex:1;overflow-y:auto;padding:0}.timeline-entry{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.04);transition:background .15s;cursor:default}.timeline-entry:hover{background:#ffffff08}.timeline-entry-type{display:inline-block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:3px;margin-bottom:4px}.timeline-entry-type.financial{background:#5b4fff33;color:#a78bfa}.timeline-entry-type.relationship{background:#06b6d426;color:#22d3ee}.timeline-entry-type.award{background:#facc1526;color:#facc15}.timeline-entry-type.inferred{background:#9ca3af26;color:#9ca3af}.timeline-entry-actors{font-size:.82rem;margin-top:2px;line-height:1.4}.timeline-entry-actors .actor-source{color:#f87171;font-weight:600;cursor:pointer}.timeline-entry-actors .actor-source:hover{text-decoration:underline}.timeline-entry-actors .actor-target{color:#4ade80;font-weight:600;cursor:pointer}.timeline-entry-actors .actor-target:hover{text-decoration:underline}.timeline-entry-actors .actor-action{color:#94a3b8}.timeline-entry-description{font-size:.76rem;color:#64748b;margin-top:2px}.timeline-entry-amount{font-size:.78rem;color:#a78bfa;font-weight:600;margin-top:2px}.timeline-browse-link{display:block;padding:10px 16px;text-align:center;color:#06b6d4;text-decoration:none;font-size:.82rem;font-weight:600;border-top:1px solid rgba(255,255,255,.08);transition:background .2s;flex-shrink:0}.timeline-browse-link:hover{background:#06b6d414}.timeline-empty{padding:24px 16px;text-align:center;color:#64748b;font-size:.85rem}@media (max-width: 900px){.relationship-timeline{width:280px;min-width:240px}}@media (max-width: 700px){.relationship-timeline{display:none}}.pyramid-tooltip{position:fixed;z-index:1000;max-width:320px;padding:10px 12px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 20px #00000040;pointer-events:none;animation:pyramid-tooltip-fade .15s ease-out}@keyframes pyramid-tooltip-fade{0%{opacity:0}to{opacity:1}}.pyramid-tooltip-title{font-weight:600;font-size:.95rem;margin-bottom:4px}.pyramid-tooltip-meta{font-size:.8rem;color:var(--text-muted);margin-bottom:6px}.pyramid-tooltip-desc{font-size:.82rem;color:var(--text-secondary);margin:6px 0;line-height:1.35}.pyramid-tooltip-list{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:.8rem;color:var(--text-muted)}.pyramid-tooltip-label{width:100%;font-weight:500;color:var(--text-secondary)}.pyramid-tooltip-item{white-space:nowrap}.pyramid-tooltip-item:after{content:", "}.pyramid-tooltip-item:last-child:after{content:""}.pyramid-viz{display:flex;flex-direction:row;align-items:flex-start;gap:24px;padding:16px;background:var(--card-bg);border-radius:12px;border:1px solid var(--border-color)}.pyramid-viz-loading,.pyramid-viz-empty{min-height:280px;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.pyramid-svg{flex:0 0 auto;max-width:100%;height:auto}.pyramid-tier-rect{transition:stroke-width .15s ease,filter .15s ease}.pyramid-tier-trapezoid:hover{filter:brightness(1.1)}.pyramid-entity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle;flex-shrink:0}.pyramid-flow-line{animation:pyramid-flow-pulse 2s ease-in-out infinite}.pyramid-flow-band{cursor:pointer;transition:stroke-opacity .2s ease}.pyramid-flow-band:hover{stroke-opacity:1}@keyframes pyramid-flow-pulse{0%,to{stroke-opacity:.5}50%{stroke-opacity:.85}}.pyramid-sidebar{flex:1;min-width:220px;max-width:320px;padding:12px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.pyramid-tier-stats{font-size:.85rem;color:var(--text-muted);margin:0 0 12px}.pyramid-entity-list{list-style:none;margin:0;padding:0}.pyramid-entity-list li{margin-bottom:4px}.pyramid-entity-btn{display:flex;align-items:center;width:100%;text-align:left;padding:8px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-primary);cursor:pointer;font-size:.9rem;transition:background .15s ease}.pyramid-entity-btn:hover{background:var(--border-color)}.pyramid-entity-btn.highlighted{background:var(--primary-color);color:#fff}.pyramid-entity-type{display:block;font-size:.75rem;color:var(--text-muted);margin-top:2px}.pyramid-entity-btn.highlighted .pyramid-entity-type{color:#ffffffd9}.pyramid-entity-node{transition:filter .2s ease}.pyramid-entity-node:hover circle{filter:brightness(1.2)}.pyramid-entity-node-highlighted circle{filter:drop-shadow(0 0 6px rgba(255,255,255,.9))}.pyramid-entity-node-label{pointer-events:none}.pyramid-tier-dimmed{opacity:.35;transition:opacity .25s ease}.pyramid-tier-in-chain{opacity:1}.pyramid-entity-node-dimmed{opacity:.4}.pyramid-entity-node-dimmed circle{filter:grayscale(.6)}.entity-detail-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:900;display:flex;justify-content:flex-end;align-items:stretch;animation:entity-detail-overlay-fade .2s ease-out}@keyframes entity-detail-overlay-fade{0%{opacity:0}to{opacity:1}}.entity-detail-panel{width:100%;max-width:420px;background:var(--card-bg);border-left:1px solid var(--border-color);box-shadow:-4px 0 24px #0003;display:flex;flex-direction:column;animation:entity-detail-panel-slide .25s ease-out}@keyframes entity-detail-panel-slide{0%{transform:translate(100%)}to{transform:translate(0)}}.entity-detail-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color)}.entity-detail-panel-header h3{margin:0;font-size:1rem;font-weight:600;color:var(--text-primary)}.entity-detail-panel-close{width:32px;height:32px;border:none;background:transparent;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center}.entity-detail-panel-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.entity-detail-panel-loading{padding:24px;text-align:center;color:var(--text-muted)}.entity-detail-panel-body{flex:1;overflow-y:auto;padding:16px}.entity-detail-name{margin:0 0 8px;font-size:1.25rem;font-weight:700;color:var(--text-primary)}.entity-detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.entity-detail-badge{font-size:.75rem;padding:4px 8px;border-radius:6px;background:var(--bg-secondary);color:var(--text-secondary)}.entity-detail-level{background:var(--color-primary);color:#fff}.entity-detail-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.45;margin:0 0 20px}.entity-detail-section{margin-bottom:20px}.entity-detail-section h4{margin:0 0 8px;font-size:.85rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.entity-detail-chain{font-size:.88rem}.entity-detail-chain-label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:4px}.entity-detail-chain-node{padding:4px 0 4px 12px;border-left:2px solid var(--border-color);margin-bottom:2px}.entity-detail-chain-target{padding:8px 0;font-weight:600;color:var(--color-primary)}.entity-detail-chain-up,.entity-detail-chain-down{margin-bottom:8px}.entity-detail-rel-group{margin-bottom:12px}.entity-detail-rel-type{font-size:.8rem;font-weight:600;color:var(--text-secondary);display:block;margin-bottom:4px}.entity-detail-rel-group ul{list-style:none;margin:0;padding:0}.entity-detail-rel-group li{font-size:.85rem;padding:2px 0;color:var(--text-primary)}.entity-detail-rel-desc{color:var(--text-muted);font-size:.8rem}.entity-detail-flows{list-style:none;margin:0;padding:0;font-size:.85rem}.entity-detail-flows li{padding:4px 0;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.entity-detail-more{color:var(--text-muted);font-style:italic}.entity-detail-actions{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--border-color)}.entity-detail-link{color:var(--color-primary);font-size:.9rem;text-decoration:none}.entity-detail-link:hover{text-decoration:underline}.entity-detail-panel-inline{max-width:none;box-shadow:none;border-radius:0;border-left:1px solid var(--border-color)}@media (max-width: 768px){.entity-detail-panel{max-width:100%;max-height:85vh;border-radius:12px 12px 0 0;margin-top:auto}}.pyramid-page{padding:0 24px 24px;display:flex;flex-direction:column;gap:0;min-height:0}.pyramid-page-top{margin-bottom:20px;flex-shrink:0}.pyramid-page-main{min-width:0;overflow:auto;flex:1}.pyramid-page-detail-section{margin-top:12px;border:1px solid var(--border-color);border-radius:8px;min-height:60px;max-height:220px;overflow:auto;display:flex;flex-direction:column;background:var(--card-bg);transition:max-height .2s ease;max-width:520px}.pyramid-page-detail-section.pyramid-page-detail-section-has-detail{max-height:min(400px,45vh)}.pyramid-page-aside-empty{padding:16px 20px;color:var(--text-muted);font-size:.9rem}@media (max-width: 900px){.pyramid-page-detail-section{max-width:none}}.pyramid-page .page-header{margin-bottom:0}.pyramid-controls{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:20px}.pyramid-toggle{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--text-secondary);font-size:.9rem}.pyramid-toggle input{cursor:pointer}.pyramid-chain-badge{margin-left:4px;font-size:.8rem;color:var(--color-primary)}.pyramid-page-header{position:relative}.pyramid-search-wrap{position:relative;margin-top:12px;max-width:320px}.pyramid-search-input{width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:.9rem}.pyramid-search-input:focus{outline:none;border-color:var(--color-primary)}.pyramid-search-results{position:absolute;top:100%;left:0;right:0;margin:4px 0 0;padding:4px 0;list-style:none;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;max-height:280px;overflow-y:auto;z-index:50}.pyramid-search-results li{margin:0}.pyramid-search-results button{width:100%;padding:10px 12px;border:none;background:none;color:var(--text-primary);font-size:.9rem;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between}.pyramid-search-results button:hover{background:var(--bg-secondary)}.pyramid-search-level{font-size:.75rem;color:var(--text-muted);margin-left:8px}.pyramid-legend{position:fixed;bottom:16px;left:24px;display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.75rem;color:var(--text-muted);z-index:40}.pyramid-legend-item{display:inline-flex;align-items:center;gap:4px}.pyramid-legend-dot{width:8px;height:8px;border-radius:50%}.pyramid-help-btn{position:fixed;bottom:16px;right:24px;width:32px;height:32px;border-radius:50%;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-muted);font-size:1.1rem;cursor:pointer;z-index:40;transition:background .2s ease,color .2s ease}.pyramid-help-btn:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.pyramid-help-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:950;display:flex;align-items:center;justify-content:center;padding:24px;animation:pyramid-help-fade .2s ease-out}@keyframes pyramid-help-fade{0%{opacity:0}to{opacity:1}}.pyramid-help-content{max-width:420px;padding:24px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 8px 32px #0000004d}.pyramid-help-content h3{margin:0 0 16px;font-size:1.1rem}.pyramid-help-content ul{margin:0 0 16px;padding-left:20px;line-height:1.6;color:var(--text-secondary)}.pyramid-help-content kbd{padding:2px 6px;border-radius:4px;background:var(--bg-secondary);font-size:.85em}.pyramid-help-close{padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:.9rem}.pyramid-help-close:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.disclaimer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.disclaimer-modal{background-color:#2a2a2a;border-radius:12px;max-width:800px;max-height:90vh;width:90%;border:2px solid #646cff;display:flex;flex-direction:column}.disclaimer-header{padding:24px;border-bottom:1px solid #3a3a3a}.disclaimer-header h2{margin:0;color:#646cff}.disclaimer-content{padding:24px;overflow-y:auto;flex:1}.disclaimer-content h3{color:#fff;margin-top:0}.disclaimer-content h4{color:#646cff;margin-top:20px;margin-bottom:10px}.disclaimer-content p{color:#b0b0b0;line-height:1.6}.disclaimer-content ul{color:#b0b0b0;line-height:1.8}.disclaimer-content li{margin-bottom:8px}.disclaimer-footer{padding:24px;border-top:1px solid #3a3a3a;display:flex;justify-content:center}.disclaimer-footer .btn{padding:14px 32px;font-size:1.1rem}.theme-toggle{position:fixed;top:20px;right:20px;width:48px;height:48px;border-radius:12px;border:1px solid var(--border-color);background-color:var(--card-bg);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);z-index:1000;transition:all .3s ease}.theme-toggle:hover{transform:scale(1.05);border-color:var(--color-primary);box-shadow:var(--shadow-lg)}.theme-toggle:active{transform:scale(.95)}.theme-toggle svg{transition:transform .3s ease}.theme-toggle:hover svg{transform:rotate(15deg)}@keyframes rotate-icon{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.theme-toggle.animating svg{animation:rotate-icon .5s ease}.search-bar-wrapper{position:relative;width:100%;max-width:600px;margin:0 auto}.search-input-container{position:relative;display:flex;align-items:center;background-color:var(--input-bg);border:2px solid var(--input-border);border-radius:10px;padding:0 12px;transition:all .2s ease}.search-input-container:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #5b4fff1a}.search-icon{color:var(--text-secondary);flex-shrink:0;margin-right:8px}.search-input{flex:1;padding:12px 8px;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:.95rem;width:100%}.search-input::placeholder{color:var(--text-secondary);opacity:.7}.search-loading{color:var(--color-primary);animation:spin 1s linear infinite;flex-shrink:0;margin-left:8px}.search-clear{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);border-radius:4px;transition:all .2s;flex-shrink:0;margin-left:8px}.search-clear:hover{background-color:var(--bg-secondary);color:var(--text-primary)}.search-results-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;background-color:var(--card-bg);border:1px solid var(--card-border);border-radius:12px;box-shadow:0 8px 24px #00000026;max-height:500px;overflow:hidden;z-index:1000;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.search-results-list{max-height:440px;overflow-y:auto}.search-result-item{display:flex;align-items:flex-start;padding:12px 16px;cursor:pointer;transition:background-color .2s;border-bottom:1px solid var(--border-color)}.search-result-item:last-child{border-bottom:none}.search-result-item:hover,.search-result-item.selected{background-color:var(--bg-secondary)}.search-result-item.selected{border-left:3px solid var(--color-primary)}.search-result-icon{font-size:1.5rem;margin-right:12px;flex-shrink:0}.search-result-content{flex:1;min-width:0}.search-result-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.search-result-title{font-weight:600;color:var(--text-primary);font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-type-badge{padding:2px 8px;background-color:var(--color-primary);color:#fff;border-radius:12px;font-size:.75rem;font-weight:500;white-space:nowrap;flex-shrink:0}.search-result-description{color:var(--text-secondary);font-size:.85rem;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background-color:var(--bg-secondary);border-top:1px solid var(--border-color);font-size:.8rem;color:var(--text-secondary)}.search-hint{font-family:monospace;opacity:.7}.search-no-results{padding:40px 20px;text-align:center;color:var(--text-secondary)}.search-no-results p{margin:0 0 8px;font-size:1rem;color:var(--text-primary)}.search-no-results small{font-size:.85rem;opacity:.7}.search-suggestions-block{padding:8px 0}.search-suggestions-label{display:block;padding:8px 16px 4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.search-suggestions-section{padding:4px 0}.search-suggestions-section-title{display:block;padding:6px 16px 2px;font-size:.8rem;color:var(--text-secondary)}.search-clear-history{background:none;border:none;cursor:pointer;padding:4px 8px;font-size:.8rem;color:var(--text-secondary);text-decoration:underline;border-radius:4px}.search-clear-history:hover{color:var(--color-primary)}@media (max-width: 768px){.search-bar-wrapper{max-width:100%}.search-input{font-size:.9rem}.search-input::placeholder{font-size:.85rem}.search-results-dropdown{max-height:400px}.search-results-list{max-height:340px}.search-result-item{padding:10px 12px}.search-hint{display:none}}.refresh-button-header{position:relative;display:inline-flex;align-items:center}.refresh-btn{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s ease;position:relative;color:var(--text-primary)}.refresh-btn:hover{background:var(--bg-tertiary);border-color:var(--color-primary)}.refresh-btn.stale{border-color:var(--color-warning, #ff9800);background:var(--color-warning, #ff9800);color:#fff;animation:pulse 2s infinite}.refresh-btn.refreshing{cursor:wait;opacity:.7}.refresh-badge{position:absolute;top:-4px;right:-4px;background:var(--color-error, #f44336);color:#fff;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid var(--bg-primary)}.refresh-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;padding:6px 12px;background:#000000e6;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:1000}.refresh-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#000000e6}.refresh-button-floating{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:12px}.refresh-notification{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--color-warning, #ff9800);color:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;animation:slideIn .3s ease}.refresh-notification-btn{padding:6px 12px;background:#fff;color:var(--color-warning, #ff9800);border:none;border-radius:4px;font-weight:500;cursor:pointer;transition:background .2s ease}.refresh-notification-btn:hover{background:#ffffffe6}.refresh-btn-floating{width:48px;height:48px;border-radius:50%;background:var(--color-primary);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0003;transition:all .2s ease;position:relative}.refresh-btn-floating:hover{transform:scale(1.1);box-shadow:0 6px 16px #0000004d}.refresh-btn-floating.stale{background:var(--color-warning, #ff9800);animation:pulse 2s infinite}.refresh-btn-floating.refreshing{cursor:wait;opacity:.7}.refresh-badge-floating{position:absolute;top:-2px;right:-2px;background:var(--color-error, #f44336);color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid var(--bg-primary)}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}:root{--color-primary: #5B4FFF;--color-secondary: #D4A218;--color-accent: #8B7FFF;--color-accent-gold: #E6B933;--bg-primary: #FFFFFF;--bg-secondary: #F5F5F7;--bg-tertiary: #E8E8EA;--bg-elevated: #FFFFFF;--text-primary: #1C1C1E;--text-secondary: #48484A;--text-tertiary: #8E8E93;--text-inverse: #FFFFFF;--border-color: #D1D1D6;--border-hover: #A1A1A6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .12);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--color-success: #34C759;--color-warning: #FF9500;--color-error: #FF3B30;--color-info: #007AFF;--sidebar-bg: var(--bg-secondary);--sidebar-border: var(--border-color);--sidebar-text: var(--text-primary);--sidebar-hover: var(--bg-tertiary);--sidebar-active-bg: var(--color-primary);--sidebar-active-text: var(--text-inverse);--card-bg: var(--bg-elevated);--card-border: var(--border-color);--card-shadow: var(--shadow-sm);--input-bg: var(--bg-primary);--input-border: var(--border-color);--input-focus: var(--color-primary);--btn-primary-bg: var(--color-primary);--btn-primary-hover: #4A3EE6;--btn-primary-text: var(--text-inverse);--btn-secondary-bg: var(--bg-tertiary);--btn-secondary-hover: var(--border-color);--btn-secondary-text: var(--text-primary)}[data-theme=dark]{--bg-primary: #1C1C1E;--bg-secondary: #2C2C2E;--bg-tertiary: #3A3A3C;--bg-elevated: #2C2C2E;--text-primary: #FFFFFF;--text-secondary: #E5E5EA;--text-tertiary: #AEAEB2;--text-inverse: #1C1C1E;--border-color: #48484A;--border-hover: #636366;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .5);--sidebar-bg: var(--bg-secondary);--sidebar-border: var(--border-color);--sidebar-text: var(--text-primary);--sidebar-hover: var(--bg-tertiary);--sidebar-active-bg: var(--color-primary);--sidebar-active-text: var(--text-inverse);--card-bg: var(--bg-elevated);--card-border: var(--border-color);--card-shadow: var(--shadow-md);--input-bg: var(--bg-tertiary);--input-border: var(--border-color);--input-focus: var(--color-primary);--btn-primary-bg: var(--color-primary);--btn-primary-hover: #6B5FFF;--btn-primary-text: var(--text-inverse);--btn-secondary-bg: var(--bg-tertiary);--btn-secondary-hover: var(--border-color);--btn-secondary-text: var(--text-primary)}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.theme-transitioning *{transition:none!important}.app{display:flex;min-height:100vh;background-color:var(--bg-primary);color:var(--text-primary)}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-primary);color:var(--text-inverse);padding:8px 16px;text-decoration:none;z-index:1000;border-radius:0 0 4px;font-weight:600}.skip-link:focus{top:0}.sidebar{width:250px;background-color:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);padding:20px;display:flex;flex-direction:column}.sidebar-header{display:flex;flex-direction:column;align-items:center;margin-bottom:10px}.sidebar-logo{width:120px;height:120px;object-fit:contain;margin-bottom:16px;transition:transform .3s ease}.sidebar-logo:hover{transform:scale(1.05)}.sidebar-header h1{font-size:1.5rem;margin-bottom:20px;color:var(--color-primary);font-weight:700;text-align:center}.sidebar-search{padding:0 0 20px;margin-bottom:20px;border-bottom:1px solid var(--sidebar-border)}.nav-items{list-style:none;padding:0;margin:0}.nav-items li{margin-bottom:10px}.nav-items a{display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--sidebar-text);text-decoration:none;border-radius:8px;transition:all .2s}.nav-items a:hover{background-color:var(--sidebar-hover);color:var(--text-primary)}.nav-items a.active{background-color:var(--sidebar-active-bg);color:var(--sidebar-active-text);box-shadow:var(--shadow-sm)}.main-content{flex:1;padding:30px;overflow-y:auto;background-color:var(--bg-primary)}.page-header{margin-bottom:30px}.page-header h1,.page-header h2{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-sm);color:var(--text-primary);font-weight:var(--font-weight-bold);line-height:1.2}.page-header p{color:var(--text-secondary)}.card{background-color:var(--card-bg);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);transition:box-shadow var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card h3{margin-top:0;margin-bottom:var(--spacing-md);color:var(--text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:1.4}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:linear-gradient(135deg,var(--card-bg),var(--bg-secondary));border-radius:var(--radius-lg);padding:var(--spacing-lg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);transition:transform var(--transition-base),box-shadow var(--transition-base)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card h4{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin:0 0 var(--spacing-md) 0;font-weight:var(--font-weight-semibold)}.stat-card .value{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-primary);margin:0;line-height:1.2}.stat-card:nth-child(2n) .value{color:var(--color-secondary)}.tabs{display:flex;gap:10px;margin-bottom:20px}.tabs button{padding:var(--spacing-sm) var(--spacing-md);background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md) var(--radius-md) 0 0;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.tabs button:hover{background-color:var(--bg-secondary);color:var(--text-primary);border-color:var(--border-hover)}.tabs button.active{background-color:var(--color-primary);color:var(--text-inverse);border-color:var(--color-primary);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-sm)}.btn{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);border:none;font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-base);font-weight:var(--font-weight-medium);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.btn-primary{background-color:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{background-color:var(--btn-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background-color:var(--btn-secondary-bg);color:var(--btn-secondary-text);border:1px solid var(--border-color)}.btn-secondary:hover{background-color:var(--btn-secondary-hover);border-color:var(--border-hover)}.input-group{margin-bottom:20px}.input-group label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.9rem;font-weight:500}.input-group input,.input-group select,.input-group textarea{width:100%;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.input-group input:focus,.input-group select:focus,.input-group textarea:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.data-table{width:100%;border-collapse:collapse;background-color:var(--card-bg);border-radius:var(--radius-md);overflow:hidden;transition:opacity var(--transition-base)}.data-table-wrapper{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:-24px;padding:24px}.data-table th{background-color:var(--bg-secondary);padding:var(--spacing-md);text-align:left;font-weight:var(--font-weight-semibold);color:var(--text-primary);border-bottom:2px solid var(--border-color);white-space:nowrap;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.data-table td{padding:var(--spacing-md);border-bottom:1px solid var(--border-color);color:var(--text-primary);word-break:break-word;font-size:var(--font-size-base);transition:background-color var(--transition-fast)}.data-table tr:hover{background-color:var(--bg-secondary)}.data-table tr{transition:background-color var(--transition-fast)}.data-table tr:last-child td{border-bottom:none}.search-bar{margin-bottom:20px;display:flex;gap:10px}.search-bar input{flex:1;padding:12px 16px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:8px;color:var(--text-primary);font-size:1rem;transition:all .2s}.search-bar input:focus{border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.loading{text-align:center;padding:40px;color:var(--text-secondary);font-size:1.2rem;display:flex;align-items:center;justify-content:center;gap:12px}.loading:before{content:"";width:20px;height:20px;border:3px solid var(--bg-tertiary);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .4s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.export-buttons{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.form-section{margin-bottom:30px}.alert{padding:12px 16px;border-radius:8px;margin-bottom:20px;font-weight:500}.alert-success{background-color:#34c75926;border:1px solid var(--color-success);color:var(--color-success)}.alert-error{background-color:#ff3b3026;border:1px solid var(--color-error);color:var(--color-error)}.filters-panel{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:20px;margin-bottom:20px}.filters-panel h4{margin-top:0;margin-bottom:16px;color:var(--text-primary);font-size:1.1rem}.filter-group{margin-bottom:16px}.filter-group label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.9rem;font-weight:500}.filter-group select{width:100%;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.filter-group select:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.range-inputs{display:flex;align-items:center;gap:12px}.range-inputs input{flex:1;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.range-inputs input:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.range-inputs span{color:var(--text-secondary);font-size:.9rem}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary)}.btn-secondary:hover{background-color:var(--border-color)}.support-card{background:linear-gradient(135deg,var(--card-bg) 0%,var(--bg-secondary) 100%);border:2px solid var(--color-primary);box-shadow:0 4px 12px #5b4fff26;transition:all .3s ease}.support-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #5b4fff40}.support-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.support-header h3{margin:0;color:var(--text-primary);font-size:1.4rem}.support-card p{color:var(--text-secondary);line-height:1.6;margin:12px 0}.support-actions{display:flex;gap:12px;margin:24px 0 16px;flex-wrap:wrap}.support-btn{flex:1;min-width:200px;text-align:center;text-decoration:none;font-weight:600;box-shadow:0 2px 8px #5b4fff4d;transition:all .2s ease}.support-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #5b4fff66}.support-actions .btn-secondary{flex:1;min-width:200px;text-align:center;text-decoration:none;border:1px solid var(--border-color)}.support-note{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color);color:var(--text-secondary);text-align:center}.support-note small{font-size:.85rem}.support-note a{color:var(--color-primary);text-decoration:none;transition:color .2s}.support-note a:hover{color:var(--color-secondary);text-decoration:underline}@media (max-width: 768px){.app{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--sidebar-border);padding:16px;max-height:none}.sidebar-header h1{font-size:1.25rem;margin-bottom:16px}.sidebar-logo{width:80px;height:80px;margin-bottom:12px}.main-content{padding:16px}.page-header h2{font-size:1.5rem}.page-header p{font-size:.9rem}.card{padding:16px;margin-bottom:16px;border-radius:8px}.card h3{font-size:1.1rem;margin-bottom:12px}.stats-grid{grid-template-columns:1fr;gap:16px}.stat-card{padding:16px}.stat-card .value{font-size:2rem}.data-table-wrapper{margin:-16px;padding:16px}.empty-state{padding:40px 20px;text-align:center;color:var(--text-secondary)}.empty-state p{margin:0;font-size:1rem}.score-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:.875rem;font-weight:600}.score-badge.high{background-color:#34c759;color:#fff}.score-badge.medium{background-color:#ff9500;color:#fff}.score-badge.low{background-color:#8e8e93;color:#fff}.data-table{min-width:600px}.data-table th,.data-table td{padding:8px;font-size:.9rem}.tabs{flex-wrap:wrap;gap:8px}.tabs button{padding:8px 16px;font-size:.9rem}.search-bar{flex-direction:column}.search-bar input{width:100%}.support-actions{flex-direction:column}.support-btn,.support-actions .btn-secondary{min-width:100%}.filters-panel{padding:16px}.range-inputs{flex-direction:column;align-items:stretch}.range-inputs span{display:none}}@media (max-width: 480px){.sidebar{padding:12px}.sidebar-header h1{font-size:1.1rem}.main-content{padding:12px}.page-header h2{font-size:1.25rem}.card{padding:12px}.stat-card .value{font-size:1.75rem}.data-table th,.data-table td{padding:6px;font-size:.85rem}.btn{padding:8px 16px;font-size:.9rem}}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;display:flex;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--btn-secondary-bg);color:var(--btn-secondary-text);cursor:pointer;transition:all .25s}button:hover{background-color:var(--btn-secondary-hover)}button:focus,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px} diff --git a/backend/static/assets/index-DMND3IlI.css b/backend/static/assets/index-DMND3IlI.css new file mode 100644 index 0000000..b4c966c --- /dev/null +++ b/backend/static/assets/index-DMND3IlI.css @@ -0,0 +1 @@ +.skeleton-line,.skeleton-card,.skeleton-table,.skeleton-stat{background:linear-gradient(90deg,var(--bg-secondary) 0%,var(--bg-tertiary) 50%,var(--bg-secondary) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{padding:24px;border-radius:12px;border:1px solid var(--border-color)}.skeleton-table{width:100%;border-radius:8px;overflow:hidden}.skeleton-table-header{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:12px;background-color:var(--bg-secondary);margin-bottom:8px}.skeleton-table-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:12px;margin-bottom:8px}.skeleton-stat{padding:24px;border-radius:12px;border:1px solid var(--border-color)}[data-theme=dark] .skeleton-line,[data-theme=dark] .skeleton-card,[data-theme=dark] .skeleton-table,[data-theme=dark] .skeleton-stat{background:linear-gradient(90deg,#ffffff0d,#ffffff1a,#ffffff0d);background-size:200% 100%}@media (max-width: 768px){.skeleton-table-header,.skeleton-table-row{grid-template-columns:repeat(3,1fr);gap:8px;padding:8px}.skeleton-card,.skeleton-stat{padding:16px}}.empty-state-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h3{margin:0 0 .5rem;font-size:1.125rem;color:var(--text-color, #e0e0e0)}.empty-state p{color:var(--text-muted, #888);margin:0 0 1.5rem}.empty-state-action{margin-top:1rem}.score-badge,.score-badge-na{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600}.score-badge-na{color:var(--text-muted, #888)}.score-badge-high{background:#22c55e33;color:#34d399}.score-badge-medium{background:#eab30833;color:#fbbf24}.score-badge-low{background:#ef444433;color:#f87171}.browse{padding:1rem 2rem;max-width:1600px;margin:0 auto}.search-section{background:var(--card-bg, #1a1a2e);border-radius:12px;padding:1.5rem;margin-bottom:1rem;border:1px solid var(--border-color, #2a2a4a)}.search-input-wrapper{position:relative;display:flex;align-items:center;background:var(--input-bg, #0d0d1a);border:2px solid var(--border-color, #2a2a4a);border-radius:8px;transition:border-color .2s}.search-input-wrapper:focus-within{border-color:var(--primary-color, #6366f1)}.search-icon{padding:0 .75rem;font-size:1.2rem;opacity:.6}.search-input-enhanced{flex:1;padding:.875rem .5rem;font-size:1rem;background:transparent;border:none;color:var(--text-color, #e0e0e0);outline:none}.search-input-enhanced::placeholder{color:var(--text-muted, #888)}.clear-search-btn{background:none;border:none;color:var(--text-muted, #888);padding:.5rem 1rem;cursor:pointer;font-size:1rem;transition:color .2s}.clear-search-btn:hover{color:var(--text-color, #e0e0e0)}.search-actions{display:flex;gap:.5rem;margin-top:1rem}.recent-searches,.quick-searches{display:flex;align-items:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.recent-label,.quick-label{font-size:.8rem;color:var(--text-muted, #888);text-transform:uppercase;letter-spacing:.05em}.recent-search-chip,.quick-chip{background:var(--input-bg, #0d0d1a);border:1px solid var(--border-color, #2a2a4a);color:var(--text-color, #e0e0e0);padding:.35rem .75rem;border-radius:16px;font-size:.85rem;cursor:pointer;transition:all .2s}.recent-search-chip:hover,.quick-chip:hover{background:var(--primary-color, #6366f1);border-color:var(--primary-color, #6366f1)}.active-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;padding:.75rem;background:#6366f11a;border-radius:8px;border:1px solid rgba(99,102,241,.2)}.filter-chip{display:inline-flex;align-items:center;gap:.5rem;background:var(--primary-color, #6366f1);color:#fff;padding:.35rem .75rem;border-radius:16px;font-size:.85rem}.remove-filter{background:none;border:none;color:#ffffffb3;cursor:pointer;padding:0;font-size:.9rem;line-height:1}.remove-filter:hover{color:#fff}.tabs{display:flex;gap:.25rem;margin-bottom:1rem;background:var(--card-bg, #1a1a2e);padding:.5rem;border-radius:10px;border:1px solid var(--border-color, #2a2a4a)}.tabs button{flex:1;padding:.75rem 1rem;background:transparent;border:none;color:var(--text-muted, #888);cursor:pointer;border-radius:6px;font-weight:500;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.tabs button:hover{background:#6366f11a;color:var(--text-color, #e0e0e0)}.tabs button.active{background:var(--primary-color, #6366f1);color:#fff}.tab-count{font-size:.75rem;background:#fff3;padding:.15rem .5rem;border-radius:10px}.filters-panel{background:var(--card-bg, #1a1a2e);border:1px solid var(--border-color, #2a2a4a);border-radius:10px;padding:1.25rem;margin-bottom:1rem}.filters-panel h4{margin:0 0 1rem;color:var(--text-color, #e0e0e0);font-size:1rem}.filter-group{margin-bottom:1rem}.filter-group label{display:block;margin-bottom:.5rem;color:var(--text-muted, #888);font-size:.9rem}.filter-checkboxes{display:flex;flex-wrap:wrap;gap:.5rem 1rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--text-color, #e0e0e0);font-size:.9rem}.checkbox-label input[type=checkbox]{accent-color:var(--primary-color, #6366f1)}.range-inputs{display:flex;align-items:center;gap:.75rem}.range-inputs input{flex:1;max-width:180px}.range-inputs span{color:var(--text-muted, #888)}.results-bar{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--card-bg, #1a1a2e);border-radius:8px;margin-bottom:1rem;border:1px solid var(--border-color, #2a2a4a)}.results-count{color:var(--text-muted, #888);font-size:.9rem}.results-controls{display:flex;align-items:center;gap:1.5rem}.results-controls label{display:flex;align-items:center;gap:.5rem;color:var(--text-muted, #888);font-size:.85rem}.results-controls select{padding:.35rem .5rem;background:var(--input-bg, #0d0d1a);border:1px solid var(--border-color, #2a2a4a);border-radius:4px;color:var(--text-color, #e0e0e0)}.pagination{display:flex;align-items:center;gap:.5rem}.page-info{color:var(--text-muted, #888);font-size:.85rem;padding:0 .5rem}.data-table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:.875rem 1rem;text-align:left;border-bottom:1px solid var(--border-color, #2a2a4a)}.data-table th{background:#0003;color:var(--text-muted, #888);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.sortable-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.sortable-header:hover{background:#6366f11a}.sort-indicator{opacity:.5;margin-left:.25rem}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:#6366f10d}.row-highlight-flash{animation:row-flash 2.5s ease-out}@keyframes row-flash{0%{background-color:#6366f159}40%{background-color:#6366f133}to{background-color:transparent}}.clickable-row{cursor:pointer}.search-highlight{background:#ffd5004d;color:#ffd500;padding:.1rem .2rem;border-radius:2px}.type-badge{display:inline-block;padding:.25rem .65rem;border-radius:12px;font-size:.8rem;font-weight:500;text-transform:capitalize}.type-badge.type-corporation{background:#3b82f633;color:#60a5fa}.type-badge.type-government-agency{background:#ef444433;color:#f87171}.type-badge.type-individual{background:#10b98133;color:#34d399}.type-badge.type-research-institution{background:#8b5cf633;color:#a78bfa}.type-badge.type-facility{background:#f59e0b33;color:#fbbf24}.type-badge.type-program{background:#ec489933;color:#f472b6}.type-badge.type-organization{background:#9ca3af33;color:#9ca3af}.type-badge.type-investment-firm{background:#14b8a633;color:#2dd4bf}.intel-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.intel-badge.level-1{background:#ef44444d;color:#fca5a5}.intel-badge.level-2{background:#f973164d;color:#fdba74}.intel-badge.level-3{background:#eab3084d;color:#fde047}.intel-badge.level-4{background:#22c55e4d;color:#86efac}.intel-badge.level-5{background:#3b82f64d;color:#93c5fd}.intel-badge.level-6{background:#8b5cf64d;color:#c4b5fd}.relationship-badge{display:inline-block;padding:.2rem .5rem;background:#6366f126;color:var(--primary-color, #6366f1);border-radius:4px;font-size:.8rem}.amount-cell{font-family:SF Mono,Consolas,monospace;font-weight:500;color:#34d399}.piid-cell{font-family:SF Mono,Consolas,monospace;font-size:.85rem;color:var(--text-muted, #888)}.actions-cell{white-space:nowrap}.record-request-cell{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600}.score-badge.high{background:#22c55e33;color:#34d399}.score-badge.medium{background:#eab30833;color:#fbbf24}.score-badge.low{background:#ef444433;color:#f87171}.empty-state{text-align:center;padding:4rem 2rem}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h3{margin:0 0 .5rem;color:var(--text-color, #e0e0e0)}.empty-state p{color:var(--text-muted, #888);margin-bottom:1.5rem}.btn-sm{padding:.35rem .75rem;font-size:.85rem}.btn-outline{background:transparent;border:1px solid var(--border-color, #2a2a4a);color:var(--text-color, #e0e0e0)}.btn-outline:hover{border-color:var(--primary-color, #6366f1);color:var(--primary-color, #6366f1)}@media (max-width: 768px){.browse{padding:1rem}.tabs{flex-wrap:wrap}.tabs button{flex:1 1 45%}.results-bar{flex-direction:column;gap:1rem;align-items:flex-start}.results-controls{width:100%;justify-content:space-between}.filter-checkboxes{flex-direction:column}.range-inputs{flex-direction:column;align-items:stretch}.range-inputs input{max-width:none}}.browse-pyramid-link{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;padding:4px;border-radius:4px;color:var(--primary-color, #5B4FFF);transition:background .15s ease,color .15s ease}.browse-pyramid-link:hover{background:var(--border-color);color:var(--text-primary)}.sankey-container{width:100%;min-height:600px;position:relative;background:var(--bg-secondary);border-radius:8px;padding:16px}.sankey-svg{width:100%;height:100%;min-height:600px;cursor:grab;background:var(--bg-primary);border-radius:4px}.sankey-svg:active{cursor:grabbing}.sankey-controls{display:flex;gap:16px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:4px}.control-group label{font-size:12px;font-weight:500;color:var(--text-secondary)}.control-group select,.control-group input[type=range]{padding:6px 12px;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:14px}.control-group input[type=range]{width:200px;padding:0}.sankey-tooltip{position:fixed;background:#000000e6;color:#fff;padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;z-index:1000;white-space:pre-line;box-shadow:0 2px 8px #0000004d}.sankey-container.loading-state{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;color:var(--text-secondary, #94a3b8);font-size:1rem}.sankey-container.loading-state .loading-spinner{animation:spin 1s linear infinite}.sankey-container.error{display:flex;align-items:center;justify-content:center;color:var(--color-error);font-weight:500}.sankey-container .btn{padding:6px 12px;font-size:14px}.sankey-container .btn.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.sankey-legend{position:absolute;top:70px;left:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:12px;z-index:50;max-width:200px;box-shadow:0 2px 8px #0000001a}.sankey-legend h5{margin:0 0 10px;font-size:.85rem;color:var(--text-secondary);border-bottom:1px solid var(--border-color);padding-bottom:6px}.sankey-legend .legend-items{display:flex;flex-direction:column;gap:6px}.sankey-legend .legend-item{display:flex;align-items:center;gap:8px;font-size:.8rem}.sankey-legend .legend-color{width:14px;height:14px;border-radius:3px;flex-shrink:0}.sankey-legend .legend-label{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sankey-stats{position:absolute;bottom:16px;right:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:8px 12px;display:flex;gap:16px;font-size:.85rem;color:var(--text-secondary);z-index:50}.sankey-stats .filter-badge{background:var(--primary-color);color:#fff;padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600}@media (max-width: 768px){.sankey-legend{top:auto;bottom:60px;left:8px;max-width:160px}.sankey-stats{bottom:8px;right:8px;padding:6px 10px;gap:10px;font-size:.75rem}}.network-graph-container{width:100%;height:100%;position:relative;overflow:hidden;background:#030712}.network-graph-container canvas{display:block}.network-graph-container .loading,.network-graph-container .error,.network-graph-container .empty{display:flex;align-items:center;justify-content:center;height:100%;font-size:1.1rem;color:#94a3b8;flex-direction:column;gap:12px}.network-graph-container .loading-spinner{animation:spin 1s linear infinite}.network-graph-container .error{color:#f87171}.network-graph-container .error button{padding:6px 16px;background:#06b6d4;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.85rem}.graph-tooltip{background:#000000d9;color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;pointer-events:none;z-index:500;max-width:260px;box-shadow:0 4px 16px #0006}.graph-tooltip .tooltip-name{font-weight:600;font-size:13px;margin-bottom:4px}.graph-tooltip .tooltip-type{display:inline-block;font-size:10px;background:#ffffff26;padding:1px 6px;border-radius:3px;margin-bottom:4px}.graph-tooltip .tooltip-connections{font-size:11px;color:#94a3b8}.graph-instructions-bar{position:absolute;bottom:0;left:0;right:0;background:#03071299;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:8px 16px;text-align:center;font-size:.78rem;color:#94a3b8;z-index:10;-webkit-user-select:none;user-select:none}.graph-instructions-bar .separator{margin:0 10px;color:#475569}@media (max-width: 768px){.graph-instructions-bar{font-size:.7rem;padding:6px 10px}.graph-instructions-bar .separator{margin:0 6px}}.intel-stack-filter{background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:12px;min-width:220px}.intel-stack-filter.compact{padding:8px;min-width:180px}.intel-stack-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.intel-stack-header h4{margin:0;font-size:.9rem;font-weight:600;color:var(--text-primary)}.select-all-btn{padding:4px 8px;font-size:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.select-all-btn:hover,.select-all-btn.all-selected{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.intel-stack-pyramid{display:flex;flex-direction:column;gap:4px}.stack-level{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s ease;width:var(--stack-width, 100%);margin-left:auto;margin-right:auto}.intel-stack-filter.compact .stack-level{padding:6px 10px}.stack-level:hover{border-color:var(--stack-color);background:color-mix(in srgb,var(--stack-color) 10%,var(--bg-secondary))}.stack-level.active{border-color:var(--stack-color);background:color-mix(in srgb,var(--stack-color) 15%,var(--bg-secondary));box-shadow:0 0 0 1px var(--stack-color)}.stack-level.inactive{opacity:.5}.stack-level.inactive:hover{opacity:.8}.stack-indicator{width:12px;height:12px;border-radius:50%;flex-shrink:0}.stack-name{flex:1;font-size:.85rem;font-weight:500;color:var(--text-primary);text-align:left}.intel-stack-filter.compact .stack-name{font-size:.8rem}.stack-level-num{font-size:.7rem;color:var(--text-muted);font-weight:600;padding:2px 6px;background:var(--bg-primary);border-radius:4px}.intel-stack-info{margin-top:8px;text-align:center;color:var(--text-muted)}.intel-stack-info small{font-size:.75rem}@media (prefers-color-scheme: dark){.stack-level.active{background:color-mix(in srgb,var(--stack-color) 20%,var(--bg-secondary))}}@media (max-width: 768px){.intel-stack-filter{min-width:160px}.stack-level{width:100%}.stack-level-num{display:none}}.graph-sidebar{width:280px;min-width:280px;height:100%;background:#0a0a1a;border-right:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;overflow-y:auto;color:#e2e8f0;font-size:.85rem}.graph-sidebar-header{padding:16px;border-bottom:1px solid rgba(255,255,255,.08)}.graph-sidebar-header h2{margin:0 0 4px;font-size:1.1rem;color:#fff;font-weight:700}.graph-sidebar-header .back-link{display:inline-flex;align-items:center;gap:4px;color:#94a3b8;text-decoration:none;font-size:.8rem;transition:color .2s}.graph-sidebar-header .back-link:hover{color:#06b6d4}.graph-sidebar-stats{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:6px}.stat-row{display:flex;justify-content:space-between;align-items:center}.stat-row .stat-label{color:#94a3b8}.stat-row .stat-value{color:#22d3ee;font-weight:600;font-variant-numeric:tabular-nums}.graph-sidebar-selected{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);background:#06b6d414}.selected-actor-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.selected-actor-header .actor-label{font-size:.75rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.selected-actor-name{font-size:1rem;font-weight:600;color:#22d3ee;margin-top:4px;word-break:break-word}.clear-actor-btn{padding:4px 10px;background:#dc2626;color:#fff;border:none;border-radius:4px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .2s;white-space:nowrap}.clear-actor-btn:hover{background:#ef4444}.sidebar-section{border-bottom:1px solid rgba(255,255,255,.08)}.section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 16px;background:transparent;border:none;color:#e2e8f0;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s}.section-toggle:hover{background:#ffffff0a}.section-toggle .toggle-arrow{font-size:.7rem;color:#64748b;transition:transform .2s}.section-content{padding:0 16px 12px}.graph-search-container{padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.08);position:relative}.graph-search-container label{display:block;font-size:.75rem;color:#94a3b8;margin-bottom:6px}.graph-search-input{width:100%;padding:8px 10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:6px;color:#e2e8f0;font-size:.85rem;outline:none;transition:border-color .2s;box-sizing:border-box}.graph-search-input:focus{border-color:#06b6d4}.graph-search-input::placeholder{color:#64748b}.search-results-dropdown{position:absolute;top:100%;left:16px;right:16px;background:#1e1e2e;border:1px solid rgba(255,255,255,.12);border-radius:6px;max-height:240px;overflow-y:auto;z-index:200;box-shadow:0 8px 24px #00000080}.search-result-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;cursor:pointer;transition:background .15s;border-bottom:1px solid rgba(255,255,255,.04);width:100%;background:transparent;border-left:none;border-right:none;border-top:none;text-align:left;font-family:inherit}.search-result-item:hover{background:#06b6d41f}.search-result-item .result-name{font-size:.85rem;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-item .result-count{font-size:.75rem;color:#64748b;white-space:nowrap;margin-left:8px}.filter-row{display:flex;align-items:center;gap:8px;padding:4px 0}.filter-row label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.8rem;color:#cbd5e1}.filter-row input[type=checkbox]{accent-color:#06b6d4;cursor:pointer}.filter-row input[type=number]{width:54px;padding:4px 6px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#e2e8f0;font-size:.8rem}.color-mode-toggle{display:flex;gap:4px;margin-top:4px}.color-mode-btn{flex:1;padding:5px 8px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:4px;color:#94a3b8;font-size:.75rem;cursor:pointer;transition:all .2s}.color-mode-btn:hover{background:#ffffff1a}.color-mode-btn.active{background:#06b6d433;border-color:#06b6d4;color:#22d3ee}.sidebar-legend-items{display:flex;flex-direction:column;gap:4px}.sidebar-legend-item{display:flex;align-items:center;gap:8px;font-size:.78rem;color:#cbd5e1}.sidebar-legend-color{width:12px;height:12px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.15)}@media (max-width: 900px){.graph-sidebar{width:220px;min-width:220px;font-size:.8rem}}@media (max-width: 700px){.graph-sidebar{display:none}}.relationship-timeline{width:350px;min-width:300px;height:100%;background:#0a0a1a;border-left:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;color:#e2e8f0;font-size:.85rem;overflow:hidden}.timeline-header{padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.timeline-header-top{display:flex;align-items:center;justify-content:space-between}.timeline-header h3{margin:0;font-size:1rem;font-weight:700;color:#fff}.timeline-close-btn{padding:4px 8px;background:transparent;border:1px solid rgba(255,255,255,.15);border-radius:4px;color:#94a3b8;cursor:pointer;font-size:1rem;line-height:1;transition:all .2s}.timeline-close-btn:hover{background:#ffffff1a;color:#fff}.timeline-actor-name{font-size:1.05rem;font-weight:600;color:#22d3ee;margin-top:6px;word-break:break-word}.timeline-subtitle{font-size:.78rem;color:#64748b;margin-top:4px}.timeline-filter{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.timeline-filter label{display:block;font-size:.72rem;color:#64748b;margin-bottom:4px}.timeline-filter-input{width:100%;padding:6px 10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:5px;color:#e2e8f0;font-size:.82rem;outline:none;box-sizing:border-box}.timeline-filter-input:focus{border-color:#06b6d4}.timeline-filter-input::placeholder{color:#475569}.timeline-entries{flex:1;overflow-y:auto;padding:0}.timeline-entry{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.04);transition:background .15s;cursor:default}.timeline-entry:hover{background:#ffffff08}.timeline-entry-type{display:inline-block;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:3px;margin-bottom:4px}.timeline-entry-type.financial{background:#5b4fff33;color:#a78bfa}.timeline-entry-type.relationship{background:#06b6d426;color:#22d3ee}.timeline-entry-type.award{background:#facc1526;color:#facc15}.timeline-entry-type.inferred{background:#9ca3af26;color:#9ca3af}.timeline-entry-actors{font-size:.82rem;margin-top:2px;line-height:1.4}.timeline-entry-actors .actor-source{color:#f87171;font-weight:600;cursor:pointer}.timeline-entry-actors .actor-source:hover{text-decoration:underline}.timeline-entry-actors .actor-target{color:#4ade80;font-weight:600;cursor:pointer}.timeline-entry-actors .actor-target:hover{text-decoration:underline}.timeline-entry-actors .actor-action{color:#94a3b8}.timeline-entry-description{font-size:.76rem;color:#64748b;margin-top:2px}.timeline-entry-amount{font-size:.78rem;color:#a78bfa;font-weight:600;margin-top:2px}.timeline-browse-link{display:block;padding:10px 16px;text-align:center;color:#06b6d4;text-decoration:none;font-size:.82rem;font-weight:600;border-top:1px solid rgba(255,255,255,.08);transition:background .2s;flex-shrink:0}.timeline-browse-link:hover{background:#06b6d414}.timeline-empty{padding:24px 16px;text-align:center;color:#64748b;font-size:.85rem}@media (max-width: 900px){.relationship-timeline{width:280px;min-width:240px}}@media (max-width: 700px){.relationship-timeline{display:none}}.pyramid-tooltip{position:fixed;z-index:1000;max-width:320px;padding:10px 12px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 20px #00000040;pointer-events:none;animation:pyramid-tooltip-fade .15s ease-out}@keyframes pyramid-tooltip-fade{0%{opacity:0}to{opacity:1}}.pyramid-tooltip-title{font-weight:600;font-size:.95rem;margin-bottom:4px}.pyramid-tooltip-meta{font-size:.8rem;color:var(--text-muted);margin-bottom:6px}.pyramid-tooltip-desc{font-size:.82rem;color:var(--text-secondary);margin:6px 0;line-height:1.35}.pyramid-tooltip-list{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:.8rem;color:var(--text-muted)}.pyramid-tooltip-label{width:100%;font-weight:500;color:var(--text-secondary)}.pyramid-tooltip-item{white-space:nowrap}.pyramid-tooltip-item:after{content:", "}.pyramid-tooltip-item:last-child:after{content:""}.pyramid-viz{display:flex;flex-direction:row;align-items:flex-start;gap:24px;padding:16px;background:var(--card-bg);border-radius:12px;border:1px solid var(--border-color)}.pyramid-viz-loading,.pyramid-viz-empty{min-height:280px;display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.pyramid-svg{flex:0 0 auto;max-width:100%;height:auto}.pyramid-tier-rect{transition:stroke-width .15s ease,filter .15s ease}.pyramid-tier-trapezoid:hover{filter:brightness(1.1)}.pyramid-entity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle;flex-shrink:0}.pyramid-flow-line{animation:pyramid-flow-pulse 2s ease-in-out infinite}.pyramid-flow-band{cursor:pointer;transition:stroke-opacity .2s ease}.pyramid-flow-band:hover{stroke-opacity:1}@keyframes pyramid-flow-pulse{0%,to{stroke-opacity:.5}50%{stroke-opacity:.85}}.pyramid-sidebar{flex:1;min-width:220px;max-width:320px;padding:12px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.pyramid-tier-stats{font-size:.85rem;color:var(--text-muted);margin:0 0 12px}.pyramid-entity-list{list-style:none;margin:0;padding:0}.pyramid-entity-list li{margin-bottom:4px}.pyramid-entity-btn{display:flex;align-items:center;width:100%;text-align:left;padding:8px 10px;border:none;border-radius:6px;background:transparent;color:var(--text-primary);cursor:pointer;font-size:.9rem;transition:background .15s ease}.pyramid-entity-btn:hover{background:var(--border-color)}.pyramid-entity-btn.highlighted{background:var(--primary-color);color:#fff}.pyramid-entity-type{display:block;font-size:.75rem;color:var(--text-muted);margin-top:2px}.pyramid-entity-btn.highlighted .pyramid-entity-type{color:#ffffffd9}.pyramid-entity-node{transition:filter .2s ease}.pyramid-entity-node:hover circle{filter:brightness(1.2)}.pyramid-entity-node-highlighted circle{filter:drop-shadow(0 0 6px rgba(255,255,255,.9))}.pyramid-entity-node-label{pointer-events:none}.pyramid-tier-dimmed{opacity:.35;transition:opacity .25s ease}.pyramid-tier-in-chain{opacity:1}.pyramid-entity-node-dimmed{opacity:.4}.pyramid-entity-node-dimmed circle{filter:grayscale(.6)}.entity-detail-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:900;display:flex;justify-content:flex-end;align-items:stretch;animation:entity-detail-overlay-fade .2s ease-out}@keyframes entity-detail-overlay-fade{0%{opacity:0}to{opacity:1}}.entity-detail-panel{width:100%;max-width:420px;background:var(--card-bg);border-left:1px solid var(--border-color);box-shadow:-4px 0 24px #0003;display:flex;flex-direction:column;animation:entity-detail-panel-slide .25s ease-out}@keyframes entity-detail-panel-slide{0%{transform:translate(100%)}to{transform:translate(0)}}.entity-detail-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color)}.entity-detail-panel-header h3{margin:0;font-size:1rem;font-weight:600;color:var(--text-primary)}.entity-detail-panel-close{width:32px;height:32px;border:none;background:transparent;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center}.entity-detail-panel-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.entity-detail-panel-loading{padding:24px;text-align:center;color:var(--text-muted)}.entity-detail-panel-body{flex:1;overflow-y:auto;padding:16px}.entity-detail-name{margin:0 0 8px;font-size:1.25rem;font-weight:700;color:var(--text-primary)}.entity-detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.entity-detail-badge{font-size:.75rem;padding:4px 8px;border-radius:6px;background:var(--bg-secondary);color:var(--text-secondary)}.entity-detail-level{background:var(--color-primary);color:#fff}.entity-detail-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.45;margin:0 0 20px}.entity-detail-section{margin-bottom:20px}.entity-detail-section h4{margin:0 0 8px;font-size:.85rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.entity-detail-chain{font-size:.88rem}.entity-detail-chain-label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:4px}.entity-detail-chain-node{padding:4px 0 4px 12px;border-left:2px solid var(--border-color);margin-bottom:2px}.entity-detail-chain-target{padding:8px 0;font-weight:600;color:var(--color-primary)}.entity-detail-chain-up,.entity-detail-chain-down{margin-bottom:8px}.entity-detail-rel-group{margin-bottom:12px}.entity-detail-rel-type{font-size:.8rem;font-weight:600;color:var(--text-secondary);display:block;margin-bottom:4px}.entity-detail-rel-group ul{list-style:none;margin:0;padding:0}.entity-detail-rel-group li{font-size:.85rem;padding:2px 0;color:var(--text-primary)}.entity-detail-rel-desc{color:var(--text-muted);font-size:.8rem}.entity-detail-flows{list-style:none;margin:0;padding:0;font-size:.85rem}.entity-detail-flows li{padding:4px 0;border-bottom:1px solid var(--border-color);color:var(--text-primary)}.entity-detail-more{color:var(--text-muted);font-style:italic}.entity-detail-actions{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--border-color)}.entity-detail-link{color:var(--color-primary);font-size:.9rem;text-decoration:none}.entity-detail-link:hover{text-decoration:underline}.entity-detail-panel-inline{max-width:none;box-shadow:none;border-radius:0;border-left:1px solid var(--border-color)}@media (max-width: 768px){.entity-detail-panel{max-width:100%;max-height:85vh;border-radius:12px 12px 0 0;margin-top:auto}}.pyramid-page{padding:0 24px 24px;display:flex;flex-direction:column;gap:0;min-height:0}.pyramid-page-top{margin-bottom:20px;flex-shrink:0}.pyramid-page-main{min-width:0;overflow:auto;flex:1}.pyramid-page-detail-section{margin-top:12px;border:1px solid var(--border-color);border-radius:8px;min-height:60px;max-height:220px;overflow:auto;display:flex;flex-direction:column;background:var(--card-bg);transition:max-height .2s ease;max-width:520px}.pyramid-page-detail-section.pyramid-page-detail-section-has-detail{max-height:min(400px,45vh)}.pyramid-page-aside-empty{padding:16px 20px;color:var(--text-muted);font-size:.9rem}@media (max-width: 900px){.pyramid-page-detail-section{max-width:none}}.pyramid-page .page-header{margin-bottom:0}.pyramid-controls{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:20px}.pyramid-toggle{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--text-secondary);font-size:.9rem}.pyramid-toggle input{cursor:pointer}.pyramid-chain-badge{margin-left:4px;font-size:.8rem;color:var(--color-primary)}.pyramid-page-header{position:relative}.pyramid-search-wrap{position:relative;margin-top:12px;max-width:320px}.pyramid-search-input{width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:.9rem}.pyramid-search-input:focus{outline:none;border-color:var(--color-primary)}.pyramid-search-results{position:absolute;top:100%;left:0;right:0;margin:4px 0 0;padding:4px 0;list-style:none;background:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 4px 12px #00000026;max-height:280px;overflow-y:auto;z-index:50}.pyramid-search-results li{margin:0}.pyramid-search-results button{width:100%;padding:10px 12px;border:none;background:none;color:var(--text-primary);font-size:.9rem;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between}.pyramid-search-results button:hover{background:var(--bg-secondary)}.pyramid-search-level{font-size:.75rem;color:var(--text-muted);margin-left:8px}.pyramid-legend{position:fixed;bottom:16px;left:24px;display:flex;flex-wrap:wrap;gap:8px 16px;font-size:.75rem;color:var(--text-muted);z-index:40}.pyramid-legend-item{display:inline-flex;align-items:center;gap:4px}.pyramid-legend-dot{width:8px;height:8px;border-radius:50%}.pyramid-help-btn{position:fixed;bottom:16px;right:24px;width:32px;height:32px;border-radius:50%;border:1px solid var(--border-color);background:var(--card-bg);color:var(--text-muted);font-size:1.1rem;cursor:pointer;z-index:40;transition:background .2s ease,color .2s ease}.pyramid-help-btn:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.pyramid-help-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:950;display:flex;align-items:center;justify-content:center;padding:24px;animation:pyramid-help-fade .2s ease-out}@keyframes pyramid-help-fade{0%{opacity:0}to{opacity:1}}.pyramid-help-content{max-width:420px;padding:24px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 8px 32px #0000004d}.pyramid-help-content h3{margin:0 0 16px;font-size:1.1rem}.pyramid-help-content ul{margin:0 0 16px;padding-left:20px;line-height:1.6;color:var(--text-secondary)}.pyramid-help-content kbd{padding:2px 6px;border-radius:4px;background:var(--bg-secondary);font-size:.85em}.pyramid-help-close{padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:.9rem}.pyramid-help-close:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.foia-targets-page{padding:1rem 2rem;max-width:1600px;margin:0 auto}.foia-page-header{margin-bottom:1rem}.foia-page-header .back-link{display:inline-flex;align-items:center;gap:4px;color:var(--text-muted, #888);text-decoration:none;font-size:.9rem;margin-bottom:8px;transition:color .2s ease}.foia-page-header .back-link:hover{color:var(--primary-color, #6366f1)}.foia-page-title h1{margin:0 0 4px;font-size:1.5rem}.foia-page-title p{margin:0;color:var(--text-muted, #888);font-size:.95rem}.foia-filters{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.foia-search-input,.foia-agency-input{padding:.5rem .75rem;font-size:.95rem;background:var(--input-bg, #0d0d1a);border:1px solid var(--border-color, #2a2a4a);border-radius:6px;color:var(--text-color, #e0e0e0);min-width:200px}.foia-search-input{flex:1;min-width:250px}.foia-content{padding:1.5rem}.foia-pagination-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.foia-result-count{color:var(--text-muted, #888);font-size:.9rem}.foia-page-size select{margin-left:.5rem;padding:.25rem .5rem;background:var(--input-bg);border:1px solid var(--border-color);border-radius:4px;color:var(--text-color)}.foia-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.foia-table{width:100%;table-layout:fixed}.foia-table th,.foia-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.foia-table th:nth-child(1),.foia-table td:nth-child(1){width:22%}.foia-table th:nth-child(2),.foia-table td:nth-child(2){width:28%}.foia-table th:nth-child(3),.foia-table td:nth-child(3){width:14%}.foia-table th:nth-child(4),.foia-table td:nth-child(4){width:12%}.foia-table th:nth-child(5),.foia-table td:nth-child(5){width:12%}.foia-table th:nth-child(6),.foia-table td:nth-child(6){width:12%}.foia-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.foia-table th.sortable:hover{color:var(--primary-color)}.foia-table tbody tr{cursor:pointer}.foia-table tbody tr:hover{background:var(--hover-bg, rgba(99, 102, 241, .05))}.foia-agency-cell,.foia-record-cell{overflow:hidden;text-overflow:ellipsis}.foia-notes-row td{background:var(--card-bg);padding:1rem;border-top:none}.foia-quality-notes{font-size:.9rem;color:var(--text-muted, #888)}.foia-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color, #2a2a4a)}.disclaimer-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000e6;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.disclaimer-modal{background-color:#2a2a2a;border-radius:12px;max-width:800px;max-height:90vh;width:90%;border:2px solid #646cff;display:flex;flex-direction:column}.disclaimer-header{padding:24px;border-bottom:1px solid #3a3a3a}.disclaimer-header h2{margin:0;color:#646cff}.disclaimer-content{padding:24px;overflow-y:auto;flex:1}.disclaimer-content h3{color:#fff;margin-top:0}.disclaimer-content h4{color:#646cff;margin-top:20px;margin-bottom:10px}.disclaimer-content p{color:#b0b0b0;line-height:1.6}.disclaimer-content ul{color:#b0b0b0;line-height:1.8}.disclaimer-content li{margin-bottom:8px}.disclaimer-footer{padding:24px;border-top:1px solid #3a3a3a;display:flex;justify-content:center}.disclaimer-footer .btn{padding:14px 32px;font-size:1.1rem}.theme-toggle{position:fixed;top:20px;right:20px;width:48px;height:48px;border-radius:12px;border:1px solid var(--border-color);background-color:var(--card-bg);color:var(--text-primary);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);z-index:1000;transition:all .3s ease}.theme-toggle:hover{transform:scale(1.05);border-color:var(--color-primary);box-shadow:var(--shadow-lg)}.theme-toggle:active{transform:scale(.95)}.theme-toggle svg{transition:transform .3s ease}.theme-toggle:hover svg{transform:rotate(15deg)}@keyframes rotate-icon{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.theme-toggle.animating svg{animation:rotate-icon .5s ease}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:300px;padding:2rem}.error-boundary-content{text-align:center;max-width:480px}.error-boundary-icon{color:var(--color-warning, #f59e0b);margin-bottom:1rem}.error-boundary h2{margin:0 0 .5rem;font-size:1.25rem}.error-boundary p{margin:0 0 1.5rem;color:var(--text-muted, #888)}.error-boundary-actions{display:flex;gap:.75rem;justify-content:center;margin-bottom:1rem}.error-boundary-details{text-align:left;margin-top:1rem;padding:.75rem;background:var(--input-bg, #0d0d1a);border-radius:6px;border:1px solid var(--border-color, #2a2a4a)}.error-boundary-details summary{cursor:pointer;font-size:.85rem;color:var(--text-muted, #888)}.error-boundary-stack{margin:.5rem 0 0;font-size:.75rem;overflow-x:auto;white-space:pre-wrap;word-break:break-all;color:var(--text-muted, #888)}.search-bar-wrapper{position:relative;width:100%;max-width:600px;margin:0 auto}.search-input-container{position:relative;display:flex;align-items:center;background-color:var(--input-bg);border:2px solid var(--input-border);border-radius:10px;padding:0 12px;transition:all .2s ease}.search-input-container:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #5b4fff1a}.search-icon{color:var(--text-secondary);flex-shrink:0;margin-right:8px}.search-input{flex:1;padding:12px 8px;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:.95rem;width:100%}.search-input::placeholder{color:var(--text-secondary);opacity:.7}.search-loading{color:var(--color-primary);animation:spin 1s linear infinite;flex-shrink:0;margin-left:8px}.search-clear{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);border-radius:4px;transition:all .2s;flex-shrink:0;margin-left:8px}.search-clear:hover{background-color:var(--bg-secondary);color:var(--text-primary)}.search-results-dropdown{position:absolute;top:calc(100% + 8px);left:0;right:0;min-width:420px;background-color:var(--card-bg);border:1px solid var(--card-border);border-radius:12px;box-shadow:0 8px 24px #00000026;max-height:500px;overflow:hidden;z-index:1000;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.search-results-list{max-height:440px;overflow-y:auto}.search-result-item{display:flex;align-items:flex-start;padding:12px 16px;cursor:pointer;transition:background-color .2s;border-bottom:1px solid var(--border-color)}.search-result-item:last-child{border-bottom:none}.search-result-item:hover,.search-result-item.selected{background-color:var(--bg-secondary)}.search-result-item.selected{border-left:3px solid var(--color-primary)}.search-result-icon{font-size:1.5rem;margin-right:12px;flex-shrink:0}.search-result-content{flex:1;min-width:0}.search-result-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.search-result-title{font-weight:600;color:var(--text-primary);font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-type-badge{padding:2px 8px;background-color:var(--color-primary);color:#fff;border-radius:12px;font-size:.75rem;font-weight:500;white-space:nowrap;flex-shrink:0}.search-result-description{color:var(--text-secondary);font-size:.85rem;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background-color:var(--bg-secondary);border-top:1px solid var(--border-color);font-size:.8rem;color:var(--text-secondary)}.search-hint{font-family:monospace;opacity:.7}.search-no-results{padding:40px 20px;text-align:center;color:var(--text-secondary)}.search-no-results p{margin:0 0 8px;font-size:1rem;color:var(--text-primary)}.search-no-results small{font-size:.85rem;opacity:.7}.search-did-you-mean{margin-top:12px;display:flex;flex-direction:column;gap:8px}.search-did-you-mean span{font-size:.82rem;color:var(--text-secondary)}.search-suggestion-pills{display:flex;flex-wrap:wrap;gap:8px}.search-suggestion-pill{padding:6px 12px;background:#06b6d41f;border:1px solid #06b6d4;border-radius:999px;color:#06b6d4;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s,color .2s}.search-suggestion-pill:hover{background:#06b6d440;color:#22d3ee}.search-suggestions-block{padding:8px 0}.search-suggestions-label{display:block;padding:8px 16px 4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.search-suggestions-section{padding:4px 0}.search-suggestions-section-title{display:block;padding:6px 16px 2px;font-size:.8rem;color:var(--text-secondary)}.search-clear-history{background:none;border:none;cursor:pointer;padding:4px 8px;font-size:.8rem;color:var(--text-secondary);text-decoration:underline;border-radius:4px}.search-clear-history:hover{color:var(--color-primary)}@media (max-width: 768px){.search-bar-wrapper{max-width:100%}.search-input{font-size:.9rem}.search-input::placeholder{font-size:.85rem}.search-results-dropdown{max-height:400px}.search-results-list{max-height:340px}.search-result-item{padding:10px 12px}.search-hint{display:none}}.refresh-button-header{position:relative;display:inline-flex;align-items:center}.refresh-btn{display:flex;align-items:center;justify-content:center;padding:8px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s ease;position:relative;color:var(--text-primary)}.refresh-btn:hover{background:var(--bg-tertiary);border-color:var(--color-primary)}.refresh-btn.stale{border-color:var(--color-warning, #ff9800);background:var(--color-warning, #ff9800);color:#fff;animation:pulse 2s infinite}.refresh-btn.refreshing{cursor:wait;opacity:.7}.refresh-badge{position:absolute;top:-4px;right:-4px;background:var(--color-error, #f44336);color:#fff;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid var(--bg-primary)}.refresh-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;padding:6px 12px;background:#000000e6;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:1000}.refresh-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#000000e6}.refresh-button-floating{position:fixed;bottom:24px;right:24px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:12px}.refresh-notification{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--color-warning, #ff9800);color:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;animation:slideIn .3s ease}.refresh-notification-btn{padding:6px 12px;background:#fff;color:var(--color-warning, #ff9800);border:none;border-radius:4px;font-weight:500;cursor:pointer;transition:background .2s ease}.refresh-notification-btn:hover{background:#ffffffe6}.refresh-btn-floating{width:48px;height:48px;border-radius:50%;background:var(--color-primary);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0003;transition:all .2s ease;position:relative}.refresh-btn-floating:hover{transform:scale(1.1);box-shadow:0 6px 16px #0000004d}.refresh-btn-floating.stale{background:var(--color-warning, #ff9800);animation:pulse 2s infinite}.refresh-btn-floating.refreshing{cursor:wait;opacity:.7}.refresh-badge-floating{position:absolute;top:-2px;right:-2px;background:var(--color-error, #f44336);color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid var(--bg-primary)}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}:root{--color-primary: #5B4FFF;--color-secondary: #D4A218;--color-accent: #00F0FF;--color-accent-gold: #FFD700;--neon-purple: #5B4FFF;--neon-cyan: #00F0FF;--neon-gold: #FFD700;--glow-purple: 0 0 15px rgba(91, 79, 255, .4), 0 0 30px rgba(91, 79, 255, .15);--glow-cyan: 0 0 15px rgba(0, 240, 255, .4), 0 0 30px rgba(0, 240, 255, .15);--glow-gold: 0 0 15px rgba(255, 215, 0, .4), 0 0 30px rgba(255, 215, 0, .15);--bg-primary: #FFFFFF;--bg-secondary: #F5F5F7;--bg-tertiary: #E8E8EA;--bg-elevated: #FFFFFF;--text-primary: #1C1C1E;--text-secondary: #48484A;--text-tertiary: #8E8E93;--text-inverse: #FFFFFF;--border-color: rgba(91, 79, 255, .15);--border-hover: #A1A1A6;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .12);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--color-success: #34C759;--color-warning: #FF9500;--color-error: #FF3B30;--color-info: #007AFF;--sidebar-bg: var(--bg-secondary);--sidebar-border: var(--border-color);--sidebar-text: var(--text-primary);--sidebar-hover: var(--bg-tertiary);--sidebar-active-bg: var(--color-primary);--sidebar-active-text: var(--text-inverse);--card-bg: var(--bg-elevated);--card-border: var(--border-color);--card-shadow: var(--shadow-sm);--input-bg: var(--bg-primary);--input-border: var(--border-color);--input-focus: var(--color-primary);--btn-primary-bg: var(--color-primary);--btn-primary-hover: #4A3EE6;--btn-primary-text: var(--text-inverse);--btn-secondary-bg: var(--bg-tertiary);--btn-secondary-hover: var(--border-color);--btn-secondary-text: var(--text-primary)}[data-theme=dark]{--bg-primary: #0A0A12;--bg-secondary: #111118;--bg-tertiary: #1A1A24;--bg-elevated: #141420;--text-primary: #FFFFFF;--text-secondary: #E5E5EA;--text-tertiary: #7B7B9E;--text-inverse: #1C1C1E;--border-color: rgba(91, 79, 255, .2);--border-hover: #636366;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .5);--sidebar-bg: var(--bg-secondary);--sidebar-border: var(--border-color);--sidebar-text: var(--text-primary);--sidebar-hover: var(--bg-tertiary);--sidebar-active-bg: var(--color-primary);--sidebar-active-text: var(--text-inverse);--card-bg: var(--bg-elevated);--card-border: rgba(91, 79, 255, .25);--card-shadow: 0 0 20px rgba(91, 79, 255, .15);--input-bg: var(--bg-tertiary);--input-border: var(--border-color);--input-focus: var(--color-primary);--btn-primary-bg: var(--color-primary);--btn-primary-hover: #6B5FFF;--btn-primary-text: var(--text-inverse);--btn-secondary-bg: var(--bg-tertiary);--btn-secondary-hover: var(--border-color);--btn-secondary-text: var(--text-primary)}[data-theme=light] .card{background-color:#fff;color:#1c1c1e}[data-theme=light] .card h3,[data-theme=light] .card h4{color:#1c1c1e}[data-theme=light] .card p,[data-theme=light] .card li{color:#48484a}[data-theme=light] .card a{color:#5b4fff}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.theme-transitioning *{transition:none!important}.app{display:flex;min-height:100vh;background-color:var(--bg-primary);color:var(--text-primary)}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-primary);color:var(--text-inverse);padding:8px 16px;text-decoration:none;z-index:1000;border-radius:0 0 4px;font-weight:600}.skip-link:focus{top:0}.sidebar{width:250px;background-color:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);padding:20px;display:flex;flex-direction:column}[data-theme=dark] .sidebar{border-right-color:#5b4fff4d}.sidebar-header{display:flex;flex-direction:column;align-items:center;margin-bottom:10px}.sidebar-logo{width:120px;height:120px;object-fit:contain;margin-bottom:16px;transition:transform .3s ease}.sidebar-logo:hover{transform:scale(1.05)}.sidebar-header h1{font-size:1.5rem;margin-bottom:20px;color:var(--color-primary);font-weight:700;text-align:center}[data-theme=dark] .sidebar-header h1{text-shadow:0 0 15px rgba(91,79,255,.5),0 0 30px rgba(91,79,255,.2)}.sidebar-search{padding:0 0 20px;margin-bottom:20px;border-bottom:1px solid var(--sidebar-border)}.nav-items{list-style:none;padding:0;margin:0}.nav-items li{margin-bottom:10px}.nav-items a{display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--sidebar-text);text-decoration:none;border-radius:8px;transition:all .2s}.nav-items a:hover{background-color:var(--sidebar-hover);color:var(--text-primary)}[data-theme=dark] .nav-items a:hover{background-color:#00f0ff14;box-shadow:0 0 12px #00f0ff26}.nav-items a.active{background-color:var(--sidebar-active-bg);color:var(--sidebar-active-text);box-shadow:var(--shadow-sm)}[data-theme=dark] .nav-items a.active{box-shadow:0 0 15px #5b4fff66,0 0 30px #5b4fff26;border-left:3px solid rgba(0,240,255,.6)}.main-content{position:relative;flex:1;padding:30px;overflow-y:auto;background-color:var(--bg-primary)}[data-theme=dark] .main-content:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.03) 2px,rgba(0,0,0,.03) 4px);pointer-events:none;z-index:1}.page-header{margin-bottom:30px}.page-header h1,.page-header h2{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-sm);color:var(--text-primary);font-weight:var(--font-weight-bold);line-height:1.2}.page-header p{color:var(--text-secondary)}.card{position:relative;overflow:hidden;background-color:var(--card-bg);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);transition:box-shadow var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card h3{margin-top:0;margin-bottom:var(--spacing-md);color:var(--text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:1.4}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:30px}.stat-card{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--card-bg),var(--bg-secondary));border-radius:var(--radius-lg);padding:var(--spacing-lg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);transition:transform var(--transition-base),box-shadow var(--transition-base)}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.stat-card-link{text-decoration:none;color:inherit;display:block}.stat-card h4{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin:0 0 var(--spacing-md) 0;font-weight:var(--font-weight-semibold)}.stat-card .value{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-primary);margin:0;line-height:1.2}.stat-card:nth-child(2n) .value{color:var(--color-secondary)}[data-theme=dark] .card,[data-theme=dark] .stat-card{border:1px solid rgba(91,79,255,.25);box-shadow:0 0 15px #5b4fff1a,inset 0 1px #5b4fff1a}[data-theme=dark] .stat-card .value{text-shadow:0 0 10px rgba(91,79,255,.6),0 0 20px rgba(91,79,255,.3)}[data-theme=dark] .stat-card:nth-child(2n) .value{text-shadow:0 0 10px rgba(255,215,0,.6),0 0 20px rgba(255,215,0,.3)}.tabs{display:flex;gap:10px;margin-bottom:20px}.tabs button{padding:var(--spacing-sm) var(--spacing-md);background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md) var(--radius-md) 0 0;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.tabs button:hover{background-color:var(--bg-secondary);color:var(--text-primary);border-color:var(--border-hover)}[data-theme=dark] .tabs button:hover{box-shadow:0 0 12px #00f0ff33}.tabs button.active{background-color:var(--color-primary);color:var(--text-inverse);border-color:var(--color-primary);font-weight:var(--font-weight-semibold);box-shadow:var(--shadow-sm)}[data-theme=dark] .tabs button.active{box-shadow:0 4px 12px #5b4fff59;border-bottom:2px solid rgba(0,240,255,.6)}.btn{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);border:none;font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-base);font-weight:var(--font-weight-medium);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.btn-primary{background-color:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{background-color:var(--btn-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background-color:var(--btn-secondary-bg);color:var(--btn-secondary-text);border:1px solid var(--border-color)}.btn-secondary:hover{background-color:var(--btn-secondary-hover);border-color:var(--border-hover)}[data-theme=dark] button:hover,[data-theme=dark] .btn-secondary:hover{box-shadow:0 0 12px #00f0ff33}[data-theme=dark] a:focus-visible{outline:2px solid rgba(0,240,255,.8);outline-offset:2px}.input-group{margin-bottom:20px}.input-group label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.9rem;font-weight:500}.input-group input,.input-group select,.input-group textarea{width:100%;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.input-group input:focus,.input-group select:focus,.input-group textarea:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.data-table{width:100%;border-collapse:collapse;background-color:var(--card-bg);border-radius:var(--radius-md);overflow:hidden;transition:opacity var(--transition-base)}.data-table-wrapper{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:-24px;padding:24px}.data-table th{background-color:var(--bg-secondary);padding:var(--spacing-md);text-align:left;font-weight:var(--font-weight-semibold);color:var(--text-primary);border-bottom:2px solid var(--border-color);white-space:nowrap;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.5px}.data-table td{padding:var(--spacing-md);border-bottom:1px solid var(--border-color);color:var(--text-primary);word-break:break-word;font-size:var(--font-size-base);transition:background-color var(--transition-fast)}.data-table tr:hover{background-color:var(--bg-secondary)}.data-table tr{transition:background-color var(--transition-fast)}.data-table tr:last-child td{border-bottom:none}.search-bar{margin-bottom:20px;display:flex;gap:10px}.search-bar input{flex:1;padding:12px 16px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:8px;color:var(--text-primary);font-size:1rem;transition:all .2s}.search-bar input:focus{border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.loading{text-align:center;padding:40px;color:var(--text-secondary);font-size:1.2rem;display:flex;align-items:center;justify-content:center;gap:12px}.loading:before{content:"";width:20px;height:20px;border:3px solid var(--bg-tertiary);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .4s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes glitch{0%{transform:translate(0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px)}80%{transform:translate(1px,-1px)}to{transform:translate(0)}}@keyframes glitchSlice{0%{clip-path:inset(40% 0 50% 0)}25%{clip-path:inset(10% 0 80% 0)}50%{clip-path:inset(60% 0 10% 0)}75%{clip-path:inset(20% 0 60% 0)}to{clip-path:inset(80% 0 5% 0)}}.card:hover,.stat-card:hover{animation:glitch .3s ease}.card:hover:before,.stat-card:hover:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00f0ff0f;pointer-events:none;animation:glitchSlice .3s ease;clip-path:inset(40% 0 50% 0);transform:translate(-2px);z-index:0}.card:hover:after,.stat-card:hover:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffd7000f;pointer-events:none;animation:glitchSlice .3s ease;clip-path:inset(40% 0 50% 0);transform:translate(2px);z-index:0}.export-buttons{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.form-section{margin-bottom:30px}.alert{padding:12px 16px;border-radius:8px;margin-bottom:20px;font-weight:500}.alert-success{background-color:#34c75926;border:1px solid var(--color-success);color:var(--color-success)}.alert-error{background-color:#ff3b3026;border:1px solid var(--color-error);color:var(--color-error)}.filters-panel{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:20px;margin-bottom:20px}.filters-panel h4{margin-top:0;margin-bottom:16px;color:var(--text-primary);font-size:1.1rem}.filter-group{margin-bottom:16px}.filter-group label{display:block;margin-bottom:8px;color:var(--text-secondary);font-size:.9rem;font-weight:500}.filter-group select{width:100%;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.filter-group select:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.range-inputs{display:flex;align-items:center;gap:12px}.range-inputs input{flex:1;padding:10px 12px;background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:6px;color:var(--text-primary);font-size:1rem;transition:all .2s}.range-inputs input:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #5b4fff1a}.range-inputs span{color:var(--text-secondary);font-size:.9rem}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary)}.btn-secondary:hover{background-color:var(--border-color)}.support-card{background:linear-gradient(135deg,var(--card-bg) 0%,var(--bg-secondary) 100%);border:2px solid var(--color-primary);box-shadow:0 4px 12px #5b4fff26;transition:all .3s ease}.support-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #5b4fff40}.support-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.support-header h3{margin:0;color:var(--text-primary);font-size:1.4rem}.support-card p{color:var(--text-secondary);line-height:1.6;margin:12px 0}.support-actions{display:flex;gap:12px;margin:24px 0 16px;flex-wrap:wrap}.support-btn{flex:1;min-width:200px;text-align:center;text-decoration:none;font-weight:600;box-shadow:0 2px 8px #5b4fff4d;transition:all .2s ease}.support-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #5b4fff66}.support-actions .btn-secondary{flex:1;min-width:200px;text-align:center;text-decoration:none;border:1px solid var(--border-color)}.support-note{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color);color:var(--text-secondary);text-align:center}.support-note small{font-size:.85rem}.support-note a{color:var(--color-primary);text-decoration:none;transition:color .2s}.support-note a:hover{color:var(--color-secondary);text-decoration:underline}@media (max-width: 768px){.app{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--sidebar-border);padding:16px;max-height:none}.sidebar-header h1{font-size:1.25rem;margin-bottom:16px}.sidebar-logo{width:80px;height:80px;margin-bottom:12px}.main-content{padding:16px}.page-header h2{font-size:1.5rem}.page-header p{font-size:.9rem}.card{padding:16px;margin-bottom:16px;border-radius:8px}.card h3{font-size:1.1rem;margin-bottom:12px}.stats-grid{grid-template-columns:1fr;gap:16px}.stat-card{padding:16px}.stat-card .value{font-size:2rem}.data-table-wrapper{margin:-16px;padding:16px}.empty-state{padding:40px 20px;text-align:center;color:var(--text-secondary)}.empty-state p{margin:0;font-size:1rem}.score-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:.875rem;font-weight:600}.score-badge.high{background-color:#34c759;color:#fff}.score-badge.medium{background-color:#ff9500;color:#fff}.score-badge.low{background-color:#8e8e93;color:#fff}.data-table{min-width:600px}.data-table th,.data-table td{padding:8px;font-size:.9rem}.tabs{flex-wrap:wrap;gap:8px}.tabs button{padding:8px 16px;font-size:.9rem}.search-bar{flex-direction:column}.search-bar input{width:100%}.support-actions{flex-direction:column}.support-btn,.support-actions .btn-secondary{min-width:100%}.filters-panel{padding:16px}.range-inputs{flex-direction:column;align-items:stretch}.range-inputs span{display:none}}@media (max-width: 480px){.sidebar{padding:12px}.sidebar-header h1{font-size:1.1rem}.main-content{padding:12px}.page-header h2{font-size:1.25rem}.card{padding:12px}.stat-card .value{font-size:1.75rem}.data-table th,.data-table td{padding:6px;font-size:.85rem}.btn{padding:8px 16px;font-size:.9rem}}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;display:flex;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--btn-secondary-bg);color:var(--btn-secondary-text);cursor:pointer;transition:all .25s}button:hover{background-color:var(--btn-secondary-hover)}button:focus,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme=dark] button:focus,[data-theme=dark] button:focus-visible{outline-color:#00f0ffcc} diff --git a/backend/static/assets/index-DdSfhAxn.js b/backend/static/assets/index-DdSfhAxn.js new file mode 100644 index 0000000..f08925b --- /dev/null +++ b/backend/static/assets/index-DdSfhAxn.js @@ -0,0 +1,550 @@ +var Bv=Object.defineProperty;var Hv=(e,n,r)=>n in e?Bv(e,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[n]=r;var sd=(e,n,r)=>Hv(e,typeof n!="symbol"?n+"":n,r);function Vv(e,n){for(var r=0;ri[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function r(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(o){if(o.ep)return;o.ep=!0;const s=r(o);fetch(o.href,s)}})();function fm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var dm={exports:{}},Ia={},hm={exports:{}},te={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Fo=Symbol.for("react.element"),Wv=Symbol.for("react.portal"),qv=Symbol.for("react.fragment"),Gv=Symbol.for("react.strict_mode"),Xv=Symbol.for("react.profiler"),Yv=Symbol.for("react.provider"),Qv=Symbol.for("react.context"),Kv=Symbol.for("react.forward_ref"),Jv=Symbol.for("react.suspense"),Zv=Symbol.for("react.memo"),ex=Symbol.for("react.lazy"),ad=Symbol.iterator;function tx(e){return e===null||typeof e!="object"?null:(e=ad&&e[ad]||e["@@iterator"],typeof e=="function"?e:null)}var pm={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},mm=Object.assign,gm={};function mi(e,n,r){this.props=e,this.context=n,this.refs=gm,this.updater=r||pm}mi.prototype.isReactComponent={};mi.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)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,n,"setState")};mi.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ym(){}ym.prototype=mi.prototype;function Pc(e,n,r){this.props=e,this.context=n,this.refs=gm,this.updater=r||pm}var Rc=Pc.prototype=new ym;Rc.constructor=Pc;mm(Rc,mi.prototype);Rc.isPureReactComponent=!0;var ld=Array.isArray,vm=Object.prototype.hasOwnProperty,Mc={current:null},xm={key:!0,ref:!0,__self:!0,__source:!0};function _m(e,n,r){var i,o={},s=null,a=null;if(n!=null)for(i in n.ref!==void 0&&(a=n.ref),n.key!==void 0&&(s=""+n.key),n)vm.call(n,i)&&!xm.hasOwnProperty(i)&&(o[i]=n[i]);var l=arguments.length-2;if(l===1)o.children=r;else if(1>>1,X=D[q];if(0>>1;qo(_e,U))Go(ie,_e)?(D[q]=ie,D[G]=U,q=G):(D[q]=_e,D[ee]=U,q=ee);else if(Go(ie,U))D[q]=ie,D[G]=U,q=G;else break e}}return z}function o(D,z){var U=D.sortIndex-z.sortIndex;return U!==0?U:D.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var f=[],c=[],h=1,d=null,p=3,y=!1,g=!1,x=!1,_=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(D){for(var z=r(c);z!==null;){if(z.callback===null)i(c);else if(z.startTime<=D)i(c),z.sortIndex=z.expirationTime,n(f,z);else break;z=r(c)}}function b(D){if(x=!1,w(D),!g)if(r(f)!==null)g=!0,R(k);else{var z=r(c);z!==null&&B(b,z.startTime-D)}}function k(D,z){g=!1,x&&(x=!1,m(T),T=-1),y=!0;var U=p;try{for(w(z),d=r(f);d!==null&&(!(d.expirationTime>z)||D&&!O());){var q=d.callback;if(typeof q=="function"){d.callback=null,p=d.priorityLevel;var X=q(d.expirationTime<=z);z=e.unstable_now(),typeof X=="function"?d.callback=X:d===r(f)&&i(f),w(z)}else i(f);d=r(f)}if(d!==null)var ne=!0;else{var ee=r(c);ee!==null&&B(b,ee.startTime-z),ne=!1}return ne}finally{d=null,p=U,y=!1}}var j=!1,C=null,T=-1,F=5,A=-1;function O(){return!(e.unstable_now()-AD||125q?(D.sortIndex=U,n(c,D),r(f)===null&&D===r(c)&&(x?(m(T),T=-1):x=!0,B(b,U-q))):(D.sortIndex=X,n(f,D),g||y||(g=!0,R(k))),D},e.unstable_shouldYield=O,e.unstable_wrapCallback=function(D){var z=p;return function(){var U=p;p=z;try{return D.apply(this,arguments)}finally{p=U}}}})(Sm);jm.exports=Sm;var hx=jm.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var px=E,ht=hx;function H(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ou=Object.prototype.hasOwnProperty,mx=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,cd={},fd={};function gx(e){return ou.call(fd,e)?!0:ou.call(cd,e)?!1:mx.test(e)?fd[e]=!0:(cd[e]=!0,!1)}function yx(e,n,r,i){if(r!==null&&r.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return i?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function vx(e,n,r,i){if(n===null||typeof n>"u"||yx(e,n,r,i))return!0;if(i)return!1;if(r!==null)switch(r.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function Ye(e,n,r,i,o,s,a){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=i,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=n,this.sanitizeURL=s,this.removeEmptyString=a}var $e={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){$e[e]=new Ye(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];$e[n]=new Ye(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){$e[e]=new Ye(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){$e[e]=new Ye(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){$e[e]=new Ye(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){$e[e]=new Ye(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){$e[e]=new Ye(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){$e[e]=new Ye(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){$e[e]=new Ye(e,5,!1,e.toLowerCase(),null,!1,!1)});var Fc=/[\-:]([a-z])/g;function $c(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Fc,$c);$e[n]=new Ye(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Fc,$c);$e[n]=new Ye(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Fc,$c);$e[n]=new Ye(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){$e[e]=new Ye(e,1,!1,e.toLowerCase(),null,!1,!1)});$e.xlinkHref=new Ye("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){$e[e]=new Ye(e,1,!1,e.toLowerCase(),null,!0,!0)});function Dc(e,n,r,i){var o=$e.hasOwnProperty(n)?$e[n]:null;(o!==null?o.type!==0:i||!(2l||o[a]!==s[l]){var f=` +`+o[a].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=a&&0<=l);break}}}finally{_l=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Bi(e):""}function xx(e){switch(e.tag){case 5:return Bi(e.type);case 16:return Bi("Lazy");case 13:return Bi("Suspense");case 19:return Bi("SuspenseList");case 0:case 2:case 15:return e=wl(e.type,!1),e;case 11:return e=wl(e.type.render,!1),e;case 1:return e=wl(e.type,!0),e;default:return""}}function uu(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Fr:return"Fragment";case zr:return"Portal";case su:return"Profiler";case Ic:return"StrictMode";case au:return"Suspense";case lu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Em:return(e.displayName||"Context")+".Consumer";case Cm:return(e._context.displayName||"Context")+".Provider";case Lc:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Uc:return n=e.displayName||null,n!==null?n:uu(e.type)||"Memo";case Mn:n=e._payload,e=e._init;try{return uu(e(n))}catch{}}return null}function _x(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return uu(n);case 8:return n===Ic?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Qn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Am(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function wx(e){var n=Am(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),i=""+e[n];if(!e.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,s=r.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return o.call(this)},set:function(a){i=""+a,s.call(this,a)}}),Object.defineProperty(e,n,{enumerable:r.enumerable}),{getValue:function(){return i},setValue:function(a){i=""+a},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function is(e){e._valueTracker||(e._valueTracker=wx(e))}function Pm(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var r=n.getValue(),i="";return e&&(i=Am(e)?e.checked?"true":"false":e.value),e=i,e!==r?(n.setValue(e),!0):!1}function Ks(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function cu(e,n){var r=n.checked;return ve({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function hd(e,n){var r=n.defaultValue==null?"":n.defaultValue,i=n.checked!=null?n.checked:n.defaultChecked;r=Qn(n.value!=null?n.value:r),e._wrapperState={initialChecked:i,initialValue:r,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Rm(e,n){n=n.checked,n!=null&&Dc(e,"checked",n,!1)}function fu(e,n){Rm(e,n);var r=Qn(n.value),i=n.type;if(r!=null)i==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?du(e,n.type,r):n.hasOwnProperty("defaultValue")&&du(e,n.type,Qn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function pd(e,n,r){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var i=n.type;if(!(i!=="submit"&&i!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,r||n===e.value||(e.value=n),e.defaultValue=n}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function du(e,n,r){(n!=="number"||Ks(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Hi=Array.isArray;function Xr(e,n,r,i){if(e=e.options,n){n={};for(var o=0;o"+n.valueOf().toString()+"",n=os.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function fo(e,n){if(n){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=n;return}}e.textContent=n}var Ki={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},bx=["Webkit","ms","Moz","O"];Object.keys(Ki).forEach(function(e){bx.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Ki[n]=Ki[e]})});function Fm(e,n,r){return n==null||typeof n=="boolean"||n===""?"":r||typeof n!="number"||n===0||Ki.hasOwnProperty(e)&&Ki[e]?(""+n).trim():n+"px"}function $m(e,n){e=e.style;for(var r in n)if(n.hasOwnProperty(r)){var i=r.indexOf("--")===0,o=Fm(r,n[r],i);r==="float"&&(r="cssFloat"),i?e.setProperty(r,o):e[r]=o}}var kx=ve({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function mu(e,n){if(n){if(kx[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(H(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(H(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(H(61))}if(n.style!=null&&typeof n.style!="object")throw Error(H(62))}}function gu(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var yu=null;function Bc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var vu=null,Yr=null,Qr=null;function yd(e){if(e=Io(e)){if(typeof vu!="function")throw Error(H(280));var n=e.stateNode;n&&(n=Va(n),vu(e.stateNode,e.type,n))}}function Dm(e){Yr?Qr?Qr.push(e):Qr=[e]:Yr=e}function Im(){if(Yr){var e=Yr,n=Qr;if(Qr=Yr=null,yd(e),n)for(e=0;e>>=0,e===0?32:31-(Ox(e)/zx|0)|0}var ss=64,as=4194304;function Vi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ta(e,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,o=e.suspendedLanes,s=e.pingedLanes,a=r&268435455;if(a!==0){var l=a&~o;l!==0?i=Vi(l):(s&=a,s!==0&&(i=Vi(s)))}else a=r&~o,a!==0?i=Vi(a):s!==0&&(i=Vi(s));if(i===0)return 0;if(n!==0&&n!==i&&!(n&o)&&(o=i&-i,s=n&-n,o>=s||o===16&&(s&4194240)!==0))return n;if(i&4&&(i|=r&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=i;0r;r++)n.push(e);return n}function $o(e,n,r){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Dt(n),e[n]=r}function Ix(e,n){var r=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=Zi),Nd=" ",Cd=!1;function og(e,n){switch(e){case"keyup":return h1.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sg(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var $r=!1;function m1(e,n){switch(e){case"compositionend":return sg(n);case"keypress":return n.which!==32?null:(Cd=!0,Nd);case"textInput":return e=n.data,e===Nd&&Cd?null:e;default:return null}}function g1(e,n){if($r)return e==="compositionend"||!Qc&&og(e,n)?(e=rg(),Ms=Gc=$n=null,$r=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:r,offset:n-e};e=i}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Pd(r)}}function cg(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?cg(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function fg(){for(var e=window,n=Ks();n instanceof e.HTMLIFrameElement;){try{var r=typeof n.contentWindow.location.href=="string"}catch{r=!1}if(r)e=n.contentWindow;else break;n=Ks(e.document)}return n}function Kc(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function S1(e){var n=fg(),r=e.focusedElem,i=e.selectionRange;if(n!==r&&r&&r.ownerDocument&&cg(r.ownerDocument.documentElement,r)){if(i!==null&&Kc(r)){if(n=i.start,e=i.end,e===void 0&&(e=n),"selectionStart"in r)r.selectionStart=n,r.selectionEnd=Math.min(e,r.value.length);else if(e=(n=r.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var o=r.textContent.length,s=Math.min(i.start,o);i=i.end===void 0?s:Math.min(i.end,o),!e.extend&&s>i&&(o=i,i=s,s=o),o=Rd(r,s);var a=Rd(r,i);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(n=n.createRange(),n.setStart(o.node,o.offset),e.removeAllRanges(),s>i?(e.addRange(n),e.extend(a.node,a.offset)):(n.setEnd(a.node,a.offset),e.addRange(n)))}}for(n=[],e=r;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Dr=null,ju=null,to=null,Su=!1;function Md(e,n,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;Su||Dr==null||Dr!==Ks(i)||(i=Dr,"selectionStart"in i&&Kc(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),to&&vo(to,i)||(to=i,i=ia(ju,"onSelect"),0Ur||(e.current=Pu[Ur],Pu[Ur]=null,Ur--)}function ue(e,n){Ur++,Pu[Ur]=e.current,e.current=n}var Kn={},Ve=Zn(Kn),tt=Zn(!1),vr=Kn;function ii(e,n){var r=e.type.contextTypes;if(!r)return Kn;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===n)return i.__reactInternalMemoizedMaskedChildContext;var o={},s;for(s in r)o[s]=n[s];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=o),o}function nt(e){return e=e.childContextTypes,e!=null}function sa(){de(tt),de(Ve)}function Ld(e,n,r){if(Ve.current!==Kn)throw Error(H(168));ue(Ve,n),ue(tt,r)}function _g(e,n,r){var i=e.stateNode;if(n=n.childContextTypes,typeof i.getChildContext!="function")return r;i=i.getChildContext();for(var o in i)if(!(o in n))throw Error(H(108,_x(e)||"Unknown",o));return ve({},r,i)}function aa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Kn,vr=Ve.current,ue(Ve,e),ue(tt,tt.current),!0}function Ud(e,n,r){var i=e.stateNode;if(!i)throw Error(H(169));r?(e=_g(e,n,vr),i.__reactInternalMemoizedMergedChildContext=e,de(tt),de(Ve),ue(Ve,e)):de(tt),ue(tt,r)}var dn=null,Wa=!1,zl=!1;function wg(e){dn===null?dn=[e]:dn.push(e)}function $1(e){Wa=!0,wg(e)}function er(){if(!zl&&dn!==null){zl=!0;var e=0,n=se;try{var r=dn;for(se=1;e>=a,o-=a,pn=1<<32-Dt(n)+o|r<T?(F=C,C=null):F=C.sibling;var A=p(m,C,w[T],b);if(A===null){C===null&&(C=F);break}e&&C&&A.alternate===null&&n(m,C),v=s(A,v,T),j===null?k=A:j.sibling=A,j=A,C=F}if(T===w.length)return r(m,C),pe&&ir(m,T),k;if(C===null){for(;TT?(F=C,C=null):F=C.sibling;var O=p(m,C,A.value,b);if(O===null){C===null&&(C=F);break}e&&C&&O.alternate===null&&n(m,C),v=s(O,v,T),j===null?k=O:j.sibling=O,j=O,C=F}if(A.done)return r(m,C),pe&&ir(m,T),k;if(C===null){for(;!A.done;T++,A=w.next())A=d(m,A.value,b),A!==null&&(v=s(A,v,T),j===null?k=A:j.sibling=A,j=A);return pe&&ir(m,T),k}for(C=i(m,C);!A.done;T++,A=w.next())A=y(C,m,T,A.value,b),A!==null&&(e&&A.alternate!==null&&C.delete(A.key===null?T:A.key),v=s(A,v,T),j===null?k=A:j.sibling=A,j=A);return e&&C.forEach(function(N){return n(m,N)}),pe&&ir(m,T),k}function _(m,v,w,b){if(typeof w=="object"&&w!==null&&w.type===Fr&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case rs:e:{for(var k=w.key,j=v;j!==null;){if(j.key===k){if(k=w.type,k===Fr){if(j.tag===7){r(m,j.sibling),v=o(j,w.props.children),v.return=m,m=v;break e}}else if(j.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===Mn&&Vd(k)===j.type){r(m,j.sibling),v=o(j,w.props),v.ref=Ti(m,j,w),v.return=m,m=v;break e}r(m,j);break}else n(m,j);j=j.sibling}w.type===Fr?(v=pr(w.props.children,m.mode,b,w.key),v.return=m,m=v):(b=Us(w.type,w.key,w.props,null,m.mode,b),b.ref=Ti(m,v,w),b.return=m,m=b)}return a(m);case zr:e:{for(j=w.key;v!==null;){if(v.key===j)if(v.tag===4&&v.stateNode.containerInfo===w.containerInfo&&v.stateNode.implementation===w.implementation){r(m,v.sibling),v=o(v,w.children||[]),v.return=m,m=v;break e}else{r(m,v);break}else n(m,v);v=v.sibling}v=Hl(w,m.mode,b),v.return=m,m=v}return a(m);case Mn:return j=w._init,_(m,v,j(w._payload),b)}if(Hi(w))return g(m,v,w,b);if(ji(w))return x(m,v,w,b);ps(m,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,v!==null&&v.tag===6?(r(m,v.sibling),v=o(v,w),v.return=m,m=v):(r(m,v),v=Bl(w,m.mode,b),v.return=m,m=v),a(m)):r(m,v)}return _}var si=Sg(!0),Ng=Sg(!1),ca=Zn(null),fa=null,Vr=null,tf=null;function nf(){tf=Vr=fa=null}function rf(e){var n=ca.current;de(ca),e._currentValue=n}function Ou(e,n,r){for(;e!==null;){var i=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,i!==null&&(i.childLanes|=n)):i!==null&&(i.childLanes&n)!==n&&(i.childLanes|=n),e===r)break;e=e.return}}function Jr(e,n){fa=e,tf=Vr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(Ze=!0),e.firstContext=null)}function Nt(e){var n=e._currentValue;if(tf!==e)if(e={context:e,memoizedValue:n,next:null},Vr===null){if(fa===null)throw Error(H(308));Vr=e,fa.dependencies={lanes:0,firstContext:e}}else Vr=Vr.next=e;return n}var ur=null;function of(e){ur===null?ur=[e]:ur.push(e)}function Cg(e,n,r,i){var o=n.interleaved;return o===null?(r.next=r,of(n)):(r.next=o.next,o.next=r),n.interleaved=r,bn(e,i)}function bn(e,n){e.lanes|=n;var r=e.alternate;for(r!==null&&(r.lanes|=n),r=e,e=e.return;e!==null;)e.childLanes|=n,r=e.alternate,r!==null&&(r.childLanes|=n),r=e,e=e.return;return r.tag===3?r.stateNode:null}var On=!1;function sf(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Eg(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function vn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Wn(e,n,r){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,re&2){var o=i.pending;return o===null?n.next=n:(n.next=o.next,o.next=n),i.pending=n,bn(e,r)}return o=i.interleaved,o===null?(n.next=n,of(i)):(n.next=o.next,o.next=n),i.interleaved=n,bn(e,r)}function zs(e,n,r){if(n=n.updateQueue,n!==null&&(n=n.shared,(r&4194240)!==0)){var i=n.lanes;i&=e.pendingLanes,r|=i,n.lanes=r,Vc(e,r)}}function Wd(e,n){var r=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,r===i)){var o=null,s=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};s===null?o=s=a:s=s.next=a,r=r.next}while(r!==null);s===null?o=s=n:s=s.next=n}else o=s=n;r={baseState:i.baseState,firstBaseUpdate:o,lastBaseUpdate:s,shared:i.shared,effects:i.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=n:e.next=n,r.lastBaseUpdate=n}function da(e,n,r,i){var o=e.updateQueue;On=!1;var s=o.firstBaseUpdate,a=o.lastBaseUpdate,l=o.shared.pending;if(l!==null){o.shared.pending=null;var f=l,c=f.next;f.next=null,a===null?s=c:a.next=c,a=f;var h=e.alternate;h!==null&&(h=h.updateQueue,l=h.lastBaseUpdate,l!==a&&(l===null?h.firstBaseUpdate=c:l.next=c,h.lastBaseUpdate=f))}if(s!==null){var d=o.baseState;a=0,h=c=f=null,l=s;do{var p=l.lane,y=l.eventTime;if((i&p)===p){h!==null&&(h=h.next={eventTime:y,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var g=e,x=l;switch(p=n,y=r,x.tag){case 1:if(g=x.payload,typeof g=="function"){d=g.call(y,d,p);break e}d=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=x.payload,p=typeof g=="function"?g.call(y,d,p):g,p==null)break e;d=ve({},d,p);break e;case 2:On=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=o.effects,p===null?o.effects=[l]:p.push(l))}else y={eventTime:y,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},h===null?(c=h=y,f=d):h=h.next=y,a|=p;if(l=l.next,l===null){if(l=o.shared.pending,l===null)break;p=l,l=p.next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}while(!0);if(h===null&&(f=d),o.baseState=f,o.firstBaseUpdate=c,o.lastBaseUpdate=h,n=o.shared.interleaved,n!==null){o=n;do a|=o.lane,o=o.next;while(o!==n)}else s===null&&(o.shared.lanes=0);wr|=a,e.lanes=a,e.memoizedState=d}}function qd(e,n,r){if(e=n.effects,n.effects=null,e!==null)for(n=0;nr?r:4,e(!0);var i=$l.transition;$l.transition={};try{e(!1),n()}finally{se=r,$l.transition=i}}function Wg(){return Ct().memoizedState}function U1(e,n,r){var i=Gn(e);if(r={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null},qg(e))Gg(n,r);else if(r=Cg(e,n,r,i),r!==null){var o=Ge();It(r,e,i,o),Xg(r,n,i)}}function B1(e,n,r){var i=Gn(e),o={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null};if(qg(e))Gg(n,o);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=n.lastRenderedReducer,s!==null))try{var a=n.lastRenderedState,l=s(a,r);if(o.hasEagerState=!0,o.eagerState=l,Lt(l,a)){var f=n.interleaved;f===null?(o.next=o,of(n)):(o.next=f.next,f.next=o),n.interleaved=o;return}}catch{}finally{}r=Cg(e,n,o,i),r!==null&&(o=Ge(),It(r,e,i,o),Xg(r,n,i))}}function qg(e){var n=e.alternate;return e===ye||n!==null&&n===ye}function Gg(e,n){no=pa=!0;var r=e.pending;r===null?n.next=n:(n.next=r.next,r.next=n),e.pending=n}function Xg(e,n,r){if(r&4194240){var i=n.lanes;i&=e.pendingLanes,r|=i,n.lanes=r,Vc(e,r)}}var ma={readContext:Nt,useCallback:Ie,useContext:Ie,useEffect:Ie,useImperativeHandle:Ie,useInsertionEffect:Ie,useLayoutEffect:Ie,useMemo:Ie,useReducer:Ie,useRef:Ie,useState:Ie,useDebugValue:Ie,useDeferredValue:Ie,useTransition:Ie,useMutableSource:Ie,useSyncExternalStore:Ie,useId:Ie,unstable_isNewReconciler:!1},H1={readContext:Nt,useCallback:function(e,n){return Xt().memoizedState=[e,n===void 0?null:n],e},useContext:Nt,useEffect:Xd,useImperativeHandle:function(e,n,r){return r=r!=null?r.concat([e]):null,$s(4194308,4,Lg.bind(null,n,e),r)},useLayoutEffect:function(e,n){return $s(4194308,4,e,n)},useInsertionEffect:function(e,n){return $s(4,2,e,n)},useMemo:function(e,n){var r=Xt();return n=n===void 0?null:n,e=e(),r.memoizedState=[e,n],e},useReducer:function(e,n,r){var i=Xt();return n=r!==void 0?r(n):n,i.memoizedState=i.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},i.queue=e,e=e.dispatch=U1.bind(null,ye,e),[i.memoizedState,e]},useRef:function(e){var n=Xt();return e={current:e},n.memoizedState=e},useState:Gd,useDebugValue:pf,useDeferredValue:function(e){return Xt().memoizedState=e},useTransition:function(){var e=Gd(!1),n=e[0];return e=L1.bind(null,e[1]),Xt().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,r){var i=ye,o=Xt();if(pe){if(r===void 0)throw Error(H(407));r=r()}else{if(r=n(),Oe===null)throw Error(H(349));_r&30||Rg(i,n,r)}o.memoizedState=r;var s={value:r,getSnapshot:n};return o.queue=s,Xd(Og.bind(null,i,s,e),[e]),i.flags|=2048,No(9,Mg.bind(null,i,s,r,n),void 0,null),r},useId:function(){var e=Xt(),n=Oe.identifierPrefix;if(pe){var r=mn,i=pn;r=(i&~(1<<32-Dt(i)-1)).toString(32)+r,n=":"+n+"R"+r,r=jo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=a.createElement(r,{is:i.is}):(e=a.createElement(r),r==="select"&&(a=e,i.multiple?a.multiple=!0:i.size&&(a.size=i.size))):e=a.createElementNS(e,r),e[Kt]=n,e[wo]=i,iy(e,n,!1,!1),n.stateNode=e;e:{switch(a=gu(r,i),r){case"dialog":ce("cancel",e),ce("close",e),o=i;break;case"iframe":case"object":case"embed":ce("load",e),o=i;break;case"video":case"audio":for(o=0;oui&&(n.flags|=128,i=!0,Ai(s,!1),n.lanes=4194304)}else{if(!i)if(e=ha(a),e!==null){if(n.flags|=128,i=!0,r=e.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),Ai(s,!0),s.tail===null&&s.tailMode==="hidden"&&!a.alternate&&!pe)return Le(n),null}else 2*je()-s.renderingStartTime>ui&&r!==1073741824&&(n.flags|=128,i=!0,Ai(s,!1),n.lanes=4194304);s.isBackwards?(a.sibling=n.child,n.child=a):(r=s.last,r!==null?r.sibling=a:n.child=a,s.last=a)}return s.tail!==null?(n=s.tail,s.rendering=n,s.tail=n.sibling,s.renderingStartTime=je(),n.sibling=null,r=ge.current,ue(ge,i?r&1|2:r&1),n):(Le(n),null);case 22:case 23:return _f(),i=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(n.flags|=8192),i&&n.mode&1?ut&1073741824&&(Le(n),n.subtreeFlags&6&&(n.flags|=8192)):Le(n),null;case 24:return null;case 25:return null}throw Error(H(156,n.tag))}function K1(e,n){switch(Zc(n),n.tag){case 1:return nt(n.type)&&sa(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return ai(),de(tt),de(Ve),uf(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return lf(n),null;case 13:if(de(ge),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(H(340));oi()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return de(ge),null;case 4:return ai(),null;case 10:return rf(n.type._context),null;case 22:case 23:return _f(),null;case 24:return null;default:return null}}var gs=!1,Be=!1,J1=typeof WeakSet=="function"?WeakSet:Set,Y=null;function Wr(e,n){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(i){be(e,n,i)}else r.current=null}function Hu(e,n,r){try{r()}catch(i){be(e,n,i)}}var oh=!1;function Z1(e,n){if(Nu=na,e=fg(),Kc(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var o=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{r.nodeType,s.nodeType}catch{r=null;break e}var a=0,l=-1,f=-1,c=0,h=0,d=e,p=null;t:for(;;){for(var y;d!==r||o!==0&&d.nodeType!==3||(l=a+o),d!==s||i!==0&&d.nodeType!==3||(f=a+i),d.nodeType===3&&(a+=d.nodeValue.length),(y=d.firstChild)!==null;)p=d,d=y;for(;;){if(d===e)break t;if(p===r&&++c===o&&(l=a),p===s&&++h===i&&(f=a),(y=d.nextSibling)!==null)break;d=p,p=d.parentNode}d=y}r=l===-1||f===-1?null:{start:l,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(Cu={focusedElem:e,selectionRange:r},na=!1,Y=n;Y!==null;)if(n=Y,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Y=e;else for(;Y!==null;){n=Y;try{var g=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var x=g.memoizedProps,_=g.memoizedState,m=n.stateNode,v=m.getSnapshotBeforeUpdate(n.elementType===n.type?x:Rt(n.type,x),_);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=n.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(H(163))}}catch(b){be(n,n.return,b)}if(e=n.sibling,e!==null){e.return=n.return,Y=e;break}Y=n.return}return g=oh,oh=!1,g}function ro(e,n,r){var i=n.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var o=i=i.next;do{if((o.tag&e)===e){var s=o.destroy;o.destroy=void 0,s!==void 0&&Hu(n,r,s)}o=o.next}while(o!==i)}}function Xa(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do{if((r.tag&e)===e){var i=r.create;r.destroy=i()}r=r.next}while(r!==n)}}function Vu(e){var n=e.ref;if(n!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof n=="function"?n(e):n.current=e}}function ay(e){var n=e.alternate;n!==null&&(e.alternate=null,ay(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Kt],delete n[wo],delete n[Au],delete n[z1],delete n[F1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ly(e){return e.tag===5||e.tag===3||e.tag===4}function sh(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ly(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wu(e,n,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,n?r.nodeType===8?r.parentNode.insertBefore(e,n):r.insertBefore(e,n):(r.nodeType===8?(n=r.parentNode,n.insertBefore(e,r)):(n=r,n.appendChild(e)),r=r._reactRootContainer,r!=null||n.onclick!==null||(n.onclick=oa));else if(i!==4&&(e=e.child,e!==null))for(Wu(e,n,r),e=e.sibling;e!==null;)Wu(e,n,r),e=e.sibling}function qu(e,n,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,n?r.insertBefore(e,n):r.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(qu(e,n,r),e=e.sibling;e!==null;)qu(e,n,r),e=e.sibling}var ze=null,Mt=!1;function An(e,n,r){for(r=r.child;r!==null;)uy(e,n,r),r=r.sibling}function uy(e,n,r){if(Zt&&typeof Zt.onCommitFiberUnmount=="function")try{Zt.onCommitFiberUnmount(La,r)}catch{}switch(r.tag){case 5:Be||Wr(r,n);case 6:var i=ze,o=Mt;ze=null,An(e,n,r),ze=i,Mt=o,ze!==null&&(Mt?(e=ze,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):ze.removeChild(r.stateNode));break;case 18:ze!==null&&(Mt?(e=ze,r=r.stateNode,e.nodeType===8?Ol(e.parentNode,r):e.nodeType===1&&Ol(e,r),go(e)):Ol(ze,r.stateNode));break;case 4:i=ze,o=Mt,ze=r.stateNode.containerInfo,Mt=!0,An(e,n,r),ze=i,Mt=o;break;case 0:case 11:case 14:case 15:if(!Be&&(i=r.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){o=i=i.next;do{var s=o,a=s.destroy;s=s.tag,a!==void 0&&(s&2||s&4)&&Hu(r,n,a),o=o.next}while(o!==i)}An(e,n,r);break;case 1:if(!Be&&(Wr(r,n),i=r.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=r.memoizedProps,i.state=r.memoizedState,i.componentWillUnmount()}catch(l){be(r,n,l)}An(e,n,r);break;case 21:An(e,n,r);break;case 22:r.mode&1?(Be=(i=Be)||r.memoizedState!==null,An(e,n,r),Be=i):An(e,n,r);break;default:An(e,n,r)}}function ah(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new J1),n.forEach(function(i){var o=l_.bind(null,e,i);r.has(i)||(r.add(i),i.then(o,o))})}}function Tt(e,n){var r=n.deletions;if(r!==null)for(var i=0;io&&(o=a),i&=~s}if(i=o,i=je()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*t_(i/1960))-i,10e?16:e,Dn===null)var i=!1;else{if(e=Dn,Dn=null,va=0,re&6)throw Error(H(331));var o=re;for(re|=4,Y=e.current;Y!==null;){var s=Y,a=s.child;if(Y.flags&16){var l=s.deletions;if(l!==null){for(var f=0;fje()-vf?hr(e,0):yf|=r),rt(e,n)}function yy(e,n){n===0&&(e.mode&1?(n=as,as<<=1,!(as&130023424)&&(as=4194304)):n=1);var r=Ge();e=bn(e,n),e!==null&&($o(e,n,r),rt(e,r))}function a_(e){var n=e.memoizedState,r=0;n!==null&&(r=n.retryLane),yy(e,r)}function l_(e,n){var r=0;switch(e.tag){case 13:var i=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(H(314))}i!==null&&i.delete(n),yy(e,r)}var vy;vy=function(e,n,r){if(e!==null)if(e.memoizedProps!==n.pendingProps||tt.current)Ze=!0;else{if(!(e.lanes&r)&&!(n.flags&128))return Ze=!1,Y1(e,n,r);Ze=!!(e.flags&131072)}else Ze=!1,pe&&n.flags&1048576&&bg(n,ua,n.index);switch(n.lanes=0,n.tag){case 2:var i=n.type;Ds(e,n),e=n.pendingProps;var o=ii(n,Ve.current);Jr(n,r),o=ff(null,n,i,e,o,r);var s=df();return n.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,nt(i)?(s=!0,aa(n)):s=!1,n.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,sf(n),o.updater=Ga,n.stateNode=o,o._reactInternals=n,Fu(n,i,e,r),n=Iu(null,n,i,!0,s,r)):(n.tag=0,pe&&s&&Jc(n),We(null,n,o,r),n=n.child),n;case 16:i=n.elementType;e:{switch(Ds(e,n),e=n.pendingProps,o=i._init,i=o(i._payload),n.type=i,o=n.tag=c_(i),e=Rt(i,e),o){case 0:n=Du(null,n,i,e,r);break e;case 1:n=nh(null,n,i,e,r);break e;case 11:n=eh(null,n,i,e,r);break e;case 14:n=th(null,n,i,Rt(i.type,e),r);break e}throw Error(H(306,i,""))}return n;case 0:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Rt(i,o),Du(e,n,i,o,r);case 1:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Rt(i,o),nh(e,n,i,o,r);case 3:e:{if(ty(n),e===null)throw Error(H(387));i=n.pendingProps,s=n.memoizedState,o=s.element,Eg(e,n),da(n,i,null,r);var a=n.memoizedState;if(i=a.element,s.isDehydrated)if(s={element:i,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},n.updateQueue.baseState=s,n.memoizedState=s,n.flags&256){o=li(Error(H(423)),n),n=rh(e,n,i,r,o);break e}else if(i!==o){o=li(Error(H(424)),n),n=rh(e,n,i,r,o);break e}else for(ft=Vn(n.stateNode.containerInfo.firstChild),dt=n,pe=!0,Ot=null,r=Ng(n,null,i,r),n.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(oi(),i===o){n=kn(e,n,r);break e}We(e,n,i,r)}n=n.child}return n;case 5:return Tg(n),e===null&&Mu(n),i=n.type,o=n.pendingProps,s=e!==null?e.memoizedProps:null,a=o.children,Eu(i,o)?a=null:s!==null&&Eu(i,s)&&(n.flags|=32),ey(e,n),We(e,n,a,r),n.child;case 6:return e===null&&Mu(n),null;case 13:return ny(e,n,r);case 4:return af(n,n.stateNode.containerInfo),i=n.pendingProps,e===null?n.child=si(n,null,i,r):We(e,n,i,r),n.child;case 11:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Rt(i,o),eh(e,n,i,o,r);case 7:return We(e,n,n.pendingProps,r),n.child;case 8:return We(e,n,n.pendingProps.children,r),n.child;case 12:return We(e,n,n.pendingProps.children,r),n.child;case 10:e:{if(i=n.type._context,o=n.pendingProps,s=n.memoizedProps,a=o.value,ue(ca,i._currentValue),i._currentValue=a,s!==null)if(Lt(s.value,a)){if(s.children===o.children&&!tt.current){n=kn(e,n,r);break e}}else for(s=n.child,s!==null&&(s.return=n);s!==null;){var l=s.dependencies;if(l!==null){a=s.child;for(var f=l.firstContext;f!==null;){if(f.context===i){if(s.tag===1){f=vn(-1,r&-r),f.tag=2;var c=s.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?f.next=f:(f.next=h.next,h.next=f),c.pending=f}}s.lanes|=r,f=s.alternate,f!==null&&(f.lanes|=r),Ou(s.return,r,n),l.lanes|=r;break}f=f.next}}else if(s.tag===10)a=s.type===n.type?null:s.child;else if(s.tag===18){if(a=s.return,a===null)throw Error(H(341));a.lanes|=r,l=a.alternate,l!==null&&(l.lanes|=r),Ou(a,r,n),a=s.sibling}else a=s.child;if(a!==null)a.return=s;else for(a=s;a!==null;){if(a===n){a=null;break}if(s=a.sibling,s!==null){s.return=a.return,a=s;break}a=a.return}s=a}We(e,n,o.children,r),n=n.child}return n;case 9:return o=n.type,i=n.pendingProps.children,Jr(n,r),o=Nt(o),i=i(o),n.flags|=1,We(e,n,i,r),n.child;case 14:return i=n.type,o=Rt(i,n.pendingProps),o=Rt(i.type,o),th(e,n,i,o,r);case 15:return Jg(e,n,n.type,n.pendingProps,r);case 17:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Rt(i,o),Ds(e,n),n.tag=1,nt(i)?(e=!0,aa(n)):e=!1,Jr(n,r),Yg(n,i,o),Fu(n,i,o,r),Iu(null,n,i,!0,e,r);case 19:return ry(e,n,r);case 22:return Zg(e,n,r)}throw Error(H(156,n.tag))};function xy(e,n){return qm(e,n)}function u_(e,n,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jt(e,n,r,i){return new u_(e,n,r,i)}function bf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function c_(e){if(typeof e=="function")return bf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Lc)return 11;if(e===Uc)return 14}return 2}function Xn(e,n){var r=e.alternate;return r===null?(r=jt(e.tag,n,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=n,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,n=e.dependencies,r.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Us(e,n,r,i,o,s){var a=2;if(i=e,typeof e=="function")bf(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Fr:return pr(r.children,o,s,n);case Ic:a=8,o|=8;break;case su:return e=jt(12,r,n,o|2),e.elementType=su,e.lanes=s,e;case au:return e=jt(13,r,n,o),e.elementType=au,e.lanes=s,e;case lu:return e=jt(19,r,n,o),e.elementType=lu,e.lanes=s,e;case Tm:return Qa(r,o,s,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Cm:a=10;break e;case Em:a=9;break e;case Lc:a=11;break e;case Uc:a=14;break e;case Mn:a=16,i=null;break e}throw Error(H(130,e==null?e:typeof e,""))}return n=jt(a,r,n,o),n.elementType=e,n.type=i,n.lanes=s,n}function pr(e,n,r,i){return e=jt(7,e,i,n),e.lanes=r,e}function Qa(e,n,r,i){return e=jt(22,e,i,n),e.elementType=Tm,e.lanes=r,e.stateNode={isHidden:!1},e}function Bl(e,n,r){return e=jt(6,e,null,n),e.lanes=r,e}function Hl(e,n,r){return n=jt(4,e.children!==null?e.children:[],e.key,n),n.lanes=r,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function f_(e,n,r,i,o){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=kl(0),this.expirationTimes=kl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=kl(0),this.identifierPrefix=i,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function kf(e,n,r,i,o,s,a,l,f){return e=new f_(e,n,r,l,f),n===1?(n=1,s===!0&&(n|=8)):n=0,s=jt(3,null,null,n),e.current=s,s.stateNode=e,s.memoizedState={element:i,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},sf(s),e}function d_(e,n,r){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ky)}catch(e){console.error(e)}}ky(),km.exports=mt;var y_=km.exports,mh=y_;iu.createRoot=mh.createRoot,iu.hydrateRoot=mh.hydrateRoot;/** + * @remix-run/router v1.23.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var n=1;n"u")throw new Error(n)}function jy(e,n){if(!e){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function x_(){return Math.random().toString(36).substr(2,8)}function yh(e,n){return{usr:e.state,key:e.key,idx:n}}function Ku(e,n,r,i){return r===void 0&&(r=null),Eo({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof n=="string"?vi(n):n,{state:r,key:n&&n.key||i||x_()})}function wa(e){let{pathname:n="/",search:r="",hash:i=""}=e;return r&&r!=="?"&&(n+=r.charAt(0)==="?"?r:"?"+r),i&&i!=="#"&&(n+=i.charAt(0)==="#"?i:"#"+i),n}function vi(e){let n={};if(e){let r=e.indexOf("#");r>=0&&(n.hash=e.substr(r),e=e.substr(0,r));let i=e.indexOf("?");i>=0&&(n.search=e.substr(i),e=e.substr(0,i)),e&&(n.pathname=e)}return n}function __(e,n,r,i){i===void 0&&(i={});let{window:o=document.defaultView,v5Compat:s=!1}=i,a=o.history,l=In.Pop,f=null,c=h();c==null&&(c=0,a.replaceState(Eo({},a.state,{idx:c}),""));function h(){return(a.state||{idx:null}).idx}function d(){l=In.Pop;let _=h(),m=_==null?null:_-c;c=_,f&&f({action:l,location:x.location,delta:m})}function p(_,m){l=In.Push;let v=Ku(x.location,_,m);c=h()+1;let w=yh(v,c),b=x.createHref(v);try{a.pushState(w,"",b)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;o.location.assign(b)}s&&f&&f({action:l,location:x.location,delta:1})}function y(_,m){l=In.Replace;let v=Ku(x.location,_,m);c=h();let w=yh(v,c),b=x.createHref(v);a.replaceState(w,"",b),s&&f&&f({action:l,location:x.location,delta:0})}function g(_){let m=o.location.origin!=="null"?o.location.origin:o.location.href,v=typeof _=="string"?_:wa(_);return v=v.replace(/ $/,"%20"),Ee(m,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,m)}let x={get action(){return l},get location(){return e(o,a)},listen(_){if(f)throw new Error("A history only accepts one active listener");return o.addEventListener(gh,d),f=_,()=>{o.removeEventListener(gh,d),f=null}},createHref(_){return n(o,_)},createURL:g,encodeLocation(_){let m=g(_);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:p,replace:y,go(_){return a.go(_)}};return x}var vh;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(vh||(vh={}));function w_(e,n,r){return r===void 0&&(r="/"),b_(e,n,r)}function b_(e,n,r,i){let o=typeof n=="string"?vi(n):n,s=Cf(o.pathname||"/",r);if(s==null)return null;let a=Sy(e);k_(a);let l=null;for(let f=0;l==null&&f{let f={relativePath:l===void 0?s.path||"":l,caseSensitive:s.caseSensitive===!0,childrenIndex:a,route:s};f.relativePath.startsWith("/")&&(Ee(f.relativePath.startsWith(i),'Absolute route path "'+f.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),f.relativePath=f.relativePath.slice(i.length));let c=Yn([i,f.relativePath]),h=r.concat(f);s.children&&s.children.length>0&&(Ee(s.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),Sy(s.children,n,h,c)),!(s.path==null&&!s.index)&&n.push({path:c,score:A_(c,s.index),routesMeta:h})};return e.forEach((s,a)=>{var l;if(s.path===""||!((l=s.path)!=null&&l.includes("?")))o(s,a);else for(let f of Ny(s.path))o(s,a,f)}),n}function Ny(e){let n=e.split("/");if(n.length===0)return[];let[r,...i]=n,o=r.endsWith("?"),s=r.replace(/\?$/,"");if(i.length===0)return o?[s,""]:[s];let a=Ny(i.join("/")),l=[];return l.push(...a.map(f=>f===""?s:[s,f].join("/"))),o&&l.push(...a),l.map(f=>e.startsWith("/")&&f===""?"/":f)}function k_(e){e.sort((n,r)=>n.score!==r.score?r.score-n.score:P_(n.routesMeta.map(i=>i.childrenIndex),r.routesMeta.map(i=>i.childrenIndex)))}const j_=/^:[\w-]+$/,S_=3,N_=2,C_=1,E_=10,T_=-2,xh=e=>e==="*";function A_(e,n){let r=e.split("/"),i=r.length;return r.some(xh)&&(i+=T_),n&&(i+=N_),r.filter(o=>!xh(o)).reduce((o,s)=>o+(j_.test(s)?S_:s===""?C_:E_),i)}function P_(e,n){return e.length===n.length&&e.slice(0,-1).every((i,o)=>i===n[o])?e[e.length-1]-n[n.length-1]:0}function R_(e,n,r){let{routesMeta:i}=e,o={},s="/",a=[];for(let l=0;l{let{paramName:p,isOptional:y}=h;if(p==="*"){let x=l[d]||"";a=s.slice(0,s.length-x.length).replace(/(.)\/+$/,"$1")}const g=l[d];return y&&!g?c[p]=void 0:c[p]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:s,pathnameBase:a,pattern:e}}function O_(e,n,r){n===void 0&&(n=!1),r===void 0&&(r=!0),jy(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let i=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,l,f)=>(i.push({paramName:l,isOptional:f!=null}),f?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(i.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,n?void 0:"i"),i]}function z_(e){try{return e.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return jy(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+n+").")),e}}function Cf(e,n){if(n==="/")return e;if(!e.toLowerCase().startsWith(n.toLowerCase()))return null;let r=n.endsWith("/")?n.length-1:n.length,i=e.charAt(r);return i&&i!=="/"?null:e.slice(r)||"/"}function F_(e,n){n===void 0&&(n="/");let{pathname:r,search:i="",hash:o=""}=typeof e=="string"?vi(e):e;return{pathname:r?r.startsWith("/")?r:$_(r,n):n,search:L_(i),hash:U_(o)}}function $_(e,n){let r=n.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function Vl(e,n,r,i){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+n+"` field ["+JSON.stringify(i)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function D_(e){return e.filter((n,r)=>r===0||n.route.path&&n.route.path.length>0)}function Cy(e,n){let r=D_(e);return n?r.map((i,o)=>o===r.length-1?i.pathname:i.pathnameBase):r.map(i=>i.pathnameBase)}function Ey(e,n,r,i){i===void 0&&(i=!1);let o;typeof e=="string"?o=vi(e):(o=Eo({},e),Ee(!o.pathname||!o.pathname.includes("?"),Vl("?","pathname","search",o)),Ee(!o.pathname||!o.pathname.includes("#"),Vl("#","pathname","hash",o)),Ee(!o.search||!o.search.includes("#"),Vl("#","search","hash",o)));let s=e===""||o.pathname==="",a=s?"/":o.pathname,l;if(a==null)l=r;else{let d=n.length-1;if(!i&&a.startsWith("..")){let p=a.split("/");for(;p[0]==="..";)p.shift(),d-=1;o.pathname=p.join("/")}l=d>=0?n[d]:"/"}let f=F_(o,l),c=a&&a!=="/"&&a.endsWith("/"),h=(s||a===".")&&r.endsWith("/");return!f.pathname.endsWith("/")&&(c||h)&&(f.pathname+="/"),f}const Yn=e=>e.join("/").replace(/\/\/+/g,"/"),I_=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),L_=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,U_=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function B_(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Ty=["post","put","patch","delete"];new Set(Ty);const H_=["get",...Ty];new Set(H_);/** + * React Router v6.30.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function To(){return To=Object.assign?Object.assign.bind():function(e){for(var n=1;n{l.current=!0}),E.useCallback(function(c,h){if(h===void 0&&(h={}),!l.current)return;if(typeof c=="number"){i.go(c);return}let d=Ey(c,JSON.parse(a),s,h.relative==="path");e==null&&n!=="/"&&(d.pathname=d.pathname==="/"?n:Yn([n,d.pathname])),(h.replace?i.replace:i.push)(d,h.state,h)},[n,i,a,s,e])}function Ry(e,n){let{relative:r}=n===void 0?{}:n,{future:i}=E.useContext(Er),{matches:o}=E.useContext(Tr),{pathname:s}=xi(),a=JSON.stringify(Cy(o,i.v7_relativeSplatPath));return E.useMemo(()=>Ey(e,JSON.parse(a),s,r==="path"),[e,a,s,r])}function G_(e,n){return X_(e,n)}function X_(e,n,r,i){Uo()||Ee(!1);let{navigator:o}=E.useContext(Er),{matches:s}=E.useContext(Tr),a=s[s.length-1],l=a?a.params:{};a&&a.pathname;let f=a?a.pathnameBase:"/";a&&a.route;let c=xi(),h;if(n){var d;let _=typeof n=="string"?vi(n):n;f==="/"||(d=_.pathname)!=null&&d.startsWith(f)||Ee(!1),h=_}else h=c;let p=h.pathname||"/",y=p;if(f!=="/"){let _=f.replace(/^\//,"").split("/");y="/"+p.replace(/^\//,"").split("/").slice(_.length).join("/")}let g=w_(e,{pathname:y}),x=Z_(g&&g.map(_=>Object.assign({},_,{params:Object.assign({},l,_.params),pathname:Yn([f,o.encodeLocation?o.encodeLocation(_.pathname).pathname:_.pathname]),pathnameBase:_.pathnameBase==="/"?f:Yn([f,o.encodeLocation?o.encodeLocation(_.pathnameBase).pathname:_.pathnameBase])})),s,r,i);return n&&x?E.createElement(tl.Provider,{value:{location:To({pathname:"/",search:"",hash:"",state:null,key:"default"},h),navigationType:In.Pop}},x):x}function Y_(){let e=rw(),n=B_(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return E.createElement(E.Fragment,null,E.createElement("h2",null,"Unexpected Application Error!"),E.createElement("h3",{style:{fontStyle:"italic"}},n),r?E.createElement("pre",{style:o},r):null,null)}const Q_=E.createElement(Y_,null);class K_ extends E.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,r){return r.location!==n.location||r.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:r.error,location:r.location,revalidation:n.revalidation||r.revalidation}}componentDidCatch(n,r){console.error("React Router caught the following error during render",n,r)}render(){return this.state.error!==void 0?E.createElement(Tr.Provider,{value:this.props.routeContext},E.createElement(Ay.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function J_(e){let{routeContext:n,match:r,children:i}=e,o=E.useContext(Ef);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),E.createElement(Tr.Provider,{value:n},i)}function Z_(e,n,r,i){var o;if(n===void 0&&(n=[]),r===void 0&&(r=null),i===void 0&&(i=null),e==null){var s;if(!r)return null;if(r.errors)e=r.matches;else if((s=i)!=null&&s.v7_partialHydration&&n.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let a=e,l=(o=r)==null?void 0:o.errors;if(l!=null){let h=a.findIndex(d=>d.route.id&&(l==null?void 0:l[d.route.id])!==void 0);h>=0||Ee(!1),a=a.slice(0,Math.min(a.length,h+1))}let f=!1,c=-1;if(r&&i&&i.v7_partialHydration)for(let h=0;h=0?a=a.slice(0,c+1):a=[a[0]];break}}}return a.reduceRight((h,d,p)=>{let y,g=!1,x=null,_=null;r&&(y=l&&d.route.id?l[d.route.id]:void 0,x=d.route.errorElement||Q_,f&&(c<0&&p===0?(ow("route-fallback"),g=!0,_=null):c===p&&(g=!0,_=d.route.hydrateFallbackElement||null)));let m=n.concat(a.slice(0,p+1)),v=()=>{let w;return y?w=x:g?w=_:d.route.Component?w=E.createElement(d.route.Component,null):d.route.element?w=d.route.element:w=h,E.createElement(J_,{match:d,routeContext:{outlet:h,matches:m,isDataRoute:r!=null},children:w})};return r&&(d.route.ErrorBoundary||d.route.errorElement||p===0)?E.createElement(K_,{location:r.location,revalidation:r.revalidation,component:x,error:y,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var My=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(My||{}),Oy=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Oy||{});function ew(e){let n=E.useContext(Ef);return n||Ee(!1),n}function tw(e){let n=E.useContext(V_);return n||Ee(!1),n}function nw(e){let n=E.useContext(Tr);return n||Ee(!1),n}function zy(e){let n=nw(),r=n.matches[n.matches.length-1];return r.route.id||Ee(!1),r.route.id}function rw(){var e;let n=E.useContext(Ay),r=tw(),i=zy();return n!==void 0?n:(e=r.errors)==null?void 0:e[i]}function iw(){let{router:e}=ew(My.UseNavigateStable),n=zy(Oy.UseNavigateStable),r=E.useRef(!1);return Py(()=>{r.current=!0}),E.useCallback(function(o,s){s===void 0&&(s={}),r.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,To({fromRouteId:n},s)))},[e,n])}const _h={};function ow(e,n,r){_h[e]||(_h[e]=!0)}function sw(e,n){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function xt(e){Ee(!1)}function aw(e){let{basename:n="/",children:r=null,location:i,navigationType:o=In.Pop,navigator:s,static:a=!1,future:l}=e;Uo()&&Ee(!1);let f=n.replace(/^\/*/,"/"),c=E.useMemo(()=>({basename:f,navigator:s,static:a,future:To({v7_relativeSplatPath:!1},l)}),[f,l,s,a]);typeof i=="string"&&(i=vi(i));let{pathname:h="/",search:d="",hash:p="",state:y=null,key:g="default"}=i,x=E.useMemo(()=>{let _=Cf(h,f);return _==null?null:{location:{pathname:_,search:d,hash:p,state:y,key:g},navigationType:o}},[f,h,d,p,y,g,o]);return x==null?null:E.createElement(Er.Provider,{value:c},E.createElement(tl.Provider,{children:r,value:x}))}function lw(e){let{children:n,location:r}=e;return G_(Ju(n),r)}new Promise(()=>{});function Ju(e,n){n===void 0&&(n=[]);let r=[];return E.Children.forEach(e,(i,o)=>{if(!E.isValidElement(i))return;let s=[...n,o];if(i.type===E.Fragment){r.push.apply(r,Ju(i.props.children,s));return}i.type!==xt&&Ee(!1),!i.props.index||!i.props.children||Ee(!1);let a={id:i.props.id||s.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(a.children=Ju(i.props.children,s)),r.push(a)}),r}/** + * React Router DOM v6.30.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Zu(){return Zu=Object.assign?Object.assign.bind():function(e){for(var n=1;n=0)&&(r[o]=e[o]);return r}function cw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function fw(e,n){return e.button===0&&(!n||n==="_self")&&!cw(e)}function ec(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((n,r)=>{let i=e[r];return n.concat(Array.isArray(i)?i.map(o=>[r,o]):[[r,i]])},[]))}function dw(e,n){let r=ec(e);return n&&n.forEach((i,o)=>{r.has(o)||n.getAll(o).forEach(s=>{r.append(o,s)})}),r}const hw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],pw="6";try{window.__reactRouterVersion=pw}catch{}const mw="startTransition",wh=sx[mw];function gw(e){let{basename:n,children:r,future:i,window:o}=e,s=E.useRef();s.current==null&&(s.current=v_({window:o,v5Compat:!0}));let a=s.current,[l,f]=E.useState({action:a.action,location:a.location}),{v7_startTransition:c}=i||{},h=E.useCallback(d=>{c&&wh?wh(()=>f(d)):f(d)},[f,c]);return E.useLayoutEffect(()=>a.listen(h),[a,h]),E.useEffect(()=>sw(i),[i]),E.createElement(aw,{basename:n,children:r,location:l.location,navigationType:l.action,navigator:a,future:i})}const yw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",vw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Pe=E.forwardRef(function(n,r){let{onClick:i,relative:o,reloadDocument:s,replace:a,state:l,target:f,to:c,preventScrollReset:h,viewTransition:d}=n,p=uw(n,hw),{basename:y}=E.useContext(Er),g,x=!1;if(typeof c=="string"&&vw.test(c)&&(g=c,yw))try{let w=new URL(window.location.href),b=c.startsWith("//")?new URL(w.protocol+c):new URL(c),k=Cf(b.pathname,y);b.origin===w.origin&&k!=null?c=k+b.search+b.hash:x=!0}catch{}let _=W_(c,{relative:o}),m=xw(c,{replace:a,state:l,target:f,preventScrollReset:h,relative:o,viewTransition:d});function v(w){i&&i(w),w.defaultPrevented||m(w)}return E.createElement("a",Zu({},p,{href:g||_,onClick:x||s?i:v,ref:r,target:f}))});var bh;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(bh||(bh={}));var kh;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(kh||(kh={}));function xw(e,n){let{target:r,replace:i,state:o,preventScrollReset:s,relative:a,viewTransition:l}=n===void 0?{}:n,f=nl(),c=xi(),h=Ry(e,{relative:a});return E.useCallback(d=>{if(fw(d,r)){d.preventDefault();let p=i!==void 0?i:wa(c)===wa(h);f(e,{replace:p,state:o,preventScrollReset:s,relative:a,viewTransition:l})}},[c,f,h,i,o,r,e,s,a,l])}function Fy(e){let n=E.useRef(ec(e)),r=E.useRef(!1),i=xi(),o=E.useMemo(()=>dw(i.search,r.current?null:n.current),[i.search]),s=nl(),a=E.useCallback((l,f)=>{const c=ec(typeof l=="function"?l(o):l);r.current=!0,s("?"+c,f)},[s,o]);return[o,a]}/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var _w={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"};/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ww=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),xe=(e,n)=>{const r=E.forwardRef(({color:i="currentColor",size:o=24,strokeWidth:s=2,absoluteStrokeWidth:a,className:l="",children:f,...c},h)=>E.createElement("svg",{ref:h,..._w,width:o,height:o,stroke:i,strokeWidth:a?Number(s)*24/Number(o):s,className:["lucide",`lucide-${ww(e)}`,l].join(" "),...c},[...n.map(([d,p])=>E.createElement(d,p)),...Array.isArray(f)?f:[f]]));return r.displayName=`${e}`,r};/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bw=xe("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $y=xe("BarChart3",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kw=xe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tf=xe("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jw=xe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sw=xe("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nw=xe("FileDown",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Cw=xe("FileSearch",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v3",key:"am10z3"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M5 17a3 3 0 1 0 0-6 3 3 0 0 0 0 6z",key:"ychnub"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ew=xe("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tw=xe("Home",[["path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"y5dka4"}],["polyline",{points:"9 22 9 12 15 12 15 22",key:"e2us08"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Aw=xe("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Pw=xe("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dy=xe("Loader2",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Rw=xe("Loader",[["line",{x1:"12",x2:"12",y1:"2",y2:"6",key:"gza1u7"}],["line",{x1:"12",x2:"12",y1:"18",y2:"22",key:"1qhbu9"}],["line",{x1:"4.93",x2:"7.76",y1:"4.93",y2:"7.76",key:"xae44r"}],["line",{x1:"16.24",x2:"19.07",y1:"16.24",y2:"19.07",key:"bxnmvf"}],["line",{x1:"2",x2:"6",y1:"12",y2:"12",key:"89khin"}],["line",{x1:"18",x2:"22",y1:"12",y2:"12",key:"pb8tfm"}],["line",{x1:"4.93",x2:"7.76",y1:"19.07",y2:"16.24",key:"1uxjnu"}],["line",{x1:"16.24",x2:"19.07",y1:"7.76",y2:"4.93",key:"6duxfx"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mw=xe("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ow=xe("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jh=xe("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zw=xe("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Fw=xe("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $w=xe("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iy=xe("Triangle",[["path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"14u9p9"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dw=xe("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** + * @license lucide-react v0.303.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iw=xe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function Ly(e,n){return function(){return e.apply(n,arguments)}}const{toString:Lw}=Object.prototype,{getPrototypeOf:Af}=Object,{iterator:rl,toStringTag:Uy}=Symbol,il=(e=>n=>{const r=Lw.call(n);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Ut=e=>(e=e.toLowerCase(),n=>il(n)===e),ol=e=>n=>typeof n===e,{isArray:_i}=Array,ci=ol("undefined");function Bo(e){return e!==null&&!ci(e)&&e.constructor!==null&&!ci(e.constructor)&&it(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const By=Ut("ArrayBuffer");function Uw(e){let n;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?n=ArrayBuffer.isView(e):n=e&&e.buffer&&By(e.buffer),n}const Bw=ol("string"),it=ol("function"),Hy=ol("number"),Ho=e=>e!==null&&typeof e=="object",Hw=e=>e===!0||e===!1,Bs=e=>{if(il(e)!=="object")return!1;const n=Af(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Uy in e)&&!(rl in e)},Vw=e=>{if(!Ho(e)||Bo(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Ww=Ut("Date"),qw=Ut("File"),Gw=Ut("Blob"),Xw=Ut("FileList"),Yw=e=>Ho(e)&&it(e.pipe),Qw=e=>{let n;return e&&(typeof FormData=="function"&&e instanceof FormData||it(e.append)&&((n=il(e))==="formdata"||n==="object"&&it(e.toString)&&e.toString()==="[object FormData]"))},Kw=Ut("URLSearchParams"),[Jw,Zw,e2,t2]=["ReadableStream","Request","Response","Headers"].map(Ut),n2=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Vo(e,n,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let i,o;if(typeof e!="object"&&(e=[e]),_i(e))for(i=0,o=e.length;i0;)if(o=r[i],n===o.toLowerCase())return o;return null}const fr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Wy=e=>!ci(e)&&e!==fr;function tc(){const{caseless:e,skipUndefined:n}=Wy(this)&&this||{},r={},i=(o,s)=>{const a=e&&Vy(r,s)||s;Bs(r[a])&&Bs(o)?r[a]=tc(r[a],o):Bs(o)?r[a]=tc({},o):_i(o)?r[a]=o.slice():(!n||!ci(o))&&(r[a]=o)};for(let o=0,s=arguments.length;o(Vo(n,(o,s)=>{r&&it(o)?e[s]=Ly(o,r):e[s]=o},{allOwnKeys:i}),e),i2=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),o2=(e,n,r,i)=>{e.prototype=Object.create(n.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:n.prototype}),r&&Object.assign(e.prototype,r)},s2=(e,n,r,i)=>{let o,s,a;const l={};if(n=n||{},e==null)return n;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)a=o[s],(!i||i(a,e,n))&&!l[a]&&(n[a]=e[a],l[a]=!0);e=r!==!1&&Af(e)}while(e&&(!r||r(e,n))&&e!==Object.prototype);return n},a2=(e,n,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=n.length;const i=e.indexOf(n,r);return i!==-1&&i===r},l2=e=>{if(!e)return null;if(_i(e))return e;let n=e.length;if(!Hy(n))return null;const r=new Array(n);for(;n-- >0;)r[n]=e[n];return r},u2=(e=>n=>e&&n instanceof e)(typeof Uint8Array<"u"&&Af(Uint8Array)),c2=(e,n)=>{const i=(e&&e[rl]).call(e);let o;for(;(o=i.next())&&!o.done;){const s=o.value;n.call(e,s[0],s[1])}},f2=(e,n)=>{let r;const i=[];for(;(r=e.exec(n))!==null;)i.push(r);return i},d2=Ut("HTMLFormElement"),h2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,i,o){return i.toUpperCase()+o}),Sh=(({hasOwnProperty:e})=>(n,r)=>e.call(n,r))(Object.prototype),p2=Ut("RegExp"),qy=(e,n)=>{const r=Object.getOwnPropertyDescriptors(e),i={};Vo(r,(o,s)=>{let a;(a=n(o,s,e))!==!1&&(i[s]=a||o)}),Object.defineProperties(e,i)},m2=e=>{qy(e,(n,r)=>{if(it(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const i=e[r];if(it(i)){if(n.enumerable=!1,"writable"in n){n.writable=!1;return}n.set||(n.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},g2=(e,n)=>{const r={},i=o=>{o.forEach(s=>{r[s]=!0})};return _i(e)?i(e):i(String(e).split(n)),r},y2=()=>{},v2=(e,n)=>e!=null&&Number.isFinite(e=+e)?e:n;function x2(e){return!!(e&&it(e.append)&&e[Uy]==="FormData"&&e[rl])}const _2=e=>{const n=new Array(10),r=(i,o)=>{if(Ho(i)){if(n.indexOf(i)>=0)return;if(Bo(i))return i;if(!("toJSON"in i)){n[o]=i;const s=_i(i)?[]:{};return Vo(i,(a,l)=>{const f=r(a,o+1);!ci(f)&&(s[l]=f)}),n[o]=void 0,s}}return i};return r(e,0)},w2=Ut("AsyncFunction"),b2=e=>e&&(Ho(e)||it(e))&&it(e.then)&&it(e.catch),Gy=((e,n)=>e?setImmediate:n?((r,i)=>(fr.addEventListener("message",({source:o,data:s})=>{o===fr&&s===r&&i.length&&i.shift()()},!1),o=>{i.push(o),fr.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",it(fr.postMessage)),k2=typeof queueMicrotask<"u"?queueMicrotask.bind(fr):typeof process<"u"&&process.nextTick||Gy,j2=e=>e!=null&&it(e[rl]),I={isArray:_i,isArrayBuffer:By,isBuffer:Bo,isFormData:Qw,isArrayBufferView:Uw,isString:Bw,isNumber:Hy,isBoolean:Hw,isObject:Ho,isPlainObject:Bs,isEmptyObject:Vw,isReadableStream:Jw,isRequest:Zw,isResponse:e2,isHeaders:t2,isUndefined:ci,isDate:Ww,isFile:qw,isBlob:Gw,isRegExp:p2,isFunction:it,isStream:Yw,isURLSearchParams:Kw,isTypedArray:u2,isFileList:Xw,forEach:Vo,merge:tc,extend:r2,trim:n2,stripBOM:i2,inherits:o2,toFlatObject:s2,kindOf:il,kindOfTest:Ut,endsWith:a2,toArray:l2,forEachEntry:c2,matchAll:f2,isHTMLForm:d2,hasOwnProperty:Sh,hasOwnProp:Sh,reduceDescriptors:qy,freezeMethods:m2,toObjectSet:g2,toCamelCase:h2,noop:y2,toFiniteNumber:v2,findKey:Vy,global:fr,isContextDefined:Wy,isSpecCompliantForm:x2,toJSONObject:_2,isAsyncFn:w2,isThenable:b2,setImmediate:Gy,asap:k2,isIterable:j2};function Z(e,n,r,i,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",n&&(this.code=n),r&&(this.config=r),i&&(this.request=i),o&&(this.response=o,this.status=o.status?o.status:null)}I.inherits(Z,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:I.toJSONObject(this.config),code:this.code,status:this.status}}});const Xy=Z.prototype,Yy={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Yy[e]={value:e}});Object.defineProperties(Z,Yy);Object.defineProperty(Xy,"isAxiosError",{value:!0});Z.from=(e,n,r,i,o,s)=>{const a=Object.create(Xy);I.toFlatObject(e,a,function(h){return h!==Error.prototype},c=>c!=="isAxiosError");const l=e&&e.message?e.message:"Error",f=n==null&&e?e.code:n;return Z.call(a,l,f,r,i,o),e&&a.cause==null&&Object.defineProperty(a,"cause",{value:e,configurable:!0}),a.name=e&&e.name||"Error",s&&Object.assign(a,s),a};const S2=null;function nc(e){return I.isPlainObject(e)||I.isArray(e)}function Qy(e){return I.endsWith(e,"[]")?e.slice(0,-2):e}function Nh(e,n,r){return e?e.concat(n).map(function(o,s){return o=Qy(o),!r&&s?"["+o+"]":o}).join(r?".":""):n}function N2(e){return I.isArray(e)&&!e.some(nc)}const C2=I.toFlatObject(I,{},null,function(n){return/^is[A-Z]/.test(n)});function sl(e,n,r){if(!I.isObject(e))throw new TypeError("target must be an object");n=n||new FormData,r=I.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(x,_){return!I.isUndefined(_[x])});const i=r.metaTokens,o=r.visitor||h,s=r.dots,a=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&I.isSpecCompliantForm(n);if(!I.isFunction(o))throw new TypeError("visitor must be a function");function c(g){if(g===null)return"";if(I.isDate(g))return g.toISOString();if(I.isBoolean(g))return g.toString();if(!f&&I.isBlob(g))throw new Z("Blob is not supported. Use a Buffer instead.");return I.isArrayBuffer(g)||I.isTypedArray(g)?f&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function h(g,x,_){let m=g;if(g&&!_&&typeof g=="object"){if(I.endsWith(x,"{}"))x=i?x:x.slice(0,-2),g=JSON.stringify(g);else if(I.isArray(g)&&N2(g)||(I.isFileList(g)||I.endsWith(x,"[]"))&&(m=I.toArray(g)))return x=Qy(x),m.forEach(function(w,b){!(I.isUndefined(w)||w===null)&&n.append(a===!0?Nh([x],b,s):a===null?x:x+"[]",c(w))}),!1}return nc(g)?!0:(n.append(Nh(_,x,s),c(g)),!1)}const d=[],p=Object.assign(C2,{defaultVisitor:h,convertValue:c,isVisitable:nc});function y(g,x){if(!I.isUndefined(g)){if(d.indexOf(g)!==-1)throw Error("Circular reference detected in "+x.join("."));d.push(g),I.forEach(g,function(m,v){(!(I.isUndefined(m)||m===null)&&o.call(n,m,I.isString(v)?v.trim():v,x,p))===!0&&y(m,x?x.concat(v):[v])}),d.pop()}}if(!I.isObject(e))throw new TypeError("data must be an object");return y(e),n}function Ch(e){const n={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(i){return n[i]})}function Pf(e,n){this._pairs=[],e&&sl(e,this,n)}const Ky=Pf.prototype;Ky.append=function(n,r){this._pairs.push([n,r])};Ky.toString=function(n){const r=n?function(i){return n.call(this,i,Ch)}:Ch;return this._pairs.map(function(o){return r(o[0])+"="+r(o[1])},"").join("&")};function E2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Jy(e,n,r){if(!n)return e;const i=r&&r.encode||E2;I.isFunction(r)&&(r={serialize:r});const o=r&&r.serialize;let s;if(o?s=o(n,r):s=I.isURLSearchParams(n)?n.toString():new Pf(n,r).toString(i),s){const a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class Eh{constructor(){this.handlers=[]}use(n,r,i){return this.handlers.push({fulfilled:n,rejected:r,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(n){this.handlers[n]&&(this.handlers[n]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(n){I.forEach(this.handlers,function(i){i!==null&&n(i)})}}const Zy={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},T2=typeof URLSearchParams<"u"?URLSearchParams:Pf,A2=typeof FormData<"u"?FormData:null,P2=typeof Blob<"u"?Blob:null,R2={isBrowser:!0,classes:{URLSearchParams:T2,FormData:A2,Blob:P2},protocols:["http","https","file","blob","url","data"]},Rf=typeof window<"u"&&typeof document<"u",rc=typeof navigator=="object"&&navigator||void 0,M2=Rf&&(!rc||["ReactNative","NativeScript","NS"].indexOf(rc.product)<0),O2=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",z2=Rf&&window.location.href||"http://localhost",F2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Rf,hasStandardBrowserEnv:M2,hasStandardBrowserWebWorkerEnv:O2,navigator:rc,origin:z2},Symbol.toStringTag,{value:"Module"})),He={...F2,...R2};function $2(e,n){return sl(e,new He.classes.URLSearchParams,{visitor:function(r,i,o,s){return He.isNode&&I.isBuffer(r)?(this.append(i,r.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...n})}function D2(e){return I.matchAll(/\w+|\[(\w*)]/g,e).map(n=>n[0]==="[]"?"":n[1]||n[0])}function I2(e){const n={},r=Object.keys(e);let i;const o=r.length;let s;for(i=0;i=r.length;return a=!a&&I.isArray(o)?o.length:a,f?(I.hasOwnProp(o,a)?o[a]=[o[a],i]:o[a]=i,!l):((!o[a]||!I.isObject(o[a]))&&(o[a]=[]),n(r,i,o[a],s)&&I.isArray(o[a])&&(o[a]=I2(o[a])),!l)}if(I.isFormData(e)&&I.isFunction(e.entries)){const r={};return I.forEachEntry(e,(i,o)=>{n(D2(i),o,r,0)}),r}return null}function L2(e,n,r){if(I.isString(e))try{return(n||JSON.parse)(e),I.trim(e)}catch(i){if(i.name!=="SyntaxError")throw i}return(r||JSON.stringify)(e)}const Wo={transitional:Zy,adapter:["xhr","http","fetch"],transformRequest:[function(n,r){const i=r.getContentType()||"",o=i.indexOf("application/json")>-1,s=I.isObject(n);if(s&&I.isHTMLForm(n)&&(n=new FormData(n)),I.isFormData(n))return o?JSON.stringify(e0(n)):n;if(I.isArrayBuffer(n)||I.isBuffer(n)||I.isStream(n)||I.isFile(n)||I.isBlob(n)||I.isReadableStream(n))return n;if(I.isArrayBufferView(n))return n.buffer;if(I.isURLSearchParams(n))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),n.toString();let l;if(s){if(i.indexOf("application/x-www-form-urlencoded")>-1)return $2(n,this.formSerializer).toString();if((l=I.isFileList(n))||i.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return sl(l?{"files[]":n}:n,f&&new f,this.formSerializer)}}return s||o?(r.setContentType("application/json",!1),L2(n)):n}],transformResponse:[function(n){const r=this.transitional||Wo.transitional,i=r&&r.forcedJSONParsing,o=this.responseType==="json";if(I.isResponse(n)||I.isReadableStream(n))return n;if(n&&I.isString(n)&&(i&&!this.responseType||o)){const a=!(r&&r.silentJSONParsing)&&o;try{return JSON.parse(n,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Z.from(l,Z.ERR_BAD_RESPONSE,this,null,this.response):l}}return n}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:He.classes.FormData,Blob:He.classes.Blob},validateStatus:function(n){return n>=200&&n<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};I.forEach(["delete","get","head","post","put","patch"],e=>{Wo.headers[e]={}});const U2=I.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),B2=e=>{const n={};let r,i,o;return e&&e.split(` +`).forEach(function(a){o=a.indexOf(":"),r=a.substring(0,o).trim().toLowerCase(),i=a.substring(o+1).trim(),!(!r||n[r]&&U2[r])&&(r==="set-cookie"?n[r]?n[r].push(i):n[r]=[i]:n[r]=n[r]?n[r]+", "+i:i)}),n},Th=Symbol("internals");function Ri(e){return e&&String(e).trim().toLowerCase()}function Hs(e){return e===!1||e==null?e:I.isArray(e)?e.map(Hs):String(e)}function H2(e){const n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)n[i[1]]=i[2];return n}const V2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Wl(e,n,r,i,o){if(I.isFunction(i))return i.call(this,n,r);if(o&&(n=r),!!I.isString(n)){if(I.isString(i))return n.indexOf(i)!==-1;if(I.isRegExp(i))return i.test(n)}}function W2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(n,r,i)=>r.toUpperCase()+i)}function q2(e,n){const r=I.toCamelCase(" "+n);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+r,{value:function(o,s,a){return this[i].call(this,n,o,s,a)},configurable:!0})})}let ot=class{constructor(n){n&&this.set(n)}set(n,r,i){const o=this;function s(l,f,c){const h=Ri(f);if(!h)throw new Error("header name must be a non-empty string");const d=I.findKey(o,h);(!d||o[d]===void 0||c===!0||c===void 0&&o[d]!==!1)&&(o[d||f]=Hs(l))}const a=(l,f)=>I.forEach(l,(c,h)=>s(c,h,f));if(I.isPlainObject(n)||n instanceof this.constructor)a(n,r);else if(I.isString(n)&&(n=n.trim())&&!V2(n))a(B2(n),r);else if(I.isObject(n)&&I.isIterable(n)){let l={},f,c;for(const h of n){if(!I.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[c=h[0]]=(f=l[c])?I.isArray(f)?[...f,h[1]]:[f,h[1]]:h[1]}a(l,r)}else n!=null&&s(r,n,i);return this}get(n,r){if(n=Ri(n),n){const i=I.findKey(this,n);if(i){const o=this[i];if(!r)return o;if(r===!0)return H2(o);if(I.isFunction(r))return r.call(this,o,i);if(I.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(n,r){if(n=Ri(n),n){const i=I.findKey(this,n);return!!(i&&this[i]!==void 0&&(!r||Wl(this,this[i],i,r)))}return!1}delete(n,r){const i=this;let o=!1;function s(a){if(a=Ri(a),a){const l=I.findKey(i,a);l&&(!r||Wl(i,i[l],l,r))&&(delete i[l],o=!0)}}return I.isArray(n)?n.forEach(s):s(n),o}clear(n){const r=Object.keys(this);let i=r.length,o=!1;for(;i--;){const s=r[i];(!n||Wl(this,this[s],s,n,!0))&&(delete this[s],o=!0)}return o}normalize(n){const r=this,i={};return I.forEach(this,(o,s)=>{const a=I.findKey(i,s);if(a){r[a]=Hs(o),delete r[s];return}const l=n?W2(s):String(s).trim();l!==s&&delete r[s],r[l]=Hs(o),i[l]=!0}),this}concat(...n){return this.constructor.concat(this,...n)}toJSON(n){const r=Object.create(null);return I.forEach(this,(i,o)=>{i!=null&&i!==!1&&(r[o]=n&&I.isArray(i)?i.join(", "):i)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([n,r])=>n+": "+r).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(n){return n instanceof this?n:new this(n)}static concat(n,...r){const i=new this(n);return r.forEach(o=>i.set(o)),i}static accessor(n){const i=(this[Th]=this[Th]={accessors:{}}).accessors,o=this.prototype;function s(a){const l=Ri(a);i[l]||(q2(o,a),i[l]=!0)}return I.isArray(n)?n.forEach(s):s(n),this}};ot.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);I.reduceDescriptors(ot.prototype,({value:e},n)=>{let r=n[0].toUpperCase()+n.slice(1);return{get:()=>e,set(i){this[r]=i}}});I.freezeMethods(ot);function ql(e,n){const r=this||Wo,i=n||r,o=ot.from(i.headers);let s=i.data;return I.forEach(e,function(l){s=l.call(r,s,o.normalize(),n?n.status:void 0)}),o.normalize(),s}function t0(e){return!!(e&&e.__CANCEL__)}function wi(e,n,r){Z.call(this,e??"canceled",Z.ERR_CANCELED,n,r),this.name="CanceledError"}I.inherits(wi,Z,{__CANCEL__:!0});function n0(e,n,r){const i=r.config.validateStatus;!r.status||!i||i(r.status)?e(r):n(new Z("Request failed with status code "+r.status,[Z.ERR_BAD_REQUEST,Z.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function G2(e){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return n&&n[1]||""}function X2(e,n){e=e||10;const r=new Array(e),i=new Array(e);let o=0,s=0,a;return n=n!==void 0?n:1e3,function(f){const c=Date.now(),h=i[s];a||(a=c),r[o]=f,i[o]=c;let d=s,p=0;for(;d!==o;)p+=r[d++],d=d%e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),c-a{r=h,o=null,s&&(clearTimeout(s),s=null),e(...c)};return[(...c)=>{const h=Date.now(),d=h-r;d>=i?a(c,h):(o=c,s||(s=setTimeout(()=>{s=null,a(o)},i-d)))},()=>o&&a(o)]}const ba=(e,n,r=3)=>{let i=0;const o=X2(50,250);return Y2(s=>{const a=s.loaded,l=s.lengthComputable?s.total:void 0,f=a-i,c=o(f),h=a<=l;i=a;const d={loaded:a,total:l,progress:l?a/l:void 0,bytes:f,rate:c||void 0,estimated:c&&l&&h?(l-a)/c:void 0,event:s,lengthComputable:l!=null,[n?"download":"upload"]:!0};e(d)},r)},Ah=(e,n)=>{const r=e!=null;return[i=>n[0]({lengthComputable:r,total:e,loaded:i}),n[1]]},Ph=e=>(...n)=>I.asap(()=>e(...n)),Q2=He.hasStandardBrowserEnv?((e,n)=>r=>(r=new URL(r,He.origin),e.protocol===r.protocol&&e.host===r.host&&(n||e.port===r.port)))(new URL(He.origin),He.navigator&&/(msie|trident)/i.test(He.navigator.userAgent)):()=>!0,K2=He.hasStandardBrowserEnv?{write(e,n,r,i,o,s,a){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(n)}`];I.isNumber(r)&&l.push(`expires=${new Date(r).toUTCString()}`),I.isString(i)&&l.push(`path=${i}`),I.isString(o)&&l.push(`domain=${o}`),s===!0&&l.push("secure"),I.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return n?decodeURIComponent(n[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function J2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Z2(e,n){return n?e.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):e}function r0(e,n,r){let i=!J2(n);return e&&(i||r==!1)?Z2(e,n):n}const Rh=e=>e instanceof ot?{...e}:e;function kr(e,n){n=n||{};const r={};function i(c,h,d,p){return I.isPlainObject(c)&&I.isPlainObject(h)?I.merge.call({caseless:p},c,h):I.isPlainObject(h)?I.merge({},h):I.isArray(h)?h.slice():h}function o(c,h,d,p){if(I.isUndefined(h)){if(!I.isUndefined(c))return i(void 0,c,d,p)}else return i(c,h,d,p)}function s(c,h){if(!I.isUndefined(h))return i(void 0,h)}function a(c,h){if(I.isUndefined(h)){if(!I.isUndefined(c))return i(void 0,c)}else return i(void 0,h)}function l(c,h,d){if(d in n)return i(c,h);if(d in e)return i(void 0,c)}const f={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(c,h,d)=>o(Rh(c),Rh(h),d,!0)};return I.forEach(Object.keys({...e,...n}),function(h){const d=f[h]||o,p=d(e[h],n[h],h);I.isUndefined(p)&&d!==l||(r[h]=p)}),r}const i0=e=>{const n=kr({},e);let{data:r,withXSRFToken:i,xsrfHeaderName:o,xsrfCookieName:s,headers:a,auth:l}=n;if(n.headers=a=ot.from(a),n.url=Jy(r0(n.baseURL,n.url,n.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),I.isFormData(r)){if(He.hasStandardBrowserEnv||He.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(I.isFunction(r.getHeaders)){const f=r.getHeaders(),c=["content-type","content-length"];Object.entries(f).forEach(([h,d])=>{c.includes(h.toLowerCase())&&a.set(h,d)})}}if(He.hasStandardBrowserEnv&&(i&&I.isFunction(i)&&(i=i(n)),i||i!==!1&&Q2(n.url))){const f=o&&s&&K2.read(s);f&&a.set(o,f)}return n},eb=typeof XMLHttpRequest<"u",tb=eb&&function(e){return new Promise(function(r,i){const o=i0(e);let s=o.data;const a=ot.from(o.headers).normalize();let{responseType:l,onUploadProgress:f,onDownloadProgress:c}=o,h,d,p,y,g;function x(){y&&y(),g&&g(),o.cancelToken&&o.cancelToken.unsubscribe(h),o.signal&&o.signal.removeEventListener("abort",h)}let _=new XMLHttpRequest;_.open(o.method.toUpperCase(),o.url,!0),_.timeout=o.timeout;function m(){if(!_)return;const w=ot.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),k={data:!l||l==="text"||l==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:w,config:e,request:_};n0(function(C){r(C),x()},function(C){i(C),x()},k),_=null}"onloadend"in _?_.onloadend=m:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(m)},_.onabort=function(){_&&(i(new Z("Request aborted",Z.ECONNABORTED,e,_)),_=null)},_.onerror=function(b){const k=b&&b.message?b.message:"Network Error",j=new Z(k,Z.ERR_NETWORK,e,_);j.event=b||null,i(j),_=null},_.ontimeout=function(){let b=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const k=o.transitional||Zy;o.timeoutErrorMessage&&(b=o.timeoutErrorMessage),i(new Z(b,k.clarifyTimeoutError?Z.ETIMEDOUT:Z.ECONNABORTED,e,_)),_=null},s===void 0&&a.setContentType(null),"setRequestHeader"in _&&I.forEach(a.toJSON(),function(b,k){_.setRequestHeader(k,b)}),I.isUndefined(o.withCredentials)||(_.withCredentials=!!o.withCredentials),l&&l!=="json"&&(_.responseType=o.responseType),c&&([p,g]=ba(c,!0),_.addEventListener("progress",p)),f&&_.upload&&([d,y]=ba(f),_.upload.addEventListener("progress",d),_.upload.addEventListener("loadend",y)),(o.cancelToken||o.signal)&&(h=w=>{_&&(i(!w||w.type?new wi(null,e,_):w),_.abort(),_=null)},o.cancelToken&&o.cancelToken.subscribe(h),o.signal&&(o.signal.aborted?h():o.signal.addEventListener("abort",h)));const v=G2(o.url);if(v&&He.protocols.indexOf(v)===-1){i(new Z("Unsupported protocol "+v+":",Z.ERR_BAD_REQUEST,e));return}_.send(s||null)})},nb=(e,n)=>{const{length:r}=e=e?e.filter(Boolean):[];if(n||r){let i=new AbortController,o;const s=function(c){if(!o){o=!0,l();const h=c instanceof Error?c:this.reason;i.abort(h instanceof Z?h:new wi(h instanceof Error?h.message:h))}};let a=n&&setTimeout(()=>{a=null,s(new Z(`timeout ${n} of ms exceeded`,Z.ETIMEDOUT))},n);const l=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(s):c.removeEventListener("abort",s)}),e=null)};e.forEach(c=>c.addEventListener("abort",s));const{signal:f}=i;return f.unsubscribe=()=>I.asap(l),f}},rb=function*(e,n){let r=e.byteLength;if(r{const o=ib(e,n);let s=0,a,l=f=>{a||(a=!0,i&&i(f))};return new ReadableStream({async pull(f){try{const{done:c,value:h}=await o.next();if(c){l(),f.close();return}let d=h.byteLength;if(r){let p=s+=d;r(p)}f.enqueue(new Uint8Array(h))}catch(c){throw l(c),c}},cancel(f){return l(f),o.return()}},{highWaterMark:2})},Oh=64*1024,{isFunction:xs}=I,sb=(({Request:e,Response:n})=>({Request:e,Response:n}))(I.global),{ReadableStream:zh,TextEncoder:Fh}=I.global,$h=(e,...n)=>{try{return!!e(...n)}catch{return!1}},ab=e=>{e=I.merge.call({skipUndefined:!0},sb,e);const{fetch:n,Request:r,Response:i}=e,o=n?xs(n):typeof fetch=="function",s=xs(r),a=xs(i);if(!o)return!1;const l=o&&xs(zh),f=o&&(typeof Fh=="function"?(g=>x=>g.encode(x))(new Fh):async g=>new Uint8Array(await new r(g).arrayBuffer())),c=s&&l&&$h(()=>{let g=!1;const x=new r(He.origin,{body:new zh,method:"POST",get duplex(){return g=!0,"half"}}).headers.has("Content-Type");return g&&!x}),h=a&&l&&$h(()=>I.isReadableStream(new i("").body)),d={stream:h&&(g=>g.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(g=>{!d[g]&&(d[g]=(x,_)=>{let m=x&&x[g];if(m)return m.call(x);throw new Z(`Response type '${g}' is not supported`,Z.ERR_NOT_SUPPORT,_)})});const p=async g=>{if(g==null)return 0;if(I.isBlob(g))return g.size;if(I.isSpecCompliantForm(g))return(await new r(He.origin,{method:"POST",body:g}).arrayBuffer()).byteLength;if(I.isArrayBufferView(g)||I.isArrayBuffer(g))return g.byteLength;if(I.isURLSearchParams(g)&&(g=g+""),I.isString(g))return(await f(g)).byteLength},y=async(g,x)=>{const _=I.toFiniteNumber(g.getContentLength());return _??p(x)};return async g=>{let{url:x,method:_,data:m,signal:v,cancelToken:w,timeout:b,onDownloadProgress:k,onUploadProgress:j,responseType:C,headers:T,withCredentials:F="same-origin",fetchOptions:A}=i0(g),O=n||fetch;C=C?(C+"").toLowerCase():"text";let N=nb([v,w&&w.toAbortSignal()],b),P=null;const S=N&&N.unsubscribe&&(()=>{N.unsubscribe()});let L;try{if(j&&c&&_!=="get"&&_!=="head"&&(L=await y(T,m))!==0){let q=new r(x,{method:"POST",body:m,duplex:"half"}),X;if(I.isFormData(m)&&(X=q.headers.get("content-type"))&&T.setContentType(X),q.body){const[ne,ee]=Ah(L,ba(Ph(j)));m=Mh(q.body,Oh,ne,ee)}}I.isString(F)||(F=F?"include":"omit");const R=s&&"credentials"in r.prototype,B={...A,signal:N,method:_.toUpperCase(),headers:T.normalize().toJSON(),body:m,duplex:"half",credentials:R?F:void 0};P=s&&new r(x,B);let D=await(s?O(P,A):O(x,B));const z=h&&(C==="stream"||C==="response");if(h&&(k||z&&S)){const q={};["status","statusText","headers"].forEach(_e=>{q[_e]=D[_e]});const X=I.toFiniteNumber(D.headers.get("content-length")),[ne,ee]=k&&Ah(X,ba(Ph(k),!0))||[];D=new i(Mh(D.body,Oh,ne,()=>{ee&&ee(),S&&S()}),q)}C=C||"text";let U=await d[I.findKey(d,C)||"text"](D,g);return!z&&S&&S(),await new Promise((q,X)=>{n0(q,X,{data:U,headers:ot.from(D.headers),status:D.status,statusText:D.statusText,config:g,request:P})})}catch(R){throw S&&S(),R&&R.name==="TypeError"&&/Load failed|fetch/i.test(R.message)?Object.assign(new Z("Network Error",Z.ERR_NETWORK,g,P),{cause:R.cause||R}):Z.from(R,R&&R.code,g,P)}}},lb=new Map,o0=e=>{let n=e&&e.env||{};const{fetch:r,Request:i,Response:o}=n,s=[i,o,r];let a=s.length,l=a,f,c,h=lb;for(;l--;)f=s[l],c=h.get(f),c===void 0&&h.set(f,c=l?new Map:ab(n)),h=c;return c};o0();const Mf={http:S2,xhr:tb,fetch:{get:o0}};I.forEach(Mf,(e,n)=>{if(e){try{Object.defineProperty(e,"name",{value:n})}catch{}Object.defineProperty(e,"adapterName",{value:n})}});const Dh=e=>`- ${e}`,ub=e=>I.isFunction(e)||e===null||e===!1;function cb(e,n){e=I.isArray(e)?e:[e];const{length:r}=e;let i,o;const s={};for(let a=0;a`adapter ${f} `+(c===!1?"is not supported by the environment":"is not available in the build"));let l=r?a.length>1?`since : +`+a.map(Dh).join(` +`):" "+Dh(a[0]):"as no adapter specified";throw new Z("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return o}const s0={getAdapter:cb,adapters:Mf};function Gl(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new wi(null,e)}function Ih(e){return Gl(e),e.headers=ot.from(e.headers),e.data=ql.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),s0.getAdapter(e.adapter||Wo.adapter,e)(e).then(function(i){return Gl(e),i.data=ql.call(e,e.transformResponse,i),i.headers=ot.from(i.headers),i},function(i){return t0(i)||(Gl(e),i&&i.response&&(i.response.data=ql.call(e,e.transformResponse,i.response),i.response.headers=ot.from(i.response.headers))),Promise.reject(i)})}const a0="1.13.2",al={};["object","boolean","number","function","string","symbol"].forEach((e,n)=>{al[e]=function(i){return typeof i===e||"a"+(n<1?"n ":" ")+e}});const Lh={};al.transitional=function(n,r,i){function o(s,a){return"[Axios v"+a0+"] Transitional option '"+s+"'"+a+(i?". "+i:"")}return(s,a,l)=>{if(n===!1)throw new Z(o(a," has been removed"+(r?" in "+r:"")),Z.ERR_DEPRECATED);return r&&!Lh[a]&&(Lh[a]=!0,console.warn(o(a," has been deprecated since v"+r+" and will be removed in the near future"))),n?n(s,a,l):!0}};al.spelling=function(n){return(r,i)=>(console.warn(`${i} is likely a misspelling of ${n}`),!0)};function fb(e,n,r){if(typeof e!="object")throw new Z("options must be an object",Z.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let o=i.length;for(;o-- >0;){const s=i[o],a=n[s];if(a){const l=e[s],f=l===void 0||a(l,s,e);if(f!==!0)throw new Z("option "+s+" must be "+f,Z.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new Z("Unknown option "+s,Z.ERR_BAD_OPTION)}}const Vs={assertOptions:fb,validators:al},qt=Vs.validators;let mr=class{constructor(n){this.defaults=n||{},this.interceptors={request:new Eh,response:new Eh}}async request(n,r){try{return await this._request(n,r)}catch(i){if(i instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const s=o.stack?o.stack.replace(/^.+\n/,""):"";try{i.stack?s&&!String(i.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(i.stack+=` +`+s):i.stack=s}catch{}}throw i}}_request(n,r){typeof n=="string"?(r=r||{},r.url=n):r=n||{},r=kr(this.defaults,r);const{transitional:i,paramsSerializer:o,headers:s}=r;i!==void 0&&Vs.assertOptions(i,{silentJSONParsing:qt.transitional(qt.boolean),forcedJSONParsing:qt.transitional(qt.boolean),clarifyTimeoutError:qt.transitional(qt.boolean)},!1),o!=null&&(I.isFunction(o)?r.paramsSerializer={serialize:o}:Vs.assertOptions(o,{encode:qt.function,serialize:qt.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Vs.assertOptions(r,{baseUrl:qt.spelling("baseURL"),withXsrfToken:qt.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let a=s&&I.merge(s.common,s[r.method]);s&&I.forEach(["delete","get","head","post","put","patch","common"],g=>{delete s[g]}),r.headers=ot.concat(a,s);const l=[];let f=!0;this.interceptors.request.forEach(function(x){typeof x.runWhen=="function"&&x.runWhen(r)===!1||(f=f&&x.synchronous,l.unshift(x.fulfilled,x.rejected))});const c=[];this.interceptors.response.forEach(function(x){c.push(x.fulfilled,x.rejected)});let h,d=0,p;if(!f){const g=[Ih.bind(this),void 0];for(g.unshift(...l),g.push(...c),p=g.length,h=Promise.resolve(r);d{if(!i._listeners)return;let s=i._listeners.length;for(;s-- >0;)i._listeners[s](o);i._listeners=null}),this.promise.then=o=>{let s;const a=new Promise(l=>{i.subscribe(l),s=l}).then(o);return a.cancel=function(){i.unsubscribe(s)},a},n(function(s,a,l){i.reason||(i.reason=new wi(s,a,l),r(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(n){if(this.reason){n(this.reason);return}this._listeners?this._listeners.push(n):this._listeners=[n]}unsubscribe(n){if(!this._listeners)return;const r=this._listeners.indexOf(n);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const n=new AbortController,r=i=>{n.abort(i)};return this.subscribe(r),n.signal.unsubscribe=()=>this.unsubscribe(r),n.signal}static source(){let n;return{token:new l0(function(o){n=o}),cancel:n}}};function hb(e){return function(r){return e.apply(null,r)}}function pb(e){return I.isObject(e)&&e.isAxiosError===!0}const ic={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ic).forEach(([e,n])=>{ic[n]=e});function u0(e){const n=new mr(e),r=Ly(mr.prototype.request,n);return I.extend(r,mr.prototype,n,{allOwnKeys:!0}),I.extend(r,n,null,{allOwnKeys:!0}),r.create=function(o){return u0(kr(e,o))},r}const Se=u0(Wo);Se.Axios=mr;Se.CanceledError=wi;Se.CancelToken=db;Se.isCancel=t0;Se.VERSION=a0;Se.toFormData=sl;Se.AxiosError=Z;Se.Cancel=Se.CanceledError;Se.all=function(n){return Promise.all(n)};Se.spread=hb;Se.isAxiosError=pb;Se.mergeConfig=kr;Se.AxiosHeaders=ot;Se.formToJSON=e=>e0(I.isHTMLForm(e)?new FormData(e):e);Se.getAdapter=s0.getAdapter;Se.HttpStatusCode=ic;Se.default=Se;const{Axios:lP,AxiosError:uP,CanceledError:cP,isCancel:fP,CancelToken:dP,VERSION:hP,all:pP,Cancel:mP,isAxiosError:gP,spread:yP,toFormData:vP,AxiosHeaders:xP,HttpStatusCode:_P,formToJSON:wP,getAdapter:bP,mergeConfig:kP}=Se,Ar="/api",Ne=Se.create({baseURL:Ar,headers:{"Content-Type":"application/json"}}),mb=async e=>(await Ne.get("/data/entities",{params:e})).data,gb=async e=>(await Ne.get("/data/money-flows",{params:e})).data,yb=async e=>(await Ne.get("/data/awards",{params:e})).data,c0=async e=>(await Ne.get("/data/foia-targets",{params:e})).data,vb=async()=>(await Ne.get("/data/stats")).data,xb=async()=>(await Ne.get("/analysis/graph/entities")).data,_b=async()=>(await Ne.get("/analysis/financial/flows")).data,wb=async()=>(await Ne.get("/analysis/timeline")).data,bb=async e=>(await Ne.get("/analysis/sankey",{params:e})).data,kb=async()=>(await Ne.get("/analysis/intel-stack/pyramid")).data,f0=async e=>(await Ne.get("/analysis/intel-stack/hierarchy",{params:{entity_id:e}})).data,jb=async e=>(await Ne.get(`/analysis/intel-stack/entity/${encodeURIComponent(e)}/detail`)).data,Sb=async(e,n=20)=>(await Ne.get("/analysis/intel-stack/search",{params:{q:e,limit:n}})).data,Nb=async()=>(await Ne.get("/data/version")).data,Cb=async()=>(await Ne.post("/data/refresh")).data,Eb=async(e,n,r)=>(await Ne.get("/search",{params:{q:e,types:n,limit:r}})).data,Tb=()=>{window.open(`${Ar}/export/csv/entities`,"_blank")},Ab=()=>{window.open(`${Ar}/export/csv/money-flows`,"_blank")},Pb=()=>{window.open(`${Ar}/export/csv/awards`,"_blank")},Rb=()=>{window.open(`${Ar}/export/csv/foia-targets`,"_blank")},Mb=()=>{window.open(`${Ar}/export/json/entities`,"_blank")},Ob=()=>{window.open(`${Ar}/export/pdf/summary`,"_blank")},zb=async(e,n)=>(await Ne.post("/contribute/entity",e,{headers:{"X-GitHub-Token":n}})).data,Fb=async(e,n)=>(await Ne.post("/contribute/money-flow",e,{headers:{"X-GitHub-Token":n}})).data,$b=async(e,n)=>(await Ne.post("/contribute/award",e,{headers:{"X-GitHub-Token":n}})).data,Db=async(e,n)=>(await Ne.post("/contribute/foia-target",e,{headers:{"X-GitHub-Token":n}})).data,Ib=async e=>(await Ne.get("/contribute/validate-token",{headers:{"X-GitHub-Token":e}})).data;function so({type:e="line",count:n=1,width:r,height:i}){return e==="card"?u.jsxs("div",{className:"skeleton-card",children:[u.jsx("div",{className:"skeleton-line",style:{width:"60%",height:"24px",marginBottom:"16px"}}),u.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"16px",marginBottom:"8px"}}),u.jsx("div",{className:"skeleton-line",style:{width:"80%",height:"16px"}})]}):e==="table"?u.jsxs("div",{className:"skeleton-table",children:[u.jsx("div",{className:"skeleton-table-header",children:[1,2,3,4,5].map(o=>u.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"20px"}},o))}),[1,2,3,4,5,6,7,8].map(o=>u.jsx("div",{className:"skeleton-table-row",children:[1,2,3,4,5].map(s=>u.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"16px"}},s))},o))]}):e==="stat"?u.jsxs("div",{className:"skeleton-stat",children:[u.jsx("div",{className:"skeleton-line",style:{width:"70%",height:"14px",marginBottom:"12px"}}),u.jsx("div",{className:"skeleton-line",style:{width:"50%",height:"32px"}})]}):u.jsx(u.Fragment,{children:Array.from({length:n}).map((o,s)=>u.jsx("div",{className:"skeleton-line",style:{width:r||"100%",height:i||"16px",marginBottom:s{const e=E.useContext(d0);if(!e)throw new Error("useDataContext must be used within DataProvider");return e},Lb=({children:e,pollInterval:n=3e4})=>{const[r,i]=E.useState(0),[o,s]=E.useState(null),[a,l]=E.useState(!1),[f,c]=E.useState(!1),[h,d]=E.useState(null),p=E.useCallback(async()=>{try{const x=await Nb();h===null?(d(x.version),i(x.version),s(x.last_updated),l(!1)):x.version!==r?(i(x.version),s(x.last_updated),l(!0)):l(!1)}catch(x){console.error("Error checking data version:",x)}},[r,h]),y=E.useCallback(async()=>{try{c(!0);const x=await Cb();i(x.version),s(x.last_updated),l(!1),window.dispatchEvent(new CustomEvent("dataRefreshed",{detail:{version:x.version}}))}catch(x){throw console.error("Error refreshing data:",x),x}finally{c(!1)}},[]);E.useEffect(()=>{p()},[]),E.useEffect(()=>{if(n>0){const x=setInterval(()=>{p()},n);return()=>clearInterval(x)}},[p,n]),E.useEffect(()=>{const x=()=>{setTimeout(()=>{p()},100)};return window.addEventListener("popstate",x),window.addEventListener("focus",p),()=>{window.removeEventListener("popstate",x),window.removeEventListener("focus",p)}},[p]);const g={dataVersion:r,lastUpdated:o,isStale:a,isRefreshing:f,refreshData:y,checkVersion:p};return u.jsx(d0.Provider,{value:g,children:e})};function Ub(){const[e,n]=E.useState(null),[r,i]=E.useState(!0),[o,s]=E.useState(null),{dataVersion:a}=ll();E.useEffect(()=>{l()},[a]);const l=async()=>{try{s(null);const h=await vb();n(h)}catch(h){console.error("Error loading stats:",h),s("Failed to load dashboard statistics. Please try again.")}finally{i(!1)}},f=h=>h>=1e9?`$${(h/1e9).toFixed(2)}B`:h>=1e6?`$${(h/1e6).toFixed(2)}M`:h>=1e3?`$${(h/1e3).toFixed(1)}K`:`$${h.toFixed(0)}`,c=(h,d)=>{const p=h.split("-")[0],y=d.split("-")[0];return`${p} - ${y}`};return u.jsxs("div",{className:"dashboard fade-in",role:"main","aria-label":"Dashboard",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h1",{children:"Dashboard"}),u.jsx("p",{children:"Overview of UAP research data and federal spending"})]}),o&&u.jsxs("div",{className:"alert alert-error",role:"alert",children:[o,u.jsx("button",{onClick:l,className:"btn btn-secondary",style:{marginLeft:"12px",padding:"6px 12px"},children:"Retry"})]}),r?u.jsx("div",{className:"stats-grid",children:[1,2,3,4,5,6].map(h=>u.jsx("div",{className:"stat-card",children:u.jsx(so,{type:"stat"})},h))}):u.jsxs("div",{className:"stats-grid fade-in",role:"region","aria-label":"Statistics overview",children:[u.jsxs(Pe,{to:"/browse?tab=entities",className:"stat-card stat-card-link",role:"article","aria-label":"Total entities statistic",children:[u.jsx("h4",{children:"Total Entities"}),u.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_entities)||0})]}),u.jsxs(Pe,{to:"/browse?tab=money-flows",className:"stat-card stat-card-link",role:"article","aria-label":"Money flows statistic",children:[u.jsx("h4",{children:"Money Flows"}),u.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_money_flows)||0})]}),u.jsxs(Pe,{to:"/browse?tab=awards",className:"stat-card stat-card-link",role:"article","aria-label":"Federal awards statistic",children:[u.jsx("h4",{children:"Federal Awards"}),u.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_awards)||0})]}),u.jsxs(Pe,{to:"/browse?tab=foia",className:"stat-card stat-card-link",role:"article","aria-label":"FOIA targets statistic",children:[u.jsx("h4",{children:"FOIA Targets"}),u.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_foia_targets)||0})]}),u.jsxs("div",{className:"stat-card",role:"article","aria-label":"Total spending tracked statistic",children:[u.jsx("h4",{children:"Total Spending Tracked"}),u.jsx("p",{className:"value","aria-live":"polite",children:f((e==null?void 0:e.total_money_amount)||0)})]}),u.jsxs("div",{className:"stat-card",role:"article","aria-label":"Date range statistic",children:[u.jsx("h4",{children:"Date Range"}),u.jsx("p",{className:"value","aria-live":"polite",children:e!=null&&e.date_range_start&&(e!=null&&e.date_range_end)?c(e.date_range_start,e.date_range_end):"N/A"})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Welcome to Project RawHorse"}),u.jsx("p",{children:"This application provides comprehensive access to publicly available data related to Unidentified Anomalous Phenomena (UAP) research, federal contracting, and related entities."}),u.jsx("p",{children:"Use the navigation menu to:"}),u.jsxs("ul",{children:[u.jsxs("li",{children:[u.jsx("strong",{children:"Browse:"})," Explore entities, money flows, awards, and FOIA targets"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Analysis:"})," Visualize relationships and financial networks"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Export:"})," Download data in CSV, JSON, or PDF formats"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Contribute:"})," Submit new data via automated GitHub pull requests"]})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Data Sources"}),u.jsx("p",{children:"Data is sourced from official public databases and independent research:"}),u.jsxs("div",{style:{marginBottom:"16px"},children:[u.jsx("h4",{style:{fontSize:"0.95rem",marginBottom:"8px",color:"var(--text-secondary)"},children:"Research Attribution"}),u.jsx("ul",{children:u.jsxs("li",{children:[u.jsx("strong",{children:u.jsx("a",{href:"https://www.youtube.com/@uapgerb",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"UAPGerb"})})," - Entity relationships, organizational structures, and FOIA targets derived from UAP legacy program research"]})})]}),u.jsxs("div",{children:[u.jsx("h4",{style:{fontSize:"0.95rem",marginBottom:"8px",color:"var(--text-secondary)"},children:"Government Databases"}),u.jsxs("ul",{children:[u.jsx("li",{children:"USAspending.gov - Federal spending and contracts"}),u.jsx("li",{children:"SAM.gov - Entity registrations and awards"}),u.jsx("li",{children:"Federal agency FOIA reading rooms"}),u.jsx("li",{children:"DOE, NASA, DHS, and other public databases"})]})]})]}),u.jsxs("div",{className:"card support-card",children:[u.jsx("div",{className:"support-header",children:u.jsx("h3",{children:"💜 Support This Project"})}),u.jsx("p",{children:"Project RawHorse is open-source and freely available. If you find this tool valuable for UAP research and transparency advocacy, please consider supporting our work."}),u.jsx("p",{children:"Your donations help fund development, server costs, and support our broader research into advanced energy systems and LENR fusion experiments."}),u.jsxs("div",{className:"support-actions",children:[u.jsx("a",{href:"https://conscious.energy/donations/",target:"_blank",rel:"noopener noreferrer",className:"btn btn-primary support-btn",children:"❤️ Support via Donations"}),u.jsx("a",{href:"https://github.com/ConsciousEnergy/ProjectRawHorse",target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",children:"⭐ Star on GitHub"})]}),u.jsx("p",{className:"support-note",children:u.jsxs("small",{children:["Donations accepted via Bitcoin, PayPal, and GoFundMe •",u.jsx("a",{href:"https://conscious.energy",target:"_blank",rel:"noopener noreferrer",children:" Learn more about Conscious Energy"})]})})]})]})}function h0(){return u.jsx(so,{type:"table"})}function qi({icon:e,title:n,description:r,action:i}){return u.jsxs("div",{className:"empty-state",role:"status",children:[e&&u.jsx("div",{className:"empty-state-icon",children:e}),u.jsx("h3",{children:n}),r&&u.jsx("p",{children:r}),i&&u.jsx("div",{className:"empty-state-action",children:i})]})}function Bb(e,n){return n==="likelihood"?e>=.6?"high":e>=.3?"medium":"low":e>=.7?"high":e>=.4?"medium":"low"}function ei({score:e,type:n="priority"}){if(e==null)return u.jsx("span",{className:"score-badge-na",children:"N/A"});const r=Bb(e,n),i=(e*100).toFixed(0);return u.jsxs("span",{className:`score-badge score-badge-${r}`,title:`${i}%`,children:[i,"%"]})}function Hb(e,n){const[r,i]=E.useState(e);return E.useEffect(()=>{const o=setTimeout(()=>i(e),n);return()=>clearTimeout(o)},[e,n]),r}function nr({text:e,highlight:n}){if(!n.trim()||!e)return u.jsx(u.Fragment,{children:e});const r=n.trim().split(/\s+/).filter(Boolean);if(r.length===0)return u.jsx(u.Fragment,{children:e});const o=r.map(l=>l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),s=new RegExp(`(${o})`,"gi"),a=e.split(s);return u.jsx(u.Fragment,{children:a.map((l,f)=>f%2===1?u.jsx("mark",{className:"search-highlight",children:l},f):u.jsx("span",{children:l},f))})}function Vb(){const[e,n]=Fy(),r=nl(),{dataVersion:i}=ll(),[o,s]=E.useState(()=>{const $=e.get("tab");return $&&["entities","money-flows","awards","foia"].includes($)?$:"entities"}),[a,l]=E.useState(()=>e.get("search")||""),[f,c]=E.useState(!1),[h,d]=E.useState(1),[p,y]=E.useState(25),[g,x]=E.useState({key:"",direction:"asc"}),[_,m]=E.useState([]),[v,w]=E.useState([]),[b,k]=E.useState(""),[j,C]=E.useState(""),[T,F]=E.useState(""),[A,O]=E.useState(""),[N,P]=E.useState(""),[S,L]=E.useState(!1),[R,B]=E.useState([]),[D,z]=E.useState([]),[U,q]=E.useState([]),[X,ne]=E.useState([]),[ee,_e]=E.useState([]),G=Hb(a,300),ie=["Corporation","Government Agency","Individual","Research Institution","Facility","Program","Organization","Investment Firm"],Te=[{value:1,label:"Control Group"},{value:2,label:"Administrators"},{value:3,label:"FFRDCs"},{value:4,label:"Prime Contractors"},{value:5,label:"Facilities"},{value:6,label:"Programs"}];E.useEffect(()=>{const $=localStorage.getItem("recentSearches");$&&B(JSON.parse($))},[]);const on=E.useCallback($=>{if(!$.trim())return;const J=[$,...R.filter(W=>W!==$)].slice(0,5);B(J),localStorage.setItem("recentSearches",JSON.stringify(J))},[R]),Ht=e.get("highlight")??"";E.useEffect(()=>{const $=e.get("tab"),J=e.get("search"),W=e.get("type"),K=e.get("page");$&&["entities","money-flows","awards","foia"].includes($)&&s($),J&&l(J),W&&m([W]),K&&d(parseInt(K))},[e]),E.useEffect(()=>{if(!Ht||f)return;const $=o==="entities"?"row-entity-":o==="money-flows"?"row-flow-":o==="awards"?"row-award-":o==="foia"?"row-foia-":"";if(!$)return;const J=$+Ht,W=document.getElementById(J);if(!W)return;W.scrollIntoView({behavior:"smooth",block:"nearest"}),W.classList.add("row-highlight-flash");const K=setTimeout(()=>{W.classList.remove("row-highlight-flash"),n(ae=>(ae.delete("highlight"),ae))},2500);return()=>clearTimeout(K)},[Ht,o,f,n]),E.useEffect(()=>{bi(),G&&n($=>($.set("search",G),$))},[G,o,_,v,b,j,T,A,N,h,i]);const Et=()=>{const $={limit:p,offset:(h-1)*p};return G.trim()&&($.search=G),o==="entities"&&(_.length===1&&($.entity_type=_[0]),v.length>0&&($.intel_stack_level=v[0])),(o==="money-flows"||o==="awards")&&b&&($.min_amount=parseFloat(b)),(o==="money-flows"||o==="awards")&&j&&($.max_amount=parseFloat(j)),(o==="money-flows"||o==="awards")&&T&&($.start_date=T),(o==="money-flows"||o==="awards")&&A&&($.end_date=A),(o==="awards"||o==="foia")&&N&&($.agency=N),$},bi=async()=>{c(!0);try{const $=Et();switch(o){case"entities":const J=await mb($);z(J);break;case"money-flows":const W=await gb($);q(W);break;case"awards":const K=await yb($);ne(K);break;case"foia":const ae=await c0($);_e(ae);break}G.trim()&&on(G)}catch($){console.error("Error loading data:",$)}finally{c(!1)}},yt=$=>{x(J=>({key:$,direction:J.key===$&&J.direction==="asc"?"desc":"asc"}))},we=E.useMemo(()=>{if(!g.key)return{entities:D,moneyFlows:U,awards:X,foiaTargets:ee};const $=(J,W)=>{const K=J[g.key],ae=W[g.key];if(K==null)return 1;if(ae==null)return-1;if(typeof K=="number"&&typeof ae=="number")return g.direction==="asc"?K-ae:ae-K;const Tn=String(K).toLowerCase(),at=String(ae).toLowerCase();return g.direction==="asc"?Tn.localeCompare(at):at.localeCompare(Tn)};return{entities:[...D].sort($),moneyFlows:[...U].sort($),awards:[...X].sort($),foiaTargets:[...ee].sort($)}},[D,U,X,ee,g]),sn=()=>{l(""),m([]),w([]),k(""),C(""),F(""),O(""),P(""),d(1),n({})},Nn=$=>{s($),d(1),x({key:"",direction:"asc"}),n(J=>(J.set("tab",$),J))},Cn=$=>{m(J=>J.includes($)?J.filter(W=>W!==$):[...J,$]),d(1)},Qo=$=>{w(J=>J.includes($)?J.filter(W=>W!==$):[...J,$]),d(1)},ki=($,J)=>{switch($){case"entityType":m(W=>W.filter(K=>K!==J));break;case"intelLevel":w(W=>W.filter(K=>K!==J));break;case"minAmount":k("");break;case"maxAmount":C("");break;case"startDate":F("");break;case"endDate":O("");break;case"agency":P("");break}d(1)},Pr=$=>$?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format($):"N/A",ke=({column:$,label:J})=>{const W=()=>g.key!==$?"none":g.direction==="asc"?"ascending":"descending";return u.jsxs("th",{onClick:()=>yt($),className:"sortable-header",role:"columnheader","aria-sort":W(),children:[J,u.jsx("span",{className:"sort-indicator",children:g.key===$?g.direction==="asc"?" ▲":" ▼":" ⇅"})]})},En=E.useMemo(()=>{const $=[];return _.forEach(J=>{$.push({type:"entityType",value:J,label:`Type: ${J}`})}),v.forEach(J=>{const W=Te.find(K=>K.value===J);$.push({type:"intelLevel",value:J,label:`Intel: ${(W==null?void 0:W.label)||J}`})}),b&&$.push({type:"minAmount",value:b,label:`Min: $${parseInt(b).toLocaleString()}`}),j&&$.push({type:"maxAmount",value:j,label:`Max: $${parseInt(j).toLocaleString()}`}),T&&$.push({type:"startDate",value:T,label:`From: ${T}`}),A&&$.push({type:"endDate",value:A,label:`To: ${A}`}),N&&$.push({type:"agency",value:N,label:`Agency: ${N}`}),$},[_,v,b,j,T,A,N]),Vt=()=>{switch(o){case"entities":return we.entities.length;case"money-flows":return we.moneyFlows.length;case"awards":return we.awards.length;case"foia":return we.foiaTargets.length;default:return 0}};return u.jsxs("div",{className:"browse",role:"main","aria-label":"Browse page",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h1",{children:"Browse Data"}),u.jsx("p",{children:"Search and explore entities, money flows, awards, and FOIA targets"})]}),u.jsxs("div",{className:"search-section",children:[u.jsxs("div",{className:"search-input-wrapper",children:[u.jsx("span",{className:"search-icon",children:"🔍"}),u.jsx("input",{type:"text",placeholder:"Search by name, keyword, or ID... (auto-search enabled)",value:a,onChange:$=>l($.target.value),className:"search-input-enhanced","aria-label":"Search database"}),a&&u.jsx("button",{className:"clear-search-btn",onClick:()=>l(""),"aria-label":"Clear search",children:"✕"})]}),u.jsxs("div",{className:"search-actions",children:[u.jsx("button",{onClick:()=>L(!S),className:`btn btn-secondary ${S?"active":""}`,children:S?"▼ Filters":"▶ Filters"}),(a||En.length>0)&&u.jsx("button",{onClick:sn,className:"btn btn-outline",children:"Clear All"})]}),!a&&R.length>0&&u.jsxs("div",{className:"recent-searches",children:[u.jsx("span",{className:"recent-label",children:"Recent:"}),R.map(($,J)=>u.jsx("button",{className:"recent-search-chip",onClick:()=>l($),children:$},J))]}),!a&&u.jsxs("div",{className:"quick-searches",children:[u.jsx("span",{className:"quick-label",children:"Quick:"}),u.jsx("button",{className:"quick-chip",onClick:()=>{s("entities"),m(["Corporation"])},children:"Corporations"}),u.jsx("button",{className:"quick-chip",onClick:()=>{s("entities"),m(["Government Agency"])},children:"Gov Agencies"}),u.jsx("button",{className:"quick-chip",onClick:()=>{s("entities"),m(["Individual"])},children:"Individuals"}),u.jsx("button",{className:"quick-chip",onClick:()=>{s("money-flows"),k("1000000")},children:"Flows > $1M"}),u.jsx("button",{className:"quick-chip",onClick:()=>{s("foia")},children:"FOIA Targets"})]})]}),En.length>0&&u.jsx("div",{className:"active-filters",children:En.map(($,J)=>u.jsxs("span",{className:"filter-chip",children:[$.label,u.jsx("button",{className:"remove-filter",onClick:()=>ki($.type,$.value),"aria-label":`Remove ${$.label} filter`,children:"✕"})]},J))}),u.jsxs("div",{className:"tabs",role:"tablist","aria-label":"Data type tabs",children:[u.jsxs("button",{className:o==="entities"?"active":"",onClick:()=>Nn("entities"),role:"tab","aria-selected":o==="entities",children:["Entities",u.jsx("span",{className:"tab-count",children:o==="entities"?Vt():""})]}),u.jsxs("button",{className:o==="money-flows"?"active":"",onClick:()=>Nn("money-flows"),role:"tab","aria-selected":o==="money-flows",children:["Money Flows",u.jsx("span",{className:"tab-count",children:o==="money-flows"?Vt():""})]}),u.jsxs("button",{className:o==="awards"?"active":"",onClick:()=>Nn("awards"),role:"tab","aria-selected":o==="awards",children:["Awards",u.jsx("span",{className:"tab-count",children:o==="awards"?Vt():""})]}),u.jsxs("button",{className:o==="foia"?"active":"",onClick:()=>Nn("foia"),role:"tab","aria-selected":o==="foia",children:["FOIA Targets",u.jsx("span",{className:"tab-count",children:o==="foia"?Vt():""})]})]}),S&&u.jsxs("div",{className:"filters-panel",children:[u.jsx("h4",{children:"Advanced Filters"}),o==="entities"&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"filter-group",children:[u.jsx("label",{children:"Entity Types:"}),u.jsx("div",{className:"filter-checkboxes",children:ie.map($=>u.jsxs("label",{className:"checkbox-label",children:[u.jsx("input",{type:"checkbox",checked:_.includes($),onChange:()=>Cn($)}),$]},$))})]}),u.jsxs("div",{className:"filter-group",children:[u.jsx("label",{children:"Intel Stack Level:"}),u.jsx("div",{className:"filter-checkboxes",children:Te.map($=>u.jsxs("label",{className:"checkbox-label",children:[u.jsx("input",{type:"checkbox",checked:v.includes($.value),onChange:()=>Qo($.value)}),$.value,". ",$.label]},$.value))})]})]}),(o==="money-flows"||o==="awards")&&u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"filter-group",children:[u.jsx("label",{children:"Amount Range:"}),u.jsxs("div",{className:"range-inputs",children:[u.jsx("input",{type:"number",placeholder:"Min ($)",value:b,onChange:$=>{k($.target.value),d(1)}}),u.jsx("span",{children:"to"}),u.jsx("input",{type:"number",placeholder:"Max ($)",value:j,onChange:$=>{C($.target.value),d(1)}})]})]}),u.jsxs("div",{className:"filter-group",children:[u.jsx("label",{children:"Date Range:"}),u.jsxs("div",{className:"range-inputs",children:[u.jsx("input",{type:"date",value:T,onChange:$=>{F($.target.value),d(1)}}),u.jsx("span",{children:"to"}),u.jsx("input",{type:"date",value:A,onChange:$=>{O($.target.value),d(1)}})]})]})]}),(o==="awards"||o==="foia")&&u.jsxs("div",{className:"filter-group",children:[u.jsx("label",{children:"Agency:"}),u.jsx("input",{type:"text",placeholder:"Filter by agency name...",value:N,onChange:$=>{P($.target.value),d(1)}})]})]}),u.jsxs("div",{className:"results-bar",children:[u.jsx("div",{className:"results-count",children:f?u.jsx("span",{children:"Loading..."}):u.jsxs("span",{children:["Showing ",Vt()," result",Vt()!==1?"s":"",G&&` for "${G}"`]})}),u.jsxs("div",{className:"results-controls",children:[u.jsxs("label",{children:["Show:",u.jsxs("select",{value:p,onChange:$=>{y(parseInt($.target.value)),d(1)},children:[u.jsx("option",{value:10,children:"10"}),u.jsx("option",{value:25,children:"25"}),u.jsx("option",{value:50,children:"50"}),u.jsx("option",{value:100,children:"100"})]})]}),u.jsxs("div",{className:"pagination",children:[u.jsx("button",{disabled:h===1,onClick:()=>d($=>$-1),className:"btn btn-sm",children:"← Prev"}),u.jsxs("span",{className:"page-info",children:["Page ",h]}),u.jsx("button",{disabled:Vt()d($=>$+1),className:"btn btn-sm",children:"Next →"})]})]})]}),u.jsx("div",{className:"card",children:f?u.jsx(h0,{}):u.jsxs("div",{className:"fade-in",role:"tabpanel",children:[o==="entities"&&u.jsx(u.Fragment,{children:we.entities.length===0?u.jsx(qi,{icon:"🔍",title:"No entities found",description:"Try adjusting your search or filters, or browse all entities.",action:u.jsx("button",{className:"btn btn-primary",onClick:sn,children:"Clear Filters"})}):u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Entities table",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx(ke,{column:"display_name",label:"Display Name"}),u.jsx(ke,{column:"entity_type",label:"Type"}),u.jsx(ke,{column:"intel_stack_level",label:"Intel Level"}),u.jsx("th",{children:"Actions"})]})}),u.jsx("tbody",{children:we.entities.map($=>{var J;return u.jsxs("tr",{id:`row-entity-${$.entity_id}`,className:"clickable-row",children:[u.jsx("td",{children:u.jsx(nr,{text:$.display_name,highlight:G})}),u.jsx("td",{children:u.jsx("span",{className:`type-badge type-${(J=$.entity_type)==null?void 0:J.toLowerCase().replace(/\s+/g,"-")}`,children:$.entity_type||"Unknown"})}),u.jsx("td",{children:$.intel_stack_level?u.jsxs("span",{className:`intel-badge level-${$.intel_stack_level}`,children:["L",$.intel_stack_level]}):"-"}),u.jsxs("td",{className:"actions-cell",children:[u.jsx("button",{className:"btn btn-sm btn-outline",onClick:()=>r(`/analysis/network?highlight=${$.entity_id}`),children:"View Network"}),$.intel_stack_level!=null&&u.jsx(Pe,{to:`/analysis/pyramid?entity_id=${encodeURIComponent($.entity_id)}`,className:"browse-pyramid-link",title:"View on Pyramid","aria-label":`View ${$.display_name} on Intelligence Stack Pyramid`,children:u.jsx(Iy,{size:18})})]})]},$.entity_id)})})]})})}),o==="money-flows"&&u.jsx(u.Fragment,{children:we.moneyFlows.length===0?u.jsx(qi,{icon:"💰",title:"No money flows found",description:"Try adjusting your search or amount filters.",action:u.jsx("button",{className:"btn btn-primary",onClick:sn,children:"Clear Filters"})}):u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Money flows table",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx(ke,{column:"source",label:"Source"}),u.jsx(ke,{column:"target",label:"Target"}),u.jsx(ke,{column:"relationship",label:"Relationship"}),u.jsx(ke,{column:"amount_usd",label:"Amount"}),u.jsx(ke,{column:"start_date",label:"Date"})]})}),u.jsx("tbody",{children:we.moneyFlows.map($=>u.jsxs("tr",{id:`row-flow-${$.id}`,children:[u.jsx("td",{children:u.jsx(nr,{text:$.source,highlight:G})}),u.jsx("td",{children:u.jsx(nr,{text:$.target,highlight:G})}),u.jsx("td",{children:u.jsx("span",{className:"relationship-badge",children:$.relationship||"N/A"})}),u.jsx("td",{className:"amount-cell",children:Pr($.amount_usd)}),u.jsx("td",{children:$.start_date||"N/A"})]},$.id))})]})})}),o==="awards"&&u.jsx(u.Fragment,{children:we.awards.length===0?u.jsx(qi,{icon:"🏆",title:"No awards found",description:"Try adjusting your search, agency, or amount filters.",action:u.jsx("button",{className:"btn btn-primary",onClick:sn,children:"Clear Filters"})}):u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Awards table",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx(ke,{column:"piid",label:"PIID"}),u.jsx(ke,{column:"recipient_name",label:"Recipient"}),u.jsx(ke,{column:"awarding_agency",label:"Agency"}),u.jsx(ke,{column:"award_amount",label:"Amount"}),u.jsx(ke,{column:"action_date",label:"Date"})]})}),u.jsx("tbody",{children:we.awards.map($=>u.jsxs("tr",{id:`row-award-${$.id}`,children:[u.jsx("td",{className:"piid-cell",children:$.piid||"N/A"}),u.jsx("td",{children:u.jsx(nr,{text:$.recipient_name||"",highlight:G})}),u.jsx("td",{children:u.jsx(nr,{text:$.awarding_agency||"",highlight:G})}),u.jsx("td",{className:"amount-cell",children:Pr($.award_amount)}),u.jsx("td",{children:$.action_date||"N/A"})]},$.id))})]})})}),o==="foia"&&u.jsx(u.Fragment,{children:we.foiaTargets.length===0?u.jsx(qi,{icon:"📋",title:"No FOIA targets found",description:"Try adjusting your search or agency filter.",action:u.jsx("button",{className:"btn btn-primary",onClick:sn,children:"Clear Filters"})}):u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"FOIA targets table",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx(ke,{column:"agency",label:"Agency"}),u.jsx(ke,{column:"record_request",label:"Record Request"}),u.jsx(ke,{column:"timeframe",label:"Timeframe"}),u.jsx(ke,{column:"priority_score",label:"Priority"}),u.jsx(ke,{column:"specificity_score",label:"Specificity"}),u.jsx(ke,{column:"likelihood_score",label:"Likelihood"})]})}),u.jsx("tbody",{children:we.foiaTargets.map($=>u.jsxs("tr",{id:`row-foia-${$.id}`,children:[u.jsx("td",{children:u.jsx(nr,{text:$.agency,highlight:G})}),u.jsx("td",{className:"record-request-cell",children:u.jsx(nr,{text:$.record_request,highlight:G})}),u.jsx("td",{children:$.timeframe||"N/A"}),u.jsx("td",{children:u.jsx(ei,{score:$.priority_score,type:"priority"})}),u.jsx("td",{children:u.jsx(ei,{score:$.specificity_score,type:"specificity"})}),u.jsx("td",{children:u.jsx(ei,{score:$.likelihood_score,type:"likelihood"})})]},$.id))})]})})})]})})]})}function Ws(e,n){return e==null||n==null?NaN:en?1:e>=n?0:NaN}function Wb(e,n){return e==null||n==null?NaN:ne?1:n>=e?0:NaN}function p0(e){let n,r,i;e.length!==2?(n=Ws,r=(l,f)=>Ws(e(l),f),i=(l,f)=>e(l)-f):(n=e===Ws||e===Wb?e:qb,r=e,i=e);function o(l,f,c=0,h=l.length){if(c>>1;r(l[d],f)<0?c=d+1:h=d}while(c>>1;r(l[d],f)<=0?c=d+1:h=d}while(cc&&i(l[d-1],f)>-i(l[d],f)?d-1:d}return{left:o,center:a,right:s}}function qb(){return 0}function Gb(e){return e===null?NaN:+e}const Xb=p0(Ws),Yb=Xb.right;p0(Gb).center;class Uh extends Map{constructor(n,r=Jb){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),n!=null)for(const[i,o]of n)this.set(i,o)}get(n){return super.get(Bh(this,n))}has(n){return super.has(Bh(this,n))}set(n,r){return super.set(Qb(this,n),r)}delete(n){return super.delete(Kb(this,n))}}function Bh({_intern:e,_key:n},r){const i=n(r);return e.has(i)?e.get(i):r}function Qb({_intern:e,_key:n},r){const i=n(r);return e.has(i)?e.get(i):(e.set(i,r),r)}function Kb({_intern:e,_key:n},r){const i=n(r);return e.has(i)&&(r=e.get(i),e.delete(i)),r}function Jb(e){return e!==null&&typeof e=="object"?e.valueOf():e}const Zb=Math.sqrt(50),ek=Math.sqrt(10),tk=Math.sqrt(2);function ka(e,n,r){const i=(n-e)/Math.max(0,r),o=Math.floor(Math.log10(i)),s=i/Math.pow(10,o),a=s>=Zb?10:s>=ek?5:s>=tk?2:1;let l,f,c;return o<0?(c=Math.pow(10,-o)/a,l=Math.round(e*c),f=Math.round(n*c),l/cn&&--f,c=-c):(c=Math.pow(10,o)*a,l=Math.round(e/c),f=Math.round(n/c),l*cn&&--f),f0))return[];if(e===n)return[e];const i=n=o))return[];const l=s-o+1,f=new Array(l);if(i)if(a<0)for(let c=0;c=i)&&(r=i);else{let i=-1;for(let o of e)(o=n(o,++i,e))!=null&&(r=o)&&(r=o)}return r}function Vh(e,n){let r;if(n===void 0)for(const i of e)i!=null&&(r>i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let o of e)(o=n(o,++i,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function ik(e,n){let r=0;for(let i of e)(i=+i)&&(r+=i);return r}var ok={value:()=>{}};function qo(){for(var e=0,n=arguments.length,r={},i;e=0&&(i=r.slice(o+1),r=r.slice(0,o)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:i}})}qs.prototype=qo.prototype={constructor:qs,on:function(e,n){var r=this._,i=sk(e+"",r),o,s=-1,a=i.length;if(arguments.length<2){for(;++s0)for(var r=new Array(o),i=0,o,s;i=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),qh.hasOwnProperty(n)?{space:qh[n],local:e}:e}function lk(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===sc&&n.documentElement.namespaceURI===sc?n.createElement(e):n.createElementNS(r,e)}}function uk(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function m0(e){var n=ul(e);return(n.local?uk:lk)(n)}function ck(){}function Of(e){return e==null?ck:function(){return this.querySelector(e)}}function fk(e){typeof e!="function"&&(e=Of(e));for(var n=this._groups,r=n.length,i=new Array(r),o=0;o=w&&(w=v+1);!(k=_[w])&&++w=0;)(a=i[o])&&(s&&a.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(a,s),s=a);return this}function Fk(e){e||(e=$k);function n(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,i=r.length,o=new Array(i),s=0;sn?1:e>=n?0:NaN}function Dk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ik(){return Array.from(this)}function Lk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?Kk:typeof n=="function"?Zk:Jk)(e,n,r??"")):fi(this.node(),e)}function fi(e,n){return e.style.getPropertyValue(n)||_0(e).getComputedStyle(e,null).getPropertyValue(n)}function tj(e){return function(){delete this[e]}}function nj(e,n){return function(){this[e]=n}}function rj(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function ij(e,n){return arguments.length>1?this.each((n==null?tj:typeof n=="function"?rj:nj)(e,n)):this.node()[e]}function w0(e){return e.trim().split(/^|\s+/)}function zf(e){return e.classList||new b0(e)}function b0(e){this._node=e,this._names=w0(e.getAttribute("class")||"")}b0.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function k0(e,n){for(var r=zf(e),i=-1,o=n.length;++i=0&&(r=n.slice(i+1),n=n.slice(0,i)),{type:n,name:r}})}function Rj(e){return function(){var n=this.__on;if(n){for(var r=0,i=-1,o=n.length,s;r()=>e;function ac(e,{sourceEvent:n,subject:r,target:i,identifier:o,active:s,x:a,y:l,dx:f,dy:c,dispatch:h}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:f,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:h}})}ac.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Bj(e){return!e.ctrlKey&&!e.button}function Hj(){return this.parentNode}function Vj(e,n){return n??{x:e.x,y:e.y}}function Wj(){return navigator.maxTouchPoints||"ontouchstart"in this}function qj(){var e=Bj,n=Hj,r=Vj,i=Wj,o={},s=qo("start","drag","end"),a=0,l,f,c,h,d=0;function p(b){b.on("mousedown.drag",y).filter(i).on("touchstart.drag",_).on("touchmove.drag",m,Uj).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(b,k){if(!(h||!e.call(this,b,k))){var j=w(this,n.call(this,b,k),b,k,"mouse");j&&(ct(b.view).on("mousemove.drag",g,Ao).on("mouseup.drag",x,Ao),C0(b.view),Xl(b),c=!1,l=b.clientX,f=b.clientY,j("start",b))}}function g(b){if(ti(b),!c){var k=b.clientX-l,j=b.clientY-f;c=k*k+j*j>d}o.mouse("drag",b)}function x(b){ct(b.view).on("mousemove.drag mouseup.drag",null),E0(b.view,c),ti(b),o.mouse("end",b)}function _(b,k){if(e.call(this,b,k)){var j=b.changedTouches,C=n.call(this,b,k),T=j.length,F,A;for(F=0;F>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?ws(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?ws(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=Xj.exec(e))?new et(n[1],n[2],n[3],1):(n=Yj.exec(e))?new et(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=Qj.exec(e))?ws(n[1],n[2],n[3],n[4]):(n=Kj.exec(e))?ws(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=Jj.exec(e))?Zh(n[1],n[2]/100,n[3]/100,1):(n=Zj.exec(e))?Zh(n[1],n[2]/100,n[3]/100,n[4]):Gh.hasOwnProperty(e)?Qh(Gh[e]):e==="transparent"?new et(NaN,NaN,NaN,0):null}function Qh(e){return new et(e>>16&255,e>>8&255,e&255,1)}function ws(e,n,r,i){return i<=0&&(e=n=r=NaN),new et(e,n,r,i)}function nS(e){return e instanceof Xo||(e=jr(e)),e?(e=e.rgb(),new et(e.r,e.g,e.b,e.opacity)):new et}function lc(e,n,r,i){return arguments.length===1?nS(e):new et(e,n,r,i??1)}function et(e,n,r,i){this.r=+e,this.g=+n,this.b=+r,this.opacity=+i}Ff(et,lc,T0(Xo,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new et(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Po:Math.pow(Po,e),new et(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new et(gr(this.r),gr(this.g),gr(this.b),Na(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Kh,formatHex:Kh,formatHex8:rS,formatRgb:Jh,toString:Jh}));function Kh(){return`#${dr(this.r)}${dr(this.g)}${dr(this.b)}`}function rS(){return`#${dr(this.r)}${dr(this.g)}${dr(this.b)}${dr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jh(){const e=Na(this.opacity);return`${e===1?"rgb(":"rgba("}${gr(this.r)}, ${gr(this.g)}, ${gr(this.b)}${e===1?")":`, ${e})`}`}function Na(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function gr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function dr(e){return e=gr(e),(e<16?"0":"")+e.toString(16)}function Zh(e,n,r,i){return i<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new Ft(e,n,r,i)}function A0(e){if(e instanceof Ft)return new Ft(e.h,e.s,e.l,e.opacity);if(e instanceof Xo||(e=jr(e)),!e)return new Ft;if(e instanceof Ft)return e;e=e.rgb();var n=e.r/255,r=e.g/255,i=e.b/255,o=Math.min(n,r,i),s=Math.max(n,r,i),a=NaN,l=s-o,f=(s+o)/2;return l?(n===s?a=(r-i)/l+(r0&&f<1?0:a,new Ft(a,l,f,e.opacity)}function iS(e,n,r,i){return arguments.length===1?A0(e):new Ft(e,n,r,i??1)}function Ft(e,n,r,i){this.h=+e,this.s=+n,this.l=+r,this.opacity=+i}Ff(Ft,iS,T0(Xo,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new Ft(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Po:Math.pow(Po,e),new Ft(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*n,o=2*r-i;return new et(Yl(e>=240?e-240:e+120,o,i),Yl(e,o,i),Yl(e<120?e+240:e-120,o,i),this.opacity)},clamp(){return new Ft(ep(this.h),bs(this.s),bs(this.l),Na(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Na(this.opacity);return`${e===1?"hsl(":"hsla("}${ep(this.h)}, ${bs(this.s)*100}%, ${bs(this.l)*100}%${e===1?")":`, ${e})`}`}}));function ep(e){return e=(e||0)%360,e<0?e+360:e}function bs(e){return Math.max(0,Math.min(1,e||0))}function Yl(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const $f=e=>()=>e;function oS(e,n){return function(r){return e+r*n}}function sS(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(i){return Math.pow(e+i*n,r)}}function aS(e){return(e=+e)==1?P0:function(n,r){return r-n?sS(n,r,e):$f(isNaN(n)?r:n)}}function P0(e,n){var r=n-e;return r?oS(e,r):$f(isNaN(e)?n:e)}const Ca=function e(n){var r=aS(n);function i(o,s){var a=r((o=lc(o)).r,(s=lc(s)).r),l=r(o.g,s.g),f=r(o.b,s.b),c=P0(o.opacity,s.opacity);return function(h){return o.r=a(h),o.g=l(h),o.b=f(h),o.opacity=c(h),o+""}}return i.gamma=e,i}(1);function lS(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,i=n.slice(),o;return function(s){for(o=0;or&&(s=n.slice(r,s),l[a]?l[a]+=s:l[++a]=s),(i=i[0])===(o=o[0])?l[a]?l[a]+=o:l[++a]=o:(l[++a]=null,f.push({i:a,x:zt(i,o)})),r=Ql.lastIndex;return r180?h+=360:h-c>180&&(c+=360),p.push({i:d.push(o(d)+"rotate(",null,i)-2,x:zt(c,h)})):h&&d.push(o(d)+"rotate("+h+i)}function l(c,h,d,p){c!==h?p.push({i:d.push(o(d)+"skewX(",null,i)-2,x:zt(c,h)}):h&&d.push(o(d)+"skewX("+h+i)}function f(c,h,d,p,y,g){if(c!==d||h!==p){var x=y.push(o(y)+"scale(",null,",",null,")");g.push({i:x-4,x:zt(c,d)},{i:x-2,x:zt(h,p)})}else(d!==1||p!==1)&&y.push(o(y)+"scale("+d+","+p+")")}return function(c,h){var d=[],p=[];return c=e(c),h=e(h),s(c.translateX,c.translateY,h.translateX,h.translateY,d,p),a(c.rotate,h.rotate,d,p),l(c.skewX,h.skewX,d,p),f(c.scaleX,c.scaleY,h.scaleX,h.scaleY,d,p),c=h=null,function(y){for(var g=-1,x=p.length,_;++g=0&&e._call.call(void 0,n),e=e._next;--di}function rp(){Sr=(Ta=Mo.now())+cl,di=Gi=0;try{SS()}finally{di=0,CS(),Sr=0}}function NS(){var e=Mo.now(),n=e-Ta;n>z0&&(cl-=n,Ta=e)}function CS(){for(var e,n=Ea,r,i=1/0;n;)n._call?(i>n._time&&(i=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:Ea=r);Xi=e,fc(i)}function fc(e){if(!di){Gi&&(Gi=clearTimeout(Gi));var n=e-Sr;n>24?(e<1/0&&(Gi=setTimeout(rp,e-Mo.now()-cl)),Mi&&(Mi=clearInterval(Mi))):(Mi||(Ta=Mo.now(),Mi=setInterval(NS,z0)),di=1,F0(rp))}}function ip(e,n,r){var i=new Aa;return n=n==null?0:+n,i.restart(o=>{i.stop(),e(o+n)},n,r),i}var ES=qo("start","end","cancel","interrupt"),TS=[],$0=0,op=1,dc=2,Gs=3,sp=4,hc=5,Xs=6;function fl(e,n,r,i,o,s){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;AS(e,r,{name:n,index:i,group:o,on:ES,tween:TS,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:$0})}function Uf(e,n){var r=Bt(e,n);if(r.state>$0)throw new Error("too late; already scheduled");return r}function rn(e,n){var r=Bt(e,n);if(r.state>Gs)throw new Error("too late; already running");return r}function Bt(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function AS(e,n,r){var i=e.__transition,o;i[n]=r,r.timer=Lf(s,0,r.time);function s(c){r.state=op,r.timer.restart(a,r.delay,r.time),r.delay<=c&&a(c-r.delay)}function a(c){var h,d,p,y;if(r.state!==op)return f();for(h in i)if(y=i[h],y.name===r.name){if(y.state===Gs)return ip(a);y.state===sp?(y.state=Xs,y.timer.stop(),y.on.call("interrupt",e,e.__data__,y.index,y.group),delete i[h]):+hdc&&i.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function sN(e,n,r){var i,o,s=oN(n)?Uf:rn;return function(){var a=s(this,e),l=a.on;l!==i&&(o=(i=l).copy()).on(n,r),a.on=o}}function aN(e,n){var r=this._id;return arguments.length<2?Bt(this.node(),r).on.on(e):this.each(sN(r,e,n))}function lN(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function uN(){return this.on("end.remove",lN(this._id))}function cN(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Of(e));for(var i=this._groups,o=i.length,s=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(n>15)return U0;const r=10**n;return function(i){this._+=i[0];for(let o=1,s=i.length;osr)if(!(Math.abs(d*f-c*h)>sr)||!s)this._append`L${this._x1=n},${this._y1=r}`;else{let y=i-a,g=o-l,x=f*f+c*c,_=y*y+g*g,m=Math.sqrt(x),v=Math.sqrt(p),w=s*Math.tan((pc-Math.acos((x+p-_)/(2*m*v)))/2),b=w/v,k=w/m;Math.abs(b-1)>sr&&this._append`L${n+b*h},${r+b*d}`,this._append`A${s},${s},0,0,${+(d*y>h*g)},${this._x1=n+k*f},${this._y1=r+k*c}`}}arc(n,r,i,o,s,a){if(n=+n,r=+r,i=+i,a=!!a,i<0)throw new Error(`negative radius: ${i}`);let l=i*Math.cos(o),f=i*Math.sin(o),c=n+l,h=r+f,d=1^a,p=a?o-s:s-o;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>sr||Math.abs(this._y1-h)>sr)&&this._append`L${c},${h}`,i&&(p<0&&(p=p%mc+mc),p>zN?this._append`A${i},${i},0,1,${d},${n-l},${r-f}A${i},${i},0,1,${d},${this._x1=c},${this._y1=h}`:p>sr&&this._append`A${i},${i},0,${+(p>=pc)},${d},${this._x1=n+i*Math.cos(s)},${this._y1=r+i*Math.sin(s)}`)}rect(n,r,i,o){this._append`M${this._x0=this._x1=+n},${this._y0=this._y1=+r}h${i=+i}v${+o}h${-i}Z`}toString(){return this._}}function H0(){return new B0}H0.prototype=B0.prototype;function $N(e){const n=+this._x.call(null,e),r=+this._y.call(null,e);return V0(this.cover(n,r),n,r,e)}function V0(e,n,r,i){if(isNaN(n)||isNaN(r))return e;var o,s=e._root,a={data:i},l=e._x0,f=e._y0,c=e._x1,h=e._y1,d,p,y,g,x,_,m,v;if(!s)return e._root=a,e;for(;s.length;)if((x=n>=(d=(l+c)/2))?l=d:c=d,(_=r>=(p=(f+h)/2))?f=p:h=p,o=s,!(s=s[m=_<<1|x]))return o[m]=a,e;if(y=+e._x.call(null,s.data),g=+e._y.call(null,s.data),n===y&&r===g)return a.next=s,o?o[m]=a:e._root=a,e;do o=o?o[m]=new Array(4):e._root=new Array(4),(x=n>=(d=(l+c)/2))?l=d:c=d,(_=r>=(p=(f+h)/2))?f=p:h=p;while((m=_<<1|x)===(v=(g>=p)<<1|y>=d));return o[v]=s,o[m]=a,e}function DN(e){var n,r,i=e.length,o,s,a=new Array(i),l=new Array(i),f=1/0,c=1/0,h=-1/0,d=-1/0;for(r=0;rh&&(h=o),sd&&(d=s));if(f>h||c>d)return this;for(this.cover(f,c).cover(h,d),r=0;re||e>=o||i>n||n>=s;)switch(c=(nh||(l=g.y0)>d||(f=g.x1)=m)<<1|e>=_)&&(g=p[p.length-1],p[p.length-1]=p[p.length-1-x],p[p.length-1-x]=g)}else{var v=e-+this._x.call(null,y.data),w=n-+this._y.call(null,y.data),b=v*v+w*w;if(b=(p=(a+f)/2))?a=p:f=p,(x=d>=(y=(l+c)/2))?l=y:c=y,n=r,!(r=r[_=x<<1|g]))return this;if(!r.length)break;(n[_+1&3]||n[_+2&3]||n[_+3&3])&&(i=n,m=_)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(s=r.next)&&delete r.next,o?(s?o.next=s:delete o.next,this):n?(s?n[_]=s:delete n[_],(r=n[0]||n[1]||n[2]||n[3])&&r===(n[3]||n[2]||n[1]||n[0])&&!r.length&&(i?i[m]=r:this._root=r),this):(this._root=s,this)}function VN(e){for(var n=0,r=e.length;np.index){var O=y-T.x-T.vx,N=g-T.y-T.vy,P=O*O+N*N;Py+A||jg+A||Cc.r&&(c.r=c[h].r)}function f(){if(n){var c,h=n.length,d;for(r=new Array(h),c=0;c=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Pa(e,n){if((r=(e=n?e.toExponential(n-1):e.toExponential()).indexOf("e"))<0)return null;var r,i=e.slice(0,r);return[i.length>1?i[0]+i.slice(2):i,+e.slice(r+1)]}function hi(e){return e=Pa(Math.abs(e)),e?e[1]:NaN}function iC(e,n){return function(r,i){for(var o=r.length,s=[],a=0,l=e[0],f=0;o>0&&l>0&&(f+l+1>i&&(l=Math.max(1,i-f)),s.push(r.substring(o-=l,o+l)),!((f+=l+1)>i));)l=e[a=(a+1)%e.length];return s.reverse().join(n)}}function oC(e){return function(n){return n.replace(/[0-9]/g,function(r){return e[+r]})}}var sC=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ra(e){if(!(n=sC.exec(e)))throw new Error("invalid format: "+e);var n;return new Wf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}Ra.prototype=Wf.prototype;function Wf(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Wf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function aC(e){e:for(var n=e.length,r=1,i=-1,o;r0&&(i=0);break}return i>0?e.slice(0,i)+e.slice(o+1):e}var W0;function lC(e,n){var r=Pa(e,n);if(!r)return e+"";var i=r[0],o=r[1],s=o-(W0=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=i.length;return s===a?i:s>a?i+new Array(s-a+1).join("0"):s>0?i.slice(0,s)+"."+i.slice(s):"0."+new Array(1-s).join("0")+Pa(e,Math.max(0,n+s-1))[0]}function up(e,n){var r=Pa(e,n);if(!r)return e+"";var i=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}const cp={"%":(e,n)=>(e*100).toFixed(n),b:e=>Math.round(e).toString(2),c:e=>e+"",d:rC,e:(e,n)=>e.toExponential(n),f:(e,n)=>e.toFixed(n),g:(e,n)=>e.toPrecision(n),o:e=>Math.round(e).toString(8),p:(e,n)=>up(e*100,n),r:up,s:lC,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function fp(e){return e}var dp=Array.prototype.map,hp=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function uC(e){var n=e.grouping===void 0||e.thousands===void 0?fp:iC(dp.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",i=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",s=e.numerals===void 0?fp:oC(dp.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"−":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function c(d){d=Ra(d);var p=d.fill,y=d.align,g=d.sign,x=d.symbol,_=d.zero,m=d.width,v=d.comma,w=d.precision,b=d.trim,k=d.type;k==="n"?(v=!0,k="g"):cp[k]||(w===void 0&&(w=12),b=!0,k="g"),(_||p==="0"&&y==="=")&&(_=!0,p="0",y="=");var j=x==="$"?r:x==="#"&&/[boxX]/.test(k)?"0"+k.toLowerCase():"",C=x==="$"?i:/[%p]/.test(k)?a:"",T=cp[k],F=/[defgprs%]/.test(k);w=w===void 0?6:/[gprs]/.test(k)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function A(O){var N=j,P=C,S,L,R;if(k==="c")P=T(O)+P,O="";else{O=+O;var B=O<0||1/O<0;if(O=isNaN(O)?f:T(Math.abs(O),w),b&&(O=aC(O)),B&&+O==0&&g!=="+"&&(B=!1),N=(B?g==="("?g:l:g==="-"||g==="("?"":g)+N,P=(k==="s"?hp[8+W0/3]:"")+P+(B&&g==="("?")":""),F){for(S=-1,L=O.length;++SR||R>57){P=(R===46?o+O.slice(S+1):O.slice(S))+P,O=O.slice(0,S);break}}}v&&!_&&(O=n(O,1/0));var D=N.length+O.length+P.length,z=D>1)+N+O+P+z.slice(D);break;default:O=z+N+O+P;break}return s(O)}return A.toString=function(){return d+""},A}function h(d,p){var y=c((d=Ra(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(hi(p)/3)))*3,x=Math.pow(10,-g),_=hp[8+g/3];return function(m){return y(x*m)+_}}return{format:c,formatPrefix:h}}var js,q0,G0;cC({thousands:",",grouping:[3],currency:["$",""]});function cC(e){return js=uC(e),q0=js.format,G0=js.formatPrefix,js}function fC(e){return Math.max(0,-hi(Math.abs(e)))}function dC(e,n){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(hi(n)/3)))*3-hi(Math.abs(e)))}function hC(e,n){return e=Math.abs(e),n=Math.abs(n)-e,Math.max(0,hi(n)-hi(e))+1}function X0(e,n){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(n).domain(e);break}return this}const pp=Symbol("implicit");function Y0(){var e=new Uh,n=[],r=[],i=pp;function o(s){let a=e.get(s);if(a===void 0){if(i!==pp)return i;e.set(s,a=n.push(s)-1)}return r[a%r.length]}return o.domain=function(s){if(!arguments.length)return n.slice();n=[],e=new Uh;for(const a of s)e.has(a)||e.set(a,n.push(a)-1);return o},o.range=function(s){return arguments.length?(r=Array.from(s),o):r.slice()},o.unknown=function(s){return arguments.length?(i=s,o):i},o.copy=function(){return Y0(n,r).unknown(i)},X0.apply(o,arguments),o}function pC(e){return function(){return e}}function mC(e){return+e}var mp=[0,1];function Ln(e){return e}function gc(e,n){return(n-=e=+e)?function(r){return(r-e)/n}:pC(isNaN(n)?NaN:.5)}function gC(e,n){var r;return e>n&&(r=e,e=n,n=r),function(i){return Math.max(e,Math.min(n,i))}}function yC(e,n,r){var i=e[0],o=e[1],s=n[0],a=n[1];return o2?vC:yC,f=c=null,d}function d(p){return p==null||isNaN(p=+p)?s:(f||(f=l(e.map(i),n,r)))(i(a(p)))}return d.invert=function(p){return a(o((c||(c=l(n,e.map(i),zt)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,mC),h()):e.slice()},d.range=function(p){return arguments.length?(n=Array.from(p),h()):n.slice()},d.rangeRound=function(p){return n=Array.from(p),r=mS,h()},d.clamp=function(p){return arguments.length?(a=p?!0:Ln,h()):a!==Ln},d.interpolate=function(p){return arguments.length?(r=p,h()):r},d.unknown=function(p){return arguments.length?(s=p,d):s},function(p,y){return i=p,o=y,h()}}function wC(e,n,r,i){var o=rk(e,n,r),s;switch(i=Ra(i??",f"),i.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(n));return i.precision==null&&!isNaN(s=dC(o,a))&&(i.precision=s),G0(i,a)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(s=hC(o,Math.max(Math.abs(e),Math.abs(n))))&&(i.precision=s-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(s=fC(o))&&(i.precision=s-(i.type==="%")*2);break}}return q0(i)}function bC(e){var n=e.domain;return e.ticks=function(r){var i=n();return nk(i[0],i[i.length-1],r??10)},e.tickFormat=function(r,i){var o=n();return wC(o[0],o[o.length-1],r??10,i)},e.nice=function(r){r==null&&(r=10);var i=n(),o=0,s=i.length-1,a=i[o],l=i[s],f,c,h=10;for(l0;){if(c=oc(a,l,r),c===f)return i[o]=a,i[s]=l,n(i);if(c>0)a=Math.floor(a/c)*c,l=Math.ceil(l/c)*c;else if(c<0)a=Math.ceil(a*c)/c,l=Math.floor(l*c)/c;else break;f=c}return e},e}function gp(e){return function(n){return n<0?-Math.pow(-n,e):Math.pow(n,e)}}function kC(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function jC(e){return e<0?-e*e:e*e}function SC(e){var n=e(Ln,Ln),r=1;function i(){return r===1?e(Ln,Ln):r===.5?e(kC,jC):e(gp(r),gp(1/r))}return n.exponent=function(o){return arguments.length?(r=+o,i()):r},bC(n)}function Q0(){var e=SC(_C());return e.copy=function(){return xC(e,Q0()).exponent(e.exponent())},X0.apply(e,arguments),e}function NC(e){for(var n=e.length/6|0,r=new Array(n),i=0;i()=>e;function EC(e,{sourceEvent:n,target:r,transform:i,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function gn(e,n,r){this.k=e,this.x=n,this.y=r}gn.prototype={constructor:gn,scale:function(e){return e===1?this:new gn(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new gn(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var qf=new gn(1,0,0);Yt.prototype=gn.prototype;function Yt(e){for(;!e.__zoom;)if(!(e=e.parentNode))return qf;return e.__zoom}function Kl(e){e.stopImmediatePropagation()}function Oi(e){e.preventDefault(),e.stopImmediatePropagation()}function TC(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function AC(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function yp(){return this.__zoom||qf}function PC(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function RC(){return navigator.maxTouchPoints||"ontouchstart"in this}function MC(e,n,r){var i=e.invertX(n[0][0])-r[0][0],o=e.invertX(n[1][0])-r[1][0],s=e.invertY(n[0][1])-r[0][1],a=e.invertY(n[1][1])-r[1][1];return e.translate(o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o),a>s?(s+a)/2:Math.min(0,s)||Math.max(0,a))}function OC(){var e=TC,n=AC,r=MC,i=PC,o=RC,s=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,f=kS,c=qo("start","zoom","end"),h,d,p,y=500,g=150,x=0,_=10;function m(S){S.property("__zoom",yp).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",F).on("dblclick.zoom",A).filter(o).on("touchstart.zoom",O).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,L,R,B){var D=S.selection?S.selection():S;D.property("__zoom",yp),S!==D?k(S,L,R,B):D.interrupt().each(function(){j(this,arguments).event(B).start().zoom(null,typeof L=="function"?L.apply(this,arguments):L).end()})},m.scaleBy=function(S,L,R,B){m.scaleTo(S,function(){var D=this.__zoom.k,z=typeof L=="function"?L.apply(this,arguments):L;return D*z},R,B)},m.scaleTo=function(S,L,R,B){m.transform(S,function(){var D=n.apply(this,arguments),z=this.__zoom,U=R==null?b(D):typeof R=="function"?R.apply(this,arguments):R,q=z.invert(U),X=typeof L=="function"?L.apply(this,arguments):L;return r(w(v(z,X),U,q),D,a)},R,B)},m.translateBy=function(S,L,R,B){m.transform(S,function(){return r(this.__zoom.translate(typeof L=="function"?L.apply(this,arguments):L,typeof R=="function"?R.apply(this,arguments):R),n.apply(this,arguments),a)},null,B)},m.translateTo=function(S,L,R,B,D){m.transform(S,function(){var z=n.apply(this,arguments),U=this.__zoom,q=B==null?b(z):typeof B=="function"?B.apply(this,arguments):B;return r(qf.translate(q[0],q[1]).scale(U.k).translate(typeof L=="function"?-L.apply(this,arguments):-L,typeof R=="function"?-R.apply(this,arguments):-R),z,a)},B,D)};function v(S,L){return L=Math.max(s[0],Math.min(s[1],L)),L===S.k?S:new gn(L,S.x,S.y)}function w(S,L,R){var B=L[0]-R[0]*S.k,D=L[1]-R[1]*S.k;return B===S.x&&D===S.y?S:new gn(S.k,B,D)}function b(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function k(S,L,R,B){S.on("start.zoom",function(){j(this,arguments).event(B).start()}).on("interrupt.zoom end.zoom",function(){j(this,arguments).event(B).end()}).tween("zoom",function(){var D=this,z=arguments,U=j(D,z).event(B),q=n.apply(D,z),X=R==null?b(q):typeof R=="function"?R.apply(D,z):R,ne=Math.max(q[1][0]-q[0][0],q[1][1]-q[0][1]),ee=D.__zoom,_e=typeof L=="function"?L.apply(D,z):L,G=f(ee.invert(X).concat(ne/ee.k),_e.invert(X).concat(ne/_e.k));return function(ie){if(ie===1)ie=_e;else{var Te=G(ie),on=ne/Te[2];ie=new gn(on,X[0]-Te[0]*on,X[1]-Te[1]*on)}U.zoom(null,ie)}})}function j(S,L,R){return!R&&S.__zooming||new C(S,L)}function C(S,L){this.that=S,this.args=L,this.active=0,this.sourceEvent=null,this.extent=n.apply(S,L),this.taps=0}C.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,L){return this.mouse&&S!=="mouse"&&(this.mouse[1]=L.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=L.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=L.invert(this.touch1[0])),this.that.__zoom=L,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var L=ct(this.that).datum();c.call(S,this.that,new EC(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),L)}};function T(S,...L){if(!e.apply(this,arguments))return;var R=j(this,L).event(S),B=this.__zoom,D=Math.max(s[0],Math.min(s[1],B.k*Math.pow(2,i.apply(this,arguments)))),z=Qt(S);if(R.wheel)(R.mouse[0][0]!==z[0]||R.mouse[0][1]!==z[1])&&(R.mouse[1]=B.invert(R.mouse[0]=z)),clearTimeout(R.wheel);else{if(B.k===D)return;R.mouse=[z,B.invert(z)],Ys(this),R.start()}Oi(S),R.wheel=setTimeout(U,g),R.zoom("mouse",r(w(v(B,D),R.mouse[0],R.mouse[1]),R.extent,a));function U(){R.wheel=null,R.end()}}function F(S,...L){if(p||!e.apply(this,arguments))return;var R=S.currentTarget,B=j(this,L,!0).event(S),D=ct(S.view).on("mousemove.zoom",X,!0).on("mouseup.zoom",ne,!0),z=Qt(S,R),U=S.clientX,q=S.clientY;C0(S.view),Kl(S),B.mouse=[z,this.__zoom.invert(z)],Ys(this),B.start();function X(ee){if(Oi(ee),!B.moved){var _e=ee.clientX-U,G=ee.clientY-q;B.moved=_e*_e+G*G>x}B.event(ee).zoom("mouse",r(w(B.that.__zoom,B.mouse[0]=Qt(ee,R),B.mouse[1]),B.extent,a))}function ne(ee){D.on("mousemove.zoom mouseup.zoom",null),E0(ee.view,B.moved),Oi(ee),B.event(ee).end()}}function A(S,...L){if(e.apply(this,arguments)){var R=this.__zoom,B=Qt(S.changedTouches?S.changedTouches[0]:S,this),D=R.invert(B),z=R.k*(S.shiftKey?.5:2),U=r(w(v(R,z),B,D),n.apply(this,L),a);Oi(S),l>0?ct(this).transition().duration(l).call(k,U,B,S):ct(this).call(m.transform,U,B,S)}}function O(S,...L){if(e.apply(this,arguments)){var R=S.touches,B=R.length,D=j(this,L,S.changedTouches.length===B).event(S),z,U,q,X;for(Kl(S),U=0;U{B()},[A,n,N]);const R=E.useCallback(G=>{if(i.length===0)return!0;for(const ie of i)if((zC[ie]||[]).includes(G.category))return!0;return!1},[i]),B=async()=>{try{c(!0),d(null);const G=await bb({min_amount:A>0?A:void 0,include_relationships:n&&(N==="relationships"||N==="combined"),limit:200});l(G)}catch(G){console.error("Error loading Sankey data:",G),d("Failed to load Sankey diagram data")}finally{c(!1)}};E.useEffect(()=>{a&&o.current&&s.current&&z()},[a,p,g,v,b,N,i]);const D=E.useMemo(()=>{if(!a)return[];const G=new Set(a.nodes.map(ie=>ie.category).filter(Boolean));return Array.from(G).sort()},[a]),z=()=>{if(!a||!o.current||!s.current)return;const G=ct(o.current);G.selectAll("*").remove();const ie=s.current,Te=ie.clientWidth,on=Math.max(600,ie.clientHeight||600),Ht={top:20,right:20,bottom:20,left:20};G.attr("width",Te).attr("height",on);let Et=a.links;N==="money"?Et=a.links.filter(W=>W.type==="money_flow"):N==="relationships"&&(Et=a.links.filter(W=>W.type==="relationship"));const bi=new Set;Et.forEach(W=>{bi.add(W.source),bi.add(W.target)});let yt=a.nodes.filter(W=>bi.has(W.name));if(i.length>0){yt=yt.filter(K=>R(K));const W=new Set(yt.map(K=>K.name));Et=Et.filter(K=>W.has(K.source)&&W.has(K.target))}if(yt.length===0||Et.length===0){G.append("text").attr("x",Te/2).attr("y",on/2).attr("text-anchor","middle").attr("fill","currentColor").text("No data to display");return}const we=[],sn=new Map,Nn=new Set,Cn=[],Qo=new Set;for(Et.forEach(W=>Qo.add(W.target)),yt.forEach(W=>{Qo.has(W.name)||Cn.push({name:W.name,layer:0})}),Cn.length===0&&yt.length>0&&Cn.push({name:yt[0].name,layer:0});Cn.length>0;){const{name:W,layer:K}=Cn.shift();Nn.has(W)||(Nn.add(W),sn.set(W,K),we[K]||(we[K]=[]),we[K].push(W),Et.forEach(ae=>{ae.source===W&&!Nn.has(ae.target)&&Cn.push({name:ae.target,layer:K+1})}))}yt.forEach(W=>{if(!sn.has(W.name)){const K=we.length;sn.set(W.name,K),we[K]||(we[K]=[]),we[K].push(W.name)}});const ki=20,Pr=30,ke=(Te-Ht.left-Ht.right)/Math.max(we.length,1),En=new Map;we.forEach((W,K)=>{const ae=Ht.top+(on-Ht.top-Ht.bottom)/2,Tn=Ht.left+K*ke,at=W.length*(ki+Pr)-Pr,Ko=ae-at/2;W.forEach((Jo,yl)=>{const tr=yt.find(ts=>ts.name===Jo),Zo=(tr==null?void 0:tr.value)||1,es=Math.max(10,Math.min(50,Math.sqrt(Zo)*2));En.set(Jo,{x:Tn,y:Ko+yl*(ki+Pr),width:es,height:ki})})});const Vt=G.append("g").attr("transform",`translate(${b.x}, ${b.y}) scale(${v})`),$=Vt.append("g").attr("class","links");Et.forEach(W=>{const K=En.get(W.source),ae=En.get(W.target);if(!K||!ae)return;const Tn=p===W.source||p===W.target,at=g===`${W.source}-${W.target}`,Jo=p&&p!==W.source&&p!==W.target?.1:at?.8:.3,yl=at?4:Tn?3:2,tr=H0(),Zo=K.x+K.width,es=K.y+K.height/2,ts=ae.x,rd=ae.y+ae.height/2,id=(Zo+ts)/2;tr.moveTo(Zo,es),tr.bezierCurveTo(id,es,id,rd,ts,rd),$.append("path").attr("d",tr.toString()).attr("stroke","#999").attr("stroke-width",yl).attr("fill","none").attr("opacity",Jo).attr("data-link-id",`${W.source}-${W.target}`).on("mouseenter",od=>{x(`${W.source}-${W.target}`);const Uv=`${W.source} → ${W.target} +${W.label||""} +Value: ${U(W.value)}`;m({x:od.pageX,y:od.pageY,content:Uv})}).on("mouseleave",()=>{x(null),m(null)})});const J=Vt.append("g").attr("class","nodes");yt.forEach(W=>{const K=En.get(W.name);if(!K)return;const ae=p===W.name,Tn=Ns[W.category]||Ns.default;J.append("rect").attr("x",K.x).attr("y",K.y).attr("width",K.width).attr("height",K.height).attr("fill",Tn).attr("stroke",ae?"#fff":"none").attr("stroke-width",ae?2:0).attr("opacity",p&&!ae?.3:1).attr("cursor","pointer").attr("data-node-name",W.name).on("click",()=>{const at=ae?null:W.name;y(at),r&&r(at||"")}).on("mouseenter",at=>{const Ko=`${W.name} +Category: ${W.category} +Value: ${U(W.value)}`;m({x:at.pageX,y:at.pageY,content:Ko})}).on("mouseleave",()=>{g||m(null)}),J.append("text").attr("x",K.x+K.width+5).attr("y",K.y+K.height/2).attr("dy","0.35em").attr("fill","currentColor").attr("font-size","12px").attr("opacity",p&&!ae?.3:.8).text(W.name.length>20?W.name.substring(0,20)+"...":W.name)})},U=G=>G>=1e9?`$${(G/1e9).toFixed(2)}B`:G>=1e6?`$${(G/1e6).toFixed(2)}M`:G>=1e3?`$${(G/1e3).toFixed(1)}K`:`$${G.toFixed(0)}`,q=E.useCallback(G=>{G.preventDefault();const ie=G.deltaY>0?.9:1.1;w(Te=>Math.max(.5,Math.min(3,Te*ie)))},[]),X=E.useCallback(G=>{G.button===0&&(C(!0),F({x:G.clientX-b.x,y:G.clientY-b.y}))},[b]),ne=E.useCallback(G=>{j&&k({x:G.clientX-T.x,y:G.clientY-T.y})},[j,T]),ee=E.useCallback(()=>{C(!1)},[]),_e=()=>{w(1),k({x:0,y:0}),y(null)};return f?u.jsxs("div",{className:"sankey-container loading-state",children:[u.jsx(Dy,{size:32,className:"loading-spinner"}),u.jsx("span",{children:"Loading Sankey diagram..."})]}):h?u.jsx("div",{className:"sankey-container error",children:h}):u.jsxs("div",{className:"sankey-container",ref:s,children:[u.jsxs("div",{className:"sankey-controls",children:[u.jsxs("div",{className:"control-group",children:[u.jsx("label",{children:"View Type:"}),u.jsxs("select",{value:N,onChange:G=>P(G.target.value),children:[u.jsx("option",{value:"combined",children:"Combined"}),u.jsx("option",{value:"money",children:"Money Flows Only"}),u.jsx("option",{value:"relationships",children:"Relationships Only"})]})]}),u.jsxs("div",{className:"control-group",children:[u.jsxs("label",{children:["Min Amount: ",U(A)]}),u.jsx("input",{type:"range",min:"0",max:(a==null?void 0:a.links.reduce((G,ie)=>Math.max(G,ie.value),0))||1e9,step:"1000000",value:A,onChange:G=>O(Number(G.target.value))})]}),u.jsx("button",{onClick:_e,className:"btn btn-secondary",children:"Reset View"}),p&&u.jsx("button",{onClick:()=>y(null),className:"btn btn-secondary",children:"Clear Selection"}),u.jsxs("button",{onClick:()=>L(!S),className:`btn btn-secondary ${S?"active":""}`,title:"Toggle Legend",children:["Legend ",S?"▼":"▲"]})]}),S&&D.length>0&&u.jsxs("div",{className:"sankey-legend",children:[u.jsx("h5",{children:"Entity Types"}),u.jsx("div",{className:"legend-items",children:D.map(G=>u.jsxs("div",{className:"legend-item",children:[u.jsx("span",{className:"legend-color",style:{backgroundColor:Ns[G]||Ns.default}}),u.jsx("span",{className:"legend-label",children:G})]},G))})]}),u.jsx("svg",{ref:o,className:"sankey-svg",onWheel:q,onMouseDown:X,onMouseMove:ne,onMouseUp:ee,onMouseLeave:ee}),u.jsxs("div",{className:"sankey-stats",children:[u.jsxs("span",{children:[(a==null?void 0:a.nodes.length)||0," entities"]}),u.jsxs("span",{children:[(a==null?void 0:a.links.length)||0," flows"]}),i.length>0&&u.jsx("span",{className:"filter-badge",children:"Filtered"})]}),_&&u.jsx("div",{className:"sankey-tooltip",style:{left:_.x+10,top:_.y+10},children:_.content.split(` +`).map((G,ie)=>u.jsx("div",{children:G},ie))})]})}function FC(){var d,p,y;const[e,n]=E.useState(null),[r,i]=E.useState(null),[o,s]=E.useState(!0),[a,l]=E.useState(null),{dataVersion:f}=ll();E.useEffect(()=>{c()},[f]);const c=async()=>{try{l(null);const[g,x]=await Promise.all([_b(),wb()]);n(g),i(x)}catch(g){console.error("Error loading analysis data:",g),l("Failed to load analysis data. Please try again.")}finally{s(!1)}},h=g=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(g);return u.jsxs("div",{className:"analysis fade-in",role:"main","aria-label":"Analysis page",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h1",{children:"Analysis"}),u.jsx("p",{children:"Visualize relationships and financial networks"})]}),a&&u.jsxs("div",{className:"alert alert-error",role:"alert",children:[a,u.jsx("button",{onClick:c,className:"btn btn-secondary",style:{marginLeft:"12px",padding:"6px 12px"},children:"Retry"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Entity Network Graph"}),u.jsx("p",{children:"Interactive visualization of entity relationships. Click and drag nodes to explore connections. Use controls to zoom and center the view."}),u.jsx(Pe,{to:"/analysis/network",style:{display:"inline-block",marginTop:8,color:"var(--primary-color)",fontWeight:600},children:"Open Full Network Graph →"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Sankey Flow Diagram"}),u.jsx("p",{children:"Visualize money flows and relationships between entities. Use the controls to filter by amount, toggle between flow types, and interact with nodes and links. Click nodes to highlight connections."}),u.jsx(K0,{})]}),o?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Top Recipients (Inflows)"}),u.jsx(so,{type:"table"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Top Sources (Outflows)"}),u.jsx(so,{type:"table"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Timeline"}),u.jsx(so,{type:"table"})]})]}):u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"card fade-in",children:[u.jsx("h3",{children:"Top Recipients (Inflows)"}),u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Top recipients by inflows",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx("th",{children:"Entity"}),u.jsx("th",{children:"Total Amount"})]})}),u.jsx("tbody",{children:(d=e==null?void 0:e.inflows)==null?void 0:d.slice(0,10).map((g,x)=>u.jsxs("tr",{children:[u.jsx("td",{children:g.entity}),u.jsx("td",{children:h(g.amount)})]},x))})]})})]}),u.jsxs("div",{className:"card fade-in",children:[u.jsx("h3",{children:"Top Sources (Outflows)"}),u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Top sources by outflows",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx("th",{children:"Entity"}),u.jsx("th",{children:"Total Amount"})]})}),u.jsx("tbody",{children:(p=e==null?void 0:e.outflows)==null?void 0:p.slice(0,10).map((g,x)=>u.jsxs("tr",{children:[u.jsx("td",{children:g.entity}),u.jsx("td",{children:h(g.amount)})]},x))})]})})]}),u.jsxs("div",{className:"card fade-in",children:[u.jsx("h3",{children:"Timeline"}),u.jsx("div",{className:"data-table-wrapper",children:u.jsxs("table",{className:"data-table",role:"table","aria-label":"Financial timeline",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsx("th",{children:"Year"}),u.jsx("th",{children:"Transaction Count"}),u.jsx("th",{children:"Total Amount"})]})}),u.jsx("tbody",{children:(y=r==null?void 0:r.timeline)==null?void 0:y.map(g=>u.jsxs("tr",{children:[u.jsx("td",{children:g.year}),u.jsx("td",{children:g.count}),u.jsx("td",{children:h(g.total_amount)})]},g.year))})]})})]})]})]})}function $C(){return u.jsxs("div",{className:"analysis-overview fade-in",role:"main","aria-label":"Analysis overview page",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h1",{children:"Analysis"}),u.jsx("p",{children:"Visualize relationships and financial networks"})]}),u.jsxs("div",{className:"visualization-cards",children:[u.jsxs(Pe,{to:"/analysis/network",className:"viz-card",children:[u.jsx("div",{className:"viz-card-icon",style:{background:"linear-gradient(135deg, #5B4FFF, #7c6fff)"},children:u.jsx(Ow,{size:48})}),u.jsxs("div",{className:"viz-card-content",children:[u.jsx("h3",{children:"Entity Network Graph"}),u.jsx("p",{children:"Interactive force-directed graph showing relationships between entities. Explore connections between government agencies, contractors, and research institutions."}),u.jsxs("ul",{className:"viz-card-features",children:[u.jsx("li",{children:"Click and drag nodes to explore"}),u.jsx("li",{children:"Filter by connection count"}),u.jsx("li",{children:"Toggle inferred relationships"}),u.jsx("li",{children:"Zoom and pan controls"})]})]}),u.jsx("span",{className:"viz-card-arrow",children:"→"})]}),u.jsxs(Pe,{to:"/analysis/sankey",className:"viz-card",children:[u.jsx("div",{className:"viz-card-icon",style:{background:"linear-gradient(135deg, #D4A218, #FFD700)"},children:u.jsx(Ew,{size:48})}),u.jsxs("div",{className:"viz-card-content",children:[u.jsx("h3",{children:"Sankey Flow Diagram"}),u.jsx("p",{children:"Visualize money flows and relationships between entities. Track funding paths from government agencies to contractors."}),u.jsxs("ul",{className:"viz-card-features",children:[u.jsx("li",{children:"Filter by minimum amount"}),u.jsx("li",{children:"Toggle flow types (money/relationships)"}),u.jsx("li",{children:"Click nodes to highlight connections"}),u.jsx("li",{children:"Hover for detailed tooltips"})]})]}),u.jsx("span",{className:"viz-card-arrow",children:"→"})]}),u.jsxs(Pe,{to:"/analysis/pyramid",className:"viz-card",children:[u.jsx("div",{className:"viz-card-icon",style:{background:"linear-gradient(135deg, #dc2626, #ea580c)"},children:u.jsx(Iy,{size:48})}),u.jsxs("div",{className:"viz-card-content",children:[u.jsxs("h3",{children:["Intelligence Stack Pyramid",u.jsx("span",{className:"viz-card-beta-badge",children:"Beta"})]}),u.jsx("p",{children:"Hierarchical visualization of U.S. intelligence agencies and their roles in UAP programs. Interactive pyramid showing command structure and oversight relationships."}),u.jsxs("ul",{className:"viz-card-features",children:[u.jsx("li",{children:"6-tier hierarchy: Control Group → Programs"}),u.jsx("li",{children:"Click tiers to filter entities"}),u.jsx("li",{children:"Visualize agency relationships"}),u.jsx("li",{children:"Track chain of command"})]}),u.jsxs("div",{className:"pyramid-preview",children:[u.jsx("div",{className:"pyramid-tier tier-1",children:"Control Group"}),u.jsx("div",{className:"pyramid-tier tier-2",children:"Administrators (NRO, CIA, DIA, NSA)"}),u.jsx("div",{className:"pyramid-tier tier-3",children:"FFRDCs (MITRE, Battelle, National Labs)"}),u.jsx("div",{className:"pyramid-tier tier-4",children:"Prime Contractors (LM, NG, RTX, Boeing)"}),u.jsx("div",{className:"pyramid-tier tier-5",children:"Facilities (Area 51, S4, Edwards AFB)"}),u.jsx("div",{className:"pyramid-tier tier-6",children:"Programs (Immaculate Constellation, Kona Blue)"})]})]}),u.jsx("span",{className:"viz-card-arrow",children:"→"})]}),u.jsxs(Pe,{to:"/analysis/foia",className:"viz-card",children:[u.jsx("div",{className:"viz-card-icon",style:{background:"linear-gradient(135deg, #059669, #0d9488)"},children:u.jsx(Cw,{size:48})}),u.jsxs("div",{className:"viz-card-content",children:[u.jsx("h3",{children:"FOIA Targets"}),u.jsx("p",{children:"Browse and prioritize FOIA targets with quality scoring. Filter by agency, priority, and specificity to find high-value requests."}),u.jsxs("ul",{className:"viz-card-features",children:[u.jsx("li",{children:"Sortable table with priority, specificity, and likelihood scores"}),u.jsx("li",{children:"Search across records and agencies"}),u.jsx("li",{children:"Expandable quality notes per target"}),u.jsx("li",{children:"Export-ready for FOIA request drafting"})]})]}),u.jsx("span",{className:"viz-card-arrow",children:"→"})]})]}),u.jsxs("div",{className:"card",children:[u.jsxs("h3",{children:[u.jsx($y,{size:20,style:{marginRight:"8px",verticalAlign:"middle"}}),"Quick Stats"]}),u.jsx("p",{children:"Summary statistics and financial data are available on the Dashboard. Use the visualizations above for detailed network exploration."}),u.jsxs(Pe,{to:"/",className:"btn btn-secondary",style:{marginTop:"12px"},children:[u.jsx($w,{size:16,style:{marginRight:"6px"}}),"View Dashboard"]})]}),u.jsx("style",{children:` + .visualization-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); + gap: 24px; + margin-bottom: 24px; + } + + .viz-card { + display: flex; + align-items: flex-start; + gap: 20px; + background: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: 12px; + padding: 24px; + text-decoration: none; + color: inherit; + transition: all 0.2s ease; + position: relative; + } + + .viz-card:hover { + border-color: var(--primary-color); + box-shadow: 0 4px 20px rgba(91, 79, 255, 0.15); + transform: translateY(-2px); + } + + .viz-card-icon { + flex-shrink: 0; + width: 80px; + height: 80px; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(135deg, var(--primary-color), #7c6fff); + border-radius: 12px; + color: white; + } + + .viz-card-content { + flex: 1; + } + + .viz-card-content h3 { + margin: 0 0 8px 0; + font-size: 1.25rem; + color: var(--text-primary); + } + + .viz-card-content p { + margin: 0 0 12px 0; + color: var(--text-secondary); + line-height: 1.5; + } + + .viz-card-features { + margin: 0; + padding-left: 20px; + color: var(--text-muted); + font-size: 0.9rem; + } + + .viz-card-features li { + margin-bottom: 4px; + } + + .viz-card-arrow { + position: absolute; + right: 20px; + top: 50%; + transform: translateY(-50%); + font-size: 24px; + color: var(--primary-color); + opacity: 0; + transition: opacity 0.2s ease; + } + + .viz-card:hover .viz-card-arrow { + opacity: 1; + } + + .viz-card-beta-badge { + display: inline-block; + font-size: 0.7rem; + background: linear-gradient(135deg, #10b981, #059669); + color: white; + padding: 2px 8px; + border-radius: 4px; + margin-left: 10px; + vertical-align: middle; + font-weight: 600; + text-transform: uppercase; + } + + .pyramid-preview { + margin-top: 16px; + display: flex; + flex-direction: column; + align-items: center; + gap: 2px; + } + + .pyramid-tier { + text-align: center; + padding: 4px 8px; + font-size: 0.7rem; + font-weight: 500; + border-radius: 2px; + color: white; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .pyramid-tier.tier-1 { + width: 30%; + background: #dc2626; + } + + .pyramid-tier.tier-2 { + width: 45%; + background: #ea580c; + } + + .pyramid-tier.tier-3 { + width: 60%; + background: #f59e0b; + } + + .pyramid-tier.tier-4 { + width: 75%; + background: #5b4fff; + } + + .pyramid-tier.tier-5 { + width: 90%; + background: #10b981; + } + + .pyramid-tier.tier-6 { + width: 100%; + background: #6366f1; + } + + @media (max-width: 768px) { + .visualization-cards { + grid-template-columns: 1fr; + } + + .viz-card { + flex-direction: column; + text-align: center; + } + + .viz-card-icon { + margin: 0 auto; + } + + .viz-card-features { + text-align: left; + } + + .viz-card-arrow { + display: none; + } + + .pyramid-tier { + font-size: 0.6rem; + } + } + `})]})}function DC(e,n){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var i,o,s,a,l=[],f=!0,c=!1;try{if(s=(r=r.call(e)).next,n===0){if(Object(r)!==r)return;f=!1}else for(;!(f=(i=s.call(r)).done)&&(l.push(i.value),l.length!==n);f=!0);}catch(h){c=!0,o=h}finally{try{if(!f&&r.return!=null&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}function IC(e,n,r){return n=GC(n),n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function vp(e,n){return BC(e)||DC(e,n)||J0(e,n)||WC()}function LC(e){return UC(e)||HC(e)||J0(e)||VC()}function UC(e){if(Array.isArray(e))return yc(e)}function BC(e){if(Array.isArray(e))return e}function HC(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function J0(e,n){if(e){if(typeof e=="string")return yc(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return yc(e,n)}}function yc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=new Array(n);re.length)&&(n=e.length);for(var r=0,i=Array(n);r1&&arguments[1]!==void 0?arguments[1]:{},r=n.wrapperElementType,i=r===void 0?"div":r,o=n.nodeMapper,s=o===void 0?function(h){return h}:o,a=n.methodNames,l=a===void 0?[]:a,f=n.initPropNames,c=f===void 0?[]:f;return E.forwardRef(function(h,d){var p=E.useRef(),y=E.useMemo(function(){var _=Object.fromEntries(c.filter(function(m){return h.hasOwnProperty(m)}).map(function(m){return[m,h[m]]}));return e(_)},[]);_p(function(){y(s(p.current))},E.useLayoutEffect),_p(function(){return y._destructor instanceof Function?y._destructor:void 0});var g=E.useCallback(function(_){for(var m=arguments.length,v=new Array(m>1?m-1:0),w=1;w1&&arguments[1]!==void 0?arguments[1]:E.useEffect,r=E.useRef(),i=E.useRef(!1),o=E.useRef(!1),s=E.useState(0),a=tE(s,2);a[0];var l=a[1];i.current&&(o.current=!0),n(function(){return i.current||(r.current=e(),i.current=!0),l(function(f){return f+1}),function(){o.current&&r.current&&r.current()}},[])}var rE=typeof global=="object"&&global&&global.Object===Object&&global,iE=typeof self=="object"&&self&&self.Object===Object&&self,ev=rE||iE||Function("return this")(),Ma=ev.Symbol,tv=Object.prototype,oE=tv.hasOwnProperty,sE=tv.toString,zi=Ma?Ma.toStringTag:void 0;function aE(e){var n=oE.call(e,zi),r=e[zi];try{e[zi]=void 0;var i=!0}catch{}var o=sE.call(e);return i&&(n?e[zi]=r:delete e[zi]),o}var lE=Object.prototype,uE=lE.toString;function cE(e){return uE.call(e)}var fE="[object Null]",dE="[object Undefined]",wp=Ma?Ma.toStringTag:void 0;function hE(e){return e==null?e===void 0?dE:fE:wp&&wp in Object(e)?aE(e):cE(e)}function pE(e){return e!=null&&typeof e=="object"}var mE="[object Symbol]";function gE(e){return typeof e=="symbol"||pE(e)&&hE(e)==mE}var yE=/\s/;function vE(e){for(var n=e.length;n--&&yE.test(e.charAt(n)););return n}var xE=/^\s+/;function _E(e){return e&&e.slice(0,vE(e)+1).replace(xE,"")}function Oa(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var bp=NaN,wE=/^[-+]0x[0-9a-f]+$/i,bE=/^0b[01]+$/i,kE=/^0o[0-7]+$/i,jE=parseInt;function kp(e){if(typeof e=="number")return e;if(gE(e))return bp;if(Oa(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=Oa(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=_E(e);var r=bE.test(e);return r||kE.test(e)?jE(e.slice(2),r?2:8):wE.test(e)?bp:+e}var Jl=function(){return ev.Date.now()},SE="Expected a function",NE=Math.max,CE=Math.min;function nv(e,n,r){var i,o,s,a,l,f,c=0,h=!1,d=!1,p=!0;if(typeof e!="function")throw new TypeError(SE);n=kp(n)||0,Oa(r)&&(h=!!r.leading,d="maxWait"in r,s=d?NE(kp(r.maxWait)||0,n):s,p="trailing"in r?!!r.trailing:p);function y(j){var C=i,T=o;return i=o=void 0,c=j,a=e.apply(T,C),a}function g(j){return c=j,l=setTimeout(m,n),h?y(j):a}function x(j){var C=j-f,T=j-c,F=n-C;return d?CE(F,s-T):F}function _(j){var C=j-f,T=j-c;return f===void 0||C>=n||C<0||d&&T>=s}function m(){var j=Jl();if(_(j))return v(j);l=setTimeout(m,x(j))}function v(j){return l=void 0,p&&i?y(j):(i=o=void 0,a)}function w(){l!==void 0&&clearTimeout(l),c=0,i=f=o=l=void 0}function b(){return l===void 0?a:v(Jl())}function k(){var j=Jl(),C=_(j);if(i=arguments,o=this,f=j,C){if(l===void 0)return g(f);if(d)return clearTimeout(l),l=setTimeout(m,n),y(f)}return l===void 0&&(l=setTimeout(m,n)),a}return k.cancel=w,k.flush=b,k}var EE="Expected a function";function TE(e,n,r){var i=!0,o=!0;if(typeof e!="function")throw new TypeError(EE);return Oa(r)&&(i="leading"in r?!!r.leading:i,o="trailing"in r?!!r.trailing:o),nv(e,n,{leading:i,maxWait:n,trailing:o})}var yr=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var n=1.70158;return e===1?1:e*e*((n+1)*e-n)},Out:function(e){var n=1.70158;return e===0?0:--e*e*((n+1)*e+n)+1},InOut:function(e){var n=2.5949095;return(e*=2)<1?.5*(e*e*((n+1)*e-n)):.5*((e-=2)*e*((n+1)*e+n)+2)}}),Bounce:Object.freeze({In:function(e){return 1-yr.Bounce.Out(1-e)},Out:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},InOut:function(e){return e<.5?yr.Bounce.In(e*2)*.5:yr.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e1e4?1e4:e,{In:function(n){return Math.pow(n,e)},Out:function(n){return 1-Math.pow(1-n,e)},InOut:function(n){return n<.5?Math.pow(n*2,e)/2:(1-Math.pow(2-n*2,e))/2+.5}}}}),Yi=function(){return performance.now()},rv=function(){function e(){for(var n=[],r=0;r0;){this._tweensAddedDuringUpdate={};for(var o=0;o1?s(e[r],e[r-1],r-i):s(e[o],e[o+1>r?r:o+1],i-o)},Utils:{Linear:function(e,n,r){return(n-e)*r+e}}},iv=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),_c=new rv,jp=function(){function e(n,r){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=yr.Linear.None,this._interpolationFunction=xc.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=iv.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=n,typeof r=="object"?(this._group=r,r.add(this)):r===!0&&(this._group=_c,_c.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(n,r){if(r===void 0&&(r=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=n,this._propertiesAreSetUp=!1,this._duration=r<0?0:r,this},e.prototype.duration=function(n){return n===void 0&&(n=1e3),this._duration=n<0?0:n,this},e.prototype.dynamic=function(n){return n===void 0&&(n=!1),this._isDynamic=n,this},e.prototype.start=function(n,r){if(n===void 0&&(n=Yi()),r===void 0&&(r=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=n,this._startTime+=this._delayTime,!this._propertiesAreSetUp||r){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var s in this._valuesEnd)o[s]=this._valuesEnd[s];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,r)}return this},e.prototype.startFromCurrentValues=function(n){return this.start(n,!0)},e.prototype._setupProperties=function(n,r,i,o,s){for(var a in i){var l=n[a],f=Array.isArray(l),c=f?"array":typeof l,h=!f&&Array.isArray(i[a]);if(!(c==="undefined"||c==="function")){if(h){var d=i[a];if(d.length===0)continue;for(var p=[l],y=0,g=d.length;y"u"||s)&&(r[a]=l),f||(r[a]*=1),h?o[a]=i[a].slice().reverse():o[a]=r[a]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(n){return n===void 0&&(n=Yi()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=n,this)},e.prototype.resume=function(n){return n===void 0&&(n=Yi()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=n-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var n=0,r=this._chainedTweens.length;nf)return 1;var x=Math.trunc(a/l),_=a-x*l,m=Math.min(_/i._duration,1);return m===0&&a===i._duration?1:m},h=c(),d=this._easingFunction(h);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,d),this._onUpdateCallback&&this._onUpdateCallback(this._object,h),this._duration===0||a>=this._duration)if(this._repeat>0){var p=Math.min(Math.trunc((a-this._duration)/l)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=p);for(s in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[s]=="string"&&(this._valuesStartRepeat[s]=this._valuesStartRepeat[s]+parseFloat(this._valuesEnd[s])),this._yoyo&&this._swapEndStartRepeatValues(s),this._valuesStart[s]=this._valuesStartRepeat[s];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=l*p,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var y=0,g=this._chainedTweens.length;ye.length)&&(n=e.length);for(var r=0,i=Array(n);r=0,s=!r&&o&&(n==="hex"||n==="hex6"||n==="hex3"||n==="hex4"||n==="hex8"||n==="name");return s?n==="name"&&this._a===0?this.toName():this.toRgbString():(n==="rgb"&&(i=this.toRgbString()),n==="prgb"&&(i=this.toPercentageRgbString()),(n==="hex"||n==="hex6")&&(i=this.toHexString()),n==="hex3"&&(i=this.toHexString(!0)),n==="hex4"&&(i=this.toHex8String(!0)),n==="hex8"&&(i=this.toHex8String()),n==="name"&&(i=this.toName()),n==="hsl"&&(i=this.toHslString()),n==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return Q(this.toString())},_applyModification:function(n,r){var i=n.apply(null,[this].concat([].slice.call(r)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(XE,arguments)},brighten:function(){return this._applyModification(YE,arguments)},darken:function(){return this._applyModification(QE,arguments)},desaturate:function(){return this._applyModification(WE,arguments)},saturate:function(){return this._applyModification(qE,arguments)},greyscale:function(){return this._applyModification(GE,arguments)},spin:function(){return this._applyModification(KE,arguments)},_applyCombination:function(n,r){return n.apply(null,[this].concat([].slice.call(r)))},analogous:function(){return this._applyCombination(e3,arguments)},complement:function(){return this._applyCombination(JE,arguments)},monochromatic:function(){return this._applyCombination(t3,arguments)},splitcomplement:function(){return this._applyCombination(ZE,arguments)},triad:function(){return this._applyCombination(Ap,[3])},tetrad:function(){return this._applyCombination(Ap,[4])}};Q.fromRatio=function(e,n){if(za(e)=="object"){var r={};for(var i in e)e.hasOwnProperty(i)&&(i==="a"?r[i]=e[i]:r[i]=Qi(e[i]));e=r}return Q(e,n)};function LE(e){var n={r:0,g:0,b:0},r=1,i=null,o=null,s=null,a=!1,l=!1;return typeof e=="string"&&(e=s3(e)),za(e)=="object"&&(ln(e.r)&&ln(e.g)&&ln(e.b)?(n=UE(e.r,e.g,e.b),a=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):ln(e.h)&&ln(e.s)&&ln(e.v)?(i=Qi(e.s),o=Qi(e.v),n=HE(e.h,i,o),a=!0,l="hsv"):ln(e.h)&&ln(e.s)&&ln(e.l)&&(i=Qi(e.s),s=Qi(e.l),n=BE(e.h,i,s),a=!0,l="hsl"),e.hasOwnProperty("a")&&(r=e.a)),r=ov(r),{ok:a,format:e.format||l,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:r}}function UE(e,n,r){return{r:he(e,255)*255,g:he(n,255)*255,b:he(r,255)*255}}function Np(e,n,r){e=he(e,255),n=he(n,255),r=he(r,255);var i=Math.max(e,n,r),o=Math.min(e,n,r),s,a,l=(i+o)/2;if(i==o)s=a=0;else{var f=i-o;switch(a=l>.5?f/(2-i-o):f/(i+o),i){case e:s=(n-r)/f+(n1&&(d-=1),d<1/6?c+(h-c)*6*d:d<1/2?h:d<2/3?c+(h-c)*(2/3-d)*6:c}if(n===0)i=o=s=r;else{var l=r<.5?r*(1+n):r+n-r*n,f=2*r-l;i=a(f,l,e+1/3),o=a(f,l,e),s=a(f,l,e-1/3)}return{r:i*255,g:o*255,b:s*255}}function Cp(e,n,r){e=he(e,255),n=he(n,255),r=he(r,255);var i=Math.max(e,n,r),o=Math.min(e,n,r),s,a,l=i,f=i-o;if(a=i===0?0:f/i,i==o)s=0;else{switch(i){case e:s=(n-r)/f+(n>1)+720)%360;--n;)i.h=(i.h+o)%360,s.push(Q(i));return s}function t3(e,n){n=n||6;for(var r=Q(e).toHsv(),i=r.h,o=r.s,s=r.v,a=[],l=1/n;n--;)a.push(Q({h:i,s:o,v:s})),s=(s+l)%1;return a}Q.mix=function(e,n,r){r=r===0?0:r||50;var i=Q(e).toRgb(),o=Q(n).toRgb(),s=r/100,a={r:(o.r-i.r)*s+i.r,g:(o.g-i.g)*s+i.g,b:(o.b-i.b)*s+i.b,a:(o.a-i.a)*s+i.a};return Q(a)};Q.readability=function(e,n){var r=Q(e),i=Q(n);return(Math.max(r.getLuminance(),i.getLuminance())+.05)/(Math.min(r.getLuminance(),i.getLuminance())+.05)};Q.isReadable=function(e,n,r){var i=Q.readability(e,n),o,s;switch(s=!1,o=a3(r),o.level+o.size){case"AAsmall":case"AAAlarge":s=i>=4.5;break;case"AAlarge":s=i>=3;break;case"AAAsmall":s=i>=7;break}return s};Q.mostReadable=function(e,n,r){var i=null,o=0,s,a,l,f;r=r||{},a=r.includeFallbackColors,l=r.level,f=r.size;for(var c=0;co&&(o=s,i=Q(n[c]));return Q.isReadable(e,i,{level:l,size:f})||!a?i:(r.includeFallbackColors=!1,Q.mostReadable(e,["#fff","#000"],r))};var wc=Q.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},n3=Q.hexNames=r3(wc);function r3(e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[e[r]]=r);return n}function ov(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function he(e,n){i3(e)&&(e="100%");var r=o3(e);return e=Math.min(n,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*n,10)/100),Math.abs(e-n)<1e-6?1:e%n/parseFloat(n)}function dl(e){return Math.min(1,Math.max(0,e))}function lt(e){return parseInt(e,16)}function i3(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function o3(e){return typeof e=="string"&&e.indexOf("%")!=-1}function $t(e){return e.length==1?"0"+e:""+e}function Qi(e){return e<=1&&(e=e*100+"%"),e}function sv(e){return Math.round(parseFloat(e)*255).toString(16)}function Pp(e){return lt(e)/255}var Pt=function(){var e="[-\\+]?\\d+%?",n="[-\\+]?\\d*\\.\\d+%?",r="(?:"+n+")|(?:"+e+")",i="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?",o="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?";return{CSS_UNIT:new RegExp(r),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+o),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+o),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+o),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function ln(e){return!!Pt.CSS_UNIT.exec(e)}function s3(e){e=e.replace(DE,"").replace(IE,"").toLowerCase();var n=!1;if(wc[e])e=wc[e],n=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r;return(r=Pt.rgb.exec(e))?{r:r[1],g:r[2],b:r[3]}:(r=Pt.rgba.exec(e))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=Pt.hsl.exec(e))?{h:r[1],s:r[2],l:r[3]}:(r=Pt.hsla.exec(e))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=Pt.hsv.exec(e))?{h:r[1],s:r[2],v:r[3]}:(r=Pt.hsva.exec(e))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=Pt.hex8.exec(e))?{r:lt(r[1]),g:lt(r[2]),b:lt(r[3]),a:Pp(r[4]),format:n?"name":"hex8"}:(r=Pt.hex6.exec(e))?{r:lt(r[1]),g:lt(r[2]),b:lt(r[3]),format:n?"name":"hex"}:(r=Pt.hex4.exec(e))?{r:lt(r[1]+""+r[1]),g:lt(r[2]+""+r[2]),b:lt(r[3]+""+r[3]),a:Pp(r[4]+""+r[4]),format:n?"name":"hex8"}:(r=Pt.hex3.exec(e))?{r:lt(r[1]+""+r[1]),g:lt(r[2]+""+r[2]),b:lt(r[3]+""+r[3]),format:n?"name":"hex"}:!1}function a3(e){var n,r;return e=e||{level:"AA",size:"small"},n=(e.level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),n!=="AA"&&n!=="AAA"&&(n="AA"),r!=="small"&&r!=="large"&&(r="small"),{level:n,size:r}}function bc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r0&&arguments[0]!==void 0?arguments[0]:6;c3(this,e),Rp(this,rr,void 0),Rp(this,un,void 0),Mp(un,this,n),this.reset()}return d3(e,[{key:"reset",value:function(){Mp(rr,this,["__reserved for background__"])}},{key:"register",value:function(r){if(vt(rr,this).length>=Math.pow(2,24-vt(un,this)))return null;var i=vt(rr,this).length,o=Op(i,vt(un,this)),s=_3(i+(o<<24-vt(un,this)));return vt(rr,this).push(r),s}},{key:"lookup",value:function(r){if(!r)return null;var i=typeof r=="string"?w3(r):lv.apply(void 0,m3(r));if(!i)return null;var o=i&Math.pow(2,24-vt(un,this))-1,s=i>>24-vt(un,this)&Math.pow(2,vt(un,this))-1;return Op(o,vt(un,this))!==s||o>=vt(rr,this).length?null:vt(rr,this)[o]}}])}(),Yo,me,uv,cv,ar,zp,fv,dv,hv,Xf,kc,jc,Oo={},pv=[],k3=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,hl=Array.isArray;function Jt(e,n){for(var r in n)e[r]=n[r];return e}function Yf(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function j3(e,n,r){var i,o,s,a={};for(s in n)s=="key"?i=n[s]:s=="ref"?o=n[s]:a[s]=n[s];if(arguments.length>2&&(a.children=arguments.length>3?Yo.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(s in e.defaultProps)a[s]===void 0&&(a[s]=e.defaultProps[s]);return ao(e,a,i,o,null)}function ao(e,n,r,i,o){var s={type:e,props:n,key:r,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++uv,__i:-1,__u:0};return o==null&&me.vnode!=null&&me.vnode(s),s}function pl(e){return e.children}function Qs(e,n){this.props=e,this.context=n}function pi(e,n){if(n==null)return e.__?pi(e.__,e.__i+1):null;for(var r;nl&&ar.sort(dv),e=ar.shift(),l=ar.length,e.__d&&(r=void 0,i=void 0,o=(i=(n=e).__v).__e,s=[],a=[],n.__P&&((r=Jt({},i)).__v=i.__v+1,me.vnode&&me.vnode(r),Qf(n.__P,r,i,n.__n,n.__P.namespaceURI,32&i.__u?[o]:null,s,o??pi(i),!!(32&i.__u),a),r.__v=i.__v,r.__.__k[r.__i]=r,vv(s,r,a),i.__e=i.__=null,r.__e!=o&&mv(r)));Fa.__r=0}function gv(e,n,r,i,o,s,a,l,f,c,h){var d,p,y,g,x,_,m,v=i&&i.__k||pv,w=n.length;for(f=S3(r,n,v,f,w),d=0;d0?ao(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=e,a.__b=e.__b+1,l=null,(c=a.__i=N3(a,r,f,d))!=-1&&(d--,(l=r[c])&&(l.__u|=2)),l==null||l.__v==null?(c==-1&&(o>h?p--:of?p--:p++,a.__u|=4))):e.__k[s]=null;if(d)for(s=0;s(h?1:0)){for(o=r-1,s=r+1;o>=0||s=0?o--:s++])!=null&&!(2&c.__u)&&l==c.key&&f==c.type)return a}return-1}function $p(e,n,r){n[0]=="-"?e.setProperty(n,r??""):e[n]=r==null?"":typeof r!="number"||k3.test(n)?r:r+"px"}function Cs(e,n,r,i,o){var s,a;e:if(n=="style")if(typeof r=="string")e.style.cssText=r;else{if(typeof i=="string"&&(e.style.cssText=i=""),i)for(n in i)r&&n in r||$p(e.style,n,"");if(r)for(n in r)i&&r[n]==i[n]||$p(e.style,n,r[n])}else if(n[0]=="o"&&n[1]=="n")s=n!=(n=n.replace(hv,"$1")),a=n.toLowerCase(),n=a in e||n=="onFocusOut"||n=="onFocusIn"?a.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+s]=r,r?i?r.u=i.u:(r.u=Xf,e.addEventListener(n,s?jc:kc,s)):e.removeEventListener(n,s?jc:kc,s);else{if(o=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=r??"";break e}catch{}typeof r=="function"||(r==null||r===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&r==1?"":r))}}function Dp(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n.t==null)n.t=Xf++;else if(n.t0?e:hl(e)?e.map(xv):Jt({},e)}function C3(e,n,r,i,o,s,a,l,f){var c,h,d,p,y,g,x,_=r.props,m=n.props,v=n.type;if(v=="svg"?o="http://www.w3.org/2000/svg":v=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),s!=null){for(c=0;c2&&(l.children=arguments.length>3?Yo.call(arguments,2):r),ao(e.type,l,i||e.key,o||e.ref,null)}Yo=pv.slice,me={__e:function(e,n,r,i){for(var o,s,a;n=n.__;)if((o=n.__c)&&!o.__)try{if((s=o.constructor)&&s.getDerivedStateFromError!=null&&(o.setState(s.getDerivedStateFromError(e)),a=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(e,i||{}),a=o.__d),a)return o.__E=o}catch(l){e=l}throw e}},uv=0,cv=function(e){return e!=null&&e.constructor==null},Qs.prototype.setState=function(e,n){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Jt({},this.state),typeof e=="function"&&(e=e(Jt({},r),this.props)),e&&Jt(r,e),e!=null&&this.__v&&(n&&this._sb.push(n),Fp(this))},Qs.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Fp(this))},Qs.prototype.render=pl,ar=[],fv=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,dv=function(e,n){return e.__v.__b-n.__v.__b},Fa.__r=0,hv=/(PointerCapture)$|Capture$/i,Xf=0,kc=Dp(!1),jc=Dp(!0);function Ip(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var B3=`.float-tooltip-kap { + position: absolute; + width: max-content; /* prevent shrinking near right edge */ + max-width: max(50%, 150px); + padding: 3px 5px; + border-radius: 3px; + font: 12px sans-serif; + color: #eee; + background: rgba(0,0,0,0.6); + pointer-events: none; +} +`;U3(B3);var H3=Gf({props:{content:{default:!1},offsetX:{triggerUpdate:!1},offsetY:{triggerUpdate:!1}},init:function(n,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=i.style,s=o===void 0?{}:o,a=!!n&&$a(n)==="object"&&!!n.node&&typeof n.node=="function",l=ct(a?n.node():n);l.style("position")==="static"&&l.style("position","relative"),r.tooltipEl=l.append("div").attr("class","float-tooltip-kap"),Object.entries(s).forEach(function(c){var h=z3(c,2),d=h[0],p=h[1];return r.tooltipEl.style(d,p)}),r.tooltipEl.style("left","-10000px").style("display","none");var f="tooltip-".concat(Math.round(Math.random()*1e12));r.mouseInside=!1,l.on("mousemove.".concat(f),function(c){r.mouseInside=!0;var h=Qt(c),d=l.node(),p=d.offsetWidth,y=d.offsetHeight,g=[r.offsetX===null||r.offsetX===void 0?"-".concat(h[0]/p*100,"%"):typeof r.offsetX=="number"?"calc(-50% + ".concat(r.offsetX,"px)"):r.offsetX,r.offsetY===null||r.offsetY===void 0?y>130&&y-h[1]<100?"calc(-100% - 6px)":"21px":typeof r.offsetY=="number"?r.offsetY<0?"calc(-100% - ".concat(Math.abs(r.offsetY),"px)"):"".concat(r.offsetY,"px"):r.offsetY];r.tooltipEl.style("left",h[0]+"px").style("top",h[1]+"px").style("transform","translate(".concat(g.join(","),")")),r.content&&r.tooltipEl.style("display","inline")}),l.on("mouseover.".concat(f),function(){r.mouseInside=!0,r.content&&r.tooltipEl.style("display","inline")}),l.on("mouseout.".concat(f),function(){r.mouseInside=!1,r.tooltipEl.style("display","none")})},update:function(n){n.tooltipEl.style("display",n.content&&n.mouseInside?"inline":"none"),n.content?n.content instanceof HTMLElement?(n.tooltipEl.text(""),n.tooltipEl.append(function(){return n.content})):typeof n.content=="string"?n.tooltipEl.html(n.content):I3(n.content)?(n.tooltipEl.text(""),L3(n.content,n.tooltipEl.node())):(n.tooltipEl.style("display","none"),console.warn("Tooltip content is invalid, skipping.",n.content,n.content.toString())):n.tooltipEl.text("")}});function V3(e,n,r){var i,o=1;e==null&&(e=0),n==null&&(n=0),r==null&&(r=0);function s(){var a,l=i.length,f,c=0,h=0,d=0;for(a=0;a=(f=(a+l)/2))?a=f:l=f,i=o,!(o=o[d=+h]))return i[d]=s,e;if(c=+e._x.call(null,o.data),n===c)return s.next=o,i?i[d]=s:e._root=s,e;do i=i?i[d]=new Array(2):e._root=new Array(2),(h=n>=(f=(a+l)/2))?a=f:l=f;while((d=+h)==(p=+(c>=f)));return i[p]=o,i[d]=s,e}function q3(e){Array.isArray(e)||(e=Array.from(e));const n=e.length,r=new Float64Array(n);let i=1/0,o=-1/0;for(let s=0,a;so&&(o=a));if(i>o)return this;this.cover(i).cover(o);for(let s=0;se||e>=r;)switch(a=+(ea||(s=c.x1)=d))&&(c=l[l.length-1],l[l.length-1]=l[l.length-1-h],l[l.length-1-h]=c)}else{var p=Math.abs(e-+this._x.call(null,f.data));p=(c=(a+l)/2))?a=c:l=c,n=r,!(r=r[d=+h]))return this;if(!r.length)break;n[d+1&1]&&(i=n,p=d)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(s=r.next)&&delete r.next,o?(s?o.next=s:delete o.next,this):n?(s?n[d]=s:delete n[d],(r=n[0]||n[1])&&r===(n[1]||n[0])&&!r.length&&(i?i[p]=r:this._root=r),this):(this._root=s,this)}function J3(e){for(var n=0,r=e.length;n=(g=(f+d)/2))?f=g:d=g,(k=r>=(x=(c+p)/2))?c=x:p=x,(j=i>=(_=(h+y)/2))?h=_:y=_,s=a,!(a=a[C=j<<2|k<<1|b]))return s[C]=l,e;if(m=+e._x.call(null,a.data),v=+e._y.call(null,a.data),w=+e._z.call(null,a.data),n===m&&r===v&&i===w)return l.next=a,s?s[C]=l:e._root=l,e;do s=s?s[C]=new Array(8):e._root=new Array(8),(b=n>=(g=(f+d)/2))?f=g:d=g,(k=r>=(x=(c+p)/2))?c=x:p=x,(j=i>=(_=(h+y)/2))?h=_:y=_;while((C=j<<2|k<<1|b)===(T=(w>=_)<<2|(v>=x)<<1|m>=g));return s[T]=a,s[C]=l,e}function sT(e){Array.isArray(e)||(e=Array.from(e));const n=e.length,r=new Float64Array(n),i=new Float64Array(n),o=new Float64Array(n);let s=1/0,a=1/0,l=1/0,f=-1/0,c=-1/0,h=-1/0;for(let d=0,p,y,g,x;df&&(f=y),gc&&(c=g),xh&&(h=x));if(s>f||a>c||l>h)return this;this.cover(s,a,l).cover(f,c,h);for(let d=0;de||e>=a||o>n||n>=l||s>r||r>=f;)switch(p=(rg||(c=w.y0)>x||(h=w.z0)>_||(d=w.x1)=C)<<2|(n>=j)<<1|e>=k)&&(w=m[m.length-1],m[m.length-1]=m[m.length-1-b],m[m.length-1-b]=w)}else{var T=e-+this._x.call(null,v.data),F=n-+this._y.call(null,v.data),A=r-+this._z.call(null,v.data),O=T*T+F*F+A*A;if(OMath.sqrt((e-i)**2+(n-o)**2+(r-s)**2);function dT(e,n,r,i){const o=[],s=e-i,a=n-i,l=r-i,f=e+i,c=n+i,h=r+i;return this.visit((d,p,y,g,x,_,m)=>{if(!d.length)do{const v=d.data;fT(e,n,r,this._x(v),this._y(v),this._z(v))<=i&&o.push(v)}while(d=d.next);return p>f||y>c||g>h||x=(x=(a+c)/2))?a=x:c=x,(w=y>=(_=(l+h)/2))?l=_:h=_,(b=g>=(m=(f+d)/2))?f=m:d=m,n=r,!(r=r[k=b<<2|w<<1|v]))return this;if(!r.length)break;(n[k+1&7]||n[k+2&7]||n[k+3&7]||n[k+4&7]||n[k+5&7]||n[k+6&7]||n[k+7&7])&&(i=n,j=k)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(s=r.next)&&delete r.next,o?(s?o.next=s:delete o.next,this):n?(s?n[k]=s:delete n[k],(r=n[0]||n[1]||n[2]||n[3]||n[4]||n[5]||n[6]||n[7])&&r===(n[7]||n[6]||n[5]||n[4]||n[3]||n[2]||n[1]||n[0])&&!r.length&&(i?i[j]=r:this._root=r),this):(this._root=s,this)}function pT(e){for(var n=0,r=e.length;n1&&(F=C.y+C.vy-j.y-j.vy||hn(h)),l>2&&(A=C.z+C.vz-j.z-j.vz||hn(h)),O=Math.sqrt(T*T+F*F+A*A),O=(O-s[b])/O*m*i[b],T*=O,F*=O,A*=O,C.vx-=T*(N=c[b]),l>1&&(C.vy-=F*N),l>2&&(C.vz-=A*N),j.vx+=T*(N=1-N),l>1&&(j.vy+=F*N),l>2&&(j.vz+=A*N)}function g(){if(a){var m,v=a.length,w=e.length,b=new Map(a.map((j,C)=>[n(j,C,a),j])),k;for(m=0,f=new Array(v);mtypeof w=="function")||Math.random,l=v.find(w=>[1,2,3].includes(w))||2,g()},y.links=function(m){return arguments.length?(e=m,g(),y):e},y.id=function(m){return arguments.length?(n=m,y):n},y.iterations=function(m){return arguments.length?(d=+m,y):d},y.strength=function(m){return arguments.length?(r=typeof m=="function"?m:yn(+m),x(),y):r},y.distance=function(m){return arguments.length?(o=typeof m=="function"?m:yn(+m),_(),y):o},y}const CT=1664525,ET=1013904223,Vp=4294967296;function TT(){let e=1;return()=>(e=(CT*e+ET)%Vp)/Vp}var Wp=3;function Zl(e){return e.x}function qp(e){return e.y}function AT(e){return e.z}var PT=10,RT=Math.PI*(3-Math.sqrt(5)),MT=Math.PI*20/(9+Math.sqrt(221));function OT(e,n){n=n||2;var r=Math.min(Wp,Math.max(1,Math.round(n))),i,o=1,s=.001,a=1-Math.pow(s,1/300),l=0,f=.6,c=new Map,h=Lf(y),d=qo("tick","end"),p=TT();e==null&&(e=[]);function y(){g(),d.call("tick",i),o1&&(b.fy==null?b.y+=b.vy*=f:(b.y=b.fy,b.vy=0)),r>2&&(b.fz==null?b.z+=b.vz*=f:(b.z=b.fz,b.vz=0));return i}function x(){for(var m=0,v=e.length,w;m1&&isNaN(w.y)||r>2&&isNaN(w.z)){var b=PT*(r>2?Math.cbrt(.5+m):r>1?Math.sqrt(.5+m):m),k=m*RT,j=m*MT;r===1?w.x=b:r===2?(w.x=b*Math.cos(k),w.y=b*Math.sin(k)):(w.x=b*Math.sin(k)*Math.cos(j),w.y=b*Math.cos(k),w.z=b*Math.sin(k)*Math.sin(j))}(isNaN(w.vx)||r>1&&isNaN(w.vy)||r>2&&isNaN(w.vz))&&(w.vx=0,r>1&&(w.vy=0),r>2&&(w.vz=0))}}function _(m){return m.initialize&&m.initialize(e,p,r),m}return x(),i={tick:g,restart:function(){return h.restart(y),i},stop:function(){return h.stop(),i},numDimensions:function(m){return arguments.length?(r=Math.min(Wp,Math.max(1,Math.round(m))),c.forEach(_),i):r},nodes:function(m){return arguments.length?(e=m,x(),c.forEach(_),i):e},alpha:function(m){return arguments.length?(o=+m,i):o},alphaMin:function(m){return arguments.length?(s=+m,i):s},alphaDecay:function(m){return arguments.length?(a=+m,i):+a},alphaTarget:function(m){return arguments.length?(l=+m,i):l},velocityDecay:function(m){return arguments.length?(f=1-m,i):1-f},randomSource:function(m){return arguments.length?(p=m,c.forEach(_),i):p},force:function(m,v){return arguments.length>1?(v==null?c.delete(m):c.set(m,_(v)),i):c.get(m)},find:function(){var m=Array.prototype.slice.call(arguments),v=m.shift()||0,w=(r>1?m.shift():null)||0,b=(r>2?m.shift():null)||0,k=m.shift()||1/0,j=0,C=e.length,T,F,A,O,N,P;for(k*=k,j=0;j1?(d.on(m,v),i):d.on(m)}}}function zT(){var e,n,r,i,o,s=yn(-30),a,l=1,f=1/0,c=.81;function h(g){var x,_=e.length,m=(n===1?kv(e,Zl):n===2?Hf(e,Zl,qp):n===3?Sv(e,Zl,qp,AT):null).visitAfter(p);for(o=g,x=0;x<_;++x)r=e[x],m.visit(y)}function d(){if(e){var g,x=e.length,_;for(a=new Array(x),g=0;g1&&(g.y=b/v),n>2&&(g.z=k/v)}else{_=g,_.x=_.data.x,n>1&&(_.y=_.data.y),n>2&&(_.z=_.data.z);do x+=a[_.data.index];while(_=_.next)}g.value=x}function y(g,x,_,m,v){if(!g.value)return!0;var w=[_,m,v][n-1],b=g.x-r.x,k=n>1?g.y-r.y:0,j=n>2?g.z-r.z:0,C=w-x,T=b*b+k*k+j*j;if(C*C/c1&&k===0&&(k=hn(i),T+=k*k),n>2&&j===0&&(j=hn(i),T+=j*j),T1&&(r.vy+=k*g.value*o/T),n>2&&(r.vz+=j*g.value*o/T)),!0;if(g.length||T>=f)return;(g.data!==r||g.next)&&(b===0&&(b=hn(i),T+=b*b),n>1&&k===0&&(k=hn(i),T+=k*k),n>2&&j===0&&(j=hn(i),T+=j*j),T1&&(r.vy+=k*C),n>2&&(r.vz+=j*C));while(g=g.next)}return h.initialize=function(g,...x){e=g,i=x.find(_=>typeof _=="function")||Math.random,n=x.find(_=>[1,2,3].includes(_))||2,d()},h.strength=function(g){return arguments.length?(s=typeof g=="function"?g:yn(+g),d(),h):s},h.distanceMin=function(g){return arguments.length?(l=g*g,h):Math.sqrt(l)},h.distanceMax=function(g){return arguments.length?(f=g*g,h):Math.sqrt(f)},h.theta=function(g){return arguments.length?(c=g*g,h):Math.sqrt(c)},h}function FT(e,n,r,i){var o,s,a=yn(.1),l,f;typeof e!="function"&&(e=yn(+e)),n==null&&(n=0),r==null&&(r=0),i==null&&(i=0);function c(d){for(var p=0,y=o.length;p1&&(g.vy+=_*w),s>2&&(g.vz+=m*w)}}function h(){if(o){var d,p=o.length;for(l=new Array(p),f=new Array(p),d=0;d[1,2,3].includes(y))||2,h()},c.strength=function(d){return arguments.length?(a=typeof d=="function"?d:yn(+d),h(),c):a},c.radius=function(d){return arguments.length?(e=typeof d=="function"?d:yn(+d),h(),c):e},c.x=function(d){return arguments.length?(n=+d,c):n},c.y=function(d){return arguments.length?(r=+d,c):r},c.z=function(d){return arguments.length?(i=+d,c):i},c}const{abs:Fi,cos:cn,sin:Mr,acos:$T,atan2:$i,sqrt:Pn,pow:_t}=Math;function Di(e){return e<0?-_t(-e,1/3):_t(e,1/3)}const Nv=Math.PI,Es=2*Nv,Rn=Nv/2,DT=1e-6,eu=Number.MAX_SAFE_INTEGER||9007199254740991,tu=Number.MIN_SAFE_INTEGER||-9007199254740991,IT={x:0,y:0,z:0},V={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(e,n){const r=n(e);let i=r.x*r.x+r.y*r.y;return typeof r.z<"u"&&(i+=r.z*r.z),Pn(i)},compute:function(e,n,r){if(e===0)return n[0].t=0,n[0];const i=n.length-1;if(e===1)return n[i].t=1,n[i];const o=1-e;let s=n;if(i===0)return n[0].t=e,n[0];if(i===1){const l={x:o*s[0].x+e*s[1].x,y:o*s[0].y+e*s[1].y,t:e};return r&&(l.z=o*s[0].z+e*s[1].z),l}if(i<4){let l=o*o,f=e*e,c,h,d,p=0;i===2?(s=[s[0],s[1],s[2],IT],c=l,h=o*e*2,d=f):i===3&&(c=l*o,h=l*e*3,d=o*f*3,p=e*f);const y={x:c*s[0].x+h*s[1].x+d*s[2].x+p*s[3].x,y:c*s[0].y+h*s[1].y+d*s[2].y+p*s[3].y,t:e};return r&&(y.z=c*s[0].z+h*s[1].z+d*s[2].z+p*s[3].z),y}const a=JSON.parse(JSON.stringify(n));for(;a.length>1;){for(let l=0;l1;o--,s--){const a=[];for(let l=0,f;l"u")e=.5;else if(e===0||e===1)return e;const r=_t(e,n)+_t(1-e,n),i=r-1;return Fi(i/r)},projectionratio:function(e,n){if(n!==2&&n!==3)return!1;if(typeof e>"u")e=.5;else if(e===0||e===1)return e;const r=_t(1-e,n),i=_t(e,n)+r;return r/i},lli8:function(e,n,r,i,o,s,a,l){const f=(e*i-n*r)*(o-a)-(e-r)*(o*l-s*a),c=(e*i-n*r)*(s-l)-(n-i)*(o*l-s*a),h=(e-r)*(s-l)-(n-i)*(o-a);return h==0?!1:{x:f/h,y:c/h}},lli4:function(e,n,r,i){const o=e.x,s=e.y,a=n.x,l=n.y,f=r.x,c=r.y,h=i.x,d=i.y;return V.lli8(o,s,a,l,f,c,h,d)},lli:function(e,n){return V.lli4(e,e.c,n,n.c)},makeline:function(e,n){return new fe(e.x,e.y,(e.x+n.x)/2,(e.y+n.y)/2,n.x,n.y)},findbbox:function(e){let n=eu,r=eu,i=tu,o=tu;return e.forEach(function(s){const a=s.bbox();n>a.x.min&&(n=a.x.min),r>a.y.min&&(r=a.y.min),i0&&(h.c1=f,h.c2=c,h.s1=e,h.s2=r,s.push(h))})}),s},makeshape:function(e,n,r){const i=n.points.length,o=e.points.length,s=V.makeline(n.points[i-1],e.points[0]),a=V.makeline(e.points[o-1],n.points[0]),l={startcap:s,forward:e,back:n,endcap:a,bbox:V.findbbox([s,e,n,a])};return l.intersections=function(f){return V.shapeintersections(l,l.bbox,f,f.bbox,r)},l},getminmax:function(e,n,r){if(!r)return{min:0,max:0};let i=eu,o=tu,s,a;r.indexOf(0)===-1&&(r=[0].concat(r)),r.indexOf(1)===-1&&r.push(1);for(let l=0,f=r.length;lo&&(o=a[n]);return{min:i,mid:(i+o)/2,max:o,size:o-i}},align:function(e,n){const r=n.p1.x,i=n.p1.y,o=-$i(n.p2.y-i,n.p2.x-r),s=function(a){return{x:(a.x-r)*cn(o)-(a.y-i)*Mr(o),y:(a.x-r)*Mr(o)+(a.y-i)*cn(o)}};return e.map(s)},roots:function(e,n){n=n||{p1:{x:0,y:0},p2:{x:1,y:0}};const r=e.length-1,i=V.align(e,n),o=function(C){return 0<=C&&C<=1};if(r===2){const C=i[0].y,T=i[1].y,F=i[2].y,A=C-2*T+F;if(A!==0){const O=-Pn(T*T-C*F),N=-C+T,P=-(O+N)/A,S=-(-O+N)/A;return[P,S].filter(o)}else if(T!==F&&A===0)return[(2*T-F)/(2*T-2*F)].filter(o);return[]}const s=i[0].y,a=i[1].y,l=i[2].y,f=i[3].y;let c=-s+3*a-3*l+f,h=3*s-6*a+3*l,d=-3*s+3*a,p=s;if(V.approximately(c,0)){if(V.approximately(h,0))return V.approximately(d,0)?[]:[-p/d].filter(o);const C=Pn(d*d-4*h*p),T=2*h;return[(C-d)/T,(-d-C)/T].filter(o)}h/=c,d/=c,p/=c;const y=(3*d-h*h)/3,g=y/3,x=(2*h*h*h-9*h*d+27*p)/27,_=x/2,m=_*_+g*g*g;let v,w,b,k,j;if(m<0){const C=-y/3,T=C*C*C,F=Pn(T),A=-x/(2*F),O=A<-1?-1:A>1?1:A,N=$T(O),P=Di(F),S=2*P;return b=S*cn(N/3)-h/3,k=S*cn((N+Es)/3)-h/3,j=S*cn((N+2*Es)/3)-h/3,[b,k,j].filter(o)}else{if(m===0)return v=_<0?Di(-_):-Di(_),b=2*v-h/3,k=-v-h/3,[b,k].filter(o);{const C=Pn(m);return v=Di(-_+C),w=Di(_+C),[v-w-h/3].filter(o)}}},droots:function(e){if(e.length===3){const n=e[0],r=e[1],i=e[2],o=n-2*r+i;if(o!==0){const s=-Pn(r*r-n*i),a=-n+r,l=-(s+a)/o,f=-(-s+a)/o;return[l,f]}else if(r!==i&&o===0)return[(2*r-i)/(2*(r-i))];return[]}if(e.length===2){const n=e[0],r=e[1];return n!==r?[n/(n-r)]:[]}return[]},curvature:function(e,n,r,i,o){let s,a,l,f,c=0,h=0;const d=V.compute(e,n),p=V.compute(e,r),y=d.x*d.x+d.y*d.y;if(i?(s=Pn(_t(d.y*p.z-p.y*d.z,2)+_t(d.z*p.x-p.z*d.x,2)+_t(d.x*p.y-p.x*d.y,2)),a=_t(y+d.z*d.z,3/2)):(s=d.x*p.y-d.y*p.x,a=_t(y,3/2)),s===0||a===0)return{k:0,r:0};if(c=s/a,h=a/s,!o){const g=V.curvature(e-.001,n,r,i,!0).k,x=V.curvature(e+.001,n,r,i,!0).k;f=(x-c+(c-g))/2,l=(Fi(x-c)+Fi(c-g))/2}return{k:c,r:h,dk:f,adk:l}},inflections:function(e){if(e.length<4)return[];const n=V.align(e,{p1:e[0],p2:e.slice(-1)[0]}),r=n[2].x*n[1].y,i=n[3].x*n[1].y,o=n[1].x*n[2].y,s=n[3].x*n[2].y,a=18*(-3*r+2*i+3*o-s),l=18*(3*r-i-3*o),f=18*(o-r);if(V.approximately(a,0)){if(!V.approximately(l,0)){let p=-f/l;if(0<=p&&p<=1)return[p]}return[]}const c=2*a;if(V.approximately(c,0))return[];const h=l*l-4*a*f;if(h<0)return[];const d=Math.sqrt(h);return[(d-l)/c,-(l+d)/c].filter(function(p){return 0<=p&&p<=1})},bboxoverlap:function(e,n){const r=["x","y"],i=r.length;for(let o=0,s,a,l,f;o=f)return!1;return!0},expandbox:function(e,n){n.x.mine.x.max&&(e.x.max=n.x.max),n.y.max>e.y.max&&(e.y.max=n.y.max),n.z&&n.z.max>e.z.max&&(e.z.max=n.z.max),e.x.mid=(e.x.min+e.x.max)/2,e.y.mid=(e.y.min+e.y.max)/2,e.z&&(e.z.mid=(e.z.min+e.z.max)/2),e.x.size=e.x.max-e.x.min,e.y.size=e.y.max-e.y.min,e.z&&(e.z.size=e.z.max-e.z.min)},pairiteration:function(e,n,r){const i=e.bbox(),o=n.bbox(),s=1e5,a=r||.5;if(i.x.size+i.y.sizej||j>C)&&(k+=Es),k>C&&(T=C,C=k,k=T)):C4){if(arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");o=!0}}else if(s!==6&&s!==8&&s!==9&&s!==12&&arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");const a=this._3d=!o&&(s===9||s===12)||n&&n[0]&&typeof n[0].z<"u",l=this.points=[];for(let y=0,g=a?3:2;yy+Ii(g.y),0)

"u"&&(o=.5),o===0)return new fe(r,r,i);if(o===1)return new fe(n,r,r);const s=fe.getABC(2,n,r,i,o);return new fe(n,s.A,i)}static cubicFromPoints(n,r,i,o,s){typeof o>"u"&&(o=.5);const a=fe.getABC(3,n,r,i,o);typeof s>"u"&&(s=V.dist(r,a.C));const l=s*(1-o)/o,f=V.dist(n,i),c=(i.x-n.x)/f,h=(i.y-n.y)/f,d=s*c,p=s*h,y=l*c,g=l*h,x={x:r.x-d,y:r.y-p},_={x:r.x+y,y:r.y+g},m=a.A,v={x:m.x+(x.x-m.x)/(1-o),y:m.y+(x.y-m.y)/(1-o)},w={x:m.x+(_.x-m.x)/o,y:m.y+(_.y-m.y)/o},b={x:n.x+(v.x-n.x)/o,y:n.y+(v.y-n.y)/o},k={x:i.x+(w.x-i.x)/(1-o),y:i.y+(w.y-i.y)/(1-o)};return new fe(n,b,k,i)}static getUtils(){return V}getUtils(){return fe.getUtils()}static get PolyBezier(){return lo}valueOf(){return this.toString()}toString(){return V.pointsToString(this.points)}toSVG(){if(this._3d)return!1;const n=this.points,r=n[0].x,i=n[0].y,o=["M",r,i,this.order===2?"Q":"C"];for(let s=1,a=n.length;s0}length(){return V.length(this.derivative.bind(this))}static getABC(n=2,r,i,o,s=.5){const a=V.projectionratio(s,n),l=1-a,f={x:a*r.x+l*o.x,y:a*r.y+l*o.y},c=V.abcratio(s,n);return{A:{x:i.x+(i.x-f.x)/c,y:i.y+(i.y-f.y)/c},B:i,C:f,S:r,E:o}}getABC(n,r){r=r||this.get(n);let i=this.points[0],o=this.points[this.order];return fe.getABC(this.order,i,r,o,n)}getLUT(n){if(this.verify(),n=n||100,this._lut.length===n+1)return this._lut;this._lut=[],n++,this._lut=[];for(let r=0,i,o;r1?1:d,p=this.compute(d),p.t=d,p.d=c,p}get(n){return this.compute(n)}point(n){return this.points[n]}compute(n){return this.ratios?V.computeWithRatios(n,this.points,this.ratios,this._3d):V.compute(n,this.points,this._3d,this.ratios)}raise(){const n=this.points,r=[n[0]],i=n.length;for(let o=1,s,a;o1;){i=[];for(let a=0,l,f=r.length-1;a=0&&a<=1}),r=r.concat(n[i].sort(V.numberSort))}).bind(this)),n.values=r.sort(V.numberSort).filter(function(i,o){return r.indexOf(i)===o}),n}bbox(){const n=this.extrema(),r={};return this.dims.forEach((function(i){r[i]=V.getminmax(this,i,n[i])}).bind(this)),r}overlaps(n){const r=this.bbox(),i=n.bbox();return V.bboxoverlap(r,i)}offset(n,r){if(typeof r<"u"){const i=this.get(n),o=this.normal(n),s={c:i,n:o,x:i.x+o.x*r,y:i.y+o.y*r};return this._3d&&(s.z=i.z+o.z*r),s}if(this._linear){const i=this.normal(0),o=this.points.map(function(s){const a={x:s.x+n*i.x,y:s.y+n*i.y};return s.z&&i.z&&(a.z=s.z+n*i.z),a});return[new fe(o)]}return this.reduce().map(function(i){return i._linear?i.offset(n)[0]:i.scale(n)})}simple(){if(this.order===3){const o=V.angle(this.points[0],this.points[3],this.points[1]),s=V.angle(this.points[0],this.points[3],this.points[2]);if(o>0&&s<0||o<0&&s>0)return!1}const n=this.normal(0),r=this.normal(1);let i=n.x*r.x+n.y*r.y;return this._3d&&(i+=n.z*r.z),Ii(BT(i))(1-l/o)*r+l/o*i);return new fe(this.points.map((a,l)=>({x:a.x+n.x*s[l],y:a.y+n.y*s[l]})))}scale(n){const r=this.order;let i=!1;if(typeof n=="function"&&(i=n),i&&r===2)return this.raise().scale(i);const o=this.clockwise,s=this.points;if(this._linear)return this.translate(this.normal(0),i?i(0):n,i?i(1):n);const a=i?i(0):n,l=i?i(1):n,f=[this.offset(0,10),this.offset(1,10)],c=[],h=V.lli4(f[0],f[0].c,f[1],f[1].c);if(!h)throw new Error("cannot scale this curve. Try reducing it first.");return[0,1].forEach(function(d){const p=c[d*r]=V.copy(s[d*r]);p.x+=(d?l:a)*f[d].n.x,p.y+=(d?l:a)*f[d].n.y}),i?([0,1].forEach(function(d){if(!(r===2&&d)){var p=s[d+1],y={x:p.x-h.x,y:p.y-h.y},g=i?i((d+1)/r):n;i&&!o&&(g=-g);var x=Li(y.x*y.x+y.y*y.y);y.x/=x,y.y/=x,c[d+1]={x:p.x+g*y.x,y:p.y+g*y.y}}}),new fe(c)):([0,1].forEach(d=>{if(r===2&&d)return;const p=c[d*r],y=this.derivative(d),g={x:p.x+y.x,y:p.y+y.y};c[d+1]=V.lli4(p,g,h,s[d+1])}),new fe(c))}outline(n,r,i,o){if(r=r===void 0?n:r,this._linear){const k=this.normal(0),j=this.points[0],C=this.points[this.points.length-1];let T,F,A;i===void 0&&(i=n,o=r),T={x:j.x+k.x*n,y:j.y+k.y*n},A={x:C.x+k.x*i,y:C.y+k.y*i},F={x:(T.x+A.x)/2,y:(T.y+A.y)/2};const O=[T,F,A];T={x:j.x-k.x*r,y:j.y-k.y*r},A={x:C.x-k.x*o,y:C.y-k.y*o},F={x:(T.x+A.x)/2,y:(T.y+A.y)/2};const N=[A,F,T],P=V.makeline(N[2],O[0]),S=V.makeline(O[2],N[0]),L=[P,new fe(O),S,new fe(N)];return new lo(L)}const s=this.reduce(),a=s.length,l=[];let f=[],c,h=0,d=this.length();const p=typeof i<"u"&&typeof o<"u";function y(k,j,C,T,F){return function(A){const O=T/C,N=(T+F)/C,P=j-k;return V.map(A,0,1,k+O*P,k+N*P)}}s.forEach(function(k){const j=k.length();p?(l.push(k.scale(y(n,i,d,h,j))),f.push(k.scale(y(-r,-o,d,h,j)))):(l.push(k.scale(n)),f.push(k.scale(-r))),h+=j}),f=f.map(function(k){return c=k.points,c[3]?k.points=[c[3],c[2],c[1],c[0]]:k.points=[c[2],c[1],c[0]],k}).reverse();const g=l[0].points[0],x=l[a-1].points[l[a-1].points.length-1],_=f[a-1].points[f[a-1].points.length-1],m=f[0].points[0],v=V.makeline(_,g),w=V.makeline(x,m),b=[v].concat(l).concat([w]).concat(f);return new lo(b)}outlineshapes(n,r,i){r=r||n;const o=this.outline(n,r).curves,s=[];for(let a=1,l=o.length;a1,f.endcap.virtual=a{var l=this.get(a);return V.between(l.x,r,o)&&V.between(l.y,i,s)})}selfintersects(n){const r=this.reduce(),i=r.length-2,o=[];for(let s=0,a,l,f;s0&&(s=s.concat(l))}),s}arcs(n){return n=n||.5,this._iterate(n,[])}_error(n,r,i,o){const s=(o-i)/4,a=this.get(i+s),l=this.get(o-s),f=V.dist(n,r),c=V.dist(n,a),h=V.dist(n,l);return Ii(c-f)+Ii(h-f)}_iterate(n,r){let i=0,o=1,s;do{s=0,o=1;let a=this.get(i),l,f,c,h,d=!1,p=!1,y,g=o,x=1;do if(p=d,h=c,g=(i+o)/2,l=this.get(g),f=this.get(o),c=V.getccenter(a,l,f),c.interval={start:i,end:o},d=this._error(c,a,i,o)<=n,y=p&&!d,y||(x=o),d){if(o>=1){if(c.interval.end=x=1,h=c,o>1){let m={x:c.x+c.r*LT(c.e),y:c.y+c.r*UT(c.e)};c.e+=V.angle({x:c.x,y:c.y},m,this.get(1))}break}o=o+(o-i)/2}else o=g;while(!y&&s++<100);if(s>=100)break;h=h||c,r.push(h),i=x}while(o<1);return r}}function Cc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,o=(n instanceof Array?n.length?n:[void 0]:[n]).map(function(l){return{keyAccessor:l,isProp:!(l instanceof Function)}}),s=e.reduce(function(l,f){var c=l,h=f;return o.forEach(function(d,p){var y=d.keyAccessor,g=d.isProp,x;if(g){var _=h,m=_[y],v=QT(_,[y].map(tA));x=m,h=v}else x=y(h,p);p+11&&arguments[1]!==void 0?arguments[1]:1;c===o.length?Object.keys(f).forEach(function(h){return f[h]=r(f[h])}):Object.values(f).forEach(function(h){return l(h,c+1)})}(s);var a=s;return i&&(a=[],function l(f){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];c.length===o.length?a.push({keys:c,vals:f}):Object.entries(f).forEach(function(h){var d=JT(h,2),p=d[0],y=d[1];return l(y,[].concat(ZT(c),[p]))})}(s),n instanceof Array&&n.length===0&&a.length===1&&(a[0].keys=[])),a};function rA(e,n){n===void 0&&(n={});var r=n.insertAt;if(!(typeof document>"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var iA=`.force-graph-container canvas { + display: block; + user-select: none; + outline: none; + -webkit-tap-highlight-color: transparent; +} + +.force-graph-container .clickable { + cursor: pointer; +} + +.force-graph-container .grabbable { + cursor: move; + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} + +.force-graph-container .grabbable:active { + cursor: grabbing; + cursor: -moz-grabbing; + cursor: -webkit-grabbing; +} +`;rA(iA);function Ec(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r2&&arguments[2]!==void 0?arguments[2]:{},s=o.nodeFilter,a=s===void 0?function(){return!0}:s,l=o.onLoopError,f=l===void 0?function(y){throw"Invalid DAG structure! Found cycle in node path: ".concat(y.join(" -> "),".")}:l,c={};r.forEach(function(y){return c[n(y)]={data:y,out:[],depth:-1,skip:!a(y)}}),i.forEach(function(y){var g=y.source,x=y.target,_=b(g),m=b(x);if(!c.hasOwnProperty(_))throw"Missing source node with id: ".concat(_);if(!c.hasOwnProperty(m))throw"Missing target node with id: ".concat(m);var v=c[_],w=c[m];v.out.push(w);function b(k){return Tc(k)==="object"?n(k):k}});var h=[];p(Object.values(c));var d=Object.assign.apply(Object,[{}].concat(kt(Object.entries(c).filter(function(y){var g=uo(y,2),x=g[1];return!x.skip}).map(function(y){var g=uo(y,2),x=g[0],_=g[1];return zo({},x,_.depth)}))));return d;function p(y){for(var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,_=function(){var b=y[m];if(g.indexOf(b)!==-1){var k=[].concat(kt(g.slice(g.indexOf(b))),[b]).map(function(j){return n(j.data)});return h.some(function(j){return j.length===k.length&&j.every(function(C,T){return C===k[T]})})||(h.push(k),f(k)),1}x>b.depth&&(b.depth=x,p(b.out,[].concat(kt(g),[b]),x+(b.skip?0:1)))},m=0,v=y.length;mn.cooldownTicks||new Date-n.startTickTime>n.cooldownTime||n.d3AlphaMin>0&&n.forceLayout.alpha()0){var N=Math.atan2(A.y-F.y,A.x-F.x),P=O*T,S={x:(F.x+A.x)/2+P*Math.cos(N-Math.PI/2),y:(F.y+A.y)/2+P*Math.sin(N-Math.PI/2)};C.__controlPoints=[S.x,S.y]}else{var L=T*70;C.__controlPoints=[A.x,A.y-L,A.x+L,A.y]}}}}function s(){var l=1.6,f=.2,c=oe(n.linkDirectionalArrowLength),h=oe(n.linkDirectionalArrowRelPos),d=oe(n.linkVisibility),p=oe(n.linkDirectionalArrowColor||n.linkColor),y=oe(n.nodeVal),g=n.ctx;g.save(),n.graphData.links.filter(d).forEach(function(x){var _=c(x);if(!(!_||_<0)){var m=x.source,v=x.target;if(!(!m||!v||!m.hasOwnProperty("x")||!v.hasOwnProperty("x"))){var w=Math.sqrt(Math.max(0,y(m)||1))*n.nodeRelSize,b=Math.sqrt(Math.max(0,y(v)||1))*n.nodeRelSize,k=Math.min(1,Math.max(0,h(x))),j=p(x)||"rgba(0,0,0,0.28)",C=_/l/2,T=x.__controlPoints&&Yp(fe,[m.x,m.y].concat(kt(x.__controlPoints),[v.x,v.y])),F=T?function(R){return T.get(R)}:function(R){return{x:m.x+(v.x-m.x)*R||0,y:m.y+(v.y-m.y)*R||0}},A=T?T.length():Math.sqrt(Math.pow(v.x-m.x,2)+Math.pow(v.y-m.y,2)),O=w+_+(A-w-b-_)*k,N=F(O/A),P=F((O-_)/A),S=F((O-_*(1-f))/A),L=Math.atan2(N.y-P.y,N.x-P.x)-Math.PI/2;g.beginPath(),g.moveTo(N.x,N.y),g.lineTo(P.x+C*Math.cos(L),P.y+C*Math.sin(L)),g.lineTo(S.x,S.y),g.lineTo(P.x-C*Math.cos(L),P.y-C*Math.sin(L)),g.fillStyle=j,g.fill()}}}),g.restore()}function a(){var l=oe(n.linkDirectionalParticles),f=oe(n.linkDirectionalParticleSpeed),c=oe(n.linkDirectionalParticleOffset),h=oe(n.linkDirectionalParticleWidth),d=oe(n.linkVisibility),p=oe(n.linkDirectionalParticleColor||n.linkColor),y=n.ctx;y.save(),n.graphData.links.filter(d).forEach(function(g){var x=l(g);if(!(!g.hasOwnProperty("__photons")||!g.__photons.length)){var _=g.source,m=g.target;if(!(!_||!m||!_.hasOwnProperty("x")||!m.hasOwnProperty("x"))){var v=f(g),w=Math.abs(c(g)),b=g.__photons||[],k=Math.max(0,h(g)/2)/Math.sqrt(n.globalScale),j=p(g)||"rgba(0,0,0,0.28)";y.fillStyle=j;var C=g.__controlPoints?Yp(fe,[_.x,_.y].concat(kt(g.__controlPoints),[m.x,m.y])):null,T=0,F=!1;b.forEach(function(A){var O=!!A.__singleHop;if(A.hasOwnProperty("__progressRatio")||(A.__progressRatio=O?0:(T+w)/x),!O&&T++,A.__progressRatio+=v,A.__progressRatio>=1)if(!O)A.__progressRatio=A.__progressRatio%1;else{F=!0;return}var N=A.__progressRatio,P=C?C.get(N):{x:_.x+(m.x-_.x)*N||0,y:_.y+(m.y-_.y)*N||0};n.linkDirectionalParticleCanvasObject?n.linkDirectionalParticleCanvasObject(P.x,P.y,g,y,n.globalScale):(y.beginPath(),y.arc(P.x,P.y,k,0,2*Math.PI,!1),y.fill())}),F&&(g.__photons=g.__photons.filter(function(A){return!A.__singleHop||A.__progressRatio<=1}))}}}),y.restore()}},emitParticle:function(n,r){return r&&(!r.__photons&&(r.__photons=[]),r.__photons.push({__singleHop:!0})),this}},stateInit:function(){return{forceLayout:OT().force("link",NT()).force("charge",zT()).force("center",V3()).force("dagRadial",null).stop(),engineRunning:!1}},init:function(n,r){r.ctx=n},update:function(n,r){n.engineRunning=!1,n.onUpdate(),n.nodeAutoColorBy!==null&&Kp(n.graphData.nodes,oe(n.nodeAutoColorBy),n.nodeColor),n.linkAutoColorBy!==null&&Kp(n.graphData.links,oe(n.linkAutoColorBy),n.linkColor),n.graphData.links.forEach(function(p){p.source=p[n.linkSource],p.target=p[n.linkTarget]}),n.forceLayout.stop().alpha(1).nodes(n.graphData.nodes);var i=n.forceLayout.force("link");i&&i.id(function(p){return p[n.nodeId]}).links(n.graphData.links);var o=n.dagMode&&pA(n.graphData,function(p){return p[n.nodeId]},{nodeFilter:n.dagNodeFilter,onLoopError:n.onDagError||void 0}),s=Math.max.apply(Math,kt(Object.values(o||[]))),a=n.dagLevelDistance||n.graphData.nodes.length/(s||1)*mA*(["radialin","radialout"].indexOf(n.dagMode)!==-1?.7:1);if(["lr","rl","td","bu"].includes(r.dagMode)){var l=["lr","rl"].includes(r.dagMode)?"fx":"fy";n.graphData.nodes.filter(n.dagNodeFilter).forEach(function(p){return delete p[l]})}if(["lr","rl","td","bu"].includes(n.dagMode)){var f=["rl","bu"].includes(n.dagMode),c=function(y){return(o[y[n.nodeId]]-s/2)*a*(f?-1:1)},h=["lr","rl"].includes(n.dagMode)?"fx":"fy";n.graphData.nodes.filter(n.dagNodeFilter).forEach(function(p){return p[h]=c(p)})}n.forceLayout.force("dagRadial",["radialin","radialout"].indexOf(n.dagMode)!==-1?FT(function(p){var y=o[p[n.nodeId]]||-1;return(n.dagMode==="radialin"?s-y:y)*a}).strength(function(p){return n.dagNodeFilter(p)?1:0}):null);for(var d=0;d0&&n.forceLayout.alpha()1?l-1:0),c=1;c1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,o=arguments.length,s=new Array(o>3?o-3:0),a=3;a1&&arguments[1]!==void 0?arguments[1]:function(){return!0},i=oe(n.nodeVal),o=function(l){return Math.sqrt(Math.max(0,i(l)||1))*n.nodeRelSize},s=n.graphData.nodes.filter(r).map(function(a){return{x:a.x,y:a.y,r:o(a)}});return s.length?{x:[Vh(s,function(a){return a.x-a.r}),Hh(s,function(a){return a.x+a.r})],y:[Vh(s,function(a){return a.y-a.r}),Hh(s,function(a){return a.y+a.r})]}:null},pauseAnimation:function(n){return n.animationFrameRequestId&&(cancelAnimationFrame(n.animationFrameRequestId),n.animationFrameRequestId=null),this},resumeAnimation:function(n){return n.animationFrameRequestId||this._animationCycle(),this},_destructor:function(){this.pauseAnimation(),this.graphData({nodes:[],links:[]})}},wA),stateInit:function(){return{lastSetZoom:1,zoom:OC(),forceGraph:new Da,shadowGraph:new Da().cooldownTicks(0).nodeColor("__indexColor").linkColor("__indexColor").isShadow(!0),colorTracker:new b3,tweenGroup:new rv}},init:function(n,r){var i=this;n.innerHTML="";var o=document.createElement("div");o.classList.add("force-graph-container"),o.style.position="relative",n.appendChild(o),r.canvas=document.createElement("canvas"),r.backgroundColor&&(r.canvas.style.background=r.backgroundColor),o.appendChild(r.canvas),r.shadowCanvas=document.createElement("canvas");var s=r.canvas.getContext("2d"),a=r.shadowCanvas.getContext("2d",{willReadFrequently:!0}),l={x:-1e12,y:-1e12},f=function(){var d=null,p=window.devicePixelRatio,y=l.x>0&&l.y>0?a.getImageData(l.x*p,l.y*p,1,1):null;return y&&(d=r.colorTracker.lookup(y.data)),d};ct(r.canvas).call(qj().subject(function(){if(!r.enableNodeDrag)return null;var h=f();return h&&h.type==="Node"?h.d:null}).on("start",function(h){var d=h.subject;d.__initialDragPos={x:d.x,y:d.y,fx:d.fx,fy:d.fy},h.active||(d.fx=d.x,d.fy=d.y),r.canvas.classList.add("grabbable")}).on("drag",function(h){var d=h.subject,p=d.__initialDragPos,y=h,g=Yt(r.canvas).k,x={x:p.x+(y.x-p.x)/g-d.x,y:p.y+(y.y-p.y)/g-d.y};["x","y"].forEach(function(_){return d["f".concat(_)]=d[_]=p[_]+(y[_]-p[_])/g}),!(!d.__dragged&&vA>=Math.sqrt(ik(["x","y"].map(function(_){return Math.pow(h[_]-p[_],2)}))))&&(r.forceGraph.d3AlphaTarget(.3).resetCountdown(),r.isPointerDragging=!0,d.__dragged=!0,r.onNodeDrag(d,x))}).on("end",function(h){var d=h.subject,p=d.__initialDragPos,y={x:d.x-p.x,y:d.y-p.y};p.fx===void 0&&(d.fx=void 0),p.fy===void 0&&(d.fy=void 0),delete d.__initialDragPos,r.forceGraph.d3AlphaTarget()&&r.forceGraph.d3AlphaTarget(0).resetCountdown(),r.canvas.classList.remove("grabbable"),r.isPointerDragging=!1,d.__dragged&&(delete d.__dragged,r.onNodeDragEnd(d,y))})),r.zoom(r.zoom.__baseElem=ct(r.canvas)),r.zoom.__baseElem.on("dblclick.zoom",null),r.zoom.filter(function(h){return!h.button&&r.enableZoomPanInteraction&&(h.type!=="wheel"||oe(r.enableZoomInteraction)(h))&&(h.type==="wheel"||oe(r.enablePanInteraction)(h))}).on("zoom",function(h){var d=h.transform;[s,a].forEach(function(p){Rv(p),p.translate(d.x,d.y),p.scale(d.k,d.k)}),r.isPointerDragging=!0,r.onZoom&&r.onZoom(Or(Or({},d),i.centerAt())),r.needsRedraw=!0}).on("end",function(h){r.isPointerDragging=!1,r.onZoomEnd&&r.onZoomEnd(Or(Or({},h.transform),i.centerAt()))}),nu(r),r.forceGraph.onNeedsRedraw(function(){return r.needsRedraw=!0}).onFinishUpdate(function(){Yt(r.canvas).k===r.lastSetZoom&&r.graphData.nodes.length&&(r.zoom.scaleTo(r.zoom.__baseElem,r.lastSetZoom=yA/Math.cbrt(r.graphData.nodes.length)),r.needsRedraw=!0)}),r.tooltip=new H3(o),["pointermove","pointerdown"].forEach(function(h){return o.addEventListener(h,function(d){h==="pointerdown"&&(r.isPointerPressed=!0,r.pointerDownEvent=d),!r.isPointerDragging&&d.type==="pointermove"&&r.onBackgroundClick&&(d.pressure>0||r.isPointerPressed)&&(d.pointerType==="mouse"||d.movementX===void 0||[d.movementX,d.movementY].some(function(g){return Math.abs(g)>1}))&&(r.isPointerDragging=!0);var p=y(o);l.x=d.pageX-p.left,l.y=d.pageY-p.top;function y(g){var x=g.getBoundingClientRect(),_=window.pageXOffset||document.documentElement.scrollLeft,m=window.pageYOffset||document.documentElement.scrollTop;return{top:x.top+m,left:x.left+_}}},{passive:!0})}),o.addEventListener("pointerup",function(h){if(r.isPointerPressed){if(r.isPointerPressed=!1,r.isPointerDragging){r.isPointerDragging=!1;return}var d=[h,r.pointerDownEvent];requestAnimationFrame(function(){if(h.button===0)if(r.hoverObj){var p=r["on".concat(r.hoverObj.type,"Click")];p&&p.apply(void 0,[r.hoverObj.d].concat(d))}else r.onBackgroundClick&&r.onBackgroundClick.apply(r,d);if(h.button===2)if(r.hoverObj){var y=r["on".concat(r.hoverObj.type,"RightClick")];y&&y.apply(void 0,[r.hoverObj.d].concat(d))}else r.onBackgroundRightClick&&r.onBackgroundRightClick.apply(r,d)})}},{passive:!0}),o.addEventListener("contextmenu",function(h){return!r.onBackgroundRightClick&&!r.onNodeRightClick&&!r.onLinkRightClick?!0:(h.preventDefault(),!1)}),r.forceGraph(s),r.shadowGraph(a);var c=TE(function(){Zp(a,r.width,r.height),r.shadowGraph.linkWidth(function(d){return oe(r.linkWidth)(d)+r.linkHoverPrecision});var h=Yt(r.canvas);r.shadowGraph.globalScale(h.k).tickFrame()},gA);r.flushShadowCanvas=c.flush,(this._animationCycle=function h(){var d=!r.autoPauseRedraw||!!r.needsRedraw||r.forceGraph.isEngineRunning()||r.graphData.links.some(function(w){return w.__photons&&w.__photons.length});if(r.needsRedraw=!1,r.enablePointerInteraction){var p=r.isPointerDragging?null:f();if(p!==r.hoverObj){var y=r.hoverObj,g=y?y.type:null,x=p?p.type:null;if(g&&g!==x){var _=r["on".concat(g,"Hover")];_&&_(null,y.d)}if(x){var m=r["on".concat(x,"Hover")];m&&m(p.d,g===x?y.d:null)}r.tooltip.content(p&&oe(r["".concat(p.type.toLowerCase(),"Label")])(p.d)||null),r.canvas.classList[(p&&r["on".concat(x,"Click")]||!p&&r.onBackgroundClick)&&oe(r.showPointerCursor)(p==null?void 0:p.d)?"add":"remove"]("clickable"),r.hoverObj=p}d&&c()}if(d){Zp(s,r.width,r.height);var v=Yt(r.canvas).k;r.onRenderFramePre&&r.onRenderFramePre(s,v),r.forceGraph.globalScale(v).tickFrame(),r.onRenderFramePost&&r.onRenderFramePost(s,v)}r.tweenGroup.update(),r.animationFrameRequestId=requestAnimationFrame(h)})()},update:function(n){}}),Mv={exports:{}},kA="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",jA=kA,SA=jA;function Ov(){}function zv(){}zv.resetWarningCache=Ov;var NA=function(){function e(i,o,s,a,l,f){if(f!==SA){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function n(){return e}var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:zv,resetWarningCache:Ov};return r.PropTypes=r,r};Mv.exports=NA();var CA=Mv.exports;const M=fm(CA),ml={width:M.number,height:M.number,graphData:M.shape({nodes:M.arrayOf(M.object).isRequired,links:M.arrayOf(M.object).isRequired}),backgroundColor:M.string,nodeRelSize:M.number,nodeId:M.string,nodeLabel:M.oneOfType([M.string,M.func]),nodeVal:M.oneOfType([M.number,M.string,M.func]),nodeVisibility:M.oneOfType([M.bool,M.string,M.func]),nodeColor:M.oneOfType([M.string,M.func]),nodeAutoColorBy:M.oneOfType([M.string,M.func]),onNodeHover:M.func,onNodeClick:M.func,linkSource:M.string,linkTarget:M.string,linkLabel:M.oneOfType([M.string,M.func]),linkVisibility:M.oneOfType([M.bool,M.string,M.func]),linkColor:M.oneOfType([M.string,M.func]),linkAutoColorBy:M.oneOfType([M.string,M.func]),linkWidth:M.oneOfType([M.number,M.string,M.func]),linkCurvature:M.oneOfType([M.number,M.string,M.func]),linkDirectionalArrowLength:M.oneOfType([M.number,M.string,M.func]),linkDirectionalArrowColor:M.oneOfType([M.string,M.func]),linkDirectionalArrowRelPos:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticles:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleSpeed:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleOffset:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleWidth:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleColor:M.oneOfType([M.string,M.func]),onLinkHover:M.func,onLinkClick:M.func,dagMode:M.oneOf(["td","bu","lr","rl","zin","zout","radialin","radialout"]),dagLevelDistance:M.number,dagNodeFilter:M.func,onDagError:M.func,d3AlphaMin:M.number,d3AlphaDecay:M.number,d3VelocityDecay:M.number,warmupTicks:M.number,cooldownTicks:M.number,cooldownTime:M.number,onEngineTick:M.func,onEngineStop:M.func,getGraphBbox:M.func},Fv={zoomToFit:M.func,onNodeRightClick:M.func,onNodeDrag:M.func,onNodeDragEnd:M.func,onLinkRightClick:M.func,linkHoverPrecision:M.number,onBackgroundClick:M.func,onBackgroundRightClick:M.func,showPointerCursor:M.oneOfType([M.bool,M.func]),enablePointerInteraction:M.bool,enableNodeDrag:M.bool},ed={showNavInfo:M.bool,nodeOpacity:M.number,nodeResolution:M.number,nodeThreeObject:M.oneOfType([M.object,M.string,M.func]),nodeThreeObjectExtend:M.oneOfType([M.bool,M.string,M.func]),nodePositionUpdate:M.func,linkOpacity:M.number,linkResolution:M.number,linkCurveRotation:M.oneOfType([M.number,M.string,M.func]),linkMaterial:M.oneOfType([M.object,M.string,M.func]),linkThreeObject:M.oneOfType([M.object,M.string,M.func]),linkThreeObjectExtend:M.oneOfType([M.bool,M.string,M.func]),linkPositionUpdate:M.func,linkDirectionalArrowResolution:M.number,linkDirectionalParticleResolution:M.number,linkDirectionalParticleThreeObject:M.oneOfType([M.object,M.string,M.func]),forceEngine:M.oneOf(["d3","ngraph"]),ngraphPhysics:M.object,numDimensions:M.oneOf([1,2,3])},EA=Object.assign({},ml,Fv,{linkLineDash:M.oneOfType([M.arrayOf(M.number),M.string,M.func]),nodeCanvasObjectMode:M.oneOfType([M.string,M.func]),nodeCanvasObject:M.func,nodePointerAreaPaint:M.func,linkCanvasObjectMode:M.oneOfType([M.string,M.func]),linkCanvasObject:M.func,linkPointerAreaPaint:M.func,linkDirectionalParticleCanvasObject:M.func,autoPauseRedraw:M.bool,minZoom:M.number,maxZoom:M.number,enableZoomInteraction:M.oneOfType([M.bool,M.func]),enablePanInteraction:M.oneOfType([M.bool,M.func]),onZoom:M.func,onZoomEnd:M.func,onRenderFramePre:M.func,onRenderFramePost:M.func});Object.assign({},ml,Fv,ed,{enableNavigationControls:M.bool,controlType:M.oneOf(["trackball","orbit","fly"]),rendererConfig:M.object,extraRenderers:M.arrayOf(M.shape({render:M.func.isRequired}))});Object.assign({},ml,ed,{nodeDesc:M.oneOfType([M.string,M.func]),linkDesc:M.oneOfType([M.string,M.func])});Object.assign({},ml,ed,{markerAttrs:M.object,yOffset:M.number,glScale:M.number});const td=nE(bA,{methodNames:["emitParticle","d3Force","d3ReheatSimulation","stopAnimation","pauseAnimation","resumeAnimation","centerAt","zoom","zoomToFit","getGraphBbox","screen2GraphCoords","graph2ScreenCoords"]});td.displayName="ForceGraph2D";td.propTypes=EA;const Ac={Corporation:"#5B4FFF","Government Agency":"#FF6B35","Investment Firm":"#E91E63","Research Institution":"#FF9800","Non-Profit":"#9C27B0",Organization:"#00BCD4",Facility:"#4CAF50",Program:"#FF1744",Individual:"#2196F3",Unknown:"#9E9E9E",default:"#BDBDBD"},TA={1:["Organization"],2:["Government Agency"],3:["Research Institution"],4:["Corporation","Investment Firm"],5:["Facility"],6:["Program"]},Ke=e=>typeof e=="string"?e:(e==null?void 0:e.id)||"";function AA({filterLevels:e=[],selectedActor:n,onSelectActor:r,colorMode:i,showInferred:o,minConnections:s,onDataReady:a}){const[l,f]=E.useState({nodes:[],links:[]}),[c,h]=E.useState({nodes:[],links:[]}),[d,p]=E.useState(!0),[y,g]=E.useState(null),[x,_]=E.useState(!1),[m,v]=E.useState(null),w=E.useRef(),b=E.useRef(null),k=E.useRef(null);E.useEffect(()=>{j()},[]);const j=async()=>{try{p(!0),g(null);const N=await xb(),P=new Map;for(const R of N.edges){const B=`${R.source}|||${R.target}`,D=`${R.target}|||${R.source}`,z=P.get(B)||P.get(D);z?(z.count=(z.count||1)+1,R.value&&(!z.value||R.value>z.value)&&(z.value=R.value)):P.set(B,{source:R.source,target:R.target,label:R.label,value:R.value,count:1})}const S=new Map;for(const R of P.values())S.set(R.source,(S.get(R.source)||0)+(R.count||1)),S.set(R.target,(S.get(R.target)||0)+(R.count||1));const L={nodes:N.nodes.map(R=>({...R,val:S.get(R.id)||1,_connections:S.get(R.id)||0})),links:Array.from(P.values())};f(L)}catch(N){g("Failed to load graph data"),console.error("Error loading graph:",N)}finally{p(!1)}};E.useEffect(()=>{if(l.nodes.length===0){h({nodes:[],links:[]});return}const N=new Map;l.links.forEach(z=>{const U=Ke(z.source),q=Ke(z.target),X=z.count||1;N.set(U,(N.get(U)||0)+X),N.set(q,(N.get(q)||0)+X)});const P=z=>{if(z.intel_stack_level)return e.includes(z.intel_stack_level);if(z.type){for(const U of e)if((TA[U]||[]).includes(z.type))return!0}return!1},S=new Set;e.length>0&&l.nodes.forEach(z=>{P(z)&&S.add(z.id)});const L=new Set;e.length>0&&S.size>0&&l.links.forEach(z=>{const U=Ke(z.source),q=Ke(z.target);S.has(U)&&L.add(q),S.has(q)&&L.add(U)});const R=l.nodes.filter(z=>!((N.get(z.id)||0)0&&!P(z)&&!L.has(z.id))),B=new Set(R.map(z=>z.id)),D=[];l.links.forEach(z=>{const U=Ke(z.source),q=Ke(z.target);!o&&z.label&&(z.label.includes("Co-Recipient")||z.label.includes("Same Industry")||z.label.includes("Award Recipient"))||B.has(U)&&B.has(q)&&D.push({source:U,target:q,label:z.label,value:z.value,count:z.count})}),h({nodes:R,links:D})},[l,o,s,e]);const C=E.useMemo(()=>c.nodes.map(N=>({name:N.name||N.id,connections:N._connections||0,type:N.type||"Unknown"})).sort((N,P)=>P.connections-N.connections),[c.nodes]);E.useEffect(()=>{const N=c.links.filter(P=>{var S,L,R;return((S=P.label)==null?void 0:S.includes("Co-Recipient"))||((L=P.label)==null?void 0:L.includes("Same Industry"))||((R=P.label)==null?void 0:R.includes("Award Recipient"))}).length;a==null||a({nodeCount:c.nodes.length,linkCount:c.links.length,inferredCount:N,nodeIndex:C,rawLinks:c.links,totalRawLinks:l.links.length})},[c,C,l.links.length]);const T=E.useMemo(()=>{const N=Math.max(1,...c.nodes.map(P=>P._connections||1));return Q0().exponent(.5).domain([1,N]).range([4,40]).clamp(!0)},[c.nodes]),{selectedNeighbors:F,selectedLinkSet:A}=E.useMemo(()=>{if(!n)return{selectedNeighbors:new Set,selectedLinkSet:new Set};const N=new Set,P=new Set;return c.links.forEach(S=>{const L=Ke(S.source),R=Ke(S.target);(L===n||R===n)&&(N.add(L),N.add(R),P.add(`${L}|||${R}`),P.add(`${R}|||${L}`))}),{selectedNeighbors:N,selectedLinkSet:P}},[n,c.links]),O=E.useCallback(N=>i==="proximity"&&n?N.id===n||N.name===n?"#dc2626":F.has(N.id)||F.has(N.name||"")?"#f59e0b":"hsl(120, 40%, 45%)":Ac[N.type||"default"]||Ac.default,[i,n,F]);return E.useEffect(()=>{var L,R,B;if(!w.current||c.nodes.length===0)return;const N=w.current,S=c.nodes.length>100?-250:-350;(L=N.d3Force("charge"))==null||L.strength(S).distanceMax(300),(R=N.d3Force("link"))==null||R.distance(60).strength(.7),N.d3Force("collision",tC().radius(D=>T(D._connections||1)+6).strength(.8)),N.d3Force("radial",nC(D=>(50-Math.min(D._connections||0,50))*12+60,0,0).strength(.3)),(B=N.d3Force("center"))==null||B.strength(.05),N.d3ReheatSimulation()},[c,T]),E.useEffect(()=>(c.nodes.length>0&&!x&&w.current&&(k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{var N;(N=w.current)==null||N.zoomToFit(600,40),_(!0)},2500)),()=>{k.current&&clearTimeout(k.current)}),[c,x]),E.useEffect(()=>{if(!n||!w.current)return;const N=c.nodes.find(P=>P.id===n||P.name===n);N&&N.x!==void 0&&N.y!==void 0&&(w.current.centerAt(N.x,N.y,800),w.current.zoom(2.5,800))},[n]),d?u.jsx("div",{className:"network-graph-container",children:u.jsxs("div",{className:"loading",children:[u.jsx(Dy,{size:32,className:"loading-spinner"}),u.jsx("span",{children:"Loading network graph..."})]})}):y?u.jsx("div",{className:"network-graph-container",children:u.jsxs("div",{className:"error",children:[y,u.jsx("button",{onClick:j,style:{marginTop:12},children:"Retry"})]})}):c.nodes.length===0?u.jsx("div",{className:"network-graph-container",children:u.jsx("div",{className:"empty",children:"No network data available"})}):u.jsxs("div",{className:"network-graph-container",ref:b,children:[u.jsx(td,{ref:w,graphData:c,backgroundColor:"#030712",d3AlphaDecay:.025,d3VelocityDecay:.4,warmupTicks:200,cooldownTicks:300,cooldownTime:8e3,minZoom:.01,maxZoom:10,nodeVal:N=>T(N._connections||1),nodeCanvasObject:(N,P,S)=>{const L=T(N._connections||1),R=N.name||N.id||"",B=n&&(N.id===n||N.name===n),D=n&&(F.has(N.id)||F.has(N.name||"")),z=n&&!B&&!D;if(P.beginPath(),P.arc(N.x,N.y,L,0,2*Math.PI),P.fillStyle=z?"rgba(100,100,100,0.25)":O(N),P.fill(),B?(P.strokeStyle="#06b6d4",P.lineWidth=3):(P.strokeStyle=z?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.6)",P.lineWidth=1),P.stroke(),S>.4||B||D&&S>.25){const U=Math.max(3,Math.min(11,12/S));P.font=`${B?"bold ":""}${U}px Sans-Serif`,P.textAlign="center",P.textBaseline="top";const q=N.y+L+2;z||(P.fillStyle="rgba(255,255,255,0.92)",P.fillText(R,N.x,q))}},linkColor:N=>{if(!n){const R=N.label||"";return R.includes("Money Flow")||R.includes("$")?"rgba(91, 79, 255, 0.35)":R.includes("Award")?"rgba(250, 204, 21, 0.3)":"rgba(255,255,255,0.12)"}const P=Ke(N.source),S=Ke(N.target),L=`${P}|||${S}`;return A.has(L)?"#06b6d4":"rgba(255,255,255,0.04)"},linkWidth:N=>{if(!n)return(N.count||1)>1?2:1;const P=Ke(N.source),S=Ke(N.target);return A.has(`${P}|||${S}`)?2.5:.3},linkDirectionalParticles:N=>{if(!n)return 0;const P=Ke(N.source),S=Ke(N.target);return A.has(`${P}|||${S}`)?3:0},linkDirectionalParticleWidth:2,linkDirectionalParticleSpeed:.008,onNodeClick:N=>{const P=N.name||N.id;r(n===P?null:P)},onNodeHover:(N,P)=>{document.body.style.cursor=N?"pointer":"default",v(N||null)},onBackgroundClick:()=>r(null)}),m&&u.jsx("div",{className:"graph-tooltip",style:{position:"absolute",pointerEvents:"none",left:0,top:0}}),u.jsxs("div",{className:"graph-instructions-bar",children:[u.jsx("span",{children:"Click nodes to explore relationships"}),u.jsx("span",{className:"separator",children:"•"}),u.jsx("span",{children:"Scroll to zoom"}),u.jsx("span",{className:"separator",children:"•"}),u.jsx("span",{children:"Drag to pan"})]})]})}const Ui=[{level:1,name:"Control Group",color:"#FF1744",description:"MITRE/JASON, NSC, Executive Branch"},{level:2,name:"Administrators",color:"#FF6B35",description:"NRO, NGA, CIA DS&T, DIA, NSA, OUSD, SAF-AQ"},{level:3,name:"FFRDCs",color:"#FF9800",description:"MITRE, Battelle, Sandia, LANL, LLNL, Oak Ridge"},{level:4,name:"Prime Contractors",color:"#5B4FFF",description:"Lockheed Martin, Northrop Grumman, Raytheon"},{level:5,name:"Facilities",color:"#4CAF50",description:"Area 51, S4, Edwards AFB, Tonopah, Dugway"},{level:6,name:"Programs",color:"#E91E63",description:"Immaculate Constellation, Kona Blue, etc."}];function nd({activeLevels:e,onChange:n,showAll:r=!0,compact:i=!1}){const o=f=>{e.includes(f)?n(e.filter(c=>c!==f)):n([...e,f].sort())},s=()=>{e.length===Ui.length?n([]):n(Ui.map(f=>f.level))},a=e.length===Ui.length,l=e.length===0;return u.jsxs("div",{className:`intel-stack-filter ${i?"compact":""}`,children:[u.jsxs("div",{className:"intel-stack-header",children:[u.jsx("h4",{children:"Intelligence Stack"}),r&&u.jsx("button",{className:`select-all-btn ${a?"all-selected":""}`,onClick:s,title:a?"Deselect All":"Select All",children:a?"Clear":"All"})]}),u.jsx("div",{className:"intel-stack-pyramid",children:Ui.map(f=>{const c=e.includes(f.level)||l;return u.jsxs("button",{className:`stack-level ${c?"active":"inactive"}`,onClick:()=>o(f.level),style:{"--stack-color":f.color,"--stack-width":`${100-(f.level-1)*10}%`},title:f.description,"aria-pressed":c,children:[u.jsx("span",{className:"stack-indicator",style:{backgroundColor:f.color}}),u.jsx("span",{className:"stack-name",children:f.name}),!i&&u.jsxs("span",{className:"stack-level-num",children:["L",f.level]})]},f.level)})}),!i&&u.jsx("div",{className:"intel-stack-info",children:u.jsx("small",{children:l?"Showing all levels":`Showing ${e.length} of ${Ui.length} levels`})})]})}function PA({nodeCount:e,linkCount:n,inferredCount:r,selectedActor:i,onClearActor:o,onSelectActor:s,nodeIndex:a,showInferred:l,onShowInferredChange:f,minConnections:c,onMinConnectionsChange:h,colorMode:d,onColorModeChange:p,filterLevels:y,onFilterLevelsChange:g,colorMap:x,uniqueTypes:_}){const[m,v]=E.useState(""),[w,b]=E.useState(!1),[k,j]=E.useState(!0),[C,T]=E.useState(!1),[F,A]=E.useState(!1),O=E.useRef(null);E.useEffect(()=>{const S=L=>{O.current&&!O.current.contains(L.target)&&b(!1)};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[]);const N=E.useMemo(()=>{if(!m.trim())return[];const S=m.toLowerCase();return a.filter(L=>L.name.toLowerCase().includes(S)).sort((L,R)=>R.connections-L.connections).slice(0,20)},[m,a]),P=S=>{s(S),v(""),b(!1)};return u.jsxs("aside",{className:"graph-sidebar",children:[u.jsxs("div",{className:"graph-sidebar-header",children:[u.jsxs(Pe,{to:"/analysis",className:"back-link",children:[u.jsx(Tf,{size:14}),u.jsx("span",{children:"Back to Analysis"})]}),u.jsx("h2",{children:"Entity Network"})]}),u.jsxs("div",{className:"graph-sidebar-stats",children:[u.jsxs("div",{className:"stat-row",children:[u.jsx("span",{className:"stat-label",children:"Entities:"}),u.jsx("span",{className:"stat-value",children:e.toLocaleString()})]}),u.jsxs("div",{className:"stat-row",children:[u.jsx("span",{className:"stat-label",children:"Connections:"}),u.jsx("span",{className:"stat-value",children:n.toLocaleString()})]}),r>0&&u.jsxs("div",{className:"stat-row",children:[u.jsx("span",{className:"stat-label",children:"Inferred:"}),u.jsx("span",{className:"stat-value",style:{color:"#facc15"},children:r.toLocaleString()})]})]}),i&&u.jsxs("div",{className:"graph-sidebar-selected",children:[u.jsxs("div",{className:"selected-actor-header",children:[u.jsx("span",{className:"actor-label",children:"Selected actor:"}),u.jsx("button",{className:"clear-actor-btn",onClick:o,children:"Clear"})]}),u.jsx("div",{className:"selected-actor-name",children:i})]}),u.jsxs("div",{className:"graph-search-container",ref:O,children:[u.jsx("label",{children:"Search entities:"}),u.jsx("input",{className:"graph-search-input",type:"text",placeholder:"e.g., Lockheed Martin",value:m,onChange:S=>{v(S.target.value),b(!0)},onFocus:()=>{m.trim()&&b(!0)}}),w&&N.length>0&&u.jsx("div",{className:"search-results-dropdown",role:"listbox",children:N.map(S=>u.jsxs("button",{className:"search-result-item",role:"option",type:"button",onClick:()=>P(S.name),children:[u.jsx("span",{className:"result-name",children:S.name}),u.jsxs("span",{className:"result-count",children:[S.connections," conn."]})]},S.name))})]}),u.jsxs("div",{className:"sidebar-section",children:[u.jsxs("button",{className:"section-toggle",onClick:()=>j(!k),children:[u.jsx("span",{children:"Filters"}),u.jsx("span",{className:"toggle-arrow",children:k?"▼":"▶"})]}),k&&u.jsxs("div",{className:"section-content",children:[u.jsx("div",{className:"filter-row",children:u.jsxs("label",{children:[u.jsx("input",{type:"checkbox",checked:l,onChange:S=>f(S.target.checked)}),"Show inferred"]})}),u.jsx("div",{className:"filter-row",children:u.jsxs("label",{children:["Min connections:",u.jsx("input",{type:"number",min:0,max:20,value:c,onChange:S=>h(parseInt(S.target.value)||0)})]})}),u.jsxs("div",{style:{marginTop:8},children:[u.jsx("span",{style:{fontSize:"0.75rem",color:"#94a3b8"},children:"Color by:"}),u.jsxs("div",{className:"color-mode-toggle",children:[u.jsx("button",{className:`color-mode-btn ${d==="type"?"active":""}`,onClick:()=>p("type"),children:"Entity Type"}),u.jsx("button",{className:`color-mode-btn ${d==="proximity"?"active":""}`,onClick:()=>p("proximity"),children:"Proximity"})]})]})]})]}),u.jsxs("div",{className:"sidebar-section",children:[u.jsxs("button",{className:"section-toggle",onClick:()=>A(!F),children:[u.jsx("span",{children:"Intel Stack"}),u.jsx("span",{className:"toggle-arrow",children:F?"▼":"▶"})]}),F&&u.jsx("div",{className:"section-content",children:u.jsx(nd,{activeLevels:y,onChange:g,compact:!0})})]}),u.jsxs("div",{className:"sidebar-section",children:[u.jsxs("button",{className:"section-toggle",onClick:()=>T(!C),children:[u.jsx("span",{children:"Legend"}),u.jsx("span",{className:"toggle-arrow",children:C?"▼":"▶"})]}),C&&u.jsx("div",{className:"section-content",children:u.jsx("div",{className:"sidebar-legend-items",children:_.map(S=>u.jsxs("div",{className:"sidebar-legend-item",children:[u.jsx("span",{className:"sidebar-legend-color",style:{backgroundColor:x[S]||"#9B9B9B"}}),u.jsx("span",{children:S})]},S))})})]})]})}function RA(e){if(!e)return{cls:"relationship",text:"RELATED"};const n=e.toLowerCase();return n.includes("money flow")||n.includes("$")||n.includes("financial")?{cls:"financial",text:"FINANCIAL"}:n.includes("award")||n.includes("contract")?{cls:"award",text:"AWARD"}:n.includes("co-recipient")||n.includes("same industry")||n.includes("inferred")?{cls:"inferred",text:"INFERRED"}:{cls:"relationship",text:"RELATED"}}function MA(e){return!e||e<=0?null:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toLocaleString()}`}function OA({actorName:e,links:n,totalLinks:r,onClose:i,onSelectActor:o}){const[s,a]=E.useState(""),l=E.useMemo(()=>n.filter(c=>{var p,y;const h=typeof c.source=="string"?c.source:((p=c.source)==null?void 0:p.id)||"",d=typeof c.target=="string"?c.target:((y=c.target)==null?void 0:y.id)||"";return h===e||d===e}),[n,e]),f=E.useMemo(()=>{if(!s.trim())return l;const c=s.toLowerCase();return l.filter(h=>{var g,x;const d=typeof h.source=="string"?h.source:((g=h.source)==null?void 0:g.id)||"",p=typeof h.target=="string"?h.target:((x=h.target)==null?void 0:x.id)||"";return(d===e?p:d).toLowerCase().includes(c)})},[l,s,e]);return u.jsxs("div",{className:"relationship-timeline",children:[u.jsxs("div",{className:"timeline-header",children:[u.jsxs("div",{className:"timeline-header-top",children:[u.jsx("h3",{children:"Timeline"}),u.jsx("button",{className:"timeline-close-btn",onClick:i,title:"Close panel",children:"✕"})]}),u.jsx("div",{className:"timeline-actor-name",children:e}),u.jsxs("div",{className:"timeline-subtitle",children:["Showing ",f.length," of ",r," relationships"]})]}),u.jsxs("div",{className:"timeline-filter",children:[u.jsx("label",{children:"Filter by entity:"}),u.jsx("input",{className:"timeline-filter-input",type:"text",placeholder:"e.g., Boeing",value:s,onChange:c=>a(c.target.value)})]}),u.jsx("div",{className:"timeline-entries",children:f.length===0?u.jsx("div",{className:"timeline-empty",children:"No interactions found"}):f.map((c,h)=>{var m,v;const d=typeof c.source=="string"?c.source:((m=c.source)==null?void 0:m.id)||"",p=typeof c.target=="string"?c.target:((v=c.target)==null?void 0:v.id)||"",y=d===e?p:d,g=d===e,x=RA(c.label||""),_=MA(c.value);return u.jsxs("div",{className:"timeline-entry",children:[u.jsx("span",{className:`timeline-entry-type ${x.cls}`,children:x.text}),c.count&&c.count>1&&u.jsxs("span",{style:{fontSize:"0.68rem",color:"#64748b",marginLeft:6},children:["x",c.count]}),u.jsxs("div",{className:"timeline-entry-actors",children:[u.jsx("span",{className:"actor-source",onClick:()=>o(g?e:y),children:g?e:y}),u.jsxs("span",{className:"actor-action",children:[" ",c.label||"related to"," "]}),u.jsx("span",{className:"actor-target",onClick:()=>o(g?y:e),children:g?y:e})]}),_&&u.jsx("div",{className:"timeline-entry-amount",children:_})]},`${d}-${p}-${h}`)})}),u.jsxs(Pe,{to:`/browse?search=${encodeURIComponent(e)}&highlight=${encodeURIComponent(e)}`,className:"timeline-browse-link",children:["View ",e," in Browse"]})]})}function zA(){const[e,n]=E.useState([]),[r,i]=E.useState(null),[o,s]=E.useState("type"),[a,l]=E.useState(!0),[f,c]=E.useState(0),[h,d]=E.useState({nodeCount:0,linkCount:0,inferredCount:0,nodeIndex:[],rawLinks:[],totalRawLinks:0}),p=E.useCallback(g=>{d(g)},[]),y=h.nodeIndex.reduce((g,x)=>(g.includes(x.type)||g.push(x.type),g),[]).sort();return u.jsxs("div",{className:"network-page-layout",role:"main","aria-label":"Entity Network Graph",children:[u.jsx(PA,{nodeCount:h.nodeCount,linkCount:h.linkCount,inferredCount:h.inferredCount,selectedActor:r,onClearActor:()=>i(null),onSelectActor:g=>i(g),nodeIndex:h.nodeIndex,showInferred:a,onShowInferredChange:l,minConnections:f,onMinConnectionsChange:c,colorMode:o,onColorModeChange:s,filterLevels:e,onFilterLevelsChange:n,colorMap:Ac,uniqueTypes:y}),u.jsx("div",{className:"network-page-center",children:u.jsx(AA,{filterLevels:e,selectedActor:r,onSelectActor:i,colorMode:o,showInferred:a,minConnections:f,onDataReady:p})}),r&&u.jsx(OA,{actorName:r,links:h.rawLinks,totalLinks:h.totalRawLinks,onClose:()=>i(null),onSelectActor:g=>i(g)}),u.jsx("style",{children:` + .network-page-layout { + display: flex; + height: calc(100vh - 60px); + width: 100%; + overflow: hidden; + background: #030712; + } + + .network-page-center { + flex: 1; + min-width: 280px; + height: 100%; + position: relative; + } + + @media (max-width: 700px) { + .network-page-layout { + flex-direction: column; + height: calc(100vh - 50px); + } + .network-page-center { + flex: 1; + } + } + `})]})}function ru(e){return e>=1e12?`$${(e/1e12).toFixed(2)}T`:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const em=14;function FA({data:e,x:n,y:r}){if(!e)return null;const i={left:n+em,top:r+em};return u.jsxs("div",{className:"pyramid-tooltip",style:i,role:"tooltip",children:[e.kind==="tier"&&u.jsxs("div",{className:"pyramid-tooltip-tier",children:[u.jsxs("div",{className:"pyramid-tooltip-title",style:{color:e.tier.color},children:["L",e.tier.level,": ",e.tier.name]}),u.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.tier.entity_count," entities · ",ru(e.tier.total_money_flow_usd)," flow"]}),e.topEntities.length>0&&u.jsx("div",{className:"pyramid-tooltip-list",children:e.topEntities.slice(0,3).map(o=>u.jsx("span",{className:"pyramid-tooltip-item",children:o},o))})]}),e.kind==="entity"&&u.jsxs("div",{className:"pyramid-tooltip-entity",children:[u.jsx("div",{className:"pyramid-tooltip-title",children:e.entity.display_name}),u.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.entity.entity_type??"Unknown"," · L",e.level," ",e.levelName]}),e.entity.description&&u.jsx("p",{className:"pyramid-tooltip-desc",children:e.entity.description}),u.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.entity.relationship_count??0," relationships · ",ru(e.entity.money_flow_total_usd??0)," flow"]}),e.entity.key_connections&&e.entity.key_connections.length>0&&u.jsxs("div",{className:"pyramid-tooltip-list",children:[u.jsx("span",{className:"pyramid-tooltip-label",children:"Key connections:"}),e.entity.key_connections.slice(0,3).map(o=>u.jsx("span",{className:"pyramid-tooltip-item",children:o},o))]})]}),e.kind==="flow"&&u.jsxs("div",{className:"pyramid-tooltip-flow",children:[u.jsxs("div",{className:"pyramid-tooltip-title",children:[e.fromName," → ",e.toName]}),u.jsxs("div",{className:"pyramid-tooltip-meta",children:[ru(e.flow.total_usd)," · ",e.flow.flow_count," flow(s)"]})]})]})}const gl=600,tm=420,$A=44,DA=90,Gt=gl/2,Ts=.12*gl,nm=.42*gl;function IA(e){return e>=1e12?`$${(e/1e12).toFixed(2)}T`:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const rm={Corporation:"#5B4FFF","Government Agency":"#FF6B35","Research Institution":"#FF9800",Facility:"#4CAF50",Program:"#E91E63",Individual:"#2196F3",Organization:"#00BCD4","Investment Firm":"#E91E63",Unknown:"#9E9E9E"};function im(e){return e&&rm[e]||rm.Unknown}const LA=8,om=10;function UA(e){return e.length<=om?e:e.slice(0,om-1)+"…"}function sm(e){return[...e].sort((n,r)=>{const i=(r.relationship_count??0)-(n.relationship_count??0);return i!==0?i:(r.money_flow_total_usd??0)-(n.money_flow_total_usd??0)})}function BA(e){const{data:n,loading:r=!1,highlightedEntityId:i=null,onEntityClick:o,showFlowLines:s=!0,activeLevels:a=[1,2,3,4,5,6],chainEntityIds:l}=e,f=j=>!l||l.size===0||l.has(j),[c,h]=E.useState(null),[d,p]=E.useState(null),[y,g]=E.useState(null),x=E.useCallback((j,C)=>{p(j.level);const T=sm(j.entities).slice(0,3).map(F=>F.display_name);g({data:{kind:"tier",tier:j,topEntities:T},x:C.clientX,y:C.clientY})},[]),_=E.useCallback(()=>{p(null),g(null)},[]),m=E.useCallback(()=>g(null),[]),v=(n==null?void 0:n.levels)??[],w=(n==null?void 0:n.cross_level_flows)??[],b=E.useMemo(()=>{const j=new Set(a.length?a:[1,2,3,4,5,6]);return v.filter(C=>j.has(C.level))},[v,a]),k=E.useMemo(()=>{const j=b.reduce((F,A)=>F+Math.max(A.entity_count,1),0)||1;let C=20;const T=[];for(let F=0;Fu.jsxs("linearGradient",{id:`pyramid-grad-${j.level}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:[u.jsx("stop",{offset:"0%",stopColor:j.color,stopOpacity:1}),u.jsx("stop",{offset:"100%",stopColor:j.color,stopOpacity:.75})]},`grad-${j.level}`)),s&&w.filter(j=>j.flow_count>0).slice(0,14).map((j,C)=>{const T=k.find(N=>N.level===j.from_level),F=k.find(N=>N.level===j.to_level);if(!T||!F)return null;const A=(T.yTop+T.yBottom)/2,O=(F.yTop+F.yBottom)/2;return u.jsxs("linearGradient",{id:`flow-grad-${C}`,x1:"0",y1:A,x2:"0",y2:O,gradientUnits:"userSpaceOnUse",children:[u.jsx("stop",{offset:"0%",stopColor:T.color}),u.jsx("stop",{offset:"100%",stopColor:F.color})]},`flow-grad-${C}`)})]}),s&&w.filter(j=>j.flow_count>0).slice(0,14).map((j,C)=>{const T=k.find(z=>z.level===j.from_level),F=k.find(z=>z.level===j.to_level);if(!T||!F)return null;const A=(T.yTop+T.yBottom)/2,O=(F.yTop+F.yBottom)/2,N=Gt,P=Gt,S=(A+O)/2,L=Math.max(...w.map(z=>z.total_usd),1),R=Math.log10(1+j.total_usd/L*9),B=Math.min(12,Math.max(3,3+R*6)),D=["","Control","Admin","FFRDCs","Primes","Facilities","Programs"];return u.jsx("path",{d:`M ${N} ${A} Q ${N} ${S} ${(N+P)/2} ${S} T ${P} ${O}`,fill:"none",stroke:`url(#flow-grad-${C})`,strokeWidth:B,strokeOpacity:.7,strokeLinecap:"round",className:"pyramid-flow-line pyramid-flow-band",onMouseEnter:z=>{g({data:{kind:"flow",flow:j,fromName:`L${j.from_level} ${D[j.from_level]??""}`,toName:`L${j.to_level} ${D[j.to_level]??""}`},x:z.nativeEvent.clientX,y:z.nativeEvent.clientY})},onMouseLeave:m},`flow-${j.from_level}-${j.to_level}-${C}`)}),k.map(j=>{const C=c===j.level,T=d===j.level,F=`M ${Gt-j.halfWidthTop} ${j.yTop} + L ${Gt+j.halfWidthTop} ${j.yTop} + L ${Gt+j.halfWidthBottom} ${j.yBottom} + L ${Gt-j.halfWidthBottom} ${j.yBottom} Z`;return u.jsxs("g",{className:`pyramid-tier-group ${l!=null&&l.size?j.entities.some(A=>l.has(A.entity_id))?"pyramid-tier-in-chain":"pyramid-tier-dimmed":""}`,onMouseEnter:A=>x(j,A),onMouseLeave:_,children:[u.jsx("path",{d:F,fill:`url(#pyramid-grad-${j.level})`,stroke:"var(--border-color)",strokeWidth:T?2.5:1,className:"pyramid-tier-rect pyramid-tier-trapezoid",onClick:()=>h(C?null:j.level),style:{cursor:"pointer"}}),u.jsxs("text",{x:Gt,y:j.yTop+16,textAnchor:"middle",fill:"white",fontSize:12,fontWeight:600,className:"pyramid-tier-label",children:["L",j.level,": ",j.name," (",j.entity_count,")"]}),j.entities.length>0&&u.jsx("g",{className:"pyramid-tier-entities",children:(()=>{const A=sm(j.entities).slice(0,LA),O=j.entity_count-A.length,N=A.length,P=Math.min(j.halfWidthBottom*1.8,N*28),S=Gt-P/2+(N>1?P/(N+1):P/2)/2,L=N>1?P/(N+1):0,R=(j.yTop+j.yBottom)/2+4;return u.jsxs(u.Fragment,{children:[A.map((B,D)=>{const z=N===1?Gt:S+L*(D+1),U=i===B.entity_id,q=f(B.entity_id);return u.jsxs("g",{className:`pyramid-entity-node ${U?"pyramid-entity-node-highlighted":""} ${q?"":"pyramid-entity-node-dimmed"}`,onClick:X=>{X.stopPropagation(),o==null||o(B,j.level)},onMouseEnter:X=>{const ne=X.nativeEvent;g({data:{kind:"entity",entity:B,level:j.level,levelName:j.name},x:ne.clientX,y:ne.clientY})},onMouseLeave:m,style:{cursor:"pointer"},children:[u.jsx("circle",{cx:z,cy:R,r:10,fill:im(B.entity_type),stroke:U?"white":"var(--border-color)",strokeWidth:U?2.5:1}),u.jsx("text",{x:z,y:R+22,textAnchor:"middle",fill:"var(--text-primary)",fontSize:9,className:"pyramid-entity-node-label",children:UA(B.display_name)})]},B.entity_id)}),O>0&&u.jsxs("text",{x:Gt,y:R+(j.yBottom-j.yTop)/2-4,textAnchor:"middle",fill:"var(--text-muted)",fontSize:10,className:"pyramid-entity-more",children:["+",O," more"]})]})})()})]},j.level)})]}),c!==null&&u.jsx("div",{className:"pyramid-sidebar",children:(()=>{const j=v.find(C=>C.level===c);return j?u.jsxs(u.Fragment,{children:[u.jsxs("h4",{style:{color:j.color,marginBottom:8},children:["L",j.level,": ",j.name]}),u.jsxs("p",{className:"pyramid-tier-stats",children:[j.entity_count," entities · ",IA(j.total_money_flow_usd)," flow"]}),u.jsx("ul",{className:"pyramid-entity-list",children:j.entities.map(C=>u.jsx("li",{children:u.jsxs("button",{type:"button",className:`pyramid-entity-btn ${i===C.entity_id?"highlighted":""}`,onClick:()=>o==null?void 0:o(C,j.level),children:[u.jsx("span",{className:"pyramid-entity-dot",style:{backgroundColor:im(C.entity_type)}}),C.display_name,C.entity_type&&u.jsx("span",{className:"pyramid-entity-type",children:C.entity_type})]})},C.entity_id))})]}):null})()}),y&&u.jsx(FA,{data:y.data,x:y.x,y:y.y})]})}function HA(e){return e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const VA={1:"Control Group",2:"Administrators",3:"FFRDCs",4:"Prime Contractors",5:"Facilities",6:"Programs"};function WA({entityId:e,onClose:n,inline:r=!1}){const[i,o]=E.useState(null),[s,a]=E.useState(null),[l,f]=E.useState(!1);if(E.useEffect(()=>{if(!e){o(null),a(null);return}f(!0),Promise.all([jb(e),f0(e).catch(()=>null)]).then(([h,d])=>{o(h),a(d??null)}).finally(()=>f(!1))},[e]),!e)return null;const c=u.jsxs("div",{className:`entity-detail-panel ${r?"entity-detail-panel-inline":""}`,role:"dialog","aria-label":"Entity detail",children:[u.jsxs("div",{className:"entity-detail-panel-header",children:[u.jsx("h3",{children:"Entity detail"}),u.jsx("button",{type:"button",className:"entity-detail-panel-close",onClick:n,"aria-label":"Close",children:"×"})]}),l&&u.jsx("div",{className:"entity-detail-panel-loading",children:"Loading…"}),!l&&i&&u.jsxs("div",{className:"entity-detail-panel-body",children:[u.jsx("h2",{className:"entity-detail-name",children:i.display_name}),u.jsxs("div",{className:"entity-detail-meta",children:[i.entity_type&&u.jsx("span",{className:"entity-detail-badge",children:i.entity_type}),i.intel_stack_level!=null&&u.jsxs("span",{className:"entity-detail-badge entity-detail-level",children:["L",i.intel_stack_level," ",VA[i.intel_stack_level]??""]})]}),i.description&&u.jsx("p",{className:"entity-detail-desc",children:i.description}),s&&(s.chain_up.length>0||s.chain_down.length>0)&&u.jsxs("section",{className:"entity-detail-section",children:[u.jsx("h4",{children:"Chain of command"}),u.jsxs("div",{className:"entity-detail-chain",children:[s.chain_up.length>0&&u.jsxs("div",{className:"entity-detail-chain-up",children:[u.jsx("span",{className:"entity-detail-chain-label",children:"Up (toward L1)"}),s.chain_up.map(h=>u.jsxs("div",{className:"entity-detail-chain-node",children:["L",h.intel_stack_level??"?"," ",h.display_name]},h.entity_id))]}),u.jsxs("div",{className:"entity-detail-chain-target",children:["→ ",i.display_name]}),s.chain_down.length>0&&u.jsxs("div",{className:"entity-detail-chain-down",children:[u.jsx("span",{className:"entity-detail-chain-label",children:"Down (toward L6)"}),s.chain_down.map(h=>u.jsxs("div",{className:"entity-detail-chain-node",children:["L",h.intel_stack_level??"?"," ",h.display_name]},h.entity_id))]})]})]}),i.relationships_by_type&&Object.keys(i.relationships_by_type).length>0&&u.jsxs("section",{className:"entity-detail-section",children:[u.jsx("h4",{children:"Relationships"}),Object.entries(i.relationships_by_type).map(([h,d])=>u.jsxs("div",{className:"entity-detail-rel-group",children:[u.jsx("span",{className:"entity-detail-rel-type",children:h}),u.jsx("ul",{children:d.map((p,y)=>u.jsxs("li",{children:[p.source===i.display_name?p.target:p.source,p.description&&u.jsxs("span",{className:"entity-detail-rel-desc",children:[" — ",p.description]})]},y))})]},h))]}),i.money_flows&&i.money_flows.length>0&&u.jsxs("section",{className:"entity-detail-section",children:[u.jsx("h4",{children:"Money flows"}),u.jsxs("ul",{className:"entity-detail-flows",children:[i.money_flows.slice(0,15).map((h,d)=>u.jsxs("li",{children:[h.source," → ",h.target,": ",h.amount_usd!=null?HA(h.amount_usd):"—"]},d)),i.money_flows.length>15&&u.jsxs("li",{className:"entity-detail-more",children:["+",i.money_flows.length-15," more"]})]})]}),i.materials_flows&&i.materials_flows.length>0&&u.jsxs("section",{className:"entity-detail-section",children:[u.jsx("h4",{children:"Materials flows"}),u.jsxs("ul",{className:"entity-detail-flows",children:[i.materials_flows.slice(0,10).map((h,d)=>u.jsxs("li",{children:[h.source," → ",h.target,h.material_type?` (${h.material_type})`:""]},d)),i.materials_flows.length>10&&u.jsxs("li",{className:"entity-detail-more",children:["+",i.materials_flows.length-10," more"]})]})]}),u.jsxs("section",{className:"entity-detail-section entity-detail-actions",children:[u.jsx(Pe,{to:`/analysis/network?entity=${encodeURIComponent(i.display_name)}`,className:"entity-detail-link",children:"View in Network Graph"}),u.jsx(Pe,{to:`/browse?q=${encodeURIComponent(i.display_name)}`,className:"entity-detail-link",children:"View in Browse"})]})]})]});return r?c:u.jsx("div",{className:"entity-detail-panel-overlay",onClick:n,role:"presentation",children:u.jsx("div",{onClick:h=>h.stopPropagation(),children:c})})}function qA(){const[e,n]=Fy(),r=e.get("entity")||e.get("entity_id")||null,[i,o]=E.useState(null),[s,a]=E.useState(!0),[l,f]=E.useState(!0),[c,h]=E.useState([1,2,3,4,5,6]),[d,p]=E.useState(null),[y,g]=E.useState(!1),[x,_]=E.useState(new Set),[m,v]=E.useState(""),[w,b]=E.useState([]),[k,j]=E.useState(!1),[C,T]=E.useState(!1),F=E.useRef(null),A=[{level:1,name:"Control Group",color:"#FF1744"},{level:2,name:"Administrators",color:"#FF6B35"},{level:3,name:"FFRDCs",color:"#FF9800"},{level:4,name:"Prime Contractors",color:"#5B4FFF"},{level:5,name:"Facilities",color:"#4CAF50"},{level:6,name:"Programs",color:"#E91E63"}];E.useEffect(()=>{let P=!1;return a(!0),kb().then(S=>{P||o(S)}).finally(()=>{P||a(!1)}),()=>{P=!0}},[]);const O=d||r;E.useEffect(()=>{if(!y||!O){_(new Set);return}f0(O).then(P=>{var L;const S=new Set;S.add(P.target.entity_id),P.chain_up.forEach(R=>S.add(R.entity_id)),P.chain_down.forEach(R=>S.add(R.entity_id)),(L=P.lateral)==null||L.forEach(R=>S.add(R.entity_id)),_(S)}).catch(()=>_(new Set))},[y,O]),E.useEffect(()=>{if(!m.trim()){b([]);return}const P=setTimeout(()=>{Sb(m.trim(),15).then(S=>b(S.results))},300);return()=>clearTimeout(P)},[m]);const N=E.useCallback(P=>{n({entity_id:P.entity_id}),p(P.entity_id),v(""),b([]),j(!1)},[n]);return E.useEffect(()=>{const P=S=>{var L,R;S.key==="/"&&!/^(input|textarea)$/i.test((L=S.target)==null?void 0:L.tagName)&&(S.preventDefault(),(R=F.current)==null||R.focus()),S.key==="Escape"&&(T(!1),j(!1),p(null))};return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[]),u.jsxs("div",{className:"pyramid-page",children:[u.jsx("div",{className:"pyramid-page-top",children:u.jsxs("div",{className:"page-header pyramid-page-header",children:[u.jsx("h1",{children:"Intelligence Stack Pyramid"}),u.jsx("p",{children:"Hierarchical view of entities by intel stack level"}),u.jsxs("div",{className:"pyramid-search-wrap",children:[u.jsx("input",{ref:F,type:"search",placeholder:"Search entities (/)",value:m,onChange:P=>{v(P.target.value),j(!0)},onFocus:()=>j(!0),onBlur:()=>setTimeout(()=>j(!1),150),className:"pyramid-search-input","aria-label":"Search pyramid entities"}),k&&w.length>0&&u.jsx("ul",{className:"pyramid-search-results",children:w.map(P=>u.jsx("li",{children:u.jsxs("button",{type:"button",onClick:()=>N(P),children:[P.display_name,P.intel_stack_level!=null&&u.jsxs("span",{className:"pyramid-search-level",children:["L",P.intel_stack_level]})]})},P.entity_id))})]}),u.jsx("div",{className:`pyramid-page-detail-section ${d?"pyramid-page-detail-section-has-detail":""}`,children:d?u.jsx(WA,{entityId:d,onClose:()=>p(null),inline:!0}):u.jsx("div",{className:"pyramid-page-aside-empty",children:y?u.jsx(u.Fragment,{children:"Select an entity from the pyramid or search to trace its chain of command and view details."}):u.jsx(u.Fragment,{children:"Select an entity from the pyramid or search to view details and chain of command."})})})]})}),u.jsxs("div",{className:"pyramid-page-main",children:[u.jsxs("div",{className:"pyramid-controls",children:[u.jsx(nd,{activeLevels:c,onChange:h,showAll:!0,compact:!1}),u.jsxs("label",{className:"pyramid-toggle",children:[u.jsx("input",{type:"checkbox",checked:l,onChange:P=>f(P.target.checked)}),u.jsx("span",{children:"Show flow lines"})]}),u.jsxs("label",{className:"pyramid-toggle",children:[u.jsx("input",{type:"checkbox",checked:y,onChange:P=>g(P.target.checked)}),u.jsx("span",{children:"Trace chain of command"}),y&&x.size>0&&u.jsxs("span",{className:"pyramid-chain-badge",title:"Entities in chain",children:["(",x.size,")"]})]})]}),u.jsx(BA,{data:i,loading:s,highlightedEntityId:r,showFlowLines:l,activeLevels:c,chainEntityIds:y?x:void 0,onEntityClick:P=>{n({entity_id:P.entity_id}),p(P.entity_id)}})]}),u.jsx("div",{className:"pyramid-legend",children:A.map(({level:P,name:S,color:L})=>u.jsxs("span",{className:"pyramid-legend-item",children:[u.jsx("span",{className:"pyramid-legend-dot",style:{backgroundColor:L}})," L",P," ",S]},P))}),u.jsx("button",{type:"button",className:"pyramid-help-btn",onClick:()=>T(P=>!P),"aria-label":"Help",title:"Help",children:"?"}),C&&u.jsx("div",{className:"pyramid-help-overlay",onClick:()=>T(!1),role:"presentation",children:u.jsxs("div",{className:"pyramid-help-content",onClick:P=>P.stopPropagation(),children:[u.jsx("h3",{children:"Using the Intelligence Stack Pyramid"}),u.jsxs("ul",{children:[u.jsxs("li",{children:[u.jsx("strong",{children:"Click a tier"})," to expand and see entities in the sidebar."]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Click an entity"})," to open its detail in the right panel."]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Search"})," with the search bar or press ",u.jsx("kbd",{children:"/"})," to find entities."]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Trace chain of command"})," to highlight an entity's hierarchy."]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Flow lines"})," show money flow between levels; hover for details."]})]}),u.jsxs("p",{children:[u.jsx("kbd",{children:"Escape"})," closes the detail panel or this help."]}),u.jsx("button",{type:"button",className:"pyramid-help-close",onClick:()=>T(!1),children:"Close"})]})})]})}function GA(){const[e,n]=E.useState([]),[r,i]=E.useState(!1);return u.jsxs("div",{className:"visualization-page fade-in",role:"main","aria-label":"Sankey Flow Diagram",children:[u.jsxs("div",{className:"viz-page-header",children:[u.jsxs(Pe,{to:"/analysis",className:"back-link",children:[u.jsx(Tf,{size:20}),u.jsx("span",{children:"Back to Analysis"})]}),u.jsxs("div",{className:"viz-page-title",children:[u.jsx("h1",{children:"Sankey Flow Diagram"}),u.jsx("p",{children:"Visualize money flows and relationships between entities. Use controls to filter and interact."})]})]}),u.jsxs("div",{className:"viz-fullscreen-container",children:[u.jsx(K0,{filterLevels:e}),u.jsxs("button",{className:"intel-filter-toggle",onClick:()=>i(!r),title:"Toggle Intelligence Stack Filter",children:[u.jsx(Pw,{size:20}),u.jsx("span",{children:"Intel Stack"})]}),r&&u.jsx("div",{className:"intel-filter-panel",children:u.jsx(nd,{activeLevels:e,onChange:n,compact:!0})})]}),u.jsx("style",{children:` + .visualization-page { + display: flex; + flex-direction: column; + height: calc(100vh - 40px); + padding: 20px; + } + + .viz-page-header { + flex-shrink: 0; + margin-bottom: 16px; + } + + .back-link { + display: inline-flex; + align-items: center; + gap: 4px; + color: var(--text-secondary); + text-decoration: none; + font-size: 0.9rem; + margin-bottom: 8px; + transition: color 0.2s ease; + } + + .back-link:hover { + color: var(--primary-color); + } + + .viz-page-title h1 { + margin: 0 0 4px 0; + font-size: 1.5rem; + } + + .viz-page-title p { + margin: 0; + color: var(--text-secondary); + font-size: 0.95rem; + } + + .viz-fullscreen-container { + flex: 1; + min-height: 0; + background: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: 12px; + overflow: hidden; + position: relative; + } + + .viz-fullscreen-container .sankey-container { + height: 100% !important; + min-height: unset !important; + } + + .intel-filter-toggle { + position: absolute; + top: 12px; + right: 12px; + display: flex; + align-items: center; + gap: 6px; + padding: 8px 12px; + background: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: 8px; + color: var(--text-primary); + font-size: 0.85rem; + cursor: pointer; + transition: all 0.2s ease; + z-index: 100; + } + + .intel-filter-toggle:hover { + border-color: var(--primary-color); + color: var(--primary-color); + } + + .intel-filter-panel { + position: absolute; + top: 56px; + right: 12px; + z-index: 100; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + } + + @media (max-width: 768px) { + .visualization-page { + padding: 12px; + height: calc(100vh - 24px); + } + + .viz-page-title h1 { + font-size: 1.25rem; + } + + .intel-filter-toggle span { + display: none; + } + + .intel-filter-panel { + right: 8px; + top: 48px; + } + } + `})]})}function XA(){const[e,n]=E.useState([]),[r,i]=E.useState(!0),[o,s]=E.useState(""),[a,l]=E.useState(""),[f,c]=E.useState({key:"priority_score",direction:"desc"}),[h,d]=E.useState(1),[p,y]=E.useState(25),[g,x]=E.useState(null);E.useEffect(()=>{(async()=>{i(!0);try{const j={limit:500};o.trim()&&(j.search=o.trim()),a.trim()&&(j.agency=a.trim());const C=await c0(j);n(C)}catch(j){console.error("Error loading FOIA targets:",j),n([])}finally{i(!1)}})()},[o,a]);const _=k=>{c(j=>({key:k,direction:j.key===k&&j.direction==="asc"?"desc":"asc"})),d(1)},m=E.useMemo(()=>f.key?[...e].sort((k,j)=>{const C=k[f.key],T=j[f.key];if(C==null)return 1;if(T==null)return-1;if(typeof C=="number"&&typeof T=="number")return f.direction==="asc"?C-T:T-C;const F=String(C).toLowerCase(),A=String(T).toLowerCase();return f.direction==="asc"?F.localeCompare(A):A.localeCompare(F)}):e,[e,f]),v=E.useMemo(()=>{const k=(h-1)*p;return m.slice(k,k+p)},[m,h,p]),w=Math.ceil(m.length/p),b=({column:k})=>f.key===k?f.direction==="asc"?u.jsx(jw,{size:14,style:{marginLeft:4}}):u.jsx(kw,{size:14,style:{marginLeft:4}}):null;return u.jsxs("div",{className:"foia-targets-page fade-in",role:"main","aria-label":"FOIA Targets",children:[u.jsxs("div",{className:"foia-page-header",children:[u.jsxs(Pe,{to:"/analysis",className:"back-link",children:[u.jsx(Tf,{size:20}),u.jsx("span",{children:"Back to Analysis"})]}),u.jsxs("div",{className:"foia-page-title",children:[u.jsx("h1",{children:"FOIA Targets"}),u.jsx("p",{children:"Browse and prioritize FOIA targets with quality scoring"})]})]}),u.jsxs("div",{className:"foia-filters",children:[u.jsx("input",{type:"text",placeholder:"Search records, agency, notes...",value:o,onChange:k=>{s(k.target.value),d(1)},className:"foia-search-input","aria-label":"Search FOIA targets"}),u.jsx("input",{type:"text",placeholder:"Filter by agency",value:a,onChange:k=>{l(k.target.value),d(1)},className:"foia-agency-input","aria-label":"Filter by agency"})]}),u.jsx("div",{className:"foia-content card",children:r?u.jsx(h0,{}):m.length===0?u.jsx(qi,{icon:"📋",title:"No FOIA targets found",description:"Try adjusting your search or agency filter."}):u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"foia-pagination-top",children:[u.jsxs("span",{className:"foia-result-count",children:["Showing ",v.length," of ",m.length," targets"]}),u.jsxs("label",{className:"foia-page-size",children:["Show:",u.jsxs("select",{value:p,onChange:k=>{y(Number(k.target.value)),d(1)},"aria-label":"Items per page",children:[u.jsx("option",{value:10,children:"10"}),u.jsx("option",{value:25,children:"25"}),u.jsx("option",{value:50,children:"50"}),u.jsx("option",{value:100,children:"100"})]})]})]}),u.jsx("div",{className:"foia-table-wrapper",children:u.jsxs("table",{className:"foia-table data-table",role:"table","aria-label":"FOIA targets table",children:[u.jsx("thead",{children:u.jsxs("tr",{children:[u.jsxs("th",{onClick:()=>_("agency"),className:"sortable",children:["Agency ",u.jsx(b,{column:"agency"})]}),u.jsxs("th",{onClick:()=>_("record_request"),className:"sortable",children:["Record Request ",u.jsx(b,{column:"record_request"})]}),u.jsxs("th",{onClick:()=>_("timeframe"),className:"sortable",children:["Timeframe ",u.jsx(b,{column:"timeframe"})]}),u.jsxs("th",{onClick:()=>_("priority_score"),className:"sortable",children:["Priority ",u.jsx(b,{column:"priority_score"})]}),u.jsxs("th",{onClick:()=>_("specificity_score"),className:"sortable",children:["Specificity ",u.jsx(b,{column:"specificity_score"})]}),u.jsxs("th",{onClick:()=>_("likelihood_score"),className:"sortable",children:["Likelihood ",u.jsx(b,{column:"likelihood_score"})]})]})}),u.jsx("tbody",{children:v.map(k=>u.jsxs(E.Fragment,{children:[u.jsxs("tr",{className:g===k.id?"expanded":"",onClick:()=>x(g===k.id?null:k.id),children:[u.jsx("td",{className:"foia-agency-cell",title:k.agency,children:k.agency}),u.jsx("td",{className:"foia-record-cell",title:k.record_request,children:k.record_request}),u.jsx("td",{children:k.timeframe||"N/A"}),u.jsx("td",{children:u.jsx(ei,{score:k.priority_score,type:"priority"})}),u.jsx("td",{children:u.jsx(ei,{score:k.specificity_score,type:"specificity"})}),u.jsx("td",{children:u.jsx(ei,{score:k.likelihood_score,type:"likelihood"})})]}),g===k.id&&k.quality_notes&&u.jsx("tr",{className:"foia-notes-row",children:u.jsx("td",{colSpan:6,children:u.jsxs("div",{className:"foia-quality-notes",children:[u.jsx("strong",{children:"Quality Notes:"})," ",k.quality_notes]})})})]},k.id))})]})}),w>1&&u.jsxs("div",{className:"foia-pagination",children:[u.jsx("button",{disabled:h===1,onClick:()=>d(k=>k-1),className:"btn btn-sm",children:"← Prev"}),u.jsxs("span",{className:"page-info",children:["Page ",h," of ",w]}),u.jsx("button",{disabled:h>=w,onClick:()=>d(k=>k+1),className:"btn btn-sm",children:"Next →"})]})]})})]})}function YA(){return u.jsxs("div",{className:"export",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h2",{children:"Export Data"}),u.jsx("p",{children:"Download data in various formats"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Export to CSV"}),u.jsx("p",{children:"Download data in comma-separated values format, compatible with Excel and other spreadsheet software."}),u.jsxs("div",{className:"export-buttons",children:[u.jsx("button",{onClick:Tb,className:"btn btn-primary",children:"Export Entities (CSV)"}),u.jsx("button",{onClick:Ab,className:"btn btn-primary",children:"Export Money Flows (CSV)"}),u.jsx("button",{onClick:Pb,className:"btn btn-primary",children:"Export Awards (CSV)"}),u.jsx("button",{onClick:Rb,className:"btn btn-primary",children:"Export FOIA Targets (CSV)"})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Export to JSON"}),u.jsx("p",{children:"Download data in JSON format for programmatic access and integration with other tools."}),u.jsx("div",{className:"export-buttons",children:u.jsx("button",{onClick:Mb,className:"btn btn-primary",children:"Export Entities (JSON)"})})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Export Reports (PDF)"}),u.jsx("p",{children:"Generate formatted PDF reports with summary statistics and visualizations."}),u.jsx("div",{className:"export-buttons",children:u.jsx("button",{onClick:Ob,className:"btn btn-primary",children:"Export Summary Report (PDF)"})})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Export Tips"}),u.jsxs("ul",{children:[u.jsx("li",{children:"CSV files can be opened in Excel, Google Sheets, or any spreadsheet software"}),u.jsx("li",{children:"JSON files are ideal for importing into databases or custom applications"}),u.jsx("li",{children:"PDF reports provide a formatted overview for sharing and presentations"}),u.jsx("li",{children:"All exports reflect the current state of the database"}),u.jsx("li",{children:"Large exports may take a few moments to generate"})]})]})]})}function QA(){const[e,n]=E.useState("entity"),[r,i]=E.useState(""),[o,s]=E.useState(null),[a,l]=E.useState(!1),[f,c]=E.useState(null),[h,d]=E.useState({entity_id:"",display_name:"",normalized_name:"",entity_type:""}),[p,y]=E.useState({source:"",target:"",relationship:"",amount_usd:"",start_date:"",source_citation:""}),[g,x]=E.useState({award_id:"",recipient_name:"",awarding_agency:"",award_amount:"",award_date:"",description:""}),[_,m]=E.useState({target_entity:"",agency:"",topic:"",priority:"",notes:""}),[v,w]=E.useState(""),[b,k]=E.useState(""),[j,C]=E.useState(""),T=async()=>{if(!r.trim()){s(!1);return}l(!0);try{const A=await Ib(r);s(A.valid)}catch{s(!1)}finally{l(!1)}},F=async A=>{if(A.preventDefault(),!o){c({success:!1,message:"Please provide a valid GitHub token"});return}l(!0),c(null);try{let O;if(e==="entity")O=await zb(h,r);else if(e==="money-flow"){const N={...p,amount_usd:p.amount_usd?parseFloat(p.amount_usd):void 0};O=await Fb(N,r)}else if(e==="award"){const N={...g,award_amount:g.award_amount?parseFloat(g.award_amount):void 0};O=await $b(N,r)}else e==="foia-target"&&(O=await Db(_,r));c(O),O.success&&(e==="entity"?d({entity_id:"",display_name:"",normalized_name:"",entity_type:""}):e==="money-flow"?y({source:"",target:"",relationship:"",amount_usd:"",start_date:"",source_citation:""}):e==="award"?x({award_id:"",recipient_name:"",awarding_agency:"",award_amount:"",award_date:"",description:""}):e==="foia-target"&&m({target_entity:"",agency:"",topic:"",priority:"",notes:""}),C(""))}catch(O){c({success:!1,message:O.message||"Error submitting contribution"})}finally{l(!1)}};return u.jsxs("div",{className:"contribute",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h2",{children:"Contribute Data"}),u.jsx("p",{children:"Submit new data via automated GitHub pull request"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"GitHub Token Setup"}),u.jsxs("p",{children:["To contribute data, you need a GitHub personal access token with ",u.jsx("code",{children:"repo"})," scope.",u.jsx("br",{}),"Generate one at: ",u.jsx("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/settings/tokens"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"GitHub Personal Access Token"}),u.jsx("input",{type:"password",value:r,onChange:A=>i(A.target.value),placeholder:"ghp_..."}),u.jsx("button",{onClick:T,className:"btn btn-secondary",style:{marginTop:"10px"},disabled:a,children:"Validate Token"}),o===!0&&u.jsx("p",{style:{color:"#5afa5a",marginTop:"10px"},children:"✓ Token is valid"}),o===!1&&u.jsx("p",{style:{color:"#fa5a5a",marginTop:"10px"},children:"✗ Token is invalid"})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Select Contribution Type"}),u.jsxs("div",{className:"tabs",children:[u.jsx("button",{className:e==="entity"?"active":"",onClick:()=>n("entity"),children:"Entity"}),u.jsx("button",{className:e==="money-flow"?"active":"",onClick:()=>n("money-flow"),children:"Money Flow"}),u.jsx("button",{className:e==="award"?"active":"",onClick:()=>n("award"),children:"Award"}),u.jsx("button",{className:e==="foia-target"?"active":"",onClick:()=>n("foia-target"),children:"FOIA Target"})]})]}),u.jsxs("form",{onSubmit:F,children:[u.jsxs("div",{className:"card",children:[u.jsxs("h3",{children:[e==="entity"&&"New Entity",e==="money-flow"&&"New Money Flow",e==="award"&&"New Federal Award",e==="foia-target"&&"New FOIA Target"]}),e==="entity"?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Entity ID *"}),u.jsx("input",{type:"text",value:h.entity_id,onChange:A=>d({...h,entity_id:A.target.value}),required:!0})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Display Name *"}),u.jsx("input",{type:"text",value:h.display_name,onChange:A=>d({...h,display_name:A.target.value}),required:!0})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Normalized Name *"}),u.jsx("input",{type:"text",value:h.normalized_name,onChange:A=>d({...h,normalized_name:A.target.value}),required:!0})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Entity Type"}),u.jsx("input",{type:"text",value:h.entity_type,onChange:A=>d({...h,entity_type:A.target.value})})]})]}):e==="money-flow"?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Source Entity *"}),u.jsx("input",{type:"text",value:p.source,onChange:A=>y({...p,source:A.target.value}),required:!0})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Target Entity *"}),u.jsx("input",{type:"text",value:p.target,onChange:A=>y({...p,target:A.target.value}),required:!0})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Relationship Type"}),u.jsx("input",{type:"text",value:p.relationship,onChange:A=>y({...p,relationship:A.target.value}),placeholder:"e.g., M&A, Contract, Investment"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Amount (USD)"}),u.jsx("input",{type:"number",value:p.amount_usd,onChange:A=>y({...p,amount_usd:A.target.value})})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Date"}),u.jsx("input",{type:"date",value:p.start_date,onChange:A=>y({...p,start_date:A.target.value})})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Source Citation"}),u.jsx("input",{type:"text",value:p.source_citation,onChange:A=>y({...p,source_citation:A.target.value}),placeholder:"URL or document reference"})]})]}):e==="award"?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Award ID *"}),u.jsx("input",{type:"text",value:g.award_id,onChange:A=>x({...g,award_id:A.target.value}),required:!0,placeholder:"e.g., CONTRACT-2023-001"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Recipient Name *"}),u.jsx("input",{type:"text",value:g.recipient_name,onChange:A=>x({...g,recipient_name:A.target.value}),required:!0,placeholder:"Entity or organization name"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Awarding Agency *"}),u.jsx("input",{type:"text",value:g.awarding_agency,onChange:A=>x({...g,awarding_agency:A.target.value}),required:!0,placeholder:"e.g., Department of Defense"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Award Amount (USD)"}),u.jsx("input",{type:"number",value:g.award_amount,onChange:A=>x({...g,award_amount:A.target.value}),placeholder:"0.00"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Award Date"}),u.jsx("input",{type:"date",value:g.award_date,onChange:A=>x({...g,award_date:A.target.value})})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Description"}),u.jsx("textarea",{value:g.description,onChange:A=>x({...g,description:A.target.value}),rows:3,placeholder:"Brief description of the award or contract"})]})]}):e==="foia-target"?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Target Entity *"}),u.jsx("input",{type:"text",value:_.target_entity,onChange:A=>m({..._,target_entity:A.target.value}),required:!0,placeholder:"Organization to request from"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Agency *"}),u.jsx("input",{type:"text",value:_.agency,onChange:A=>m({..._,agency:A.target.value}),required:!0,placeholder:"e.g., DOD, NASA, DHS"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Topic *"}),u.jsx("input",{type:"text",value:_.topic,onChange:A=>m({..._,topic:A.target.value}),required:!0,placeholder:"Subject matter for FOIA request"})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Priority"}),u.jsxs("select",{value:_.priority,onChange:A=>m({..._,priority:A.target.value}),children:[u.jsx("option",{value:"",children:"Select priority..."}),u.jsx("option",{value:"high",children:"High"}),u.jsx("option",{value:"medium",children:"Medium"}),u.jsx("option",{value:"low",children:"Low"})]})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Additional Notes"}),u.jsx("textarea",{value:_.notes,onChange:A=>m({..._,notes:A.target.value}),rows:4,placeholder:"Rationale, background information, or specific items to request"})]})]}):null]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Contributor Information (Optional)"}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Your Name"}),u.jsx("input",{type:"text",value:v,onChange:A=>w(A.target.value)})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Your Email"}),u.jsx("input",{type:"email",value:b,onChange:A=>k(A.target.value)})]}),u.jsxs("div",{className:"input-group",children:[u.jsx("label",{children:"Additional Notes"}),u.jsx("textarea",{value:j,onChange:A=>C(A.target.value),rows:4,placeholder:"Provide any additional context or notes about this contribution"})]})]}),f&&u.jsxs("div",{className:`alert ${f.success?"alert-success":"alert-error"}`,children:[u.jsx("p",{children:f.message}),f.pr_url&&u.jsxs("p",{children:["View your pull request: ",u.jsx("a",{href:f.pr_url,target:"_blank",rel:"noopener noreferrer",children:f.pr_url})]})]}),u.jsx("button",{type:"submit",className:"btn btn-primary",disabled:a||!o,children:a?"Submitting...":"Submit Contribution"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"How It Works"}),u.jsxs("ol",{children:[u.jsx("li",{children:"Fill out the form with accurate data"}),u.jsx("li",{children:"Your contribution will automatically create a fork of the repository (if needed)"}),u.jsx("li",{children:"A new branch will be created with your contribution"}),u.jsx("li",{children:"A pull request will be opened for review"}),u.jsx("li",{children:"Once reviewed and approved, your contribution will be merged into the main database"})]}),u.jsxs("p",{children:[u.jsx("strong",{children:"Note:"})," All contributions are subject to review and validation."]})]})]})}function KA(){return u.jsxs("div",{className:"about",children:[u.jsxs("div",{className:"page-header",children:[u.jsx("h2",{children:"About"}),u.jsx("p",{children:"Project RawHorse - Open Source Research Tool"})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Project Overview"}),u.jsx("p",{children:"Project RawHorse is an open-source application for exploring and analyzing publicly available data related to Unidentified Anomalous Phenomena (UAP) research, federal contracting, and related entities."})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Repository"}),u.jsx("p",{children:"Source code, releases, and contribution guidelines are hosted on GitHub:"}),u.jsx("p",{style:{marginTop:"12px"},children:u.jsx("a",{href:"https://github.com/ConsciousEnergy/ProjectRawHorse",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-primary)",fontWeight:600},children:"https://github.com/ConsciousEnergy/ProjectRawHorse"})})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Data Sources and Attribution"}),u.jsx("p",{children:"This project incorporates research and analysis from the following sources. We are deeply grateful to the researchers whose work has made this project possible."}),u.jsxs("div",{style:{marginTop:"16px"},children:[u.jsx("h4",{style:{marginBottom:"8px",color:"var(--text-secondary)"},children:"UAPGerb"}),u.jsx("p",{style:{marginBottom:"12px"},children:"Channel dedicated to investigating UFO legacy program operations within the U.S. Department of Defense and Intelligence community. Entity relationships, organizational structures, and FOIA targets derived from in-depth transcript analysis."}),u.jsxs("ul",{children:[u.jsxs("li",{children:[u.jsx("strong",{children:'"The Hidden Wing"'})," - US Air Force UFO Reverse Engineering Programs (2026)",u.jsx("br",{}),u.jsx("a",{href:"https://www.youtube.com/watch?v=-IXSZe4xVv4",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"Watch on YouTube"}),u.jsx("span",{style:{color:"var(--text-muted)",marginLeft:"8px"},children:"- Air Force SAF hierarchy, RCO, AFTE, sensitive activities"})]}),u.jsxs("li",{style:{marginTop:"8px"},children:[u.jsx("strong",{children:"Previous Research (2025)"})," - NRO, CIA DS&T, FFRDCs, Office of Global Access"]})]}),u.jsx("p",{style:{marginTop:"12px"},children:u.jsx("a",{href:"https://www.youtube.com/@uapgerb",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"Visit UAPGerb YouTube Channel"})})]}),u.jsxs("div",{style:{marginTop:"20px"},children:[u.jsx("h4",{style:{marginBottom:"8px",color:"var(--text-secondary)"},children:"Government Data Sources"}),u.jsxs("ul",{children:[u.jsx("li",{children:"USAspending.gov - Federal contract and award data"}),u.jsx("li",{children:"SAM.gov - System for Award Management solicitations"}),u.jsx("li",{children:"SEC EDGAR - Corporate filings and disclosures"}),u.jsx("li",{children:"FOIA Reading Rooms - Declassified documents"})]})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"License"}),u.jsxs("p",{children:["This project is licensed under the ",u.jsx("strong",{children:"GNU Affero General Public License v3.0 (AGPL-3.0)"}),"."]}),u.jsx("p",{children:"The AGPL ensures that this software remains free and open source, and that any modifications or network services using this code must also be made available under the same license."})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Technology Stack"}),u.jsxs("ul",{children:[u.jsxs("li",{children:[u.jsx("strong",{children:"Backend:"})," FastAPI (Python) with SQLite/PostgreSQL database support"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Frontend:"})," React 18+ with TypeScript and Vite"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Data Visualization:"})," D3.js, Recharts, react-force-graph-2d"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"NLP Processing:"})," spaCy for entity recognition and extraction"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Data Enrichment:"})," Web scraping with BeautifulSoup, DuckDuckGo search"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Authentication:"})," JWT token-based authentication"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Deployment:"})," Docker Compose with Caddy reverse proxy"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"Caching:"})," Redis for production environments"]}),u.jsxs("li",{children:[u.jsx("strong",{children:"GitHub Integration:"})," PyGithub for automated PR creation"]})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Features"}),u.jsxs("ul",{children:[u.jsx("li",{children:"Local-first data processing (no external servers required)"}),u.jsx("li",{children:"Comprehensive data browsing with advanced filtering"}),u.jsx("li",{children:"Interactive network graph visualization (force-directed)"}),u.jsx("li",{children:"Sankey flow diagrams for money/relationship flows"}),u.jsx("li",{children:"Intelligence Stack hierarchy filter (6 levels)"}),u.jsx("li",{children:"Automated entity extraction from transcripts"}),u.jsx("li",{children:"Financial flow and materials transfer enrichment"}),u.jsx("li",{children:"Source credibility scoring and validation"}),u.jsx("li",{children:"Multiple export formats (CSV, JSON, PDF)"}),u.jsx("li",{children:"Community contributions via GitHub PR automation"}),u.jsx("li",{children:"Cross-platform desktop application"}),u.jsx("li",{children:"Production-ready Docker deployment"})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Contributing"}),u.jsx("p",{children:"We welcome contributions from the community! You can contribute by:"}),u.jsxs("ul",{children:[u.jsx("li",{children:"Adding new data entries through the Contribute page"}),u.jsx("li",{children:"Reporting issues on GitHub"}),u.jsx("li",{children:"Submitting code improvements"}),u.jsx("li",{children:"Improving documentation"})]})]}),u.jsxs("div",{className:"card",children:[u.jsx("h3",{children:"Disclaimer"}),u.jsx("p",{children:"This application uses only publicly available data from official government sources. Users are responsible for verifying accuracy and compliance with all applicable laws and regulations."})]})]})}function JA({onAccept:e}){return u.jsx("div",{className:"disclaimer-overlay",children:u.jsxs("div",{className:"disclaimer-modal",children:[u.jsx("div",{className:"disclaimer-header",children:u.jsx("h2",{children:"Legal Disclaimer & Terms"})}),u.jsxs("div",{className:"disclaimer-content",children:[u.jsx("h3",{children:"Project RawHorse"}),u.jsx("p",{children:u.jsx("strong",{children:"Version 1.0.0"})}),u.jsx("h4",{children:"License: GNU AGPL v3"}),u.jsx("p",{children:"This application is licensed under the GNU Affero General Public License v3.0. You are free to use, modify, and distribute this software under the terms of this license."}),u.jsx("h4",{children:"Data Responsibility"}),u.jsxs("p",{children:[u.jsx("strong",{children:"IMPORTANT:"})," All data in this application is sourced from publicly available government databases and documents. Users are solely responsible for:"]}),u.jsxs("ul",{children:[u.jsx("li",{children:"Verifying the accuracy of all data before use"}),u.jsx("li",{children:"Compliance with export control regulations (ITAR, EAR)"}),u.jsx("li",{children:"Ensuring proper handling of any potentially sensitive information"}),u.jsx("li",{children:"Following FOIA procedures and regulations when making requests"}),u.jsx("li",{children:"Respecting classification guidelines and security protocols"})]}),u.jsx("h4",{children:"No Warranty"}),u.jsx("p",{children:'THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. The developers assume no liability for any damages, legal issues, or consequences arising from the use of this application or its data.'}),u.jsx("h4",{children:"Public Data Sources Only"}),u.jsx("p",{children:"This application exclusively uses publicly available data from official sources including:"}),u.jsxs("ul",{children:[u.jsx("li",{children:"USAspending.gov"}),u.jsx("li",{children:"SAM.gov (System for Award Management)"}),u.jsx("li",{children:"Federal FOIA reading rooms"}),u.jsx("li",{children:"DOE, NASA, DHS, and other agency public databases"})]}),u.jsx("h4",{children:"Security & Privacy"}),u.jsx("p",{children:"All data processing occurs locally on your machine. No analytics or telemetry data is collected. GitHub API requests are only made when you explicitly choose to contribute data."}),u.jsx("h4",{children:"By Using This Application, You Acknowledge:"}),u.jsxs("ul",{children:[u.jsx("li",{children:"You have read and understood this disclaimer"}),u.jsx("li",{children:"You accept full responsibility for your use of this data"}),u.jsx("li",{children:"You will comply with all applicable laws and regulations"}),u.jsx("li",{children:"The developers are not liable for any misuse of data"})]})]}),u.jsx("div",{className:"disclaimer-footer",children:u.jsx("button",{className:"btn btn-primary",onClick:e,children:"I Understand and Accept"})})]})})}function ZA(){const[e,n]=E.useState("light");E.useEffect(()=>{const i=localStorage.getItem("theme")||"light";n(i),document.documentElement.setAttribute("data-theme",i)},[]);const r=()=>{const i=e==="light"?"dark":"light";document.documentElement.classList.add("theme-transitioning"),n(i),document.documentElement.setAttribute("data-theme",i),localStorage.setItem("theme",i),setTimeout(()=>{document.documentElement.classList.remove("theme-transitioning")},50)};return u.jsx("button",{className:"theme-toggle",onClick:r,"aria-label":`Switch to ${e==="light"?"dark":"light"} mode`,title:`Switch to ${e==="light"?"dark":"light"} mode`,children:e==="light"?u.jsx(Mw,{size:20}):u.jsx(Fw,{size:20})})}class At extends E.Component{constructor(r){super(r);sd(this,"handleRetry",()=>{this.setState({hasError:!1,error:null})});this.state={hasError:!1,error:null,showDetails:!1}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,i){console.error("ErrorBoundary caught:",r,i)}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:u.jsx("div",{className:"error-boundary",role:"alert",children:u.jsxs("div",{className:"error-boundary-content",children:[u.jsx(bw,{size:48,className:"error-boundary-icon"}),u.jsx("h2",{children:"Something went wrong"}),u.jsx("p",{children:"An unexpected error occurred. You can try again or return to the dashboard."}),u.jsxs("div",{className:"error-boundary-actions",children:[u.jsx("button",{onClick:this.handleRetry,className:"btn btn-primary",children:"Try Again"}),u.jsx(Pe,{to:"/",className:"btn btn-secondary",children:"Go Home"})]}),u.jsxs("details",{className:"error-boundary-details",open:this.state.showDetails,onToggle:r=>this.setState({showDetails:r.target.open}),children:[u.jsx("summary",{children:"Error details"}),u.jsx("pre",{className:"error-boundary-stack",children:this.state.error.message})]})]})}):this.props.children}}const $v="searchBarClickedResults",Dv="searchBarRecentQueries",Iv=8,Lv=10,eP=200;function am(){try{const e=localStorage.getItem($v);if(!e)return[];const n=JSON.parse(e);return Array.isArray(n)?n:[]}catch{return[]}}function lm(e){try{localStorage.setItem($v,JSON.stringify(e.slice(0,Iv)))}catch{}}function um(){try{const e=localStorage.getItem(Dv);if(!e)return[];const n=JSON.parse(e);return Array.isArray(n)?n:[]}catch{return[]}}function cm(e){try{localStorage.setItem(Dv,JSON.stringify(e.slice(0,Lv)))}catch{}}function tP(){const e=nl(),[n,r]=E.useState(""),[i,o]=E.useState([]),[s,a]=E.useState(!1),[l,f]=E.useState(!1),[c,h]=E.useState(-1),[d,p]=E.useState([]),[y,g]=E.useState([]),[x,_]=E.useState([]),m=E.useRef(null),v=E.useRef(null);E.useEffect(()=>{l&&(p(am()),g(um()))},[l]),E.useEffect(()=>{if(n.length>=2){a(!0);const N=setTimeout(async()=>{try{const P=await Eb(n),S=P.results||[];o(S),_(P.suggestions||[]),f(!0),h(-1);const L=um(),R=[n.trim(),...L.filter(B=>B!==n.trim())].slice(0,Lv);cm(R),g(R)}catch(P){console.error("Search error:",P),o([]),_([])}finally{a(!1)}},eP);return()=>clearTimeout(N)}else o([]),_([]),a(!1)},[n]),E.useEffect(()=>{const N=P=>{m.current&&!m.current.contains(P.target)&&f(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[]);const w={entity:"entities",award:"awards",money_flow:"money-flows",foia_target:"foia"},b=E.useCallback(N=>{const P=w[N.type]||"entities",S=N.title.split(":")[0].split("→")[0].trim();e(`/browse?tab=${P}&search=${encodeURIComponent(S)}&highlight=${N.id}`),f(!1),r("")},[e]),k=E.useMemo(()=>y.filter(N=>!n.trim()||N.toLowerCase().includes(n.toLowerCase())),[y,n]),j=d.length+k.length,C=l&&n.length<2,T=N=>{var P;if(l){if(C){switch(N.key){case"ArrowDown":N.preventDefault(),h(S=>SS>0?S-1:-1);break;case"Enter":if(N.preventDefault(),c>=0)if(cSS>0?S-1:-1);break;case"Enter":N.preventDefault(),c>=0&&F(i[c]);break;case"Escape":N.preventDefault(),f(!1);break}}};E.useEffect(()=>{const N=P=>{var S;P.key==="/"&&!["INPUT","TEXTAREA"].includes(P.target.tagName)&&(P.preventDefault(),(S=v.current)==null||S.focus())};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[]);const F=N=>{const P={id:N.id,type:N.type,title:N.title},S=am(),L=[P,...S.filter(R=>!(R.id===P.id&&R.type===P.type))];lm(L),p(L.slice(0,Iv)),b(P)},A=N=>{switch(N){case"entity":return"📊";case"award":return"🏆";case"money_flow":return"💰";case"foia_target":return"📄";default:return"📌"}},O=N=>{switch(N){case"entity":return"Entity";case"award":return"Award";case"money_flow":return"Money Flow";case"foia_target":return"FOIA Target";default:return N}};return u.jsxs("div",{className:"search-bar-wrapper",ref:m,children:[u.jsxs("div",{className:"search-input-container",children:[u.jsx(zw,{className:"search-icon",size:18}),u.jsx("input",{ref:v,type:"text",placeholder:"Search entities, awards, flows... (press / to focus)",value:n,onChange:N=>r(N.target.value),onKeyDown:T,onFocus:()=>f(!0),className:"search-input"}),s&&u.jsx(Rw,{className:"search-loading",size:18}),n&&!s&&u.jsx("button",{onClick:()=>{r(""),f(!1)},className:"search-clear","aria-label":"Clear search",children:u.jsx(Iw,{size:16})})]}),l&&u.jsx("div",{className:"search-results-dropdown",children:C?u.jsxs(u.Fragment,{children:[u.jsxs("div",{className:"search-suggestions-block",children:[u.jsx("div",{className:"search-suggestions-label",children:"Suggestions"}),d.length>0&&u.jsxs("div",{className:"search-suggestions-section",children:[u.jsx("span",{className:"search-suggestions-section-title",children:"Recent results"}),u.jsx("div",{className:"search-results-list",children:d.map((N,P)=>u.jsxs("div",{className:`search-result-item ${P===c?"selected":""}`,onClick:()=>b(N),onMouseEnter:()=>h(P),children:[u.jsx("div",{className:"search-result-icon",children:A(N.type)}),u.jsx("div",{className:"search-result-content",children:u.jsx("span",{className:"search-result-title",title:N.title,children:N.title})})]},`recent-${N.type}-${N.id}`))})]}),y.length>0&&u.jsxs("div",{className:"search-suggestions-section",children:[u.jsx("span",{className:"search-suggestions-section-title",children:"Recent searches"}),u.jsx("div",{className:"search-results-list",children:k.map((N,P)=>{const S=d.length+P;return u.jsxs("div",{className:`search-result-item ${S===c?"selected":""}`,onClick:()=>{var L;r(N),h(-1),(L=v.current)==null||L.focus()},onMouseEnter:()=>h(S),children:[u.jsx("div",{className:"search-result-icon",children:"🔍"}),u.jsx("div",{className:"search-result-content",children:u.jsx("span",{className:"search-result-title",title:N,children:N})})]},`query-${N}`)})})]})]}),u.jsxs("div",{className:"search-results-footer",children:[u.jsx("button",{type:"button",className:"search-clear-history",onClick:()=>{lm([]),cm([]),p([]),g([])},children:"Clear history"}),u.jsx("span",{className:"search-hint",children:"↑↓ navigate • Enter select • Esc close"})]})]}):i.length>0?u.jsxs(u.Fragment,{children:[u.jsx("div",{className:"search-results-list",children:i.map((N,P)=>u.jsxs("div",{className:`search-result-item ${P===c?"selected":""}`,onClick:()=>F(N),onMouseEnter:()=>h(P),children:[u.jsx("div",{className:"search-result-icon",children:A(N.type)}),u.jsxs("div",{className:"search-result-content",children:[u.jsxs("div",{className:"search-result-header",children:[u.jsx("span",{className:"search-result-title",title:N.title,children:N.title}),u.jsx("span",{className:"search-result-type-badge",children:O(N.type)})]}),u.jsx("div",{className:"search-result-description",title:N.description,children:N.description})]})]},`${N.type}-${N.id}`))}),u.jsxs("div",{className:"search-results-footer",children:[u.jsxs("span",{children:[i.length," result",i.length!==1?"s":""]}),u.jsx("span",{className:"search-hint",children:"↑↓ navigate • Enter select • Esc close"})]})]}):n.length>=2?u.jsxs("div",{className:"search-no-results",children:[u.jsxs("p",{children:['No results found for "',n,'"']}),x.length>0?u.jsxs("div",{className:"search-did-you-mean",children:[u.jsx("span",{children:"Did you mean:"}),u.jsx("div",{className:"search-suggestion-pills",children:x.map(N=>u.jsx("button",{type:"button",className:"search-suggestion-pill",onClick:()=>r(N),children:N},N))})]}):u.jsx("small",{children:"Try a different search term"})]}):null})]})}function nP({position:e="floating",showBadge:n=!0}){const{isStale:r,isRefreshing:i,refreshData:o,lastUpdated:s}=ll(),[a,l]=E.useState(!1),f=async()=>{try{await o()}catch(h){console.error("Failed to refresh data:",h)}},c=h=>{if(!h)return"Unknown";try{const d=new Date(h),y=new Date().getTime()-d.getTime(),g=Math.floor(y/6e4),x=Math.floor(y/36e5),_=Math.floor(y/864e5);return g<1?"Just now":g<60?`${g}m ago`:x<24?`${x}h ago`:_<7?`${_}d ago`:d.toLocaleDateString()}catch{return"Unknown"}};return e==="header"?u.jsxs("div",{className:"refresh-button-header",children:[u.jsxs("button",{className:`refresh-btn ${r?"stale":""} ${i?"refreshing":""}`,onClick:f,disabled:i,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),title:r?"New data available - click to refresh":"Refresh data","aria-label":r?"New data available - click to refresh":"Refresh data",children:[u.jsx(jh,{size:18,className:i?"spinning":""}),n&&r&&u.jsx("span",{className:"refresh-badge","aria-label":"New data available",children:"!"})]}),a&&s&&u.jsxs("div",{className:"refresh-tooltip",children:["Last updated: ",c(s)]})]}):u.jsxs("div",{className:"refresh-button-floating",children:[r&&n&&u.jsxs("div",{className:"refresh-notification",children:[u.jsx("span",{children:"New data available"}),u.jsx("button",{className:"refresh-notification-btn",onClick:f,disabled:i,children:"Refresh"})]}),u.jsxs("button",{className:`refresh-btn-floating ${r?"stale":""} ${i?"refreshing":""}`,onClick:f,disabled:i,title:r?"New data available - click to refresh":"Refresh data","aria-label":r?"New data available - click to refresh":"Refresh data",children:[u.jsx(jh,{size:20,className:i?"spinning":""}),n&&r&&u.jsx("span",{className:"refresh-badge-floating","aria-label":"New data available",children:"!"})]})]})}function rP(){const e=xi(),n=[{path:"/",icon:Tw,label:"Dashboard",exact:!0},{path:"/browse",icon:Sw,label:"Browse",exact:!0},{path:"/analysis",icon:$y,label:"Analysis",exact:!1},{path:"/export",icon:Nw,label:"Export",exact:!0},{path:"/contribute",icon:Dw,label:"Contribute",exact:!0},{path:"/about",icon:Aw,label:"About",exact:!0}];return u.jsxs("nav",{className:"sidebar",children:[u.jsxs("div",{className:"sidebar-header",children:[u.jsx("img",{src:"/PRHLogo.png",alt:"Project RawHorse Logo",className:"sidebar-logo"}),u.jsx("h1",{children:"Project RawHorse"})]}),u.jsx("div",{className:"sidebar-search",children:u.jsx(tP,{})}),u.jsx("ul",{className:"nav-items",children:n.map(r=>{const i=r.icon,o=r.exact?e.pathname===r.path:e.pathname.startsWith(r.path);return u.jsx("li",{children:u.jsxs(Pe,{to:r.path,className:o?"active":"",children:[u.jsx(i,{size:20}),u.jsx("span",{children:r.label})]})},r.path)})})]})}function iP(){const[e,n]=E.useState(!1);E.useEffect(()=>{localStorage.getItem("disclaimer_accepted")==="true"&&n(!0)},[]);const r=()=>{localStorage.setItem("disclaimer_accepted","true"),n(!0)};return u.jsx(Lb,{children:u.jsx(gw,{children:u.jsxs("div",{className:"app",children:[u.jsx("a",{href:"#main-content",className:"skip-link",children:"Skip to main content"}),!e&&u.jsx(JA,{onAccept:r}),u.jsx(ZA,{}),u.jsx(rP,{}),u.jsx(nP,{position:"floating"}),u.jsx("main",{id:"main-content",className:"main-content",role:"main",children:u.jsxs(lw,{children:[u.jsx(xt,{path:"/",element:u.jsx(At,{children:u.jsx(Ub,{})})}),u.jsx(xt,{path:"/browse",element:u.jsx(At,{children:u.jsx(Vb,{})})}),u.jsx(xt,{path:"/analysis",element:u.jsx(At,{children:u.jsx($C,{})})}),u.jsx(xt,{path:"/analysis/network",element:u.jsx(At,{children:u.jsx(zA,{})})}),u.jsx(xt,{path:"/analysis/sankey",element:u.jsx(At,{children:u.jsx(GA,{})})}),u.jsx(xt,{path:"/analysis/pyramid",element:u.jsx(At,{children:u.jsx(qA,{})})}),u.jsx(xt,{path:"/analysis/foia",element:u.jsx(At,{children:u.jsx(XA,{})})}),u.jsx(xt,{path:"/analysis/legacy",element:u.jsx(At,{children:u.jsx(FC,{})})}),u.jsx(xt,{path:"/export",element:u.jsx(At,{children:u.jsx(YA,{})})}),u.jsx(xt,{path:"/contribute",element:u.jsx(At,{children:u.jsx(QA,{})})}),u.jsx(xt,{path:"/about",element:u.jsx(At,{children:u.jsx(KA,{})})})]})})]})})})}iu.createRoot(document.getElementById("root")).render(u.jsx(zc.StrictMode,{children:u.jsx(iP,{})})); diff --git a/backend/static/assets/index-DqLKpvHk.js b/backend/static/assets/index-DqLKpvHk.js deleted file mode 100644 index cec67ad..0000000 --- a/backend/static/assets/index-DqLKpvHk.js +++ /dev/null @@ -1,525 +0,0 @@ -function zv(e,n){for(var r=0;ri[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function r(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(o){if(o.ep)return;o.ep=!0;const a=r(o);fetch(o.href,a)}})();function am(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var sm={exports:{}},Fs={},lm={exports:{}},te={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Mo=Symbol.for("react.element"),Fv=Symbol.for("react.portal"),$v=Symbol.for("react.fragment"),Dv=Symbol.for("react.strict_mode"),Iv=Symbol.for("react.profiler"),Lv=Symbol.for("react.provider"),Uv=Symbol.for("react.context"),Bv=Symbol.for("react.forward_ref"),Hv=Symbol.for("react.suspense"),Vv=Symbol.for("react.memo"),Wv=Symbol.for("react.lazy"),nd=Symbol.iterator;function qv(e){return e===null||typeof e!="object"?null:(e=nd&&e[nd]||e["@@iterator"],typeof e=="function"?e:null)}var um={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},cm=Object.assign,fm={};function di(e,n,r){this.props=e,this.context=n,this.refs=fm,this.updater=r||um}di.prototype.isReactComponent={};di.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)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,n,"setState")};di.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function dm(){}dm.prototype=di.prototype;function Ec(e,n,r){this.props=e,this.context=n,this.refs=fm,this.updater=r||um}var Tc=Ec.prototype=new dm;Tc.constructor=Ec;cm(Tc,di.prototype);Tc.isPureReactComponent=!0;var rd=Array.isArray,hm=Object.prototype.hasOwnProperty,Ac={current:null},pm={key:!0,ref:!0,__self:!0,__source:!0};function mm(e,n,r){var i,o={},a=null,s=null;if(n!=null)for(i in n.ref!==void 0&&(s=n.ref),n.key!==void 0&&(a=""+n.key),n)hm.call(n,i)&&!pm.hasOwnProperty(i)&&(o[i]=n[i]);var l=arguments.length-2;if(l===1)o.children=r;else if(1>>1,X=D[q];if(0>>1;qo(xe,U))Go(ie,xe)?(D[q]=ie,D[G]=U,q=G):(D[q]=xe,D[ee]=U,q=ee);else if(Go(ie,U))D[q]=ie,D[G]=U,q=G;else break e}}return z}function o(D,z){var U=D.sortIndex-z.sortIndex;return U!==0?U:D.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var s=Date,l=s.now();e.unstable_now=function(){return s.now()-l}}var f=[],u=[],h=1,d=null,p=3,y=!1,g=!1,x=!1,_=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(D){for(var z=r(u);z!==null;){if(z.callback===null)i(u);else if(z.startTime<=D)i(u),z.sortIndex=z.expirationTime,n(f,z);else break;z=r(u)}}function b(D){if(x=!1,w(D),!g)if(r(f)!==null)g=!0,O(S);else{var z=r(u);z!==null&&B(b,z.startTime-D)}}function S(D,z){g=!1,x&&(x=!1,m(A),A=-1),y=!0;var U=p;try{for(w(z),d=r(f);d!==null&&(!(d.expirationTime>z)||D&&!R());){var q=d.callback;if(typeof q=="function"){d.callback=null,p=d.priorityLevel;var X=q(d.expirationTime<=z);z=e.unstable_now(),typeof X=="function"?d.callback=X:d===r(f)&&i(f),w(z)}else i(f);d=r(f)}if(d!==null)var ne=!0;else{var ee=r(u);ee!==null&&B(b,ee.startTime-z),ne=!1}return ne}finally{d=null,p=U,y=!1}}var k=!1,N=null,A=-1,$=5,j=-1;function R(){return!(e.unstable_now()-j<$)}function T(){if(N!==null){var D=e.unstable_now();j=D;var z=!0;try{z=N(!0,D)}finally{z?P():(k=!1,N=null)}}else k=!1}var P;if(typeof v=="function")P=function(){v(T)};else if(typeof MessageChannel<"u"){var C=new MessageChannel,L=C.port2;C.port1.onmessage=T,P=function(){L.postMessage(null)}}else P=function(){_(T,0)};function O(D){N=D,k||(k=!0,P())}function B(D,z){A=_(function(){D(e.unstable_now())},z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(D){D.callback=null},e.unstable_continueExecution=function(){g||y||(g=!0,O(S))},e.unstable_forceFrameRate=function(D){0>D||125q?(D.sortIndex=U,n(u,D),r(f)===null&&D===r(u)&&(x?(m(A),A=-1):x=!0,B(b,U-q))):(D.sortIndex=X,n(f,D),g||y||(g=!0,O(S))),D},e.unstable_shouldYield=R,e.unstable_wrapCallback=function(D){var z=p;return function(){var U=p;p=z;try{return D.apply(this,arguments)}finally{p=U}}}})(_m);xm.exports=_m;var ix=xm.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var ox=E,dt=ix;function H(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),nu=Object.prototype.hasOwnProperty,ax=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,od={},ad={};function sx(e){return nu.call(ad,e)?!0:nu.call(od,e)?!1:ax.test(e)?ad[e]=!0:(od[e]=!0,!1)}function lx(e,n,r,i){if(r!==null&&r.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return i?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function ux(e,n,r,i){if(n===null||typeof n>"u"||lx(e,n,r,i))return!0;if(i)return!1;if(r!==null)switch(r.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function Xe(e,n,r,i,o,a,s){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=i,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=n,this.sanitizeURL=a,this.removeEmptyString=s}var Fe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Fe[e]=new Xe(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];Fe[n]=new Xe(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Fe[e]=new Xe(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Fe[e]=new Xe(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Fe[e]=new Xe(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Fe[e]=new Xe(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Fe[e]=new Xe(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Fe[e]=new Xe(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Fe[e]=new Xe(e,5,!1,e.toLowerCase(),null,!1,!1)});var Mc=/[\-:]([a-z])/g;function Oc(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Mc,Oc);Fe[n]=new Xe(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Mc,Oc);Fe[n]=new Xe(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Mc,Oc);Fe[n]=new Xe(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Fe[e]=new Xe(e,1,!1,e.toLowerCase(),null,!1,!1)});Fe.xlinkHref=new Xe("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Fe[e]=new Xe(e,1,!1,e.toLowerCase(),null,!0,!0)});function zc(e,n,r,i){var o=Fe.hasOwnProperty(n)?Fe[n]:null;(o!==null?o.type!==0:i||!(2l||o[s]!==a[l]){var f=` -`+o[s].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=s&&0<=l);break}}}finally{yl=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Li(e):""}function cx(e){switch(e.tag){case 5:return Li(e.type);case 16:return Li("Lazy");case 13:return Li("Suspense");case 19:return Li("SuspenseList");case 0:case 2:case 15:return e=vl(e.type,!1),e;case 11:return e=vl(e.type.render,!1),e;case 1:return e=vl(e.type,!0),e;default:return""}}function au(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Or:return"Fragment";case Mr:return"Portal";case ru:return"Profiler";case Fc:return"StrictMode";case iu:return"Suspense";case ou:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case km:return(e.displayName||"Context")+".Consumer";case bm:return(e._context.displayName||"Context")+".Provider";case $c:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Dc:return n=e.displayName||null,n!==null?n:au(e.type)||"Memo";case Rn:n=e._payload,e=e._init;try{return au(e(n))}catch{}}return null}function fx(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return au(n);case 8:return n===Fc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Yn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function jm(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function dx(e){var n=jm(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),i=""+e[n];if(!e.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,a=r.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return o.call(this)},set:function(s){i=""+s,a.call(this,s)}}),Object.defineProperty(e,n,{enumerable:r.enumerable}),{getValue:function(){return i},setValue:function(s){i=""+s},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function ta(e){e._valueTracker||(e._valueTracker=dx(e))}function Nm(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var r=n.getValue(),i="";return e&&(i=jm(e)?e.checked?"true":"false":e.value),e=i,e!==r?(n.setValue(e),!0):!1}function Xa(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function su(e,n){var r=n.checked;return ve({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function ld(e,n){var r=n.defaultValue==null?"":n.defaultValue,i=n.checked!=null?n.checked:n.defaultChecked;r=Yn(n.value!=null?n.value:r),e._wrapperState={initialChecked:i,initialValue:r,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Cm(e,n){n=n.checked,n!=null&&zc(e,"checked",n,!1)}function lu(e,n){Cm(e,n);var r=Yn(n.value),i=n.type;if(r!=null)i==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?uu(e,n.type,r):n.hasOwnProperty("defaultValue")&&uu(e,n.type,Yn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function ud(e,n,r){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var i=n.type;if(!(i!=="submit"&&i!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,r||n===e.value||(e.value=n),e.defaultValue=n}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function uu(e,n,r){(n!=="number"||Xa(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Ui=Array.isArray;function qr(e,n,r,i){if(e=e.options,n){n={};for(var o=0;o"+n.valueOf().toString()+"",n=na.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function lo(e,n){if(n){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=n;return}}e.textContent=n}var Xi={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},hx=["Webkit","ms","Moz","O"];Object.keys(Xi).forEach(function(e){hx.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Xi[n]=Xi[e]})});function Pm(e,n,r){return n==null||typeof n=="boolean"||n===""?"":r||typeof n!="number"||n===0||Xi.hasOwnProperty(e)&&Xi[e]?(""+n).trim():n+"px"}function Rm(e,n){e=e.style;for(var r in n)if(n.hasOwnProperty(r)){var i=r.indexOf("--")===0,o=Pm(r,n[r],i);r==="float"&&(r="cssFloat"),i?e.setProperty(r,o):e[r]=o}}var px=ve({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function du(e,n){if(n){if(px[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(H(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(H(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(H(61))}if(n.style!=null&&typeof n.style!="object")throw Error(H(62))}}function hu(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var pu=null;function Ic(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var mu=null,Gr=null,Xr=null;function dd(e){if(e=Fo(e)){if(typeof mu!="function")throw Error(H(280));var n=e.stateNode;n&&(n=Us(n),mu(e.stateNode,e.type,n))}}function Mm(e){Gr?Xr?Xr.push(e):Xr=[e]:Gr=e}function Om(){if(Gr){var e=Gr,n=Xr;if(Xr=Gr=null,dd(e),n)for(e=0;e>>=0,e===0?32:31-(jx(e)/Nx|0)|0}var ra=64,ia=4194304;function Bi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ja(e,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,o=e.suspendedLanes,a=e.pingedLanes,s=r&268435455;if(s!==0){var l=s&~o;l!==0?i=Bi(l):(a&=s,a!==0&&(i=Bi(a)))}else s=r&~o,s!==0?i=Bi(s):a!==0&&(i=Bi(a));if(i===0)return 0;if(n!==0&&n!==i&&!(n&o)&&(o=i&-i,a=n&-n,o>=a||o===16&&(a&4194240)!==0))return n;if(i&4&&(i|=r&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=i;0r;r++)n.push(e);return n}function Oo(e,n,r){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-$t(n),e[n]=r}function Ax(e,n){var r=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var i=e.eventTimes;for(e=e.expirationTimes;0=Qi),wd=" ",bd=!1;function eg(e,n){switch(e){case"keyup":return i1.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function tg(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var zr=!1;function a1(e,n){switch(e){case"compositionend":return tg(n);case"keypress":return n.which!==32?null:(bd=!0,wd);case"textInput":return e=n.data,e===wd&&bd?null:e;default:return null}}function s1(e,n){if(zr)return e==="compositionend"||!Gc&&eg(e,n)?(e=Jm(),Aa=Vc=Fn=null,zr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:r,offset:n-e};e=i}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Nd(r)}}function og(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?og(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function ag(){for(var e=window,n=Xa();n instanceof e.HTMLIFrameElement;){try{var r=typeof n.contentWindow.location.href=="string"}catch{r=!1}if(r)e=n.contentWindow;else break;n=Xa(e.document)}return n}function Xc(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function g1(e){var n=ag(),r=e.focusedElem,i=e.selectionRange;if(n!==r&&r&&r.ownerDocument&&og(r.ownerDocument.documentElement,r)){if(i!==null&&Xc(r)){if(n=i.start,e=i.end,e===void 0&&(e=n),"selectionStart"in r)r.selectionStart=n,r.selectionEnd=Math.min(e,r.value.length);else if(e=(n=r.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var o=r.textContent.length,a=Math.min(i.start,o);i=i.end===void 0?a:Math.min(i.end,o),!e.extend&&a>i&&(o=i,i=a,a=o),o=Cd(r,a);var s=Cd(r,i);o&&s&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(n=n.createRange(),n.setStart(o.node,o.offset),e.removeAllRanges(),a>i?(e.addRange(n),e.extend(s.node,s.offset)):(n.setEnd(s.node,s.offset),e.addRange(n)))}}for(n=[],e=r;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,Fr=null,wu=null,Ji=null,bu=!1;function Ed(e,n,r){var i=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;bu||Fr==null||Fr!==Xa(i)||(i=Fr,"selectionStart"in i&&Xc(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Ji&&mo(Ji,i)||(Ji=i,i=ts(wu,"onSelect"),0Ir||(e.current=Eu[Ir],Eu[Ir]=null,Ir--)}function ue(e,n){Ir++,Eu[Ir]=e.current,e.current=n}var Qn={},He=Jn(Qn),et=Jn(!1),yr=Qn;function ti(e,n){var r=e.type.contextTypes;if(!r)return Qn;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===n)return i.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in r)o[a]=n[a];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=o),o}function tt(e){return e=e.childContextTypes,e!=null}function rs(){de(et),de(He)}function zd(e,n,r){if(He.current!==Qn)throw Error(H(168));ue(He,n),ue(et,r)}function mg(e,n,r){var i=e.stateNode;if(n=n.childContextTypes,typeof i.getChildContext!="function")return r;i=i.getChildContext();for(var o in i)if(!(o in n))throw Error(H(108,fx(e)||"Unknown",o));return ve({},r,i)}function is(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,yr=He.current,ue(He,e),ue(et,et.current),!0}function Fd(e,n,r){var i=e.stateNode;if(!i)throw Error(H(169));r?(e=mg(e,n,yr),i.__reactInternalMemoizedMergedChildContext=e,de(et),de(He),ue(He,e)):de(et),ue(et,r)}var fn=null,Bs=!1,Rl=!1;function gg(e){fn===null?fn=[e]:fn.push(e)}function E1(e){Bs=!0,gg(e)}function Zn(){if(!Rl&&fn!==null){Rl=!0;var e=0,n=ae;try{var r=fn;for(ae=1;e>=s,o-=s,hn=1<<32-$t(n)+o|r<A?($=N,N=null):$=N.sibling;var j=p(m,N,w[A],b);if(j===null){N===null&&(N=$);break}e&&N&&j.alternate===null&&n(m,N),v=a(j,v,A),k===null?S=j:k.sibling=j,k=j,N=$}if(A===w.length)return r(m,N),pe&&rr(m,A),S;if(N===null){for(;AA?($=N,N=null):$=N.sibling;var R=p(m,N,j.value,b);if(R===null){N===null&&(N=$);break}e&&N&&R.alternate===null&&n(m,N),v=a(R,v,A),k===null?S=R:k.sibling=R,k=R,N=$}if(j.done)return r(m,N),pe&&rr(m,A),S;if(N===null){for(;!j.done;A++,j=w.next())j=d(m,j.value,b),j!==null&&(v=a(j,v,A),k===null?S=j:k.sibling=j,k=j);return pe&&rr(m,A),S}for(N=i(m,N);!j.done;A++,j=w.next())j=y(N,m,A,j.value,b),j!==null&&(e&&j.alternate!==null&&N.delete(j.key===null?A:j.key),v=a(j,v,A),k===null?S=j:k.sibling=j,k=j);return e&&N.forEach(function(T){return n(m,T)}),pe&&rr(m,A),S}function _(m,v,w,b){if(typeof w=="object"&&w!==null&&w.type===Or&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case ea:e:{for(var S=w.key,k=v;k!==null;){if(k.key===S){if(S=w.type,S===Or){if(k.tag===7){r(m,k.sibling),v=o(k,w.props.children),v.return=m,m=v;break e}}else if(k.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Rn&&Id(S)===k.type){r(m,k.sibling),v=o(k,w.props),v.ref=Ci(m,k,w),v.return=m,m=v;break e}r(m,k);break}else n(m,k);k=k.sibling}w.type===Or?(v=hr(w.props.children,m.mode,b,w.key),v.return=m,m=v):(b=Da(w.type,w.key,w.props,null,m.mode,b),b.ref=Ci(m,v,w),b.return=m,m=b)}return s(m);case Mr:e:{for(k=w.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===w.containerInfo&&v.stateNode.implementation===w.implementation){r(m,v.sibling),v=o(v,w.children||[]),v.return=m,m=v;break e}else{r(m,v);break}else n(m,v);v=v.sibling}v=Ll(w,m.mode,b),v.return=m,m=v}return s(m);case Rn:return k=w._init,_(m,v,k(w._payload),b)}if(Ui(w))return g(m,v,w,b);if(bi(w))return x(m,v,w,b);fa(m,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,v!==null&&v.tag===6?(r(m,v.sibling),v=o(v,w),v.return=m,m=v):(r(m,v),v=Il(w,m.mode,b),v.return=m,m=v),s(m)):r(m,v)}return _}var ri=_g(!0),wg=_g(!1),ss=Jn(null),ls=null,Br=null,Jc=null;function Zc(){Jc=Br=ls=null}function ef(e){var n=ss.current;de(ss),e._currentValue=n}function Pu(e,n,r){for(;e!==null;){var i=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,i!==null&&(i.childLanes|=n)):i!==null&&(i.childLanes&n)!==n&&(i.childLanes|=n),e===r)break;e=e.return}}function Qr(e,n){ls=e,Jc=Br=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(Je=!0),e.firstContext=null)}function jt(e){var n=e._currentValue;if(Jc!==e)if(e={context:e,memoizedValue:n,next:null},Br===null){if(ls===null)throw Error(H(308));Br=e,ls.dependencies={lanes:0,firstContext:e}}else Br=Br.next=e;return n}var lr=null;function tf(e){lr===null?lr=[e]:lr.push(e)}function bg(e,n,r,i){var o=n.interleaved;return o===null?(r.next=r,tf(n)):(r.next=o.next,o.next=r),n.interleaved=r,wn(e,i)}function wn(e,n){e.lanes|=n;var r=e.alternate;for(r!==null&&(r.lanes|=n),r=e,e=e.return;e!==null;)e.childLanes|=n,r=e.alternate,r!==null&&(r.childLanes|=n),r=e,e=e.return;return r.tag===3?r.stateNode:null}var Mn=!1;function nf(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function kg(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function yn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Vn(e,n,r){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,re&2){var o=i.pending;return o===null?n.next=n:(n.next=o.next,o.next=n),i.pending=n,wn(e,r)}return o=i.interleaved,o===null?(n.next=n,tf(i)):(n.next=o.next,o.next=n),i.interleaved=n,wn(e,r)}function Ra(e,n,r){if(n=n.updateQueue,n!==null&&(n=n.shared,(r&4194240)!==0)){var i=n.lanes;i&=e.pendingLanes,r|=i,n.lanes=r,Uc(e,r)}}function Ld(e,n){var r=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,r===i)){var o=null,a=null;if(r=r.firstBaseUpdate,r!==null){do{var s={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};a===null?o=a=s:a=a.next=s,r=r.next}while(r!==null);a===null?o=a=n:a=a.next=n}else o=a=n;r={baseState:i.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:i.shared,effects:i.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=n:e.next=n,r.lastBaseUpdate=n}function us(e,n,r,i){var o=e.updateQueue;Mn=!1;var a=o.firstBaseUpdate,s=o.lastBaseUpdate,l=o.shared.pending;if(l!==null){o.shared.pending=null;var f=l,u=f.next;f.next=null,s===null?a=u:s.next=u,s=f;var h=e.alternate;h!==null&&(h=h.updateQueue,l=h.lastBaseUpdate,l!==s&&(l===null?h.firstBaseUpdate=u:l.next=u,h.lastBaseUpdate=f))}if(a!==null){var d=o.baseState;s=0,h=u=f=null,l=a;do{var p=l.lane,y=l.eventTime;if((i&p)===p){h!==null&&(h=h.next={eventTime:y,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var g=e,x=l;switch(p=n,y=r,x.tag){case 1:if(g=x.payload,typeof g=="function"){d=g.call(y,d,p);break e}d=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=x.payload,p=typeof g=="function"?g.call(y,d,p):g,p==null)break e;d=ve({},d,p);break e;case 2:Mn=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=o.effects,p===null?o.effects=[l]:p.push(l))}else y={eventTime:y,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},h===null?(u=h=y,f=d):h=h.next=y,s|=p;if(l=l.next,l===null){if(l=o.shared.pending,l===null)break;p=l,l=p.next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}while(!0);if(h===null&&(f=d),o.baseState=f,o.firstBaseUpdate=u,o.lastBaseUpdate=h,n=o.shared.interleaved,n!==null){o=n;do s|=o.lane,o=o.next;while(o!==n)}else a===null&&(o.shared.lanes=0);_r|=s,e.lanes=s,e.memoizedState=d}}function Ud(e,n,r){if(e=n.effects,n.effects=null,e!==null)for(n=0;nr?r:4,e(!0);var i=Ol.transition;Ol.transition={};try{e(!1),n()}finally{ae=r,Ol.transition=i}}function Lg(){return Nt().memoizedState}function R1(e,n,r){var i=qn(e);if(r={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null},Ug(e))Bg(n,r);else if(r=bg(e,n,r,i),r!==null){var o=qe();Dt(r,e,i,o),Hg(r,n,i)}}function M1(e,n,r){var i=qn(e),o={lane:i,action:r,hasEagerState:!1,eagerState:null,next:null};if(Ug(e))Bg(n,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=n.lastRenderedReducer,a!==null))try{var s=n.lastRenderedState,l=a(s,r);if(o.hasEagerState=!0,o.eagerState=l,It(l,s)){var f=n.interleaved;f===null?(o.next=o,tf(n)):(o.next=f.next,f.next=o),n.interleaved=o;return}}catch{}finally{}r=bg(e,n,o,i),r!==null&&(o=qe(),Dt(r,e,i,o),Hg(r,n,i))}}function Ug(e){var n=e.alternate;return e===ye||n!==null&&n===ye}function Bg(e,n){Zi=fs=!0;var r=e.pending;r===null?n.next=n:(n.next=r.next,r.next=n),e.pending=n}function Hg(e,n,r){if(r&4194240){var i=n.lanes;i&=e.pendingLanes,r|=i,n.lanes=r,Uc(e,r)}}var ds={readContext:jt,useCallback:De,useContext:De,useEffect:De,useImperativeHandle:De,useInsertionEffect:De,useLayoutEffect:De,useMemo:De,useReducer:De,useRef:De,useState:De,useDebugValue:De,useDeferredValue:De,useTransition:De,useMutableSource:De,useSyncExternalStore:De,useId:De,unstable_isNewReconciler:!1},O1={readContext:jt,useCallback:function(e,n){return Gt().memoizedState=[e,n===void 0?null:n],e},useContext:jt,useEffect:Hd,useImperativeHandle:function(e,n,r){return r=r!=null?r.concat([e]):null,Oa(4194308,4,zg.bind(null,n,e),r)},useLayoutEffect:function(e,n){return Oa(4194308,4,e,n)},useInsertionEffect:function(e,n){return Oa(4,2,e,n)},useMemo:function(e,n){var r=Gt();return n=n===void 0?null:n,e=e(),r.memoizedState=[e,n],e},useReducer:function(e,n,r){var i=Gt();return n=r!==void 0?r(n):n,i.memoizedState=i.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},i.queue=e,e=e.dispatch=R1.bind(null,ye,e),[i.memoizedState,e]},useRef:function(e){var n=Gt();return e={current:e},n.memoizedState=e},useState:Bd,useDebugValue:ff,useDeferredValue:function(e){return Gt().memoizedState=e},useTransition:function(){var e=Bd(!1),n=e[0];return e=P1.bind(null,e[1]),Gt().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,r){var i=ye,o=Gt();if(pe){if(r===void 0)throw Error(H(407));r=r()}else{if(r=n(),Re===null)throw Error(H(349));xr&30||Cg(i,n,r)}o.memoizedState=r;var a={value:r,getSnapshot:n};return o.queue=a,Hd(Tg.bind(null,i,a,e),[e]),i.flags|=2048,ko(9,Eg.bind(null,i,a,r,n),void 0,null),r},useId:function(){var e=Gt(),n=Re.identifierPrefix;if(pe){var r=pn,i=hn;r=(i&~(1<<32-$t(i)-1)).toString(32)+r,n=":"+n+"R"+r,r=wo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=s.createElement(r,{is:i.is}):(e=s.createElement(r),r==="select"&&(s=e,i.multiple?s.multiple=!0:i.size&&(s.size=i.size))):e=s.createElementNS(e,r),e[Qt]=n,e[vo]=i,Zg(e,n,!1,!1),n.stateNode=e;e:{switch(s=hu(r,i),r){case"dialog":ce("cancel",e),ce("close",e),o=i;break;case"iframe":case"object":case"embed":ce("load",e),o=i;break;case"video":case"audio":for(o=0;oai&&(n.flags|=128,i=!0,Ei(a,!1),n.lanes=4194304)}else{if(!i)if(e=cs(s),e!==null){if(n.flags|=128,i=!0,r=e.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),Ei(a,!0),a.tail===null&&a.tailMode==="hidden"&&!s.alternate&&!pe)return Ie(n),null}else 2*ke()-a.renderingStartTime>ai&&r!==1073741824&&(n.flags|=128,i=!0,Ei(a,!1),n.lanes=4194304);a.isBackwards?(s.sibling=n.child,n.child=s):(r=a.last,r!==null?r.sibling=s:n.child=s,a.last=s)}return a.tail!==null?(n=a.tail,a.rendering=n,a.tail=n.sibling,a.renderingStartTime=ke(),n.sibling=null,r=ge.current,ue(ge,i?r&1|2:r&1),n):(Ie(n),null);case 22:case 23:return yf(),i=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(n.flags|=8192),i&&n.mode&1?lt&1073741824&&(Ie(n),n.subtreeFlags&6&&(n.flags|=8192)):Ie(n),null;case 24:return null;case 25:return null}throw Error(H(156,n.tag))}function B1(e,n){switch(Qc(n),n.tag){case 1:return tt(n.type)&&rs(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return ii(),de(et),de(He),af(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return of(n),null;case 13:if(de(ge),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(H(340));ni()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return de(ge),null;case 4:return ii(),null;case 10:return ef(n.type._context),null;case 22:case 23:return yf(),null;case 24:return null;default:return null}}var ha=!1,Ue=!1,H1=typeof WeakSet=="function"?WeakSet:Set,Y=null;function Hr(e,n){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(i){we(e,n,i)}else r.current=null}function Lu(e,n,r){try{r()}catch(i){we(e,n,i)}}var eh=!1;function V1(e,n){if(ku=Za,e=ag(),Xc(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var i=r.getSelection&&r.getSelection();if(i&&i.rangeCount!==0){r=i.anchorNode;var o=i.anchorOffset,a=i.focusNode;i=i.focusOffset;try{r.nodeType,a.nodeType}catch{r=null;break e}var s=0,l=-1,f=-1,u=0,h=0,d=e,p=null;t:for(;;){for(var y;d!==r||o!==0&&d.nodeType!==3||(l=s+o),d!==a||i!==0&&d.nodeType!==3||(f=s+i),d.nodeType===3&&(s+=d.nodeValue.length),(y=d.firstChild)!==null;)p=d,d=y;for(;;){if(d===e)break t;if(p===r&&++u===o&&(l=s),p===a&&++h===i&&(f=s),(y=d.nextSibling)!==null)break;d=p,p=d.parentNode}d=y}r=l===-1||f===-1?null:{start:l,end:f}}else r=null}r=r||{start:0,end:0}}else r=null;for(Su={focusedElem:e,selectionRange:r},Za=!1,Y=n;Y!==null;)if(n=Y,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Y=e;else for(;Y!==null;){n=Y;try{var g=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var x=g.memoizedProps,_=g.memoizedState,m=n.stateNode,v=m.getSnapshotBeforeUpdate(n.elementType===n.type?x:Pt(n.type,x),_);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=n.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(H(163))}}catch(b){we(n,n.return,b)}if(e=n.sibling,e!==null){e.return=n.return,Y=e;break}Y=n.return}return g=eh,eh=!1,g}function eo(e,n,r){var i=n.updateQueue;if(i=i!==null?i.lastEffect:null,i!==null){var o=i=i.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,a!==void 0&&Lu(n,r,a)}o=o.next}while(o!==i)}}function Ws(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do{if((r.tag&e)===e){var i=r.create;r.destroy=i()}r=r.next}while(r!==n)}}function Uu(e){var n=e.ref;if(n!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof n=="function"?n(e):n.current=e}}function ny(e){var n=e.alternate;n!==null&&(e.alternate=null,ny(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Qt],delete n[vo],delete n[Cu],delete n[N1],delete n[C1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function ry(e){return e.tag===5||e.tag===3||e.tag===4}function th(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ry(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Bu(e,n,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,n?r.nodeType===8?r.parentNode.insertBefore(e,n):r.insertBefore(e,n):(r.nodeType===8?(n=r.parentNode,n.insertBefore(e,r)):(n=r,n.appendChild(e)),r=r._reactRootContainer,r!=null||n.onclick!==null||(n.onclick=ns));else if(i!==4&&(e=e.child,e!==null))for(Bu(e,n,r),e=e.sibling;e!==null;)Bu(e,n,r),e=e.sibling}function Hu(e,n,r){var i=e.tag;if(i===5||i===6)e=e.stateNode,n?r.insertBefore(e,n):r.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(Hu(e,n,r),e=e.sibling;e!==null;)Hu(e,n,r),e=e.sibling}var Oe=null,Rt=!1;function Tn(e,n,r){for(r=r.child;r!==null;)iy(e,n,r),r=r.sibling}function iy(e,n,r){if(Jt&&typeof Jt.onCommitFiberUnmount=="function")try{Jt.onCommitFiberUnmount($s,r)}catch{}switch(r.tag){case 5:Ue||Hr(r,n);case 6:var i=Oe,o=Rt;Oe=null,Tn(e,n,r),Oe=i,Rt=o,Oe!==null&&(Rt?(e=Oe,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):Oe.removeChild(r.stateNode));break;case 18:Oe!==null&&(Rt?(e=Oe,r=r.stateNode,e.nodeType===8?Pl(e.parentNode,r):e.nodeType===1&&Pl(e,r),ho(e)):Pl(Oe,r.stateNode));break;case 4:i=Oe,o=Rt,Oe=r.stateNode.containerInfo,Rt=!0,Tn(e,n,r),Oe=i,Rt=o;break;case 0:case 11:case 14:case 15:if(!Ue&&(i=r.updateQueue,i!==null&&(i=i.lastEffect,i!==null))){o=i=i.next;do{var a=o,s=a.destroy;a=a.tag,s!==void 0&&(a&2||a&4)&&Lu(r,n,s),o=o.next}while(o!==i)}Tn(e,n,r);break;case 1:if(!Ue&&(Hr(r,n),i=r.stateNode,typeof i.componentWillUnmount=="function"))try{i.props=r.memoizedProps,i.state=r.memoizedState,i.componentWillUnmount()}catch(l){we(r,n,l)}Tn(e,n,r);break;case 21:Tn(e,n,r);break;case 22:r.mode&1?(Ue=(i=Ue)||r.memoizedState!==null,Tn(e,n,r),Ue=i):Tn(e,n,r);break;default:Tn(e,n,r)}}function nh(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new H1),n.forEach(function(i){var o=Z1.bind(null,e,i);r.has(i)||(r.add(i),i.then(o,o))})}}function Et(e,n){var r=n.deletions;if(r!==null)for(var i=0;io&&(o=s),i&=~a}if(i=o,i=ke()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*q1(i/1960))-i,10e?16:e,$n===null)var i=!1;else{if(e=$n,$n=null,ms=0,re&6)throw Error(H(331));var o=re;for(re|=4,Y=e.current;Y!==null;){var a=Y,s=a.child;if(Y.flags&16){var l=a.deletions;if(l!==null){for(var f=0;fke()-mf?dr(e,0):pf|=r),nt(e,n)}function dy(e,n){n===0&&(e.mode&1?(n=ia,ia<<=1,!(ia&130023424)&&(ia=4194304)):n=1);var r=qe();e=wn(e,n),e!==null&&(Oo(e,n,r),nt(e,r))}function J1(e){var n=e.memoizedState,r=0;n!==null&&(r=n.retryLane),dy(e,r)}function Z1(e,n){var r=0;switch(e.tag){case 13:var i=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(H(314))}i!==null&&i.delete(n),dy(e,r)}var hy;hy=function(e,n,r){if(e!==null)if(e.memoizedProps!==n.pendingProps||et.current)Je=!0;else{if(!(e.lanes&r)&&!(n.flags&128))return Je=!1,L1(e,n,r);Je=!!(e.flags&131072)}else Je=!1,pe&&n.flags&1048576&&yg(n,as,n.index);switch(n.lanes=0,n.tag){case 2:var i=n.type;za(e,n),e=n.pendingProps;var o=ti(n,He.current);Qr(n,r),o=lf(null,n,i,e,o,r);var a=uf();return n.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,tt(i)?(a=!0,is(n)):a=!1,n.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,nf(n),o.updater=Vs,n.stateNode=o,o._reactInternals=n,Mu(n,i,e,r),n=Fu(null,n,i,!0,a,r)):(n.tag=0,pe&&a&&Yc(n),Ve(null,n,o,r),n=n.child),n;case 16:i=n.elementType;e:{switch(za(e,n),e=n.pendingProps,o=i._init,i=o(i._payload),n.type=i,o=n.tag=t_(i),e=Pt(i,e),o){case 0:n=zu(null,n,i,e,r);break e;case 1:n=Kd(null,n,i,e,r);break e;case 11:n=Yd(null,n,i,e,r);break e;case 14:n=Qd(null,n,i,Pt(i.type,e),r);break e}throw Error(H(306,i,""))}return n;case 0:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Pt(i,o),zu(e,n,i,o,r);case 1:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Pt(i,o),Kd(e,n,i,o,r);case 3:e:{if(Qg(n),e===null)throw Error(H(387));i=n.pendingProps,a=n.memoizedState,o=a.element,kg(e,n),us(n,i,null,r);var s=n.memoizedState;if(i=s.element,a.isDehydrated)if(a={element:i,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},n.updateQueue.baseState=a,n.memoizedState=a,n.flags&256){o=oi(Error(H(423)),n),n=Jd(e,n,i,r,o);break e}else if(i!==o){o=oi(Error(H(424)),n),n=Jd(e,n,i,r,o);break e}else for(ct=Hn(n.stateNode.containerInfo.firstChild),ft=n,pe=!0,Mt=null,r=wg(n,null,i,r),n.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(ni(),i===o){n=bn(e,n,r);break e}Ve(e,n,i,r)}n=n.child}return n;case 5:return Sg(n),e===null&&Au(n),i=n.type,o=n.pendingProps,a=e!==null?e.memoizedProps:null,s=o.children,ju(i,o)?s=null:a!==null&&ju(i,a)&&(n.flags|=32),Yg(e,n),Ve(e,n,s,r),n.child;case 6:return e===null&&Au(n),null;case 13:return Kg(e,n,r);case 4:return rf(n,n.stateNode.containerInfo),i=n.pendingProps,e===null?n.child=ri(n,null,i,r):Ve(e,n,i,r),n.child;case 11:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Pt(i,o),Yd(e,n,i,o,r);case 7:return Ve(e,n,n.pendingProps,r),n.child;case 8:return Ve(e,n,n.pendingProps.children,r),n.child;case 12:return Ve(e,n,n.pendingProps.children,r),n.child;case 10:e:{if(i=n.type._context,o=n.pendingProps,a=n.memoizedProps,s=o.value,ue(ss,i._currentValue),i._currentValue=s,a!==null)if(It(a.value,s)){if(a.children===o.children&&!et.current){n=bn(e,n,r);break e}}else for(a=n.child,a!==null&&(a.return=n);a!==null;){var l=a.dependencies;if(l!==null){s=a.child;for(var f=l.firstContext;f!==null;){if(f.context===i){if(a.tag===1){f=yn(-1,r&-r),f.tag=2;var u=a.updateQueue;if(u!==null){u=u.shared;var h=u.pending;h===null?f.next=f:(f.next=h.next,h.next=f),u.pending=f}}a.lanes|=r,f=a.alternate,f!==null&&(f.lanes|=r),Pu(a.return,r,n),l.lanes|=r;break}f=f.next}}else if(a.tag===10)s=a.type===n.type?null:a.child;else if(a.tag===18){if(s=a.return,s===null)throw Error(H(341));s.lanes|=r,l=s.alternate,l!==null&&(l.lanes|=r),Pu(s,r,n),s=a.sibling}else s=a.child;if(s!==null)s.return=a;else for(s=a;s!==null;){if(s===n){s=null;break}if(a=s.sibling,a!==null){a.return=s.return,s=a;break}s=s.return}a=s}Ve(e,n,o.children,r),n=n.child}return n;case 9:return o=n.type,i=n.pendingProps.children,Qr(n,r),o=jt(o),i=i(o),n.flags|=1,Ve(e,n,i,r),n.child;case 14:return i=n.type,o=Pt(i,n.pendingProps),o=Pt(i.type,o),Qd(e,n,i,o,r);case 15:return Gg(e,n,n.type,n.pendingProps,r);case 17:return i=n.type,o=n.pendingProps,o=n.elementType===i?o:Pt(i,o),za(e,n),n.tag=1,tt(i)?(e=!0,is(n)):e=!1,Qr(n,r),Vg(n,i,o),Mu(n,i,o,r),Fu(null,n,i,!0,e,r);case 19:return Jg(e,n,r);case 22:return Xg(e,n,r)}throw Error(H(156,n.tag))};function py(e,n){return Um(e,n)}function e_(e,n,r,i){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function bt(e,n,r,i){return new e_(e,n,r,i)}function xf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function t_(e){if(typeof e=="function")return xf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===$c)return 11;if(e===Dc)return 14}return 2}function Gn(e,n){var r=e.alternate;return r===null?(r=bt(e.tag,n,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=n,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,n=e.dependencies,r.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Da(e,n,r,i,o,a){var s=2;if(i=e,typeof e=="function")xf(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Or:return hr(r.children,o,a,n);case Fc:s=8,o|=8;break;case ru:return e=bt(12,r,n,o|2),e.elementType=ru,e.lanes=a,e;case iu:return e=bt(13,r,n,o),e.elementType=iu,e.lanes=a,e;case ou:return e=bt(19,r,n,o),e.elementType=ou,e.lanes=a,e;case Sm:return Gs(r,o,a,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case bm:s=10;break e;case km:s=9;break e;case $c:s=11;break e;case Dc:s=14;break e;case Rn:s=16,i=null;break e}throw Error(H(130,e==null?e:typeof e,""))}return n=bt(s,r,n,o),n.elementType=e,n.type=i,n.lanes=a,n}function hr(e,n,r,i){return e=bt(7,e,i,n),e.lanes=r,e}function Gs(e,n,r,i){return e=bt(22,e,i,n),e.elementType=Sm,e.lanes=r,e.stateNode={isHidden:!1},e}function Il(e,n,r){return e=bt(6,e,null,n),e.lanes=r,e}function Ll(e,n,r){return n=bt(4,e.children!==null?e.children:[],e.key,n),n.lanes=r,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function n_(e,n,r,i,o){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=_l(0),this.expirationTimes=_l(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_l(0),this.identifierPrefix=i,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function _f(e,n,r,i,o,a,s,l,f){return e=new n_(e,n,r,l,f),n===1?(n=1,a===!0&&(n|=8)):n=0,a=bt(3,null,null,n),e.current=a,a.stateNode=e,a.memoizedState={element:i,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},nf(a),e}function r_(e,n,r){var i=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(vy)}catch(e){console.error(e)}}vy(),vm.exports=pt;var l_=vm.exports,ch=l_;tu.createRoot=ch.createRoot,tu.hydrateRoot=ch.hydrateRoot;/** - * @remix-run/router v1.23.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function jo(){return jo=Object.assign?Object.assign.bind():function(e){for(var n=1;n"u")throw new Error(n)}function xy(e,n){if(!e){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function c_(){return Math.random().toString(36).substr(2,8)}function dh(e,n){return{usr:e.state,key:e.key,idx:n}}function Xu(e,n,r,i){return r===void 0&&(r=null),jo({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof n=="string"?mi(n):n,{state:r,key:n&&n.key||i||c_()})}function vs(e){let{pathname:n="/",search:r="",hash:i=""}=e;return r&&r!=="?"&&(n+=r.charAt(0)==="?"?r:"?"+r),i&&i!=="#"&&(n+=i.charAt(0)==="#"?i:"#"+i),n}function mi(e){let n={};if(e){let r=e.indexOf("#");r>=0&&(n.hash=e.substr(r),e=e.substr(0,r));let i=e.indexOf("?");i>=0&&(n.search=e.substr(i),e=e.substr(0,i)),e&&(n.pathname=e)}return n}function f_(e,n,r,i){i===void 0&&(i={});let{window:o=document.defaultView,v5Compat:a=!1}=i,s=o.history,l=Dn.Pop,f=null,u=h();u==null&&(u=0,s.replaceState(jo({},s.state,{idx:u}),""));function h(){return(s.state||{idx:null}).idx}function d(){l=Dn.Pop;let _=h(),m=_==null?null:_-u;u=_,f&&f({action:l,location:x.location,delta:m})}function p(_,m){l=Dn.Push;let v=Xu(x.location,_,m);u=h()+1;let w=dh(v,u),b=x.createHref(v);try{s.pushState(w,"",b)}catch(S){if(S instanceof DOMException&&S.name==="DataCloneError")throw S;o.location.assign(b)}a&&f&&f({action:l,location:x.location,delta:1})}function y(_,m){l=Dn.Replace;let v=Xu(x.location,_,m);u=h();let w=dh(v,u),b=x.createHref(v);s.replaceState(w,"",b),a&&f&&f({action:l,location:x.location,delta:0})}function g(_){let m=o.location.origin!=="null"?o.location.origin:o.location.href,v=typeof _=="string"?_:vs(_);return v=v.replace(/ $/,"%20"),Ce(m,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,m)}let x={get action(){return l},get location(){return e(o,s)},listen(_){if(f)throw new Error("A history only accepts one active listener");return o.addEventListener(fh,d),f=_,()=>{o.removeEventListener(fh,d),f=null}},createHref(_){return n(o,_)},createURL:g,encodeLocation(_){let m=g(_);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:p,replace:y,go(_){return s.go(_)}};return x}var hh;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(hh||(hh={}));function d_(e,n,r){return r===void 0&&(r="/"),h_(e,n,r)}function h_(e,n,r,i){let o=typeof n=="string"?mi(n):n,a=Sf(o.pathname||"/",r);if(a==null)return null;let s=_y(e);p_(s);let l=null;for(let f=0;l==null&&f{let f={relativePath:l===void 0?a.path||"":l,caseSensitive:a.caseSensitive===!0,childrenIndex:s,route:a};f.relativePath.startsWith("/")&&(Ce(f.relativePath.startsWith(i),'Absolute route path "'+f.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),f.relativePath=f.relativePath.slice(i.length));let u=Xn([i,f.relativePath]),h=r.concat(f);a.children&&a.children.length>0&&(Ce(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),_y(a.children,n,h,u)),!(a.path==null&&!a.index)&&n.push({path:u,score:w_(u,a.index),routesMeta:h})};return e.forEach((a,s)=>{var l;if(a.path===""||!((l=a.path)!=null&&l.includes("?")))o(a,s);else for(let f of wy(a.path))o(a,s,f)}),n}function wy(e){let n=e.split("/");if(n.length===0)return[];let[r,...i]=n,o=r.endsWith("?"),a=r.replace(/\?$/,"");if(i.length===0)return o?[a,""]:[a];let s=wy(i.join("/")),l=[];return l.push(...s.map(f=>f===""?a:[a,f].join("/"))),o&&l.push(...s),l.map(f=>e.startsWith("/")&&f===""?"/":f)}function p_(e){e.sort((n,r)=>n.score!==r.score?r.score-n.score:b_(n.routesMeta.map(i=>i.childrenIndex),r.routesMeta.map(i=>i.childrenIndex)))}const m_=/^:[\w-]+$/,g_=3,y_=2,v_=1,x_=10,__=-2,ph=e=>e==="*";function w_(e,n){let r=e.split("/"),i=r.length;return r.some(ph)&&(i+=__),n&&(i+=y_),r.filter(o=>!ph(o)).reduce((o,a)=>o+(m_.test(a)?g_:a===""?v_:x_),i)}function b_(e,n){return e.length===n.length&&e.slice(0,-1).every((i,o)=>i===n[o])?e[e.length-1]-n[n.length-1]:0}function k_(e,n,r){let{routesMeta:i}=e,o={},a="/",s=[];for(let l=0;l{let{paramName:p,isOptional:y}=h;if(p==="*"){let x=l[d]||"";s=a.slice(0,a.length-x.length).replace(/(.)\/+$/,"$1")}const g=l[d];return y&&!g?u[p]=void 0:u[p]=(g||"").replace(/%2F/g,"/"),u},{}),pathname:a,pathnameBase:s,pattern:e}}function j_(e,n,r){n===void 0&&(n=!1),r===void 0&&(r=!0),xy(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let i=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,l,f)=>(i.push({paramName:l,isOptional:f!=null}),f?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(i.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,n?void 0:"i"),i]}function N_(e){try{return e.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return xy(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+n+").")),e}}function Sf(e,n){if(n==="/")return e;if(!e.toLowerCase().startsWith(n.toLowerCase()))return null;let r=n.endsWith("/")?n.length-1:n.length,i=e.charAt(r);return i&&i!=="/"?null:e.slice(r)||"/"}function C_(e,n){n===void 0&&(n="/");let{pathname:r,search:i="",hash:o=""}=typeof e=="string"?mi(e):e;return{pathname:r?r.startsWith("/")?r:E_(r,n):n,search:P_(i),hash:R_(o)}}function E_(e,n){let r=n.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function Ul(e,n,r,i){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+n+"` field ["+JSON.stringify(i)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function T_(e){return e.filter((n,r)=>r===0||n.route.path&&n.route.path.length>0)}function by(e,n){let r=T_(e);return n?r.map((i,o)=>o===r.length-1?i.pathname:i.pathnameBase):r.map(i=>i.pathnameBase)}function ky(e,n,r,i){i===void 0&&(i=!1);let o;typeof e=="string"?o=mi(e):(o=jo({},e),Ce(!o.pathname||!o.pathname.includes("?"),Ul("?","pathname","search",o)),Ce(!o.pathname||!o.pathname.includes("#"),Ul("#","pathname","hash",o)),Ce(!o.search||!o.search.includes("#"),Ul("#","search","hash",o)));let a=e===""||o.pathname==="",s=a?"/":o.pathname,l;if(s==null)l=r;else{let d=n.length-1;if(!i&&s.startsWith("..")){let p=s.split("/");for(;p[0]==="..";)p.shift(),d-=1;o.pathname=p.join("/")}l=d>=0?n[d]:"/"}let f=C_(o,l),u=s&&s!=="/"&&s.endsWith("/"),h=(a||s===".")&&r.endsWith("/");return!f.pathname.endsWith("/")&&(u||h)&&(f.pathname+="/"),f}const Xn=e=>e.join("/").replace(/\/\/+/g,"/"),A_=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),P_=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,R_=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function M_(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Sy=["post","put","patch","delete"];new Set(Sy);const O_=["get",...Sy];new Set(O_);/** - * React Router v6.30.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function No(){return No=Object.assign?Object.assign.bind():function(e){for(var n=1;n{l.current=!0}),E.useCallback(function(u,h){if(h===void 0&&(h={}),!l.current)return;if(typeof u=="number"){i.go(u);return}let d=ky(u,JSON.parse(s),a,h.relative==="path");e==null&&n!=="/"&&(d.pathname=d.pathname==="/"?n:Xn([n,d.pathname])),(h.replace?i.replace:i.push)(d,h.state,h)},[n,i,s,a,e])}function Cy(e,n){let{relative:r}=n===void 0?{}:n,{future:i}=E.useContext(Cr),{matches:o}=E.useContext(Er),{pathname:a}=gi(),s=JSON.stringify(by(o,i.v7_relativeSplatPath));return E.useMemo(()=>ky(e,JSON.parse(s),a,r==="path"),[e,s,a,r])}function D_(e,n){return I_(e,n)}function I_(e,n,r,i){Do()||Ce(!1);let{navigator:o}=E.useContext(Cr),{matches:a}=E.useContext(Er),s=a[a.length-1],l=s?s.params:{};s&&s.pathname;let f=s?s.pathnameBase:"/";s&&s.route;let u=gi(),h;if(n){var d;let _=typeof n=="string"?mi(n):n;f==="/"||(d=_.pathname)!=null&&d.startsWith(f)||Ce(!1),h=_}else h=u;let p=h.pathname||"/",y=p;if(f!=="/"){let _=f.replace(/^\//,"").split("/");y="/"+p.replace(/^\//,"").split("/").slice(_.length).join("/")}let g=d_(e,{pathname:y}),x=V_(g&&g.map(_=>Object.assign({},_,{params:Object.assign({},l,_.params),pathname:Xn([f,o.encodeLocation?o.encodeLocation(_.pathname).pathname:_.pathname]),pathnameBase:_.pathnameBase==="/"?f:Xn([f,o.encodeLocation?o.encodeLocation(_.pathnameBase).pathname:_.pathnameBase])})),a,r,i);return n&&x?E.createElement(Js.Provider,{value:{location:No({pathname:"/",search:"",hash:"",state:null,key:"default"},h),navigationType:Dn.Pop}},x):x}function L_(){let e=X_(),n=M_(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return E.createElement(E.Fragment,null,E.createElement("h2",null,"Unexpected Application Error!"),E.createElement("h3",{style:{fontStyle:"italic"}},n),r?E.createElement("pre",{style:o},r):null,null)}const U_=E.createElement(L_,null);class B_ extends E.Component{constructor(n){super(n),this.state={location:n.location,revalidation:n.revalidation,error:n.error}}static getDerivedStateFromError(n){return{error:n}}static getDerivedStateFromProps(n,r){return r.location!==n.location||r.revalidation!=="idle"&&n.revalidation==="idle"?{error:n.error,location:n.location,revalidation:n.revalidation}:{error:n.error!==void 0?n.error:r.error,location:r.location,revalidation:n.revalidation||r.revalidation}}componentDidCatch(n,r){console.error("React Router caught the following error during render",n,r)}render(){return this.state.error!==void 0?E.createElement(Er.Provider,{value:this.props.routeContext},E.createElement(jy.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function H_(e){let{routeContext:n,match:r,children:i}=e,o=E.useContext(jf);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),E.createElement(Er.Provider,{value:n},i)}function V_(e,n,r,i){var o;if(n===void 0&&(n=[]),r===void 0&&(r=null),i===void 0&&(i=null),e==null){var a;if(!r)return null;if(r.errors)e=r.matches;else if((a=i)!=null&&a.v7_partialHydration&&n.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let s=e,l=(o=r)==null?void 0:o.errors;if(l!=null){let h=s.findIndex(d=>d.route.id&&(l==null?void 0:l[d.route.id])!==void 0);h>=0||Ce(!1),s=s.slice(0,Math.min(s.length,h+1))}let f=!1,u=-1;if(r&&i&&i.v7_partialHydration)for(let h=0;h=0?s=s.slice(0,u+1):s=[s[0]];break}}}return s.reduceRight((h,d,p)=>{let y,g=!1,x=null,_=null;r&&(y=l&&d.route.id?l[d.route.id]:void 0,x=d.route.errorElement||U_,f&&(u<0&&p===0?(Q_("route-fallback"),g=!0,_=null):u===p&&(g=!0,_=d.route.hydrateFallbackElement||null)));let m=n.concat(s.slice(0,p+1)),v=()=>{let w;return y?w=x:g?w=_:d.route.Component?w=E.createElement(d.route.Component,null):d.route.element?w=d.route.element:w=h,E.createElement(H_,{match:d,routeContext:{outlet:h,matches:m,isDataRoute:r!=null},children:w})};return r&&(d.route.ErrorBoundary||d.route.errorElement||p===0)?E.createElement(B_,{location:r.location,revalidation:r.revalidation,component:x,error:y,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var Ey=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Ey||{}),Ty=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Ty||{});function W_(e){let n=E.useContext(jf);return n||Ce(!1),n}function q_(e){let n=E.useContext(z_);return n||Ce(!1),n}function G_(e){let n=E.useContext(Er);return n||Ce(!1),n}function Ay(e){let n=G_(),r=n.matches[n.matches.length-1];return r.route.id||Ce(!1),r.route.id}function X_(){var e;let n=E.useContext(jy),r=q_(),i=Ay();return n!==void 0?n:(e=r.errors)==null?void 0:e[i]}function Y_(){let{router:e}=W_(Ey.UseNavigateStable),n=Ay(Ty.UseNavigateStable),r=E.useRef(!1);return Ny(()=>{r.current=!0}),E.useCallback(function(o,a){a===void 0&&(a={}),r.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,No({fromRouteId:n},a)))},[e,n])}const mh={};function Q_(e,n,r){mh[e]||(mh[e]=!0)}function K_(e,n){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function Tt(e){Ce(!1)}function J_(e){let{basename:n="/",children:r=null,location:i,navigationType:o=Dn.Pop,navigator:a,static:s=!1,future:l}=e;Do()&&Ce(!1);let f=n.replace(/^\/*/,"/"),u=E.useMemo(()=>({basename:f,navigator:a,static:s,future:No({v7_relativeSplatPath:!1},l)}),[f,l,a,s]);typeof i=="string"&&(i=mi(i));let{pathname:h="/",search:d="",hash:p="",state:y=null,key:g="default"}=i,x=E.useMemo(()=>{let _=Sf(h,f);return _==null?null:{location:{pathname:_,search:d,hash:p,state:y,key:g},navigationType:o}},[f,h,d,p,y,g,o]);return x==null?null:E.createElement(Cr.Provider,{value:u},E.createElement(Js.Provider,{children:r,value:x}))}function Z_(e){let{children:n,location:r}=e;return D_(Yu(n),r)}new Promise(()=>{});function Yu(e,n){n===void 0&&(n=[]);let r=[];return E.Children.forEach(e,(i,o)=>{if(!E.isValidElement(i))return;let a=[...n,o];if(i.type===E.Fragment){r.push.apply(r,Yu(i.props.children,a));return}i.type!==Tt&&Ce(!1),!i.props.index||!i.props.children||Ce(!1);let s={id:i.props.id||a.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(s.children=Yu(i.props.children,a)),r.push(s)}),r}/** - * React Router DOM v6.30.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Qu(){return Qu=Object.assign?Object.assign.bind():function(e){for(var n=1;n=0)&&(r[o]=e[o]);return r}function tw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function nw(e,n){return e.button===0&&(!n||n==="_self")&&!tw(e)}function Ku(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((n,r)=>{let i=e[r];return n.concat(Array.isArray(i)?i.map(o=>[r,o]):[[r,i]])},[]))}function rw(e,n){let r=Ku(e);return n&&n.forEach((i,o)=>{r.has(o)||n.getAll(o).forEach(a=>{r.append(o,a)})}),r}const iw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],ow="6";try{window.__reactRouterVersion=ow}catch{}const aw="startTransition",gh=Kv[aw];function sw(e){let{basename:n,children:r,future:i,window:o}=e,a=E.useRef();a.current==null&&(a.current=u_({window:o,v5Compat:!0}));let s=a.current,[l,f]=E.useState({action:s.action,location:s.location}),{v7_startTransition:u}=i||{},h=E.useCallback(d=>{u&&gh?gh(()=>f(d)):f(d)},[f,u]);return E.useLayoutEffect(()=>s.listen(h),[s,h]),E.useEffect(()=>K_(i),[i]),E.createElement(J_,{basename:n,children:r,location:l.location,navigationType:l.action,navigator:s,future:i})}const lw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",uw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,kt=E.forwardRef(function(n,r){let{onClick:i,relative:o,reloadDocument:a,replace:s,state:l,target:f,to:u,preventScrollReset:h,viewTransition:d}=n,p=ew(n,iw),{basename:y}=E.useContext(Cr),g,x=!1;if(typeof u=="string"&&uw.test(u)&&(g=u,lw))try{let w=new URL(window.location.href),b=u.startsWith("//")?new URL(w.protocol+u):new URL(u),S=Sf(b.pathname,y);b.origin===w.origin&&S!=null?u=S+b.search+b.hash:x=!0}catch{}let _=F_(u,{relative:o}),m=cw(u,{replace:s,state:l,target:f,preventScrollReset:h,relative:o,viewTransition:d});function v(w){i&&i(w),w.defaultPrevented||m(w)}return E.createElement("a",Qu({},p,{href:g||_,onClick:x||a?i:v,ref:r,target:f}))});var yh;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(yh||(yh={}));var vh;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(vh||(vh={}));function cw(e,n){let{target:r,replace:i,state:o,preventScrollReset:a,relative:s,viewTransition:l}=n===void 0?{}:n,f=Zs(),u=gi(),h=Cy(e,{relative:s});return E.useCallback(d=>{if(nw(d,r)){d.preventDefault();let p=i!==void 0?i:vs(u)===vs(h);f(e,{replace:p,state:o,preventScrollReset:a,relative:s,viewTransition:l})}},[u,f,h,i,o,r,e,a,s,l])}function Py(e){let n=E.useRef(Ku(e)),r=E.useRef(!1),i=gi(),o=E.useMemo(()=>rw(i.search,r.current?null:n.current),[i.search]),a=Zs(),s=E.useCallback((l,f)=>{const u=Ku(typeof l=="function"?l(o):l);r.current=!0,a("?"+u,f)},[a,o]);return[o,s]}/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var fw={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"};/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const dw=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),Me=(e,n)=>{const r=E.forwardRef(({color:i="currentColor",size:o=24,strokeWidth:a=2,absoluteStrokeWidth:s,className:l="",children:f,...u},h)=>E.createElement("svg",{ref:h,...fw,width:o,height:o,stroke:i,strokeWidth:s?Number(a)*24/Number(o):a,className:["lucide",`lucide-${dw(e)}`,l].join(" "),...u},[...n.map(([d,p])=>E.createElement(d,p)),...Array.isArray(f)?f:[f]]));return r.displayName=`${e}`,r};/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ry=Me("BarChart3",[["path",{d:"M3 3v18h18",key:"1s2lah"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const My=Me("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hw=Me("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pw=Me("FileDown",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const mw=Me("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const gw=Me("Home",[["path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"y5dka4"}],["polyline",{points:"9 22 9 12 15 12 15 22",key:"e2us08"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const yw=Me("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vw=Me("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xw=Me("Loader",[["line",{x1:"12",x2:"12",y1:"2",y2:"6",key:"gza1u7"}],["line",{x1:"12",x2:"12",y1:"18",y2:"22",key:"1qhbu9"}],["line",{x1:"4.93",x2:"7.76",y1:"4.93",y2:"7.76",key:"xae44r"}],["line",{x1:"16.24",x2:"19.07",y1:"16.24",y2:"19.07",key:"bxnmvf"}],["line",{x1:"2",x2:"6",y1:"12",y2:"12",key:"89khin"}],["line",{x1:"18",x2:"22",y1:"12",y2:"12",key:"pb8tfm"}],["line",{x1:"4.93",x2:"7.76",y1:"19.07",y2:"16.24",key:"1uxjnu"}],["line",{x1:"16.24",x2:"19.07",y1:"7.76",y2:"4.93",key:"6duxfx"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const _w=Me("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ww=Me("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xh=Me("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const bw=Me("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kw=Me("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Sw=Me("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Oy=Me("Triangle",[["path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"14u9p9"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jw=Me("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);/** - * @license lucide-react v0.303.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Nw=Me("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function zy(e,n){return function(){return e.apply(n,arguments)}}const{toString:Cw}=Object.prototype,{getPrototypeOf:Nf}=Object,{iterator:el,toStringTag:Fy}=Symbol,tl=(e=>n=>{const r=Cw.call(n);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Lt=e=>(e=e.toLowerCase(),n=>tl(n)===e),nl=e=>n=>typeof n===e,{isArray:yi}=Array,si=nl("undefined");function Io(e){return e!==null&&!si(e)&&e.constructor!==null&&!si(e.constructor)&&rt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const $y=Lt("ArrayBuffer");function Ew(e){let n;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?n=ArrayBuffer.isView(e):n=e&&e.buffer&&$y(e.buffer),n}const Tw=nl("string"),rt=nl("function"),Dy=nl("number"),Lo=e=>e!==null&&typeof e=="object",Aw=e=>e===!0||e===!1,Ia=e=>{if(tl(e)!=="object")return!1;const n=Nf(e);return(n===null||n===Object.prototype||Object.getPrototypeOf(n)===null)&&!(Fy in e)&&!(el in e)},Pw=e=>{if(!Lo(e)||Io(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Rw=Lt("Date"),Mw=Lt("File"),Ow=Lt("Blob"),zw=Lt("FileList"),Fw=e=>Lo(e)&&rt(e.pipe),$w=e=>{let n;return e&&(typeof FormData=="function"&&e instanceof FormData||rt(e.append)&&((n=tl(e))==="formdata"||n==="object"&&rt(e.toString)&&e.toString()==="[object FormData]"))},Dw=Lt("URLSearchParams"),[Iw,Lw,Uw,Bw]=["ReadableStream","Request","Response","Headers"].map(Lt),Hw=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Uo(e,n,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let i,o;if(typeof e!="object"&&(e=[e]),yi(e))for(i=0,o=e.length;i0;)if(o=r[i],n===o.toLowerCase())return o;return null}const cr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Ly=e=>!si(e)&&e!==cr;function Ju(){const{caseless:e,skipUndefined:n}=Ly(this)&&this||{},r={},i=(o,a)=>{const s=e&&Iy(r,a)||a;Ia(r[s])&&Ia(o)?r[s]=Ju(r[s],o):Ia(o)?r[s]=Ju({},o):yi(o)?r[s]=o.slice():(!n||!si(o))&&(r[s]=o)};for(let o=0,a=arguments.length;o(Uo(n,(o,a)=>{r&&rt(o)?e[a]=zy(o,r):e[a]=o},{allOwnKeys:i}),e),Ww=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),qw=(e,n,r,i)=>{e.prototype=Object.create(n.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:n.prototype}),r&&Object.assign(e.prototype,r)},Gw=(e,n,r,i)=>{let o,a,s;const l={};if(n=n||{},e==null)return n;do{for(o=Object.getOwnPropertyNames(e),a=o.length;a-- >0;)s=o[a],(!i||i(s,e,n))&&!l[s]&&(n[s]=e[s],l[s]=!0);e=r!==!1&&Nf(e)}while(e&&(!r||r(e,n))&&e!==Object.prototype);return n},Xw=(e,n,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=n.length;const i=e.indexOf(n,r);return i!==-1&&i===r},Yw=e=>{if(!e)return null;if(yi(e))return e;let n=e.length;if(!Dy(n))return null;const r=new Array(n);for(;n-- >0;)r[n]=e[n];return r},Qw=(e=>n=>e&&n instanceof e)(typeof Uint8Array<"u"&&Nf(Uint8Array)),Kw=(e,n)=>{const i=(e&&e[el]).call(e);let o;for(;(o=i.next())&&!o.done;){const a=o.value;n.call(e,a[0],a[1])}},Jw=(e,n)=>{let r;const i=[];for(;(r=e.exec(n))!==null;)i.push(r);return i},Zw=Lt("HTMLFormElement"),e2=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,i,o){return i.toUpperCase()+o}),_h=(({hasOwnProperty:e})=>(n,r)=>e.call(n,r))(Object.prototype),t2=Lt("RegExp"),Uy=(e,n)=>{const r=Object.getOwnPropertyDescriptors(e),i={};Uo(r,(o,a)=>{let s;(s=n(o,a,e))!==!1&&(i[a]=s||o)}),Object.defineProperties(e,i)},n2=e=>{Uy(e,(n,r)=>{if(rt(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const i=e[r];if(rt(i)){if(n.enumerable=!1,"writable"in n){n.writable=!1;return}n.set||(n.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},r2=(e,n)=>{const r={},i=o=>{o.forEach(a=>{r[a]=!0})};return yi(e)?i(e):i(String(e).split(n)),r},i2=()=>{},o2=(e,n)=>e!=null&&Number.isFinite(e=+e)?e:n;function a2(e){return!!(e&&rt(e.append)&&e[Fy]==="FormData"&&e[el])}const s2=e=>{const n=new Array(10),r=(i,o)=>{if(Lo(i)){if(n.indexOf(i)>=0)return;if(Io(i))return i;if(!("toJSON"in i)){n[o]=i;const a=yi(i)?[]:{};return Uo(i,(s,l)=>{const f=r(s,o+1);!si(f)&&(a[l]=f)}),n[o]=void 0,a}}return i};return r(e,0)},l2=Lt("AsyncFunction"),u2=e=>e&&(Lo(e)||rt(e))&&rt(e.then)&&rt(e.catch),By=((e,n)=>e?setImmediate:n?((r,i)=>(cr.addEventListener("message",({source:o,data:a})=>{o===cr&&a===r&&i.length&&i.shift()()},!1),o=>{i.push(o),cr.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",rt(cr.postMessage)),c2=typeof queueMicrotask<"u"?queueMicrotask.bind(cr):typeof process<"u"&&process.nextTick||By,f2=e=>e!=null&&rt(e[el]),I={isArray:yi,isArrayBuffer:$y,isBuffer:Io,isFormData:$w,isArrayBufferView:Ew,isString:Tw,isNumber:Dy,isBoolean:Aw,isObject:Lo,isPlainObject:Ia,isEmptyObject:Pw,isReadableStream:Iw,isRequest:Lw,isResponse:Uw,isHeaders:Bw,isUndefined:si,isDate:Rw,isFile:Mw,isBlob:Ow,isRegExp:t2,isFunction:rt,isStream:Fw,isURLSearchParams:Dw,isTypedArray:Qw,isFileList:zw,forEach:Uo,merge:Ju,extend:Vw,trim:Hw,stripBOM:Ww,inherits:qw,toFlatObject:Gw,kindOf:tl,kindOfTest:Lt,endsWith:Xw,toArray:Yw,forEachEntry:Kw,matchAll:Jw,isHTMLForm:Zw,hasOwnProperty:_h,hasOwnProp:_h,reduceDescriptors:Uy,freezeMethods:n2,toObjectSet:r2,toCamelCase:e2,noop:i2,toFiniteNumber:o2,findKey:Iy,global:cr,isContextDefined:Ly,isSpecCompliantForm:a2,toJSONObject:s2,isAsyncFn:l2,isThenable:u2,setImmediate:By,asap:c2,isIterable:f2};function Z(e,n,r,i,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",n&&(this.code=n),r&&(this.config=r),i&&(this.request=i),o&&(this.response=o,this.status=o.status?o.status:null)}I.inherits(Z,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:I.toJSONObject(this.config),code:this.code,status:this.status}}});const Hy=Z.prototype,Vy={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Vy[e]={value:e}});Object.defineProperties(Z,Vy);Object.defineProperty(Hy,"isAxiosError",{value:!0});Z.from=(e,n,r,i,o,a)=>{const s=Object.create(Hy);I.toFlatObject(e,s,function(h){return h!==Error.prototype},u=>u!=="isAxiosError");const l=e&&e.message?e.message:"Error",f=n==null&&e?e.code:n;return Z.call(s,l,f,r,i,o),e&&s.cause==null&&Object.defineProperty(s,"cause",{value:e,configurable:!0}),s.name=e&&e.name||"Error",a&&Object.assign(s,a),s};const d2=null;function Zu(e){return I.isPlainObject(e)||I.isArray(e)}function Wy(e){return I.endsWith(e,"[]")?e.slice(0,-2):e}function wh(e,n,r){return e?e.concat(n).map(function(o,a){return o=Wy(o),!r&&a?"["+o+"]":o}).join(r?".":""):n}function h2(e){return I.isArray(e)&&!e.some(Zu)}const p2=I.toFlatObject(I,{},null,function(n){return/^is[A-Z]/.test(n)});function rl(e,n,r){if(!I.isObject(e))throw new TypeError("target must be an object");n=n||new FormData,r=I.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(x,_){return!I.isUndefined(_[x])});const i=r.metaTokens,o=r.visitor||h,a=r.dots,s=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&I.isSpecCompliantForm(n);if(!I.isFunction(o))throw new TypeError("visitor must be a function");function u(g){if(g===null)return"";if(I.isDate(g))return g.toISOString();if(I.isBoolean(g))return g.toString();if(!f&&I.isBlob(g))throw new Z("Blob is not supported. Use a Buffer instead.");return I.isArrayBuffer(g)||I.isTypedArray(g)?f&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function h(g,x,_){let m=g;if(g&&!_&&typeof g=="object"){if(I.endsWith(x,"{}"))x=i?x:x.slice(0,-2),g=JSON.stringify(g);else if(I.isArray(g)&&h2(g)||(I.isFileList(g)||I.endsWith(x,"[]"))&&(m=I.toArray(g)))return x=Wy(x),m.forEach(function(w,b){!(I.isUndefined(w)||w===null)&&n.append(s===!0?wh([x],b,a):s===null?x:x+"[]",u(w))}),!1}return Zu(g)?!0:(n.append(wh(_,x,a),u(g)),!1)}const d=[],p=Object.assign(p2,{defaultVisitor:h,convertValue:u,isVisitable:Zu});function y(g,x){if(!I.isUndefined(g)){if(d.indexOf(g)!==-1)throw Error("Circular reference detected in "+x.join("."));d.push(g),I.forEach(g,function(m,v){(!(I.isUndefined(m)||m===null)&&o.call(n,m,I.isString(v)?v.trim():v,x,p))===!0&&y(m,x?x.concat(v):[v])}),d.pop()}}if(!I.isObject(e))throw new TypeError("data must be an object");return y(e),n}function bh(e){const n={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(i){return n[i]})}function Cf(e,n){this._pairs=[],e&&rl(e,this,n)}const qy=Cf.prototype;qy.append=function(n,r){this._pairs.push([n,r])};qy.toString=function(n){const r=n?function(i){return n.call(this,i,bh)}:bh;return this._pairs.map(function(o){return r(o[0])+"="+r(o[1])},"").join("&")};function m2(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Gy(e,n,r){if(!n)return e;const i=r&&r.encode||m2;I.isFunction(r)&&(r={serialize:r});const o=r&&r.serialize;let a;if(o?a=o(n,r):a=I.isURLSearchParams(n)?n.toString():new Cf(n,r).toString(i),a){const s=e.indexOf("#");s!==-1&&(e=e.slice(0,s)),e+=(e.indexOf("?")===-1?"?":"&")+a}return e}class kh{constructor(){this.handlers=[]}use(n,r,i){return this.handlers.push({fulfilled:n,rejected:r,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(n){this.handlers[n]&&(this.handlers[n]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(n){I.forEach(this.handlers,function(i){i!==null&&n(i)})}}const Xy={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},g2=typeof URLSearchParams<"u"?URLSearchParams:Cf,y2=typeof FormData<"u"?FormData:null,v2=typeof Blob<"u"?Blob:null,x2={isBrowser:!0,classes:{URLSearchParams:g2,FormData:y2,Blob:v2},protocols:["http","https","file","blob","url","data"]},Ef=typeof window<"u"&&typeof document<"u",ec=typeof navigator=="object"&&navigator||void 0,_2=Ef&&(!ec||["ReactNative","NativeScript","NS"].indexOf(ec.product)<0),w2=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",b2=Ef&&window.location.href||"http://localhost",k2=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Ef,hasStandardBrowserEnv:_2,hasStandardBrowserWebWorkerEnv:w2,navigator:ec,origin:b2},Symbol.toStringTag,{value:"Module"})),Be={...k2,...x2};function S2(e,n){return rl(e,new Be.classes.URLSearchParams,{visitor:function(r,i,o,a){return Be.isNode&&I.isBuffer(r)?(this.append(i,r.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...n})}function j2(e){return I.matchAll(/\w+|\[(\w*)]/g,e).map(n=>n[0]==="[]"?"":n[1]||n[0])}function N2(e){const n={},r=Object.keys(e);let i;const o=r.length;let a;for(i=0;i=r.length;return s=!s&&I.isArray(o)?o.length:s,f?(I.hasOwnProp(o,s)?o[s]=[o[s],i]:o[s]=i,!l):((!o[s]||!I.isObject(o[s]))&&(o[s]=[]),n(r,i,o[s],a)&&I.isArray(o[s])&&(o[s]=N2(o[s])),!l)}if(I.isFormData(e)&&I.isFunction(e.entries)){const r={};return I.forEachEntry(e,(i,o)=>{n(j2(i),o,r,0)}),r}return null}function C2(e,n,r){if(I.isString(e))try{return(n||JSON.parse)(e),I.trim(e)}catch(i){if(i.name!=="SyntaxError")throw i}return(r||JSON.stringify)(e)}const Bo={transitional:Xy,adapter:["xhr","http","fetch"],transformRequest:[function(n,r){const i=r.getContentType()||"",o=i.indexOf("application/json")>-1,a=I.isObject(n);if(a&&I.isHTMLForm(n)&&(n=new FormData(n)),I.isFormData(n))return o?JSON.stringify(Yy(n)):n;if(I.isArrayBuffer(n)||I.isBuffer(n)||I.isStream(n)||I.isFile(n)||I.isBlob(n)||I.isReadableStream(n))return n;if(I.isArrayBufferView(n))return n.buffer;if(I.isURLSearchParams(n))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),n.toString();let l;if(a){if(i.indexOf("application/x-www-form-urlencoded")>-1)return S2(n,this.formSerializer).toString();if((l=I.isFileList(n))||i.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return rl(l?{"files[]":n}:n,f&&new f,this.formSerializer)}}return a||o?(r.setContentType("application/json",!1),C2(n)):n}],transformResponse:[function(n){const r=this.transitional||Bo.transitional,i=r&&r.forcedJSONParsing,o=this.responseType==="json";if(I.isResponse(n)||I.isReadableStream(n))return n;if(n&&I.isString(n)&&(i&&!this.responseType||o)){const s=!(r&&r.silentJSONParsing)&&o;try{return JSON.parse(n,this.parseReviver)}catch(l){if(s)throw l.name==="SyntaxError"?Z.from(l,Z.ERR_BAD_RESPONSE,this,null,this.response):l}}return n}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Be.classes.FormData,Blob:Be.classes.Blob},validateStatus:function(n){return n>=200&&n<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};I.forEach(["delete","get","head","post","put","patch"],e=>{Bo.headers[e]={}});const E2=I.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),T2=e=>{const n={};let r,i,o;return e&&e.split(` -`).forEach(function(s){o=s.indexOf(":"),r=s.substring(0,o).trim().toLowerCase(),i=s.substring(o+1).trim(),!(!r||n[r]&&E2[r])&&(r==="set-cookie"?n[r]?n[r].push(i):n[r]=[i]:n[r]=n[r]?n[r]+", "+i:i)}),n},Sh=Symbol("internals");function Ai(e){return e&&String(e).trim().toLowerCase()}function La(e){return e===!1||e==null?e:I.isArray(e)?e.map(La):String(e)}function A2(e){const n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=r.exec(e);)n[i[1]]=i[2];return n}const P2=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Bl(e,n,r,i,o){if(I.isFunction(i))return i.call(this,n,r);if(o&&(n=r),!!I.isString(n)){if(I.isString(i))return n.indexOf(i)!==-1;if(I.isRegExp(i))return i.test(n)}}function R2(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(n,r,i)=>r.toUpperCase()+i)}function M2(e,n){const r=I.toCamelCase(" "+n);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+r,{value:function(o,a,s){return this[i].call(this,n,o,a,s)},configurable:!0})})}let it=class{constructor(n){n&&this.set(n)}set(n,r,i){const o=this;function a(l,f,u){const h=Ai(f);if(!h)throw new Error("header name must be a non-empty string");const d=I.findKey(o,h);(!d||o[d]===void 0||u===!0||u===void 0&&o[d]!==!1)&&(o[d||f]=La(l))}const s=(l,f)=>I.forEach(l,(u,h)=>a(u,h,f));if(I.isPlainObject(n)||n instanceof this.constructor)s(n,r);else if(I.isString(n)&&(n=n.trim())&&!P2(n))s(T2(n),r);else if(I.isObject(n)&&I.isIterable(n)){let l={},f,u;for(const h of n){if(!I.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[u=h[0]]=(f=l[u])?I.isArray(f)?[...f,h[1]]:[f,h[1]]:h[1]}s(l,r)}else n!=null&&a(r,n,i);return this}get(n,r){if(n=Ai(n),n){const i=I.findKey(this,n);if(i){const o=this[i];if(!r)return o;if(r===!0)return A2(o);if(I.isFunction(r))return r.call(this,o,i);if(I.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(n,r){if(n=Ai(n),n){const i=I.findKey(this,n);return!!(i&&this[i]!==void 0&&(!r||Bl(this,this[i],i,r)))}return!1}delete(n,r){const i=this;let o=!1;function a(s){if(s=Ai(s),s){const l=I.findKey(i,s);l&&(!r||Bl(i,i[l],l,r))&&(delete i[l],o=!0)}}return I.isArray(n)?n.forEach(a):a(n),o}clear(n){const r=Object.keys(this);let i=r.length,o=!1;for(;i--;){const a=r[i];(!n||Bl(this,this[a],a,n,!0))&&(delete this[a],o=!0)}return o}normalize(n){const r=this,i={};return I.forEach(this,(o,a)=>{const s=I.findKey(i,a);if(s){r[s]=La(o),delete r[a];return}const l=n?R2(a):String(a).trim();l!==a&&delete r[a],r[l]=La(o),i[l]=!0}),this}concat(...n){return this.constructor.concat(this,...n)}toJSON(n){const r=Object.create(null);return I.forEach(this,(i,o)=>{i!=null&&i!==!1&&(r[o]=n&&I.isArray(i)?i.join(", "):i)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([n,r])=>n+": "+r).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(n){return n instanceof this?n:new this(n)}static concat(n,...r){const i=new this(n);return r.forEach(o=>i.set(o)),i}static accessor(n){const i=(this[Sh]=this[Sh]={accessors:{}}).accessors,o=this.prototype;function a(s){const l=Ai(s);i[l]||(M2(o,s),i[l]=!0)}return I.isArray(n)?n.forEach(a):a(n),this}};it.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);I.reduceDescriptors(it.prototype,({value:e},n)=>{let r=n[0].toUpperCase()+n.slice(1);return{get:()=>e,set(i){this[r]=i}}});I.freezeMethods(it);function Hl(e,n){const r=this||Bo,i=n||r,o=it.from(i.headers);let a=i.data;return I.forEach(e,function(l){a=l.call(r,a,o.normalize(),n?n.status:void 0)}),o.normalize(),a}function Qy(e){return!!(e&&e.__CANCEL__)}function vi(e,n,r){Z.call(this,e??"canceled",Z.ERR_CANCELED,n,r),this.name="CanceledError"}I.inherits(vi,Z,{__CANCEL__:!0});function Ky(e,n,r){const i=r.config.validateStatus;!r.status||!i||i(r.status)?e(r):n(new Z("Request failed with status code "+r.status,[Z.ERR_BAD_REQUEST,Z.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function O2(e){const n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return n&&n[1]||""}function z2(e,n){e=e||10;const r=new Array(e),i=new Array(e);let o=0,a=0,s;return n=n!==void 0?n:1e3,function(f){const u=Date.now(),h=i[a];s||(s=u),r[o]=f,i[o]=u;let d=a,p=0;for(;d!==o;)p+=r[d++],d=d%e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),u-s{r=h,o=null,a&&(clearTimeout(a),a=null),e(...u)};return[(...u)=>{const h=Date.now(),d=h-r;d>=i?s(u,h):(o=u,a||(a=setTimeout(()=>{a=null,s(o)},i-d)))},()=>o&&s(o)]}const xs=(e,n,r=3)=>{let i=0;const o=z2(50,250);return F2(a=>{const s=a.loaded,l=a.lengthComputable?a.total:void 0,f=s-i,u=o(f),h=s<=l;i=s;const d={loaded:s,total:l,progress:l?s/l:void 0,bytes:f,rate:u||void 0,estimated:u&&l&&h?(l-s)/u:void 0,event:a,lengthComputable:l!=null,[n?"download":"upload"]:!0};e(d)},r)},jh=(e,n)=>{const r=e!=null;return[i=>n[0]({lengthComputable:r,total:e,loaded:i}),n[1]]},Nh=e=>(...n)=>I.asap(()=>e(...n)),$2=Be.hasStandardBrowserEnv?((e,n)=>r=>(r=new URL(r,Be.origin),e.protocol===r.protocol&&e.host===r.host&&(n||e.port===r.port)))(new URL(Be.origin),Be.navigator&&/(msie|trident)/i.test(Be.navigator.userAgent)):()=>!0,D2=Be.hasStandardBrowserEnv?{write(e,n,r,i,o,a,s){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(n)}`];I.isNumber(r)&&l.push(`expires=${new Date(r).toUTCString()}`),I.isString(i)&&l.push(`path=${i}`),I.isString(o)&&l.push(`domain=${o}`),a===!0&&l.push("secure"),I.isString(s)&&l.push(`SameSite=${s}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const n=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return n?decodeURIComponent(n[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function I2(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function L2(e,n){return n?e.replace(/\/?\/$/,"")+"/"+n.replace(/^\/+/,""):e}function Jy(e,n,r){let i=!I2(n);return e&&(i||r==!1)?L2(e,n):n}const Ch=e=>e instanceof it?{...e}:e;function br(e,n){n=n||{};const r={};function i(u,h,d,p){return I.isPlainObject(u)&&I.isPlainObject(h)?I.merge.call({caseless:p},u,h):I.isPlainObject(h)?I.merge({},h):I.isArray(h)?h.slice():h}function o(u,h,d,p){if(I.isUndefined(h)){if(!I.isUndefined(u))return i(void 0,u,d,p)}else return i(u,h,d,p)}function a(u,h){if(!I.isUndefined(h))return i(void 0,h)}function s(u,h){if(I.isUndefined(h)){if(!I.isUndefined(u))return i(void 0,u)}else return i(void 0,h)}function l(u,h,d){if(d in n)return i(u,h);if(d in e)return i(void 0,u)}const f={url:a,method:a,data:a,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(u,h,d)=>o(Ch(u),Ch(h),d,!0)};return I.forEach(Object.keys({...e,...n}),function(h){const d=f[h]||o,p=d(e[h],n[h],h);I.isUndefined(p)&&d!==l||(r[h]=p)}),r}const Zy=e=>{const n=br({},e);let{data:r,withXSRFToken:i,xsrfHeaderName:o,xsrfCookieName:a,headers:s,auth:l}=n;if(n.headers=s=it.from(s),n.url=Gy(Jy(n.baseURL,n.url,n.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),I.isFormData(r)){if(Be.hasStandardBrowserEnv||Be.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(I.isFunction(r.getHeaders)){const f=r.getHeaders(),u=["content-type","content-length"];Object.entries(f).forEach(([h,d])=>{u.includes(h.toLowerCase())&&s.set(h,d)})}}if(Be.hasStandardBrowserEnv&&(i&&I.isFunction(i)&&(i=i(n)),i||i!==!1&&$2(n.url))){const f=o&&a&&D2.read(a);f&&s.set(o,f)}return n},U2=typeof XMLHttpRequest<"u",B2=U2&&function(e){return new Promise(function(r,i){const o=Zy(e);let a=o.data;const s=it.from(o.headers).normalize();let{responseType:l,onUploadProgress:f,onDownloadProgress:u}=o,h,d,p,y,g;function x(){y&&y(),g&&g(),o.cancelToken&&o.cancelToken.unsubscribe(h),o.signal&&o.signal.removeEventListener("abort",h)}let _=new XMLHttpRequest;_.open(o.method.toUpperCase(),o.url,!0),_.timeout=o.timeout;function m(){if(!_)return;const w=it.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),S={data:!l||l==="text"||l==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:w,config:e,request:_};Ky(function(N){r(N),x()},function(N){i(N),x()},S),_=null}"onloadend"in _?_.onloadend=m:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(m)},_.onabort=function(){_&&(i(new Z("Request aborted",Z.ECONNABORTED,e,_)),_=null)},_.onerror=function(b){const S=b&&b.message?b.message:"Network Error",k=new Z(S,Z.ERR_NETWORK,e,_);k.event=b||null,i(k),_=null},_.ontimeout=function(){let b=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded";const S=o.transitional||Xy;o.timeoutErrorMessage&&(b=o.timeoutErrorMessage),i(new Z(b,S.clarifyTimeoutError?Z.ETIMEDOUT:Z.ECONNABORTED,e,_)),_=null},a===void 0&&s.setContentType(null),"setRequestHeader"in _&&I.forEach(s.toJSON(),function(b,S){_.setRequestHeader(S,b)}),I.isUndefined(o.withCredentials)||(_.withCredentials=!!o.withCredentials),l&&l!=="json"&&(_.responseType=o.responseType),u&&([p,g]=xs(u,!0),_.addEventListener("progress",p)),f&&_.upload&&([d,y]=xs(f),_.upload.addEventListener("progress",d),_.upload.addEventListener("loadend",y)),(o.cancelToken||o.signal)&&(h=w=>{_&&(i(!w||w.type?new vi(null,e,_):w),_.abort(),_=null)},o.cancelToken&&o.cancelToken.subscribe(h),o.signal&&(o.signal.aborted?h():o.signal.addEventListener("abort",h)));const v=O2(o.url);if(v&&Be.protocols.indexOf(v)===-1){i(new Z("Unsupported protocol "+v+":",Z.ERR_BAD_REQUEST,e));return}_.send(a||null)})},H2=(e,n)=>{const{length:r}=e=e?e.filter(Boolean):[];if(n||r){let i=new AbortController,o;const a=function(u){if(!o){o=!0,l();const h=u instanceof Error?u:this.reason;i.abort(h instanceof Z?h:new vi(h instanceof Error?h.message:h))}};let s=n&&setTimeout(()=>{s=null,a(new Z(`timeout ${n} of ms exceeded`,Z.ETIMEDOUT))},n);const l=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(a):u.removeEventListener("abort",a)}),e=null)};e.forEach(u=>u.addEventListener("abort",a));const{signal:f}=i;return f.unsubscribe=()=>I.asap(l),f}},V2=function*(e,n){let r=e.byteLength;if(r{const o=W2(e,n);let a=0,s,l=f=>{s||(s=!0,i&&i(f))};return new ReadableStream({async pull(f){try{const{done:u,value:h}=await o.next();if(u){l(),f.close();return}let d=h.byteLength;if(r){let p=a+=d;r(p)}f.enqueue(new Uint8Array(h))}catch(u){throw l(u),u}},cancel(f){return l(f),o.return()}},{highWaterMark:2})},Th=64*1024,{isFunction:ga}=I,G2=(({Request:e,Response:n})=>({Request:e,Response:n}))(I.global),{ReadableStream:Ah,TextEncoder:Ph}=I.global,Rh=(e,...n)=>{try{return!!e(...n)}catch{return!1}},X2=e=>{e=I.merge.call({skipUndefined:!0},G2,e);const{fetch:n,Request:r,Response:i}=e,o=n?ga(n):typeof fetch=="function",a=ga(r),s=ga(i);if(!o)return!1;const l=o&&ga(Ah),f=o&&(typeof Ph=="function"?(g=>x=>g.encode(x))(new Ph):async g=>new Uint8Array(await new r(g).arrayBuffer())),u=a&&l&&Rh(()=>{let g=!1;const x=new r(Be.origin,{body:new Ah,method:"POST",get duplex(){return g=!0,"half"}}).headers.has("Content-Type");return g&&!x}),h=s&&l&&Rh(()=>I.isReadableStream(new i("").body)),d={stream:h&&(g=>g.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(g=>{!d[g]&&(d[g]=(x,_)=>{let m=x&&x[g];if(m)return m.call(x);throw new Z(`Response type '${g}' is not supported`,Z.ERR_NOT_SUPPORT,_)})});const p=async g=>{if(g==null)return 0;if(I.isBlob(g))return g.size;if(I.isSpecCompliantForm(g))return(await new r(Be.origin,{method:"POST",body:g}).arrayBuffer()).byteLength;if(I.isArrayBufferView(g)||I.isArrayBuffer(g))return g.byteLength;if(I.isURLSearchParams(g)&&(g=g+""),I.isString(g))return(await f(g)).byteLength},y=async(g,x)=>{const _=I.toFiniteNumber(g.getContentLength());return _??p(x)};return async g=>{let{url:x,method:_,data:m,signal:v,cancelToken:w,timeout:b,onDownloadProgress:S,onUploadProgress:k,responseType:N,headers:A,withCredentials:$="same-origin",fetchOptions:j}=Zy(g),R=n||fetch;N=N?(N+"").toLowerCase():"text";let T=H2([v,w&&w.toAbortSignal()],b),P=null;const C=T&&T.unsubscribe&&(()=>{T.unsubscribe()});let L;try{if(k&&u&&_!=="get"&&_!=="head"&&(L=await y(A,m))!==0){let q=new r(x,{method:"POST",body:m,duplex:"half"}),X;if(I.isFormData(m)&&(X=q.headers.get("content-type"))&&A.setContentType(X),q.body){const[ne,ee]=jh(L,xs(Nh(k)));m=Eh(q.body,Th,ne,ee)}}I.isString($)||($=$?"include":"omit");const O=a&&"credentials"in r.prototype,B={...j,signal:T,method:_.toUpperCase(),headers:A.normalize().toJSON(),body:m,duplex:"half",credentials:O?$:void 0};P=a&&new r(x,B);let D=await(a?R(P,j):R(x,B));const z=h&&(N==="stream"||N==="response");if(h&&(S||z&&C)){const q={};["status","statusText","headers"].forEach(xe=>{q[xe]=D[xe]});const X=I.toFiniteNumber(D.headers.get("content-length")),[ne,ee]=S&&jh(X,xs(Nh(S),!0))||[];D=new i(Eh(D.body,Th,ne,()=>{ee&&ee(),C&&C()}),q)}N=N||"text";let U=await d[I.findKey(d,N)||"text"](D,g);return!z&&C&&C(),await new Promise((q,X)=>{Ky(q,X,{data:U,headers:it.from(D.headers),status:D.status,statusText:D.statusText,config:g,request:P})})}catch(O){throw C&&C(),O&&O.name==="TypeError"&&/Load failed|fetch/i.test(O.message)?Object.assign(new Z("Network Error",Z.ERR_NETWORK,g,P),{cause:O.cause||O}):Z.from(O,O&&O.code,g,P)}}},Y2=new Map,e0=e=>{let n=e&&e.env||{};const{fetch:r,Request:i,Response:o}=n,a=[i,o,r];let s=a.length,l=s,f,u,h=Y2;for(;l--;)f=a[l],u=h.get(f),u===void 0&&h.set(f,u=l?new Map:X2(n)),h=u;return u};e0();const Tf={http:d2,xhr:B2,fetch:{get:e0}};I.forEach(Tf,(e,n)=>{if(e){try{Object.defineProperty(e,"name",{value:n})}catch{}Object.defineProperty(e,"adapterName",{value:n})}});const Mh=e=>`- ${e}`,Q2=e=>I.isFunction(e)||e===null||e===!1;function K2(e,n){e=I.isArray(e)?e:[e];const{length:r}=e;let i,o;const a={};for(let s=0;s`adapter ${f} `+(u===!1?"is not supported by the environment":"is not available in the build"));let l=r?s.length>1?`since : -`+s.map(Mh).join(` -`):" "+Mh(s[0]):"as no adapter specified";throw new Z("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return o}const t0={getAdapter:K2,adapters:Tf};function Vl(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new vi(null,e)}function Oh(e){return Vl(e),e.headers=it.from(e.headers),e.data=Hl.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),t0.getAdapter(e.adapter||Bo.adapter,e)(e).then(function(i){return Vl(e),i.data=Hl.call(e,e.transformResponse,i),i.headers=it.from(i.headers),i},function(i){return Qy(i)||(Vl(e),i&&i.response&&(i.response.data=Hl.call(e,e.transformResponse,i.response),i.response.headers=it.from(i.response.headers))),Promise.reject(i)})}const n0="1.13.2",il={};["object","boolean","number","function","string","symbol"].forEach((e,n)=>{il[e]=function(i){return typeof i===e||"a"+(n<1?"n ":" ")+e}});const zh={};il.transitional=function(n,r,i){function o(a,s){return"[Axios v"+n0+"] Transitional option '"+a+"'"+s+(i?". "+i:"")}return(a,s,l)=>{if(n===!1)throw new Z(o(s," has been removed"+(r?" in "+r:"")),Z.ERR_DEPRECATED);return r&&!zh[s]&&(zh[s]=!0,console.warn(o(s," has been deprecated since v"+r+" and will be removed in the near future"))),n?n(a,s,l):!0}};il.spelling=function(n){return(r,i)=>(console.warn(`${i} is likely a misspelling of ${n}`),!0)};function J2(e,n,r){if(typeof e!="object")throw new Z("options must be an object",Z.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let o=i.length;for(;o-- >0;){const a=i[o],s=n[a];if(s){const l=e[a],f=l===void 0||s(l,a,e);if(f!==!0)throw new Z("option "+a+" must be "+f,Z.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new Z("Unknown option "+a,Z.ERR_BAD_OPTION)}}const Ua={assertOptions:J2,validators:il},Wt=Ua.validators;let pr=class{constructor(n){this.defaults=n||{},this.interceptors={request:new kh,response:new kh}}async request(n,r){try{return await this._request(n,r)}catch(i){if(i instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const a=o.stack?o.stack.replace(/^.+\n/,""):"";try{i.stack?a&&!String(i.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(i.stack+=` -`+a):i.stack=a}catch{}}throw i}}_request(n,r){typeof n=="string"?(r=r||{},r.url=n):r=n||{},r=br(this.defaults,r);const{transitional:i,paramsSerializer:o,headers:a}=r;i!==void 0&&Ua.assertOptions(i,{silentJSONParsing:Wt.transitional(Wt.boolean),forcedJSONParsing:Wt.transitional(Wt.boolean),clarifyTimeoutError:Wt.transitional(Wt.boolean)},!1),o!=null&&(I.isFunction(o)?r.paramsSerializer={serialize:o}:Ua.assertOptions(o,{encode:Wt.function,serialize:Wt.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Ua.assertOptions(r,{baseUrl:Wt.spelling("baseURL"),withXsrfToken:Wt.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let s=a&&I.merge(a.common,a[r.method]);a&&I.forEach(["delete","get","head","post","put","patch","common"],g=>{delete a[g]}),r.headers=it.concat(s,a);const l=[];let f=!0;this.interceptors.request.forEach(function(x){typeof x.runWhen=="function"&&x.runWhen(r)===!1||(f=f&&x.synchronous,l.unshift(x.fulfilled,x.rejected))});const u=[];this.interceptors.response.forEach(function(x){u.push(x.fulfilled,x.rejected)});let h,d=0,p;if(!f){const g=[Oh.bind(this),void 0];for(g.unshift(...l),g.push(...u),p=g.length,h=Promise.resolve(r);d{if(!i._listeners)return;let a=i._listeners.length;for(;a-- >0;)i._listeners[a](o);i._listeners=null}),this.promise.then=o=>{let a;const s=new Promise(l=>{i.subscribe(l),a=l}).then(o);return s.cancel=function(){i.unsubscribe(a)},s},n(function(a,s,l){i.reason||(i.reason=new vi(a,s,l),r(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(n){if(this.reason){n(this.reason);return}this._listeners?this._listeners.push(n):this._listeners=[n]}unsubscribe(n){if(!this._listeners)return;const r=this._listeners.indexOf(n);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const n=new AbortController,r=i=>{n.abort(i)};return this.subscribe(r),n.signal.unsubscribe=()=>this.unsubscribe(r),n.signal}static source(){let n;return{token:new r0(function(o){n=o}),cancel:n}}};function eb(e){return function(r){return e.apply(null,r)}}function tb(e){return I.isObject(e)&&e.isAxiosError===!0}const tc={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(tc).forEach(([e,n])=>{tc[n]=e});function i0(e){const n=new pr(e),r=zy(pr.prototype.request,n);return I.extend(r,pr.prototype,n,{allOwnKeys:!0}),I.extend(r,n,null,{allOwnKeys:!0}),r.create=function(o){return i0(br(e,o))},r}const Se=i0(Bo);Se.Axios=pr;Se.CanceledError=vi;Se.CancelToken=Z2;Se.isCancel=Qy;Se.VERSION=n0;Se.toFormData=rl;Se.AxiosError=Z;Se.Cancel=Se.CanceledError;Se.all=function(n){return Promise.all(n)};Se.spread=eb;Se.isAxiosError=tb;Se.mergeConfig=br;Se.AxiosHeaders=it;Se.formToJSON=e=>Yy(I.isHTMLForm(e)?new FormData(e):e);Se.getAdapter=t0.getAdapter;Se.HttpStatusCode=tc;Se.default=Se;const{Axios:qA,AxiosError:GA,CanceledError:XA,isCancel:YA,CancelToken:QA,VERSION:KA,all:JA,Cancel:ZA,isAxiosError:eP,spread:tP,toFormData:nP,AxiosHeaders:rP,HttpStatusCode:iP,formToJSON:oP,getAdapter:aP,mergeConfig:sP}=Se,xi="/api",je=Se.create({baseURL:xi,headers:{"Content-Type":"application/json"}}),nb=async e=>(await je.get("/data/entities",{params:e})).data,rb=async e=>(await je.get("/data/money-flows",{params:e})).data,ib=async e=>(await je.get("/data/awards",{params:e})).data,ob=async e=>(await je.get("/data/foia-targets",{params:e})).data,ab=async()=>(await je.get("/data/stats")).data,sb=async()=>(await je.get("/analysis/graph/entities")).data,lb=async()=>(await je.get("/analysis/financial/flows")).data,ub=async()=>(await je.get("/analysis/timeline")).data,cb=async e=>(await je.get("/analysis/sankey",{params:e})).data,fb=async()=>(await je.get("/analysis/intel-stack/pyramid")).data,o0=async e=>(await je.get("/analysis/intel-stack/hierarchy",{params:{entity_id:e}})).data,db=async e=>(await je.get(`/analysis/intel-stack/entity/${encodeURIComponent(e)}/detail`)).data,hb=async(e,n=20)=>(await je.get("/analysis/intel-stack/search",{params:{q:e,limit:n}})).data,pb=async()=>(await je.get("/data/version")).data,mb=async()=>(await je.post("/data/refresh")).data,gb=async(e,n,r)=>(await je.get("/search",{params:{q:e,types:n,limit:r}})).data,yb=()=>{window.open(`${xi}/export/csv/entities`,"_blank")},vb=()=>{window.open(`${xi}/export/csv/money-flows`,"_blank")},xb=()=>{window.open(`${xi}/export/csv/awards`,"_blank")},_b=()=>{window.open(`${xi}/export/json/entities`,"_blank")},wb=()=>{window.open(`${xi}/export/pdf/summary`,"_blank")},bb=async(e,n)=>(await je.post("/contribute/entity",e,{headers:{"X-GitHub-Token":n}})).data,kb=async(e,n)=>(await je.post("/contribute/money-flow",e,{headers:{"X-GitHub-Token":n}})).data,Sb=async(e,n)=>(await je.post("/contribute/award",e,{headers:{"X-GitHub-Token":n}})).data,jb=async(e,n)=>(await je.post("/contribute/foia-target",e,{headers:{"X-GitHub-Token":n}})).data,Nb=async e=>(await je.get("/contribute/validate-token",{headers:{"X-GitHub-Token":e}})).data;function ro({type:e="line",count:n=1,width:r,height:i}){return e==="card"?c.jsxs("div",{className:"skeleton-card",children:[c.jsx("div",{className:"skeleton-line",style:{width:"60%",height:"24px",marginBottom:"16px"}}),c.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"16px",marginBottom:"8px"}}),c.jsx("div",{className:"skeleton-line",style:{width:"80%",height:"16px"}})]}):e==="table"?c.jsxs("div",{className:"skeleton-table",children:[c.jsx("div",{className:"skeleton-table-header",children:[1,2,3,4,5].map(o=>c.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"20px"}},o))}),[1,2,3,4,5,6,7,8].map(o=>c.jsx("div",{className:"skeleton-table-row",children:[1,2,3,4,5].map(a=>c.jsx("div",{className:"skeleton-line",style:{width:"100%",height:"16px"}},a))},o))]}):e==="stat"?c.jsxs("div",{className:"skeleton-stat",children:[c.jsx("div",{className:"skeleton-line",style:{width:"70%",height:"14px",marginBottom:"12px"}}),c.jsx("div",{className:"skeleton-line",style:{width:"50%",height:"32px"}})]}):c.jsx(c.Fragment,{children:Array.from({length:n}).map((o,a)=>c.jsx("div",{className:"skeleton-line",style:{width:r||"100%",height:i||"16px",marginBottom:a{const e=E.useContext(a0);if(!e)throw new Error("useDataContext must be used within DataProvider");return e},Cb=({children:e,pollInterval:n=3e4})=>{const[r,i]=E.useState(0),[o,a]=E.useState(null),[s,l]=E.useState(!1),[f,u]=E.useState(!1),[h,d]=E.useState(null),p=E.useCallback(async()=>{try{const x=await pb();h===null?(d(x.version),i(x.version),a(x.last_updated),l(!1)):x.version!==r?(i(x.version),a(x.last_updated),l(!0)):l(!1)}catch(x){console.error("Error checking data version:",x)}},[r,h]),y=E.useCallback(async()=>{try{u(!0);const x=await mb();i(x.version),a(x.last_updated),l(!1),window.dispatchEvent(new CustomEvent("dataRefreshed",{detail:{version:x.version}}))}catch(x){throw console.error("Error refreshing data:",x),x}finally{u(!1)}},[]);E.useEffect(()=>{p()},[]),E.useEffect(()=>{if(n>0){const x=setInterval(()=>{p()},n);return()=>clearInterval(x)}},[p,n]),E.useEffect(()=>{const x=()=>{setTimeout(()=>{p()},100)};return window.addEventListener("popstate",x),window.addEventListener("focus",p),()=>{window.removeEventListener("popstate",x),window.removeEventListener("focus",p)}},[p]);const g={dataVersion:r,lastUpdated:o,isStale:s,isRefreshing:f,refreshData:y,checkVersion:p};return c.jsx(a0.Provider,{value:g,children:e})};function Eb(){const[e,n]=E.useState(null),[r,i]=E.useState(!0),[o,a]=E.useState(null),{dataVersion:s}=ol();E.useEffect(()=>{l()},[s]);const l=async()=>{try{a(null);const h=await ab();n(h)}catch(h){console.error("Error loading stats:",h),a("Failed to load dashboard statistics. Please try again.")}finally{i(!1)}},f=h=>h>=1e9?`$${(h/1e9).toFixed(2)}B`:h>=1e6?`$${(h/1e6).toFixed(2)}M`:h>=1e3?`$${(h/1e3).toFixed(1)}K`:`$${h.toFixed(0)}`,u=(h,d)=>{const p=h.split("-")[0],y=d.split("-")[0];return`${p} - ${y}`};return c.jsxs("div",{className:"dashboard fade-in",role:"main","aria-label":"Dashboard",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h1",{children:"Dashboard"}),c.jsx("p",{children:"Overview of UAP research data and federal spending"})]}),o&&c.jsxs("div",{className:"alert alert-error",role:"alert",children:[o,c.jsx("button",{onClick:l,className:"btn btn-secondary",style:{marginLeft:"12px",padding:"6px 12px"},children:"Retry"})]}),r?c.jsx("div",{className:"stats-grid",children:[1,2,3,4,5,6].map(h=>c.jsx("div",{className:"stat-card",children:c.jsx(ro,{type:"stat"})},h))}):c.jsxs("div",{className:"stats-grid fade-in",role:"region","aria-label":"Statistics overview",children:[c.jsxs("div",{className:"stat-card",role:"article","aria-label":"Total entities statistic",children:[c.jsx("h4",{children:"Total Entities"}),c.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_entities)||0})]}),c.jsxs("div",{className:"stat-card",role:"article","aria-label":"Money flows statistic",children:[c.jsx("h4",{children:"Money Flows"}),c.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_money_flows)||0})]}),c.jsxs("div",{className:"stat-card",role:"article","aria-label":"Federal awards statistic",children:[c.jsx("h4",{children:"Federal Awards"}),c.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_awards)||0})]}),c.jsxs("div",{className:"stat-card",role:"article","aria-label":"FOIA targets statistic",children:[c.jsx("h4",{children:"FOIA Targets"}),c.jsx("p",{className:"value","aria-live":"polite",children:(e==null?void 0:e.total_foia_targets)||0})]}),c.jsxs("div",{className:"stat-card",role:"article","aria-label":"Total spending tracked statistic",children:[c.jsx("h4",{children:"Total Spending Tracked"}),c.jsx("p",{className:"value","aria-live":"polite",children:f((e==null?void 0:e.total_money_amount)||0)})]}),c.jsxs("div",{className:"stat-card",role:"article","aria-label":"Date range statistic",children:[c.jsx("h4",{children:"Date Range"}),c.jsx("p",{className:"value","aria-live":"polite",children:e!=null&&e.date_range_start&&(e!=null&&e.date_range_end)?u(e.date_range_start,e.date_range_end):"N/A"})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Welcome to Project RawHorse"}),c.jsx("p",{children:"This application provides comprehensive access to publicly available data related to Unidentified Anomalous Phenomena (UAP) research, federal contracting, and related entities."}),c.jsx("p",{children:"Use the navigation menu to:"}),c.jsxs("ul",{children:[c.jsxs("li",{children:[c.jsx("strong",{children:"Browse:"})," Explore entities, money flows, awards, and FOIA targets"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Analysis:"})," Visualize relationships and financial networks"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Export:"})," Download data in CSV, JSON, or PDF formats"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Contribute:"})," Submit new data via automated GitHub pull requests"]})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Data Sources"}),c.jsx("p",{children:"Data is sourced from official public databases and independent research:"}),c.jsxs("div",{style:{marginBottom:"16px"},children:[c.jsx("h4",{style:{fontSize:"0.95rem",marginBottom:"8px",color:"var(--text-secondary)"},children:"Research Attribution"}),c.jsx("ul",{children:c.jsxs("li",{children:[c.jsx("strong",{children:c.jsx("a",{href:"https://www.youtube.com/@uapgerb",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"UAPGerb"})})," - Entity relationships, organizational structures, and FOIA targets derived from UAP legacy program research"]})})]}),c.jsxs("div",{children:[c.jsx("h4",{style:{fontSize:"0.95rem",marginBottom:"8px",color:"var(--text-secondary)"},children:"Government Databases"}),c.jsxs("ul",{children:[c.jsx("li",{children:"USAspending.gov - Federal spending and contracts"}),c.jsx("li",{children:"SAM.gov - Entity registrations and awards"}),c.jsx("li",{children:"Federal agency FOIA reading rooms"}),c.jsx("li",{children:"DOE, NASA, DHS, and other public databases"})]})]})]}),c.jsxs("div",{className:"card support-card",children:[c.jsx("div",{className:"support-header",children:c.jsx("h3",{children:"💜 Support This Project"})}),c.jsx("p",{children:"Project RawHorse is open-source and freely available. If you find this tool valuable for UAP research and transparency advocacy, please consider supporting our work."}),c.jsx("p",{children:"Your donations help fund development, server costs, and support our broader research into advanced energy systems and LENR fusion experiments."}),c.jsxs("div",{className:"support-actions",children:[c.jsx("a",{href:"https://conscious.energy/donations/",target:"_blank",rel:"noopener noreferrer",className:"btn btn-primary support-btn",children:"❤️ Support via Donations"}),c.jsx("a",{href:"https://github.com/ConsciousEnergy/ProjectRawHorse",target:"_blank",rel:"noopener noreferrer",className:"btn btn-secondary",children:"⭐ Star on GitHub"})]}),c.jsx("p",{className:"support-note",children:c.jsxs("small",{children:["Donations accepted via Bitcoin, PayPal, and GoFundMe •",c.jsx("a",{href:"https://conscious.energy",target:"_blank",rel:"noopener noreferrer",children:" Learn more about Conscious Energy"})]})})]})]})}function Tb(e,n){const[r,i]=E.useState(e);return E.useEffect(()=>{const o=setTimeout(()=>i(e),n);return()=>clearTimeout(o)},[e,n]),r}function tr({text:e,highlight:n}){if(!n.trim()||!e)return c.jsx(c.Fragment,{children:e});const r=new RegExp(`(${n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi"),i=e.split(r);return c.jsx(c.Fragment,{children:i.map((o,a)=>r.test(o)?c.jsx("mark",{className:"search-highlight",children:o},a):c.jsx("span",{children:o},a))})}function Ab(){const[e,n]=Py(),r=Zs(),{dataVersion:i}=ol(),[o,a]=E.useState("entities"),[s,l]=E.useState(""),[f,u]=E.useState(!1),[h,d]=E.useState(1),[p,y]=E.useState(25),[g,x]=E.useState({key:"",direction:"asc"}),[_,m]=E.useState([]),[v,w]=E.useState([]),[b,S]=E.useState(""),[k,N]=E.useState(""),[A,$]=E.useState(""),[j,R]=E.useState(""),[T,P]=E.useState(""),[C,L]=E.useState(!1),[O,B]=E.useState([]),[D,z]=E.useState([]),[U,q]=E.useState([]),[X,ne]=E.useState([]),[ee,xe]=E.useState([]),G=Tb(s,300),ie=["Corporation","Government Agency","Individual","Research Institution","Facility","Program","Organization","Investment Firm"],Ee=[{value:1,label:"Control Group"},{value:2,label:"Administrators"},{value:3,label:"FFRDCs"},{value:4,label:"Prime Contractors"},{value:5,label:"Facilities"},{value:6,label:"Programs"}];E.useEffect(()=>{const F=localStorage.getItem("recentSearches");F&&B(JSON.parse(F))},[]);const rn=E.useCallback(F=>{if(!F.trim())return;const J=[F,...O.filter(W=>W!==F)].slice(0,5);B(J),localStorage.setItem("recentSearches",JSON.stringify(J))},[O]),Bt=e.get("highlight")??"";E.useEffect(()=>{const F=e.get("tab"),J=e.get("search"),W=e.get("type"),K=e.get("page");F&&["entities","money-flows","awards","foia"].includes(F)&&a(F),J&&l(J),W&&m([W]),K&&d(parseInt(K))},[e]),E.useEffect(()=>{if(!Bt||f)return;const F=o==="entities"?"row-entity-":o==="money-flows"?"row-flow-":o==="awards"?"row-award-":o==="foia"?"row-foia-":"";if(!F)return;const J=F+Bt,W=document.getElementById(J);if(!W)return;W.scrollIntoView({behavior:"smooth",block:"nearest"}),W.classList.add("row-highlight-flash");const K=setTimeout(()=>{W.classList.remove("row-highlight-flash"),n(se=>(se.delete("highlight"),se))},2500);return()=>clearTimeout(K)},[Bt,o,f,n]),E.useEffect(()=>{_i(),G&&n(F=>(F.set("search",G),F))},[G,o,_,v,b,k,A,j,T,h,i]);const Ct=()=>{const F={limit:p,offset:(h-1)*p};return G.trim()&&(F.search=G),o==="entities"&&(_.length===1&&(F.entity_type=_[0]),v.length>0&&(F.intel_stack_level=v[0])),(o==="money-flows"||o==="awards")&&b&&(F.min_amount=parseFloat(b)),(o==="money-flows"||o==="awards")&&k&&(F.max_amount=parseFloat(k)),(o==="money-flows"||o==="awards")&&A&&(F.start_date=A),(o==="money-flows"||o==="awards")&&j&&(F.end_date=j),(o==="awards"||o==="foia")&&T&&(F.agency=T),F},_i=async()=>{u(!0);try{const F=Ct();switch(o){case"entities":const J=await nb(F);z(J);break;case"money-flows":const W=await rb(F);q(W);break;case"awards":const K=await ib(F);ne(K);break;case"foia":const se=await ob(F);xe(se);break}G.trim()&&rn(G)}catch(F){console.error("Error loading data:",F)}finally{u(!1)}},gt=F=>{x(J=>({key:F,direction:J.key===F&&J.direction==="asc"?"desc":"asc"}))},_e=E.useMemo(()=>{if(!g.key)return{entities:D,moneyFlows:U,awards:X,foiaTargets:ee};const F=(J,W)=>{const K=J[g.key],se=W[g.key];if(K==null)return 1;if(se==null)return-1;if(typeof K=="number"&&typeof se=="number")return g.direction==="asc"?K-se:se-K;const En=String(K).toLowerCase(),at=String(se).toLowerCase();return g.direction==="asc"?En.localeCompare(at):at.localeCompare(En)};return{entities:[...D].sort(F),moneyFlows:[...U].sort(F),awards:[...X].sort(F),foiaTargets:[...ee].sort(F)}},[D,U,X,ee,g]),on=()=>{l(""),m([]),w([]),S(""),N(""),$(""),R(""),P(""),d(1),n({})},jn=F=>{a(F),d(1),x({key:"",direction:"asc"}),n(J=>(J.set("tab",F),J))},Nn=F=>{m(J=>J.includes(F)?J.filter(W=>W!==F):[...J,F]),d(1)},Go=F=>{w(J=>J.includes(F)?J.filter(W=>W!==F):[...J,F]),d(1)},wi=(F,J)=>{switch(F){case"entityType":m(W=>W.filter(K=>K!==J));break;case"intelLevel":w(W=>W.filter(K=>K!==J));break;case"minAmount":S("");break;case"maxAmount":N("");break;case"startDate":$("");break;case"endDate":R("");break;case"agency":P("");break}d(1)},Tr=F=>F?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(F):"N/A",be=({column:F,label:J})=>{const W=()=>g.key!==F?"none":g.direction==="asc"?"ascending":"descending";return c.jsxs("th",{onClick:()=>gt(F),className:"sortable-header",role:"columnheader","aria-sort":W(),children:[J,c.jsx("span",{className:"sort-indicator",children:g.key===F?g.direction==="asc"?" ▲":" ▼":" ⇅"})]})},Cn=E.useMemo(()=>{const F=[];return _.forEach(J=>{F.push({type:"entityType",value:J,label:`Type: ${J}`})}),v.forEach(J=>{const W=Ee.find(K=>K.value===J);F.push({type:"intelLevel",value:J,label:`Intel: ${(W==null?void 0:W.label)||J}`})}),b&&F.push({type:"minAmount",value:b,label:`Min: $${parseInt(b).toLocaleString()}`}),k&&F.push({type:"maxAmount",value:k,label:`Max: $${parseInt(k).toLocaleString()}`}),A&&F.push({type:"startDate",value:A,label:`From: ${A}`}),j&&F.push({type:"endDate",value:j,label:`To: ${j}`}),T&&F.push({type:"agency",value:T,label:`Agency: ${T}`}),F},[_,v,b,k,A,j,T]),Ht=()=>{switch(o){case"entities":return _e.entities.length;case"money-flows":return _e.moneyFlows.length;case"awards":return _e.awards.length;case"foia":return _e.foiaTargets.length;default:return 0}};return c.jsxs("div",{className:"browse",role:"main","aria-label":"Browse page",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h1",{children:"Browse Data"}),c.jsx("p",{children:"Search and explore entities, money flows, awards, and FOIA targets"})]}),c.jsxs("div",{className:"search-section",children:[c.jsxs("div",{className:"search-input-wrapper",children:[c.jsx("span",{className:"search-icon",children:"🔍"}),c.jsx("input",{type:"text",placeholder:"Search by name, keyword, or ID... (auto-search enabled)",value:s,onChange:F=>l(F.target.value),className:"search-input-enhanced","aria-label":"Search database"}),s&&c.jsx("button",{className:"clear-search-btn",onClick:()=>l(""),"aria-label":"Clear search",children:"✕"})]}),c.jsxs("div",{className:"search-actions",children:[c.jsx("button",{onClick:()=>L(!C),className:`btn btn-secondary ${C?"active":""}`,children:C?"▼ Filters":"▶ Filters"}),(s||Cn.length>0)&&c.jsx("button",{onClick:on,className:"btn btn-outline",children:"Clear All"})]}),!s&&O.length>0&&c.jsxs("div",{className:"recent-searches",children:[c.jsx("span",{className:"recent-label",children:"Recent:"}),O.map((F,J)=>c.jsx("button",{className:"recent-search-chip",onClick:()=>l(F),children:F},J))]}),!s&&c.jsxs("div",{className:"quick-searches",children:[c.jsx("span",{className:"quick-label",children:"Quick:"}),c.jsx("button",{className:"quick-chip",onClick:()=>{a("entities"),m(["Corporation"])},children:"Corporations"}),c.jsx("button",{className:"quick-chip",onClick:()=>{a("entities"),m(["Government Agency"])},children:"Gov Agencies"}),c.jsx("button",{className:"quick-chip",onClick:()=>{a("entities"),m(["Individual"])},children:"Individuals"}),c.jsx("button",{className:"quick-chip",onClick:()=>{a("money-flows"),S("1000000")},children:"Flows > $1M"}),c.jsx("button",{className:"quick-chip",onClick:()=>{a("foia")},children:"FOIA Targets"})]})]}),Cn.length>0&&c.jsx("div",{className:"active-filters",children:Cn.map((F,J)=>c.jsxs("span",{className:"filter-chip",children:[F.label,c.jsx("button",{className:"remove-filter",onClick:()=>wi(F.type,F.value),"aria-label":`Remove ${F.label} filter`,children:"✕"})]},J))}),c.jsxs("div",{className:"tabs",role:"tablist","aria-label":"Data type tabs",children:[c.jsxs("button",{className:o==="entities"?"active":"",onClick:()=>jn("entities"),role:"tab","aria-selected":o==="entities",children:["Entities",c.jsx("span",{className:"tab-count",children:o==="entities"?Ht():""})]}),c.jsxs("button",{className:o==="money-flows"?"active":"",onClick:()=>jn("money-flows"),role:"tab","aria-selected":o==="money-flows",children:["Money Flows",c.jsx("span",{className:"tab-count",children:o==="money-flows"?Ht():""})]}),c.jsxs("button",{className:o==="awards"?"active":"",onClick:()=>jn("awards"),role:"tab","aria-selected":o==="awards",children:["Awards",c.jsx("span",{className:"tab-count",children:o==="awards"?Ht():""})]}),c.jsxs("button",{className:o==="foia"?"active":"",onClick:()=>jn("foia"),role:"tab","aria-selected":o==="foia",children:["FOIA Targets",c.jsx("span",{className:"tab-count",children:o==="foia"?Ht():""})]})]}),C&&c.jsxs("div",{className:"filters-panel",children:[c.jsx("h4",{children:"Advanced Filters"}),o==="entities"&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"filter-group",children:[c.jsx("label",{children:"Entity Types:"}),c.jsx("div",{className:"filter-checkboxes",children:ie.map(F=>c.jsxs("label",{className:"checkbox-label",children:[c.jsx("input",{type:"checkbox",checked:_.includes(F),onChange:()=>Nn(F)}),F]},F))})]}),c.jsxs("div",{className:"filter-group",children:[c.jsx("label",{children:"Intel Stack Level:"}),c.jsx("div",{className:"filter-checkboxes",children:Ee.map(F=>c.jsxs("label",{className:"checkbox-label",children:[c.jsx("input",{type:"checkbox",checked:v.includes(F.value),onChange:()=>Go(F.value)}),F.value,". ",F.label]},F.value))})]})]}),(o==="money-flows"||o==="awards")&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"filter-group",children:[c.jsx("label",{children:"Amount Range:"}),c.jsxs("div",{className:"range-inputs",children:[c.jsx("input",{type:"number",placeholder:"Min ($)",value:b,onChange:F=>{S(F.target.value),d(1)}}),c.jsx("span",{children:"to"}),c.jsx("input",{type:"number",placeholder:"Max ($)",value:k,onChange:F=>{N(F.target.value),d(1)}})]})]}),c.jsxs("div",{className:"filter-group",children:[c.jsx("label",{children:"Date Range:"}),c.jsxs("div",{className:"range-inputs",children:[c.jsx("input",{type:"date",value:A,onChange:F=>{$(F.target.value),d(1)}}),c.jsx("span",{children:"to"}),c.jsx("input",{type:"date",value:j,onChange:F=>{R(F.target.value),d(1)}})]})]})]}),(o==="awards"||o==="foia")&&c.jsxs("div",{className:"filter-group",children:[c.jsx("label",{children:"Agency:"}),c.jsx("input",{type:"text",placeholder:"Filter by agency name...",value:T,onChange:F=>{P(F.target.value),d(1)}})]})]}),c.jsxs("div",{className:"results-bar",children:[c.jsx("div",{className:"results-count",children:f?c.jsx("span",{children:"Loading..."}):c.jsxs("span",{children:["Showing ",Ht()," result",Ht()!==1?"s":"",G&&` for "${G}"`]})}),c.jsxs("div",{className:"results-controls",children:[c.jsxs("label",{children:["Show:",c.jsxs("select",{value:p,onChange:F=>{y(parseInt(F.target.value)),d(1)},children:[c.jsx("option",{value:10,children:"10"}),c.jsx("option",{value:25,children:"25"}),c.jsx("option",{value:50,children:"50"}),c.jsx("option",{value:100,children:"100"})]})]}),c.jsxs("div",{className:"pagination",children:[c.jsx("button",{disabled:h===1,onClick:()=>d(F=>F-1),className:"btn btn-sm",children:"← Prev"}),c.jsxs("span",{className:"page-info",children:["Page ",h]}),c.jsx("button",{disabled:Ht()d(F=>F+1),className:"btn btn-sm",children:"Next →"})]})]})]}),c.jsx("div",{className:"card",children:f?c.jsx(ro,{type:"table"}):c.jsxs("div",{className:"fade-in",role:"tabpanel",children:[o==="entities"&&c.jsx(c.Fragment,{children:_e.entities.length===0?c.jsxs("div",{className:"empty-state",children:[c.jsx("div",{className:"empty-icon",children:"🔍"}),c.jsx("h3",{children:"No entities found"}),c.jsx("p",{children:"Try adjusting your search or filters, or browse all entities."}),c.jsx("button",{className:"btn btn-primary",onClick:on,children:"Clear Filters"})]}):c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Entities table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx(be,{column:"display_name",label:"Display Name"}),c.jsx(be,{column:"entity_type",label:"Type"}),c.jsx(be,{column:"intel_stack_level",label:"Intel Level"}),c.jsx("th",{children:"Actions"})]})}),c.jsx("tbody",{children:_e.entities.map(F=>{var J;return c.jsxs("tr",{id:`row-entity-${F.entity_id}`,className:"clickable-row",children:[c.jsx("td",{children:c.jsx(tr,{text:F.display_name,highlight:G})}),c.jsx("td",{children:c.jsx("span",{className:`type-badge type-${(J=F.entity_type)==null?void 0:J.toLowerCase().replace(/\s+/g,"-")}`,children:F.entity_type||"Unknown"})}),c.jsx("td",{children:F.intel_stack_level?c.jsxs("span",{className:`intel-badge level-${F.intel_stack_level}`,children:["L",F.intel_stack_level]}):"-"}),c.jsxs("td",{children:[c.jsx("button",{className:"btn btn-sm btn-outline",onClick:()=>r(`/analysis/network?highlight=${F.entity_id}`),children:"View Network"}),F.intel_stack_level!=null&&c.jsx(kt,{to:`/analysis/pyramid?entity_id=${encodeURIComponent(F.entity_id)}`,className:"browse-pyramid-link",title:"View on Pyramid","aria-label":`View ${F.display_name} on Intelligence Stack Pyramid`,children:c.jsx(Oy,{size:18})})]})]},F.entity_id)})})]})})}),o==="money-flows"&&c.jsx(c.Fragment,{children:_e.moneyFlows.length===0?c.jsxs("div",{className:"empty-state",children:[c.jsx("div",{className:"empty-icon",children:"💰"}),c.jsx("h3",{children:"No money flows found"}),c.jsx("p",{children:"Try adjusting your search or amount filters."}),c.jsx("button",{className:"btn btn-primary",onClick:on,children:"Clear Filters"})]}):c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Money flows table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx(be,{column:"source",label:"Source"}),c.jsx(be,{column:"target",label:"Target"}),c.jsx(be,{column:"relationship",label:"Relationship"}),c.jsx(be,{column:"amount_usd",label:"Amount"}),c.jsx(be,{column:"start_date",label:"Date"})]})}),c.jsx("tbody",{children:_e.moneyFlows.map(F=>c.jsxs("tr",{id:`row-flow-${F.id}`,children:[c.jsx("td",{children:c.jsx(tr,{text:F.source,highlight:G})}),c.jsx("td",{children:c.jsx(tr,{text:F.target,highlight:G})}),c.jsx("td",{children:c.jsx("span",{className:"relationship-badge",children:F.relationship||"N/A"})}),c.jsx("td",{className:"amount-cell",children:Tr(F.amount_usd)}),c.jsx("td",{children:F.start_date||"N/A"})]},F.id))})]})})}),o==="awards"&&c.jsx(c.Fragment,{children:_e.awards.length===0?c.jsxs("div",{className:"empty-state",children:[c.jsx("div",{className:"empty-icon",children:"🏆"}),c.jsx("h3",{children:"No awards found"}),c.jsx("p",{children:"Try adjusting your search, agency, or amount filters."}),c.jsx("button",{className:"btn btn-primary",onClick:on,children:"Clear Filters"})]}):c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Awards table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx(be,{column:"piid",label:"PIID"}),c.jsx(be,{column:"recipient_name",label:"Recipient"}),c.jsx(be,{column:"awarding_agency",label:"Agency"}),c.jsx(be,{column:"award_amount",label:"Amount"}),c.jsx(be,{column:"action_date",label:"Date"})]})}),c.jsx("tbody",{children:_e.awards.map(F=>c.jsxs("tr",{id:`row-award-${F.id}`,children:[c.jsx("td",{className:"piid-cell",children:F.piid||"N/A"}),c.jsx("td",{children:c.jsx(tr,{text:F.recipient_name||"",highlight:G})}),c.jsx("td",{children:c.jsx(tr,{text:F.awarding_agency||"",highlight:G})}),c.jsx("td",{className:"amount-cell",children:Tr(F.award_amount)}),c.jsx("td",{children:F.action_date||"N/A"})]},F.id))})]})})}),o==="foia"&&c.jsx(c.Fragment,{children:_e.foiaTargets.length===0?c.jsxs("div",{className:"empty-state",children:[c.jsx("div",{className:"empty-icon",children:"📋"}),c.jsx("h3",{children:"No FOIA targets found"}),c.jsx("p",{children:"Try adjusting your search or agency filter."}),c.jsx("button",{className:"btn btn-primary",onClick:on,children:"Clear Filters"})]}):c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"FOIA targets table",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx(be,{column:"agency",label:"Agency"}),c.jsx(be,{column:"record_request",label:"Record Request"}),c.jsx(be,{column:"timeframe",label:"Timeframe"}),c.jsx(be,{column:"priority_score",label:"Priority"}),c.jsx(be,{column:"specificity_score",label:"Specificity"}),c.jsx(be,{column:"likelihood_score",label:"Likelihood"})]})}),c.jsx("tbody",{children:_e.foiaTargets.map(F=>c.jsxs("tr",{id:`row-foia-${F.id}`,children:[c.jsx("td",{children:c.jsx(tr,{text:F.agency,highlight:G})}),c.jsx("td",{className:"record-request-cell",children:c.jsx(tr,{text:F.record_request,highlight:G})}),c.jsx("td",{children:F.timeframe||"N/A"}),c.jsx("td",{children:F.priority_score!==null&&F.priority_score!==void 0?c.jsxs("span",{className:`score-badge ${F.priority_score>=.7?"high":F.priority_score>=.4?"medium":"low"}`,children:[(F.priority_score*100).toFixed(0),"%"]}):"N/A"}),c.jsx("td",{children:F.specificity_score!==null&&F.specificity_score!==void 0?c.jsxs("span",{className:`score-badge ${F.specificity_score>=.7?"high":F.specificity_score>=.4?"medium":"low"}`,children:[(F.specificity_score*100).toFixed(0),"%"]}):"N/A"}),c.jsx("td",{children:F.likelihood_score!==null&&F.likelihood_score!==void 0?c.jsxs("span",{className:`score-badge ${F.likelihood_score>=.6?"high":F.likelihood_score>=.3?"medium":"low"}`,children:[(F.likelihood_score*100).toFixed(0),"%"]}):"N/A"})]},F.id))})]})})})]})})]})}function Ba(e,n){return e==null||n==null?NaN:en?1:e>=n?0:NaN}function Pb(e,n){return e==null||n==null?NaN:ne?1:n>=e?0:NaN}function s0(e){let n,r,i;e.length!==2?(n=Ba,r=(l,f)=>Ba(e(l),f),i=(l,f)=>e(l)-f):(n=e===Ba||e===Pb?e:Rb,r=e,i=e);function o(l,f,u=0,h=l.length){if(u>>1;r(l[d],f)<0?u=d+1:h=d}while(u>>1;r(l[d],f)<=0?u=d+1:h=d}while(uu&&i(l[d-1],f)>-i(l[d],f)?d-1:d}return{left:o,center:s,right:a}}function Rb(){return 0}function Mb(e){return e===null?NaN:+e}const Ob=s0(Ba),zb=Ob.right;s0(Mb).center;class Fh extends Map{constructor(n,r=Db){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),n!=null)for(const[i,o]of n)this.set(i,o)}get(n){return super.get($h(this,n))}has(n){return super.has($h(this,n))}set(n,r){return super.set(Fb(this,n),r)}delete(n){return super.delete($b(this,n))}}function $h({_intern:e,_key:n},r){const i=n(r);return e.has(i)?e.get(i):r}function Fb({_intern:e,_key:n},r){const i=n(r);return e.has(i)?e.get(i):(e.set(i,r),r)}function $b({_intern:e,_key:n},r){const i=n(r);return e.has(i)&&(r=e.get(i),e.delete(i)),r}function Db(e){return e!==null&&typeof e=="object"?e.valueOf():e}const Ib=Math.sqrt(50),Lb=Math.sqrt(10),Ub=Math.sqrt(2);function _s(e,n,r){const i=(n-e)/Math.max(0,r),o=Math.floor(Math.log10(i)),a=i/Math.pow(10,o),s=a>=Ib?10:a>=Lb?5:a>=Ub?2:1;let l,f,u;return o<0?(u=Math.pow(10,-o)/s,l=Math.round(e*u),f=Math.round(n*u),l/un&&--f,u=-u):(u=Math.pow(10,o)*s,l=Math.round(e/u),f=Math.round(n/u),l*un&&--f),f0))return[];if(e===n)return[e];const i=n=o))return[];const l=a-o+1,f=new Array(l);if(i)if(s<0)for(let u=0;u=i)&&(r=i);else{let i=-1;for(let o of e)(o=n(o,++i,e))!=null&&(r=o)&&(r=o)}return r}function Ih(e,n){let r;if(n===void 0)for(const i of e)i!=null&&(r>i||r===void 0&&i>=i)&&(r=i);else{let i=-1;for(let o of e)(o=n(o,++i,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function Vb(e,n){let r=0;for(let i of e)(i=+i)&&(r+=i);return r}var Wb={value:()=>{}};function Ho(){for(var e=0,n=arguments.length,r={},i;e=0&&(i=r.slice(o+1),r=r.slice(0,o)),r&&!n.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:i}})}Ha.prototype=Ho.prototype={constructor:Ha,on:function(e,n){var r=this._,i=qb(e+"",r),o,a=-1,s=i.length;if(arguments.length<2){for(;++a0)for(var r=new Array(o),i=0,o,a;i=0&&(n=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Uh.hasOwnProperty(n)?{space:Uh[n],local:e}:e}function Xb(e){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===rc&&n.documentElement.namespaceURI===rc?n.createElement(e):n.createElementNS(r,e)}}function Yb(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function l0(e){var n=al(e);return(n.local?Yb:Xb)(n)}function Qb(){}function Af(e){return e==null?Qb:function(){return this.querySelector(e)}}function Kb(e){typeof e!="function"&&(e=Af(e));for(var n=this._groups,r=n.length,i=new Array(r),o=0;o=w&&(w=v+1);!(S=_[w])&&++w=0;)(s=i[o])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}function bk(e){e||(e=kk);function n(d,p){return d&&p?e(d.__data__,p.__data__):!d-!p}for(var r=this._groups,i=r.length,o=new Array(i),a=0;an?1:e>=n?0:NaN}function Sk(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function jk(){return Array.from(this)}function Nk(){for(var e=this._groups,n=0,r=e.length;n1?this.each((n==null?$k:typeof n=="function"?Ik:Dk)(e,n,r??"")):li(this.node(),e)}function li(e,n){return e.style.getPropertyValue(n)||h0(e).getComputedStyle(e,null).getPropertyValue(n)}function Uk(e){return function(){delete this[e]}}function Bk(e,n){return function(){this[e]=n}}function Hk(e,n){return function(){var r=n.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function Vk(e,n){return arguments.length>1?this.each((n==null?Uk:typeof n=="function"?Hk:Bk)(e,n)):this.node()[e]}function p0(e){return e.trim().split(/^|\s+/)}function Pf(e){return e.classList||new m0(e)}function m0(e){this._node=e,this._names=p0(e.getAttribute("class")||"")}m0.prototype={add:function(e){var n=this._names.indexOf(e);n<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var n=this._names.indexOf(e);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function g0(e,n){for(var r=Pf(e),i=-1,o=n.length;++i=0&&(r=n.slice(i+1),n=n.slice(0,i)),{type:n,name:r}})}function vS(e){return function(){var n=this.__on;if(n){for(var r=0,i=-1,o=n.length,a;r()=>e;function ic(e,{sourceEvent:n,subject:r,target:i,identifier:o,active:a,x:s,y:l,dx:f,dy:u,dispatch:h}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:f,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:h}})}ic.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function ES(e){return!e.ctrlKey&&!e.button}function TS(){return this.parentNode}function AS(e,n){return n??{x:e.x,y:e.y}}function PS(){return navigator.maxTouchPoints||"ontouchstart"in this}function RS(){var e=ES,n=TS,r=AS,i=PS,o={},a=Ho("start","drag","end"),s=0,l,f,u,h,d=0;function p(b){b.on("mousedown.drag",y).filter(i).on("touchstart.drag",_).on("touchmove.drag",m,CS).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(b,S){if(!(h||!e.call(this,b,S))){var k=w(this,n.call(this,b,S),b,S,"mouse");k&&(ut(b.view).on("mousemove.drag",g,Co).on("mouseup.drag",x,Co),_0(b.view),Wl(b),u=!1,l=b.clientX,f=b.clientY,k("start",b))}}function g(b){if(Jr(b),!u){var S=b.clientX-l,k=b.clientY-f;u=S*S+k*k>d}o.mouse("drag",b)}function x(b){ut(b.view).on("mousemove.drag mouseup.drag",null),w0(b.view,u),Jr(b),o.mouse("end",b)}function _(b,S){if(e.call(this,b,S)){var k=b.changedTouches,N=n.call(this,b,S),A=k.length,$,j;for($=0;$>8&15|n>>4&240,n>>4&15|n&240,(n&15)<<4|n&15,1):r===8?va(n>>24&255,n>>16&255,n>>8&255,(n&255)/255):r===4?va(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|n&240,((n&15)<<4|n&15)/255):null):(n=OS.exec(e))?new Ze(n[1],n[2],n[3],1):(n=zS.exec(e))?new Ze(n[1]*255/100,n[2]*255/100,n[3]*255/100,1):(n=FS.exec(e))?va(n[1],n[2],n[3],n[4]):(n=$S.exec(e))?va(n[1]*255/100,n[2]*255/100,n[3]*255/100,n[4]):(n=DS.exec(e))?Xh(n[1],n[2]/100,n[3]/100,1):(n=IS.exec(e))?Xh(n[1],n[2]/100,n[3]/100,n[4]):Bh.hasOwnProperty(e)?Wh(Bh[e]):e==="transparent"?new Ze(NaN,NaN,NaN,0):null}function Wh(e){return new Ze(e>>16&255,e>>8&255,e&255,1)}function va(e,n,r,i){return i<=0&&(e=n=r=NaN),new Ze(e,n,r,i)}function BS(e){return e instanceof Wo||(e=kr(e)),e?(e=e.rgb(),new Ze(e.r,e.g,e.b,e.opacity)):new Ze}function oc(e,n,r,i){return arguments.length===1?BS(e):new Ze(e,n,r,i??1)}function Ze(e,n,r,i){this.r=+e,this.g=+n,this.b=+r,this.opacity=+i}Rf(Ze,oc,b0(Wo,{brighter(e){return e=e==null?bs:Math.pow(bs,e),new Ze(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Eo:Math.pow(Eo,e),new Ze(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ze(mr(this.r),mr(this.g),mr(this.b),ks(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qh,formatHex:qh,formatHex8:HS,formatRgb:Gh,toString:Gh}));function qh(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}`}function HS(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}${fr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Gh(){const e=ks(this.opacity);return`${e===1?"rgb(":"rgba("}${mr(this.r)}, ${mr(this.g)}, ${mr(this.b)}${e===1?")":`, ${e})`}`}function ks(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function mr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fr(e){return e=mr(e),(e<16?"0":"")+e.toString(16)}function Xh(e,n,r,i){return i<=0?e=n=r=NaN:r<=0||r>=1?e=n=NaN:n<=0&&(e=NaN),new zt(e,n,r,i)}function k0(e){if(e instanceof zt)return new zt(e.h,e.s,e.l,e.opacity);if(e instanceof Wo||(e=kr(e)),!e)return new zt;if(e instanceof zt)return e;e=e.rgb();var n=e.r/255,r=e.g/255,i=e.b/255,o=Math.min(n,r,i),a=Math.max(n,r,i),s=NaN,l=a-o,f=(a+o)/2;return l?(n===a?s=(r-i)/l+(r0&&f<1?0:s,new zt(s,l,f,e.opacity)}function VS(e,n,r,i){return arguments.length===1?k0(e):new zt(e,n,r,i??1)}function zt(e,n,r,i){this.h=+e,this.s=+n,this.l=+r,this.opacity=+i}Rf(zt,VS,b0(Wo,{brighter(e){return e=e==null?bs:Math.pow(bs,e),new zt(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Eo:Math.pow(Eo,e),new zt(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,n=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*n,o=2*r-i;return new Ze(ql(e>=240?e-240:e+120,o,i),ql(e,o,i),ql(e<120?e+240:e-120,o,i),this.opacity)},clamp(){return new zt(Yh(this.h),xa(this.s),xa(this.l),ks(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ks(this.opacity);return`${e===1?"hsl(":"hsla("}${Yh(this.h)}, ${xa(this.s)*100}%, ${xa(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Yh(e){return e=(e||0)%360,e<0?e+360:e}function xa(e){return Math.max(0,Math.min(1,e||0))}function ql(e,n,r){return(e<60?n+(r-n)*e/60:e<180?r:e<240?n+(r-n)*(240-e)/60:n)*255}const Mf=e=>()=>e;function WS(e,n){return function(r){return e+r*n}}function qS(e,n,r){return e=Math.pow(e,r),n=Math.pow(n,r)-e,r=1/r,function(i){return Math.pow(e+i*n,r)}}function GS(e){return(e=+e)==1?S0:function(n,r){return r-n?qS(n,r,e):Mf(isNaN(n)?r:n)}}function S0(e,n){var r=n-e;return r?WS(e,r):Mf(isNaN(e)?n:e)}const Ss=function e(n){var r=GS(n);function i(o,a){var s=r((o=oc(o)).r,(a=oc(a)).r),l=r(o.g,a.g),f=r(o.b,a.b),u=S0(o.opacity,a.opacity);return function(h){return o.r=s(h),o.g=l(h),o.b=f(h),o.opacity=u(h),o+""}}return i.gamma=e,i}(1);function XS(e,n){n||(n=[]);var r=e?Math.min(n.length,e.length):0,i=n.slice(),o;return function(a){for(o=0;or&&(a=n.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(i=i[0])===(o=o[0])?l[s]?l[s]+=o:l[++s]=o:(l[++s]=null,f.push({i:s,x:Ot(i,o)})),r=Gl.lastIndex;return r180?h+=360:h-u>180&&(u+=360),p.push({i:d.push(o(d)+"rotate(",null,i)-2,x:Ot(u,h)})):h&&d.push(o(d)+"rotate("+h+i)}function l(u,h,d,p){u!==h?p.push({i:d.push(o(d)+"skewX(",null,i)-2,x:Ot(u,h)}):h&&d.push(o(d)+"skewX("+h+i)}function f(u,h,d,p,y,g){if(u!==d||h!==p){var x=y.push(o(y)+"scale(",null,",",null,")");g.push({i:x-4,x:Ot(u,d)},{i:x-2,x:Ot(h,p)})}else(d!==1||p!==1)&&y.push(o(y)+"scale("+d+","+p+")")}return function(u,h){var d=[],p=[];return u=e(u),h=e(h),a(u.translateX,u.translateY,h.translateX,h.translateY,d,p),s(u.rotate,h.rotate,d,p),l(u.skewX,h.skewX,d,p),f(u.scaleX,u.scaleY,h.scaleX,h.scaleY,d,p),u=h=null,function(y){for(var g=-1,x=p.length,_;++g=0&&e._call.call(void 0,n),e=e._next;--ui}function Jh(){Sr=(Ns=Ao.now())+sl,ui=Vi=0;try{fj()}finally{ui=0,hj(),Sr=0}}function dj(){var e=Ao.now(),n=e-Ns;n>E0&&(sl-=n,Ns=e)}function hj(){for(var e,n=js,r,i=1/0;n;)n._call?(i>n._time&&(i=n._time),e=n,n=n._next):(r=n._next,n._next=null,n=e?e._next=r:js=r);Wi=e,lc(i)}function lc(e){if(!ui){Vi&&(Vi=clearTimeout(Vi));var n=e-Sr;n>24?(e<1/0&&(Vi=setTimeout(Jh,e-Ao.now()-sl)),Pi&&(Pi=clearInterval(Pi))):(Pi||(Ns=Ao.now(),Pi=setInterval(dj,E0)),ui=1,T0(Jh))}}function Zh(e,n,r){var i=new Cs;return n=n==null?0:+n,i.restart(o=>{i.stop(),e(o+n)},n,r),i}var pj=Ho("start","end","cancel","interrupt"),mj=[],A0=0,ep=1,uc=2,Va=3,tp=4,cc=5,Wa=6;function ll(e,n,r,i,o,a){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;gj(e,r,{name:n,index:i,group:o,on:pj,tween:mj,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:A0})}function $f(e,n){var r=Ut(e,n);if(r.state>A0)throw new Error("too late; already scheduled");return r}function nn(e,n){var r=Ut(e,n);if(r.state>Va)throw new Error("too late; already running");return r}function Ut(e,n){var r=e.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function gj(e,n,r){var i=e.__transition,o;i[n]=r,r.timer=Ff(a,0,r.time);function a(u){r.state=ep,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var h,d,p,y;if(r.state!==ep)return f();for(h in i)if(y=i[h],y.name===r.name){if(y.state===Va)return Zh(s);y.state===tp?(y.state=Wa,y.timer.stop(),y.on.call("interrupt",e,e.__data__,y.index,y.group),delete i[h]):+huc&&i.state=0&&(n=n.slice(0,r)),!n||n==="start"})}function qj(e,n,r){var i,o,a=Wj(n)?$f:nn;return function(){var s=a(this,e),l=s.on;l!==i&&(o=(i=l).copy()).on(n,r),s.on=o}}function Gj(e,n){var r=this._id;return arguments.length<2?Ut(this.node(),r).on.on(e):this.each(qj(r,e,n))}function Xj(e){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==e)return;n&&n.removeChild(this)}}function Yj(){return this.on("end.remove",Xj(this._id))}function Qj(e){var n=this._name,r=this._id;typeof e!="function"&&(e=Af(e));for(var i=this._groups,o=i.length,a=new Array(o),s=0;s=0))throw new Error(`invalid digits: ${e}`);if(n>15)return O0;const r=10**n;return function(i){this._+=i[0];for(let o=1,a=i.length;oor)if(!(Math.abs(d*f-u*h)>or)||!a)this._append`L${this._x1=n},${this._y1=r}`;else{let y=i-s,g=o-l,x=f*f+u*u,_=y*y+g*g,m=Math.sqrt(x),v=Math.sqrt(p),w=a*Math.tan((fc-Math.acos((x+p-_)/(2*m*v)))/2),b=w/v,S=w/m;Math.abs(b-1)>or&&this._append`L${n+b*h},${r+b*d}`,this._append`A${a},${a},0,0,${+(d*y>h*g)},${this._x1=n+S*f},${this._y1=r+S*u}`}}arc(n,r,i,o,a,s){if(n=+n,r=+r,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let l=i*Math.cos(o),f=i*Math.sin(o),u=n+l,h=r+f,d=1^s,p=s?o-a:a-o;this._x1===null?this._append`M${u},${h}`:(Math.abs(this._x1-u)>or||Math.abs(this._y1-h)>or)&&this._append`L${u},${h}`,i&&(p<0&&(p=p%dc+dc),p>wN?this._append`A${i},${i},0,1,${d},${n-l},${r-f}A${i},${i},0,1,${d},${this._x1=u},${this._y1=h}`:p>or&&this._append`A${i},${i},0,${+(p>=fc)},${d},${this._x1=n+i*Math.cos(a)},${this._y1=r+i*Math.sin(a)}`)}rect(n,r,i,o){this._append`M${this._x0=this._x1=+n},${this._y0=this._y1=+r}h${i=+i}v${+o}h${-i}Z`}toString(){return this._}}function F0(){return new z0}F0.prototype=z0.prototype;function kN(e){const n=+this._x.call(null,e),r=+this._y.call(null,e);return $0(this.cover(n,r),n,r,e)}function $0(e,n,r,i){if(isNaN(n)||isNaN(r))return e;var o,a=e._root,s={data:i},l=e._x0,f=e._y0,u=e._x1,h=e._y1,d,p,y,g,x,_,m,v;if(!a)return e._root=s,e;for(;a.length;)if((x=n>=(d=(l+u)/2))?l=d:u=d,(_=r>=(p=(f+h)/2))?f=p:h=p,o=a,!(a=a[m=_<<1|x]))return o[m]=s,e;if(y=+e._x.call(null,a.data),g=+e._y.call(null,a.data),n===y&&r===g)return s.next=a,o?o[m]=s:e._root=s,e;do o=o?o[m]=new Array(4):e._root=new Array(4),(x=n>=(d=(l+u)/2))?l=d:u=d,(_=r>=(p=(f+h)/2))?f=p:h=p;while((m=_<<1|x)===(v=(g>=p)<<1|y>=d));return o[v]=a,o[m]=s,e}function SN(e){var n,r,i=e.length,o,a,s=new Array(i),l=new Array(i),f=1/0,u=1/0,h=-1/0,d=-1/0;for(r=0;rh&&(h=o),ad&&(d=a));if(f>h||u>d)return this;for(this.cover(f,u).cover(h,d),r=0;re||e>=o||i>n||n>=a;)switch(u=(nh||(l=g.y0)>d||(f=g.x1)=m)<<1|e>=_)&&(g=p[p.length-1],p[p.length-1]=p[p.length-1-x],p[p.length-1-x]=g)}else{var v=e-+this._x.call(null,y.data),w=n-+this._y.call(null,y.data),b=v*v+w*w;if(b=(p=(s+f)/2))?s=p:f=p,(x=d>=(y=(l+u)/2))?l=y:u=y,n=r,!(r=r[_=x<<1|g]))return this;if(!r.length)break;(n[_+1&3]||n[_+2&3]||n[_+3&3])&&(i=n,m=_)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(a=r.next)&&delete r.next,o?(a?o.next=a:delete o.next,this):n?(a?n[_]=a:delete n[_],(r=n[0]||n[1]||n[2]||n[3])&&r===(n[3]||n[2]||n[1]||n[0])&&!r.length&&(i?i[m]=r:this._root=r),this):(this._root=a,this)}function AN(e){for(var n=0,r=e.length;np.index){var R=y-A.x-A.vx,T=g-A.y-A.vy,P=R*R+T*T;Py+j||kg+j||Nu.r&&(u.r=u[h].r)}function f(){if(n){var u,h=n.length,d;for(r=new Array(h),u=0;u=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Es(e,n){if((r=(e=n?e.toExponential(n-1):e.toExponential()).indexOf("e"))<0)return null;var r,i=e.slice(0,r);return[i.length>1?i[0]+i.slice(2):i,+e.slice(r+1)]}function ci(e){return e=Es(Math.abs(e)),e?e[1]:NaN}function VN(e,n){return function(r,i){for(var o=r.length,a=[],s=0,l=e[0],f=0;o>0&&l>0&&(f+l+1>i&&(l=Math.max(1,i-f)),a.push(r.substring(o-=l,o+l)),!((f+=l+1)>i));)l=e[s=(s+1)%e.length];return a.reverse().join(n)}}function WN(e){return function(n){return n.replace(/[0-9]/g,function(r){return e[+r]})}}var qN=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ts(e){if(!(n=qN.exec(e)))throw new Error("invalid format: "+e);var n;return new Uf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}Ts.prototype=Uf.prototype;function Uf(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Uf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function GN(e){e:for(var n=e.length,r=1,i=-1,o;r0&&(i=0);break}return i>0?e.slice(0,i)+e.slice(o+1):e}var D0;function XN(e,n){var r=Es(e,n);if(!r)return e+"";var i=r[0],o=r[1],a=o-(D0=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Es(e,Math.max(0,n+a-1))[0]}function ip(e,n){var r=Es(e,n);if(!r)return e+"";var i=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}const op={"%":(e,n)=>(e*100).toFixed(n),b:e=>Math.round(e).toString(2),c:e=>e+"",d:HN,e:(e,n)=>e.toExponential(n),f:(e,n)=>e.toFixed(n),g:(e,n)=>e.toPrecision(n),o:e=>Math.round(e).toString(8),p:(e,n)=>ip(e*100,n),r:ip,s:XN,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ap(e){return e}var sp=Array.prototype.map,lp=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function YN(e){var n=e.grouping===void 0||e.thousands===void 0?ap:VN(sp.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",i=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?ap:WN(sp.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"−":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function u(d){d=Ts(d);var p=d.fill,y=d.align,g=d.sign,x=d.symbol,_=d.zero,m=d.width,v=d.comma,w=d.precision,b=d.trim,S=d.type;S==="n"?(v=!0,S="g"):op[S]||(w===void 0&&(w=12),b=!0,S="g"),(_||p==="0"&&y==="=")&&(_=!0,p="0",y="=");var k=x==="$"?r:x==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():"",N=x==="$"?i:/[%p]/.test(S)?s:"",A=op[S],$=/[defgprs%]/.test(S);w=w===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function j(R){var T=k,P=N,C,L,O;if(S==="c")P=A(R)+P,R="";else{R=+R;var B=R<0||1/R<0;if(R=isNaN(R)?f:A(Math.abs(R),w),b&&(R=GN(R)),B&&+R==0&&g!=="+"&&(B=!1),T=(B?g==="("?g:l:g==="-"||g==="("?"":g)+T,P=(S==="s"?lp[8+D0/3]:"")+P+(B&&g==="("?")":""),$){for(C=-1,L=R.length;++CO||O>57){P=(O===46?o+R.slice(C+1):R.slice(C))+P,R=R.slice(0,C);break}}}v&&!_&&(R=n(R,1/0));var D=T.length+R.length+P.length,z=D>1)+T+R+P+z.slice(D);break;default:R=z+T+R+P;break}return a(R)}return j.toString=function(){return d+""},j}function h(d,p){var y=u((d=Ts(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(ci(p)/3)))*3,x=Math.pow(10,-g),_=lp[8+g/3];return function(m){return y(x*m)+_}}return{format:u,formatPrefix:h}}var wa,I0,L0;QN({thousands:",",grouping:[3],currency:["$",""]});function QN(e){return wa=YN(e),I0=wa.format,L0=wa.formatPrefix,wa}function KN(e){return Math.max(0,-ci(Math.abs(e)))}function JN(e,n){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ci(n)/3)))*3-ci(Math.abs(e)))}function ZN(e,n){return e=Math.abs(e),n=Math.abs(n)-e,Math.max(0,ci(n)-ci(e))+1}function U0(e,n){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(n).domain(e);break}return this}const up=Symbol("implicit");function B0(){var e=new Fh,n=[],r=[],i=up;function o(a){let s=e.get(a);if(s===void 0){if(i!==up)return i;e.set(a,s=n.push(a)-1)}return r[s%r.length]}return o.domain=function(a){if(!arguments.length)return n.slice();n=[],e=new Fh;for(const s of a)e.has(s)||e.set(s,n.push(s)-1);return o},o.range=function(a){return arguments.length?(r=Array.from(a),o):r.slice()},o.unknown=function(a){return arguments.length?(i=a,o):i},o.copy=function(){return B0(n,r).unknown(i)},U0.apply(o,arguments),o}function eC(e){return function(){return e}}function tC(e){return+e}var cp=[0,1];function In(e){return e}function hc(e,n){return(n-=e=+e)?function(r){return(r-e)/n}:eC(isNaN(n)?NaN:.5)}function nC(e,n){var r;return e>n&&(r=e,e=n,n=r),function(i){return Math.max(e,Math.min(n,i))}}function rC(e,n,r){var i=e[0],o=e[1],a=n[0],s=n[1];return o2?iC:rC,f=u=null,d}function d(p){return p==null||isNaN(p=+p)?a:(f||(f=l(e.map(i),n,r)))(i(s(p)))}return d.invert=function(p){return s(o((u||(u=l(n,e.map(i),Ot)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,tC),h()):e.slice()},d.range=function(p){return arguments.length?(n=Array.from(p),h()):n.slice()},d.rangeRound=function(p){return n=Array.from(p),r=tj,h()},d.clamp=function(p){return arguments.length?(s=p?!0:In,h()):s!==In},d.interpolate=function(p){return arguments.length?(r=p,h()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,y){return i=p,o=y,h()}}function sC(e,n,r,i){var o=Hb(e,n,r),a;switch(i=Ts(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(n));return i.precision==null&&!isNaN(a=JN(o,s))&&(i.precision=a),L0(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(a=ZN(o,Math.max(Math.abs(e),Math.abs(n))))&&(i.precision=a-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(a=KN(o))&&(i.precision=a-(i.type==="%")*2);break}}return I0(i)}function lC(e){var n=e.domain;return e.ticks=function(r){var i=n();return Bb(i[0],i[i.length-1],r??10)},e.tickFormat=function(r,i){var o=n();return sC(o[0],o[o.length-1],r??10,i)},e.nice=function(r){r==null&&(r=10);var i=n(),o=0,a=i.length-1,s=i[o],l=i[a],f,u,h=10;for(l0;){if(u=nc(s,l,r),u===f)return i[o]=s,i[a]=l,n(i);if(u>0)s=Math.floor(s/u)*u,l=Math.ceil(l/u)*u;else if(u<0)s=Math.ceil(s*u)/u,l=Math.floor(l*u)/u;else break;f=u}return e},e}function fp(e){return function(n){return n<0?-Math.pow(-n,e):Math.pow(n,e)}}function uC(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function cC(e){return e<0?-e*e:e*e}function fC(e){var n=e(In,In),r=1;function i(){return r===1?e(In,In):r===.5?e(uC,cC):e(fp(r),fp(1/r))}return n.exponent=function(o){return arguments.length?(r=+o,i()):r},lC(n)}function H0(){var e=fC(aC());return e.copy=function(){return oC(e,H0()).exponent(e.exponent())},U0.apply(e,arguments),e}function dC(e){for(var n=e.length/6|0,r=new Array(n),i=0;i()=>e;function pC(e,{sourceEvent:n,target:r,transform:i,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function mn(e,n,r){this.k=e,this.x=n,this.y=r}mn.prototype={constructor:mn,scale:function(e){return e===1?this:new mn(this.k*e,this.x,this.y)},translate:function(e,n){return e===0&n===0?this:new mn(this.k,this.x+this.k*e,this.y+this.k*n)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Bf=new mn(1,0,0);Xt.prototype=mn.prototype;function Xt(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Bf;return e.__zoom}function Xl(e){e.stopImmediatePropagation()}function Ri(e){e.preventDefault(),e.stopImmediatePropagation()}function mC(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function gC(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function dp(){return this.__zoom||Bf}function yC(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function vC(){return navigator.maxTouchPoints||"ontouchstart"in this}function xC(e,n,r){var i=e.invertX(n[0][0])-r[0][0],o=e.invertX(n[1][0])-r[1][0],a=e.invertY(n[0][1])-r[0][1],s=e.invertY(n[1][1])-r[1][1];return e.translate(o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o),s>a?(a+s)/2:Math.min(0,a)||Math.max(0,s))}function _C(){var e=mC,n=gC,r=xC,i=yC,o=vC,a=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],l=250,f=uj,u=Ho("start","zoom","end"),h,d,p,y=500,g=150,x=0,_=10;function m(C){C.property("__zoom",dp).on("wheel.zoom",A,{passive:!1}).on("mousedown.zoom",$).on("dblclick.zoom",j).filter(o).on("touchstart.zoom",R).on("touchmove.zoom",T).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(C,L,O,B){var D=C.selection?C.selection():C;D.property("__zoom",dp),C!==D?S(C,L,O,B):D.interrupt().each(function(){k(this,arguments).event(B).start().zoom(null,typeof L=="function"?L.apply(this,arguments):L).end()})},m.scaleBy=function(C,L,O,B){m.scaleTo(C,function(){var D=this.__zoom.k,z=typeof L=="function"?L.apply(this,arguments):L;return D*z},O,B)},m.scaleTo=function(C,L,O,B){m.transform(C,function(){var D=n.apply(this,arguments),z=this.__zoom,U=O==null?b(D):typeof O=="function"?O.apply(this,arguments):O,q=z.invert(U),X=typeof L=="function"?L.apply(this,arguments):L;return r(w(v(z,X),U,q),D,s)},O,B)},m.translateBy=function(C,L,O,B){m.transform(C,function(){return r(this.__zoom.translate(typeof L=="function"?L.apply(this,arguments):L,typeof O=="function"?O.apply(this,arguments):O),n.apply(this,arguments),s)},null,B)},m.translateTo=function(C,L,O,B,D){m.transform(C,function(){var z=n.apply(this,arguments),U=this.__zoom,q=B==null?b(z):typeof B=="function"?B.apply(this,arguments):B;return r(Bf.translate(q[0],q[1]).scale(U.k).translate(typeof L=="function"?-L.apply(this,arguments):-L,typeof O=="function"?-O.apply(this,arguments):-O),z,s)},B,D)};function v(C,L){return L=Math.max(a[0],Math.min(a[1],L)),L===C.k?C:new mn(L,C.x,C.y)}function w(C,L,O){var B=L[0]-O[0]*C.k,D=L[1]-O[1]*C.k;return B===C.x&&D===C.y?C:new mn(C.k,B,D)}function b(C){return[(+C[0][0]+ +C[1][0])/2,(+C[0][1]+ +C[1][1])/2]}function S(C,L,O,B){C.on("start.zoom",function(){k(this,arguments).event(B).start()}).on("interrupt.zoom end.zoom",function(){k(this,arguments).event(B).end()}).tween("zoom",function(){var D=this,z=arguments,U=k(D,z).event(B),q=n.apply(D,z),X=O==null?b(q):typeof O=="function"?O.apply(D,z):O,ne=Math.max(q[1][0]-q[0][0],q[1][1]-q[0][1]),ee=D.__zoom,xe=typeof L=="function"?L.apply(D,z):L,G=f(ee.invert(X).concat(ne/ee.k),xe.invert(X).concat(ne/xe.k));return function(ie){if(ie===1)ie=xe;else{var Ee=G(ie),rn=ne/Ee[2];ie=new mn(rn,X[0]-Ee[0]*rn,X[1]-Ee[1]*rn)}U.zoom(null,ie)}})}function k(C,L,O){return!O&&C.__zooming||new N(C,L)}function N(C,L){this.that=C,this.args=L,this.active=0,this.sourceEvent=null,this.extent=n.apply(C,L),this.taps=0}N.prototype={event:function(C){return C&&(this.sourceEvent=C),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(C,L){return this.mouse&&C!=="mouse"&&(this.mouse[1]=L.invert(this.mouse[0])),this.touch0&&C!=="touch"&&(this.touch0[1]=L.invert(this.touch0[0])),this.touch1&&C!=="touch"&&(this.touch1[1]=L.invert(this.touch1[0])),this.that.__zoom=L,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(C){var L=ut(this.that).datum();u.call(C,this.that,new pC(C,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:u}),L)}};function A(C,...L){if(!e.apply(this,arguments))return;var O=k(this,L).event(C),B=this.__zoom,D=Math.max(a[0],Math.min(a[1],B.k*Math.pow(2,i.apply(this,arguments)))),z=Yt(C);if(O.wheel)(O.mouse[0][0]!==z[0]||O.mouse[0][1]!==z[1])&&(O.mouse[1]=B.invert(O.mouse[0]=z)),clearTimeout(O.wheel);else{if(B.k===D)return;O.mouse=[z,B.invert(z)],qa(this),O.start()}Ri(C),O.wheel=setTimeout(U,g),O.zoom("mouse",r(w(v(B,D),O.mouse[0],O.mouse[1]),O.extent,s));function U(){O.wheel=null,O.end()}}function $(C,...L){if(p||!e.apply(this,arguments))return;var O=C.currentTarget,B=k(this,L,!0).event(C),D=ut(C.view).on("mousemove.zoom",X,!0).on("mouseup.zoom",ne,!0),z=Yt(C,O),U=C.clientX,q=C.clientY;_0(C.view),Xl(C),B.mouse=[z,this.__zoom.invert(z)],qa(this),B.start();function X(ee){if(Ri(ee),!B.moved){var xe=ee.clientX-U,G=ee.clientY-q;B.moved=xe*xe+G*G>x}B.event(ee).zoom("mouse",r(w(B.that.__zoom,B.mouse[0]=Yt(ee,O),B.mouse[1]),B.extent,s))}function ne(ee){D.on("mousemove.zoom mouseup.zoom",null),w0(ee.view,B.moved),Ri(ee),B.event(ee).end()}}function j(C,...L){if(e.apply(this,arguments)){var O=this.__zoom,B=Yt(C.changedTouches?C.changedTouches[0]:C,this),D=O.invert(B),z=O.k*(C.shiftKey?.5:2),U=r(w(v(O,z),B,D),n.apply(this,L),s);Ri(C),l>0?ut(this).transition().duration(l).call(S,U,B,C):ut(this).call(m.transform,U,B,C)}}function R(C,...L){if(e.apply(this,arguments)){var O=C.touches,B=O.length,D=k(this,L,C.changedTouches.length===B).event(C),z,U,q,X;for(Xl(C),U=0;U{B()},[j,n,T]);const O=E.useCallback(G=>{if(i.length===0)return!0;for(const ie of i)if((wC[ie]||[]).includes(G.category))return!0;return!1},[i]),B=async()=>{try{u(!0),d(null);const G=await cb({min_amount:j>0?j:void 0,include_relationships:n&&(T==="relationships"||T==="combined"),limit:200});l(G)}catch(G){console.error("Error loading Sankey data:",G),d("Failed to load Sankey diagram data")}finally{u(!1)}};E.useEffect(()=>{s&&o.current&&a.current&&z()},[s,p,g,v,b,T,i]);const D=E.useMemo(()=>{if(!s)return[];const G=new Set(s.nodes.map(ie=>ie.category).filter(Boolean));return Array.from(G).sort()},[s]),z=()=>{if(!s||!o.current||!a.current)return;const G=ut(o.current);G.selectAll("*").remove();const ie=a.current,Ee=ie.clientWidth,rn=Math.max(600,ie.clientHeight||600),Bt={top:20,right:20,bottom:20,left:20};G.attr("width",Ee).attr("height",rn);let Ct=s.links;T==="money"?Ct=s.links.filter(W=>W.type==="money_flow"):T==="relationships"&&(Ct=s.links.filter(W=>W.type==="relationship"));const _i=new Set;Ct.forEach(W=>{_i.add(W.source),_i.add(W.target)});let gt=s.nodes.filter(W=>_i.has(W.name));if(i.length>0){gt=gt.filter(K=>O(K));const W=new Set(gt.map(K=>K.name));Ct=Ct.filter(K=>W.has(K.source)&&W.has(K.target))}if(gt.length===0||Ct.length===0){G.append("text").attr("x",Ee/2).attr("y",rn/2).attr("text-anchor","middle").attr("fill","currentColor").text("No data to display");return}const _e=[],on=new Map,jn=new Set,Nn=[],Go=new Set;for(Ct.forEach(W=>Go.add(W.target)),gt.forEach(W=>{Go.has(W.name)||Nn.push({name:W.name,layer:0})}),Nn.length===0&>.length>0&&Nn.push({name:gt[0].name,layer:0});Nn.length>0;){const{name:W,layer:K}=Nn.shift();jn.has(W)||(jn.add(W),on.set(W,K),_e[K]||(_e[K]=[]),_e[K].push(W),Ct.forEach(se=>{se.source===W&&!jn.has(se.target)&&Nn.push({name:se.target,layer:K+1})}))}gt.forEach(W=>{if(!on.has(W.name)){const K=_e.length;on.set(W.name,K),_e[K]||(_e[K]=[]),_e[K].push(W.name)}});const wi=20,Tr=30,be=(Ee-Bt.left-Bt.right)/Math.max(_e.length,1),Cn=new Map;_e.forEach((W,K)=>{const se=Bt.top+(rn-Bt.top-Bt.bottom)/2,En=Bt.left+K*be,at=W.length*(wi+Tr)-Tr,Xo=se-at/2;W.forEach((Yo,pl)=>{const er=gt.find(Jo=>Jo.name===Yo),Qo=(er==null?void 0:er.value)||1,Ko=Math.max(10,Math.min(50,Math.sqrt(Qo)*2));Cn.set(Yo,{x:En,y:Xo+pl*(wi+Tr),width:Ko,height:wi})})});const Ht=G.append("g").attr("transform",`translate(${b.x}, ${b.y}) scale(${v})`),F=Ht.append("g").attr("class","links");Ct.forEach(W=>{const K=Cn.get(W.source),se=Cn.get(W.target);if(!K||!se)return;const En=p===W.source||p===W.target,at=g===`${W.source}-${W.target}`,Yo=p&&p!==W.source&&p!==W.target?.1:at?.8:.3,pl=at?4:En?3:2,er=F0(),Qo=K.x+K.width,Ko=K.y+K.height/2,Jo=se.x,Zf=se.y+se.height/2,ed=(Qo+Jo)/2;er.moveTo(Qo,Ko),er.bezierCurveTo(ed,Ko,ed,Zf,Jo,Zf),F.append("path").attr("d",er.toString()).attr("stroke","#999").attr("stroke-width",pl).attr("fill","none").attr("opacity",Yo).attr("data-link-id",`${W.source}-${W.target}`).on("mouseenter",td=>{x(`${W.source}-${W.target}`);const Ov=`${W.source} → ${W.target} -${W.label||""} -Value: ${U(W.value)}`;m({x:td.pageX,y:td.pageY,content:Ov})}).on("mouseleave",()=>{x(null),m(null)})});const J=Ht.append("g").attr("class","nodes");gt.forEach(W=>{const K=Cn.get(W.name);if(!K)return;const se=p===W.name,En=ka[W.category]||ka.default;J.append("rect").attr("x",K.x).attr("y",K.y).attr("width",K.width).attr("height",K.height).attr("fill",En).attr("stroke",se?"#fff":"none").attr("stroke-width",se?2:0).attr("opacity",p&&!se?.3:1).attr("cursor","pointer").attr("data-node-name",W.name).on("click",()=>{const at=se?null:W.name;y(at),r&&r(at||"")}).on("mouseenter",at=>{const Xo=`${W.name} -Category: ${W.category} -Value: ${U(W.value)}`;m({x:at.pageX,y:at.pageY,content:Xo})}).on("mouseleave",()=>{g||m(null)}),J.append("text").attr("x",K.x+K.width+5).attr("y",K.y+K.height/2).attr("dy","0.35em").attr("fill","currentColor").attr("font-size","12px").attr("opacity",p&&!se?.3:.8).text(W.name.length>20?W.name.substring(0,20)+"...":W.name)})},U=G=>G>=1e9?`$${(G/1e9).toFixed(2)}B`:G>=1e6?`$${(G/1e6).toFixed(2)}M`:G>=1e3?`$${(G/1e3).toFixed(1)}K`:`$${G.toFixed(0)}`,q=E.useCallback(G=>{G.preventDefault();const ie=G.deltaY>0?.9:1.1;w(Ee=>Math.max(.5,Math.min(3,Ee*ie)))},[]),X=E.useCallback(G=>{G.button===0&&(N(!0),$({x:G.clientX-b.x,y:G.clientY-b.y}))},[b]),ne=E.useCallback(G=>{k&&S({x:G.clientX-A.x,y:G.clientY-A.y})},[k,A]),ee=E.useCallback(()=>{N(!1)},[]),xe=()=>{w(1),S({x:0,y:0}),y(null)};return f?c.jsx("div",{className:"sankey-container",children:"Loading Sankey diagram..."}):h?c.jsx("div",{className:"sankey-container error",children:h}):c.jsxs("div",{className:"sankey-container",ref:a,children:[c.jsxs("div",{className:"sankey-controls",children:[c.jsxs("div",{className:"control-group",children:[c.jsx("label",{children:"View Type:"}),c.jsxs("select",{value:T,onChange:G=>P(G.target.value),children:[c.jsx("option",{value:"combined",children:"Combined"}),c.jsx("option",{value:"money",children:"Money Flows Only"}),c.jsx("option",{value:"relationships",children:"Relationships Only"})]})]}),c.jsxs("div",{className:"control-group",children:[c.jsxs("label",{children:["Min Amount: ",U(j)]}),c.jsx("input",{type:"range",min:"0",max:(s==null?void 0:s.links.reduce((G,ie)=>Math.max(G,ie.value),0))||1e9,step:"1000000",value:j,onChange:G=>R(Number(G.target.value))})]}),c.jsx("button",{onClick:xe,className:"btn btn-secondary",children:"Reset View"}),p&&c.jsx("button",{onClick:()=>y(null),className:"btn btn-secondary",children:"Clear Selection"}),c.jsxs("button",{onClick:()=>L(!C),className:`btn btn-secondary ${C?"active":""}`,title:"Toggle Legend",children:["Legend ",C?"▼":"▲"]})]}),C&&D.length>0&&c.jsxs("div",{className:"sankey-legend",children:[c.jsx("h5",{children:"Entity Types"}),c.jsx("div",{className:"legend-items",children:D.map(G=>c.jsxs("div",{className:"legend-item",children:[c.jsx("span",{className:"legend-color",style:{backgroundColor:ka[G]||ka.default}}),c.jsx("span",{className:"legend-label",children:G})]},G))})]}),c.jsx("svg",{ref:o,className:"sankey-svg",onWheel:q,onMouseDown:X,onMouseMove:ne,onMouseUp:ee,onMouseLeave:ee}),c.jsxs("div",{className:"sankey-stats",children:[c.jsxs("span",{children:[(s==null?void 0:s.nodes.length)||0," entities"]}),c.jsxs("span",{children:[(s==null?void 0:s.links.length)||0," flows"]}),i.length>0&&c.jsx("span",{className:"filter-badge",children:"Filtered"})]}),_&&c.jsx("div",{className:"sankey-tooltip",style:{left:_.x+10,top:_.y+10},children:_.content.split(` -`).map((G,ie)=>c.jsx("div",{children:G},ie))})]})}function bC(){var d,p,y;const[e,n]=E.useState(null),[r,i]=E.useState(null),[o,a]=E.useState(!0),[s,l]=E.useState(null),{dataVersion:f}=ol();E.useEffect(()=>{u()},[f]);const u=async()=>{try{l(null);const[g,x]=await Promise.all([lb(),ub()]);n(g),i(x)}catch(g){console.error("Error loading analysis data:",g),l("Failed to load analysis data. Please try again.")}finally{a(!1)}},h=g=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0}).format(g);return c.jsxs("div",{className:"analysis fade-in",role:"main","aria-label":"Analysis page",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h1",{children:"Analysis"}),c.jsx("p",{children:"Visualize relationships and financial networks"})]}),s&&c.jsxs("div",{className:"alert alert-error",role:"alert",children:[s,c.jsx("button",{onClick:u,className:"btn btn-secondary",style:{marginLeft:"12px",padding:"6px 12px"},children:"Retry"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Entity Network Graph"}),c.jsx("p",{children:"Interactive visualization of entity relationships. Click and drag nodes to explore connections. Use controls to zoom and center the view."}),c.jsx(kt,{to:"/analysis/network",style:{display:"inline-block",marginTop:8,color:"var(--primary-color)",fontWeight:600},children:"Open Full Network Graph →"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Sankey Flow Diagram"}),c.jsx("p",{children:"Visualize money flows and relationships between entities. Use the controls to filter by amount, toggle between flow types, and interact with nodes and links. Click nodes to highlight connections."}),c.jsx(V0,{})]}),o?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Top Recipients (Inflows)"}),c.jsx(ro,{type:"table"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Top Sources (Outflows)"}),c.jsx(ro,{type:"table"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Timeline"}),c.jsx(ro,{type:"table"})]})]}):c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"card fade-in",children:[c.jsx("h3",{children:"Top Recipients (Inflows)"}),c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Top recipients by inflows",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Entity"}),c.jsx("th",{children:"Total Amount"})]})}),c.jsx("tbody",{children:(d=e==null?void 0:e.inflows)==null?void 0:d.slice(0,10).map((g,x)=>c.jsxs("tr",{children:[c.jsx("td",{children:g.entity}),c.jsx("td",{children:h(g.amount)})]},x))})]})})]}),c.jsxs("div",{className:"card fade-in",children:[c.jsx("h3",{children:"Top Sources (Outflows)"}),c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Top sources by outflows",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Entity"}),c.jsx("th",{children:"Total Amount"})]})}),c.jsx("tbody",{children:(p=e==null?void 0:e.outflows)==null?void 0:p.slice(0,10).map((g,x)=>c.jsxs("tr",{children:[c.jsx("td",{children:g.entity}),c.jsx("td",{children:h(g.amount)})]},x))})]})})]}),c.jsxs("div",{className:"card fade-in",children:[c.jsx("h3",{children:"Timeline"}),c.jsx("div",{className:"data-table-wrapper",children:c.jsxs("table",{className:"data-table",role:"table","aria-label":"Financial timeline",children:[c.jsx("thead",{children:c.jsxs("tr",{children:[c.jsx("th",{children:"Year"}),c.jsx("th",{children:"Transaction Count"}),c.jsx("th",{children:"Total Amount"})]})}),c.jsx("tbody",{children:(y=r==null?void 0:r.timeline)==null?void 0:y.map(g=>c.jsxs("tr",{children:[c.jsx("td",{children:g.year}),c.jsx("td",{children:g.count}),c.jsx("td",{children:h(g.total_amount)})]},g.year))})]})})]})]})]})}function kC(){return c.jsxs("div",{className:"analysis-overview fade-in",role:"main","aria-label":"Analysis overview page",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h1",{children:"Analysis"}),c.jsx("p",{children:"Visualize relationships and financial networks"})]}),c.jsxs("div",{className:"visualization-cards",children:[c.jsxs(kt,{to:"/analysis/network",className:"viz-card",children:[c.jsx("div",{className:"viz-card-icon",children:c.jsx(ww,{size:48})}),c.jsxs("div",{className:"viz-card-content",children:[c.jsx("h3",{children:"Entity Network Graph"}),c.jsx("p",{children:"Interactive force-directed graph showing relationships between entities. Explore connections between government agencies, contractors, and research institutions."}),c.jsxs("ul",{className:"viz-card-features",children:[c.jsx("li",{children:"Click and drag nodes to explore"}),c.jsx("li",{children:"Filter by connection count"}),c.jsx("li",{children:"Toggle inferred relationships"}),c.jsx("li",{children:"Zoom and pan controls"})]})]}),c.jsx("span",{className:"viz-card-arrow",children:"→"})]}),c.jsxs(kt,{to:"/analysis/sankey",className:"viz-card",children:[c.jsx("div",{className:"viz-card-icon",children:c.jsx(mw,{size:48})}),c.jsxs("div",{className:"viz-card-content",children:[c.jsx("h3",{children:"Sankey Flow Diagram"}),c.jsx("p",{children:"Visualize money flows and relationships between entities. Track funding paths from government agencies to contractors."}),c.jsxs("ul",{className:"viz-card-features",children:[c.jsx("li",{children:"Filter by minimum amount"}),c.jsx("li",{children:"Toggle flow types (money/relationships)"}),c.jsx("li",{children:"Click nodes to highlight connections"}),c.jsx("li",{children:"Hover for detailed tooltips"})]})]}),c.jsx("span",{className:"viz-card-arrow",children:"→"})]}),c.jsxs(kt,{to:"/analysis/pyramid",className:"viz-card",children:[c.jsx("div",{className:"viz-card-icon",style:{background:"linear-gradient(135deg, #dc2626, #ea580c)"},children:c.jsx(Oy,{size:48})}),c.jsxs("div",{className:"viz-card-content",children:[c.jsxs("h3",{children:["Intelligence Stack Pyramid",c.jsx("span",{className:"viz-card-beta-badge",children:"Beta"})]}),c.jsx("p",{children:"Hierarchical visualization of U.S. intelligence agencies and their roles in UAP programs. Interactive pyramid showing command structure and oversight relationships."}),c.jsxs("ul",{className:"viz-card-features",children:[c.jsx("li",{children:"6-tier hierarchy: Control Group → Programs"}),c.jsx("li",{children:"Click tiers to filter entities"}),c.jsx("li",{children:"Visualize agency relationships"}),c.jsx("li",{children:"Track chain of command"})]}),c.jsxs("div",{className:"pyramid-preview",children:[c.jsx("div",{className:"pyramid-tier tier-1",children:"Control Group"}),c.jsx("div",{className:"pyramid-tier tier-2",children:"Administrators (NRO, CIA, DIA, NSA)"}),c.jsx("div",{className:"pyramid-tier tier-3",children:"FFRDCs (MITRE, Battelle, National Labs)"}),c.jsx("div",{className:"pyramid-tier tier-4",children:"Prime Contractors (LM, NG, RTX, Boeing)"}),c.jsx("div",{className:"pyramid-tier tier-5",children:"Facilities (Area 51, S4, Edwards AFB)"}),c.jsx("div",{className:"pyramid-tier tier-6",children:"Programs (Immaculate Constellation, Kona Blue)"})]})]}),c.jsx("span",{className:"viz-card-arrow",children:"→"})]})]}),c.jsxs("div",{className:"card",children:[c.jsxs("h3",{children:[c.jsx(Ry,{size:20,style:{marginRight:"8px",verticalAlign:"middle"}}),"Quick Stats"]}),c.jsx("p",{children:"Summary statistics and financial data are available on the Dashboard. Use the visualizations above for detailed network exploration."}),c.jsxs(kt,{to:"/",className:"btn btn-secondary",style:{marginTop:"12px"},children:[c.jsx(Sw,{size:16,style:{marginRight:"6px"}}),"View Dashboard"]})]}),c.jsx("style",{children:` - .visualization-cards { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); - gap: 24px; - margin-bottom: 24px; - } - - .viz-card { - display: flex; - align-items: flex-start; - gap: 20px; - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 12px; - padding: 24px; - text-decoration: none; - color: inherit; - transition: all 0.2s ease; - position: relative; - } - - .viz-card:hover { - border-color: var(--primary-color); - box-shadow: 0 4px 20px rgba(91, 79, 255, 0.15); - transform: translateY(-2px); - } - - .viz-card-icon { - flex-shrink: 0; - width: 80px; - height: 80px; - display: flex; - align-items: center; - justify-content: center; - background: linear-gradient(135deg, var(--primary-color), #7c6fff); - border-radius: 12px; - color: white; - } - - .viz-card-content { - flex: 1; - } - - .viz-card-content h3 { - margin: 0 0 8px 0; - font-size: 1.25rem; - color: var(--text-primary); - } - - .viz-card-content p { - margin: 0 0 12px 0; - color: var(--text-secondary); - line-height: 1.5; - } - - .viz-card-features { - margin: 0; - padding-left: 20px; - color: var(--text-muted); - font-size: 0.9rem; - } - - .viz-card-features li { - margin-bottom: 4px; - } - - .viz-card-arrow { - position: absolute; - right: 20px; - top: 50%; - transform: translateY(-50%); - font-size: 24px; - color: var(--primary-color); - opacity: 0; - transition: opacity 0.2s ease; - } - - .viz-card:hover .viz-card-arrow { - opacity: 1; - } - - .viz-card-beta-badge { - display: inline-block; - font-size: 0.7rem; - background: linear-gradient(135deg, #10b981, #059669); - color: white; - padding: 2px 8px; - border-radius: 4px; - margin-left: 10px; - vertical-align: middle; - font-weight: 600; - text-transform: uppercase; - } - - .pyramid-preview { - margin-top: 16px; - display: flex; - flex-direction: column; - align-items: center; - gap: 2px; - } - - .pyramid-tier { - text-align: center; - padding: 4px 8px; - font-size: 0.7rem; - font-weight: 500; - border-radius: 2px; - color: white; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - .pyramid-tier.tier-1 { - width: 30%; - background: #dc2626; - } - - .pyramid-tier.tier-2 { - width: 45%; - background: #ea580c; - } - - .pyramid-tier.tier-3 { - width: 60%; - background: #f59e0b; - } - - .pyramid-tier.tier-4 { - width: 75%; - background: #5b4fff; - } - - .pyramid-tier.tier-5 { - width: 90%; - background: #10b981; - } - - .pyramid-tier.tier-6 { - width: 100%; - background: #6366f1; - } - - @media (max-width: 768px) { - .visualization-cards { - grid-template-columns: 1fr; - } - - .viz-card { - flex-direction: column; - text-align: center; - } - - .viz-card-icon { - margin: 0 auto; - } - - .viz-card-features { - text-align: left; - } - - .viz-card-arrow { - display: none; - } - - .pyramid-tier { - font-size: 0.6rem; - } - } - `})]})}function SC(e,n){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var i,o,a,s,l=[],f=!0,u=!1;try{if(a=(r=r.call(e)).next,n===0){if(Object(r)!==r)return;f=!1}else for(;!(f=(i=a.call(r)).done)&&(l.push(i.value),l.length!==n);f=!0);}catch(h){u=!0,o=h}finally{try{if(!f&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(u)throw o}}return l}}function jC(e,n,r){return n=MC(n),n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function hp(e,n){return EC(e)||SC(e,n)||W0(e,n)||PC()}function NC(e){return CC(e)||TC(e)||W0(e)||AC()}function CC(e){if(Array.isArray(e))return pc(e)}function EC(e){if(Array.isArray(e))return e}function TC(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function W0(e,n){if(e){if(typeof e=="string")return pc(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return pc(e,n)}}function pc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=new Array(n);re.length)&&(n=e.length);for(var r=0,i=Array(n);r1&&arguments[1]!==void 0?arguments[1]:{},r=n.wrapperElementType,i=r===void 0?"div":r,o=n.nodeMapper,a=o===void 0?function(h){return h}:o,s=n.methodNames,l=s===void 0?[]:s,f=n.initPropNames,u=f===void 0?[]:f;return E.forwardRef(function(h,d){var p=E.useRef(),y=E.useMemo(function(){var _=Object.fromEntries(u.filter(function(m){return h.hasOwnProperty(m)}).map(function(m){return[m,h[m]]}));return e(_)},[]);mp(function(){y(a(p.current))},E.useLayoutEffect),mp(function(){return y._destructor instanceof Function?y._destructor:void 0});var g=E.useCallback(function(_){for(var m=arguments.length,v=new Array(m>1?m-1:0),w=1;w1&&arguments[1]!==void 0?arguments[1]:E.useEffect,r=E.useRef(),i=E.useRef(!1),o=E.useRef(!1),a=E.useState(0),s=UC(a,2);s[0];var l=s[1];i.current&&(o.current=!0),n(function(){return i.current||(r.current=e(),i.current=!0),l(function(f){return f+1}),function(){o.current&&r.current&&r.current()}},[])}var HC=typeof global=="object"&&global&&global.Object===Object&&global,VC=typeof self=="object"&&self&&self.Object===Object&&self,G0=HC||VC||Function("return this")(),As=G0.Symbol,X0=Object.prototype,WC=X0.hasOwnProperty,qC=X0.toString,Mi=As?As.toStringTag:void 0;function GC(e){var n=WC.call(e,Mi),r=e[Mi];try{e[Mi]=void 0;var i=!0}catch{}var o=qC.call(e);return i&&(n?e[Mi]=r:delete e[Mi]),o}var XC=Object.prototype,YC=XC.toString;function QC(e){return YC.call(e)}var KC="[object Null]",JC="[object Undefined]",gp=As?As.toStringTag:void 0;function ZC(e){return e==null?e===void 0?JC:KC:gp&&gp in Object(e)?GC(e):QC(e)}function eE(e){return e!=null&&typeof e=="object"}var tE="[object Symbol]";function nE(e){return typeof e=="symbol"||eE(e)&&ZC(e)==tE}var rE=/\s/;function iE(e){for(var n=e.length;n--&&rE.test(e.charAt(n)););return n}var oE=/^\s+/;function aE(e){return e&&e.slice(0,iE(e)+1).replace(oE,"")}function Ps(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var yp=NaN,sE=/^[-+]0x[0-9a-f]+$/i,lE=/^0b[01]+$/i,uE=/^0o[0-7]+$/i,cE=parseInt;function vp(e){if(typeof e=="number")return e;if(nE(e))return yp;if(Ps(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=Ps(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=aE(e);var r=lE.test(e);return r||uE.test(e)?cE(e.slice(2),r?2:8):sE.test(e)?yp:+e}var Yl=function(){return G0.Date.now()},fE="Expected a function",dE=Math.max,hE=Math.min;function Y0(e,n,r){var i,o,a,s,l,f,u=0,h=!1,d=!1,p=!0;if(typeof e!="function")throw new TypeError(fE);n=vp(n)||0,Ps(r)&&(h=!!r.leading,d="maxWait"in r,a=d?dE(vp(r.maxWait)||0,n):a,p="trailing"in r?!!r.trailing:p);function y(k){var N=i,A=o;return i=o=void 0,u=k,s=e.apply(A,N),s}function g(k){return u=k,l=setTimeout(m,n),h?y(k):s}function x(k){var N=k-f,A=k-u,$=n-N;return d?hE($,a-A):$}function _(k){var N=k-f,A=k-u;return f===void 0||N>=n||N<0||d&&A>=a}function m(){var k=Yl();if(_(k))return v(k);l=setTimeout(m,x(k))}function v(k){return l=void 0,p&&i?y(k):(i=o=void 0,s)}function w(){l!==void 0&&clearTimeout(l),u=0,i=f=o=l=void 0}function b(){return l===void 0?s:v(Yl())}function S(){var k=Yl(),N=_(k);if(i=arguments,o=this,f=k,N){if(l===void 0)return g(f);if(d)return clearTimeout(l),l=setTimeout(m,n),y(f)}return l===void 0&&(l=setTimeout(m,n)),s}return S.cancel=w,S.flush=b,S}var pE="Expected a function";function mE(e,n,r){var i=!0,o=!0;if(typeof e!="function")throw new TypeError(pE);return Ps(r)&&(i="leading"in r?!!r.leading:i,o="trailing"in r?!!r.trailing:o),Y0(e,n,{leading:i,maxWait:n,trailing:o})}var gr=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var n=1.70158;return e===1?1:e*e*((n+1)*e-n)},Out:function(e){var n=1.70158;return e===0?0:--e*e*((n+1)*e+n)+1},InOut:function(e){var n=2.5949095;return(e*=2)<1?.5*(e*e*((n+1)*e-n)):.5*((e-=2)*e*((n+1)*e+n)+2)}}),Bounce:Object.freeze({In:function(e){return 1-gr.Bounce.Out(1-e)},Out:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},InOut:function(e){return e<.5?gr.Bounce.In(e*2)*.5:gr.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e1e4?1e4:e,{In:function(n){return Math.pow(n,e)},Out:function(n){return 1-Math.pow(1-n,e)},InOut:function(n){return n<.5?Math.pow(n*2,e)/2:(1-Math.pow(2-n*2,e))/2+.5}}}}),qi=function(){return performance.now()},Q0=function(){function e(){for(var n=[],r=0;r0;){this._tweensAddedDuringUpdate={};for(var o=0;o1?a(e[r],e[r-1],r-i):a(e[o],e[o+1>r?r:o+1],i-o)},Utils:{Linear:function(e,n,r){return(n-e)*r+e}}},K0=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),yc=new Q0,xp=function(){function e(n,r){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=gr.Linear.None,this._interpolationFunction=gc.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=K0.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=n,typeof r=="object"?(this._group=r,r.add(this)):r===!0&&(this._group=yc,yc.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(n,r){if(r===void 0&&(r=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=n,this._propertiesAreSetUp=!1,this._duration=r<0?0:r,this},e.prototype.duration=function(n){return n===void 0&&(n=1e3),this._duration=n<0?0:n,this},e.prototype.dynamic=function(n){return n===void 0&&(n=!1),this._isDynamic=n,this},e.prototype.start=function(n,r){if(n===void 0&&(n=qi()),r===void 0&&(r=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=n,this._startTime+=this._delayTime,!this._propertiesAreSetUp||r){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var a in this._valuesEnd)o[a]=this._valuesEnd[a];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,r)}return this},e.prototype.startFromCurrentValues=function(n){return this.start(n,!0)},e.prototype._setupProperties=function(n,r,i,o,a){for(var s in i){var l=n[s],f=Array.isArray(l),u=f?"array":typeof l,h=!f&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(h){var d=i[s];if(d.length===0)continue;for(var p=[l],y=0,g=d.length;y"u"||a)&&(r[s]=l),f||(r[s]*=1),h?o[s]=i[s].slice().reverse():o[s]=r[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(n){return n===void 0&&(n=qi()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=n,this)},e.prototype.resume=function(n){return n===void 0&&(n=qi()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=n-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var n=0,r=this._chainedTweens.length;nf)return 1;var x=Math.trunc(s/l),_=s-x*l,m=Math.min(_/i._duration,1);return m===0&&s===i._duration?1:m},h=u(),d=this._easingFunction(h);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,d),this._onUpdateCallback&&this._onUpdateCallback(this._object,h),this._duration===0||s>=this._duration)if(this._repeat>0){var p=Math.min(Math.trunc((s-this._duration)/l)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=p);for(a in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[a]=="string"&&(this._valuesStartRepeat[a]=this._valuesStartRepeat[a]+parseFloat(this._valuesEnd[a])),this._yoyo&&this._swapEndStartRepeatValues(a),this._valuesStart[a]=this._valuesStartRepeat[a];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=l*p,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var y=0,g=this._chainedTweens.length;ye.length)&&(n=e.length);for(var r=0,i=Array(n);r=0,a=!r&&o&&(n==="hex"||n==="hex6"||n==="hex3"||n==="hex4"||n==="hex8"||n==="name");return a?n==="name"&&this._a===0?this.toName():this.toRgbString():(n==="rgb"&&(i=this.toRgbString()),n==="prgb"&&(i=this.toPercentageRgbString()),(n==="hex"||n==="hex6")&&(i=this.toHexString()),n==="hex3"&&(i=this.toHexString(!0)),n==="hex4"&&(i=this.toHex8String(!0)),n==="hex8"&&(i=this.toHex8String()),n==="name"&&(i=this.toName()),n==="hsl"&&(i=this.toHslString()),n==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return Q(this.toString())},_applyModification:function(n,r){var i=n.apply(null,[this].concat([].slice.call(r)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(OE,arguments)},brighten:function(){return this._applyModification(zE,arguments)},darken:function(){return this._applyModification(FE,arguments)},desaturate:function(){return this._applyModification(PE,arguments)},saturate:function(){return this._applyModification(RE,arguments)},greyscale:function(){return this._applyModification(ME,arguments)},spin:function(){return this._applyModification($E,arguments)},_applyCombination:function(n,r){return n.apply(null,[this].concat([].slice.call(r)))},analogous:function(){return this._applyCombination(LE,arguments)},complement:function(){return this._applyCombination(DE,arguments)},monochromatic:function(){return this._applyCombination(UE,arguments)},splitcomplement:function(){return this._applyCombination(IE,arguments)},triad:function(){return this._applyCombination(jp,[3])},tetrad:function(){return this._applyCombination(jp,[4])}};Q.fromRatio=function(e,n){if(Rs(e)=="object"){var r={};for(var i in e)e.hasOwnProperty(i)&&(i==="a"?r[i]=e[i]:r[i]=Gi(e[i]));e=r}return Q(e,n)};function NE(e){var n={r:0,g:0,b:0},r=1,i=null,o=null,a=null,s=!1,l=!1;return typeof e=="string"&&(e=qE(e)),Rs(e)=="object"&&(sn(e.r)&&sn(e.g)&&sn(e.b)?(n=CE(e.r,e.g,e.b),s=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):sn(e.h)&&sn(e.s)&&sn(e.v)?(i=Gi(e.s),o=Gi(e.v),n=TE(e.h,i,o),s=!0,l="hsv"):sn(e.h)&&sn(e.s)&&sn(e.l)&&(i=Gi(e.s),a=Gi(e.l),n=EE(e.h,i,a),s=!0,l="hsl"),e.hasOwnProperty("a")&&(r=e.a)),r=J0(r),{ok:s,format:e.format||l,r:Math.min(255,Math.max(n.r,0)),g:Math.min(255,Math.max(n.g,0)),b:Math.min(255,Math.max(n.b,0)),a:r}}function CE(e,n,r){return{r:he(e,255)*255,g:he(n,255)*255,b:he(r,255)*255}}function wp(e,n,r){e=he(e,255),n=he(n,255),r=he(r,255);var i=Math.max(e,n,r),o=Math.min(e,n,r),a,s,l=(i+o)/2;if(i==o)a=s=0;else{var f=i-o;switch(s=l>.5?f/(2-i-o):f/(i+o),i){case e:a=(n-r)/f+(n1&&(d-=1),d<1/6?u+(h-u)*6*d:d<1/2?h:d<2/3?u+(h-u)*(2/3-d)*6:u}if(n===0)i=o=a=r;else{var l=r<.5?r*(1+n):r+n-r*n,f=2*r-l;i=s(f,l,e+1/3),o=s(f,l,e),a=s(f,l,e-1/3)}return{r:i*255,g:o*255,b:a*255}}function bp(e,n,r){e=he(e,255),n=he(n,255),r=he(r,255);var i=Math.max(e,n,r),o=Math.min(e,n,r),a,s,l=i,f=i-o;if(s=i===0?0:f/i,i==o)a=0;else{switch(i){case e:a=(n-r)/f+(n>1)+720)%360;--n;)i.h=(i.h+o)%360,a.push(Q(i));return a}function UE(e,n){n=n||6;for(var r=Q(e).toHsv(),i=r.h,o=r.s,a=r.v,s=[],l=1/n;n--;)s.push(Q({h:i,s:o,v:a})),a=(a+l)%1;return s}Q.mix=function(e,n,r){r=r===0?0:r||50;var i=Q(e).toRgb(),o=Q(n).toRgb(),a=r/100,s={r:(o.r-i.r)*a+i.r,g:(o.g-i.g)*a+i.g,b:(o.b-i.b)*a+i.b,a:(o.a-i.a)*a+i.a};return Q(s)};Q.readability=function(e,n){var r=Q(e),i=Q(n);return(Math.max(r.getLuminance(),i.getLuminance())+.05)/(Math.min(r.getLuminance(),i.getLuminance())+.05)};Q.isReadable=function(e,n,r){var i=Q.readability(e,n),o,a;switch(a=!1,o=GE(r),o.level+o.size){case"AAsmall":case"AAAlarge":a=i>=4.5;break;case"AAlarge":a=i>=3;break;case"AAAsmall":a=i>=7;break}return a};Q.mostReadable=function(e,n,r){var i=null,o=0,a,s,l,f;r=r||{},s=r.includeFallbackColors,l=r.level,f=r.size;for(var u=0;uo&&(o=a,i=Q(n[u]));return Q.isReadable(e,i,{level:l,size:f})||!s?i:(r.includeFallbackColors=!1,Q.mostReadable(e,["#fff","#000"],r))};var vc=Q.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},BE=Q.hexNames=HE(vc);function HE(e){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[e[r]]=r);return n}function J0(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function he(e,n){VE(e)&&(e="100%");var r=WE(e);return e=Math.min(n,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*n,10)/100),Math.abs(e-n)<1e-6?1:e%n/parseFloat(n)}function ul(e){return Math.min(1,Math.max(0,e))}function st(e){return parseInt(e,16)}function VE(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function WE(e){return typeof e=="string"&&e.indexOf("%")!=-1}function Ft(e){return e.length==1?"0"+e:""+e}function Gi(e){return e<=1&&(e=e*100+"%"),e}function Z0(e){return Math.round(parseFloat(e)*255).toString(16)}function Np(e){return st(e)/255}var At=function(){var e="[-\\+]?\\d+%?",n="[-\\+]?\\d*\\.\\d+%?",r="(?:"+n+")|(?:"+e+")",i="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?",o="[\\s|\\(]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")[,|\\s]+("+r+")\\s*\\)?";return{CSS_UNIT:new RegExp(r),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+o),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+o),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+o),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function sn(e){return!!At.CSS_UNIT.exec(e)}function qE(e){e=e.replace(SE,"").replace(jE,"").toLowerCase();var n=!1;if(vc[e])e=vc[e],n=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r;return(r=At.rgb.exec(e))?{r:r[1],g:r[2],b:r[3]}:(r=At.rgba.exec(e))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=At.hsl.exec(e))?{h:r[1],s:r[2],l:r[3]}:(r=At.hsla.exec(e))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=At.hsv.exec(e))?{h:r[1],s:r[2],v:r[3]}:(r=At.hsva.exec(e))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=At.hex8.exec(e))?{r:st(r[1]),g:st(r[2]),b:st(r[3]),a:Np(r[4]),format:n?"name":"hex8"}:(r=At.hex6.exec(e))?{r:st(r[1]),g:st(r[2]),b:st(r[3]),format:n?"name":"hex"}:(r=At.hex4.exec(e))?{r:st(r[1]+""+r[1]),g:st(r[2]+""+r[2]),b:st(r[3]+""+r[3]),a:Np(r[4]+""+r[4]),format:n?"name":"hex8"}:(r=At.hex3.exec(e))?{r:st(r[1]+""+r[1]),g:st(r[2]+""+r[2]),b:st(r[3]+""+r[3]),format:n?"name":"hex"}:!1}function GE(e){var n,r;return e=e||{level:"AA",size:"small"},n=(e.level||"AA").toUpperCase(),r=(e.size||"small").toLowerCase(),n!=="AA"&&n!=="AAA"&&(n="AA"),r!=="small"&&r!=="large"&&(r="small"),{level:n,size:r}}function xc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r0&&arguments[0]!==void 0?arguments[0]:6;QE(this,e),Cp(this,nr,void 0),Cp(this,ln,void 0),Ep(ln,this,n),this.reset()}return JE(e,[{key:"reset",value:function(){Ep(nr,this,["__reserved for background__"])}},{key:"register",value:function(r){if(yt(nr,this).length>=Math.pow(2,24-yt(ln,this)))return null;var i=yt(nr,this).length,o=Tp(i,yt(ln,this)),a=a3(i+(o<<24-yt(ln,this)));return yt(nr,this).push(r),a}},{key:"lookup",value:function(r){if(!r)return null;var i=typeof r=="string"?s3(r):tv.apply(void 0,t3(r));if(!i)return null;var o=i&Math.pow(2,24-yt(ln,this))-1,a=i>>24-yt(ln,this)&Math.pow(2,yt(ln,this))-1;return Tp(o,yt(ln,this))!==a||o>=yt(nr,this).length?null:yt(nr,this)[o]}}])}(),qo,me,nv,rv,ar,Ap,iv,ov,av,Vf,_c,wc,Po={},sv=[],u3=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,cl=Array.isArray;function Kt(e,n){for(var r in n)e[r]=n[r];return e}function Wf(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function c3(e,n,r){var i,o,a,s={};for(a in n)a=="key"?i=n[a]:a=="ref"?o=n[a]:s[a]=n[a];if(arguments.length>2&&(s.children=arguments.length>3?qo.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)s[a]===void 0&&(s[a]=e.defaultProps[a]);return io(e,s,i,o,null)}function io(e,n,r,i,o){var a={type:e,props:n,key:r,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++nv,__i:-1,__u:0};return o==null&&me.vnode!=null&&me.vnode(a),a}function fl(e){return e.children}function Ga(e,n){this.props=e,this.context=n}function fi(e,n){if(n==null)return e.__?fi(e.__,e.__i+1):null;for(var r;nl&&ar.sort(ov),e=ar.shift(),l=ar.length,e.__d&&(r=void 0,i=void 0,o=(i=(n=e).__v).__e,a=[],s=[],n.__P&&((r=Kt({},i)).__v=i.__v+1,me.vnode&&me.vnode(r),qf(n.__P,r,i,n.__n,n.__P.namespaceURI,32&i.__u?[o]:null,a,o??fi(i),!!(32&i.__u),s),r.__v=i.__v,r.__.__k[r.__i]=r,fv(a,r,s),i.__e=i.__=null,r.__e!=o&&lv(r)));Ms.__r=0}function uv(e,n,r,i,o,a,s,l,f,u,h){var d,p,y,g,x,_,m,v=i&&i.__k||sv,w=n.length;for(f=f3(r,n,v,f,w),d=0;d0?io(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):s).__=e,s.__b=e.__b+1,l=null,(u=s.__i=d3(s,r,f,d))!=-1&&(d--,(l=r[u])&&(l.__u|=2)),l==null||l.__v==null?(u==-1&&(o>h?p--:of?p--:p++,s.__u|=4))):e.__k[a]=null;if(d)for(a=0;a(h?1:0)){for(o=r-1,a=r+1;o>=0||a=0?o--:a++])!=null&&!(2&u.__u)&&l==u.key&&f==u.type)return s}return-1}function Rp(e,n,r){n[0]=="-"?e.setProperty(n,r??""):e[n]=r==null?"":typeof r!="number"||u3.test(n)?r:r+"px"}function Sa(e,n,r,i,o){var a,s;e:if(n=="style")if(typeof r=="string")e.style.cssText=r;else{if(typeof i=="string"&&(e.style.cssText=i=""),i)for(n in i)r&&n in r||Rp(e.style,n,"");if(r)for(n in r)i&&r[n]==i[n]||Rp(e.style,n,r[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(av,"$1")),s=n.toLowerCase(),n=s in e||n=="onFocusOut"||n=="onFocusIn"?s.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=r,r?i?r.u=i.u:(r.u=Vf,e.addEventListener(n,a?wc:_c,a)):e.removeEventListener(n,a?wc:_c,a);else{if(o=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=r??"";break e}catch{}typeof r=="function"||(r==null||r===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&r==1?"":r))}}function Mp(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n.t==null)n.t=Vf++;else if(n.t0?e:cl(e)?e.map(dv):Kt({},e)}function h3(e,n,r,i,o,a,s,l,f){var u,h,d,p,y,g,x,_=r.props,m=n.props,v=n.type;if(v=="svg"?o="http://www.w3.org/2000/svg":v=="math"?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),a!=null){for(u=0;u2&&(l.children=arguments.length>3?qo.call(arguments,2):r),io(e.type,l,i||e.key,o||e.ref,null)}qo=sv.slice,me={__e:function(e,n,r,i){for(var o,a,s;n=n.__;)if((o=n.__c)&&!o.__)try{if((a=o.constructor)&&a.getDerivedStateFromError!=null&&(o.setState(a.getDerivedStateFromError(e)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(e,i||{}),s=o.__d),s)return o.__E=o}catch(l){e=l}throw e}},nv=0,rv=function(e){return e!=null&&e.constructor==null},Ga.prototype.setState=function(e,n){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Kt({},this.state),typeof e=="function"&&(e=e(Kt({},r),this.props)),e&&Kt(r,e),e!=null&&this.__v&&(n&&this._sb.push(n),Pp(this))},Ga.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Pp(this))},Ga.prototype.render=fl,ar=[],iv=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ov=function(e,n){return e.__v.__b-n.__v.__b},Ms.__r=0,av=/(PointerCapture)$|Capture$/i,Vf=0,_c=Mp(!1),wc=Mp(!0);function Op(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var E3=`.float-tooltip-kap { - position: absolute; - width: max-content; /* prevent shrinking near right edge */ - max-width: max(50%, 150px); - padding: 3px 5px; - border-radius: 3px; - font: 12px sans-serif; - color: #eee; - background: rgba(0,0,0,0.6); - pointer-events: none; -} -`;C3(E3);var T3=Hf({props:{content:{default:!1},offsetX:{triggerUpdate:!1},offsetY:{triggerUpdate:!1}},init:function(n,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},o=i.style,a=o===void 0?{}:o,s=!!n&&Os(n)==="object"&&!!n.node&&typeof n.node=="function",l=ut(s?n.node():n);l.style("position")==="static"&&l.style("position","relative"),r.tooltipEl=l.append("div").attr("class","float-tooltip-kap"),Object.entries(a).forEach(function(u){var h=w3(u,2),d=h[0],p=h[1];return r.tooltipEl.style(d,p)}),r.tooltipEl.style("left","-10000px").style("display","none");var f="tooltip-".concat(Math.round(Math.random()*1e12));r.mouseInside=!1,l.on("mousemove.".concat(f),function(u){r.mouseInside=!0;var h=Yt(u),d=l.node(),p=d.offsetWidth,y=d.offsetHeight,g=[r.offsetX===null||r.offsetX===void 0?"-".concat(h[0]/p*100,"%"):typeof r.offsetX=="number"?"calc(-50% + ".concat(r.offsetX,"px)"):r.offsetX,r.offsetY===null||r.offsetY===void 0?y>130&&y-h[1]<100?"calc(-100% - 6px)":"21px":typeof r.offsetY=="number"?r.offsetY<0?"calc(-100% - ".concat(Math.abs(r.offsetY),"px)"):"".concat(r.offsetY,"px"):r.offsetY];r.tooltipEl.style("left",h[0]+"px").style("top",h[1]+"px").style("transform","translate(".concat(g.join(","),")")),r.content&&r.tooltipEl.style("display","inline")}),l.on("mouseover.".concat(f),function(){r.mouseInside=!0,r.content&&r.tooltipEl.style("display","inline")}),l.on("mouseout.".concat(f),function(){r.mouseInside=!1,r.tooltipEl.style("display","none")})},update:function(n){n.tooltipEl.style("display",n.content&&n.mouseInside?"inline":"none"),n.content?n.content instanceof HTMLElement?(n.tooltipEl.text(""),n.tooltipEl.append(function(){return n.content})):typeof n.content=="string"?n.tooltipEl.html(n.content):j3(n.content)?(n.tooltipEl.text(""),N3(n.content,n.tooltipEl.node())):(n.tooltipEl.style("display","none"),console.warn("Tooltip content is invalid, skipping.",n.content,n.content.toString())):n.tooltipEl.text("")}});function A3(e,n,r){var i,o=1;e==null&&(e=0),n==null&&(n=0),r==null&&(r=0);function a(){var s,l=i.length,f,u=0,h=0,d=0;for(s=0;s=(f=(s+l)/2))?s=f:l=f,i=o,!(o=o[d=+h]))return i[d]=a,e;if(u=+e._x.call(null,o.data),n===u)return a.next=o,i?i[d]=a:e._root=a,e;do i=i?i[d]=new Array(2):e._root=new Array(2),(h=n>=(f=(s+l)/2))?s=f:l=f;while((d=+h)==(p=+(u>=f)));return i[p]=o,i[d]=a,e}function R3(e){Array.isArray(e)||(e=Array.from(e));const n=e.length,r=new Float64Array(n);let i=1/0,o=-1/0;for(let a=0,s;ao&&(o=s));if(i>o)return this;this.cover(i).cover(o);for(let a=0;ae||e>=r;)switch(s=+(es||(a=u.x1)=d))&&(u=l[l.length-1],l[l.length-1]=l[l.length-1-h],l[l.length-1-h]=u)}else{var p=Math.abs(e-+this._x.call(null,f.data));p=(u=(s+l)/2))?s=u:l=u,n=r,!(r=r[d=+h]))return this;if(!r.length)break;n[d+1&1]&&(i=n,p=d)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(a=r.next)&&delete r.next,o?(a?o.next=a:delete o.next,this):n?(a?n[d]=a:delete n[d],(r=n[0]||n[1])&&r===(n[1]||n[0])&&!r.length&&(i?i[p]=r:this._root=r),this):(this._root=a,this)}function D3(e){for(var n=0,r=e.length;n=(g=(f+d)/2))?f=g:d=g,(S=r>=(x=(u+p)/2))?u=x:p=x,(k=i>=(_=(h+y)/2))?h=_:y=_,a=s,!(s=s[N=k<<2|S<<1|b]))return a[N]=l,e;if(m=+e._x.call(null,s.data),v=+e._y.call(null,s.data),w=+e._z.call(null,s.data),n===m&&r===v&&i===w)return l.next=s,a?a[N]=l:e._root=l,e;do a=a?a[N]=new Array(8):e._root=new Array(8),(b=n>=(g=(f+d)/2))?f=g:d=g,(S=r>=(x=(u+p)/2))?u=x:p=x,(k=i>=(_=(h+y)/2))?h=_:y=_;while((N=k<<2|S<<1|b)===(A=(w>=_)<<2|(v>=x)<<1|m>=g));return a[A]=s,a[N]=l,e}function q3(e){Array.isArray(e)||(e=Array.from(e));const n=e.length,r=new Float64Array(n),i=new Float64Array(n),o=new Float64Array(n);let a=1/0,s=1/0,l=1/0,f=-1/0,u=-1/0,h=-1/0;for(let d=0,p,y,g,x;df&&(f=y),gu&&(u=g),xh&&(h=x));if(a>f||s>u||l>h)return this;this.cover(a,s,l).cover(f,u,h);for(let d=0;de||e>=s||o>n||n>=l||a>r||r>=f;)switch(p=(rg||(u=w.y0)>x||(h=w.z0)>_||(d=w.x1)=N)<<2|(n>=k)<<1|e>=S)&&(w=m[m.length-1],m[m.length-1]=m[m.length-1-b],m[m.length-1-b]=w)}else{var A=e-+this._x.call(null,v.data),$=n-+this._y.call(null,v.data),j=r-+this._z.call(null,v.data),R=A*A+$*$+j*j;if(RMath.sqrt((e-i)**2+(n-o)**2+(r-a)**2);function J3(e,n,r,i){const o=[],a=e-i,s=n-i,l=r-i,f=e+i,u=n+i,h=r+i;return this.visit((d,p,y,g,x,_,m)=>{if(!d.length)do{const v=d.data;K3(e,n,r,this._x(v),this._y(v),this._z(v))<=i&&o.push(v)}while(d=d.next);return p>f||y>u||g>h||x=(x=(s+u)/2))?s=x:u=x,(w=y>=(_=(l+h)/2))?l=_:h=_,(b=g>=(m=(f+d)/2))?f=m:d=m,n=r,!(r=r[S=b<<2|w<<1|v]))return this;if(!r.length)break;(n[S+1&7]||n[S+2&7]||n[S+3&7]||n[S+4&7]||n[S+5&7]||n[S+6&7]||n[S+7&7])&&(i=n,k=S)}for(;r.data!==e;)if(o=r,!(r=r.next))return this;return(a=r.next)&&delete r.next,o?(a?o.next=a:delete o.next,this):n?(a?n[S]=a:delete n[S],(r=n[0]||n[1]||n[2]||n[3]||n[4]||n[5]||n[6]||n[7])&&r===(n[7]||n[6]||n[5]||n[4]||n[3]||n[2]||n[1]||n[0])&&!r.length&&(i?i[k]=r:this._root=r),this):(this._root=a,this)}function eT(e){for(var n=0,r=e.length;n1&&($=N.y+N.vy-k.y-k.vy||dn(h)),l>2&&(j=N.z+N.vz-k.z-k.vz||dn(h)),R=Math.sqrt(A*A+$*$+j*j),R=(R-a[b])/R*m*i[b],A*=R,$*=R,j*=R,N.vx-=A*(T=u[b]),l>1&&(N.vy-=$*T),l>2&&(N.vz-=j*T),k.vx+=A*(T=1-T),l>1&&(k.vy+=$*T),l>2&&(k.vz+=j*T)}function g(){if(s){var m,v=s.length,w=e.length,b=new Map(s.map((k,N)=>[n(k,N,s),k])),S;for(m=0,f=new Array(v);mtypeof w=="function")||Math.random,l=v.find(w=>[1,2,3].includes(w))||2,g()},y.links=function(m){return arguments.length?(e=m,g(),y):e},y.id=function(m){return arguments.length?(n=m,y):n},y.iterations=function(m){return arguments.length?(d=+m,y):d},y.strength=function(m){return arguments.length?(r=typeof m=="function"?m:gn(+m),x(),y):r},y.distance=function(m){return arguments.length?(o=typeof m=="function"?m:gn(+m),_(),y):o},y}const hT=1664525,pT=1013904223,Ip=4294967296;function mT(){let e=1;return()=>(e=(hT*e+pT)%Ip)/Ip}var Lp=3;function Ql(e){return e.x}function Up(e){return e.y}function gT(e){return e.z}var yT=10,vT=Math.PI*(3-Math.sqrt(5)),xT=Math.PI*20/(9+Math.sqrt(221));function _T(e,n){n=n||2;var r=Math.min(Lp,Math.max(1,Math.round(n))),i,o=1,a=.001,s=1-Math.pow(a,1/300),l=0,f=.6,u=new Map,h=Ff(y),d=Ho("tick","end"),p=mT();e==null&&(e=[]);function y(){g(),d.call("tick",i),o1&&(b.fy==null?b.y+=b.vy*=f:(b.y=b.fy,b.vy=0)),r>2&&(b.fz==null?b.z+=b.vz*=f:(b.z=b.fz,b.vz=0));return i}function x(){for(var m=0,v=e.length,w;m1&&isNaN(w.y)||r>2&&isNaN(w.z)){var b=yT*(r>2?Math.cbrt(.5+m):r>1?Math.sqrt(.5+m):m),S=m*vT,k=m*xT;r===1?w.x=b:r===2?(w.x=b*Math.cos(S),w.y=b*Math.sin(S)):(w.x=b*Math.sin(S)*Math.cos(k),w.y=b*Math.cos(S),w.z=b*Math.sin(S)*Math.sin(k))}(isNaN(w.vx)||r>1&&isNaN(w.vy)||r>2&&isNaN(w.vz))&&(w.vx=0,r>1&&(w.vy=0),r>2&&(w.vz=0))}}function _(m){return m.initialize&&m.initialize(e,p,r),m}return x(),i={tick:g,restart:function(){return h.restart(y),i},stop:function(){return h.stop(),i},numDimensions:function(m){return arguments.length?(r=Math.min(Lp,Math.max(1,Math.round(m))),u.forEach(_),i):r},nodes:function(m){return arguments.length?(e=m,x(),u.forEach(_),i):e},alpha:function(m){return arguments.length?(o=+m,i):o},alphaMin:function(m){return arguments.length?(a=+m,i):a},alphaDecay:function(m){return arguments.length?(s=+m,i):+s},alphaTarget:function(m){return arguments.length?(l=+m,i):l},velocityDecay:function(m){return arguments.length?(f=1-m,i):1-f},randomSource:function(m){return arguments.length?(p=m,u.forEach(_),i):p},force:function(m,v){return arguments.length>1?(v==null?u.delete(m):u.set(m,_(v)),i):u.get(m)},find:function(){var m=Array.prototype.slice.call(arguments),v=m.shift()||0,w=(r>1?m.shift():null)||0,b=(r>2?m.shift():null)||0,S=m.shift()||1/0,k=0,N=e.length,A,$,j,R,T,P;for(S*=S,k=0;k1?(d.on(m,v),i):d.on(m)}}}function wT(){var e,n,r,i,o,a=gn(-30),s,l=1,f=1/0,u=.81;function h(g){var x,_=e.length,m=(n===1?gv(e,Ql):n===2?If(e,Ql,Up):n===3?vv(e,Ql,Up,gT):null).visitAfter(p);for(o=g,x=0;x<_;++x)r=e[x],m.visit(y)}function d(){if(e){var g,x=e.length,_;for(s=new Array(x),g=0;g1&&(g.y=b/v),n>2&&(g.z=S/v)}else{_=g,_.x=_.data.x,n>1&&(_.y=_.data.y),n>2&&(_.z=_.data.z);do x+=s[_.data.index];while(_=_.next)}g.value=x}function y(g,x,_,m,v){if(!g.value)return!0;var w=[_,m,v][n-1],b=g.x-r.x,S=n>1?g.y-r.y:0,k=n>2?g.z-r.z:0,N=w-x,A=b*b+S*S+k*k;if(N*N/u1&&S===0&&(S=dn(i),A+=S*S),n>2&&k===0&&(k=dn(i),A+=k*k),A1&&(r.vy+=S*g.value*o/A),n>2&&(r.vz+=k*g.value*o/A)),!0;if(g.length||A>=f)return;(g.data!==r||g.next)&&(b===0&&(b=dn(i),A+=b*b),n>1&&S===0&&(S=dn(i),A+=S*S),n>2&&k===0&&(k=dn(i),A+=k*k),A1&&(r.vy+=S*N),n>2&&(r.vz+=k*N));while(g=g.next)}return h.initialize=function(g,...x){e=g,i=x.find(_=>typeof _=="function")||Math.random,n=x.find(_=>[1,2,3].includes(_))||2,d()},h.strength=function(g){return arguments.length?(a=typeof g=="function"?g:gn(+g),d(),h):a},h.distanceMin=function(g){return arguments.length?(l=g*g,h):Math.sqrt(l)},h.distanceMax=function(g){return arguments.length?(f=g*g,h):Math.sqrt(f)},h.theta=function(g){return arguments.length?(u=g*g,h):Math.sqrt(u)},h}function bT(e,n,r,i){var o,a,s=gn(.1),l,f;typeof e!="function"&&(e=gn(+e)),n==null&&(n=0),r==null&&(r=0),i==null&&(i=0);function u(d){for(var p=0,y=o.length;p1&&(g.vy+=_*w),a>2&&(g.vz+=m*w)}}function h(){if(o){var d,p=o.length;for(l=new Array(p),f=new Array(p),d=0;d[1,2,3].includes(y))||2,h()},u.strength=function(d){return arguments.length?(s=typeof d=="function"?d:gn(+d),h(),u):s},u.radius=function(d){return arguments.length?(e=typeof d=="function"?d:gn(+d),h(),u):e},u.x=function(d){return arguments.length?(n=+d,u):n},u.y=function(d){return arguments.length?(r=+d,u):r},u.z=function(d){return arguments.length?(i=+d,u):i},u}const{abs:Oi,cos:un,sin:Pr,acos:kT,atan2:zi,sqrt:An,pow:vt}=Math;function Fi(e){return e<0?-vt(-e,1/3):vt(e,1/3)}const xv=Math.PI,ja=2*xv,Pn=xv/2,ST=1e-6,Kl=Number.MAX_SAFE_INTEGER||9007199254740991,Jl=Number.MIN_SAFE_INTEGER||-9007199254740991,jT={x:0,y:0,z:0},V={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(e,n){const r=n(e);let i=r.x*r.x+r.y*r.y;return typeof r.z<"u"&&(i+=r.z*r.z),An(i)},compute:function(e,n,r){if(e===0)return n[0].t=0,n[0];const i=n.length-1;if(e===1)return n[i].t=1,n[i];const o=1-e;let a=n;if(i===0)return n[0].t=e,n[0];if(i===1){const l={x:o*a[0].x+e*a[1].x,y:o*a[0].y+e*a[1].y,t:e};return r&&(l.z=o*a[0].z+e*a[1].z),l}if(i<4){let l=o*o,f=e*e,u,h,d,p=0;i===2?(a=[a[0],a[1],a[2],jT],u=l,h=o*e*2,d=f):i===3&&(u=l*o,h=l*e*3,d=o*f*3,p=e*f);const y={x:u*a[0].x+h*a[1].x+d*a[2].x+p*a[3].x,y:u*a[0].y+h*a[1].y+d*a[2].y+p*a[3].y,t:e};return r&&(y.z=u*a[0].z+h*a[1].z+d*a[2].z+p*a[3].z),y}const s=JSON.parse(JSON.stringify(n));for(;s.length>1;){for(let l=0;l1;o--,a--){const s=[];for(let l=0,f;l"u")e=.5;else if(e===0||e===1)return e;const r=vt(e,n)+vt(1-e,n),i=r-1;return Oi(i/r)},projectionratio:function(e,n){if(n!==2&&n!==3)return!1;if(typeof e>"u")e=.5;else if(e===0||e===1)return e;const r=vt(1-e,n),i=vt(e,n)+r;return r/i},lli8:function(e,n,r,i,o,a,s,l){const f=(e*i-n*r)*(o-s)-(e-r)*(o*l-a*s),u=(e*i-n*r)*(a-l)-(n-i)*(o*l-a*s),h=(e-r)*(a-l)-(n-i)*(o-s);return h==0?!1:{x:f/h,y:u/h}},lli4:function(e,n,r,i){const o=e.x,a=e.y,s=n.x,l=n.y,f=r.x,u=r.y,h=i.x,d=i.y;return V.lli8(o,a,s,l,f,u,h,d)},lli:function(e,n){return V.lli4(e,e.c,n,n.c)},makeline:function(e,n){return new fe(e.x,e.y,(e.x+n.x)/2,(e.y+n.y)/2,n.x,n.y)},findbbox:function(e){let n=Kl,r=Kl,i=Jl,o=Jl;return e.forEach(function(a){const s=a.bbox();n>s.x.min&&(n=s.x.min),r>s.y.min&&(r=s.y.min),i0&&(h.c1=f,h.c2=u,h.s1=e,h.s2=r,a.push(h))})}),a},makeshape:function(e,n,r){const i=n.points.length,o=e.points.length,a=V.makeline(n.points[i-1],e.points[0]),s=V.makeline(e.points[o-1],n.points[0]),l={startcap:a,forward:e,back:n,endcap:s,bbox:V.findbbox([a,e,n,s])};return l.intersections=function(f){return V.shapeintersections(l,l.bbox,f,f.bbox,r)},l},getminmax:function(e,n,r){if(!r)return{min:0,max:0};let i=Kl,o=Jl,a,s;r.indexOf(0)===-1&&(r=[0].concat(r)),r.indexOf(1)===-1&&r.push(1);for(let l=0,f=r.length;lo&&(o=s[n]);return{min:i,mid:(i+o)/2,max:o,size:o-i}},align:function(e,n){const r=n.p1.x,i=n.p1.y,o=-zi(n.p2.y-i,n.p2.x-r),a=function(s){return{x:(s.x-r)*un(o)-(s.y-i)*Pr(o),y:(s.x-r)*Pr(o)+(s.y-i)*un(o)}};return e.map(a)},roots:function(e,n){n=n||{p1:{x:0,y:0},p2:{x:1,y:0}};const r=e.length-1,i=V.align(e,n),o=function(N){return 0<=N&&N<=1};if(r===2){const N=i[0].y,A=i[1].y,$=i[2].y,j=N-2*A+$;if(j!==0){const R=-An(A*A-N*$),T=-N+A,P=-(R+T)/j,C=-(-R+T)/j;return[P,C].filter(o)}else if(A!==$&&j===0)return[(2*A-$)/(2*A-2*$)].filter(o);return[]}const a=i[0].y,s=i[1].y,l=i[2].y,f=i[3].y;let u=-a+3*s-3*l+f,h=3*a-6*s+3*l,d=-3*a+3*s,p=a;if(V.approximately(u,0)){if(V.approximately(h,0))return V.approximately(d,0)?[]:[-p/d].filter(o);const N=An(d*d-4*h*p),A=2*h;return[(N-d)/A,(-d-N)/A].filter(o)}h/=u,d/=u,p/=u;const y=(3*d-h*h)/3,g=y/3,x=(2*h*h*h-9*h*d+27*p)/27,_=x/2,m=_*_+g*g*g;let v,w,b,S,k;if(m<0){const N=-y/3,A=N*N*N,$=An(A),j=-x/(2*$),R=j<-1?-1:j>1?1:j,T=kT(R),P=Fi($),C=2*P;return b=C*un(T/3)-h/3,S=C*un((T+ja)/3)-h/3,k=C*un((T+2*ja)/3)-h/3,[b,S,k].filter(o)}else{if(m===0)return v=_<0?Fi(-_):-Fi(_),b=2*v-h/3,S=-v-h/3,[b,S].filter(o);{const N=An(m);return v=Fi(-_+N),w=Fi(_+N),[v-w-h/3].filter(o)}}},droots:function(e){if(e.length===3){const n=e[0],r=e[1],i=e[2],o=n-2*r+i;if(o!==0){const a=-An(r*r-n*i),s=-n+r,l=-(a+s)/o,f=-(-a+s)/o;return[l,f]}else if(r!==i&&o===0)return[(2*r-i)/(2*(r-i))];return[]}if(e.length===2){const n=e[0],r=e[1];return n!==r?[n/(n-r)]:[]}return[]},curvature:function(e,n,r,i,o){let a,s,l,f,u=0,h=0;const d=V.compute(e,n),p=V.compute(e,r),y=d.x*d.x+d.y*d.y;if(i?(a=An(vt(d.y*p.z-p.y*d.z,2)+vt(d.z*p.x-p.z*d.x,2)+vt(d.x*p.y-p.x*d.y,2)),s=vt(y+d.z*d.z,3/2)):(a=d.x*p.y-d.y*p.x,s=vt(y,3/2)),a===0||s===0)return{k:0,r:0};if(u=a/s,h=s/a,!o){const g=V.curvature(e-.001,n,r,i,!0).k,x=V.curvature(e+.001,n,r,i,!0).k;f=(x-u+(u-g))/2,l=(Oi(x-u)+Oi(u-g))/2}return{k:u,r:h,dk:f,adk:l}},inflections:function(e){if(e.length<4)return[];const n=V.align(e,{p1:e[0],p2:e.slice(-1)[0]}),r=n[2].x*n[1].y,i=n[3].x*n[1].y,o=n[1].x*n[2].y,a=n[3].x*n[2].y,s=18*(-3*r+2*i+3*o-a),l=18*(3*r-i-3*o),f=18*(o-r);if(V.approximately(s,0)){if(!V.approximately(l,0)){let p=-f/l;if(0<=p&&p<=1)return[p]}return[]}const u=2*s;if(V.approximately(u,0))return[];const h=l*l-4*s*f;if(h<0)return[];const d=Math.sqrt(h);return[(d-l)/u,-(l+d)/u].filter(function(p){return 0<=p&&p<=1})},bboxoverlap:function(e,n){const r=["x","y"],i=r.length;for(let o=0,a,s,l,f;o=f)return!1;return!0},expandbox:function(e,n){n.x.mine.x.max&&(e.x.max=n.x.max),n.y.max>e.y.max&&(e.y.max=n.y.max),n.z&&n.z.max>e.z.max&&(e.z.max=n.z.max),e.x.mid=(e.x.min+e.x.max)/2,e.y.mid=(e.y.min+e.y.max)/2,e.z&&(e.z.mid=(e.z.min+e.z.max)/2),e.x.size=e.x.max-e.x.min,e.y.size=e.y.max-e.y.min,e.z&&(e.z.size=e.z.max-e.z.min)},pairiteration:function(e,n,r){const i=e.bbox(),o=n.bbox(),a=1e5,s=r||.5;if(i.x.size+i.y.sizek||k>N)&&(S+=ja),S>N&&(A=N,N=S,S=A)):N4){if(arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");o=!0}}else if(a!==6&&a!==8&&a!==9&&a!==12&&arguments.length!==1)throw new Error("Only new Bezier(point[]) is accepted for 4th and higher order curves");const s=this._3d=!o&&(a===9||a===12)||n&&n[0]&&typeof n[0].z<"u",l=this.points=[];for(let y=0,g=s?3:2;yy+$i(g.y),0)

"u"&&(o=.5),o===0)return new fe(r,r,i);if(o===1)return new fe(n,r,r);const a=fe.getABC(2,n,r,i,o);return new fe(n,a.A,i)}static cubicFromPoints(n,r,i,o,a){typeof o>"u"&&(o=.5);const s=fe.getABC(3,n,r,i,o);typeof a>"u"&&(a=V.dist(r,s.C));const l=a*(1-o)/o,f=V.dist(n,i),u=(i.x-n.x)/f,h=(i.y-n.y)/f,d=a*u,p=a*h,y=l*u,g=l*h,x={x:r.x-d,y:r.y-p},_={x:r.x+y,y:r.y+g},m=s.A,v={x:m.x+(x.x-m.x)/(1-o),y:m.y+(x.y-m.y)/(1-o)},w={x:m.x+(_.x-m.x)/o,y:m.y+(_.y-m.y)/o},b={x:n.x+(v.x-n.x)/o,y:n.y+(v.y-n.y)/o},S={x:i.x+(w.x-i.x)/(1-o),y:i.y+(w.y-i.y)/(1-o)};return new fe(n,b,S,i)}static getUtils(){return V}getUtils(){return fe.getUtils()}static get PolyBezier(){return oo}valueOf(){return this.toString()}toString(){return V.pointsToString(this.points)}toSVG(){if(this._3d)return!1;const n=this.points,r=n[0].x,i=n[0].y,o=["M",r,i,this.order===2?"Q":"C"];for(let a=1,s=n.length;a0}length(){return V.length(this.derivative.bind(this))}static getABC(n=2,r,i,o,a=.5){const s=V.projectionratio(a,n),l=1-s,f={x:s*r.x+l*o.x,y:s*r.y+l*o.y},u=V.abcratio(a,n);return{A:{x:i.x+(i.x-f.x)/u,y:i.y+(i.y-f.y)/u},B:i,C:f,S:r,E:o}}getABC(n,r){r=r||this.get(n);let i=this.points[0],o=this.points[this.order];return fe.getABC(this.order,i,r,o,n)}getLUT(n){if(this.verify(),n=n||100,this._lut.length===n+1)return this._lut;this._lut=[],n++,this._lut=[];for(let r=0,i,o;r1?1:d,p=this.compute(d),p.t=d,p.d=u,p}get(n){return this.compute(n)}point(n){return this.points[n]}compute(n){return this.ratios?V.computeWithRatios(n,this.points,this.ratios,this._3d):V.compute(n,this.points,this._3d,this.ratios)}raise(){const n=this.points,r=[n[0]],i=n.length;for(let o=1,a,s;o1;){i=[];for(let s=0,l,f=r.length-1;s=0&&s<=1}),r=r.concat(n[i].sort(V.numberSort))}).bind(this)),n.values=r.sort(V.numberSort).filter(function(i,o){return r.indexOf(i)===o}),n}bbox(){const n=this.extrema(),r={};return this.dims.forEach((function(i){r[i]=V.getminmax(this,i,n[i])}).bind(this)),r}overlaps(n){const r=this.bbox(),i=n.bbox();return V.bboxoverlap(r,i)}offset(n,r){if(typeof r<"u"){const i=this.get(n),o=this.normal(n),a={c:i,n:o,x:i.x+o.x*r,y:i.y+o.y*r};return this._3d&&(a.z=i.z+o.z*r),a}if(this._linear){const i=this.normal(0),o=this.points.map(function(a){const s={x:a.x+n*i.x,y:a.y+n*i.y};return a.z&&i.z&&(s.z=a.z+n*i.z),s});return[new fe(o)]}return this.reduce().map(function(i){return i._linear?i.offset(n)[0]:i.scale(n)})}simple(){if(this.order===3){const o=V.angle(this.points[0],this.points[3],this.points[1]),a=V.angle(this.points[0],this.points[3],this.points[2]);if(o>0&&a<0||o<0&&a>0)return!1}const n=this.normal(0),r=this.normal(1);let i=n.x*r.x+n.y*r.y;return this._3d&&(i+=n.z*r.z),$i(ET(i))(1-l/o)*r+l/o*i);return new fe(this.points.map((s,l)=>({x:s.x+n.x*a[l],y:s.y+n.y*a[l]})))}scale(n){const r=this.order;let i=!1;if(typeof n=="function"&&(i=n),i&&r===2)return this.raise().scale(i);const o=this.clockwise,a=this.points;if(this._linear)return this.translate(this.normal(0),i?i(0):n,i?i(1):n);const s=i?i(0):n,l=i?i(1):n,f=[this.offset(0,10),this.offset(1,10)],u=[],h=V.lli4(f[0],f[0].c,f[1],f[1].c);if(!h)throw new Error("cannot scale this curve. Try reducing it first.");return[0,1].forEach(function(d){const p=u[d*r]=V.copy(a[d*r]);p.x+=(d?l:s)*f[d].n.x,p.y+=(d?l:s)*f[d].n.y}),i?([0,1].forEach(function(d){if(!(r===2&&d)){var p=a[d+1],y={x:p.x-h.x,y:p.y-h.y},g=i?i((d+1)/r):n;i&&!o&&(g=-g);var x=Di(y.x*y.x+y.y*y.y);y.x/=x,y.y/=x,u[d+1]={x:p.x+g*y.x,y:p.y+g*y.y}}}),new fe(u)):([0,1].forEach(d=>{if(r===2&&d)return;const p=u[d*r],y=this.derivative(d),g={x:p.x+y.x,y:p.y+y.y};u[d+1]=V.lli4(p,g,h,a[d+1])}),new fe(u))}outline(n,r,i,o){if(r=r===void 0?n:r,this._linear){const S=this.normal(0),k=this.points[0],N=this.points[this.points.length-1];let A,$,j;i===void 0&&(i=n,o=r),A={x:k.x+S.x*n,y:k.y+S.y*n},j={x:N.x+S.x*i,y:N.y+S.y*i},$={x:(A.x+j.x)/2,y:(A.y+j.y)/2};const R=[A,$,j];A={x:k.x-S.x*r,y:k.y-S.y*r},j={x:N.x-S.x*o,y:N.y-S.y*o},$={x:(A.x+j.x)/2,y:(A.y+j.y)/2};const T=[j,$,A],P=V.makeline(T[2],R[0]),C=V.makeline(R[2],T[0]),L=[P,new fe(R),C,new fe(T)];return new oo(L)}const a=this.reduce(),s=a.length,l=[];let f=[],u,h=0,d=this.length();const p=typeof i<"u"&&typeof o<"u";function y(S,k,N,A,$){return function(j){const R=A/N,T=(A+$)/N,P=k-S;return V.map(j,0,1,S+R*P,S+T*P)}}a.forEach(function(S){const k=S.length();p?(l.push(S.scale(y(n,i,d,h,k))),f.push(S.scale(y(-r,-o,d,h,k)))):(l.push(S.scale(n)),f.push(S.scale(-r))),h+=k}),f=f.map(function(S){return u=S.points,u[3]?S.points=[u[3],u[2],u[1],u[0]]:S.points=[u[2],u[1],u[0]],S}).reverse();const g=l[0].points[0],x=l[s-1].points[l[s-1].points.length-1],_=f[s-1].points[f[s-1].points.length-1],m=f[0].points[0],v=V.makeline(_,g),w=V.makeline(x,m),b=[v].concat(l).concat([w]).concat(f);return new oo(b)}outlineshapes(n,r,i){r=r||n;const o=this.outline(n,r).curves,a=[];for(let s=1,l=o.length;s1,f.endcap.virtual=s{var l=this.get(s);return V.between(l.x,r,o)&&V.between(l.y,i,a)})}selfintersects(n){const r=this.reduce(),i=r.length-2,o=[];for(let a=0,s,l,f;a0&&(a=a.concat(l))}),a}arcs(n){return n=n||.5,this._iterate(n,[])}_error(n,r,i,o){const a=(o-i)/4,s=this.get(i+a),l=this.get(o-a),f=V.dist(n,r),u=V.dist(n,s),h=V.dist(n,l);return $i(u-f)+$i(h-f)}_iterate(n,r){let i=0,o=1,a;do{a=0,o=1;let s=this.get(i),l,f,u,h,d=!1,p=!1,y,g=o,x=1;do if(p=d,h=u,g=(i+o)/2,l=this.get(g),f=this.get(o),u=V.getccenter(s,l,f),u.interval={start:i,end:o},d=this._error(u,s,i,o)<=n,y=p&&!d,y||(x=o),d){if(o>=1){if(u.interval.end=x=1,h=u,o>1){let m={x:u.x+u.r*NT(u.e),y:u.y+u.r*CT(u.e)};u.e+=V.angle({x:u.x,y:u.y},m,this.get(1))}break}o=o+(o-i)/2}else o=g;while(!y&&a++<100);if(a>=100)break;h=h||u,r.push(h),i=x}while(o<1);return r}}function Sc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,o=(n instanceof Array?n.length?n:[void 0]:[n]).map(function(l){return{keyAccessor:l,isProp:!(l instanceof Function)}}),a=e.reduce(function(l,f){var u=l,h=f;return o.forEach(function(d,p){var y=d.keyAccessor,g=d.isProp,x;if(g){var _=h,m=_[y],v=FT(_,[y].map(UT));x=m,h=v}else x=y(h,p);p+11&&arguments[1]!==void 0?arguments[1]:1;u===o.length?Object.keys(f).forEach(function(h){return f[h]=r(f[h])}):Object.values(f).forEach(function(h){return l(h,u+1)})}(a);var s=a;return i&&(s=[],function l(f){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];u.length===o.length?s.push({keys:u,vals:f}):Object.entries(f).forEach(function(h){var d=DT(h,2),p=d[0],y=d[1];return l(y,[].concat(IT(u),[p]))})}(a),n instanceof Array&&n.length===0&&s.length===1&&(s[0].keys=[])),s};function HT(e,n){n===void 0&&(n={});var r=n.insertAt;if(!(typeof document>"u")){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",r==="top"&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var VT=`.force-graph-container canvas { - display: block; - user-select: none; - outline: none; - -webkit-tap-highlight-color: transparent; -} - -.force-graph-container .clickable { - cursor: pointer; -} - -.force-graph-container .grabbable { - cursor: move; - cursor: grab; - cursor: -moz-grab; - cursor: -webkit-grab; -} - -.force-graph-container .grabbable:active { - cursor: grabbing; - cursor: -moz-grabbing; - cursor: -webkit-grabbing; -} -`;HT(VT);function jc(e,n){(n==null||n>e.length)&&(n=e.length);for(var r=0,i=Array(n);r2&&arguments[2]!==void 0?arguments[2]:{},a=o.nodeFilter,s=a===void 0?function(){return!0}:a,l=o.onLoopError,f=l===void 0?function(y){throw"Invalid DAG structure! Found cycle in node path: ".concat(y.join(" -> "),".")}:l,u={};r.forEach(function(y){return u[n(y)]={data:y,out:[],depth:-1,skip:!s(y)}}),i.forEach(function(y){var g=y.source,x=y.target,_=b(g),m=b(x);if(!u.hasOwnProperty(_))throw"Missing source node with id: ".concat(_);if(!u.hasOwnProperty(m))throw"Missing target node with id: ".concat(m);var v=u[_],w=u[m];v.out.push(w);function b(S){return Nc(S)==="object"?n(S):S}});var h=[];p(Object.values(u));var d=Object.assign.apply(Object,[{}].concat(wt(Object.entries(u).filter(function(y){var g=ao(y,2),x=g[1];return!x.skip}).map(function(y){var g=ao(y,2),x=g[0],_=g[1];return Ro({},x,_.depth)}))));return d;function p(y){for(var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,_=function(){var b=y[m];if(g.indexOf(b)!==-1){var S=[].concat(wt(g.slice(g.indexOf(b))),[b]).map(function(k){return n(k.data)});return h.some(function(k){return k.length===S.length&&k.every(function(N,A){return N===S[A]})})||(h.push(S),f(S)),1}x>b.depth&&(b.depth=x,p(b.out,[].concat(wt(g),[b]),x+(b.skip?0:1)))},m=0,v=y.length;mn.cooldownTicks||new Date-n.startTickTime>n.cooldownTime||n.d3AlphaMin>0&&n.forceLayout.alpha()0){var T=Math.atan2(j.y-$.y,j.x-$.x),P=R*A,C={x:($.x+j.x)/2+P*Math.cos(T-Math.PI/2),y:($.y+j.y)/2+P*Math.sin(T-Math.PI/2)};N.__controlPoints=[C.x,C.y]}else{var L=A*70;N.__controlPoints=[j.x,j.y-L,j.x+L,j.y]}}}}function a(){var l=1.6,f=.2,u=oe(n.linkDirectionalArrowLength),h=oe(n.linkDirectionalArrowRelPos),d=oe(n.linkVisibility),p=oe(n.linkDirectionalArrowColor||n.linkColor),y=oe(n.nodeVal),g=n.ctx;g.save(),n.graphData.links.filter(d).forEach(function(x){var _=u(x);if(!(!_||_<0)){var m=x.source,v=x.target;if(!(!m||!v||!m.hasOwnProperty("x")||!v.hasOwnProperty("x"))){var w=Math.sqrt(Math.max(0,y(m)||1))*n.nodeRelSize,b=Math.sqrt(Math.max(0,y(v)||1))*n.nodeRelSize,S=Math.min(1,Math.max(0,h(x))),k=p(x)||"rgba(0,0,0,0.28)",N=_/l/2,A=x.__controlPoints&&Vp(fe,[m.x,m.y].concat(wt(x.__controlPoints),[v.x,v.y])),$=A?function(O){return A.get(O)}:function(O){return{x:m.x+(v.x-m.x)*O||0,y:m.y+(v.y-m.y)*O||0}},j=A?A.length():Math.sqrt(Math.pow(v.x-m.x,2)+Math.pow(v.y-m.y,2)),R=w+_+(j-w-b-_)*S,T=$(R/j),P=$((R-_)/j),C=$((R-_*(1-f))/j),L=Math.atan2(T.y-P.y,T.x-P.x)-Math.PI/2;g.beginPath(),g.moveTo(T.x,T.y),g.lineTo(P.x+N*Math.cos(L),P.y+N*Math.sin(L)),g.lineTo(C.x,C.y),g.lineTo(P.x-N*Math.cos(L),P.y-N*Math.sin(L)),g.fillStyle=k,g.fill()}}}),g.restore()}function s(){var l=oe(n.linkDirectionalParticles),f=oe(n.linkDirectionalParticleSpeed),u=oe(n.linkDirectionalParticleOffset),h=oe(n.linkDirectionalParticleWidth),d=oe(n.linkVisibility),p=oe(n.linkDirectionalParticleColor||n.linkColor),y=n.ctx;y.save(),n.graphData.links.filter(d).forEach(function(g){var x=l(g);if(!(!g.hasOwnProperty("__photons")||!g.__photons.length)){var _=g.source,m=g.target;if(!(!_||!m||!_.hasOwnProperty("x")||!m.hasOwnProperty("x"))){var v=f(g),w=Math.abs(u(g)),b=g.__photons||[],S=Math.max(0,h(g)/2)/Math.sqrt(n.globalScale),k=p(g)||"rgba(0,0,0,0.28)";y.fillStyle=k;var N=g.__controlPoints?Vp(fe,[_.x,_.y].concat(wt(g.__controlPoints),[m.x,m.y])):null,A=0,$=!1;b.forEach(function(j){var R=!!j.__singleHop;if(j.hasOwnProperty("__progressRatio")||(j.__progressRatio=R?0:(A+w)/x),!R&&A++,j.__progressRatio+=v,j.__progressRatio>=1)if(!R)j.__progressRatio=j.__progressRatio%1;else{$=!0;return}var T=j.__progressRatio,P=N?N.get(T):{x:_.x+(m.x-_.x)*T||0,y:_.y+(m.y-_.y)*T||0};n.linkDirectionalParticleCanvasObject?n.linkDirectionalParticleCanvasObject(P.x,P.y,g,y,n.globalScale):(y.beginPath(),y.arc(P.x,P.y,S,0,2*Math.PI,!1),y.fill())}),$&&(g.__photons=g.__photons.filter(function(j){return!j.__singleHop||j.__progressRatio<=1}))}}}),y.restore()}},emitParticle:function(n,r){return r&&(!r.__photons&&(r.__photons=[]),r.__photons.push({__singleHop:!0})),this}},stateInit:function(){return{forceLayout:_T().force("link",dT()).force("charge",wT()).force("center",A3()).force("dagRadial",null).stop(),engineRunning:!1}},init:function(n,r){r.ctx=n},update:function(n,r){n.engineRunning=!1,n.onUpdate(),n.nodeAutoColorBy!==null&&qp(n.graphData.nodes,oe(n.nodeAutoColorBy),n.nodeColor),n.linkAutoColorBy!==null&&qp(n.graphData.links,oe(n.linkAutoColorBy),n.linkColor),n.graphData.links.forEach(function(p){p.source=p[n.linkSource],p.target=p[n.linkTarget]}),n.forceLayout.stop().alpha(1).nodes(n.graphData.nodes);var i=n.forceLayout.force("link");i&&i.id(function(p){return p[n.nodeId]}).links(n.graphData.links);var o=n.dagMode&&eA(n.graphData,function(p){return p[n.nodeId]},{nodeFilter:n.dagNodeFilter,onLoopError:n.onDagError||void 0}),a=Math.max.apply(Math,wt(Object.values(o||[]))),s=n.dagLevelDistance||n.graphData.nodes.length/(a||1)*tA*(["radialin","radialout"].indexOf(n.dagMode)!==-1?.7:1);if(["lr","rl","td","bu"].includes(r.dagMode)){var l=["lr","rl"].includes(r.dagMode)?"fx":"fy";n.graphData.nodes.filter(n.dagNodeFilter).forEach(function(p){return delete p[l]})}if(["lr","rl","td","bu"].includes(n.dagMode)){var f=["rl","bu"].includes(n.dagMode),u=function(y){return(o[y[n.nodeId]]-a/2)*s*(f?-1:1)},h=["lr","rl"].includes(n.dagMode)?"fx":"fy";n.graphData.nodes.filter(n.dagNodeFilter).forEach(function(p){return p[h]=u(p)})}n.forceLayout.force("dagRadial",["radialin","radialout"].indexOf(n.dagMode)!==-1?bT(function(p){var y=o[p[n.nodeId]]||-1;return(n.dagMode==="radialin"?a-y:y)*s}).strength(function(p){return n.dagNodeFilter(p)?1:0}):null);for(var d=0;d0&&n.forceLayout.alpha()1?l-1:0),u=1;u1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,o=arguments.length,a=new Array(o>3?o-3:0),s=3;s1&&arguments[1]!==void 0?arguments[1]:function(){return!0},i=oe(n.nodeVal),o=function(l){return Math.sqrt(Math.max(0,i(l)||1))*n.nodeRelSize},a=n.graphData.nodes.filter(r).map(function(s){return{x:s.x,y:s.y,r:o(s)}});return a.length?{x:[Ih(a,function(s){return s.x-s.r}),Dh(a,function(s){return s.x+s.r})],y:[Ih(a,function(s){return s.y-s.r}),Dh(a,function(s){return s.y+s.r})]}:null},pauseAnimation:function(n){return n.animationFrameRequestId&&(cancelAnimationFrame(n.animationFrameRequestId),n.animationFrameRequestId=null),this},resumeAnimation:function(n){return n.animationFrameRequestId||this._animationCycle(),this},_destructor:function(){this.pauseAnimation(),this.graphData({nodes:[],links:[]})}},sA),stateInit:function(){return{lastSetZoom:1,zoom:_C(),forceGraph:new zs,shadowGraph:new zs().cooldownTicks(0).nodeColor("__indexColor").linkColor("__indexColor").isShadow(!0),colorTracker:new l3,tweenGroup:new Q0}},init:function(n,r){var i=this;n.innerHTML="";var o=document.createElement("div");o.classList.add("force-graph-container"),o.style.position="relative",n.appendChild(o),r.canvas=document.createElement("canvas"),r.backgroundColor&&(r.canvas.style.background=r.backgroundColor),o.appendChild(r.canvas),r.shadowCanvas=document.createElement("canvas");var a=r.canvas.getContext("2d"),s=r.shadowCanvas.getContext("2d",{willReadFrequently:!0}),l={x:-1e12,y:-1e12},f=function(){var d=null,p=window.devicePixelRatio,y=l.x>0&&l.y>0?s.getImageData(l.x*p,l.y*p,1,1):null;return y&&(d=r.colorTracker.lookup(y.data)),d};ut(r.canvas).call(RS().subject(function(){if(!r.enableNodeDrag)return null;var h=f();return h&&h.type==="Node"?h.d:null}).on("start",function(h){var d=h.subject;d.__initialDragPos={x:d.x,y:d.y,fx:d.fx,fy:d.fy},h.active||(d.fx=d.x,d.fy=d.y),r.canvas.classList.add("grabbable")}).on("drag",function(h){var d=h.subject,p=d.__initialDragPos,y=h,g=Xt(r.canvas).k,x={x:p.x+(y.x-p.x)/g-d.x,y:p.y+(y.y-p.y)/g-d.y};["x","y"].forEach(function(_){return d["f".concat(_)]=d[_]=p[_]+(y[_]-p[_])/g}),!(!d.__dragged&&iA>=Math.sqrt(Vb(["x","y"].map(function(_){return Math.pow(h[_]-p[_],2)}))))&&(r.forceGraph.d3AlphaTarget(.3).resetCountdown(),r.isPointerDragging=!0,d.__dragged=!0,r.onNodeDrag(d,x))}).on("end",function(h){var d=h.subject,p=d.__initialDragPos,y={x:d.x-p.x,y:d.y-p.y};p.fx===void 0&&(d.fx=void 0),p.fy===void 0&&(d.fy=void 0),delete d.__initialDragPos,r.forceGraph.d3AlphaTarget()&&r.forceGraph.d3AlphaTarget(0).resetCountdown(),r.canvas.classList.remove("grabbable"),r.isPointerDragging=!1,d.__dragged&&(delete d.__dragged,r.onNodeDragEnd(d,y))})),r.zoom(r.zoom.__baseElem=ut(r.canvas)),r.zoom.__baseElem.on("dblclick.zoom",null),r.zoom.filter(function(h){return!h.button&&r.enableZoomPanInteraction&&(h.type!=="wheel"||oe(r.enableZoomInteraction)(h))&&(h.type==="wheel"||oe(r.enablePanInteraction)(h))}).on("zoom",function(h){var d=h.transform;[a,s].forEach(function(p){jv(p),p.translate(d.x,d.y),p.scale(d.k,d.k)}),r.isPointerDragging=!0,r.onZoom&&r.onZoom(Rr(Rr({},d),i.centerAt())),r.needsRedraw=!0}).on("end",function(h){r.isPointerDragging=!1,r.onZoomEnd&&r.onZoomEnd(Rr(Rr({},h.transform),i.centerAt()))}),Zl(r),r.forceGraph.onNeedsRedraw(function(){return r.needsRedraw=!0}).onFinishUpdate(function(){Xt(r.canvas).k===r.lastSetZoom&&r.graphData.nodes.length&&(r.zoom.scaleTo(r.zoom.__baseElem,r.lastSetZoom=rA/Math.cbrt(r.graphData.nodes.length)),r.needsRedraw=!0)}),r.tooltip=new T3(o),["pointermove","pointerdown"].forEach(function(h){return o.addEventListener(h,function(d){h==="pointerdown"&&(r.isPointerPressed=!0,r.pointerDownEvent=d),!r.isPointerDragging&&d.type==="pointermove"&&r.onBackgroundClick&&(d.pressure>0||r.isPointerPressed)&&(d.pointerType==="mouse"||d.movementX===void 0||[d.movementX,d.movementY].some(function(g){return Math.abs(g)>1}))&&(r.isPointerDragging=!0);var p=y(o);l.x=d.pageX-p.left,l.y=d.pageY-p.top;function y(g){var x=g.getBoundingClientRect(),_=window.pageXOffset||document.documentElement.scrollLeft,m=window.pageYOffset||document.documentElement.scrollTop;return{top:x.top+m,left:x.left+_}}},{passive:!0})}),o.addEventListener("pointerup",function(h){if(r.isPointerPressed){if(r.isPointerPressed=!1,r.isPointerDragging){r.isPointerDragging=!1;return}var d=[h,r.pointerDownEvent];requestAnimationFrame(function(){if(h.button===0)if(r.hoverObj){var p=r["on".concat(r.hoverObj.type,"Click")];p&&p.apply(void 0,[r.hoverObj.d].concat(d))}else r.onBackgroundClick&&r.onBackgroundClick.apply(r,d);if(h.button===2)if(r.hoverObj){var y=r["on".concat(r.hoverObj.type,"RightClick")];y&&y.apply(void 0,[r.hoverObj.d].concat(d))}else r.onBackgroundRightClick&&r.onBackgroundRightClick.apply(r,d)})}},{passive:!0}),o.addEventListener("contextmenu",function(h){return!r.onBackgroundRightClick&&!r.onNodeRightClick&&!r.onLinkRightClick?!0:(h.preventDefault(),!1)}),r.forceGraph(a),r.shadowGraph(s);var u=mE(function(){Xp(s,r.width,r.height),r.shadowGraph.linkWidth(function(d){return oe(r.linkWidth)(d)+r.linkHoverPrecision});var h=Xt(r.canvas);r.shadowGraph.globalScale(h.k).tickFrame()},nA);r.flushShadowCanvas=u.flush,(this._animationCycle=function h(){var d=!r.autoPauseRedraw||!!r.needsRedraw||r.forceGraph.isEngineRunning()||r.graphData.links.some(function(w){return w.__photons&&w.__photons.length});if(r.needsRedraw=!1,r.enablePointerInteraction){var p=r.isPointerDragging?null:f();if(p!==r.hoverObj){var y=r.hoverObj,g=y?y.type:null,x=p?p.type:null;if(g&&g!==x){var _=r["on".concat(g,"Hover")];_&&_(null,y.d)}if(x){var m=r["on".concat(x,"Hover")];m&&m(p.d,g===x?y.d:null)}r.tooltip.content(p&&oe(r["".concat(p.type.toLowerCase(),"Label")])(p.d)||null),r.canvas.classList[(p&&r["on".concat(x,"Click")]||!p&&r.onBackgroundClick)&&oe(r.showPointerCursor)(p==null?void 0:p.d)?"add":"remove"]("clickable"),r.hoverObj=p}d&&u()}if(d){Xp(a,r.width,r.height);var v=Xt(r.canvas).k;r.onRenderFramePre&&r.onRenderFramePre(a,v),r.forceGraph.globalScale(v).tickFrame(),r.onRenderFramePost&&r.onRenderFramePost(a,v)}r.tweenGroup.update(),r.animationFrameRequestId=requestAnimationFrame(h)})()},update:function(n){}}),Nv={exports:{}},uA="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",cA=uA,fA=cA;function Cv(){}function Ev(){}Ev.resetWarningCache=Cv;var dA=function(){function e(i,o,a,s,l,f){if(f!==fA){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function n(){return e}var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:Ev,resetWarningCache:Cv};return r.PropTypes=r,r};Nv.exports=dA();var hA=Nv.exports;const M=am(hA),dl={width:M.number,height:M.number,graphData:M.shape({nodes:M.arrayOf(M.object).isRequired,links:M.arrayOf(M.object).isRequired}),backgroundColor:M.string,nodeRelSize:M.number,nodeId:M.string,nodeLabel:M.oneOfType([M.string,M.func]),nodeVal:M.oneOfType([M.number,M.string,M.func]),nodeVisibility:M.oneOfType([M.bool,M.string,M.func]),nodeColor:M.oneOfType([M.string,M.func]),nodeAutoColorBy:M.oneOfType([M.string,M.func]),onNodeHover:M.func,onNodeClick:M.func,linkSource:M.string,linkTarget:M.string,linkLabel:M.oneOfType([M.string,M.func]),linkVisibility:M.oneOfType([M.bool,M.string,M.func]),linkColor:M.oneOfType([M.string,M.func]),linkAutoColorBy:M.oneOfType([M.string,M.func]),linkWidth:M.oneOfType([M.number,M.string,M.func]),linkCurvature:M.oneOfType([M.number,M.string,M.func]),linkDirectionalArrowLength:M.oneOfType([M.number,M.string,M.func]),linkDirectionalArrowColor:M.oneOfType([M.string,M.func]),linkDirectionalArrowRelPos:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticles:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleSpeed:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleOffset:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleWidth:M.oneOfType([M.number,M.string,M.func]),linkDirectionalParticleColor:M.oneOfType([M.string,M.func]),onLinkHover:M.func,onLinkClick:M.func,dagMode:M.oneOf(["td","bu","lr","rl","zin","zout","radialin","radialout"]),dagLevelDistance:M.number,dagNodeFilter:M.func,onDagError:M.func,d3AlphaMin:M.number,d3AlphaDecay:M.number,d3VelocityDecay:M.number,warmupTicks:M.number,cooldownTicks:M.number,cooldownTime:M.number,onEngineTick:M.func,onEngineStop:M.func,getGraphBbox:M.func},Tv={zoomToFit:M.func,onNodeRightClick:M.func,onNodeDrag:M.func,onNodeDragEnd:M.func,onLinkRightClick:M.func,linkHoverPrecision:M.number,onBackgroundClick:M.func,onBackgroundRightClick:M.func,showPointerCursor:M.oneOfType([M.bool,M.func]),enablePointerInteraction:M.bool,enableNodeDrag:M.bool},Qf={showNavInfo:M.bool,nodeOpacity:M.number,nodeResolution:M.number,nodeThreeObject:M.oneOfType([M.object,M.string,M.func]),nodeThreeObjectExtend:M.oneOfType([M.bool,M.string,M.func]),nodePositionUpdate:M.func,linkOpacity:M.number,linkResolution:M.number,linkCurveRotation:M.oneOfType([M.number,M.string,M.func]),linkMaterial:M.oneOfType([M.object,M.string,M.func]),linkThreeObject:M.oneOfType([M.object,M.string,M.func]),linkThreeObjectExtend:M.oneOfType([M.bool,M.string,M.func]),linkPositionUpdate:M.func,linkDirectionalArrowResolution:M.number,linkDirectionalParticleResolution:M.number,linkDirectionalParticleThreeObject:M.oneOfType([M.object,M.string,M.func]),forceEngine:M.oneOf(["d3","ngraph"]),ngraphPhysics:M.object,numDimensions:M.oneOf([1,2,3])},pA=Object.assign({},dl,Tv,{linkLineDash:M.oneOfType([M.arrayOf(M.number),M.string,M.func]),nodeCanvasObjectMode:M.oneOfType([M.string,M.func]),nodeCanvasObject:M.func,nodePointerAreaPaint:M.func,linkCanvasObjectMode:M.oneOfType([M.string,M.func]),linkCanvasObject:M.func,linkPointerAreaPaint:M.func,linkDirectionalParticleCanvasObject:M.func,autoPauseRedraw:M.bool,minZoom:M.number,maxZoom:M.number,enableZoomInteraction:M.oneOfType([M.bool,M.func]),enablePanInteraction:M.oneOfType([M.bool,M.func]),onZoom:M.func,onZoomEnd:M.func,onRenderFramePre:M.func,onRenderFramePost:M.func});Object.assign({},dl,Tv,Qf,{enableNavigationControls:M.bool,controlType:M.oneOf(["trackball","orbit","fly"]),rendererConfig:M.object,extraRenderers:M.arrayOf(M.shape({render:M.func.isRequired}))});Object.assign({},dl,Qf,{nodeDesc:M.oneOfType([M.string,M.func]),linkDesc:M.oneOfType([M.string,M.func])});Object.assign({},dl,Qf,{markerAttrs:M.object,yOffset:M.number,glScale:M.number});const Kf=BC(lA,{methodNames:["emitParticle","d3Force","d3ReheatSimulation","stopAnimation","pauseAnimation","resumeAnimation","centerAt","zoom","zoomToFit","getGraphBbox","screen2GraphCoords","graph2ScreenCoords"]});Kf.displayName="ForceGraph2D";Kf.propTypes=pA;const Cc={Corporation:"#5B4FFF","Government Agency":"#FF6B35","Investment Firm":"#E91E63","Research Institution":"#FF9800","Non-Profit":"#9C27B0",Organization:"#00BCD4",Facility:"#4CAF50",Program:"#FF1744",Individual:"#2196F3",Unknown:"#9E9E9E",default:"#BDBDBD"},mA={1:["Organization"],2:["Government Agency"],3:["Research Institution"],4:["Corporation","Investment Firm"],5:["Facility"],6:["Program"]},Qe=e=>typeof e=="string"?e:(e==null?void 0:e.id)||"";function gA({filterLevels:e=[],selectedActor:n,onSelectActor:r,colorMode:i,showInferred:o,minConnections:a,onDataReady:s}){const[l,f]=E.useState({nodes:[],links:[]}),[u,h]=E.useState({nodes:[],links:[]}),[d,p]=E.useState(!0),[y,g]=E.useState(null),[x,_]=E.useState(!1),[m,v]=E.useState(null),w=E.useRef(),b=E.useRef(null),S=E.useRef(null);E.useEffect(()=>{k()},[]);const k=async()=>{try{p(!0),g(null);const T=await sb(),P=new Map;for(const O of T.edges){const B=`${O.source}|||${O.target}`,D=`${O.target}|||${O.source}`,z=P.get(B)||P.get(D);z?(z.count=(z.count||1)+1,O.value&&(!z.value||O.value>z.value)&&(z.value=O.value)):P.set(B,{source:O.source,target:O.target,label:O.label,value:O.value,count:1})}const C=new Map;for(const O of P.values())C.set(O.source,(C.get(O.source)||0)+(O.count||1)),C.set(O.target,(C.get(O.target)||0)+(O.count||1));const L={nodes:T.nodes.map(O=>({...O,val:C.get(O.id)||1,_connections:C.get(O.id)||0})),links:Array.from(P.values())};f(L)}catch(T){g("Failed to load graph data"),console.error("Error loading graph:",T)}finally{p(!1)}};E.useEffect(()=>{if(l.nodes.length===0){h({nodes:[],links:[]});return}const T=new Map;l.links.forEach(z=>{const U=Qe(z.source),q=Qe(z.target),X=z.count||1;T.set(U,(T.get(U)||0)+X),T.set(q,(T.get(q)||0)+X)});const P=z=>{if(z.intel_stack_level)return e.includes(z.intel_stack_level);if(z.type){for(const U of e)if((mA[U]||[]).includes(z.type))return!0}return!1},C=new Set;e.length>0&&l.nodes.forEach(z=>{P(z)&&C.add(z.id)});const L=new Set;e.length>0&&C.size>0&&l.links.forEach(z=>{const U=Qe(z.source),q=Qe(z.target);C.has(U)&&L.add(q),C.has(q)&&L.add(U)});const O=l.nodes.filter(z=>!((T.get(z.id)||0)0&&!P(z)&&!L.has(z.id))),B=new Set(O.map(z=>z.id)),D=[];l.links.forEach(z=>{const U=Qe(z.source),q=Qe(z.target);!o&&z.label&&(z.label.includes("Co-Recipient")||z.label.includes("Same Industry")||z.label.includes("Award Recipient"))||B.has(U)&&B.has(q)&&D.push({source:U,target:q,label:z.label,value:z.value,count:z.count})}),h({nodes:O,links:D})},[l,o,a,e]);const N=E.useMemo(()=>u.nodes.map(T=>({name:T.name||T.id,connections:T._connections||0,type:T.type||"Unknown"})).sort((T,P)=>P.connections-T.connections),[u.nodes]);E.useEffect(()=>{const T=u.links.filter(P=>{var C,L,O;return((C=P.label)==null?void 0:C.includes("Co-Recipient"))||((L=P.label)==null?void 0:L.includes("Same Industry"))||((O=P.label)==null?void 0:O.includes("Award Recipient"))}).length;s==null||s({nodeCount:u.nodes.length,linkCount:u.links.length,inferredCount:T,nodeIndex:N,rawLinks:u.links,totalRawLinks:l.links.length})},[u,N,l.links.length]);const A=E.useMemo(()=>{const T=Math.max(1,...u.nodes.map(P=>P._connections||1));return H0().exponent(.5).domain([1,T]).range([4,40]).clamp(!0)},[u.nodes]),{selectedNeighbors:$,selectedLinkSet:j}=E.useMemo(()=>{if(!n)return{selectedNeighbors:new Set,selectedLinkSet:new Set};const T=new Set,P=new Set;return u.links.forEach(C=>{const L=Qe(C.source),O=Qe(C.target);(L===n||O===n)&&(T.add(L),T.add(O),P.add(`${L}|||${O}`),P.add(`${O}|||${L}`))}),{selectedNeighbors:T,selectedLinkSet:P}},[n,u.links]),R=E.useCallback(T=>i==="proximity"&&n?T.id===n||T.name===n?"#dc2626":$.has(T.id)||$.has(T.name||"")?"#f59e0b":"hsl(120, 40%, 45%)":Cc[T.type||"default"]||Cc.default,[i,n,$]);return E.useEffect(()=>{var L,O,B;if(!w.current||u.nodes.length===0)return;const T=w.current,C=u.nodes.length>100?-250:-350;(L=T.d3Force("charge"))==null||L.strength(C).distanceMax(300),(O=T.d3Force("link"))==null||O.distance(60).strength(.7),T.d3Force("collision",UN().radius(D=>A(D._connections||1)+6).strength(.8)),T.d3Force("radial",BN(D=>(50-Math.min(D._connections||0,50))*12+60,0,0).strength(.3)),(B=T.d3Force("center"))==null||B.strength(.05),T.d3ReheatSimulation()},[u,A]),E.useEffect(()=>(u.nodes.length>0&&!x&&w.current&&(S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{var T;(T=w.current)==null||T.zoomToFit(600,40),_(!0)},2500)),()=>{S.current&&clearTimeout(S.current)}),[u,x]),E.useEffect(()=>{if(!n||!w.current)return;const T=u.nodes.find(P=>P.id===n||P.name===n);T&&T.x!==void 0&&T.y!==void 0&&(w.current.centerAt(T.x,T.y,800),w.current.zoom(2.5,800))},[n]),d?c.jsx("div",{className:"network-graph-container",children:c.jsx("div",{className:"loading",children:"Loading network graph..."})}):y?c.jsx("div",{className:"network-graph-container",children:c.jsxs("div",{className:"error",children:[y,c.jsx("button",{onClick:k,style:{marginTop:12},children:"Retry"})]})}):u.nodes.length===0?c.jsx("div",{className:"network-graph-container",children:c.jsx("div",{className:"empty",children:"No network data available"})}):c.jsxs("div",{className:"network-graph-container",ref:b,children:[c.jsx(Kf,{ref:w,graphData:u,backgroundColor:"#030712",d3AlphaDecay:.025,d3VelocityDecay:.4,warmupTicks:200,cooldownTicks:300,cooldownTime:8e3,minZoom:.01,maxZoom:10,nodeVal:T=>A(T._connections||1),nodeCanvasObject:(T,P,C)=>{const L=A(T._connections||1),O=T.name||T.id||"",B=n&&(T.id===n||T.name===n),D=n&&($.has(T.id)||$.has(T.name||"")),z=n&&!B&&!D;if(P.beginPath(),P.arc(T.x,T.y,L,0,2*Math.PI),P.fillStyle=z?"rgba(100,100,100,0.25)":R(T),P.fill(),B?(P.strokeStyle="#06b6d4",P.lineWidth=3):(P.strokeStyle=z?"rgba(255,255,255,0.1)":"rgba(255,255,255,0.6)",P.lineWidth=1),P.stroke(),C>.4||B||D&&C>.25){const U=Math.max(3,Math.min(11,12/C));P.font=`${B?"bold ":""}${U}px Sans-Serif`,P.textAlign="center",P.textBaseline="top";const q=T.y+L+2;z||(P.fillStyle="rgba(255,255,255,0.92)",P.fillText(O,T.x,q))}},linkColor:T=>{if(!n){const O=T.label||"";return O.includes("Money Flow")||O.includes("$")?"rgba(91, 79, 255, 0.35)":O.includes("Award")?"rgba(250, 204, 21, 0.3)":"rgba(255,255,255,0.12)"}const P=Qe(T.source),C=Qe(T.target),L=`${P}|||${C}`;return j.has(L)?"#06b6d4":"rgba(255,255,255,0.04)"},linkWidth:T=>{if(!n)return(T.count||1)>1?2:1;const P=Qe(T.source),C=Qe(T.target);return j.has(`${P}|||${C}`)?2.5:.3},linkDirectionalParticles:T=>{if(!n)return 0;const P=Qe(T.source),C=Qe(T.target);return j.has(`${P}|||${C}`)?3:0},linkDirectionalParticleWidth:2,linkDirectionalParticleSpeed:.008,onNodeClick:T=>{const P=T.name||T.id;r(n===P?null:P)},onNodeHover:(T,P)=>{document.body.style.cursor=T?"pointer":"default",v(T||null)},onBackgroundClick:()=>r(null)}),m&&c.jsx("div",{className:"graph-tooltip",style:{position:"absolute",pointerEvents:"none",left:0,top:0}}),c.jsxs("div",{className:"graph-instructions-bar",children:[c.jsx("span",{children:"Click nodes to explore relationships"}),c.jsx("span",{className:"separator",children:"•"}),c.jsx("span",{children:"Scroll to zoom"}),c.jsx("span",{className:"separator",children:"•"}),c.jsx("span",{children:"Drag to pan"})]})]})}const Ii=[{level:1,name:"Control Group",color:"#FF1744",description:"MITRE/JASON, NSC, Executive Branch"},{level:2,name:"Administrators",color:"#FF6B35",description:"NRO, NGA, CIA DS&T, DIA, NSA, OUSD, SAF-AQ"},{level:3,name:"FFRDCs",color:"#FF9800",description:"MITRE, Battelle, Sandia, LANL, LLNL, Oak Ridge"},{level:4,name:"Prime Contractors",color:"#5B4FFF",description:"Lockheed Martin, Northrop Grumman, Raytheon"},{level:5,name:"Facilities",color:"#4CAF50",description:"Area 51, S4, Edwards AFB, Tonopah, Dugway"},{level:6,name:"Programs",color:"#E91E63",description:"Immaculate Constellation, Kona Blue, etc."}];function Jf({activeLevels:e,onChange:n,showAll:r=!0,compact:i=!1}){const o=f=>{e.includes(f)?n(e.filter(u=>u!==f)):n([...e,f].sort())},a=()=>{e.length===Ii.length?n([]):n(Ii.map(f=>f.level))},s=e.length===Ii.length,l=e.length===0;return c.jsxs("div",{className:`intel-stack-filter ${i?"compact":""}`,children:[c.jsxs("div",{className:"intel-stack-header",children:[c.jsx("h4",{children:"Intelligence Stack"}),r&&c.jsx("button",{className:`select-all-btn ${s?"all-selected":""}`,onClick:a,title:s?"Deselect All":"Select All",children:s?"Clear":"All"})]}),c.jsx("div",{className:"intel-stack-pyramid",children:Ii.map(f=>{const u=e.includes(f.level)||l;return c.jsxs("button",{className:`stack-level ${u?"active":"inactive"}`,onClick:()=>o(f.level),style:{"--stack-color":f.color,"--stack-width":`${100-(f.level-1)*10}%`},title:f.description,"aria-pressed":u,children:[c.jsx("span",{className:"stack-indicator",style:{backgroundColor:f.color}}),c.jsx("span",{className:"stack-name",children:f.name}),!i&&c.jsxs("span",{className:"stack-level-num",children:["L",f.level]})]},f.level)})}),!i&&c.jsx("div",{className:"intel-stack-info",children:c.jsx("small",{children:l?"Showing all levels":`Showing ${e.length} of ${Ii.length} levels`})})]})}function yA({nodeCount:e,linkCount:n,inferredCount:r,selectedActor:i,onClearActor:o,onSelectActor:a,nodeIndex:s,showInferred:l,onShowInferredChange:f,minConnections:u,onMinConnectionsChange:h,colorMode:d,onColorModeChange:p,filterLevels:y,onFilterLevelsChange:g,colorMap:x,uniqueTypes:_}){const[m,v]=E.useState(""),[w,b]=E.useState(!1),[S,k]=E.useState(!0),[N,A]=E.useState(!1),[$,j]=E.useState(!1),R=E.useRef(null);E.useEffect(()=>{const C=L=>{R.current&&!R.current.contains(L.target)&&b(!1)};return document.addEventListener("mousedown",C),()=>document.removeEventListener("mousedown",C)},[]);const T=E.useMemo(()=>{if(!m.trim())return[];const C=m.toLowerCase();return s.filter(L=>L.name.toLowerCase().includes(C)).sort((L,O)=>O.connections-L.connections).slice(0,20)},[m,s]),P=C=>{a(C),v(""),b(!1)};return c.jsxs("aside",{className:"graph-sidebar",children:[c.jsxs("div",{className:"graph-sidebar-header",children:[c.jsxs(kt,{to:"/analysis",className:"back-link",children:[c.jsx(My,{size:14}),c.jsx("span",{children:"Back to Analysis"})]}),c.jsx("h2",{children:"Entity Network"})]}),c.jsxs("div",{className:"graph-sidebar-stats",children:[c.jsxs("div",{className:"stat-row",children:[c.jsx("span",{className:"stat-label",children:"Entities:"}),c.jsx("span",{className:"stat-value",children:e.toLocaleString()})]}),c.jsxs("div",{className:"stat-row",children:[c.jsx("span",{className:"stat-label",children:"Connections:"}),c.jsx("span",{className:"stat-value",children:n.toLocaleString()})]}),r>0&&c.jsxs("div",{className:"stat-row",children:[c.jsx("span",{className:"stat-label",children:"Inferred:"}),c.jsx("span",{className:"stat-value",style:{color:"#facc15"},children:r.toLocaleString()})]})]}),i&&c.jsxs("div",{className:"graph-sidebar-selected",children:[c.jsxs("div",{className:"selected-actor-header",children:[c.jsx("span",{className:"actor-label",children:"Selected actor:"}),c.jsx("button",{className:"clear-actor-btn",onClick:o,children:"Clear"})]}),c.jsx("div",{className:"selected-actor-name",children:i})]}),c.jsxs("div",{className:"graph-search-container",ref:R,children:[c.jsx("label",{children:"Search entities:"}),c.jsx("input",{className:"graph-search-input",type:"text",placeholder:"e.g., Lockheed Martin",value:m,onChange:C=>{v(C.target.value),b(!0)},onFocus:()=>{m.trim()&&b(!0)}}),w&&T.length>0&&c.jsx("div",{className:"search-results-dropdown",role:"listbox",children:T.map(C=>c.jsxs("button",{className:"search-result-item",role:"option",type:"button",onClick:()=>P(C.name),children:[c.jsx("span",{className:"result-name",children:C.name}),c.jsxs("span",{className:"result-count",children:[C.connections," conn."]})]},C.name))})]}),c.jsxs("div",{className:"sidebar-section",children:[c.jsxs("button",{className:"section-toggle",onClick:()=>k(!S),children:[c.jsx("span",{children:"Filters"}),c.jsx("span",{className:"toggle-arrow",children:S?"▼":"▶"})]}),S&&c.jsxs("div",{className:"section-content",children:[c.jsx("div",{className:"filter-row",children:c.jsxs("label",{children:[c.jsx("input",{type:"checkbox",checked:l,onChange:C=>f(C.target.checked)}),"Show inferred"]})}),c.jsx("div",{className:"filter-row",children:c.jsxs("label",{children:["Min connections:",c.jsx("input",{type:"number",min:0,max:20,value:u,onChange:C=>h(parseInt(C.target.value)||0)})]})}),c.jsxs("div",{style:{marginTop:8},children:[c.jsx("span",{style:{fontSize:"0.75rem",color:"#94a3b8"},children:"Color by:"}),c.jsxs("div",{className:"color-mode-toggle",children:[c.jsx("button",{className:`color-mode-btn ${d==="type"?"active":""}`,onClick:()=>p("type"),children:"Entity Type"}),c.jsx("button",{className:`color-mode-btn ${d==="proximity"?"active":""}`,onClick:()=>p("proximity"),children:"Proximity"})]})]})]})]}),c.jsxs("div",{className:"sidebar-section",children:[c.jsxs("button",{className:"section-toggle",onClick:()=>j(!$),children:[c.jsx("span",{children:"Intel Stack"}),c.jsx("span",{className:"toggle-arrow",children:$?"▼":"▶"})]}),$&&c.jsx("div",{className:"section-content",children:c.jsx(Jf,{activeLevels:y,onChange:g,compact:!0})})]}),c.jsxs("div",{className:"sidebar-section",children:[c.jsxs("button",{className:"section-toggle",onClick:()=>A(!N),children:[c.jsx("span",{children:"Legend"}),c.jsx("span",{className:"toggle-arrow",children:N?"▼":"▶"})]}),N&&c.jsx("div",{className:"section-content",children:c.jsx("div",{className:"sidebar-legend-items",children:_.map(C=>c.jsxs("div",{className:"sidebar-legend-item",children:[c.jsx("span",{className:"sidebar-legend-color",style:{backgroundColor:x[C]||"#9B9B9B"}}),c.jsx("span",{children:C})]},C))})})]})]})}function vA(e){if(!e)return{cls:"relationship",text:"RELATED"};const n=e.toLowerCase();return n.includes("money flow")||n.includes("$")||n.includes("financial")?{cls:"financial",text:"FINANCIAL"}:n.includes("award")||n.includes("contract")?{cls:"award",text:"AWARD"}:n.includes("co-recipient")||n.includes("same industry")||n.includes("inferred")?{cls:"inferred",text:"INFERRED"}:{cls:"relationship",text:"RELATED"}}function xA(e){return!e||e<=0?null:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toLocaleString()}`}function _A({actorName:e,links:n,totalLinks:r,onClose:i,onSelectActor:o}){const[a,s]=E.useState(""),l=E.useMemo(()=>n.filter(u=>{var p,y;const h=typeof u.source=="string"?u.source:((p=u.source)==null?void 0:p.id)||"",d=typeof u.target=="string"?u.target:((y=u.target)==null?void 0:y.id)||"";return h===e||d===e}),[n,e]),f=E.useMemo(()=>{if(!a.trim())return l;const u=a.toLowerCase();return l.filter(h=>{var g,x;const d=typeof h.source=="string"?h.source:((g=h.source)==null?void 0:g.id)||"",p=typeof h.target=="string"?h.target:((x=h.target)==null?void 0:x.id)||"";return(d===e?p:d).toLowerCase().includes(u)})},[l,a,e]);return c.jsxs("div",{className:"relationship-timeline",children:[c.jsxs("div",{className:"timeline-header",children:[c.jsxs("div",{className:"timeline-header-top",children:[c.jsx("h3",{children:"Timeline"}),c.jsx("button",{className:"timeline-close-btn",onClick:i,title:"Close panel",children:"✕"})]}),c.jsx("div",{className:"timeline-actor-name",children:e}),c.jsxs("div",{className:"timeline-subtitle",children:["Showing ",f.length," of ",r," relationships"]})]}),c.jsxs("div",{className:"timeline-filter",children:[c.jsx("label",{children:"Filter by entity:"}),c.jsx("input",{className:"timeline-filter-input",type:"text",placeholder:"e.g., Boeing",value:a,onChange:u=>s(u.target.value)})]}),c.jsx("div",{className:"timeline-entries",children:f.length===0?c.jsx("div",{className:"timeline-empty",children:"No interactions found"}):f.map((u,h)=>{var m,v;const d=typeof u.source=="string"?u.source:((m=u.source)==null?void 0:m.id)||"",p=typeof u.target=="string"?u.target:((v=u.target)==null?void 0:v.id)||"",y=d===e?p:d,g=d===e,x=vA(u.label||""),_=xA(u.value);return c.jsxs("div",{className:"timeline-entry",children:[c.jsx("span",{className:`timeline-entry-type ${x.cls}`,children:x.text}),u.count&&u.count>1&&c.jsxs("span",{style:{fontSize:"0.68rem",color:"#64748b",marginLeft:6},children:["x",u.count]}),c.jsxs("div",{className:"timeline-entry-actors",children:[c.jsx("span",{className:"actor-source",onClick:()=>o(g?e:y),children:g?e:y}),c.jsxs("span",{className:"actor-action",children:[" ",u.label||"related to"," "]}),c.jsx("span",{className:"actor-target",onClick:()=>o(g?y:e),children:g?y:e})]}),_&&c.jsx("div",{className:"timeline-entry-amount",children:_})]},`${d}-${p}-${h}`)})}),c.jsxs(kt,{to:`/browse?search=${encodeURIComponent(e)}&highlight=${encodeURIComponent(e)}`,className:"timeline-browse-link",children:["View ",e," in Browse"]})]})}function wA(){const[e,n]=E.useState([]),[r,i]=E.useState(null),[o,a]=E.useState("type"),[s,l]=E.useState(!0),[f,u]=E.useState(0),[h,d]=E.useState({nodeCount:0,linkCount:0,inferredCount:0,nodeIndex:[],rawLinks:[],totalRawLinks:0}),p=E.useCallback(g=>{d(g)},[]),y=h.nodeIndex.reduce((g,x)=>(g.includes(x.type)||g.push(x.type),g),[]).sort();return c.jsxs("div",{className:"network-page-layout",role:"main","aria-label":"Entity Network Graph",children:[c.jsx(yA,{nodeCount:h.nodeCount,linkCount:h.linkCount,inferredCount:h.inferredCount,selectedActor:r,onClearActor:()=>i(null),onSelectActor:g=>i(g),nodeIndex:h.nodeIndex,showInferred:s,onShowInferredChange:l,minConnections:f,onMinConnectionsChange:u,colorMode:o,onColorModeChange:a,filterLevels:e,onFilterLevelsChange:n,colorMap:Cc,uniqueTypes:y}),c.jsx("div",{className:"network-page-center",children:c.jsx(gA,{filterLevels:e,selectedActor:r,onSelectActor:i,colorMode:o,showInferred:s,minConnections:f,onDataReady:p})}),r&&c.jsx(_A,{actorName:r,links:h.rawLinks,totalLinks:h.totalRawLinks,onClose:()=>i(null),onSelectActor:g=>i(g)}),c.jsx("style",{children:` - .network-page-layout { - display: flex; - height: calc(100vh - 60px); - width: 100%; - overflow: hidden; - background: #030712; - } - - .network-page-center { - flex: 1; - min-width: 0; - height: 100%; - position: relative; - } - - @media (max-width: 700px) { - .network-page-layout { - flex-direction: column; - height: calc(100vh - 50px); - } - .network-page-center { - flex: 1; - } - } - `})]})}function eu(e){return e>=1e12?`$${(e/1e12).toFixed(2)}T`:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const Yp=14;function bA({data:e,x:n,y:r}){if(!e)return null;const i={left:n+Yp,top:r+Yp};return c.jsxs("div",{className:"pyramid-tooltip",style:i,role:"tooltip",children:[e.kind==="tier"&&c.jsxs("div",{className:"pyramid-tooltip-tier",children:[c.jsxs("div",{className:"pyramid-tooltip-title",style:{color:e.tier.color},children:["L",e.tier.level,": ",e.tier.name]}),c.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.tier.entity_count," entities · ",eu(e.tier.total_money_flow_usd)," flow"]}),e.topEntities.length>0&&c.jsx("div",{className:"pyramid-tooltip-list",children:e.topEntities.slice(0,3).map(o=>c.jsx("span",{className:"pyramid-tooltip-item",children:o},o))})]}),e.kind==="entity"&&c.jsxs("div",{className:"pyramid-tooltip-entity",children:[c.jsx("div",{className:"pyramid-tooltip-title",children:e.entity.display_name}),c.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.entity.entity_type??"Unknown"," · L",e.level," ",e.levelName]}),e.entity.description&&c.jsx("p",{className:"pyramid-tooltip-desc",children:e.entity.description}),c.jsxs("div",{className:"pyramid-tooltip-meta",children:[e.entity.relationship_count??0," relationships · ",eu(e.entity.money_flow_total_usd??0)," flow"]}),e.entity.key_connections&&e.entity.key_connections.length>0&&c.jsxs("div",{className:"pyramid-tooltip-list",children:[c.jsx("span",{className:"pyramid-tooltip-label",children:"Key connections:"}),e.entity.key_connections.slice(0,3).map(o=>c.jsx("span",{className:"pyramid-tooltip-item",children:o},o))]})]}),e.kind==="flow"&&c.jsxs("div",{className:"pyramid-tooltip-flow",children:[c.jsxs("div",{className:"pyramid-tooltip-title",children:[e.fromName," → ",e.toName]}),c.jsxs("div",{className:"pyramid-tooltip-meta",children:[eu(e.flow.total_usd)," · ",e.flow.flow_count," flow(s)"]})]})]})}const hl=600,Qp=420,kA=44,SA=90,qt=hl/2,Na=.12*hl,Kp=.42*hl;function jA(e){return e>=1e12?`$${(e/1e12).toFixed(2)}T`:e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const Jp={Corporation:"#5B4FFF","Government Agency":"#FF6B35","Research Institution":"#FF9800",Facility:"#4CAF50",Program:"#E91E63",Individual:"#2196F3",Organization:"#00BCD4","Investment Firm":"#E91E63",Unknown:"#9E9E9E"};function Zp(e){return e&&Jp[e]||Jp.Unknown}const NA=8,em=10;function CA(e){return e.length<=em?e:e.slice(0,em-1)+"…"}function tm(e){return[...e].sort((n,r)=>{const i=(r.relationship_count??0)-(n.relationship_count??0);return i!==0?i:(r.money_flow_total_usd??0)-(n.money_flow_total_usd??0)})}function EA(e){const{data:n,loading:r=!1,highlightedEntityId:i=null,onEntityClick:o,showFlowLines:a=!0,activeLevels:s=[1,2,3,4,5,6],chainEntityIds:l}=e,f=k=>!l||l.size===0||l.has(k),[u,h]=E.useState(null),[d,p]=E.useState(null),[y,g]=E.useState(null),x=E.useCallback((k,N)=>{p(k.level);const A=tm(k.entities).slice(0,3).map($=>$.display_name);g({data:{kind:"tier",tier:k,topEntities:A},x:N.clientX,y:N.clientY})},[]),_=E.useCallback(()=>{p(null),g(null)},[]),m=E.useCallback(()=>g(null),[]),v=(n==null?void 0:n.levels)??[],w=(n==null?void 0:n.cross_level_flows)??[],b=E.useMemo(()=>{const k=new Set(s.length?s:[1,2,3,4,5,6]);return v.filter(N=>k.has(N.level))},[v,s]),S=E.useMemo(()=>{const k=b.reduce(($,j)=>$+Math.max(j.entity_count,1),0)||1;let N=20;const A=[];for(let $=0;$c.jsxs("linearGradient",{id:`pyramid-grad-${k.level}`,x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:[c.jsx("stop",{offset:"0%",stopColor:k.color,stopOpacity:1}),c.jsx("stop",{offset:"100%",stopColor:k.color,stopOpacity:.75})]},`grad-${k.level}`)),a&&w.filter(k=>k.flow_count>0).slice(0,14).map((k,N)=>{const A=S.find(T=>T.level===k.from_level),$=S.find(T=>T.level===k.to_level);if(!A||!$)return null;const j=(A.yTop+A.yBottom)/2,R=($.yTop+$.yBottom)/2;return c.jsxs("linearGradient",{id:`flow-grad-${N}`,x1:"0",y1:j,x2:"0",y2:R,gradientUnits:"userSpaceOnUse",children:[c.jsx("stop",{offset:"0%",stopColor:A.color}),c.jsx("stop",{offset:"100%",stopColor:$.color})]},`flow-grad-${N}`)})]}),a&&w.filter(k=>k.flow_count>0).slice(0,14).map((k,N)=>{const A=S.find(z=>z.level===k.from_level),$=S.find(z=>z.level===k.to_level);if(!A||!$)return null;const j=(A.yTop+A.yBottom)/2,R=($.yTop+$.yBottom)/2,T=qt,P=qt,C=(j+R)/2,L=Math.max(...w.map(z=>z.total_usd),1),O=Math.log10(1+k.total_usd/L*9),B=Math.min(12,Math.max(3,3+O*6)),D=["","Control","Admin","FFRDCs","Primes","Facilities","Programs"];return c.jsx("path",{d:`M ${T} ${j} Q ${T} ${C} ${(T+P)/2} ${C} T ${P} ${R}`,fill:"none",stroke:`url(#flow-grad-${N})`,strokeWidth:B,strokeOpacity:.7,strokeLinecap:"round",className:"pyramid-flow-line pyramid-flow-band",onMouseEnter:z=>{g({data:{kind:"flow",flow:k,fromName:`L${k.from_level} ${D[k.from_level]??""}`,toName:`L${k.to_level} ${D[k.to_level]??""}`},x:z.nativeEvent.clientX,y:z.nativeEvent.clientY})},onMouseLeave:m},`flow-${k.from_level}-${k.to_level}-${N}`)}),S.map(k=>{const N=u===k.level,A=d===k.level,$=`M ${qt-k.halfWidthTop} ${k.yTop} - L ${qt+k.halfWidthTop} ${k.yTop} - L ${qt+k.halfWidthBottom} ${k.yBottom} - L ${qt-k.halfWidthBottom} ${k.yBottom} Z`;return c.jsxs("g",{className:`pyramid-tier-group ${l!=null&&l.size?k.entities.some(j=>l.has(j.entity_id))?"pyramid-tier-in-chain":"pyramid-tier-dimmed":""}`,onMouseEnter:j=>x(k,j),onMouseLeave:_,children:[c.jsx("path",{d:$,fill:`url(#pyramid-grad-${k.level})`,stroke:"var(--border-color)",strokeWidth:A?2.5:1,className:"pyramid-tier-rect pyramid-tier-trapezoid",onClick:()=>h(N?null:k.level),style:{cursor:"pointer"}}),c.jsxs("text",{x:qt,y:k.yTop+16,textAnchor:"middle",fill:"white",fontSize:12,fontWeight:600,className:"pyramid-tier-label",children:["L",k.level,": ",k.name," (",k.entity_count,")"]}),k.entities.length>0&&c.jsx("g",{className:"pyramid-tier-entities",children:(()=>{const j=tm(k.entities).slice(0,NA),R=k.entity_count-j.length,T=j.length,P=Math.min(k.halfWidthBottom*1.8,T*28),C=qt-P/2+(T>1?P/(T+1):P/2)/2,L=T>1?P/(T+1):0,O=(k.yTop+k.yBottom)/2+4;return c.jsxs(c.Fragment,{children:[j.map((B,D)=>{const z=T===1?qt:C+L*(D+1),U=i===B.entity_id,q=f(B.entity_id);return c.jsxs("g",{className:`pyramid-entity-node ${U?"pyramid-entity-node-highlighted":""} ${q?"":"pyramid-entity-node-dimmed"}`,onClick:X=>{X.stopPropagation(),o==null||o(B,k.level)},onMouseEnter:X=>{const ne=X.nativeEvent;g({data:{kind:"entity",entity:B,level:k.level,levelName:k.name},x:ne.clientX,y:ne.clientY})},onMouseLeave:m,style:{cursor:"pointer"},children:[c.jsx("circle",{cx:z,cy:O,r:10,fill:Zp(B.entity_type),stroke:U?"white":"var(--border-color)",strokeWidth:U?2.5:1}),c.jsx("text",{x:z,y:O+22,textAnchor:"middle",fill:"var(--text-primary)",fontSize:9,className:"pyramid-entity-node-label",children:CA(B.display_name)})]},B.entity_id)}),R>0&&c.jsxs("text",{x:qt,y:O+(k.yBottom-k.yTop)/2-4,textAnchor:"middle",fill:"var(--text-muted)",fontSize:10,className:"pyramid-entity-more",children:["+",R," more"]})]})})()})]},k.level)})]}),u!==null&&c.jsx("div",{className:"pyramid-sidebar",children:(()=>{const k=v.find(N=>N.level===u);return k?c.jsxs(c.Fragment,{children:[c.jsxs("h4",{style:{color:k.color,marginBottom:8},children:["L",k.level,": ",k.name]}),c.jsxs("p",{className:"pyramid-tier-stats",children:[k.entity_count," entities · ",jA(k.total_money_flow_usd)," flow"]}),c.jsx("ul",{className:"pyramid-entity-list",children:k.entities.map(N=>c.jsx("li",{children:c.jsxs("button",{type:"button",className:`pyramid-entity-btn ${i===N.entity_id?"highlighted":""}`,onClick:()=>o==null?void 0:o(N,k.level),children:[c.jsx("span",{className:"pyramid-entity-dot",style:{backgroundColor:Zp(N.entity_type)}}),N.display_name,N.entity_type&&c.jsx("span",{className:"pyramid-entity-type",children:N.entity_type})]})},N.entity_id))})]}):null})()}),y&&c.jsx(bA,{data:y.data,x:y.x,y:y.y})]})}function TA(e){return e>=1e9?`$${(e/1e9).toFixed(2)}B`:e>=1e6?`$${(e/1e6).toFixed(2)}M`:e>=1e3?`$${(e/1e3).toFixed(1)}K`:`$${e.toFixed(0)}`}const AA={1:"Control Group",2:"Administrators",3:"FFRDCs",4:"Prime Contractors",5:"Facilities",6:"Programs"};function PA({entityId:e,onClose:n,inline:r=!1}){const[i,o]=E.useState(null),[a,s]=E.useState(null),[l,f]=E.useState(!1);if(E.useEffect(()=>{if(!e){o(null),s(null);return}f(!0),Promise.all([db(e),o0(e).catch(()=>null)]).then(([h,d])=>{o(h),s(d??null)}).finally(()=>f(!1))},[e]),!e)return null;const u=c.jsxs("div",{className:`entity-detail-panel ${r?"entity-detail-panel-inline":""}`,role:"dialog","aria-label":"Entity detail",children:[c.jsxs("div",{className:"entity-detail-panel-header",children:[c.jsx("h3",{children:"Entity detail"}),c.jsx("button",{type:"button",className:"entity-detail-panel-close",onClick:n,"aria-label":"Close",children:"×"})]}),l&&c.jsx("div",{className:"entity-detail-panel-loading",children:"Loading…"}),!l&&i&&c.jsxs("div",{className:"entity-detail-panel-body",children:[c.jsx("h2",{className:"entity-detail-name",children:i.display_name}),c.jsxs("div",{className:"entity-detail-meta",children:[i.entity_type&&c.jsx("span",{className:"entity-detail-badge",children:i.entity_type}),i.intel_stack_level!=null&&c.jsxs("span",{className:"entity-detail-badge entity-detail-level",children:["L",i.intel_stack_level," ",AA[i.intel_stack_level]??""]})]}),i.description&&c.jsx("p",{className:"entity-detail-desc",children:i.description}),a&&(a.chain_up.length>0||a.chain_down.length>0)&&c.jsxs("section",{className:"entity-detail-section",children:[c.jsx("h4",{children:"Chain of command"}),c.jsxs("div",{className:"entity-detail-chain",children:[a.chain_up.length>0&&c.jsxs("div",{className:"entity-detail-chain-up",children:[c.jsx("span",{className:"entity-detail-chain-label",children:"Up (toward L1)"}),a.chain_up.map(h=>c.jsxs("div",{className:"entity-detail-chain-node",children:["L",h.intel_stack_level??"?"," ",h.display_name]},h.entity_id))]}),c.jsxs("div",{className:"entity-detail-chain-target",children:["→ ",i.display_name]}),a.chain_down.length>0&&c.jsxs("div",{className:"entity-detail-chain-down",children:[c.jsx("span",{className:"entity-detail-chain-label",children:"Down (toward L6)"}),a.chain_down.map(h=>c.jsxs("div",{className:"entity-detail-chain-node",children:["L",h.intel_stack_level??"?"," ",h.display_name]},h.entity_id))]})]})]}),i.relationships_by_type&&Object.keys(i.relationships_by_type).length>0&&c.jsxs("section",{className:"entity-detail-section",children:[c.jsx("h4",{children:"Relationships"}),Object.entries(i.relationships_by_type).map(([h,d])=>c.jsxs("div",{className:"entity-detail-rel-group",children:[c.jsx("span",{className:"entity-detail-rel-type",children:h}),c.jsx("ul",{children:d.map((p,y)=>c.jsxs("li",{children:[p.source===i.display_name?p.target:p.source,p.description&&c.jsxs("span",{className:"entity-detail-rel-desc",children:[" — ",p.description]})]},y))})]},h))]}),i.money_flows&&i.money_flows.length>0&&c.jsxs("section",{className:"entity-detail-section",children:[c.jsx("h4",{children:"Money flows"}),c.jsxs("ul",{className:"entity-detail-flows",children:[i.money_flows.slice(0,15).map((h,d)=>c.jsxs("li",{children:[h.source," → ",h.target,": ",h.amount_usd!=null?TA(h.amount_usd):"—"]},d)),i.money_flows.length>15&&c.jsxs("li",{className:"entity-detail-more",children:["+",i.money_flows.length-15," more"]})]})]}),i.materials_flows&&i.materials_flows.length>0&&c.jsxs("section",{className:"entity-detail-section",children:[c.jsx("h4",{children:"Materials flows"}),c.jsxs("ul",{className:"entity-detail-flows",children:[i.materials_flows.slice(0,10).map((h,d)=>c.jsxs("li",{children:[h.source," → ",h.target,h.material_type?` (${h.material_type})`:""]},d)),i.materials_flows.length>10&&c.jsxs("li",{className:"entity-detail-more",children:["+",i.materials_flows.length-10," more"]})]})]}),c.jsxs("section",{className:"entity-detail-section entity-detail-actions",children:[c.jsx(kt,{to:`/analysis/network?entity=${encodeURIComponent(i.display_name)}`,className:"entity-detail-link",children:"View in Network Graph"}),c.jsx(kt,{to:`/browse?q=${encodeURIComponent(i.display_name)}`,className:"entity-detail-link",children:"View in Browse"})]})]})]});return r?u:c.jsx("div",{className:"entity-detail-panel-overlay",onClick:n,role:"presentation",children:c.jsx("div",{onClick:h=>h.stopPropagation(),children:u})})}function RA(){const[e,n]=Py(),r=e.get("entity")||e.get("entity_id")||null,[i,o]=E.useState(null),[a,s]=E.useState(!0),[l,f]=E.useState(!0),[u,h]=E.useState([1,2,3,4,5,6]),[d,p]=E.useState(null),[y,g]=E.useState(!1),[x,_]=E.useState(new Set),[m,v]=E.useState(""),[w,b]=E.useState([]),[S,k]=E.useState(!1),[N,A]=E.useState(!1),$=E.useRef(null),j=[{level:1,name:"Control Group",color:"#FF1744"},{level:2,name:"Administrators",color:"#FF6B35"},{level:3,name:"FFRDCs",color:"#FF9800"},{level:4,name:"Prime Contractors",color:"#5B4FFF"},{level:5,name:"Facilities",color:"#4CAF50"},{level:6,name:"Programs",color:"#E91E63"}];E.useEffect(()=>{let P=!1;return s(!0),fb().then(C=>{P||o(C)}).finally(()=>{P||s(!1)}),()=>{P=!0}},[]);const R=d||r;E.useEffect(()=>{if(!y||!R){_(new Set);return}o0(R).then(P=>{var L;const C=new Set;C.add(P.target.entity_id),P.chain_up.forEach(O=>C.add(O.entity_id)),P.chain_down.forEach(O=>C.add(O.entity_id)),(L=P.lateral)==null||L.forEach(O=>C.add(O.entity_id)),_(C)}).catch(()=>_(new Set))},[y,R]),E.useEffect(()=>{if(!m.trim()){b([]);return}const P=setTimeout(()=>{hb(m.trim(),15).then(C=>b(C.results))},300);return()=>clearTimeout(P)},[m]);const T=E.useCallback(P=>{n({entity_id:P.entity_id}),p(P.entity_id),v(""),b([]),k(!1)},[n]);return E.useEffect(()=>{const P=C=>{var L,O;C.key==="/"&&!/^(input|textarea)$/i.test((L=C.target)==null?void 0:L.tagName)&&(C.preventDefault(),(O=$.current)==null||O.focus()),C.key==="Escape"&&(A(!1),k(!1),p(null))};return window.addEventListener("keydown",P),()=>window.removeEventListener("keydown",P)},[]),c.jsxs("div",{className:"pyramid-page",children:[c.jsx("div",{className:"pyramid-page-top",children:c.jsxs("div",{className:"page-header pyramid-page-header",children:[c.jsx("h1",{children:"Intelligence Stack Pyramid"}),c.jsx("p",{children:"Hierarchical view of entities by intel stack level"}),c.jsxs("div",{className:"pyramid-search-wrap",children:[c.jsx("input",{ref:$,type:"search",placeholder:"Search entities (/)",value:m,onChange:P=>{v(P.target.value),k(!0)},onFocus:()=>k(!0),onBlur:()=>setTimeout(()=>k(!1),150),className:"pyramid-search-input","aria-label":"Search pyramid entities"}),S&&w.length>0&&c.jsx("ul",{className:"pyramid-search-results",children:w.map(P=>c.jsx("li",{children:c.jsxs("button",{type:"button",onClick:()=>T(P),children:[P.display_name,P.intel_stack_level!=null&&c.jsxs("span",{className:"pyramid-search-level",children:["L",P.intel_stack_level]})]})},P.entity_id))})]}),c.jsx("div",{className:`pyramid-page-detail-section ${d?"pyramid-page-detail-section-has-detail":""}`,children:d?c.jsx(PA,{entityId:d,onClose:()=>p(null),inline:!0}):c.jsx("div",{className:"pyramid-page-aside-empty",children:y?c.jsx(c.Fragment,{children:"Select an entity from the pyramid or search to trace its chain of command and view details."}):c.jsx(c.Fragment,{children:"Select an entity from the pyramid or search to view details and chain of command."})})})]})}),c.jsxs("div",{className:"pyramid-page-main",children:[c.jsxs("div",{className:"pyramid-controls",children:[c.jsx(Jf,{activeLevels:u,onChange:h,showAll:!0,compact:!1}),c.jsxs("label",{className:"pyramid-toggle",children:[c.jsx("input",{type:"checkbox",checked:l,onChange:P=>f(P.target.checked)}),c.jsx("span",{children:"Show flow lines"})]}),c.jsxs("label",{className:"pyramid-toggle",children:[c.jsx("input",{type:"checkbox",checked:y,onChange:P=>g(P.target.checked)}),c.jsx("span",{children:"Trace chain of command"}),y&&x.size>0&&c.jsxs("span",{className:"pyramid-chain-badge",title:"Entities in chain",children:["(",x.size,")"]})]})]}),c.jsx(EA,{data:i,loading:a,highlightedEntityId:r,showFlowLines:l,activeLevels:u,chainEntityIds:y?x:void 0,onEntityClick:P=>{n({entity_id:P.entity_id}),p(P.entity_id)}})]}),c.jsx("div",{className:"pyramid-legend",children:j.map(({level:P,name:C,color:L})=>c.jsxs("span",{className:"pyramid-legend-item",children:[c.jsx("span",{className:"pyramid-legend-dot",style:{backgroundColor:L}})," L",P," ",C]},P))}),c.jsx("button",{type:"button",className:"pyramid-help-btn",onClick:()=>A(P=>!P),"aria-label":"Help",title:"Help",children:"?"}),N&&c.jsx("div",{className:"pyramid-help-overlay",onClick:()=>A(!1),role:"presentation",children:c.jsxs("div",{className:"pyramid-help-content",onClick:P=>P.stopPropagation(),children:[c.jsx("h3",{children:"Using the Intelligence Stack Pyramid"}),c.jsxs("ul",{children:[c.jsxs("li",{children:[c.jsx("strong",{children:"Click a tier"})," to expand and see entities in the sidebar."]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Click an entity"})," to open its detail in the right panel."]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Search"})," with the search bar or press ",c.jsx("kbd",{children:"/"})," to find entities."]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Trace chain of command"})," to highlight an entity's hierarchy."]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Flow lines"})," show money flow between levels; hover for details."]})]}),c.jsxs("p",{children:[c.jsx("kbd",{children:"Escape"})," closes the detail panel or this help."]}),c.jsx("button",{type:"button",className:"pyramid-help-close",onClick:()=>A(!1),children:"Close"})]})})]})}function MA(){const[e,n]=E.useState([]),[r,i]=E.useState(!1);return c.jsxs("div",{className:"visualization-page fade-in",role:"main","aria-label":"Sankey Flow Diagram",children:[c.jsxs("div",{className:"viz-page-header",children:[c.jsxs(kt,{to:"/analysis",className:"back-link",children:[c.jsx(My,{size:20}),c.jsx("span",{children:"Back to Analysis"})]}),c.jsxs("div",{className:"viz-page-title",children:[c.jsx("h1",{children:"Sankey Flow Diagram"}),c.jsx("p",{children:"Visualize money flows and relationships between entities. Use controls to filter and interact."})]})]}),c.jsxs("div",{className:"viz-fullscreen-container",children:[c.jsx(V0,{filterLevels:e}),c.jsxs("button",{className:"intel-filter-toggle",onClick:()=>i(!r),title:"Toggle Intelligence Stack Filter",children:[c.jsx(vw,{size:20}),c.jsx("span",{children:"Intel Stack"})]}),r&&c.jsx("div",{className:"intel-filter-panel",children:c.jsx(Jf,{activeLevels:e,onChange:n,compact:!0})})]}),c.jsx("style",{children:` - .visualization-page { - display: flex; - flex-direction: column; - height: calc(100vh - 40px); - padding: 20px; - } - - .viz-page-header { - flex-shrink: 0; - margin-bottom: 16px; - } - - .back-link { - display: inline-flex; - align-items: center; - gap: 4px; - color: var(--text-secondary); - text-decoration: none; - font-size: 0.9rem; - margin-bottom: 8px; - transition: color 0.2s ease; - } - - .back-link:hover { - color: var(--primary-color); - } - - .viz-page-title h1 { - margin: 0 0 4px 0; - font-size: 1.5rem; - } - - .viz-page-title p { - margin: 0; - color: var(--text-secondary); - font-size: 0.95rem; - } - - .viz-fullscreen-container { - flex: 1; - min-height: 0; - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 12px; - overflow: hidden; - position: relative; - } - - .viz-fullscreen-container .sankey-container { - height: 100% !important; - min-height: unset !important; - } - - .intel-filter-toggle { - position: absolute; - top: 12px; - right: 12px; - display: flex; - align-items: center; - gap: 6px; - padding: 8px 12px; - background: var(--card-bg); - border: 1px solid var(--border-color); - border-radius: 8px; - color: var(--text-primary); - font-size: 0.85rem; - cursor: pointer; - transition: all 0.2s ease; - z-index: 100; - } - - .intel-filter-toggle:hover { - border-color: var(--primary-color); - color: var(--primary-color); - } - - .intel-filter-panel { - position: absolute; - top: 56px; - right: 12px; - z-index: 100; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - } - - @media (max-width: 768px) { - .visualization-page { - padding: 12px; - height: calc(100vh - 24px); - } - - .viz-page-title h1 { - font-size: 1.25rem; - } - - .intel-filter-toggle span { - display: none; - } - - .intel-filter-panel { - right: 8px; - top: 48px; - } - } - `})]})}function OA(){return c.jsxs("div",{className:"export",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h2",{children:"Export Data"}),c.jsx("p",{children:"Download data in various formats"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Export to CSV"}),c.jsx("p",{children:"Download data in comma-separated values format, compatible with Excel and other spreadsheet software."}),c.jsxs("div",{className:"export-buttons",children:[c.jsx("button",{onClick:yb,className:"btn btn-primary",children:"Export Entities (CSV)"}),c.jsx("button",{onClick:vb,className:"btn btn-primary",children:"Export Money Flows (CSV)"}),c.jsx("button",{onClick:xb,className:"btn btn-primary",children:"Export Awards (CSV)"})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Export to JSON"}),c.jsx("p",{children:"Download data in JSON format for programmatic access and integration with other tools."}),c.jsx("div",{className:"export-buttons",children:c.jsx("button",{onClick:_b,className:"btn btn-primary",children:"Export Entities (JSON)"})})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Export Reports (PDF)"}),c.jsx("p",{children:"Generate formatted PDF reports with summary statistics and visualizations."}),c.jsx("div",{className:"export-buttons",children:c.jsx("button",{onClick:wb,className:"btn btn-primary",children:"Export Summary Report (PDF)"})})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Export Tips"}),c.jsxs("ul",{children:[c.jsx("li",{children:"CSV files can be opened in Excel, Google Sheets, or any spreadsheet software"}),c.jsx("li",{children:"JSON files are ideal for importing into databases or custom applications"}),c.jsx("li",{children:"PDF reports provide a formatted overview for sharing and presentations"}),c.jsx("li",{children:"All exports reflect the current state of the database"}),c.jsx("li",{children:"Large exports may take a few moments to generate"})]})]})]})}function zA(){const[e,n]=E.useState("entity"),[r,i]=E.useState(""),[o,a]=E.useState(null),[s,l]=E.useState(!1),[f,u]=E.useState(null),[h,d]=E.useState({entity_id:"",display_name:"",normalized_name:"",entity_type:""}),[p,y]=E.useState({source:"",target:"",relationship:"",amount_usd:"",start_date:"",source_citation:""}),[g,x]=E.useState({award_id:"",recipient_name:"",awarding_agency:"",award_amount:"",award_date:"",description:""}),[_,m]=E.useState({target_entity:"",agency:"",topic:"",priority:"",notes:""}),[v,w]=E.useState(""),[b,S]=E.useState(""),[k,N]=E.useState(""),A=async()=>{if(!r.trim()){a(!1);return}l(!0);try{const j=await Nb(r);a(j.valid)}catch{a(!1)}finally{l(!1)}},$=async j=>{if(j.preventDefault(),!o){u({success:!1,message:"Please provide a valid GitHub token"});return}l(!0),u(null);try{let R;if(e==="entity")R=await bb(h,r);else if(e==="money-flow"){const T={...p,amount_usd:p.amount_usd?parseFloat(p.amount_usd):void 0};R=await kb(T,r)}else if(e==="award"){const T={...g,award_amount:g.award_amount?parseFloat(g.award_amount):void 0};R=await Sb(T,r)}else e==="foia-target"&&(R=await jb(_,r));u(R),R.success&&(e==="entity"?d({entity_id:"",display_name:"",normalized_name:"",entity_type:""}):e==="money-flow"?y({source:"",target:"",relationship:"",amount_usd:"",start_date:"",source_citation:""}):e==="award"?x({award_id:"",recipient_name:"",awarding_agency:"",award_amount:"",award_date:"",description:""}):e==="foia-target"&&m({target_entity:"",agency:"",topic:"",priority:"",notes:""}),N(""))}catch(R){u({success:!1,message:R.message||"Error submitting contribution"})}finally{l(!1)}};return c.jsxs("div",{className:"contribute",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h2",{children:"Contribute Data"}),c.jsx("p",{children:"Submit new data via automated GitHub pull request"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"GitHub Token Setup"}),c.jsxs("p",{children:["To contribute data, you need a GitHub personal access token with ",c.jsx("code",{children:"repo"})," scope.",c.jsx("br",{}),"Generate one at: ",c.jsx("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/settings/tokens"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"GitHub Personal Access Token"}),c.jsx("input",{type:"password",value:r,onChange:j=>i(j.target.value),placeholder:"ghp_..."}),c.jsx("button",{onClick:A,className:"btn btn-secondary",style:{marginTop:"10px"},disabled:s,children:"Validate Token"}),o===!0&&c.jsx("p",{style:{color:"#5afa5a",marginTop:"10px"},children:"✓ Token is valid"}),o===!1&&c.jsx("p",{style:{color:"#fa5a5a",marginTop:"10px"},children:"✗ Token is invalid"})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Select Contribution Type"}),c.jsxs("div",{className:"tabs",children:[c.jsx("button",{className:e==="entity"?"active":"",onClick:()=>n("entity"),children:"Entity"}),c.jsx("button",{className:e==="money-flow"?"active":"",onClick:()=>n("money-flow"),children:"Money Flow"}),c.jsx("button",{className:e==="award"?"active":"",onClick:()=>n("award"),children:"Award"}),c.jsx("button",{className:e==="foia-target"?"active":"",onClick:()=>n("foia-target"),children:"FOIA Target"})]})]}),c.jsxs("form",{onSubmit:$,children:[c.jsxs("div",{className:"card",children:[c.jsxs("h3",{children:[e==="entity"&&"New Entity",e==="money-flow"&&"New Money Flow",e==="award"&&"New Federal Award",e==="foia-target"&&"New FOIA Target"]}),e==="entity"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Entity ID *"}),c.jsx("input",{type:"text",value:h.entity_id,onChange:j=>d({...h,entity_id:j.target.value}),required:!0})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Display Name *"}),c.jsx("input",{type:"text",value:h.display_name,onChange:j=>d({...h,display_name:j.target.value}),required:!0})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Normalized Name *"}),c.jsx("input",{type:"text",value:h.normalized_name,onChange:j=>d({...h,normalized_name:j.target.value}),required:!0})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Entity Type"}),c.jsx("input",{type:"text",value:h.entity_type,onChange:j=>d({...h,entity_type:j.target.value})})]})]}):e==="money-flow"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Source Entity *"}),c.jsx("input",{type:"text",value:p.source,onChange:j=>y({...p,source:j.target.value}),required:!0})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Target Entity *"}),c.jsx("input",{type:"text",value:p.target,onChange:j=>y({...p,target:j.target.value}),required:!0})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Relationship Type"}),c.jsx("input",{type:"text",value:p.relationship,onChange:j=>y({...p,relationship:j.target.value}),placeholder:"e.g., M&A, Contract, Investment"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Amount (USD)"}),c.jsx("input",{type:"number",value:p.amount_usd,onChange:j=>y({...p,amount_usd:j.target.value})})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Date"}),c.jsx("input",{type:"date",value:p.start_date,onChange:j=>y({...p,start_date:j.target.value})})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Source Citation"}),c.jsx("input",{type:"text",value:p.source_citation,onChange:j=>y({...p,source_citation:j.target.value}),placeholder:"URL or document reference"})]})]}):e==="award"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Award ID *"}),c.jsx("input",{type:"text",value:g.award_id,onChange:j=>x({...g,award_id:j.target.value}),required:!0,placeholder:"e.g., CONTRACT-2023-001"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Recipient Name *"}),c.jsx("input",{type:"text",value:g.recipient_name,onChange:j=>x({...g,recipient_name:j.target.value}),required:!0,placeholder:"Entity or organization name"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Awarding Agency *"}),c.jsx("input",{type:"text",value:g.awarding_agency,onChange:j=>x({...g,awarding_agency:j.target.value}),required:!0,placeholder:"e.g., Department of Defense"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Award Amount (USD)"}),c.jsx("input",{type:"number",value:g.award_amount,onChange:j=>x({...g,award_amount:j.target.value}),placeholder:"0.00"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Award Date"}),c.jsx("input",{type:"date",value:g.award_date,onChange:j=>x({...g,award_date:j.target.value})})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Description"}),c.jsx("textarea",{value:g.description,onChange:j=>x({...g,description:j.target.value}),rows:3,placeholder:"Brief description of the award or contract"})]})]}):e==="foia-target"?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Target Entity *"}),c.jsx("input",{type:"text",value:_.target_entity,onChange:j=>m({..._,target_entity:j.target.value}),required:!0,placeholder:"Organization to request from"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Agency *"}),c.jsx("input",{type:"text",value:_.agency,onChange:j=>m({..._,agency:j.target.value}),required:!0,placeholder:"e.g., DOD, NASA, DHS"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Topic *"}),c.jsx("input",{type:"text",value:_.topic,onChange:j=>m({..._,topic:j.target.value}),required:!0,placeholder:"Subject matter for FOIA request"})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Priority"}),c.jsxs("select",{value:_.priority,onChange:j=>m({..._,priority:j.target.value}),children:[c.jsx("option",{value:"",children:"Select priority..."}),c.jsx("option",{value:"high",children:"High"}),c.jsx("option",{value:"medium",children:"Medium"}),c.jsx("option",{value:"low",children:"Low"})]})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Additional Notes"}),c.jsx("textarea",{value:_.notes,onChange:j=>m({..._,notes:j.target.value}),rows:4,placeholder:"Rationale, background information, or specific items to request"})]})]}):null]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Contributor Information (Optional)"}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Your Name"}),c.jsx("input",{type:"text",value:v,onChange:j=>w(j.target.value)})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Your Email"}),c.jsx("input",{type:"email",value:b,onChange:j=>S(j.target.value)})]}),c.jsxs("div",{className:"input-group",children:[c.jsx("label",{children:"Additional Notes"}),c.jsx("textarea",{value:k,onChange:j=>N(j.target.value),rows:4,placeholder:"Provide any additional context or notes about this contribution"})]})]}),f&&c.jsxs("div",{className:`alert ${f.success?"alert-success":"alert-error"}`,children:[c.jsx("p",{children:f.message}),f.pr_url&&c.jsxs("p",{children:["View your pull request: ",c.jsx("a",{href:f.pr_url,target:"_blank",rel:"noopener noreferrer",children:f.pr_url})]})]}),c.jsx("button",{type:"submit",className:"btn btn-primary",disabled:s||!o,children:s?"Submitting...":"Submit Contribution"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"How It Works"}),c.jsxs("ol",{children:[c.jsx("li",{children:"Fill out the form with accurate data"}),c.jsx("li",{children:"Your contribution will automatically create a fork of the repository (if needed)"}),c.jsx("li",{children:"A new branch will be created with your contribution"}),c.jsx("li",{children:"A pull request will be opened for review"}),c.jsx("li",{children:"Once reviewed and approved, your contribution will be merged into the main database"})]}),c.jsxs("p",{children:[c.jsx("strong",{children:"Note:"})," All contributions are subject to review and validation."]})]})]})}function FA(){return c.jsxs("div",{className:"about",children:[c.jsxs("div",{className:"page-header",children:[c.jsx("h2",{children:"About"}),c.jsx("p",{children:"Project RawHorse - Open Source Research Tool"})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Project Overview"}),c.jsx("p",{children:"Project RawHorse is an open-source application for exploring and analyzing publicly available data related to Unidentified Anomalous Phenomena (UAP) research, federal contracting, and related entities."})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Repository"}),c.jsx("p",{children:"Source code, releases, and contribution guidelines are hosted on GitHub:"}),c.jsx("p",{style:{marginTop:"12px"},children:c.jsx("a",{href:"https://github.com/ConsciousEnergy/ProjectRawHorse",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-primary)",fontWeight:600},children:"https://github.com/ConsciousEnergy/ProjectRawHorse"})})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Data Sources and Attribution"}),c.jsx("p",{children:"This project incorporates research and analysis from the following sources. We are deeply grateful to the researchers whose work has made this project possible."}),c.jsxs("div",{style:{marginTop:"16px"},children:[c.jsx("h4",{style:{marginBottom:"8px",color:"var(--text-secondary)"},children:"UAPGerb"}),c.jsx("p",{style:{marginBottom:"12px"},children:"Channel dedicated to investigating UFO legacy program operations within the U.S. Department of Defense and Intelligence community. Entity relationships, organizational structures, and FOIA targets derived from in-depth transcript analysis."}),c.jsxs("ul",{children:[c.jsxs("li",{children:[c.jsx("strong",{children:'"The Hidden Wing"'})," - US Air Force UFO Reverse Engineering Programs (2026)",c.jsx("br",{}),c.jsx("a",{href:"https://www.youtube.com/watch?v=-IXSZe4xVv4",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"Watch on YouTube"}),c.jsx("span",{style:{color:"var(--text-muted)",marginLeft:"8px"},children:"- Air Force SAF hierarchy, RCO, AFTE, sensitive activities"})]}),c.jsxs("li",{style:{marginTop:"8px"},children:[c.jsx("strong",{children:"Previous Research (2025)"})," - NRO, CIA DS&T, FFRDCs, Office of Global Access"]})]}),c.jsx("p",{style:{marginTop:"12px"},children:c.jsx("a",{href:"https://www.youtube.com/@uapgerb",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary-color)"},children:"Visit UAPGerb YouTube Channel"})})]}),c.jsxs("div",{style:{marginTop:"20px"},children:[c.jsx("h4",{style:{marginBottom:"8px",color:"var(--text-secondary)"},children:"Government Data Sources"}),c.jsxs("ul",{children:[c.jsx("li",{children:"USAspending.gov - Federal contract and award data"}),c.jsx("li",{children:"SAM.gov - System for Award Management solicitations"}),c.jsx("li",{children:"SEC EDGAR - Corporate filings and disclosures"}),c.jsx("li",{children:"FOIA Reading Rooms - Declassified documents"})]})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"License"}),c.jsxs("p",{children:["This project is licensed under the ",c.jsx("strong",{children:"GNU Affero General Public License v3.0 (AGPL-3.0)"}),"."]}),c.jsx("p",{children:"The AGPL ensures that this software remains free and open source, and that any modifications or network services using this code must also be made available under the same license."})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Technology Stack"}),c.jsxs("ul",{children:[c.jsxs("li",{children:[c.jsx("strong",{children:"Backend:"})," FastAPI (Python) with SQLite/PostgreSQL database support"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Frontend:"})," React 18+ with TypeScript and Vite"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Data Visualization:"})," D3.js, Recharts, react-force-graph-2d"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"NLP Processing:"})," spaCy for entity recognition and extraction"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Data Enrichment:"})," Web scraping with BeautifulSoup, DuckDuckGo search"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Authentication:"})," JWT token-based authentication"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Deployment:"})," Docker Compose with Caddy reverse proxy"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"Caching:"})," Redis for production environments"]}),c.jsxs("li",{children:[c.jsx("strong",{children:"GitHub Integration:"})," PyGithub for automated PR creation"]})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Features"}),c.jsxs("ul",{children:[c.jsx("li",{children:"Local-first data processing (no external servers required)"}),c.jsx("li",{children:"Comprehensive data browsing with advanced filtering"}),c.jsx("li",{children:"Interactive network graph visualization (force-directed)"}),c.jsx("li",{children:"Sankey flow diagrams for money/relationship flows"}),c.jsx("li",{children:"Intelligence Stack hierarchy filter (6 levels)"}),c.jsx("li",{children:"Automated entity extraction from transcripts"}),c.jsx("li",{children:"Financial flow and materials transfer enrichment"}),c.jsx("li",{children:"Source credibility scoring and validation"}),c.jsx("li",{children:"Multiple export formats (CSV, JSON, PDF)"}),c.jsx("li",{children:"Community contributions via GitHub PR automation"}),c.jsx("li",{children:"Cross-platform desktop application"}),c.jsx("li",{children:"Production-ready Docker deployment"})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Contributing"}),c.jsx("p",{children:"We welcome contributions from the community! You can contribute by:"}),c.jsxs("ul",{children:[c.jsx("li",{children:"Adding new data entries through the Contribute page"}),c.jsx("li",{children:"Reporting issues on GitHub"}),c.jsx("li",{children:"Submitting code improvements"}),c.jsx("li",{children:"Improving documentation"})]})]}),c.jsxs("div",{className:"card",children:[c.jsx("h3",{children:"Disclaimer"}),c.jsx("p",{children:"This application uses only publicly available data from official government sources. Users are responsible for verifying accuracy and compliance with all applicable laws and regulations."})]})]})}function $A({onAccept:e}){return c.jsx("div",{className:"disclaimer-overlay",children:c.jsxs("div",{className:"disclaimer-modal",children:[c.jsx("div",{className:"disclaimer-header",children:c.jsx("h2",{children:"Legal Disclaimer & Terms"})}),c.jsxs("div",{className:"disclaimer-content",children:[c.jsx("h3",{children:"Project RawHorse"}),c.jsx("p",{children:c.jsx("strong",{children:"Version 1.0.0"})}),c.jsx("h4",{children:"License: GNU AGPL v3"}),c.jsx("p",{children:"This application is licensed under the GNU Affero General Public License v3.0. You are free to use, modify, and distribute this software under the terms of this license."}),c.jsx("h4",{children:"Data Responsibility"}),c.jsxs("p",{children:[c.jsx("strong",{children:"IMPORTANT:"})," All data in this application is sourced from publicly available government databases and documents. Users are solely responsible for:"]}),c.jsxs("ul",{children:[c.jsx("li",{children:"Verifying the accuracy of all data before use"}),c.jsx("li",{children:"Compliance with export control regulations (ITAR, EAR)"}),c.jsx("li",{children:"Ensuring proper handling of any potentially sensitive information"}),c.jsx("li",{children:"Following FOIA procedures and regulations when making requests"}),c.jsx("li",{children:"Respecting classification guidelines and security protocols"})]}),c.jsx("h4",{children:"No Warranty"}),c.jsx("p",{children:'THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. The developers assume no liability for any damages, legal issues, or consequences arising from the use of this application or its data.'}),c.jsx("h4",{children:"Public Data Sources Only"}),c.jsx("p",{children:"This application exclusively uses publicly available data from official sources including:"}),c.jsxs("ul",{children:[c.jsx("li",{children:"USAspending.gov"}),c.jsx("li",{children:"SAM.gov (System for Award Management)"}),c.jsx("li",{children:"Federal FOIA reading rooms"}),c.jsx("li",{children:"DOE, NASA, DHS, and other agency public databases"})]}),c.jsx("h4",{children:"Security & Privacy"}),c.jsx("p",{children:"All data processing occurs locally on your machine. No analytics or telemetry data is collected. GitHub API requests are only made when you explicitly choose to contribute data."}),c.jsx("h4",{children:"By Using This Application, You Acknowledge:"}),c.jsxs("ul",{children:[c.jsx("li",{children:"You have read and understood this disclaimer"}),c.jsx("li",{children:"You accept full responsibility for your use of this data"}),c.jsx("li",{children:"You will comply with all applicable laws and regulations"}),c.jsx("li",{children:"The developers are not liable for any misuse of data"})]})]}),c.jsx("div",{className:"disclaimer-footer",children:c.jsx("button",{className:"btn btn-primary",onClick:e,children:"I Understand and Accept"})})]})})}function DA(){const[e,n]=E.useState("light");E.useEffect(()=>{const i=localStorage.getItem("theme")||"light";n(i),document.documentElement.setAttribute("data-theme",i)},[]);const r=()=>{const i=e==="light"?"dark":"light";document.documentElement.classList.add("theme-transitioning"),n(i),document.documentElement.setAttribute("data-theme",i),localStorage.setItem("theme",i),setTimeout(()=>{document.documentElement.classList.remove("theme-transitioning")},50)};return c.jsx("button",{className:"theme-toggle",onClick:r,"aria-label":`Switch to ${e==="light"?"dark":"light"} mode`,title:`Switch to ${e==="light"?"dark":"light"} mode`,children:e==="light"?c.jsx(_w,{size:20}):c.jsx(kw,{size:20})})}const Av="searchBarClickedResults",Pv="searchBarRecentQueries",Rv=8,Mv=10,IA=200;function nm(){try{const e=localStorage.getItem(Av);if(!e)return[];const n=JSON.parse(e);return Array.isArray(n)?n:[]}catch{return[]}}function rm(e){try{localStorage.setItem(Av,JSON.stringify(e.slice(0,Rv)))}catch{}}function im(){try{const e=localStorage.getItem(Pv);if(!e)return[];const n=JSON.parse(e);return Array.isArray(n)?n:[]}catch{return[]}}function om(e){try{localStorage.setItem(Pv,JSON.stringify(e.slice(0,Mv)))}catch{}}function LA(){const e=Zs(),[n,r]=E.useState(""),[i,o]=E.useState([]),[a,s]=E.useState(!1),[l,f]=E.useState(!1),[u,h]=E.useState(-1),[d,p]=E.useState([]),[y,g]=E.useState([]),x=E.useRef(null),_=E.useRef(null);E.useEffect(()=>{l&&(p(nm()),g(im()))},[l]),E.useEffect(()=>{if(n.length>=2){s(!0);const j=setTimeout(async()=>{try{const T=(await gb(n)).results||[];o(T),f(!0),h(-1);const P=im(),C=[n.trim(),...P.filter(L=>L!==n.trim())].slice(0,Mv);om(C),g(C)}catch(R){console.error("Search error:",R),o([])}finally{s(!1)}},IA);return()=>clearTimeout(j)}else o([]),s(!1)},[n]),E.useEffect(()=>{const j=R=>{x.current&&!x.current.contains(R.target)&&f(!1)};return document.addEventListener("mousedown",j),()=>document.removeEventListener("mousedown",j)},[]);const m={entity:"entities",award:"awards",money_flow:"money-flows",foia_target:"foia"},v=E.useCallback(j=>{const R=m[j.type]||"entities",T=j.title.split(":")[0].split("→")[0].trim();e(`/browse?tab=${R}&search=${encodeURIComponent(T)}&highlight=${j.id}`),f(!1),r("")},[e]),w=E.useMemo(()=>y.filter(j=>!n.trim()||j.toLowerCase().includes(n.toLowerCase())),[y,n]),b=d.length+w.length,S=l&&n.length<2,k=j=>{var R;if(l){if(S){switch(j.key){case"ArrowDown":j.preventDefault(),h(T=>TT>0?T-1:-1);break;case"Enter":if(j.preventDefault(),u>=0)if(uTT>0?T-1:-1);break;case"Enter":j.preventDefault(),u>=0&&N(i[u]);break;case"Escape":j.preventDefault(),f(!1);break}}};E.useEffect(()=>{const j=R=>{var T;R.key==="/"&&!["INPUT","TEXTAREA"].includes(R.target.tagName)&&(R.preventDefault(),(T=_.current)==null||T.focus())};return document.addEventListener("keydown",j),()=>document.removeEventListener("keydown",j)},[]);const N=j=>{const R={id:j.id,type:j.type,title:j.title},T=nm(),P=[R,...T.filter(C=>!(C.id===R.id&&C.type===R.type))];rm(P),p(P.slice(0,Rv)),v(R)},A=j=>{switch(j){case"entity":return"📊";case"award":return"🏆";case"money_flow":return"💰";case"foia_target":return"📄";default:return"📌"}},$=j=>{switch(j){case"entity":return"Entity";case"award":return"Award";case"money_flow":return"Money Flow";case"foia_target":return"FOIA Target";default:return j}};return c.jsxs("div",{className:"search-bar-wrapper",ref:x,children:[c.jsxs("div",{className:"search-input-container",children:[c.jsx(bw,{className:"search-icon",size:18}),c.jsx("input",{ref:_,type:"text",placeholder:"Search entities, awards, flows... (press / to focus)",value:n,onChange:j=>r(j.target.value),onKeyDown:k,onFocus:()=>f(!0),className:"search-input"}),a&&c.jsx(xw,{className:"search-loading",size:18}),n&&!a&&c.jsx("button",{onClick:()=>{r(""),f(!1)},className:"search-clear","aria-label":"Clear search",children:c.jsx(Nw,{size:16})})]}),l&&c.jsx("div",{className:"search-results-dropdown",children:S?c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"search-suggestions-block",children:[c.jsx("div",{className:"search-suggestions-label",children:"Suggestions"}),d.length>0&&c.jsxs("div",{className:"search-suggestions-section",children:[c.jsx("span",{className:"search-suggestions-section-title",children:"Recent results"}),c.jsx("div",{className:"search-results-list",children:d.map((j,R)=>c.jsxs("div",{className:`search-result-item ${R===u?"selected":""}`,onClick:()=>v(j),onMouseEnter:()=>h(R),children:[c.jsx("div",{className:"search-result-icon",children:A(j.type)}),c.jsx("div",{className:"search-result-content",children:c.jsx("span",{className:"search-result-title",children:j.title})})]},`recent-${j.type}-${j.id}`))})]}),y.length>0&&c.jsxs("div",{className:"search-suggestions-section",children:[c.jsx("span",{className:"search-suggestions-section-title",children:"Recent searches"}),c.jsx("div",{className:"search-results-list",children:w.map((j,R)=>{const T=d.length+R;return c.jsxs("div",{className:`search-result-item ${T===u?"selected":""}`,onClick:()=>{var P;r(j),h(-1),(P=_.current)==null||P.focus()},onMouseEnter:()=>h(T),children:[c.jsx("div",{className:"search-result-icon",children:"🔍"}),c.jsx("div",{className:"search-result-content",children:c.jsx("span",{className:"search-result-title",children:j})})]},`query-${j}`)})})]})]}),c.jsxs("div",{className:"search-results-footer",children:[c.jsx("button",{type:"button",className:"search-clear-history",onClick:()=>{rm([]),om([]),p([]),g([])},children:"Clear history"}),c.jsx("span",{className:"search-hint",children:"↑↓ navigate • Enter select • Esc close"})]})]}):i.length>0?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"search-results-list",children:i.map((j,R)=>c.jsxs("div",{className:`search-result-item ${R===u?"selected":""}`,onClick:()=>N(j),onMouseEnter:()=>h(R),children:[c.jsx("div",{className:"search-result-icon",children:A(j.type)}),c.jsxs("div",{className:"search-result-content",children:[c.jsxs("div",{className:"search-result-header",children:[c.jsx("span",{className:"search-result-title",children:j.title}),c.jsx("span",{className:"search-result-type-badge",children:$(j.type)})]}),c.jsx("div",{className:"search-result-description",children:j.description})]})]},`${j.type}-${j.id}`))}),c.jsxs("div",{className:"search-results-footer",children:[c.jsxs("span",{children:[i.length," result",i.length!==1?"s":""]}),c.jsx("span",{className:"search-hint",children:"↑↓ navigate • Enter select • Esc close"})]})]}):n.length>=2?c.jsxs("div",{className:"search-no-results",children:[c.jsxs("p",{children:['No results found for "',n,'"']}),c.jsx("small",{children:"Try a different search term"})]}):null})]})}function UA({position:e="floating",showBadge:n=!0}){const{isStale:r,isRefreshing:i,refreshData:o,lastUpdated:a}=ol(),[s,l]=E.useState(!1),f=async()=>{try{await o()}catch(h){console.error("Failed to refresh data:",h)}},u=h=>{if(!h)return"Unknown";try{const d=new Date(h),y=new Date().getTime()-d.getTime(),g=Math.floor(y/6e4),x=Math.floor(y/36e5),_=Math.floor(y/864e5);return g<1?"Just now":g<60?`${g}m ago`:x<24?`${x}h ago`:_<7?`${_}d ago`:d.toLocaleDateString()}catch{return"Unknown"}};return e==="header"?c.jsxs("div",{className:"refresh-button-header",children:[c.jsxs("button",{className:`refresh-btn ${r?"stale":""} ${i?"refreshing":""}`,onClick:f,disabled:i,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),title:r?"New data available - click to refresh":"Refresh data","aria-label":r?"New data available - click to refresh":"Refresh data",children:[c.jsx(xh,{size:18,className:i?"spinning":""}),n&&r&&c.jsx("span",{className:"refresh-badge","aria-label":"New data available",children:"!"})]}),s&&a&&c.jsxs("div",{className:"refresh-tooltip",children:["Last updated: ",u(a)]})]}):c.jsxs("div",{className:"refresh-button-floating",children:[r&&n&&c.jsxs("div",{className:"refresh-notification",children:[c.jsx("span",{children:"New data available"}),c.jsx("button",{className:"refresh-notification-btn",onClick:f,disabled:i,children:"Refresh"})]}),c.jsxs("button",{className:`refresh-btn-floating ${r?"stale":""} ${i?"refreshing":""}`,onClick:f,disabled:i,title:r?"New data available - click to refresh":"Refresh data","aria-label":r?"New data available - click to refresh":"Refresh data",children:[c.jsx(xh,{size:20,className:i?"spinning":""}),n&&r&&c.jsx("span",{className:"refresh-badge-floating","aria-label":"New data available",children:"!"})]})]})}function BA(){const e=gi(),n=[{path:"/",icon:gw,label:"Dashboard",exact:!0},{path:"/browse",icon:hw,label:"Browse",exact:!0},{path:"/analysis",icon:Ry,label:"Analysis",exact:!1},{path:"/export",icon:pw,label:"Export",exact:!0},{path:"/contribute",icon:jw,label:"Contribute",exact:!0},{path:"/about",icon:yw,label:"About",exact:!0}];return c.jsxs("nav",{className:"sidebar",children:[c.jsxs("div",{className:"sidebar-header",children:[c.jsx("img",{src:"/PRHLogo.png",alt:"Project RawHorse Logo",className:"sidebar-logo"}),c.jsx("h1",{children:"Project RawHorse"})]}),c.jsx("div",{className:"sidebar-search",children:c.jsx(LA,{})}),c.jsx("ul",{className:"nav-items",children:n.map(r=>{const i=r.icon,o=r.exact?e.pathname===r.path:e.pathname.startsWith(r.path);return c.jsx("li",{children:c.jsxs(kt,{to:r.path,className:o?"active":"",children:[c.jsx(i,{size:20}),c.jsx("span",{children:r.label})]})},r.path)})})]})}function HA(){const[e,n]=E.useState(!1);E.useEffect(()=>{localStorage.getItem("disclaimer_accepted")==="true"&&n(!0)},[]);const r=()=>{localStorage.setItem("disclaimer_accepted","true"),n(!0)};return c.jsx(Cb,{children:c.jsx(sw,{children:c.jsxs("div",{className:"app",children:[c.jsx("a",{href:"#main-content",className:"skip-link",children:"Skip to main content"}),!e&&c.jsx($A,{onAccept:r}),c.jsx(DA,{}),c.jsx(BA,{}),c.jsx(UA,{position:"floating"}),c.jsx("main",{id:"main-content",className:"main-content",role:"main",children:c.jsxs(Z_,{children:[c.jsx(Tt,{path:"/",element:c.jsx(Eb,{})}),c.jsx(Tt,{path:"/browse",element:c.jsx(Ab,{})}),c.jsx(Tt,{path:"/analysis",element:c.jsx(kC,{})}),c.jsx(Tt,{path:"/analysis/network",element:c.jsx(wA,{})}),c.jsx(Tt,{path:"/analysis/sankey",element:c.jsx(MA,{})}),c.jsx(Tt,{path:"/analysis/pyramid",element:c.jsx(RA,{})}),c.jsx(Tt,{path:"/analysis/legacy",element:c.jsx(bC,{})}),c.jsx(Tt,{path:"/export",element:c.jsx(OA,{})}),c.jsx(Tt,{path:"/contribute",element:c.jsx(zA,{})}),c.jsx(Tt,{path:"/about",element:c.jsx(FA,{})})]})})]})})})}tu.createRoot(document.getElementById("root")).render(c.jsx(Rc.StrictMode,{children:c.jsx(HA,{})})); diff --git a/backend/static/index.html b/backend/static/index.html index 3d1f6aa..7e38128 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -6,8 +6,8 @@ Project RawHorse - - + +

diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 4c6fc12..f31e38f 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -76,6 +76,7 @@ This document describes the high-level architecture, data flow, and key design d | `/analysis/network` | `NetworkGraphPage` | Force-directed entity relationship graph | | `/analysis/sankey` | `SankeyDiagramPage` | Financial flow Sankey diagram | | `/analysis/pyramid` | `PyramidPage` | Intelligence Stack pyramid (L1–L6) | +| `/analysis/foia` | `FoiaTargetsPage` | FOIA targets with quality scoring and filters | | `/export` | `Export` | CSV, JSON, PDF download | | `/contribute` | `Contribute` | GitHub PR contribution form | | `/about` | `About` | Project info, attribution, data sources | diff --git a/docs/RELEASE_NOTES_v0.4.1.md b/docs/RELEASE_NOTES_v0.4.1.md new file mode 100644 index 0000000..99c7d32 --- /dev/null +++ b/docs/RELEASE_NOTES_v0.4.1.md @@ -0,0 +1,57 @@ +# Release Notes - Project RawHorse v0.4.1 + +**Release Date:** February 2026 +**Type:** Beta + +## Summary + +v0.4.1 adds the dedicated FOIA Targets page, UX quick wins (loading states, error boundaries, empty states), a cyberpunk neon UI aesthetic overhaul, and UI bug fixes from a live review. + +## Highlights + +### For Users + +- **FOIA Targets Page** - Browse and prioritize FOIA targets at `/analysis/foia` with quality scoring, filters, and sortable columns +- **Dashboard Stat Cards** - Click Total Entities, Money Flows, Federal Awards, or FOIA Targets to jump to the corresponding Browse tab +- **Export FOIA** - Download FOIA targets as CSV from the Export page +- **Error Handling** - Graceful error boundaries with "Try Again" and "Go Home" when something goes wrong +- **Loading Feedback** - Spinners on Network Graph and Sankey Diagram; skeleton loaders on table pages +- **Light Mode** - Improved contrast for card components (WCAG AA) +- **Search Results** - Wider dropdown and tooltips on truncated names +- **Cyberpunk Neon UI** - Dark mode: deep blue-black backgrounds, neon purple/cyan/gold glows on cards and sidebar, glitch hover on cards, subtle scanline overlay, neon focus outlines. Logo purple and gold retained. + +### For Researchers + +- **FOIA Quality Scoring** - Priority, Specificity, and Likelihood scores visible in both Browse FOIA tab and dedicated FOIA Targets page +- **Expandable Quality Notes** - Click a row to see full quality notes + +### Technical + +- **Shared Components** - ScoreBadge, TableSkeleton, EmptyState, ErrorBoundary +- **Screenshot Management** - Version-controlled screenshots in `screenshots/` directory +- **Network Graph** - Center panel min-width to prevent layout squeeze +- **Theme** - `theme.css`: neon variables and dark blue-black palette; `App.css`: card glows, glitch keyframes, sidebar/tabs/buttons neon; `index.css`: neon cyan focus in dark mode +- **Analysis Overview card icons** - Unique gradients per card: Entity Network Graph (purple), Sankey (gold), Intelligence Stack Pyramid (red-orange), FOIA Targets (green-teal) +- **Development Roadmap** - `docs/development/PRH_DEVELOPMENT_ROADMAP.md` with audit findings by priority (P0–P3) + +## New Routes + +| Route | Description | +|-------|-------------| +| `/analysis/foia` | FOIA Targets page with sortable table and filters | + +## Files Added + +- `frontend/src/pages/FoiaTargetsPage.tsx` +- `frontend/src/pages/FoiaTargetsPage.css` +- `frontend/src/components/ScoreBadge.tsx` +- `frontend/src/components/ScoreBadge.css` +- `frontend/src/components/TableSkeleton.tsx` +- `frontend/src/components/EmptyState.tsx` +- `frontend/src/components/EmptyState.css` +- `frontend/src/components/ErrorBoundary.tsx` +- `frontend/src/components/ErrorBoundary.css` +- `screenshots/*.png` (placeholder screenshots) +- `CHANGELOG_v0.4.1Beta.md` +- `docs/RELEASE_NOTES_v0.4.1.md` +- `docs/development/PRH_DEVELOPMENT_ROADMAP.md` diff --git a/docs/development/FEATURES.md b/docs/development/FEATURES.md index 73fea08..59cae9c 100644 --- a/docs/development/FEATURES.md +++ b/docs/development/FEATURES.md @@ -84,6 +84,62 @@ Complete list of features implemented in Project RawHorse. --- +### FOIA Targets Page ✅ (v0.4.1) +**Component:** FoiaTargetsPage +**Files:** +- `frontend/src/pages/FoiaTargetsPage.tsx` +- `frontend/src/pages/FoiaTargetsPage.css` + +**Feature:** +- Dedicated route `/analysis/foia` +- Sortable table: Agency, Record Request, Timeframe, Priority, Specificity, Likelihood scores +- Filters: text search, agency dropdown +- Pagination with page size selector (10/25/50/100) +- Expandable quality notes on row click +- Uses ScoreBadge, TableSkeleton, EmptyState + +**Impact:** Dedicated FOIA target prioritization with quality scoring + +--- + +### ScoreBadge, ErrorBoundary, TableSkeleton, EmptyState ✅ (v0.4.1) +**Components:** Shared UI utilities +**Files:** +- `frontend/src/components/ScoreBadge.tsx` +- `frontend/src/components/ErrorBoundary.tsx` +- `frontend/src/components/TableSkeleton.tsx` +- `frontend/src/components/EmptyState.tsx` + +**Feature:** +- **ScoreBadge**: Color-coded score display (priority, specificity, likelihood) for Browse and FoiaTargetsPage +- **ErrorBoundary**: Graceful error handling with "Try Again" / "Go Home" and collapsible details +- **TableSkeleton**: Reusable skeleton loader for table pages +- **EmptyState**: Reusable empty state with icon, title, description, optional action + +**Impact:** Consistent UX and error handling across the app + +--- + +### Cyberpunk Neon UI ✅ (v0.4.1) +**Components:** Theme system and global styles +**Files:** +- `frontend/src/styles/theme.css` +- `frontend/src/App.css` +- `frontend/src/index.css` + +**Feature:** +- **Dark mode palette**: Deep blue-black backgrounds (#0A0A12, #111118, #1A1A24, #141420); primary purple and gold (logo) unchanged; neon cyan (#00F0FF) and golden yellow (#FFD700) accents; neon glow variables (--glow-purple, --glow-cyan, --glow-gold) +- **Cards**: Neon purple border and box-shadow on .card and .stat-card; neon text-shadow on stat values (purple for odd, gold for even) +- **Glitch hover**: Brief channel-split animation (::before cyan, ::after gold) and glitchSlice keyframes on card hover +- **Sidebar**: Neon border, "Project RawHorse" title glow, active nav glow and left accent, nav hover cyan tint +- **Tabs and buttons**: Neon hover box-shadow, active tab bottom-border glow, focus outlines in neon cyan (dark mode) +- **Scanline overlay**: Subtle CRT-style horizontal lines on .main-content in dark mode (pointer-events: none) +- **Light mode**: Subtle neon-tinted borders only; no heavy effects + +**Impact:** Cohesive neon/retro cyberpunk aesthetic in dark mode while preserving brand colors and readability + +--- + ### Custom Branding ✅ **Component:** Icon and logo system **Files:** diff --git a/docs/development/FEATURE_ROADMAP.md b/docs/development/FEATURE_ROADMAP.md index ff721c3..e1d3fa4 100644 --- a/docs/development/FEATURE_ROADMAP.md +++ b/docs/development/FEATURE_ROADMAP.md @@ -1,12 +1,21 @@ # Project RawHorse - Feature Roadmap & Next Steps **Last Updated**: February 2026 -**Current Version**: v0.4.0 +**Current Version**: v0.4.1 **Status**: Active Development --- -## ✅ Completed (v0.2.0 – v0.4.0) +## ✅ Completed (v0.2.0 – v0.4.1) + +### v0.4.1 (February 2026) +1. **FOIA Targets Page** - Dedicated `/analysis/foia` with sortable table, filters, pagination, expandable quality notes +2. **ScoreBadge** - Shared component for Browse and FoiaTargetsPage score display +3. **UX Quick Wins** - ErrorBoundary, TableSkeleton, EmptyState components; loading spinners on Network Graph and Sankey +4. **UI Bug Fixes** - Browse FOIA score columns, Export FOIA, dashboard click-through, light mode contrast, search truncation, network graph min-width +5. **Screenshot Management** - Version-controlled screenshots, README relative paths +6. **Cyberpunk Neon UI Overhaul** - Dark mode: deep blue-black palette, neon purple/cyan/gold glows on cards and sidebar, glitch hover on cards, scanline overlay, neon focus outlines. Primary colors (logo) unchanged. Browse tab URL init and FOIA table column layout fixes. +7. **Code review (v0.4.1)** - Analysis Overview card icon gradients (Entity Network purple, Sankey gold); `PRH_DEVELOPMENT_ROADMAP.md` with audit findings by priority (P0–P3). ### v0.4.0 (February 2026) 1. **Data Enrichment** - 26 new entities from UAPGerb's "The Hidden Wing" transcript @@ -37,20 +46,6 @@ ## 🎯 High Priority Features (Ready to Implement) -### 0. **Dedicated FOIA Targets Page** (v0.4.1) 📋 PLANNED NEXT -**Goal**: Browse and manage FOIA targets in a dedicated Analysis sub-page - -**Features to Add**: -- **Route**: `/analysis/foia` — linked from Analysis sidebar -- **Browse-style table** with sorting and pagination -- **Filters**: agency, priority score, specificity score -- **Integration** with existing FOIA quality scoring system - -**Implementation Complexity**: Low-Medium -**User Impact**: Medium-High -**Estimated Time**: 1-2 days - ---- ### 1. **Enhanced Financial Visualizations** ⭐ RECOMMENDED AFTER v0.4.1 **Goal**: Make money flows visual and intuitive diff --git a/docs/development/PRH_DEVELOPMENT_ROADMAP.md b/docs/development/PRH_DEVELOPMENT_ROADMAP.md new file mode 100644 index 0000000..8b149d7 --- /dev/null +++ b/docs/development/PRH_DEVELOPMENT_ROADMAP.md @@ -0,0 +1,165 @@ +# Project RawHorse - Development Roadmap + +**Purpose:** Persistent, actionable development guide based on codebase audit (PRH v0.4.1Beta). +**Last Updated:** February 2026 +**Status:** Living document — update as items are completed or priorities change. + +--- + +## P0 — Immediate Fixes (Do Now) + +### 1. Analysis Overview Card Icon Gradients +**Status:** Done (v0.4.1Beta). +**Detail:** Entity Network Graph and Sankey Flow Diagram now have distinct gradients: +- Entity Network Graph: `linear-gradient(135deg, #5B4FFF, #7c6fff)` (purple) +- Sankey Flow Diagram: `linear-gradient(135deg, #D4A218, #FFD700)` (gold) +- Intelligence Stack Pyramid: red-orange (unchanged) +- FOIA Targets: green-teal (unchanged) + +**File:** `frontend/src/pages/AnalysisOverview.tsx` + +### 2. ESLint Configuration +**Status:** TODO. +**Issue:** Frontend has no `.eslintrc` (or equivalent); `npm run lint` fails with "ESLint couldn't find a configuration file." +**Action:** Add ESLint config (e.g. `frontend/.eslintrc.cjs` or `eslint.config.js`) so `npm run lint` runs successfully. Consider aligning with existing `package.json` script: `eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0`. + +--- + +## P1 — Code Quality & Refactoring (Next Sprint) + +### 3. Refactor Browse.tsx (965 lines) +**File:** `frontend/src/pages/Browse.tsx` +**Goal:** Split into smaller, testable units. + +| Extract | Description | +|--------|-------------| +| `BrowseFilters.tsx` | Filter panel: entity type, amount range, date, agency, quick filters | +| `BrowseTable.tsx` | Table rendering per tab (entities, money flows, awards, FOIA) | +| `useBrowseData.ts` | Custom hook: data fetching, pagination, sorting logic | +| `useBrowseFilters.ts` | Custom hook: filter state and URL sync | +| Optional | `useReducer` to replace 15+ `useState` calls | + +**Additional:** Extract `SortableHeader` and `HighlightText` from inline definitions into shared components. + +### 4. Other Large Files +- **Contribute.tsx** (508 lines): Split form sections into sub-components (e.g. EntityForm, MoneyFlowForm, AwardForm, FOIAForm). +- **SearchBar.tsx** (420 lines): Extract search result list and result item into separate components. + +### 5. Move Inline CSS from AnalysisOverview.tsx +**File:** `frontend/src/pages/AnalysisOverview.tsx` +**Issue:** 150+ lines of CSS in a `