limn-review 0.1.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +110 -0
- package/README.md +133 -0
- package/dist/ai/runtime.js +535 -0
- package/dist/api/plugins/auth.js +169 -0
- package/dist/api/plugins/error-handler.js +114 -0
- package/dist/api/plugins/rate-limit.js +855 -0
- package/dist/api/plugins/security.js +321 -0
- package/dist/api/routes/activity.js +103 -0
- package/dist/api/routes/ai-runtime.js +67 -0
- package/dist/api/routes/auth.js +194 -0
- package/dist/api/routes/billing.js +209 -0
- package/dist/api/routes/bot-triage.js +1289 -0
- package/dist/api/routes/conflicts.js +730 -0
- package/dist/api/routes/contact.js +318 -0
- package/dist/api/routes/daily-brief.js +58 -0
- package/dist/api/routes/flow.js +71 -0
- package/dist/api/routes/health.js +7 -0
- package/dist/api/routes/insights.js +200 -0
- package/dist/api/routes/me.js +458 -0
- package/dist/api/routes/mentions.js +22 -0
- package/dist/api/routes/mergers.js +8 -0
- package/dist/api/routes/ml-labels.js +109 -0
- package/dist/api/routes/open-prs.js +35 -0
- package/dist/api/routes/prs.js +1633 -0
- package/dist/api/routes/reactions.js +217 -0
- package/dist/api/routes/repos.js +563 -0
- package/dist/api/routes/search.js +41 -0
- package/dist/api/routes/threads.js +118 -0
- package/dist/api/routes/timeline.js +150 -0
- package/dist/api/routes/users.js +67 -0
- package/dist/api/routes/webhooks.js +181 -0
- package/dist/api/routes/workspaces.js +322 -0
- package/dist/app.js +274 -0
- package/dist/ascii.js +19 -0
- package/dist/auth/account.js +482 -0
- package/dist/auth/crypto.js +46 -0
- package/dist/bot-triage/resolve.js +59 -0
- package/dist/cli.js +388 -0
- package/dist/coding/activity.js +80 -0
- package/dist/coding/agent.js +288 -0
- package/dist/coding/ai-fix/auto-fix.js +212 -0
- package/dist/coding/ai-fix/manager.js +370 -0
- package/dist/coding/ai-fix/persist.js +213 -0
- package/dist/coding/ai-fix/pr-context.js +58 -0
- package/dist/coding/ai-fix/prompts.js +138 -0
- package/dist/coding/ai-fix/review-seed.js +357 -0
- package/dist/coding/ai-fix/routes.js +425 -0
- package/dist/coding/git-ops.js +321 -0
- package/dist/coding/git.js +184 -0
- package/dist/coding/merge.js +262 -0
- package/dist/coding/safe-path.js +75 -0
- package/dist/coding/schema.js +43 -0
- package/dist/config.js +648 -0
- package/dist/conflict/diff.js +304 -0
- package/dist/conflict/git.js +118 -0
- package/dist/conflict/hash.js +73 -0
- package/dist/conflict/janitor.js +218 -0
- package/dist/conflict/land.js +675 -0
- package/dist/conflict/model-types.js +2 -0
- package/dist/conflict/model.js +1081 -0
- package/dist/conflict/parse.js +142 -0
- package/dist/conflict/seam.js +136 -0
- package/dist/conflict/session.js +532 -0
- package/dist/conflict/suggestion.js +398 -0
- package/dist/conflict/tokens.js +72 -0
- package/dist/data-dir.js +112 -0
- package/dist/db/actor-lanes.js +213 -0
- package/dist/db/automation-ids.js +97 -0
- package/dist/db/automation-output.js +349 -0
- package/dist/db/blast-radius-query.js +36 -0
- package/dist/db/blast-radius.js +226 -0
- package/dist/db/bot-dormancy.js +115 -0
- package/dist/db/bot-overlap.js +579 -0
- package/dist/db/bot-volume.js +722 -0
- package/dist/db/bot-window.js +35 -0
- package/dist/db/branch-queries.js +310 -0
- package/dist/db/change-shape.js +243 -0
- package/dist/db/changepoint.js +75 -0
- package/dist/db/cleanup.js +36 -0
- package/dist/db/client.js +102 -0
- package/dist/db/code-loc.js +388 -0
- package/dist/db/credits.js +79 -0
- package/dist/db/daily-brief.js +406 -0
- package/dist/db/dependency-cards.js +145 -0
- package/dist/db/erase-account.js +255 -0
- package/dist/db/export-account.js +189 -0
- package/dist/db/failing-checks.js +124 -0
- package/dist/db/file-coupling.js +197 -0
- package/dist/db/flow-detail.js +661 -0
- package/dist/db/flow-pointers.js +197 -0
- package/dist/db/flow-settings.js +67 -0
- package/dist/db/forecast.js +114 -0
- package/dist/db/line-overlap.js +81 -0
- package/dist/db/merge-queue.js +189 -0
- package/dist/db/migrate.js +17 -0
- package/dist/db/migrations/0000_purple_ben_grimm.sql +155 -0
- package/dist/db/migrations/0001_colorful_ozymandias.sql +31 -0
- package/dist/db/migrations/0002_famous_sersi.sql +9 -0
- package/dist/db/migrations/0003_clever_shinobi_shaw.sql +3 -0
- package/dist/db/migrations/0004_pale_scalphunter.sql +1 -0
- package/dist/db/migrations/0005_daffy_guardian.sql +2 -0
- package/dist/db/migrations/0006_cute_violations.sql +45 -0
- package/dist/db/migrations/0007_dark_anthem.sql +2 -0
- package/dist/db/migrations/0008_multitenant_accounts.sql +44 -0
- package/dist/db/migrations/0009_lean_bodies.sql +13 -0
- package/dist/db/migrations/0010_lean_bodies_nullable.sql +56 -0
- package/dist/db/migrations/0011_pr_diff_size.sql +10 -0
- package/dist/db/migrations/0012_findings_included_default.sql +7 -0
- package/dist/db/migrations/0013_review_routing.sql +9 -0
- package/dist/db/migrations/0014_account_last_active.sql +6 -0
- package/dist/db/migrations/0015_repos_inbox_watch.sql +9 -0
- package/dist/db/migrations/0016_repo_viewer_permission.sql +7 -0
- package/dist/db/migrations/0017_account_display_name.sql +7 -0
- package/dist/db/migrations/0018_finding_comment_kind.sql +7 -0
- package/dist/db/migrations/0019_finding_file_in_diff.sql +7 -0
- package/dist/db/migrations/0020_claude_review_cost_telemetry.sql +11 -0
- package/dist/db/migrations/0021_account_feed_last_seen.sql +7 -0
- package/dist/db/migrations/0022_ci_status_events.sql +21 -0
- package/dist/db/migrations/0023_ai_usage.sql +21 -0
- package/dist/db/migrations/0024_pr_head_ref_name.sql +6 -0
- package/dist/db/migrations/0025_account_billing.sql +7 -0
- package/dist/db/migrations/0026_ai_credit_allowance.sql +5 -0
- package/dist/db/migrations/0027_user_github_type.sql +6 -0
- package/dist/db/migrations/0028_bot_review_classification.sql +21 -0
- package/dist/db/migrations/0029_bot_mute_rules.sql +19 -0
- package/dist/db/migrations/0030_teams.sql +32 -0
- package/dist/db/migrations/0031_events_pr_idx.sql +7 -0
- package/dist/db/migrations/0032_benchmark_contributions.sql +29 -0
- package/dist/db/migrations/0033_thread_addressed_confidence.sql +9 -0
- package/dist/db/migrations/0034_thread_resolved_at.sql +6 -0
- package/dist/db/migrations/0035_pr_first_review_requested_at.sql +5 -0
- package/dist/db/migrations/0036_search_index.sql +25 -0
- package/dist/db/migrations/0037_author_indexes.sql +15 -0
- package/dist/db/migrations/0038_auto_merge_requests.sql +37 -0
- package/dist/db/migrations/0039_branch_status.sql +44 -0
- package/dist/db/migrations/0040_pr_review_decision.sql +10 -0
- package/dist/db/migrations/0041_branch_commit_detail.sql +38 -0
- package/dist/db/migrations/0042_repo_reviewers.sql +176 -0
- package/dist/db/migrations/0043_account_reviewers.sql +131 -0
- package/dist/db/migrations/0044_workspaces.sql +138 -0
- package/dist/db/migrations/0045_workspace_reviewers.sql +180 -0
- package/dist/db/migrations/0046_drop_inbox_watch.sql +25 -0
- package/dist/db/migrations/0047_ml_comment_labels.sql +40 -0
- package/dist/db/migrations/0048_ml_vendor_severity.sql +31 -0
- package/dist/db/migrations/0049_seat_pricing_repo_description.sql +21 -0
- package/dist/db/migrations/0050_users_app_slug.sql +12 -0
- package/dist/db/migrations/0051_auto_merge_queue.sql +17 -0
- package/dist/db/migrations/0052_trunk_ci_status_events.sql +43 -0
- package/dist/db/migrations/0053_automation_roles.sql +79 -0
- package/dist/db/migrations/0054_automation_vendor_kinds.sql +514 -0
- package/dist/db/migrations/0055_auto_merge_phase.sql +12 -0
- package/dist/db/migrations/0056_pr_mentions.sql +22 -0
- package/dist/db/migrations/0057_large_pr_threshold.sql +14 -0
- package/dist/db/migrations/0058_pending_mute.sql +53 -0
- package/dist/db/migrations/0059_merge_queue_state.sql +33 -0
- package/dist/db/migrations/0060_drop_my_turn_dismissals.sql +33 -0
- package/dist/db/migrations/0061_auto_merge_durable_anchors.sql +27 -0
- package/dist/db/migrations/0062_blast_radius_config.sql +21 -0
- package/dist/db/migrations/0063_repo_file_coupling.sql +33 -0
- package/dist/db/migrations/0064_pr_content_kind.sql +21 -0
- package/dist/db/migrations/0065_workspace_flow_settings.sql +13 -0
- package/dist/db/migrations/0066_review_request_events.sql +31 -0
- package/dist/db/migrations/0067_pr_security_signals.sql +86 -0
- package/dist/db/migrations/0068_my_turn_settings.sql +18 -0
- package/dist/db/migrations/0069_my_turn_dismissals.sql +41 -0
- package/dist/db/migrations/0070_claude_review_follow_up_ticket.sql +22 -0
- package/dist/db/migrations/0071_claude_review_trigger.sql +11 -0
- package/dist/db/migrations/0072_commit_message_headline.sql +13 -0
- package/dist/db/migrations/0073_claude_review_chat.sql +31 -0
- package/dist/db/migrations/0074_adopt_agentic_tables.sql +98 -0
- package/dist/db/migrations/0075_review_lens_drop_learnings.sql +15 -0
- package/dist/db/migrations/0076_claude_review_threads.sql +17 -0
- package/dist/db/migrations/0077_claude_review_ci_failures.sql +10 -0
- package/dist/db/migrations/0078_ai_fix_change_report.sql +17 -0
- package/dist/db/migrations/0079_claude_finding_story.sql +16 -0
- package/dist/db/migrations/meta/0000_snapshot.json +1116 -0
- package/dist/db/migrations/meta/0001_snapshot.json +1321 -0
- package/dist/db/migrations/meta/0002_snapshot.json +1375 -0
- package/dist/db/migrations/meta/0003_snapshot.json +1396 -0
- package/dist/db/migrations/meta/0004_snapshot.json +1416 -0
- package/dist/db/migrations/meta/0005_snapshot.json +1430 -0
- package/dist/db/migrations/meta/0006_snapshot.json +1745 -0
- package/dist/db/migrations/meta/0007_snapshot.json +1759 -0
- package/dist/db/migrations/meta/_journal.json +566 -0
- package/dist/db/migrations-pg/0000_tired_alex_power.sql +268 -0
- package/dist/db/migrations-pg/0001_dizzy_mockingbird.sql +3 -0
- package/dist/db/migrations-pg/0002_glorious_ikaris.sql +4 -0
- package/dist/db/migrations-pg/0003_melted_secret_warriors.sql +2 -0
- package/dist/db/migrations-pg/0004_numerous_triton.sql +1 -0
- package/dist/db/migrations-pg/0005_thick_blockbuster.sql +2 -0
- package/dist/db/migrations-pg/0006_majestic_dracula.sql +1 -0
- package/dist/db/migrations-pg/0007_same_human_torch.sql +2 -0
- package/dist/db/migrations-pg/0008_slimy_toxin.sql +1 -0
- package/dist/db/migrations-pg/0009_fuzzy_jubilee.sql +4 -0
- package/dist/db/migrations-pg/0010_late_hammerhead.sql +1 -0
- package/dist/db/migrations-pg/0011_happy_leech.sql +16 -0
- package/dist/db/migrations-pg/0012_woozy_captain_midlands.sql +16 -0
- package/dist/db/migrations-pg/0013_yielding_nicolaos.sql +1 -0
- package/dist/db/migrations-pg/0014_wakeful_bill_hollister.sql +2 -0
- package/dist/db/migrations-pg/0015_aspiring_black_tom.sql +1 -0
- package/dist/db/migrations-pg/0016_cute_ghost_rider.sql +30 -0
- package/dist/db/migrations-pg/0017_far_changeling.sql +24 -0
- package/dist/db/migrations-pg/0018_fancy_miss_america.sql +1 -0
- package/dist/db/migrations-pg/0019_benchmark_contributions.sql +22 -0
- package/dist/db/migrations-pg/0020_majestic_edwin_jarvis.sql +3 -0
- package/dist/db/migrations-pg/0021_green_salo.sql +1 -0
- package/dist/db/migrations-pg/0022_wise_baron_strucker.sql +1 -0
- package/dist/db/migrations-pg/0023_search_index.sql +19 -0
- package/dist/db/migrations-pg/0024_author_indexes.sql +9 -0
- package/dist/db/migrations-pg/0025_auto_merge_requests.sql +26 -0
- package/dist/db/migrations-pg/0026_branch_status.sql +32 -0
- package/dist/db/migrations-pg/0027_pr_review_decision.sql +5 -0
- package/dist/db/migrations-pg/0028_branch_commit_detail.sql +9 -0
- package/dist/db/migrations-pg/0029_repo_reviewers.sql +127 -0
- package/dist/db/migrations-pg/0030_account_reviewers.sql +77 -0
- package/dist/db/migrations-pg/0031_workspaces.sql +131 -0
- package/dist/db/migrations-pg/0032_workspace_reviewers.sql +165 -0
- package/dist/db/migrations-pg/0033_drop_inbox_watch.sql +14 -0
- package/dist/db/migrations-pg/0034_ml_comment_labels.sql +33 -0
- package/dist/db/migrations-pg/0035_ml_vendor_severity.sql +16 -0
- package/dist/db/migrations-pg/0036_seat_pricing_repo_description.sql +12 -0
- package/dist/db/migrations-pg/0037_users_app_slug.sql +9 -0
- package/dist/db/migrations-pg/0038_auto_merge_queue.sql +10 -0
- package/dist/db/migrations-pg/0039_trunk_ci_status_events.sql +27 -0
- package/dist/db/migrations-pg/0040_automation_roles.sql +63 -0
- package/dist/db/migrations-pg/0041_automation_vendor_kinds.sql +488 -0
- package/dist/db/migrations-pg/0042_auto_merge_phase.sql +8 -0
- package/dist/db/migrations-pg/0043_pr_mentions.sql +19 -0
- package/dist/db/migrations-pg/0044_large_pr_threshold.sql +6 -0
- package/dist/db/migrations-pg/0045_pending_mute.sql +26 -0
- package/dist/db/migrations-pg/0046_merge_queue_state.sql +18 -0
- package/dist/db/migrations-pg/0047_drop_my_turn_dismissals.sql +21 -0
- package/dist/db/migrations-pg/0048_auto_merge_durable_anchors.sql +27 -0
- package/dist/db/migrations-pg/0049_blast_radius_config.sql +8 -0
- package/dist/db/migrations-pg/0050_repo_file_coupling.sql +13 -0
- package/dist/db/migrations-pg/0051_pr_content_kind.sql +6 -0
- package/dist/db/migrations-pg/0052_workspace_flow_settings.sql +4 -0
- package/dist/db/migrations-pg/0053_review_request_events.sql +18 -0
- package/dist/db/migrations-pg/0054_pr_security_signals.sql +59 -0
- package/dist/db/migrations-pg/0055_my_turn_settings.sql +6 -0
- package/dist/db/migrations-pg/0056_my_turn_dismissals.sql +21 -0
- package/dist/db/migrations-pg/0057_claude_review_follow_up_ticket.sql +8 -0
- package/dist/db/migrations-pg/0058_claude_review_trigger.sql +4 -0
- package/dist/db/migrations-pg/0059_commit_message_headline.sql +3 -0
- package/dist/db/migrations-pg/0060_claude_review_chat.sql +24 -0
- package/dist/db/migrations-pg/0061_adopt_agentic_tables.sql +79 -0
- package/dist/db/migrations-pg/0062_review_lens_drop_learnings.sql +5 -0
- package/dist/db/migrations-pg/0063_claude_review_threads.sql +7 -0
- package/dist/db/migrations-pg/0064_claude_review_ci_failures.sql +4 -0
- package/dist/db/migrations-pg/0065_ai_fix_change_report.sql +9 -0
- package/dist/db/migrations-pg/0066_claude_finding_story.sql +7 -0
- package/dist/db/migrations-pg/meta/0000_snapshot.json +2137 -0
- package/dist/db/migrations-pg/meta/0001_snapshot.json +2143 -0
- package/dist/db/migrations-pg/meta/0002_snapshot.json +2170 -0
- package/dist/db/migrations-pg/meta/0003_snapshot.json +2182 -0
- package/dist/db/migrations-pg/meta/0004_snapshot.json +2188 -0
- package/dist/db/migrations-pg/meta/0005_snapshot.json +2201 -0
- package/dist/db/migrations-pg/meta/0006_snapshot.json +2207 -0
- package/dist/db/migrations-pg/meta/0007_snapshot.json +2219 -0
- package/dist/db/migrations-pg/meta/0008_snapshot.json +2226 -0
- package/dist/db/migrations-pg/meta/0009_snapshot.json +2250 -0
- package/dist/db/migrations-pg/meta/0010_snapshot.json +2256 -0
- package/dist/db/migrations-pg/meta/0011_snapshot.json +2412 -0
- package/dist/db/migrations-pg/meta/0012_snapshot.json +2528 -0
- package/dist/db/migrations-pg/meta/0013_snapshot.json +2534 -0
- package/dist/db/migrations-pg/meta/0014_snapshot.json +2547 -0
- package/dist/db/migrations-pg/meta/0015_snapshot.json +2553 -0
- package/dist/db/migrations-pg/meta/0016_snapshot.json +2774 -0
- package/dist/db/migrations-pg/meta/0017_snapshot.json +2999 -0
- package/dist/db/migrations-pg/meta/0018_snapshot.json +3020 -0
- package/dist/db/migrations-pg/meta/0020_snapshot.json +3228 -0
- package/dist/db/migrations-pg/meta/0021_snapshot.json +3234 -0
- package/dist/db/migrations-pg/meta/0022_snapshot.json +3240 -0
- package/dist/db/migrations-pg/meta/_journal.json +475 -0
- package/dist/db/ml-labels.js +1666 -0
- package/dist/db/my-turn-dismissals.js +343 -0
- package/dist/db/my-turn-settings.js +34 -0
- package/dist/db/pending-classify.js +46 -0
- package/dist/db/pending-mute.js +171 -0
- package/dist/db/pending-tabs.js +238 -0
- package/dist/db/period-metrics.js +820 -0
- package/dist/db/person-period.js +763 -0
- package/dist/db/pr-intervals.js +930 -0
- package/dist/db/pr-liveness.js +240 -0
- package/dist/db/pr-mentions.js +279 -0
- package/dist/db/pr-merge-queue-stamp.js +91 -0
- package/dist/db/queries.js +14631 -0
- package/dist/db/reaction-targets.js +94 -0
- package/dist/db/repo-activity.js +171 -0
- package/dist/db/retention.js +138 -0
- package/dist/db/review-threads-for-review.js +240 -0
- package/dist/db/run-migrations.js +24 -0
- package/dist/db/schema.pg.js +1220 -0
- package/dist/db/schema.sqlite.js +1801 -0
- package/dist/db/search.js +317 -0
- package/dist/db/security-alerts.js +218 -0
- package/dist/db/synthesis-input.js +565 -0
- package/dist/db/triage.js +320 -0
- package/dist/db/usage.js +63 -0
- package/dist/db/work-plan.js +1086 -0
- package/dist/db/working-hours.js +161 -0
- package/dist/feed/my-turn.js +122 -0
- package/dist/github/actions-logs.js +397 -0
- package/dist/github/auth.js +86 -0
- package/dist/github/branch-queries.js +229 -0
- package/dist/github/client.js +454 -0
- package/dist/github/codeowners.js +221 -0
- package/dist/github/commit-checks.js +105 -0
- package/dist/github/compare.js +110 -0
- package/dist/github/diff-anchor.js +227 -0
- package/dist/github/mutations.js +706 -0
- package/dist/github/pr-file-content.js +254 -0
- package/dist/github/pr-liveness.js +161 -0
- package/dist/github/queries.js +875 -0
- package/dist/github/rate-budget.js +129 -0
- package/dist/github/reactions.js +161 -0
- package/dist/github/reviewer-suggest.js +104 -0
- package/dist/github/team-reviewers.js +96 -0
- package/dist/index.js +184 -0
- package/dist/merge/auto-merge-runner.js +960 -0
- package/dist/ml/severity-client.js +218 -0
- package/dist/pr/detail-enricher.js +26 -0
- package/dist/pro/bind.js +302 -0
- package/dist/pro/contract.js +37 -0
- package/dist/pro/migrate.js +64 -0
- package/dist/review/agent-context.js +127 -0
- package/dist/review/agent.js +385 -0
- package/dist/review/agentic.js +59 -0
- package/dist/review/auth.js +94 -0
- package/dist/review/chat-agent.js +179 -0
- package/dist/review/claude-review/ai-ready.js +16 -0
- package/dist/review/claude-review/auto-settings.js +139 -0
- package/dist/review/claude-review/auto.js +244 -0
- package/dist/review/claude-review/chat.js +489 -0
- package/dist/review/claude-review/ci-failures.js +350 -0
- package/dist/review/claude-review/follow-up.js +310 -0
- package/dist/review/claude-review/manager.js +686 -0
- package/dist/review/claude-review/persist.js +996 -0
- package/dist/review/claude-review/prompts.js +357 -0
- package/dist/review/claude-review/routes.js +518 -0
- package/dist/review/claude-review/routing.js +61 -0
- package/dist/review/claude-review/specialists.js +190 -0
- package/dist/review/claude-review/threads.js +265 -0
- package/dist/review/claude-review/ticket.js +282 -0
- package/dist/review/clone-hygiene.js +380 -0
- package/dist/review/clone-manager.js +367 -0
- package/dist/review/llm.js +113 -0
- package/dist/review/model-options.js +48 -0
- package/dist/review/plugin-providers.js +12 -0
- package/dist/review/post-review.js +216 -0
- package/dist/review/post-seam.js +161 -0
- package/dist/review/prepare.js +168 -0
- package/dist/review/pricing.js +17 -0
- package/dist/review/schema.js +156 -0
- package/dist/review/submit-map.js +41 -0
- package/dist/review/usage.js +90 -0
- package/dist/shared/claude-review.js +335 -0
- package/dist/shared/conflict-fold.js +151 -0
- package/dist/shared/conflicts.js +30 -0
- package/dist/shared/flow-settings.js +191 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/my-turn-settings.js +238 -0
- package/dist/shared/pending-rules.js +281 -0
- package/dist/shared/product.js +54 -0
- package/dist/shared/types.js +896 -0
- package/dist/status.js +386 -0
- package/dist/sync/adaptive.js +185 -0
- package/dist/sync/app-attribution.js +66 -0
- package/dist/sync/auth-notices.js +36 -0
- package/dist/sync/backfill-ci-history.js +315 -0
- package/dist/sync/backfill-commit-headlines.js +136 -0
- package/dist/sync/backfill-pr-security.js +175 -0
- package/dist/sync/backfill-review-requests.js +97 -0
- package/dist/sync/benchmark-rollup.js +50 -0
- package/dist/sync/bot-detection.js +309 -0
- package/dist/sync/bot-resolution-markers.js +30 -0
- package/dist/sync/branch-status.js +634 -0
- package/dist/sync/classify-change-shape.js +150 -0
- package/dist/sync/commit-files.js +74 -0
- package/dist/sync/derive-thread-state.js +99 -0
- package/dist/sync/drain-review-threads.js +212 -0
- package/dist/sync/hydrate-detail.js +482 -0
- package/dist/sync/mention-scan.js +89 -0
- package/dist/sync/ml-enrichment.js +478 -0
- package/dist/sync/pr-change-signal.js +96 -0
- package/dist/sync/pr-liveness-sweep.js +139 -0
- package/dist/sync/pr-settle.js +381 -0
- package/dist/sync/refresh-pr.js +163 -0
- package/dist/sync/reparse-vendor-badges.js +495 -0
- package/dist/sync/resync-after-write.js +280 -0
- package/dist/sync/review-fingerprint.js +117 -0
- package/dist/sync/reviewer-behavior.js +103 -0
- package/dist/sync/reviewer-classify.js +503 -0
- package/dist/sync/routing-files.js +97 -0
- package/dist/sync/scheduled-jobs.js +12 -0
- package/dist/sync/scheduler.js +159 -0
- package/dist/sync/security-detect.js +521 -0
- package/dist/sync/sync-manager.js +750 -0
- package/dist/sync/sync-one-pr.js +205 -0
- package/dist/sync/sync-repo.js +400 -0
- package/dist/sync/unsettled-prs.js +506 -0
- package/dist/sync/upsert.js +1190 -0
- package/package.json +56 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/AiFixTab-CQP6PT5u.js +2 -0
- package/public/assets/ClaudeReviewTab-DQJ-58ZA.js +8 -0
- package/public/assets/PrBotBehaviourTab-CCnFrWbC.js +1 -0
- package/public/assets/archivo-latin-600-BN-JkNrl.woff2 +0 -0
- package/public/assets/highlight-BEHUn5zE.css +10 -0
- package/public/assets/highlight-CIIZLa6Z.js +12 -0
- package/public/assets/index-BDnYs6zg.js +73 -0
- package/public/assets/index-mCuI--RC.css +1 -0
- package/public/assets/markdown-I_JLLVAZ.js +32 -0
- package/public/assets/perfProbe-Da13EhTE.js +1 -0
- package/public/assets/tanstack-5qsxxaLe.js +17 -0
- package/public/assets/vis-C3BCkP5U.js +1280 -0
- package/public/assets/vis-ziCVehMy.css +1 -0
- package/public/favicon-16.png +0 -0
- package/public/favicon-32.png +0 -0
- package/public/favicon-48.png +0 -0
- package/public/favicon.svg +5 -0
- package/public/index.html +41 -0
- package/public-landing/apple-touch-icon.png +0 -0
- package/public-landing/assets/archivo-latin-500-BWmvx2Mg.woff2 +0 -0
- package/public-landing/assets/archivo-latin-600-BN-JkNrl.woff2 +0 -0
- package/public-landing/assets/index-CA3eEGXO.js +40 -0
- package/public-landing/assets/index-naQrQ6Fe.css +1 -0
- package/public-landing/assets/jetbrains-mono-latin-400-RruCX7RW.woff2 +0 -0
- package/public-landing/assets/newsreader-latin-400-DExrRRrN.woff2 +0 -0
- package/public-landing/assets/newsreader-latin-400-italic-b0I-AwbV.woff2 +0 -0
- package/public-landing/bots/index.html +156 -0
- package/public-landing/contact/index.html +156 -0
- package/public-landing/cookies/index.html +156 -0
- package/public-landing/demo/limn-walkthrough-poster.jpg +0 -0
- package/public-landing/demo/limn-walkthrough.cues.json +44 -0
- package/public-landing/demo/limn-walkthrough.mp4 +0 -0
- package/public-landing/favicon-16.png +0 -0
- package/public-landing/favicon-32.png +0 -0
- package/public-landing/favicon-48.png +0 -0
- package/public-landing/favicon.svg +5 -0
- package/public-landing/features/index.html +156 -0
- package/public-landing/for-developers/index.html +156 -0
- package/public-landing/for-managers/index.html +156 -0
- package/public-landing/how-it-works/index.html +156 -0
- package/public-landing/how-we-measure/index.html +156 -0
- package/public-landing/icon-192.png +0 -0
- package/public-landing/icon-512.png +0 -0
- package/public-landing/index.html +156 -0
- package/public-landing/insights/index.html +156 -0
- package/public-landing/og-image.png +0 -0
- package/public-landing/pricing/index.html +156 -0
- package/public-landing/privacy/index.html +156 -0
- package/public-landing/pro/index.html +156 -0
- package/public-landing/reviews/index.html +156 -0
- package/public-landing/robots.txt +8 -0
- package/public-landing/shots/benchmark.png +0 -0
- package/public-landing/shots/bot-roi.png +0 -0
- package/public-landing/shots/bot-settings.png +0 -0
- package/public-landing/shots/chronology.png +0 -0
- package/public-landing/shots/feed.png +0 -0
- package/public-landing/shots/flow-metrics.png +0 -0
- package/public-landing/shots/free-reports.png +0 -0
- package/public-landing/shots/pending-board.png +0 -0
- package/public-landing/shots/pending-card.png +0 -0
- package/public-landing/shots/period-report.png +0 -0
- package/public-landing/shots/pr-detail.png +0 -0
- package/public-landing/shots/pr-threads.png +0 -0
- package/public-landing/shots/reach.png +0 -0
- package/public-landing/shots/repo-rows.png +0 -0
- package/public-landing/shots/severity-findings.png +0 -0
- package/public-landing/shots/severity-strip.png +0 -0
- package/public-landing/site.webmanifest +14 -0
- package/public-landing/sitemap.xml +51 -0
- package/public-landing/terms/index.html +156 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
(function(){const m=document.createElement("link").relList;if(m&&m.supports&&m.supports("modulepreload"))return;for(const b of document.querySelectorAll('link[rel="modulepreload"]'))S(b);new MutationObserver(b=>{for(const C of b)if(C.type==="childList")for(const T of C.addedNodes)T.tagName==="LINK"&&T.rel==="modulepreload"&&S(T)}).observe(document,{childList:!0,subtree:!0});function c(b){const C={};return b.integrity&&(C.integrity=b.integrity),b.referrerPolicy&&(C.referrerPolicy=b.referrerPolicy),b.crossOrigin==="use-credentials"?C.credentials="include":b.crossOrigin==="anonymous"?C.credentials="omit":C.credentials="same-origin",C}function S(b){if(b.ep)return;b.ep=!0;const C=c(b);fetch(b.href,C)}})();var na={exports:{}},Dr={},ra={exports:{}},X={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var yc;function Xh(){if(yc)return X;yc=1;var u=Symbol.for("react.element"),m=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),S=Symbol.for("react.strict_mode"),b=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),T=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),ee=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),G=Symbol.iterator;function V(f){return f===null||typeof f!="object"?null:(f=G&&f[G]||f["@@iterator"],typeof f=="function"?f:null)}var pe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ce=Object.assign,$={};function B(f,v,Q){this.props=f,this.context=v,this.refs=$,this.updater=Q||pe}B.prototype.isReactComponent={},B.prototype.setState=function(f,v){if(typeof f!="object"&&typeof f!="function"&&f!=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,f,v,"setState")},B.prototype.forceUpdate=function(f){this.updater.enqueueForceUpdate(this,f,"forceUpdate")};function Ne(){}Ne.prototype=B.prototype;function he(f,v,Q){this.props=f,this.context=v,this.refs=$,this.updater=Q||pe}var Pe=he.prototype=new Ne;Pe.constructor=he,ce(Pe,B.prototype),Pe.isPureReactComponent=!0;var U=Array.isArray,te=Object.prototype.hasOwnProperty,ke={current:null},Oe={key:!0,ref:!0,__self:!0,__source:!0};function qe(f,v,Q){var Z,oe={},ie=null,xe=null;if(v!=null)for(Z in v.ref!==void 0&&(xe=v.ref),v.key!==void 0&&(ie=""+v.key),v)te.call(v,Z)&&!Oe.hasOwnProperty(Z)&&(oe[Z]=v[Z]);var le=arguments.length-2;if(le===1)oe.children=Q;else if(1<le){for(var je=Array(le),lt=0;lt<le;lt++)je[lt]=arguments[lt+2];oe.children=je}if(f&&f.defaultProps)for(Z in le=f.defaultProps,le)oe[Z]===void 0&&(oe[Z]=le[Z]);return{$$typeof:u,type:f,key:ie,ref:xe,props:oe,_owner:ke.current}}function Re(f,v){return{$$typeof:u,type:f.type,key:v,ref:f.ref,props:f.props,_owner:f._owner}}function K(f){return typeof f=="object"&&f!==null&&f.$$typeof===u}function Se(f){var v={"=":"=0",":":"=2"};return"$"+f.replace(/[=:]/g,function(Q){return v[Q]})}var fe=/\/+/g;function me(f,v){return typeof f=="object"&&f!==null&&f.key!=null?Se(""+f.key):v.toString(36)}function Y(f,v,Q,Z,oe){var ie=typeof f;(ie==="undefined"||ie==="boolean")&&(f=null);var xe=!1;if(f===null)xe=!0;else switch(ie){case"string":case"number":xe=!0;break;case"object":switch(f.$$typeof){case u:case m:xe=!0}}if(xe)return xe=f,oe=oe(xe),f=Z===""?"."+me(xe,0):Z,U(oe)?(Q="",f!=null&&(Q=f.replace(fe,"$&/")+"/"),Y(oe,v,Q,"",function(lt){return lt})):oe!=null&&(K(oe)&&(oe=Re(oe,Q+(!oe.key||xe&&xe.key===oe.key?"":(""+oe.key).replace(fe,"$&/")+"/")+f)),v.push(oe)),1;if(xe=0,Z=Z===""?".":Z+":",U(f))for(var le=0;le<f.length;le++){ie=f[le];var je=Z+me(ie,le);xe+=Y(ie,v,Q,je,oe)}else if(je=V(f),typeof je=="function")for(f=je.call(f),le=0;!(ie=f.next()).done;)ie=ie.value,je=Z+me(ie,le++),xe+=Y(ie,v,Q,je,oe);else if(ie==="object")throw v=String(f),Error("Objects are not valid as a React child (found: "+(v==="[object Object]"?"object with keys {"+Object.keys(f).join(", ")+"}":v)+"). If you meant to render a collection of children, use an array instead.");return xe}function Ee(f,v,Q){if(f==null)return f;var Z=[],oe=0;return Y(f,Z,"","",function(ie){return v.call(Q,ie,oe++)}),Z}function ae(f){if(f._status===-1){var v=f._result;v=v(),v.then(function(Q){(f._status===0||f._status===-1)&&(f._status=1,f._result=Q)},function(Q){(f._status===0||f._status===-1)&&(f._status=2,f._result=Q)}),f._status===-1&&(f._status=0,f._result=v)}if(f._status===1)return f._result.default;throw f._result}var ye={current:null},N={transition:null},M={ReactCurrentDispatcher:ye,ReactCurrentBatchConfig:N,ReactCurrentOwner:ke};function P(){throw Error("act(...) is not supported in production builds of React.")}return X.Children={map:Ee,forEach:function(f,v,Q){Ee(f,function(){v.apply(this,arguments)},Q)},count:function(f){var v=0;return Ee(f,function(){v++}),v},toArray:function(f){return Ee(f,function(v){return v})||[]},only:function(f){if(!K(f))throw Error("React.Children.only expected to receive a single React element child.");return f}},X.Component=B,X.Fragment=c,X.Profiler=b,X.PureComponent=he,X.StrictMode=S,X.Suspense=L,X.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=M,X.act=P,X.cloneElement=function(f,v,Q){if(f==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+f+".");var Z=ce({},f.props),oe=f.key,ie=f.ref,xe=f._owner;if(v!=null){if(v.ref!==void 0&&(ie=v.ref,xe=ke.current),v.key!==void 0&&(oe=""+v.key),f.type&&f.type.defaultProps)var le=f.type.defaultProps;for(je in v)te.call(v,je)&&!Oe.hasOwnProperty(je)&&(Z[je]=v[je]===void 0&&le!==void 0?le[je]:v[je])}var je=arguments.length-2;if(je===1)Z.children=Q;else if(1<je){le=Array(je);for(var lt=0;lt<je;lt++)le[lt]=arguments[lt+2];Z.children=le}return{$$typeof:u,type:f.type,key:oe,ref:ie,props:Z,_owner:xe}},X.createContext=function(f){return f={$$typeof:T,_currentValue:f,_currentValue2:f,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},f.Provider={$$typeof:C,_context:f},f.Consumer=f},X.createElement=qe,X.createFactory=function(f){var v=qe.bind(null,f);return v.type=f,v},X.createRef=function(){return{current:null}},X.forwardRef=function(f){return{$$typeof:q,render:f}},X.isValidElement=K,X.lazy=function(f){return{$$typeof:J,_payload:{_status:-1,_result:f},_init:ae}},X.memo=function(f,v){return{$$typeof:ee,type:f,compare:v===void 0?null:v}},X.startTransition=function(f){var v=N.transition;N.transition={};try{f()}finally{N.transition=v}},X.unstable_act=P,X.useCallback=function(f,v){return ye.current.useCallback(f,v)},X.useContext=function(f){return ye.current.useContext(f)},X.useDebugValue=function(){},X.useDeferredValue=function(f){return ye.current.useDeferredValue(f)},X.useEffect=function(f,v){return ye.current.useEffect(f,v)},X.useId=function(){return ye.current.useId()},X.useImperativeHandle=function(f,v,Q){return ye.current.useImperativeHandle(f,v,Q)},X.useInsertionEffect=function(f,v){return ye.current.useInsertionEffect(f,v)},X.useLayoutEffect=function(f,v){return ye.current.useLayoutEffect(f,v)},X.useMemo=function(f,v){return ye.current.useMemo(f,v)},X.useReducer=function(f,v,Q){return ye.current.useReducer(f,v,Q)},X.useRef=function(f){return ye.current.useRef(f)},X.useState=function(f){return ye.current.useState(f)},X.useSyncExternalStore=function(f,v,Q){return ye.current.useSyncExternalStore(f,v,Q)},X.useTransition=function(){return ye.current.useTransition()},X.version="18.3.1",X}var xc;function ma(){return xc||(xc=1,ra.exports=Xh()),ra.exports}/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.production.min.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var gc;function Zh(){if(gc)return Dr;gc=1;var u=ma(),m=Symbol.for("react.element"),c=Symbol.for("react.fragment"),S=Object.prototype.hasOwnProperty,b=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,C={key:!0,ref:!0,__self:!0,__source:!0};function T(q,L,ee){var J,G={},V=null,pe=null;ee!==void 0&&(V=""+ee),L.key!==void 0&&(V=""+L.key),L.ref!==void 0&&(pe=L.ref);for(J in L)S.call(L,J)&&!C.hasOwnProperty(J)&&(G[J]=L[J]);if(q&&q.defaultProps)for(J in L=q.defaultProps,L)G[J]===void 0&&(G[J]=L[J]);return{$$typeof:m,type:q,key:V,ref:pe,props:G,_owner:b.current}}return Dr.Fragment=c,Dr.jsx=T,Dr.jsxs=T,Dr}var vc;function Jh(){return vc||(vc=1,na.exports=Zh()),na.exports}var o=Jh(),D=ma(),ni={},oa={exports:{}},st={},ia={exports:{}},sa={};/**
|
|
18
|
+
* @license React
|
|
19
|
+
* scheduler.production.min.js
|
|
20
|
+
*
|
|
21
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
22
|
+
*
|
|
23
|
+
* This source code is licensed under the MIT license found in the
|
|
24
|
+
* LICENSE file in the root directory of this source tree.
|
|
25
|
+
*/var wc;function ef(){return wc||(wc=1,(function(u){function m(N,M){var P=N.length;N.push(M);e:for(;0<P;){var f=P-1>>>1,v=N[f];if(0<b(v,M))N[f]=M,N[P]=v,P=f;else break e}}function c(N){return N.length===0?null:N[0]}function S(N){if(N.length===0)return null;var M=N[0],P=N.pop();if(P!==M){N[0]=P;e:for(var f=0,v=N.length,Q=v>>>1;f<Q;){var Z=2*(f+1)-1,oe=N[Z],ie=Z+1,xe=N[ie];if(0>b(oe,P))ie<v&&0>b(xe,oe)?(N[f]=xe,N[ie]=P,f=ie):(N[f]=oe,N[Z]=P,f=Z);else if(ie<v&&0>b(xe,P))N[f]=xe,N[ie]=P,f=ie;else break e}}return M}function b(N,M){var P=N.sortIndex-M.sortIndex;return P!==0?P:N.id-M.id}if(typeof performance=="object"&&typeof performance.now=="function"){var C=performance;u.unstable_now=function(){return C.now()}}else{var T=Date,q=T.now();u.unstable_now=function(){return T.now()-q}}var L=[],ee=[],J=1,G=null,V=3,pe=!1,ce=!1,$=!1,B=typeof setTimeout=="function"?setTimeout:null,Ne=typeof clearTimeout=="function"?clearTimeout:null,he=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function Pe(N){for(var M=c(ee);M!==null;){if(M.callback===null)S(ee);else if(M.startTime<=N)S(ee),M.sortIndex=M.expirationTime,m(L,M);else break;M=c(ee)}}function U(N){if($=!1,Pe(N),!ce)if(c(L)!==null)ce=!0,ae(te);else{var M=c(ee);M!==null&&ye(U,M.startTime-N)}}function te(N,M){ce=!1,$&&($=!1,Ne(qe),qe=-1),pe=!0;var P=V;try{for(Pe(M),G=c(L);G!==null&&(!(G.expirationTime>M)||N&&!Se());){var f=G.callback;if(typeof f=="function"){G.callback=null,V=G.priorityLevel;var v=f(G.expirationTime<=M);M=u.unstable_now(),typeof v=="function"?G.callback=v:G===c(L)&&S(L),Pe(M)}else S(L);G=c(L)}if(G!==null)var Q=!0;else{var Z=c(ee);Z!==null&&ye(U,Z.startTime-M),Q=!1}return Q}finally{G=null,V=P,pe=!1}}var ke=!1,Oe=null,qe=-1,Re=5,K=-1;function Se(){return!(u.unstable_now()-K<Re)}function fe(){if(Oe!==null){var N=u.unstable_now();K=N;var M=!0;try{M=Oe(!0,N)}finally{M?me():(ke=!1,Oe=null)}}else ke=!1}var me;if(typeof he=="function")me=function(){he(fe)};else if(typeof MessageChannel<"u"){var Y=new MessageChannel,Ee=Y.port2;Y.port1.onmessage=fe,me=function(){Ee.postMessage(null)}}else me=function(){B(fe,0)};function ae(N){Oe=N,ke||(ke=!0,me())}function ye(N,M){qe=B(function(){N(u.unstable_now())},M)}u.unstable_IdlePriority=5,u.unstable_ImmediatePriority=1,u.unstable_LowPriority=4,u.unstable_NormalPriority=3,u.unstable_Profiling=null,u.unstable_UserBlockingPriority=2,u.unstable_cancelCallback=function(N){N.callback=null},u.unstable_continueExecution=function(){ce||pe||(ce=!0,ae(te))},u.unstable_forceFrameRate=function(N){0>N||125<N?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Re=0<N?Math.floor(1e3/N):5},u.unstable_getCurrentPriorityLevel=function(){return V},u.unstable_getFirstCallbackNode=function(){return c(L)},u.unstable_next=function(N){switch(V){case 1:case 2:case 3:var M=3;break;default:M=V}var P=V;V=M;try{return N()}finally{V=P}},u.unstable_pauseExecution=function(){},u.unstable_requestPaint=function(){},u.unstable_runWithPriority=function(N,M){switch(N){case 1:case 2:case 3:case 4:case 5:break;default:N=3}var P=V;V=N;try{return M()}finally{V=P}},u.unstable_scheduleCallback=function(N,M,P){var f=u.unstable_now();switch(typeof P=="object"&&P!==null?(P=P.delay,P=typeof P=="number"&&0<P?f+P:f):P=f,N){case 1:var v=-1;break;case 2:v=250;break;case 5:v=1073741823;break;case 4:v=1e4;break;default:v=5e3}return v=P+v,N={id:J++,callback:M,priorityLevel:N,startTime:P,expirationTime:v,sortIndex:-1},P>f?(N.sortIndex=P,m(ee,N),c(L)===null&&N===c(ee)&&($?(Ne(qe),qe=-1):$=!0,ye(U,P-f))):(N.sortIndex=v,m(L,N),ce||pe||(ce=!0,ae(te))),N},u.unstable_shouldYield=Se,u.unstable_wrapCallback=function(N){var M=V;return function(){var P=V;V=M;try{return N.apply(this,arguments)}finally{V=P}}}})(sa)),sa}var kc;function tf(){return kc||(kc=1,ia.exports=ef()),ia.exports}/**
|
|
26
|
+
* @license React
|
|
27
|
+
* react-dom.production.min.js
|
|
28
|
+
*
|
|
29
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
30
|
+
*
|
|
31
|
+
* This source code is licensed under the MIT license found in the
|
|
32
|
+
* LICENSE file in the root directory of this source tree.
|
|
33
|
+
*/var jc;function nf(){if(jc)return st;jc=1;var u=ma(),m=tf();function c(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var S=new Set,b={};function C(e,t){T(e,t),T(e+"Capture",t)}function T(e,t){for(b[e]=t,e=0;e<t.length;e++)S.add(t[e])}var q=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),L=Object.prototype.hasOwnProperty,ee=/^[: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]*$/,J={},G={};function V(e){return L.call(G,e)?!0:L.call(J,e)?!1:ee.test(e)?G[e]=!0:(J[e]=!0,!1)}function pe(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function ce(e,t,n,r){if(t===null||typeof t>"u"||pe(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function $(e,t,n,r,i,s,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=a}var B={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){B[e]=new $(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];B[t]=new $(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){B[e]=new $(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){B[e]=new $(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){B[e]=new $(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){B[e]=new $(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){B[e]=new $(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){B[e]=new $(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){B[e]=new $(e,5,!1,e.toLowerCase(),null,!1,!1)});var Ne=/[\-:]([a-z])/g;function he(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 t=e.replace(Ne,he);B[t]=new $(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Ne,he);B[t]=new $(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Ne,he);B[t]=new $(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){B[e]=new $(e,1,!1,e.toLowerCase(),null,!1,!1)}),B.xlinkHref=new $("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){B[e]=new $(e,1,!1,e.toLowerCase(),null,!0,!0)});function Pe(e,t,n,r){var i=B.hasOwnProperty(t)?B[t]:null;(i!==null?i.type!==0:r||!(2<t.length)||t[0]!=="o"&&t[0]!=="O"||t[1]!=="n"&&t[1]!=="N")&&(ce(t,n,i,r)&&(n=null),r||i===null?V(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,""+n)):i.mustUseProperty?e[i.propertyName]=n===null?i.type===3?!1:"":n:(t=i.attributeName,r=i.attributeNamespace,n===null?e.removeAttribute(t):(i=i.type,n=i===3||i===4&&n===!0?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}var U=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,te=Symbol.for("react.element"),ke=Symbol.for("react.portal"),Oe=Symbol.for("react.fragment"),qe=Symbol.for("react.strict_mode"),Re=Symbol.for("react.profiler"),K=Symbol.for("react.provider"),Se=Symbol.for("react.context"),fe=Symbol.for("react.forward_ref"),me=Symbol.for("react.suspense"),Y=Symbol.for("react.suspense_list"),Ee=Symbol.for("react.memo"),ae=Symbol.for("react.lazy"),ye=Symbol.for("react.offscreen"),N=Symbol.iterator;function M(e){return e===null||typeof e!="object"?null:(e=N&&e[N]||e["@@iterator"],typeof e=="function"?e:null)}var P=Object.assign,f;function v(e){if(f===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);f=t&&t[1]||""}return`
|
|
34
|
+
`+f+e}var Q=!1;function Z(e,t){if(!e||Q)return"";Q=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(x){var r=x}Reflect.construct(e,[],t)}else{try{t.call()}catch(x){r=x}e.call(t.prototype)}else{try{throw Error()}catch(x){r=x}e()}}catch(x){if(x&&r&&typeof x.stack=="string"){for(var i=x.stack.split(`
|
|
35
|
+
`),s=r.stack.split(`
|
|
36
|
+
`),a=i.length-1,l=s.length-1;1<=a&&0<=l&&i[a]!==s[l];)l--;for(;1<=a&&0<=l;a--,l--)if(i[a]!==s[l]){if(a!==1||l!==1)do if(a--,l--,0>l||i[a]!==s[l]){var d=`
|
|
37
|
+
`+i[a].replace(" at new "," at ");return e.displayName&&d.includes("<anonymous>")&&(d=d.replace("<anonymous>",e.displayName)),d}while(1<=a&&0<=l);break}}}finally{Q=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?v(e):""}function oe(e){switch(e.tag){case 5:return v(e.type);case 16:return v("Lazy");case 13:return v("Suspense");case 19:return v("SuspenseList");case 0:case 2:case 15:return e=Z(e.type,!1),e;case 11:return e=Z(e.type.render,!1),e;case 1:return e=Z(e.type,!0),e;default:return""}}function ie(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 Oe:return"Fragment";case ke:return"Portal";case Re:return"Profiler";case qe:return"StrictMode";case me:return"Suspense";case Y:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Se:return(e.displayName||"Context")+".Consumer";case K:return(e._context.displayName||"Context")+".Provider";case fe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ee:return t=e.displayName||null,t!==null?t:ie(e.type)||"Memo";case ae:t=e._payload,e=e._init;try{return ie(e(t))}catch{}}return null}function xe(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ie(t);case 8:return t===qe?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function le(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function je(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function lt(e){var t=je(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,s.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Br(e){e._valueTracker||(e._valueTracker=lt(e))}function ja(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=je(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Vr(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 ui(e,t){var n=t.checked;return P({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function ba(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=le(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Na(e,t){t=t.checked,t!=null&&Pe(e,"checked",t,!1)}function ci(e,t){Na(e,t);var n=le(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?di(e,t.type,n):t.hasOwnProperty("defaultValue")&&di(e,t.type,le(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Sa(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function di(e,t,n){(t!=="number"||Vr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var er=Array.isArray;function En(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=""+le(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function hi(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(c(91));return P({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Ea(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(c(92));if(er(n)){if(1<n.length)throw Error(c(93));n=n[0]}t=n}t==null&&(t=""),n=t}e._wrapperState={initialValue:le(n)}}function Ca(e,t){var n=le(t.value),r=le(t.defaultValue);n!=null&&(n=""+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=""+r)}function Ta(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}function _a(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fi(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?_a(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Gr,Pa=(function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(t,n,r,i){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,i)})}:e})(function(e,t){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=t;else{for(Gr=Gr||document.createElement("div"),Gr.innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=Gr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function tr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var nr={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},td=["Webkit","ms","Moz","O"];Object.keys(nr).forEach(function(e){td.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),nr[t]=nr[e]})});function Aa(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||nr.hasOwnProperty(e)&&nr[e]?(""+t).trim():t+"px"}function Ia(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=Aa(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var nd=P({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 pi(e,t){if(t){if(nd[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(c(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(c(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(c(61))}if(t.style!=null&&typeof t.style!="object")throw Error(c(62))}}function mi(e,t){if(e.indexOf("-")===-1)return typeof t.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 yi=null;function xi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var gi=null,Cn=null,Tn=null;function Ra(e){if(e=Nr(e)){if(typeof gi!="function")throw Error(c(280));var t=e.stateNode;t&&(t=xo(t),gi(e.stateNode,e.type,t))}}function La(e){Cn?Tn?Tn.push(e):Tn=[e]:Cn=e}function za(){if(Cn){var e=Cn,t=Tn;if(Tn=Cn=null,Ra(e),t)for(e=0;e<t.length;e++)Ra(t[e])}}function Ma(e,t){return e(t)}function Oa(){}var vi=!1;function Fa(e,t,n){if(vi)return e(t,n);vi=!0;try{return Ma(e,t,n)}finally{vi=!1,(Cn!==null||Tn!==null)&&(Oa(),za())}}function rr(e,t){var n=e.stateNode;if(n===null)return null;var r=xo(n);if(r===null)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(e=e.type,r=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!r;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(c(231,t,typeof n));return n}var wi=!1;if(q)try{var or={};Object.defineProperty(or,"passive",{get:function(){wi=!0}}),window.addEventListener("test",or,or),window.removeEventListener("test",or,or)}catch{wi=!1}function rd(e,t,n,r,i,s,a,l,d){var x=Array.prototype.slice.call(arguments,3);try{t.apply(n,x)}catch(w){this.onError(w)}}var ir=!1,Yr=null,Qr=!1,ki=null,od={onError:function(e){ir=!0,Yr=e}};function id(e,t,n,r,i,s,a,l,d){ir=!1,Yr=null,rd.apply(od,arguments)}function sd(e,t,n,r,i,s,a,l,d){if(id.apply(this,arguments),ir){if(ir){var x=Yr;ir=!1,Yr=null}else throw Error(c(198));Qr||(Qr=!0,ki=x)}}function hn(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function Da(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Wa(e){if(hn(e)!==e)throw Error(c(188))}function ad(e){var t=e.alternate;if(!t){if(t=hn(e),t===null)throw Error(c(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var s=i.alternate;if(s===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===s.child){for(s=i.child;s;){if(s===n)return Wa(i),e;if(s===r)return Wa(i),t;s=s.sibling}throw Error(c(188))}if(n.return!==r.return)n=i,r=s;else{for(var a=!1,l=i.child;l;){if(l===n){a=!0,n=i,r=s;break}if(l===r){a=!0,r=i,n=s;break}l=l.sibling}if(!a){for(l=s.child;l;){if(l===n){a=!0,n=s,r=i;break}if(l===r){a=!0,r=s,n=i;break}l=l.sibling}if(!a)throw Error(c(189))}}if(n.alternate!==r)throw Error(c(190))}if(n.tag!==3)throw Error(c(188));return n.stateNode.current===n?e:t}function $a(e){return e=ad(e),e!==null?Ua(e):null}function Ua(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=Ua(e);if(t!==null)return t;e=e.sibling}return null}var Ha=m.unstable_scheduleCallback,qa=m.unstable_cancelCallback,ld=m.unstable_shouldYield,ud=m.unstable_requestPaint,Ae=m.unstable_now,cd=m.unstable_getCurrentPriorityLevel,ji=m.unstable_ImmediatePriority,Ba=m.unstable_UserBlockingPriority,Kr=m.unstable_NormalPriority,dd=m.unstable_LowPriority,Va=m.unstable_IdlePriority,Xr=null,Ct=null;function hd(e){if(Ct&&typeof Ct.onCommitFiberRoot=="function")try{Ct.onCommitFiberRoot(Xr,e,void 0,(e.current.flags&128)===128)}catch{}}var wt=Math.clz32?Math.clz32:md,fd=Math.log,pd=Math.LN2;function md(e){return e>>>=0,e===0?32:31-(fd(e)/pd|0)|0}var Zr=64,Jr=4194304;function sr(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 eo(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,s=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~i;l!==0?r=sr(l):(s&=a,s!==0&&(r=sr(s)))}else a=n&~i,a!==0?r=sr(a):s!==0&&(r=sr(s));if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,s=t&-t,i>=s||i===16&&(s&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0<t;)n=31-wt(t),i=1<<n,r|=e[n],t&=~i;return r}function yd(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 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 t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function xd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,s=e.pendingLanes;0<s;){var a=31-wt(s),l=1<<a,d=i[a];d===-1?((l&n)===0||(l&r)!==0)&&(i[a]=yd(l,t)):d<=t&&(e.expiredLanes|=l),s&=~l}}function bi(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function Ga(){var e=Zr;return Zr<<=1,(Zr&4194240)===0&&(Zr=64),e}function Ni(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ar(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-wt(t),e[t]=n}function gd(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var i=31-wt(n),s=1<<i;t[i]=0,r[i]=-1,e[i]=-1,n&=~s}}function Si(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-wt(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}var ue=0;function Ya(e){return e&=-e,1<e?4<e?(e&268435455)!==0?16:536870912:4:1}var Qa,Ei,Ka,Xa,Za,Ci=!1,to=[],qt=null,Bt=null,Vt=null,lr=new Map,ur=new Map,Gt=[],vd="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Ja(e,t){switch(e){case"focusin":case"focusout":qt=null;break;case"dragenter":case"dragleave":Bt=null;break;case"mouseover":case"mouseout":Vt=null;break;case"pointerover":case"pointerout":lr.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ur.delete(t.pointerId)}}function cr(e,t,n,r,i,s){return e===null||e.nativeEvent!==s?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:s,targetContainers:[i]},t!==null&&(t=Nr(t),t!==null&&Ei(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function wd(e,t,n,r,i){switch(t){case"focusin":return qt=cr(qt,e,t,n,r,i),!0;case"dragenter":return Bt=cr(Bt,e,t,n,r,i),!0;case"mouseover":return Vt=cr(Vt,e,t,n,r,i),!0;case"pointerover":var s=i.pointerId;return lr.set(s,cr(lr.get(s)||null,e,t,n,r,i)),!0;case"gotpointercapture":return s=i.pointerId,ur.set(s,cr(ur.get(s)||null,e,t,n,r,i)),!0}return!1}function el(e){var t=fn(e.target);if(t!==null){var n=hn(t);if(n!==null){if(t=n.tag,t===13){if(t=Da(n),t!==null){e.blockedOn=t,Za(e.priority,function(){Ka(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function no(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=_i(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);yi=r,n.target.dispatchEvent(r),yi=null}else return t=Nr(n),t!==null&&Ei(t),e.blockedOn=n,!1;t.shift()}return!0}function tl(e,t,n){no(e)&&n.delete(t)}function kd(){Ci=!1,qt!==null&&no(qt)&&(qt=null),Bt!==null&&no(Bt)&&(Bt=null),Vt!==null&&no(Vt)&&(Vt=null),lr.forEach(tl),ur.forEach(tl)}function dr(e,t){e.blockedOn===t&&(e.blockedOn=null,Ci||(Ci=!0,m.unstable_scheduleCallback(m.unstable_NormalPriority,kd)))}function hr(e){function t(i){return dr(i,e)}if(0<to.length){dr(to[0],e);for(var n=1;n<to.length;n++){var r=to[n];r.blockedOn===e&&(r.blockedOn=null)}}for(qt!==null&&dr(qt,e),Bt!==null&&dr(Bt,e),Vt!==null&&dr(Vt,e),lr.forEach(t),ur.forEach(t),n=0;n<Gt.length;n++)r=Gt[n],r.blockedOn===e&&(r.blockedOn=null);for(;0<Gt.length&&(n=Gt[0],n.blockedOn===null);)el(n),n.blockedOn===null&&Gt.shift()}var _n=U.ReactCurrentBatchConfig,ro=!0;function jd(e,t,n,r){var i=ue,s=_n.transition;_n.transition=null;try{ue=1,Ti(e,t,n,r)}finally{ue=i,_n.transition=s}}function bd(e,t,n,r){var i=ue,s=_n.transition;_n.transition=null;try{ue=4,Ti(e,t,n,r)}finally{ue=i,_n.transition=s}}function Ti(e,t,n,r){if(ro){var i=_i(e,t,n,r);if(i===null)Vi(e,t,r,oo,n),Ja(e,r);else if(wd(i,e,t,n,r))r.stopPropagation();else if(Ja(e,r),t&4&&-1<vd.indexOf(e)){for(;i!==null;){var s=Nr(i);if(s!==null&&Qa(s),s=_i(e,t,n,r),s===null&&Vi(e,t,r,oo,n),s===i)break;i=s}i!==null&&r.stopPropagation()}else Vi(e,t,r,null,n)}}var oo=null;function _i(e,t,n,r){if(oo=null,e=xi(r),e=fn(e),e!==null)if(t=hn(e),t===null)e=null;else if(n=t.tag,n===13){if(e=Da(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return oo=e,null}function nl(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(cd()){case ji:return 1;case Ba:return 4;case Kr:case dd:return 16;case Va:return 536870912;default:return 16}default:return 16}}var Yt=null,Pi=null,io=null;function rl(){if(io)return io;var e,t=Pi,n=t.length,r,i="value"in Yt?Yt.value:Yt.textContent,s=i.length;for(e=0;e<n&&t[e]===i[e];e++);var a=n-e;for(r=1;r<=a&&t[n-r]===i[s-r];r++);return io=i.slice(e,1<r?1-r:void 0)}function so(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function ao(){return!0}function ol(){return!1}function ut(e){function t(n,r,i,s,a){this._reactName=n,this._targetInst=i,this.type=r,this.nativeEvent=s,this.target=a,this.currentTarget=null;for(var l in e)e.hasOwnProperty(l)&&(n=e[l],this[l]=n?n(s):s[l]);return this.isDefaultPrevented=(s.defaultPrevented!=null?s.defaultPrevented:s.returnValue===!1)?ao:ol,this.isPropagationStopped=ol,this}return P(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=ao)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=ao)},persist:function(){},isPersistent:ao}),t}var Pn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ai=ut(Pn),fr=P({},Pn,{view:0,detail:0}),Nd=ut(fr),Ii,Ri,pr,lo=P({},fr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zi,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==pr&&(pr&&e.type==="mousemove"?(Ii=e.screenX-pr.screenX,Ri=e.screenY-pr.screenY):Ri=Ii=0,pr=e),Ii)},movementY:function(e){return"movementY"in e?e.movementY:Ri}}),il=ut(lo),Sd=P({},lo,{dataTransfer:0}),Ed=ut(Sd),Cd=P({},fr,{relatedTarget:0}),Li=ut(Cd),Td=P({},Pn,{animationName:0,elapsedTime:0,pseudoElement:0}),_d=ut(Td),Pd=P({},Pn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Ad=ut(Pd),Id=P({},Pn,{data:0}),sl=ut(Id),Rd={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ld={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},zd={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Md(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=zd[e])?!!t[e]:!1}function zi(){return Md}var Od=P({},fr,{key:function(e){if(e.key){var t=Rd[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=so(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Ld[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zi,charCode:function(e){return e.type==="keypress"?so(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?so(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Fd=ut(Od),Dd=P({},lo,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),al=ut(Dd),Wd=P({},fr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zi}),$d=ut(Wd),Ud=P({},Pn,{propertyName:0,elapsedTime:0,pseudoElement:0}),Hd=ut(Ud),qd=P({},lo,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Bd=ut(qd),Vd=[9,13,27,32],Mi=q&&"CompositionEvent"in window,mr=null;q&&"documentMode"in document&&(mr=document.documentMode);var Gd=q&&"TextEvent"in window&&!mr,ll=q&&(!Mi||mr&&8<mr&&11>=mr),ul=" ",cl=!1;function dl(e,t){switch(e){case"keyup":return Vd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hl(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var An=!1;function Yd(e,t){switch(e){case"compositionend":return hl(t);case"keypress":return t.which!==32?null:(cl=!0,ul);case"textInput":return e=t.data,e===ul&&cl?null:e;default:return null}}function Qd(e,t){if(An)return e==="compositionend"||!Mi&&dl(e,t)?(e=rl(),io=Pi=Yt=null,An=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ll&&t.locale!=="ko"?null:t.data;default:return null}}var Kd={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function fl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Kd[e.type]:t==="textarea"}function pl(e,t,n,r){La(r),t=po(t,"onChange"),0<t.length&&(n=new Ai("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var yr=null,xr=null;function Xd(e){Il(e,0)}function uo(e){var t=Mn(e);if(ja(t))return e}function Zd(e,t){if(e==="change")return t}var ml=!1;if(q){var Oi;if(q){var Fi="oninput"in document;if(!Fi){var yl=document.createElement("div");yl.setAttribute("oninput","return;"),Fi=typeof yl.oninput=="function"}Oi=Fi}else Oi=!1;ml=Oi&&(!document.documentMode||9<document.documentMode)}function xl(){yr&&(yr.detachEvent("onpropertychange",gl),xr=yr=null)}function gl(e){if(e.propertyName==="value"&&uo(xr)){var t=[];pl(t,xr,e,xi(e)),Fa(Xd,t)}}function Jd(e,t,n){e==="focusin"?(xl(),yr=t,xr=n,yr.attachEvent("onpropertychange",gl)):e==="focusout"&&xl()}function eh(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return uo(xr)}function th(e,t){if(e==="click")return uo(t)}function nh(e,t){if(e==="input"||e==="change")return uo(t)}function rh(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var kt=typeof Object.is=="function"?Object.is:rh;function gr(e,t){if(kt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!L.call(t,i)||!kt(e[i],t[i]))return!1}return!0}function vl(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function wl(e,t){var n=vl(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=vl(n)}}function kl(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kl(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function jl(){for(var e=window,t=Vr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Vr(e.document)}return t}function Di(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function oh(e){var t=jl(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kl(n.ownerDocument.documentElement,n)){if(r!==null&&Di(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!e.extend&&s>r&&(i=r,r=s,s=i),i=wl(n,s);var a=wl(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),s>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var ih=q&&"documentMode"in document&&11>=document.documentMode,In=null,Wi=null,vr=null,$i=!1;function bl(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;$i||In==null||In!==Vr(r)||(r=In,"selectionStart"in r&&Di(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),vr&&gr(vr,r)||(vr=r,r=po(Wi,"onSelect"),0<r.length&&(t=new Ai("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=In)))}function co(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Rn={animationend:co("Animation","AnimationEnd"),animationiteration:co("Animation","AnimationIteration"),animationstart:co("Animation","AnimationStart"),transitionend:co("Transition","TransitionEnd")},Ui={},Nl={};q&&(Nl=document.createElement("div").style,"AnimationEvent"in window||(delete Rn.animationend.animation,delete Rn.animationiteration.animation,delete Rn.animationstart.animation),"TransitionEvent"in window||delete Rn.transitionend.transition);function ho(e){if(Ui[e])return Ui[e];if(!Rn[e])return e;var t=Rn[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Nl)return Ui[e]=t[n];return e}var Sl=ho("animationend"),El=ho("animationiteration"),Cl=ho("animationstart"),Tl=ho("transitionend"),_l=new Map,Pl="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Qt(e,t){_l.set(e,t),C(t,[e])}for(var Hi=0;Hi<Pl.length;Hi++){var qi=Pl[Hi],sh=qi.toLowerCase(),ah=qi[0].toUpperCase()+qi.slice(1);Qt(sh,"on"+ah)}Qt(Sl,"onAnimationEnd"),Qt(El,"onAnimationIteration"),Qt(Cl,"onAnimationStart"),Qt("dblclick","onDoubleClick"),Qt("focusin","onFocus"),Qt("focusout","onBlur"),Qt(Tl,"onTransitionEnd"),T("onMouseEnter",["mouseout","mouseover"]),T("onMouseLeave",["mouseout","mouseover"]),T("onPointerEnter",["pointerout","pointerover"]),T("onPointerLeave",["pointerout","pointerover"]),C("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),C("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),C("onBeforeInput",["compositionend","keypress","textInput","paste"]),C("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),C("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),C("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var wr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),lh=new Set("cancel close invalid load scroll toggle".split(" ").concat(wr));function Al(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,sd(r,t,void 0,e),e.currentTarget=null}function Il(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;e:{var s=void 0;if(t)for(var a=r.length-1;0<=a;a--){var l=r[a],d=l.instance,x=l.currentTarget;if(l=l.listener,d!==s&&i.isPropagationStopped())break e;Al(i,l,x),s=d}else for(a=0;a<r.length;a++){if(l=r[a],d=l.instance,x=l.currentTarget,l=l.listener,d!==s&&i.isPropagationStopped())break e;Al(i,l,x),s=d}}}if(Qr)throw e=ki,Qr=!1,ki=null,e}function ve(e,t){var n=t[Zi];n===void 0&&(n=t[Zi]=new Set);var r=e+"__bubble";n.has(r)||(Rl(t,e,2,!1),n.add(r))}function Bi(e,t,n){var r=0;t&&(r|=4),Rl(n,e,r,t)}var fo="_reactListening"+Math.random().toString(36).slice(2);function kr(e){if(!e[fo]){e[fo]=!0,S.forEach(function(n){n!=="selectionchange"&&(lh.has(n)||Bi(n,!1,e),Bi(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[fo]||(t[fo]=!0,Bi("selectionchange",!1,t))}}function Rl(e,t,n,r){switch(nl(t)){case 1:var i=jd;break;case 4:i=bd;break;default:i=Ti}n=i.bind(null,t,n,e),i=void 0,!wi||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(i=!0),r?i!==void 0?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):i!==void 0?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function Vi(e,t,n,r,i){var s=r;if((t&1)===0&&(t&2)===0&&r!==null)e:for(;;){if(r===null)return;var a=r.tag;if(a===3||a===4){var l=r.stateNode.containerInfo;if(l===i||l.nodeType===8&&l.parentNode===i)break;if(a===4)for(a=r.return;a!==null;){var d=a.tag;if((d===3||d===4)&&(d=a.stateNode.containerInfo,d===i||d.nodeType===8&&d.parentNode===i))return;a=a.return}for(;l!==null;){if(a=fn(l),a===null)return;if(d=a.tag,d===5||d===6){r=s=a;continue e}l=l.parentNode}}r=r.return}Fa(function(){var x=s,w=xi(n),k=[];e:{var g=_l.get(e);if(g!==void 0){var E=Ai,A=e;switch(e){case"keypress":if(so(n)===0)break e;case"keydown":case"keyup":E=Fd;break;case"focusin":A="focus",E=Li;break;case"focusout":A="blur",E=Li;break;case"beforeblur":case"afterblur":E=Li;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":E=il;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":E=Ed;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":E=$d;break;case Sl:case El:case Cl:E=_d;break;case Tl:E=Hd;break;case"scroll":E=Nd;break;case"wheel":E=Bd;break;case"copy":case"cut":case"paste":E=Ad;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":E=al}var I=(t&4)!==0,Ie=!I&&e==="scroll",p=I?g!==null?g+"Capture":null:g;I=[];for(var h=x,y;h!==null;){y=h;var j=y.stateNode;if(y.tag===5&&j!==null&&(y=j,p!==null&&(j=rr(h,p),j!=null&&I.push(jr(h,j,y)))),Ie)break;h=h.return}0<I.length&&(g=new E(g,A,null,n,w),k.push({event:g,listeners:I}))}}if((t&7)===0){e:{if(g=e==="mouseover"||e==="pointerover",E=e==="mouseout"||e==="pointerout",g&&n!==yi&&(A=n.relatedTarget||n.fromElement)&&(fn(A)||A[Lt]))break e;if((E||g)&&(g=w.window===w?w:(g=w.ownerDocument)?g.defaultView||g.parentWindow:window,E?(A=n.relatedTarget||n.toElement,E=x,A=A?fn(A):null,A!==null&&(Ie=hn(A),A!==Ie||A.tag!==5&&A.tag!==6)&&(A=null)):(E=null,A=x),E!==A)){if(I=il,j="onMouseLeave",p="onMouseEnter",h="mouse",(e==="pointerout"||e==="pointerover")&&(I=al,j="onPointerLeave",p="onPointerEnter",h="pointer"),Ie=E==null?g:Mn(E),y=A==null?g:Mn(A),g=new I(j,h+"leave",E,n,w),g.target=Ie,g.relatedTarget=y,j=null,fn(w)===x&&(I=new I(p,h+"enter",A,n,w),I.target=y,I.relatedTarget=Ie,j=I),Ie=j,E&&A)t:{for(I=E,p=A,h=0,y=I;y;y=Ln(y))h++;for(y=0,j=p;j;j=Ln(j))y++;for(;0<h-y;)I=Ln(I),h--;for(;0<y-h;)p=Ln(p),y--;for(;h--;){if(I===p||p!==null&&I===p.alternate)break t;I=Ln(I),p=Ln(p)}I=null}else I=null;E!==null&&Ll(k,g,E,I,!1),A!==null&&Ie!==null&&Ll(k,Ie,A,I,!0)}}e:{if(g=x?Mn(x):window,E=g.nodeName&&g.nodeName.toLowerCase(),E==="select"||E==="input"&&g.type==="file")var R=Zd;else if(fl(g))if(ml)R=nh;else{R=eh;var O=Jd}else(E=g.nodeName)&&E.toLowerCase()==="input"&&(g.type==="checkbox"||g.type==="radio")&&(R=th);if(R&&(R=R(e,x))){pl(k,R,n,w);break e}O&&O(e,g,x),e==="focusout"&&(O=g._wrapperState)&&O.controlled&&g.type==="number"&&di(g,"number",g.value)}switch(O=x?Mn(x):window,e){case"focusin":(fl(O)||O.contentEditable==="true")&&(In=O,Wi=x,vr=null);break;case"focusout":vr=Wi=In=null;break;case"mousedown":$i=!0;break;case"contextmenu":case"mouseup":case"dragend":$i=!1,bl(k,n,w);break;case"selectionchange":if(ih)break;case"keydown":case"keyup":bl(k,n,w)}var F;if(Mi)e:{switch(e){case"compositionstart":var H="onCompositionStart";break e;case"compositionend":H="onCompositionEnd";break e;case"compositionupdate":H="onCompositionUpdate";break e}H=void 0}else An?dl(e,n)&&(H="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(H="onCompositionStart");H&&(ll&&n.locale!=="ko"&&(An||H!=="onCompositionStart"?H==="onCompositionEnd"&&An&&(F=rl()):(Yt=w,Pi="value"in Yt?Yt.value:Yt.textContent,An=!0)),O=po(x,H),0<O.length&&(H=new sl(H,e,null,n,w),k.push({event:H,listeners:O}),F?H.data=F:(F=hl(n),F!==null&&(H.data=F)))),(F=Gd?Yd(e,n):Qd(e,n))&&(x=po(x,"onBeforeInput"),0<x.length&&(w=new sl("onBeforeInput","beforeinput",null,n,w),k.push({event:w,listeners:x}),w.data=F))}Il(k,t)})}function jr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function po(e,t){for(var n=t+"Capture",r=[];e!==null;){var i=e,s=i.stateNode;i.tag===5&&s!==null&&(i=s,s=rr(e,n),s!=null&&r.unshift(jr(e,s,i)),s=rr(e,t),s!=null&&r.push(jr(e,s,i))),e=e.return}return r}function Ln(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function Ll(e,t,n,r,i){for(var s=t._reactName,a=[];n!==null&&n!==r;){var l=n,d=l.alternate,x=l.stateNode;if(d!==null&&d===r)break;l.tag===5&&x!==null&&(l=x,i?(d=rr(n,s),d!=null&&a.unshift(jr(n,d,l))):i||(d=rr(n,s),d!=null&&a.push(jr(n,d,l)))),n=n.return}a.length!==0&&e.push({event:t,listeners:a})}var uh=/\r\n?/g,ch=/\u0000|\uFFFD/g;function zl(e){return(typeof e=="string"?e:""+e).replace(uh,`
|
|
38
|
+
`).replace(ch,"")}function mo(e,t,n){if(t=zl(t),zl(e)!==t&&n)throw Error(c(425))}function yo(){}var Gi=null,Yi=null;function Qi(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Ki=typeof setTimeout=="function"?setTimeout:void 0,dh=typeof clearTimeout=="function"?clearTimeout:void 0,Ml=typeof Promise=="function"?Promise:void 0,hh=typeof queueMicrotask=="function"?queueMicrotask:typeof Ml<"u"?function(e){return Ml.resolve(null).then(e).catch(fh)}:Ki;function fh(e){setTimeout(function(){throw e})}function Xi(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n==="/$"){if(r===0){e.removeChild(i),hr(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=i}while(n);hr(t)}function Kt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function Ol(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"){if(t===0)return e;t--}else n==="/$"&&t++}e=e.previousSibling}return null}var zn=Math.random().toString(36).slice(2),Tt="__reactFiber$"+zn,br="__reactProps$"+zn,Lt="__reactContainer$"+zn,Zi="__reactEvents$"+zn,ph="__reactListeners$"+zn,mh="__reactHandles$"+zn;function fn(e){var t=e[Tt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Lt]||n[Tt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Ol(e);e!==null;){if(n=e[Tt])return n;e=Ol(e)}return t}e=n,n=e.parentNode}return null}function Nr(e){return e=e[Tt]||e[Lt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Mn(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(c(33))}function xo(e){return e[br]||null}var Ji=[],On=-1;function Xt(e){return{current:e}}function we(e){0>On||(e.current=Ji[On],Ji[On]=null,On--)}function ge(e,t){On++,Ji[On]=e.current,e.current=t}var Zt={},Ge=Xt(Zt),tt=Xt(!1),pn=Zt;function Fn(e,t){var n=e.type.contextTypes;if(!n)return Zt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=t[s];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function nt(e){return e=e.childContextTypes,e!=null}function go(){we(tt),we(Ge)}function Fl(e,t,n){if(Ge.current!==Zt)throw Error(c(168));ge(Ge,t),ge(tt,n)}function Dl(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(c(108,xe(e)||"Unknown",i));return P({},n,r)}function vo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Zt,pn=Ge.current,ge(Ge,e),ge(tt,tt.current),!0}function Wl(e,t,n){var r=e.stateNode;if(!r)throw Error(c(169));n?(e=Dl(e,t,pn),r.__reactInternalMemoizedMergedChildContext=e,we(tt),we(Ge),ge(Ge,e)):we(tt),ge(tt,n)}var zt=null,wo=!1,es=!1;function $l(e){zt===null?zt=[e]:zt.push(e)}function yh(e){wo=!0,$l(e)}function Jt(){if(!es&&zt!==null){es=!0;var e=0,t=ue;try{var n=zt;for(ue=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}zt=null,wo=!1}catch(i){throw zt!==null&&(zt=zt.slice(e+1)),Ha(ji,Jt),i}finally{ue=t,es=!1}}return null}var Dn=[],Wn=0,ko=null,jo=0,ft=[],pt=0,mn=null,Mt=1,Ot="";function yn(e,t){Dn[Wn++]=jo,Dn[Wn++]=ko,ko=e,jo=t}function Ul(e,t,n){ft[pt++]=Mt,ft[pt++]=Ot,ft[pt++]=mn,mn=e;var r=Mt;e=Ot;var i=32-wt(r)-1;r&=~(1<<i),n+=1;var s=32-wt(t)+i;if(30<s){var a=i-i%5;s=(r&(1<<a)-1).toString(32),r>>=a,i-=a,Mt=1<<32-wt(t)+i|n<<i|r,Ot=s+e}else Mt=1<<s|n<<i|r,Ot=e}function ts(e){e.return!==null&&(yn(e,1),Ul(e,1,0))}function ns(e){for(;e===ko;)ko=Dn[--Wn],Dn[Wn]=null,jo=Dn[--Wn],Dn[Wn]=null;for(;e===mn;)mn=ft[--pt],ft[pt]=null,Ot=ft[--pt],ft[pt]=null,Mt=ft[--pt],ft[pt]=null}var ct=null,dt=null,be=!1,jt=null;function Hl(e,t){var n=gt(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function ql(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,ct=e,dt=Kt(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,ct=e,dt=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=mn!==null?{id:Mt,overflow:Ot}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=gt(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,ct=e,dt=null,!0):!1;default:return!1}}function rs(e){return(e.mode&1)!==0&&(e.flags&128)===0}function os(e){if(be){var t=dt;if(t){var n=t;if(!ql(e,t)){if(rs(e))throw Error(c(418));t=Kt(n.nextSibling);var r=ct;t&&ql(e,t)?Hl(r,n):(e.flags=e.flags&-4097|2,be=!1,ct=e)}}else{if(rs(e))throw Error(c(418));e.flags=e.flags&-4097|2,be=!1,ct=e}}}function Bl(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;ct=e}function bo(e){if(e!==ct)return!1;if(!be)return Bl(e),be=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Qi(e.type,e.memoizedProps)),t&&(t=dt)){if(rs(e))throw Vl(),Error(c(418));for(;t;)Hl(e,t),t=Kt(t.nextSibling)}if(Bl(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(c(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){dt=Kt(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}dt=null}}else dt=ct?Kt(e.stateNode.nextSibling):null;return!0}function Vl(){for(var e=dt;e;)e=Kt(e.nextSibling)}function $n(){dt=ct=null,be=!1}function is(e){jt===null?jt=[e]:jt.push(e)}var xh=U.ReactCurrentBatchConfig;function Sr(e,t,n){if(e=n.ref,e!==null&&typeof e!="function"&&typeof e!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(c(309));var r=n.stateNode}if(!r)throw Error(c(147,e));var i=r,s=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===s?t.ref:(t=function(a){var l=i.refs;a===null?delete l[s]:l[s]=a},t._stringRef=s,t)}if(typeof e!="string")throw Error(c(284));if(!n._owner)throw Error(c(290,e))}return e}function No(e,t){throw e=Object.prototype.toString.call(t),Error(c(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Gl(e){var t=e._init;return t(e._payload)}function Yl(e){function t(p,h){if(e){var y=p.deletions;y===null?(p.deletions=[h],p.flags|=16):y.push(h)}}function n(p,h){if(!e)return null;for(;h!==null;)t(p,h),h=h.sibling;return null}function r(p,h){for(p=new Map;h!==null;)h.key!==null?p.set(h.key,h):p.set(h.index,h),h=h.sibling;return p}function i(p,h){return p=ln(p,h),p.index=0,p.sibling=null,p}function s(p,h,y){return p.index=y,e?(y=p.alternate,y!==null?(y=y.index,y<h?(p.flags|=2,h):y):(p.flags|=2,h)):(p.flags|=1048576,h)}function a(p){return e&&p.alternate===null&&(p.flags|=2),p}function l(p,h,y,j){return h===null||h.tag!==6?(h=Ks(y,p.mode,j),h.return=p,h):(h=i(h,y),h.return=p,h)}function d(p,h,y,j){var R=y.type;return R===Oe?w(p,h,y.props.children,j,y.key):h!==null&&(h.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===ae&&Gl(R)===h.type)?(j=i(h,y.props),j.ref=Sr(p,h,y),j.return=p,j):(j=Yo(y.type,y.key,y.props,null,p.mode,j),j.ref=Sr(p,h,y),j.return=p,j)}function x(p,h,y,j){return h===null||h.tag!==4||h.stateNode.containerInfo!==y.containerInfo||h.stateNode.implementation!==y.implementation?(h=Xs(y,p.mode,j),h.return=p,h):(h=i(h,y.children||[]),h.return=p,h)}function w(p,h,y,j,R){return h===null||h.tag!==7?(h=Nn(y,p.mode,j,R),h.return=p,h):(h=i(h,y),h.return=p,h)}function k(p,h,y){if(typeof h=="string"&&h!==""||typeof h=="number")return h=Ks(""+h,p.mode,y),h.return=p,h;if(typeof h=="object"&&h!==null){switch(h.$$typeof){case te:return y=Yo(h.type,h.key,h.props,null,p.mode,y),y.ref=Sr(p,null,h),y.return=p,y;case ke:return h=Xs(h,p.mode,y),h.return=p,h;case ae:var j=h._init;return k(p,j(h._payload),y)}if(er(h)||M(h))return h=Nn(h,p.mode,y,null),h.return=p,h;No(p,h)}return null}function g(p,h,y,j){var R=h!==null?h.key:null;if(typeof y=="string"&&y!==""||typeof y=="number")return R!==null?null:l(p,h,""+y,j);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case te:return y.key===R?d(p,h,y,j):null;case ke:return y.key===R?x(p,h,y,j):null;case ae:return R=y._init,g(p,h,R(y._payload),j)}if(er(y)||M(y))return R!==null?null:w(p,h,y,j,null);No(p,y)}return null}function E(p,h,y,j,R){if(typeof j=="string"&&j!==""||typeof j=="number")return p=p.get(y)||null,l(h,p,""+j,R);if(typeof j=="object"&&j!==null){switch(j.$$typeof){case te:return p=p.get(j.key===null?y:j.key)||null,d(h,p,j,R);case ke:return p=p.get(j.key===null?y:j.key)||null,x(h,p,j,R);case ae:var O=j._init;return E(p,h,y,O(j._payload),R)}if(er(j)||M(j))return p=p.get(y)||null,w(h,p,j,R,null);No(h,j)}return null}function A(p,h,y,j){for(var R=null,O=null,F=h,H=h=0,Ue=null;F!==null&&H<y.length;H++){F.index>H?(Ue=F,F=null):Ue=F.sibling;var se=g(p,F,y[H],j);if(se===null){F===null&&(F=Ue);break}e&&F&&se.alternate===null&&t(p,F),h=s(se,h,H),O===null?R=se:O.sibling=se,O=se,F=Ue}if(H===y.length)return n(p,F),be&&yn(p,H),R;if(F===null){for(;H<y.length;H++)F=k(p,y[H],j),F!==null&&(h=s(F,h,H),O===null?R=F:O.sibling=F,O=F);return be&&yn(p,H),R}for(F=r(p,F);H<y.length;H++)Ue=E(F,p,H,y[H],j),Ue!==null&&(e&&Ue.alternate!==null&&F.delete(Ue.key===null?H:Ue.key),h=s(Ue,h,H),O===null?R=Ue:O.sibling=Ue,O=Ue);return e&&F.forEach(function(un){return t(p,un)}),be&&yn(p,H),R}function I(p,h,y,j){var R=M(y);if(typeof R!="function")throw Error(c(150));if(y=R.call(y),y==null)throw Error(c(151));for(var O=R=null,F=h,H=h=0,Ue=null,se=y.next();F!==null&&!se.done;H++,se=y.next()){F.index>H?(Ue=F,F=null):Ue=F.sibling;var un=g(p,F,se.value,j);if(un===null){F===null&&(F=Ue);break}e&&F&&un.alternate===null&&t(p,F),h=s(un,h,H),O===null?R=un:O.sibling=un,O=un,F=Ue}if(se.done)return n(p,F),be&&yn(p,H),R;if(F===null){for(;!se.done;H++,se=y.next())se=k(p,se.value,j),se!==null&&(h=s(se,h,H),O===null?R=se:O.sibling=se,O=se);return be&&yn(p,H),R}for(F=r(p,F);!se.done;H++,se=y.next())se=E(F,p,H,se.value,j),se!==null&&(e&&se.alternate!==null&&F.delete(se.key===null?H:se.key),h=s(se,h,H),O===null?R=se:O.sibling=se,O=se);return e&&F.forEach(function(Kh){return t(p,Kh)}),be&&yn(p,H),R}function Ie(p,h,y,j){if(typeof y=="object"&&y!==null&&y.type===Oe&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case te:e:{for(var R=y.key,O=h;O!==null;){if(O.key===R){if(R=y.type,R===Oe){if(O.tag===7){n(p,O.sibling),h=i(O,y.props.children),h.return=p,p=h;break e}}else if(O.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===ae&&Gl(R)===O.type){n(p,O.sibling),h=i(O,y.props),h.ref=Sr(p,O,y),h.return=p,p=h;break e}n(p,O);break}else t(p,O);O=O.sibling}y.type===Oe?(h=Nn(y.props.children,p.mode,j,y.key),h.return=p,p=h):(j=Yo(y.type,y.key,y.props,null,p.mode,j),j.ref=Sr(p,h,y),j.return=p,p=j)}return a(p);case ke:e:{for(O=y.key;h!==null;){if(h.key===O)if(h.tag===4&&h.stateNode.containerInfo===y.containerInfo&&h.stateNode.implementation===y.implementation){n(p,h.sibling),h=i(h,y.children||[]),h.return=p,p=h;break e}else{n(p,h);break}else t(p,h);h=h.sibling}h=Xs(y,p.mode,j),h.return=p,p=h}return a(p);case ae:return O=y._init,Ie(p,h,O(y._payload),j)}if(er(y))return A(p,h,y,j);if(M(y))return I(p,h,y,j);No(p,y)}return typeof y=="string"&&y!==""||typeof y=="number"?(y=""+y,h!==null&&h.tag===6?(n(p,h.sibling),h=i(h,y),h.return=p,p=h):(n(p,h),h=Ks(y,p.mode,j),h.return=p,p=h),a(p)):n(p,h)}return Ie}var Un=Yl(!0),Ql=Yl(!1),So=Xt(null),Eo=null,Hn=null,ss=null;function as(){ss=Hn=Eo=null}function ls(e){var t=So.current;we(So),e._currentValue=t}function us(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function qn(e,t){Eo=e,ss=Hn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(rt=!0),e.firstContext=null)}function mt(e){var t=e._currentValue;if(ss!==e)if(e={context:e,memoizedValue:t,next:null},Hn===null){if(Eo===null)throw Error(c(308));Hn=e,Eo.dependencies={lanes:0,firstContext:e}}else Hn=Hn.next=e;return t}var xn=null;function cs(e){xn===null?xn=[e]:xn.push(e)}function Kl(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,cs(t)):(n.next=i.next,i.next=n),t.interleaved=n,Ft(e,r)}function Ft(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var en=!1;function ds(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Xl(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Dt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function tn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(ne&2)!==0){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Ft(e,n)}return i=r.interleaved,i===null?(t.next=t,cs(r)):(t.next=i.next,i.next=t),r.interleaved=t,Ft(e,n)}function Co(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Si(e,n)}}function Zl(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?i=s=a:s=s.next=a,n=n.next}while(n!==null);s===null?i=s=t:s=s.next=t}else i=s=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function To(e,t,n,r){var i=e.updateQueue;en=!1;var s=i.firstBaseUpdate,a=i.lastBaseUpdate,l=i.shared.pending;if(l!==null){i.shared.pending=null;var d=l,x=d.next;d.next=null,a===null?s=x:a.next=x,a=d;var w=e.alternate;w!==null&&(w=w.updateQueue,l=w.lastBaseUpdate,l!==a&&(l===null?w.firstBaseUpdate=x:l.next=x,w.lastBaseUpdate=d))}if(s!==null){var k=i.baseState;a=0,w=x=d=null,l=s;do{var g=l.lane,E=l.eventTime;if((r&g)===g){w!==null&&(w=w.next={eventTime:E,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var A=e,I=l;switch(g=t,E=n,I.tag){case 1:if(A=I.payload,typeof A=="function"){k=A.call(E,k,g);break e}k=A;break e;case 3:A.flags=A.flags&-65537|128;case 0:if(A=I.payload,g=typeof A=="function"?A.call(E,k,g):A,g==null)break e;k=P({},k,g);break e;case 2:en=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,g=i.effects,g===null?i.effects=[l]:g.push(l))}else E={eventTime:E,lane:g,tag:l.tag,payload:l.payload,callback:l.callback,next:null},w===null?(x=w=E,d=k):w=w.next=E,a|=g;if(l=l.next,l===null){if(l=i.shared.pending,l===null)break;g=l,l=g.next,g.next=null,i.lastBaseUpdate=g,i.shared.pending=null}}while(!0);if(w===null&&(d=k),i.baseState=d,i.firstBaseUpdate=x,i.lastBaseUpdate=w,t=i.shared.interleaved,t!==null){i=t;do a|=i.lane,i=i.next;while(i!==t)}else s===null&&(i.shared.lanes=0);wn|=a,e.lanes=a,e.memoizedState=k}}function Jl(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(i!==null){if(r.callback=null,r=n,typeof i!="function")throw Error(c(191,i));i.call(r)}}}var Er={},_t=Xt(Er),Cr=Xt(Er),Tr=Xt(Er);function gn(e){if(e===Er)throw Error(c(174));return e}function hs(e,t){switch(ge(Tr,t),ge(Cr,e),ge(_t,Er),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fi(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=fi(t,e)}we(_t),ge(_t,t)}function Bn(){we(_t),we(Cr),we(Tr)}function eu(e){gn(Tr.current);var t=gn(_t.current),n=fi(t,e.type);t!==n&&(ge(Cr,e),ge(_t,n))}function fs(e){Cr.current===e&&(we(_t),we(Cr))}var Ce=Xt(0);function _o(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ps=[];function ms(){for(var e=0;e<ps.length;e++)ps[e]._workInProgressVersionPrimary=null;ps.length=0}var Po=U.ReactCurrentDispatcher,ys=U.ReactCurrentBatchConfig,vn=0,Te=null,Fe=null,We=null,Ao=!1,_r=!1,Pr=0,gh=0;function Ye(){throw Error(c(321))}function xs(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!kt(e[n],t[n]))return!1;return!0}function gs(e,t,n,r,i,s){if(vn=s,Te=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Po.current=e===null||e.memoizedState===null?jh:bh,e=n(r,i),_r){s=0;do{if(_r=!1,Pr=0,25<=s)throw Error(c(301));s+=1,We=Fe=null,t.updateQueue=null,Po.current=Nh,e=n(r,i)}while(_r)}if(Po.current=Lo,t=Fe!==null&&Fe.next!==null,vn=0,We=Fe=Te=null,Ao=!1,t)throw Error(c(300));return e}function vs(){var e=Pr!==0;return Pr=0,e}function Pt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return We===null?Te.memoizedState=We=e:We=We.next=e,We}function yt(){if(Fe===null){var e=Te.alternate;e=e!==null?e.memoizedState:null}else e=Fe.next;var t=We===null?Te.memoizedState:We.next;if(t!==null)We=t,Fe=e;else{if(e===null)throw Error(c(310));Fe=e,e={memoizedState:Fe.memoizedState,baseState:Fe.baseState,baseQueue:Fe.baseQueue,queue:Fe.queue,next:null},We===null?Te.memoizedState=We=e:We=We.next=e}return We}function Ar(e,t){return typeof t=="function"?t(e):t}function ws(e){var t=yt(),n=t.queue;if(n===null)throw Error(c(311));n.lastRenderedReducer=e;var r=Fe,i=r.baseQueue,s=n.pending;if(s!==null){if(i!==null){var a=i.next;i.next=s.next,s.next=a}r.baseQueue=i=s,n.pending=null}if(i!==null){s=i.next,r=r.baseState;var l=a=null,d=null,x=s;do{var w=x.lane;if((vn&w)===w)d!==null&&(d=d.next={lane:0,action:x.action,hasEagerState:x.hasEagerState,eagerState:x.eagerState,next:null}),r=x.hasEagerState?x.eagerState:e(r,x.action);else{var k={lane:w,action:x.action,hasEagerState:x.hasEagerState,eagerState:x.eagerState,next:null};d===null?(l=d=k,a=r):d=d.next=k,Te.lanes|=w,wn|=w}x=x.next}while(x!==null&&x!==s);d===null?a=r:d.next=l,kt(r,t.memoizedState)||(rt=!0),t.memoizedState=r,t.baseState=a,t.baseQueue=d,n.lastRenderedState=r}if(e=n.interleaved,e!==null){i=e;do s=i.lane,Te.lanes|=s,wn|=s,i=i.next;while(i!==e)}else i===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function ks(e){var t=yt(),n=t.queue;if(n===null)throw Error(c(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,s=t.memoizedState;if(i!==null){n.pending=null;var a=i=i.next;do s=e(s,a.action),a=a.next;while(a!==i);kt(s,t.memoizedState)||(rt=!0),t.memoizedState=s,t.baseQueue===null&&(t.baseState=s),n.lastRenderedState=s}return[s,r]}function tu(){}function nu(e,t){var n=Te,r=yt(),i=t(),s=!kt(r.memoizedState,i);if(s&&(r.memoizedState=i,rt=!0),r=r.queue,js(iu.bind(null,n,r,e),[e]),r.getSnapshot!==t||s||We!==null&&We.memoizedState.tag&1){if(n.flags|=2048,Ir(9,ou.bind(null,n,r,i,t),void 0,null),$e===null)throw Error(c(349));(vn&30)!==0||ru(n,t,i)}return i}function ru(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=Te.updateQueue,t===null?(t={lastEffect:null,stores:null},Te.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function ou(e,t,n,r){t.value=n,t.getSnapshot=r,su(t)&&au(e)}function iu(e,t,n){return n(function(){su(t)&&au(e)})}function su(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!kt(e,n)}catch{return!0}}function au(e){var t=Ft(e,1);t!==null&&Et(t,e,1,-1)}function lu(e){var t=Pt();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ar,lastRenderedState:e},t.queue=e,e=e.dispatch=kh.bind(null,Te,e),[t.memoizedState,e]}function Ir(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},t=Te.updateQueue,t===null?(t={lastEffect:null,stores:null},Te.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e)),e}function uu(){return yt().memoizedState}function Io(e,t,n,r){var i=Pt();Te.flags|=e,i.memoizedState=Ir(1|t,n,void 0,r===void 0?null:r)}function Ro(e,t,n,r){var i=yt();r=r===void 0?null:r;var s=void 0;if(Fe!==null){var a=Fe.memoizedState;if(s=a.destroy,r!==null&&xs(r,a.deps)){i.memoizedState=Ir(t,n,s,r);return}}Te.flags|=e,i.memoizedState=Ir(1|t,n,s,r)}function cu(e,t){return Io(8390656,8,e,t)}function js(e,t){return Ro(2048,8,e,t)}function du(e,t){return Ro(4,2,e,t)}function hu(e,t){return Ro(4,4,e,t)}function fu(e,t){if(typeof t=="function")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function pu(e,t,n){return n=n!=null?n.concat([e]):null,Ro(4,4,fu.bind(null,t,e),n)}function bs(){}function mu(e,t){var n=yt();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&xs(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function yu(e,t){var n=yt();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&xs(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function xu(e,t,n){return(vn&21)===0?(e.baseState&&(e.baseState=!1,rt=!0),e.memoizedState=n):(kt(n,t)||(n=Ga(),Te.lanes|=n,wn|=n,e.baseState=!0),t)}function vh(e,t){var n=ue;ue=n!==0&&4>n?n:4,e(!0);var r=ys.transition;ys.transition={};try{e(!1),t()}finally{ue=n,ys.transition=r}}function gu(){return yt().memoizedState}function wh(e,t,n){var r=sn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},vu(e))wu(t,n);else if(n=Kl(e,t,n,r),n!==null){var i=Je();Et(n,e,r,i),ku(n,t,r)}}function kh(e,t,n){var r=sn(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(vu(e))wu(t,i);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var a=t.lastRenderedState,l=s(a,n);if(i.hasEagerState=!0,i.eagerState=l,kt(l,a)){var d=t.interleaved;d===null?(i.next=i,cs(t)):(i.next=d.next,d.next=i),t.interleaved=i;return}}catch{}finally{}n=Kl(e,t,i,r),n!==null&&(i=Je(),Et(n,e,r,i),ku(n,t,r))}}function vu(e){var t=e.alternate;return e===Te||t!==null&&t===Te}function wu(e,t){_r=Ao=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ku(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Si(e,n)}}var Lo={readContext:mt,useCallback:Ye,useContext:Ye,useEffect:Ye,useImperativeHandle:Ye,useInsertionEffect:Ye,useLayoutEffect:Ye,useMemo:Ye,useReducer:Ye,useRef:Ye,useState:Ye,useDebugValue:Ye,useDeferredValue:Ye,useTransition:Ye,useMutableSource:Ye,useSyncExternalStore:Ye,useId:Ye,unstable_isNewReconciler:!1},jh={readContext:mt,useCallback:function(e,t){return Pt().memoizedState=[e,t===void 0?null:t],e},useContext:mt,useEffect:cu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Io(4194308,4,fu.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Io(4194308,4,e,t)},useInsertionEffect:function(e,t){return Io(4,2,e,t)},useMemo:function(e,t){var n=Pt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Pt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=wh.bind(null,Te,e),[r.memoizedState,e]},useRef:function(e){var t=Pt();return e={current:e},t.memoizedState=e},useState:lu,useDebugValue:bs,useDeferredValue:function(e){return Pt().memoizedState=e},useTransition:function(){var e=lu(!1),t=e[0];return e=vh.bind(null,e[1]),Pt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Te,i=Pt();if(be){if(n===void 0)throw Error(c(407));n=n()}else{if(n=t(),$e===null)throw Error(c(349));(vn&30)!==0||ru(r,t,n)}i.memoizedState=n;var s={value:n,getSnapshot:t};return i.queue=s,cu(iu.bind(null,r,s,e),[e]),r.flags|=2048,Ir(9,ou.bind(null,r,s,n,t),void 0,null),n},useId:function(){var e=Pt(),t=$e.identifierPrefix;if(be){var n=Ot,r=Mt;n=(r&~(1<<32-wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pr++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=gh++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},bh={readContext:mt,useCallback:mu,useContext:mt,useEffect:js,useImperativeHandle:pu,useInsertionEffect:du,useLayoutEffect:hu,useMemo:yu,useReducer:ws,useRef:uu,useState:function(){return ws(Ar)},useDebugValue:bs,useDeferredValue:function(e){var t=yt();return xu(t,Fe.memoizedState,e)},useTransition:function(){var e=ws(Ar)[0],t=yt().memoizedState;return[e,t]},useMutableSource:tu,useSyncExternalStore:nu,useId:gu,unstable_isNewReconciler:!1},Nh={readContext:mt,useCallback:mu,useContext:mt,useEffect:js,useImperativeHandle:pu,useInsertionEffect:du,useLayoutEffect:hu,useMemo:yu,useReducer:ks,useRef:uu,useState:function(){return ks(Ar)},useDebugValue:bs,useDeferredValue:function(e){var t=yt();return Fe===null?t.memoizedState=e:xu(t,Fe.memoizedState,e)},useTransition:function(){var e=ks(Ar)[0],t=yt().memoizedState;return[e,t]},useMutableSource:tu,useSyncExternalStore:nu,useId:gu,unstable_isNewReconciler:!1};function bt(e,t){if(e&&e.defaultProps){t=P({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function Ns(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:P({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var zo={isMounted:function(e){return(e=e._reactInternals)?hn(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Je(),i=sn(e),s=Dt(r,i);s.payload=t,n!=null&&(s.callback=n),t=tn(e,s,i),t!==null&&(Et(t,e,i,r),Co(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Je(),i=sn(e),s=Dt(r,i);s.tag=1,s.payload=t,n!=null&&(s.callback=n),t=tn(e,s,i),t!==null&&(Et(t,e,i,r),Co(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Je(),r=sn(e),i=Dt(n,r);i.tag=2,t!=null&&(i.callback=t),t=tn(e,i,r),t!==null&&(Et(t,e,r,n),Co(t,e,r))}};function ju(e,t,n,r,i,s,a){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,s,a):t.prototype&&t.prototype.isPureReactComponent?!gr(n,r)||!gr(i,s):!0}function bu(e,t,n){var r=!1,i=Zt,s=t.contextType;return typeof s=="object"&&s!==null?s=mt(s):(i=nt(t)?pn:Ge.current,r=t.contextTypes,s=(r=r!=null)?Fn(e,i):Zt),t=new t(n,s),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=zo,e.stateNode=t,t._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=s),t}function Nu(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&zo.enqueueReplaceState(t,t.state,null)}function Ss(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs={},ds(e);var s=t.contextType;typeof s=="object"&&s!==null?i.context=mt(s):(s=nt(t)?pn:Ge.current,i.context=Fn(e,s)),i.state=e.memoizedState,s=t.getDerivedStateFromProps,typeof s=="function"&&(Ns(e,t,s,n),i.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof i.getSnapshotBeforeUpdate=="function"||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(t=i.state,typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount(),t!==i.state&&zo.enqueueReplaceState(i,i.state,null),To(e,n,i,r),i.state=e.memoizedState),typeof i.componentDidMount=="function"&&(e.flags|=4194308)}function Vn(e,t){try{var n="",r=t;do n+=oe(r),r=r.return;while(r);var i=n}catch(s){i=`
|
|
39
|
+
Error generating stack: `+s.message+`
|
|
40
|
+
`+s.stack}return{value:e,source:t,stack:i,digest:null}}function Es(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Cs(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Sh=typeof WeakMap=="function"?WeakMap:Map;function Su(e,t,n){n=Dt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Uo||(Uo=!0,Us=r),Cs(e,t)},n}function Eu(e,t,n){n=Dt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var i=t.value;n.payload=function(){return r(i)},n.callback=function(){Cs(e,t)}}var s=e.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(n.callback=function(){Cs(e,t),typeof r!="function"&&(rn===null?rn=new Set([this]):rn.add(this));var a=t.stack;this.componentDidCatch(t.value,{componentStack:a!==null?a:""})}),n}function Cu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Sh;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(i.add(n),e=Dh.bind(null,e,t,n),t.then(e,e))}function Tu(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function _u(e,t,n,r,i){return(e.mode&1)===0?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Dt(-1,1),t.tag=2,tn(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=i,e)}var Eh=U.ReactCurrentOwner,rt=!1;function Ze(e,t,n,r){t.child=e===null?Ql(t,null,n,r):Un(t,e.child,n,r)}function Pu(e,t,n,r,i){n=n.render;var s=t.ref;return qn(t,i),r=gs(e,t,n,r,s,i),n=vs(),e!==null&&!rt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Wt(e,t,i)):(be&&n&&ts(t),t.flags|=1,Ze(e,t,r,i),t.child)}function Au(e,t,n,r,i){if(e===null){var s=n.type;return typeof s=="function"&&!Qs(s)&&s.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=s,Iu(e,t,s,r,i)):(e=Yo(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(s=e.child,(e.lanes&i)===0){var a=s.memoizedProps;if(n=n.compare,n=n!==null?n:gr,n(a,r)&&e.ref===t.ref)return Wt(e,t,i)}return t.flags|=1,e=ln(s,r),e.ref=t.ref,e.return=t,t.child=e}function Iu(e,t,n,r,i){if(e!==null){var s=e.memoizedProps;if(gr(s,r)&&e.ref===t.ref)if(rt=!1,t.pendingProps=r=s,(e.lanes&i)!==0)(e.flags&131072)!==0&&(rt=!0);else return t.lanes=e.lanes,Wt(e,t,i)}return Ts(e,t,n,r,i)}function Ru(e,t,n){var r=t.pendingProps,i=r.children,s=e!==null?e.memoizedState:null;if(r.mode==="hidden")if((t.mode&1)===0)t.memoizedState={baseLanes:0,cachePool:null,transitions:null},ge(Yn,ht),ht|=n;else{if((n&1073741824)===0)return e=s!==null?s.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,ge(Yn,ht),ht|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=s!==null?s.baseLanes:n,ge(Yn,ht),ht|=r}else s!==null?(r=s.baseLanes|n,t.memoizedState=null):r=n,ge(Yn,ht),ht|=r;return Ze(e,t,i,n),t.child}function Lu(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ts(e,t,n,r,i){var s=nt(n)?pn:Ge.current;return s=Fn(t,s),qn(t,i),n=gs(e,t,n,r,s,i),r=vs(),e!==null&&!rt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,Wt(e,t,i)):(be&&r&&ts(t),t.flags|=1,Ze(e,t,n,i),t.child)}function zu(e,t,n,r,i){if(nt(n)){var s=!0;vo(t)}else s=!1;if(qn(t,i),t.stateNode===null)Oo(e,t),bu(t,n,r),Ss(t,n,r,i),r=!0;else if(e===null){var a=t.stateNode,l=t.memoizedProps;a.props=l;var d=a.context,x=n.contextType;typeof x=="object"&&x!==null?x=mt(x):(x=nt(n)?pn:Ge.current,x=Fn(t,x));var w=n.getDerivedStateFromProps,k=typeof w=="function"||typeof a.getSnapshotBeforeUpdate=="function";k||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==r||d!==x)&&Nu(t,a,r,x),en=!1;var g=t.memoizedState;a.state=g,To(t,r,a,i),d=t.memoizedState,l!==r||g!==d||tt.current||en?(typeof w=="function"&&(Ns(t,n,w,r),d=t.memoizedState),(l=en||ju(t,n,l,r,g,d,x))?(k||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount=="function"&&(t.flags|=4194308)):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=d),a.props=r,a.state=d,a.context=x,r=l):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Xl(e,t),l=t.memoizedProps,x=t.type===t.elementType?l:bt(t.type,l),a.props=x,k=t.pendingProps,g=a.context,d=n.contextType,typeof d=="object"&&d!==null?d=mt(d):(d=nt(n)?pn:Ge.current,d=Fn(t,d));var E=n.getDerivedStateFromProps;(w=typeof E=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==k||g!==d)&&Nu(t,a,r,d),en=!1,g=t.memoizedState,a.state=g,To(t,r,a,i);var A=t.memoizedState;l!==k||g!==A||tt.current||en?(typeof E=="function"&&(Ns(t,n,E,r),A=t.memoizedState),(x=en||ju(t,n,x,r,g,A,d)||!1)?(w||typeof a.UNSAFE_componentWillUpdate!="function"&&typeof a.componentWillUpdate!="function"||(typeof a.componentWillUpdate=="function"&&a.componentWillUpdate(r,A,d),typeof a.UNSAFE_componentWillUpdate=="function"&&a.UNSAFE_componentWillUpdate(r,A,d)),typeof a.componentDidUpdate=="function"&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&g===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&g===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=A),a.props=r,a.state=A,a.context=d,r=x):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&g===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&g===e.memoizedState||(t.flags|=1024),r=!1)}return _s(e,t,n,r,s,i)}function _s(e,t,n,r,i,s){Lu(e,t);var a=(t.flags&128)!==0;if(!r&&!a)return i&&Wl(t,n,!1),Wt(e,t,s);r=t.stateNode,Eh.current=t;var l=a&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&a?(t.child=Un(t,e.child,null,s),t.child=Un(t,null,l,s)):Ze(e,t,l,s),t.memoizedState=r.state,i&&Wl(t,n,!0),t.child}function Mu(e){var t=e.stateNode;t.pendingContext?Fl(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Fl(e,t.context,!1),hs(e,t.containerInfo)}function Ou(e,t,n,r,i){return $n(),is(i),t.flags|=256,Ze(e,t,n,r),t.child}var Ps={dehydrated:null,treeContext:null,retryLane:0};function As(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fu(e,t,n){var r=t.pendingProps,i=Ce.current,s=!1,a=(t.flags&128)!==0,l;if((l=a)||(l=e!==null&&e.memoizedState===null?!1:(i&2)!==0),l?(s=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(i|=1),ge(Ce,i&1),e===null)return os(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((t.mode&1)===0?t.lanes=1:e.data==="$!"?t.lanes=8:t.lanes=1073741824,null):(a=r.children,e=r.fallback,s?(r=t.mode,s=t.child,a={mode:"hidden",children:a},(r&1)===0&&s!==null?(s.childLanes=0,s.pendingProps=a):s=Qo(a,r,0,null),e=Nn(e,r,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=As(n),t.memoizedState=Ps,e):Is(t,a));if(i=e.memoizedState,i!==null&&(l=i.dehydrated,l!==null))return Ch(e,t,a,r,l,i,n);if(s){s=r.fallback,a=t.mode,i=e.child,l=i.sibling;var d={mode:"hidden",children:r.children};return(a&1)===0&&t.child!==i?(r=t.child,r.childLanes=0,r.pendingProps=d,t.deletions=null):(r=ln(i,d),r.subtreeFlags=i.subtreeFlags&14680064),l!==null?s=ln(l,s):(s=Nn(s,a,n,null),s.flags|=2),s.return=t,r.return=t,r.sibling=s,t.child=r,r=s,s=t.child,a=e.child.memoizedState,a=a===null?As(n):{baseLanes:a.baseLanes|n,cachePool:null,transitions:a.transitions},s.memoizedState=a,s.childLanes=e.childLanes&~n,t.memoizedState=Ps,r}return s=e.child,e=s.sibling,r=ln(s,{mode:"visible",children:r.children}),(t.mode&1)===0&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Is(e,t){return t=Qo({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Mo(e,t,n,r){return r!==null&&is(r),Un(t,e.child,null,n),e=Is(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Ch(e,t,n,r,i,s,a){if(n)return t.flags&256?(t.flags&=-257,r=Es(Error(c(422))),Mo(e,t,a,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(s=r.fallback,i=t.mode,r=Qo({mode:"visible",children:r.children},i,0,null),s=Nn(s,i,a,null),s.flags|=2,r.return=t,s.return=t,r.sibling=s,t.child=r,(t.mode&1)!==0&&Un(t,e.child,null,a),t.child.memoizedState=As(a),t.memoizedState=Ps,s);if((t.mode&1)===0)return Mo(e,t,a,null);if(i.data==="$!"){if(r=i.nextSibling&&i.nextSibling.dataset,r)var l=r.dgst;return r=l,s=Error(c(419)),r=Es(s,r,void 0),Mo(e,t,a,r)}if(l=(a&e.childLanes)!==0,rt||l){if(r=$e,r!==null){switch(a&-a){case 4:i=2;break;case 16:i=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:i=32;break;case 536870912:i=268435456;break;default:i=0}i=(i&(r.suspendedLanes|a))!==0?0:i,i!==0&&i!==s.retryLane&&(s.retryLane=i,Ft(e,i),Et(r,e,i,-1))}return Ys(),r=Es(Error(c(421))),Mo(e,t,a,r)}return i.data==="$?"?(t.flags|=128,t.child=e.child,t=Wh.bind(null,e),i._reactRetry=t,null):(e=s.treeContext,dt=Kt(i.nextSibling),ct=t,be=!0,jt=null,e!==null&&(ft[pt++]=Mt,ft[pt++]=Ot,ft[pt++]=mn,Mt=e.id,Ot=e.overflow,mn=t),t=Is(t,r.children),t.flags|=4096,t)}function Du(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),us(e.return,t,n)}function Rs(e,t,n,r,i){var s=e.memoizedState;s===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i}:(s.isBackwards=t,s.rendering=null,s.renderingStartTime=0,s.last=r,s.tail=n,s.tailMode=i)}function Wu(e,t,n){var r=t.pendingProps,i=r.revealOrder,s=r.tail;if(Ze(e,t,r.children,n),r=Ce.current,(r&2)!==0)r=r&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Du(e,n,t);else if(e.tag===19)Du(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ge(Ce,r),(t.mode&1)===0)t.memoizedState=null;else switch(i){case"forwards":for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&_o(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Rs(t,!1,i,n,s);break;case"backwards":for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&_o(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Rs(t,!0,n,null,s);break;case"together":Rs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Oo(e,t){(t.mode&1)===0&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Wt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),wn|=t.lanes,(n&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(c(153));if(t.child!==null){for(e=t.child,n=ln(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=ln(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Th(e,t,n){switch(t.tag){case 3:Mu(t),$n();break;case 5:eu(t);break;case 1:nt(t.type)&&vo(t);break;case 4:hs(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,i=t.memoizedProps.value;ge(So,r._currentValue),r._currentValue=i;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(ge(Ce,Ce.current&1),t.flags|=128,null):(n&t.child.childLanes)!==0?Fu(e,t,n):(ge(Ce,Ce.current&1),e=Wt(e,t,n),e!==null?e.sibling:null);ge(Ce,Ce.current&1);break;case 19:if(r=(n&t.childLanes)!==0,(e.flags&128)!==0){if(r)return Wu(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),ge(Ce,Ce.current),r)break;return null;case 22:case 23:return t.lanes=0,Ru(e,t,n)}return Wt(e,t,n)}var $u,Ls,Uu,Hu;$u=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ls=function(){},Uu=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,gn(_t.current);var s=null;switch(n){case"input":i=ui(e,i),r=ui(e,r),s=[];break;case"select":i=P({},i,{value:void 0}),r=P({},r,{value:void 0}),s=[];break;case"textarea":i=hi(e,i),r=hi(e,r),s=[];break;default:typeof i.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=yo)}pi(n,r);var a;n=null;for(x in i)if(!r.hasOwnProperty(x)&&i.hasOwnProperty(x)&&i[x]!=null)if(x==="style"){var l=i[x];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else x!=="dangerouslySetInnerHTML"&&x!=="children"&&x!=="suppressContentEditableWarning"&&x!=="suppressHydrationWarning"&&x!=="autoFocus"&&(b.hasOwnProperty(x)?s||(s=[]):(s=s||[]).push(x,null));for(x in r){var d=r[x];if(l=i!=null?i[x]:void 0,r.hasOwnProperty(x)&&d!==l&&(d!=null||l!=null))if(x==="style")if(l){for(a in l)!l.hasOwnProperty(a)||d&&d.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in d)d.hasOwnProperty(a)&&l[a]!==d[a]&&(n||(n={}),n[a]=d[a])}else n||(s||(s=[]),s.push(x,n)),n=d;else x==="dangerouslySetInnerHTML"?(d=d?d.__html:void 0,l=l?l.__html:void 0,d!=null&&l!==d&&(s=s||[]).push(x,d)):x==="children"?typeof d!="string"&&typeof d!="number"||(s=s||[]).push(x,""+d):x!=="suppressContentEditableWarning"&&x!=="suppressHydrationWarning"&&(b.hasOwnProperty(x)?(d!=null&&x==="onScroll"&&ve("scroll",e),s||l===d||(s=[])):(s=s||[]).push(x,d))}n&&(s=s||[]).push("style",n);var x=s;(t.updateQueue=x)&&(t.flags|=4)}},Hu=function(e,t,n,r){n!==r&&(t.flags|=4)};function Rr(e,t){if(!be)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Qe(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&14680064,r|=i.flags&14680064,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function _h(e,t,n){var r=t.pendingProps;switch(ns(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Qe(t),null;case 1:return nt(t.type)&&go(),Qe(t),null;case 3:return r=t.stateNode,Bn(),we(tt),we(Ge),ms(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(bo(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,jt!==null&&(Bs(jt),jt=null))),Ls(e,t),Qe(t),null;case 5:fs(t);var i=gn(Tr.current);if(n=t.type,e!==null&&t.stateNode!=null)Uu(e,t,n,r,i),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(c(166));return Qe(t),null}if(e=gn(_t.current),bo(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[Tt]=t,r[br]=s,e=(t.mode&1)!==0,n){case"dialog":ve("cancel",r),ve("close",r);break;case"iframe":case"object":case"embed":ve("load",r);break;case"video":case"audio":for(i=0;i<wr.length;i++)ve(wr[i],r);break;case"source":ve("error",r);break;case"img":case"image":case"link":ve("error",r),ve("load",r);break;case"details":ve("toggle",r);break;case"input":ba(r,s),ve("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multiple},ve("invalid",r);break;case"textarea":Ea(r,s),ve("invalid",r)}pi(n,s),i=null;for(var a in s)if(s.hasOwnProperty(a)){var l=s[a];a==="children"?typeof l=="string"?r.textContent!==l&&(s.suppressHydrationWarning!==!0&&mo(r.textContent,l,e),i=["children",l]):typeof l=="number"&&r.textContent!==""+l&&(s.suppressHydrationWarning!==!0&&mo(r.textContent,l,e),i=["children",""+l]):b.hasOwnProperty(a)&&l!=null&&a==="onScroll"&&ve("scroll",r)}switch(n){case"input":Br(r),Sa(r,s,!0);break;case"textarea":Br(r),Ta(r);break;case"select":case"option":break;default:typeof s.onClick=="function"&&(r.onclick=yo)}r=i,t.updateQueue=r,r!==null&&(t.flags|=4)}else{a=i.nodeType===9?i:i.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=_a(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=a.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Tt]=t,e[br]=r,$u(e,t,!1,!1),t.stateNode=e;e:{switch(a=mi(n,r),n){case"dialog":ve("cancel",e),ve("close",e),i=r;break;case"iframe":case"object":case"embed":ve("load",e),i=r;break;case"video":case"audio":for(i=0;i<wr.length;i++)ve(wr[i],e);i=r;break;case"source":ve("error",e),i=r;break;case"img":case"image":case"link":ve("error",e),ve("load",e),i=r;break;case"details":ve("toggle",e),i=r;break;case"input":ba(e,r),i=ui(e,r),ve("invalid",e);break;case"option":i=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},i=P({},r,{value:void 0}),ve("invalid",e);break;case"textarea":Ea(e,r),i=hi(e,r),ve("invalid",e);break;default:i=r}pi(n,i),l=i;for(s in l)if(l.hasOwnProperty(s)){var d=l[s];s==="style"?Ia(e,d):s==="dangerouslySetInnerHTML"?(d=d?d.__html:void 0,d!=null&&Pa(e,d)):s==="children"?typeof d=="string"?(n!=="textarea"||d!=="")&&tr(e,d):typeof d=="number"&&tr(e,""+d):s!=="suppressContentEditableWarning"&&s!=="suppressHydrationWarning"&&s!=="autoFocus"&&(b.hasOwnProperty(s)?d!=null&&s==="onScroll"&&ve("scroll",e):d!=null&&Pe(e,s,d,a))}switch(n){case"input":Br(e),Sa(e,r,!1);break;case"textarea":Br(e),Ta(e);break;case"option":r.value!=null&&e.setAttribute("value",""+le(r.value));break;case"select":e.multiple=!!r.multiple,s=r.value,s!=null?En(e,!!r.multiple,s,!1):r.defaultValue!=null&&En(e,!!r.multiple,r.defaultValue,!0);break;default:typeof i.onClick=="function"&&(e.onclick=yo)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return Qe(t),null;case 6:if(e&&t.stateNode!=null)Hu(e,t,e.memoizedProps,r);else{if(typeof r!="string"&&t.stateNode===null)throw Error(c(166));if(n=gn(Tr.current),gn(_t.current),bo(t)){if(r=t.stateNode,n=t.memoizedProps,r[Tt]=t,(s=r.nodeValue!==n)&&(e=ct,e!==null))switch(e.tag){case 3:mo(r.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&mo(r.nodeValue,n,(e.mode&1)!==0)}s&&(t.flags|=4)}else r=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),r[Tt]=t,t.stateNode=r}return Qe(t),null;case 13:if(we(Ce),r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(be&&dt!==null&&(t.mode&1)!==0&&(t.flags&128)===0)Vl(),$n(),t.flags|=98560,s=!1;else if(s=bo(t),r!==null&&r.dehydrated!==null){if(e===null){if(!s)throw Error(c(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(c(317));s[Tt]=t}else $n(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Qe(t),s=!1}else jt!==null&&(Bs(jt),jt=null),s=!0;if(!s)return t.flags&65536?t:null}return(t.flags&128)!==0?(t.lanes=n,t):(r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,(t.mode&1)!==0&&(e===null||(Ce.current&1)!==0?De===0&&(De=3):Ys())),t.updateQueue!==null&&(t.flags|=4),Qe(t),null);case 4:return Bn(),Ls(e,t),e===null&&kr(t.stateNode.containerInfo),Qe(t),null;case 10:return ls(t.type._context),Qe(t),null;case 17:return nt(t.type)&&go(),Qe(t),null;case 19:if(we(Ce),s=t.memoizedState,s===null)return Qe(t),null;if(r=(t.flags&128)!==0,a=s.rendering,a===null)if(r)Rr(s,!1);else{if(De!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=_o(e),a!==null){for(t.flags|=128,Rr(s,!1),r=a.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;n!==null;)s=n,e=r,s.flags&=14680066,a=s.alternate,a===null?(s.childLanes=0,s.lanes=e,s.child=null,s.subtreeFlags=0,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=a.childLanes,s.lanes=a.lanes,s.child=a.child,s.subtreeFlags=0,s.deletions=null,s.memoizedProps=a.memoizedProps,s.memoizedState=a.memoizedState,s.updateQueue=a.updateQueue,s.type=a.type,e=a.dependencies,s.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ge(Ce,Ce.current&1|2),t.child}e=e.sibling}s.tail!==null&&Ae()>Qn&&(t.flags|=128,r=!0,Rr(s,!1),t.lanes=4194304)}else{if(!r)if(e=_o(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Rr(s,!0),s.tail===null&&s.tailMode==="hidden"&&!a.alternate&&!be)return Qe(t),null}else 2*Ae()-s.renderingStartTime>Qn&&n!==1073741824&&(t.flags|=128,r=!0,Rr(s,!1),t.lanes=4194304);s.isBackwards?(a.sibling=t.child,t.child=a):(n=s.last,n!==null?n.sibling=a:t.child=a,s.last=a)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=Ae(),t.sibling=null,n=Ce.current,ge(Ce,r?n&1|2:n&1),t):(Qe(t),null);case 22:case 23:return Gs(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ht&1073741824)!==0&&(Qe(t),t.subtreeFlags&6&&(t.flags|=8192)):Qe(t),null;case 24:return null;case 25:return null}throw Error(c(156,t.tag))}function Ph(e,t){switch(ns(t),t.tag){case 1:return nt(t.type)&&go(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Bn(),we(tt),we(Ge),ms(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return fs(t),null;case 13:if(we(Ce),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(c(340));$n()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return we(Ce),null;case 4:return Bn(),null;case 10:return ls(t.type._context),null;case 22:case 23:return Gs(),null;case 24:return null;default:return null}}var Fo=!1,Ke=!1,Ah=typeof WeakSet=="function"?WeakSet:Set,_=null;function Gn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){_e(e,t,r)}else n.current=null}function zs(e,t,n){try{n()}catch(r){_e(e,t,r)}}var qu=!1;function Ih(e,t){if(Gi=ro,e=jl(),Di(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var a=0,l=-1,d=-1,x=0,w=0,k=e,g=null;t:for(;;){for(var E;k!==n||i!==0&&k.nodeType!==3||(l=a+i),k!==s||r!==0&&k.nodeType!==3||(d=a+r),k.nodeType===3&&(a+=k.nodeValue.length),(E=k.firstChild)!==null;)g=k,k=E;for(;;){if(k===e)break t;if(g===n&&++x===i&&(l=a),g===s&&++w===r&&(d=a),(E=k.nextSibling)!==null)break;k=g,g=k.parentNode}k=E}n=l===-1||d===-1?null:{start:l,end:d}}else n=null}n=n||{start:0,end:0}}else n=null;for(Yi={focusedElem:e,selectionRange:n},ro=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var A=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(A!==null){var I=A.memoizedProps,Ie=A.memoizedState,p=t.stateNode,h=p.getSnapshotBeforeUpdate(t.elementType===t.type?I:bt(t.type,I),Ie);p.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var y=t.stateNode.containerInfo;y.nodeType===1?y.textContent="":y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(c(163))}}catch(j){_e(t,t.return,j)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return A=qu,qu=!1,A}function Lr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var s=i.destroy;i.destroy=void 0,s!==void 0&&zs(t,n,s)}i=i.next}while(i!==r)}}function Do(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ms(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Bu(e){var t=e.alternate;t!==null&&(e.alternate=null,Bu(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Tt],delete t[br],delete t[Zi],delete t[ph],delete t[mh])),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 Vu(e){return e.tag===5||e.tag===3||e.tag===4}function Gu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vu(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 Os(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=yo));else if(r!==4&&(e=e.child,e!==null))for(Os(e,t,n),e=e.sibling;e!==null;)Os(e,t,n),e=e.sibling}function Fs(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Fs(e,t,n),e=e.sibling;e!==null;)Fs(e,t,n),e=e.sibling}var Be=null,Nt=!1;function nn(e,t,n){for(n=n.child;n!==null;)Yu(e,t,n),n=n.sibling}function Yu(e,t,n){if(Ct&&typeof Ct.onCommitFiberUnmount=="function")try{Ct.onCommitFiberUnmount(Xr,n)}catch{}switch(n.tag){case 5:Ke||Gn(n,t);case 6:var r=Be,i=Nt;Be=null,nn(e,t,n),Be=r,Nt=i,Be!==null&&(Nt?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(Nt?(e=Be,n=n.stateNode,e.nodeType===8?Xi(e.parentNode,n):e.nodeType===1&&Xi(e,n),hr(e)):Xi(Be,n.stateNode));break;case 4:r=Be,i=Nt,Be=n.stateNode.containerInfo,Nt=!0,nn(e,t,n),Be=r,Nt=i;break;case 0:case 11:case 14:case 15:if(!Ke&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,a=s.destroy;s=s.tag,a!==void 0&&((s&2)!==0||(s&4)!==0)&&zs(n,t,a),i=i.next}while(i!==r)}nn(e,t,n);break;case 1:if(!Ke&&(Gn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){_e(n,t,l)}nn(e,t,n);break;case 21:nn(e,t,n);break;case 22:n.mode&1?(Ke=(r=Ke)||n.memoizedState!==null,nn(e,t,n),Ke=r):nn(e,t,n);break;default:nn(e,t,n)}}function Qu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ah),t.forEach(function(r){var i=$h.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function St(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var i=n[r];try{var s=e,a=t,l=a;e:for(;l!==null;){switch(l.tag){case 5:Be=l.stateNode,Nt=!1;break e;case 3:Be=l.stateNode.containerInfo,Nt=!0;break e;case 4:Be=l.stateNode.containerInfo,Nt=!0;break e}l=l.return}if(Be===null)throw Error(c(160));Yu(s,a,i),Be=null,Nt=!1;var d=i.alternate;d!==null&&(d.return=null),i.return=null}catch(x){_e(i,t,x)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)Ku(t,e),t=t.sibling}function Ku(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(St(t,e),At(e),r&4){try{Lr(3,e,e.return),Do(3,e)}catch(I){_e(e,e.return,I)}try{Lr(5,e,e.return)}catch(I){_e(e,e.return,I)}}break;case 1:St(t,e),At(e),r&512&&n!==null&&Gn(n,n.return);break;case 5:if(St(t,e),At(e),r&512&&n!==null&&Gn(n,n.return),e.flags&32){var i=e.stateNode;try{tr(i,"")}catch(I){_e(e,e.return,I)}}if(r&4&&(i=e.stateNode,i!=null)){var s=e.memoizedProps,a=n!==null?n.memoizedProps:s,l=e.type,d=e.updateQueue;if(e.updateQueue=null,d!==null)try{l==="input"&&s.type==="radio"&&s.name!=null&&Na(i,s),mi(l,a);var x=mi(l,s);for(a=0;a<d.length;a+=2){var w=d[a],k=d[a+1];w==="style"?Ia(i,k):w==="dangerouslySetInnerHTML"?Pa(i,k):w==="children"?tr(i,k):Pe(i,w,k,x)}switch(l){case"input":ci(i,s);break;case"textarea":Ca(i,s);break;case"select":var g=i._wrapperState.wasMultiple;i._wrapperState.wasMultiple=!!s.multiple;var E=s.value;E!=null?En(i,!!s.multiple,E,!1):g!==!!s.multiple&&(s.defaultValue!=null?En(i,!!s.multiple,s.defaultValue,!0):En(i,!!s.multiple,s.multiple?[]:"",!1))}i[br]=s}catch(I){_e(e,e.return,I)}}break;case 6:if(St(t,e),At(e),r&4){if(e.stateNode===null)throw Error(c(162));i=e.stateNode,s=e.memoizedProps;try{i.nodeValue=s}catch(I){_e(e,e.return,I)}}break;case 3:if(St(t,e),At(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{hr(t.containerInfo)}catch(I){_e(e,e.return,I)}break;case 4:St(t,e),At(e);break;case 13:St(t,e),At(e),i=e.child,i.flags&8192&&(s=i.memoizedState!==null,i.stateNode.isHidden=s,!s||i.alternate!==null&&i.alternate.memoizedState!==null||($s=Ae())),r&4&&Qu(e);break;case 22:if(w=n!==null&&n.memoizedState!==null,e.mode&1?(Ke=(x=Ke)||w,St(t,e),Ke=x):St(t,e),At(e),r&8192){if(x=e.memoizedState!==null,(e.stateNode.isHidden=x)&&!w&&(e.mode&1)!==0)for(_=e,w=e.child;w!==null;){for(k=_=w;_!==null;){switch(g=_,E=g.child,g.tag){case 0:case 11:case 14:case 15:Lr(4,g,g.return);break;case 1:Gn(g,g.return);var A=g.stateNode;if(typeof A.componentWillUnmount=="function"){r=g,n=g.return;try{t=r,A.props=t.memoizedProps,A.state=t.memoizedState,A.componentWillUnmount()}catch(I){_e(r,n,I)}}break;case 5:Gn(g,g.return);break;case 22:if(g.memoizedState!==null){Ju(k);continue}}E!==null?(E.return=g,_=E):Ju(k)}w=w.sibling}e:for(w=null,k=e;;){if(k.tag===5){if(w===null){w=k;try{i=k.stateNode,x?(s=i.style,typeof s.setProperty=="function"?s.setProperty("display","none","important"):s.display="none"):(l=k.stateNode,d=k.memoizedProps.style,a=d!=null&&d.hasOwnProperty("display")?d.display:null,l.style.display=Aa("display",a))}catch(I){_e(e,e.return,I)}}}else if(k.tag===6){if(w===null)try{k.stateNode.nodeValue=x?"":k.memoizedProps}catch(I){_e(e,e.return,I)}}else if((k.tag!==22&&k.tag!==23||k.memoizedState===null||k===e)&&k.child!==null){k.child.return=k,k=k.child;continue}if(k===e)break e;for(;k.sibling===null;){if(k.return===null||k.return===e)break e;w===k&&(w=null),k=k.return}w===k&&(w=null),k.sibling.return=k.return,k=k.sibling}}break;case 19:St(t,e),At(e),r&4&&Qu(e);break;case 21:break;default:St(t,e),At(e)}}function At(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(Vu(n)){var r=n;break e}n=n.return}throw Error(c(160))}switch(r.tag){case 5:var i=r.stateNode;r.flags&32&&(tr(i,""),r.flags&=-33);var s=Gu(e);Fs(e,s,i);break;case 3:case 4:var a=r.stateNode.containerInfo,l=Gu(e);Os(e,l,a);break;default:throw Error(c(161))}}catch(d){_e(e,e.return,d)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Rh(e,t,n){_=e,Xu(e)}function Xu(e,t,n){for(var r=(e.mode&1)!==0;_!==null;){var i=_,s=i.child;if(i.tag===22&&r){var a=i.memoizedState!==null||Fo;if(!a){var l=i.alternate,d=l!==null&&l.memoizedState!==null||Ke;l=Fo;var x=Ke;if(Fo=a,(Ke=d)&&!x)for(_=i;_!==null;)a=_,d=a.child,a.tag===22&&a.memoizedState!==null?ec(i):d!==null?(d.return=a,_=d):ec(i);for(;s!==null;)_=s,Xu(s),s=s.sibling;_=i,Fo=l,Ke=x}Zu(e)}else(i.subtreeFlags&8772)!==0&&s!==null?(s.return=i,_=s):Zu(e)}}function Zu(e){for(;_!==null;){var t=_;if((t.flags&8772)!==0){var n=t.alternate;try{if((t.flags&8772)!==0)switch(t.tag){case 0:case 11:case 15:Ke||Do(5,t);break;case 1:var r=t.stateNode;if(t.flags&4&&!Ke)if(n===null)r.componentDidMount();else{var i=t.elementType===t.type?n.memoizedProps:bt(t.type,n.memoizedProps);r.componentDidUpdate(i,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var s=t.updateQueue;s!==null&&Jl(t,s,r);break;case 3:var a=t.updateQueue;if(a!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}Jl(t,a,n)}break;case 5:var l=t.stateNode;if(n===null&&t.flags&4){n=l;var d=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":d.autoFocus&&n.focus();break;case"img":d.src&&(n.src=d.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var x=t.alternate;if(x!==null){var w=x.memoizedState;if(w!==null){var k=w.dehydrated;k!==null&&hr(k)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(c(163))}Ke||t.flags&512&&Ms(t)}catch(g){_e(t,t.return,g)}}if(t===e){_=null;break}if(n=t.sibling,n!==null){n.return=t.return,_=n;break}_=t.return}}function Ju(e){for(;_!==null;){var t=_;if(t===e){_=null;break}var n=t.sibling;if(n!==null){n.return=t.return,_=n;break}_=t.return}}function ec(e){for(;_!==null;){var t=_;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{Do(4,t)}catch(d){_e(t,n,d)}break;case 1:var r=t.stateNode;if(typeof r.componentDidMount=="function"){var i=t.return;try{r.componentDidMount()}catch(d){_e(t,i,d)}}var s=t.return;try{Ms(t)}catch(d){_e(t,s,d)}break;case 5:var a=t.return;try{Ms(t)}catch(d){_e(t,a,d)}}}catch(d){_e(t,t.return,d)}if(t===e){_=null;break}var l=t.sibling;if(l!==null){l.return=t.return,_=l;break}_=t.return}}var Lh=Math.ceil,Wo=U.ReactCurrentDispatcher,Ds=U.ReactCurrentOwner,xt=U.ReactCurrentBatchConfig,ne=0,$e=null,Le=null,Ve=0,ht=0,Yn=Xt(0),De=0,zr=null,wn=0,$o=0,Ws=0,Mr=null,ot=null,$s=0,Qn=1/0,$t=null,Uo=!1,Us=null,rn=null,Ho=!1,on=null,qo=0,Or=0,Hs=null,Bo=-1,Vo=0;function Je(){return(ne&6)!==0?Ae():Bo!==-1?Bo:Bo=Ae()}function sn(e){return(e.mode&1)===0?1:(ne&2)!==0&&Ve!==0?Ve&-Ve:xh.transition!==null?(Vo===0&&(Vo=Ga()),Vo):(e=ue,e!==0||(e=window.event,e=e===void 0?16:nl(e.type)),e)}function Et(e,t,n,r){if(50<Or)throw Or=0,Hs=null,Error(c(185));ar(e,n,r),((ne&2)===0||e!==$e)&&(e===$e&&((ne&2)===0&&($o|=n),De===4&&an(e,Ve)),it(e,r),n===1&&ne===0&&(t.mode&1)===0&&(Qn=Ae()+500,wo&&Jt()))}function it(e,t){var n=e.callbackNode;xd(e,t);var r=eo(e,e===$e?Ve:0);if(r===0)n!==null&&qa(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(n!=null&&qa(n),t===1)e.tag===0?yh(nc.bind(null,e)):$l(nc.bind(null,e)),hh(function(){(ne&6)===0&&Jt()}),n=null;else{switch(Ya(r)){case 1:n=ji;break;case 4:n=Ba;break;case 16:n=Kr;break;case 536870912:n=Va;break;default:n=Kr}n=cc(n,tc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function tc(e,t){if(Bo=-1,Vo=0,(ne&6)!==0)throw Error(c(327));var n=e.callbackNode;if(Kn()&&e.callbackNode!==n)return null;var r=eo(e,e===$e?Ve:0);if(r===0)return null;if((r&30)!==0||(r&e.expiredLanes)!==0||t)t=Go(e,r);else{t=r;var i=ne;ne|=2;var s=oc();($e!==e||Ve!==t)&&($t=null,Qn=Ae()+500,jn(e,t));do try{Oh();break}catch(l){rc(e,l)}while(!0);as(),Wo.current=s,ne=i,Le!==null?t=0:($e=null,Ve=0,t=De)}if(t!==0){if(t===2&&(i=bi(e),i!==0&&(r=i,t=qs(e,i))),t===1)throw n=zr,jn(e,0),an(e,r),it(e,Ae()),n;if(t===6)an(e,r);else{if(i=e.current.alternate,(r&30)===0&&!zh(i)&&(t=Go(e,r),t===2&&(s=bi(e),s!==0&&(r=s,t=qs(e,s))),t===1))throw n=zr,jn(e,0),an(e,r),it(e,Ae()),n;switch(e.finishedWork=i,e.finishedLanes=r,t){case 0:case 1:throw Error(c(345));case 2:bn(e,ot,$t);break;case 3:if(an(e,r),(r&130023424)===r&&(t=$s+500-Ae(),10<t)){if(eo(e,0)!==0)break;if(i=e.suspendedLanes,(i&r)!==r){Je(),e.pingedLanes|=e.suspendedLanes&i;break}e.timeoutHandle=Ki(bn.bind(null,e,ot,$t),t);break}bn(e,ot,$t);break;case 4:if(an(e,r),(r&4194240)===r)break;for(t=e.eventTimes,i=-1;0<r;){var a=31-wt(r);s=1<<a,a=t[a],a>i&&(i=a),r&=~s}if(r=i,r=Ae()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Lh(r/1960))-r,10<r){e.timeoutHandle=Ki(bn.bind(null,e,ot,$t),r);break}bn(e,ot,$t);break;case 5:bn(e,ot,$t);break;default:throw Error(c(329))}}}return it(e,Ae()),e.callbackNode===n?tc.bind(null,e):null}function qs(e,t){var n=Mr;return e.current.memoizedState.isDehydrated&&(jn(e,t).flags|=256),e=Go(e,t),e!==2&&(t=ot,ot=n,t!==null&&Bs(t)),e}function Bs(e){ot===null?ot=e:ot.push.apply(ot,e)}function zh(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var r=0;r<n.length;r++){var i=n[r],s=i.getSnapshot;i=i.value;try{if(!kt(s(),i))return!1}catch{return!1}}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function an(e,t){for(t&=~Ws,t&=~$o,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-wt(t),r=1<<n;e[n]=-1,t&=~r}}function nc(e){if((ne&6)!==0)throw Error(c(327));Kn();var t=eo(e,0);if((t&1)===0)return it(e,Ae()),null;var n=Go(e,t);if(e.tag!==0&&n===2){var r=bi(e);r!==0&&(t=r,n=qs(e,r))}if(n===1)throw n=zr,jn(e,0),an(e,t),it(e,Ae()),n;if(n===6)throw Error(c(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,bn(e,ot,$t),it(e,Ae()),null}function Vs(e,t){var n=ne;ne|=1;try{return e(t)}finally{ne=n,ne===0&&(Qn=Ae()+500,wo&&Jt())}}function kn(e){on!==null&&on.tag===0&&(ne&6)===0&&Kn();var t=ne;ne|=1;var n=xt.transition,r=ue;try{if(xt.transition=null,ue=1,e)return e()}finally{ue=r,xt.transition=n,ne=t,(ne&6)===0&&Jt()}}function Gs(){ht=Yn.current,we(Yn)}function jn(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,dh(n)),Le!==null)for(n=Le.return;n!==null;){var r=n;switch(ns(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&go();break;case 3:Bn(),we(tt),we(Ge),ms();break;case 5:fs(r);break;case 4:Bn();break;case 13:we(Ce);break;case 19:we(Ce);break;case 10:ls(r.type._context);break;case 22:case 23:Gs()}n=n.return}if($e=e,Le=e=ln(e.current,null),Ve=ht=t,De=0,zr=null,Ws=$o=wn=0,ot=Mr=null,xn!==null){for(t=0;t<xn.length;t++)if(n=xn[t],r=n.interleaved,r!==null){n.interleaved=null;var i=r.next,s=n.pending;if(s!==null){var a=s.next;s.next=i,r.next=a}n.pending=r}xn=null}return e}function rc(e,t){do{var n=Le;try{if(as(),Po.current=Lo,Ao){for(var r=Te.memoizedState;r!==null;){var i=r.queue;i!==null&&(i.pending=null),r=r.next}Ao=!1}if(vn=0,We=Fe=Te=null,_r=!1,Pr=0,Ds.current=null,n===null||n.return===null){De=1,zr=t,Le=null;break}e:{var s=e,a=n.return,l=n,d=t;if(t=Ve,l.flags|=32768,d!==null&&typeof d=="object"&&typeof d.then=="function"){var x=d,w=l,k=w.tag;if((w.mode&1)===0&&(k===0||k===11||k===15)){var g=w.alternate;g?(w.updateQueue=g.updateQueue,w.memoizedState=g.memoizedState,w.lanes=g.lanes):(w.updateQueue=null,w.memoizedState=null)}var E=Tu(a);if(E!==null){E.flags&=-257,_u(E,a,l,s,t),E.mode&1&&Cu(s,x,t),t=E,d=x;var A=t.updateQueue;if(A===null){var I=new Set;I.add(d),t.updateQueue=I}else A.add(d);break e}else{if((t&1)===0){Cu(s,x,t),Ys();break e}d=Error(c(426))}}else if(be&&l.mode&1){var Ie=Tu(a);if(Ie!==null){(Ie.flags&65536)===0&&(Ie.flags|=256),_u(Ie,a,l,s,t),is(Vn(d,l));break e}}s=d=Vn(d,l),De!==4&&(De=2),Mr===null?Mr=[s]:Mr.push(s),s=a;do{switch(s.tag){case 3:s.flags|=65536,t&=-t,s.lanes|=t;var p=Su(s,d,t);Zl(s,p);break e;case 1:l=d;var h=s.type,y=s.stateNode;if((s.flags&128)===0&&(typeof h.getDerivedStateFromError=="function"||y!==null&&typeof y.componentDidCatch=="function"&&(rn===null||!rn.has(y)))){s.flags|=65536,t&=-t,s.lanes|=t;var j=Eu(s,l,t);Zl(s,j);break e}}s=s.return}while(s!==null)}sc(n)}catch(R){t=R,Le===n&&n!==null&&(Le=n=n.return);continue}break}while(!0)}function oc(){var e=Wo.current;return Wo.current=Lo,e===null?Lo:e}function Ys(){(De===0||De===3||De===2)&&(De=4),$e===null||(wn&268435455)===0&&($o&268435455)===0||an($e,Ve)}function Go(e,t){var n=ne;ne|=2;var r=oc();($e!==e||Ve!==t)&&($t=null,jn(e,t));do try{Mh();break}catch(i){rc(e,i)}while(!0);if(as(),ne=n,Wo.current=r,Le!==null)throw Error(c(261));return $e=null,Ve=0,De}function Mh(){for(;Le!==null;)ic(Le)}function Oh(){for(;Le!==null&&!ld();)ic(Le)}function ic(e){var t=uc(e.alternate,e,ht);e.memoizedProps=e.pendingProps,t===null?sc(e):Le=t,Ds.current=null}function sc(e){var t=e;do{var n=t.alternate;if(e=t.return,(t.flags&32768)===0){if(n=_h(n,t,ht),n!==null){Le=n;return}}else{if(n=Ph(n,t),n!==null){n.flags&=32767,Le=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{De=6,Le=null;return}}if(t=t.sibling,t!==null){Le=t;return}Le=t=e}while(t!==null);De===0&&(De=5)}function bn(e,t,n){var r=ue,i=xt.transition;try{xt.transition=null,ue=1,Fh(e,t,n,r)}finally{xt.transition=i,ue=r}return null}function Fh(e,t,n,r){do Kn();while(on!==null);if((ne&6)!==0)throw Error(c(327));n=e.finishedWork;var i=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(c(177));e.callbackNode=null,e.callbackPriority=0;var s=n.lanes|n.childLanes;if(gd(e,s),e===$e&&(Le=$e=null,Ve=0),(n.subtreeFlags&2064)===0&&(n.flags&2064)===0||Ho||(Ho=!0,cc(Kr,function(){return Kn(),null})),s=(n.flags&15990)!==0,(n.subtreeFlags&15990)!==0||s){s=xt.transition,xt.transition=null;var a=ue;ue=1;var l=ne;ne|=4,Ds.current=null,Ih(e,n),Ku(n,e),oh(Yi),ro=!!Gi,Yi=Gi=null,e.current=n,Rh(n),ud(),ne=l,ue=a,xt.transition=s}else e.current=n;if(Ho&&(Ho=!1,on=e,qo=i),s=e.pendingLanes,s===0&&(rn=null),hd(n.stateNode),it(e,Ae()),t!==null)for(r=e.onRecoverableError,n=0;n<t.length;n++)i=t[n],r(i.value,{componentStack:i.stack,digest:i.digest});if(Uo)throw Uo=!1,e=Us,Us=null,e;return(qo&1)!==0&&e.tag!==0&&Kn(),s=e.pendingLanes,(s&1)!==0?e===Hs?Or++:(Or=0,Hs=e):Or=0,Jt(),null}function Kn(){if(on!==null){var e=Ya(qo),t=xt.transition,n=ue;try{if(xt.transition=null,ue=16>e?16:e,on===null)var r=!1;else{if(e=on,on=null,qo=0,(ne&6)!==0)throw Error(c(331));var i=ne;for(ne|=4,_=e.current;_!==null;){var s=_,a=s.child;if((_.flags&16)!==0){var l=s.deletions;if(l!==null){for(var d=0;d<l.length;d++){var x=l[d];for(_=x;_!==null;){var w=_;switch(w.tag){case 0:case 11:case 15:Lr(8,w,s)}var k=w.child;if(k!==null)k.return=w,_=k;else for(;_!==null;){w=_;var g=w.sibling,E=w.return;if(Bu(w),w===x){_=null;break}if(g!==null){g.return=E,_=g;break}_=E}}}var A=s.alternate;if(A!==null){var I=A.child;if(I!==null){A.child=null;do{var Ie=I.sibling;I.sibling=null,I=Ie}while(I!==null)}}_=s}}if((s.subtreeFlags&2064)!==0&&a!==null)a.return=s,_=a;else e:for(;_!==null;){if(s=_,(s.flags&2048)!==0)switch(s.tag){case 0:case 11:case 15:Lr(9,s,s.return)}var p=s.sibling;if(p!==null){p.return=s.return,_=p;break e}_=s.return}}var h=e.current;for(_=h;_!==null;){a=_;var y=a.child;if((a.subtreeFlags&2064)!==0&&y!==null)y.return=a,_=y;else e:for(a=h;_!==null;){if(l=_,(l.flags&2048)!==0)try{switch(l.tag){case 0:case 11:case 15:Do(9,l)}}catch(R){_e(l,l.return,R)}if(l===a){_=null;break e}var j=l.sibling;if(j!==null){j.return=l.return,_=j;break e}_=l.return}}if(ne=i,Jt(),Ct&&typeof Ct.onPostCommitFiberRoot=="function")try{Ct.onPostCommitFiberRoot(Xr,e)}catch{}r=!0}return r}finally{ue=n,xt.transition=t}}return!1}function ac(e,t,n){t=Vn(n,t),t=Su(e,t,1),e=tn(e,t,1),t=Je(),e!==null&&(ar(e,1,t),it(e,t))}function _e(e,t,n){if(e.tag===3)ac(e,e,n);else for(;t!==null;){if(t.tag===3){ac(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(rn===null||!rn.has(r))){e=Vn(n,e),e=Eu(t,e,1),t=tn(t,e,1),e=Je(),t!==null&&(ar(t,1,e),it(t,e));break}}t=t.return}}function Dh(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),t=Je(),e.pingedLanes|=e.suspendedLanes&n,$e===e&&(Ve&n)===n&&(De===4||De===3&&(Ve&130023424)===Ve&&500>Ae()-$s?jn(e,0):Ws|=n),it(e,t)}function lc(e,t){t===0&&((e.mode&1)===0?t=1:(t=Jr,Jr<<=1,(Jr&130023424)===0&&(Jr=4194304)));var n=Je();e=Ft(e,t),e!==null&&(ar(e,t,n),it(e,n))}function Wh(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),lc(e,n)}function $h(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(c(314))}r!==null&&r.delete(t),lc(e,n)}var uc;uc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||tt.current)rt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return rt=!1,Th(e,t,n);rt=(e.flags&131072)!==0}else rt=!1,be&&(t.flags&1048576)!==0&&Ul(t,jo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Oo(e,t),e=t.pendingProps;var i=Fn(t,Ge.current);qn(t,n),i=gs(null,t,r,e,i,n);var s=vs();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,nt(r)?(s=!0,vo(t)):s=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,ds(t),i.updater=zo,t.stateNode=i,i._reactInternals=t,Ss(t,r,e,n),t=_s(null,t,r,!0,s,n)):(t.tag=0,be&&s&&ts(t),Ze(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Oo(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=Hh(r),e=bt(r,e),i){case 0:t=Ts(null,t,r,e,n);break e;case 1:t=zu(null,t,r,e,n);break e;case 11:t=Pu(null,t,r,e,n);break e;case 14:t=Au(null,t,r,bt(r.type,e),n);break e}throw Error(c(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:bt(r,i),Ts(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:bt(r,i),zu(e,t,r,i,n);case 3:e:{if(Mu(t),e===null)throw Error(c(387));r=t.pendingProps,s=t.memoizedState,i=s.element,Xl(e,t),To(t,r,null,n);var a=t.memoizedState;if(r=a.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){i=Vn(Error(c(423)),t),t=Ou(e,t,r,n,i);break e}else if(r!==i){i=Vn(Error(c(424)),t),t=Ou(e,t,r,n,i);break e}else for(dt=Kt(t.stateNode.containerInfo.firstChild),ct=t,be=!0,jt=null,n=Ql(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if($n(),r===i){t=Wt(e,t,n);break e}Ze(e,t,r,n)}t=t.child}return t;case 5:return eu(t),e===null&&os(t),r=t.type,i=t.pendingProps,s=e!==null?e.memoizedProps:null,a=i.children,Qi(r,i)?a=null:s!==null&&Qi(r,s)&&(t.flags|=32),Lu(e,t),Ze(e,t,a,n),t.child;case 6:return e===null&&os(t),null;case 13:return Fu(e,t,n);case 4:return hs(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Un(t,null,r,n):Ze(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:bt(r,i),Pu(e,t,r,i,n);case 7:return Ze(e,t,t.pendingProps,n),t.child;case 8:return Ze(e,t,t.pendingProps.children,n),t.child;case 12:return Ze(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,s=t.memoizedProps,a=i.value,ge(So,r._currentValue),r._currentValue=a,s!==null)if(kt(s.value,a)){if(s.children===i.children&&!tt.current){t=Wt(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var l=s.dependencies;if(l!==null){a=s.child;for(var d=l.firstContext;d!==null;){if(d.context===r){if(s.tag===1){d=Dt(-1,n&-n),d.tag=2;var x=s.updateQueue;if(x!==null){x=x.shared;var w=x.pending;w===null?d.next=d:(d.next=w.next,w.next=d),x.pending=d}}s.lanes|=n,d=s.alternate,d!==null&&(d.lanes|=n),us(s.return,n,t),l.lanes|=n;break}d=d.next}}else if(s.tag===10)a=s.type===t.type?null:s.child;else if(s.tag===18){if(a=s.return,a===null)throw Error(c(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),us(a,n,t),a=s.sibling}else a=s.child;if(a!==null)a.return=s;else for(a=s;a!==null;){if(a===t){a=null;break}if(s=a.sibling,s!==null){s.return=a.return,a=s;break}a=a.return}s=a}Ze(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,qn(t,n),i=mt(i),r=r(i),t.flags|=1,Ze(e,t,r,n),t.child;case 14:return r=t.type,i=bt(r,t.pendingProps),i=bt(r.type,i),Au(e,t,r,i,n);case 15:return Iu(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:bt(r,i),Oo(e,t),t.tag=1,nt(r)?(e=!0,vo(t)):e=!1,qn(t,n),bu(t,r,i),Ss(t,r,i,n),_s(null,t,r,!0,e,n);case 19:return Wu(e,t,n);case 22:return Ru(e,t,n)}throw Error(c(156,t.tag))};function cc(e,t){return Ha(e,t)}function Uh(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gt(e,t,n,r){return new Uh(e,t,n,r)}function Qs(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Hh(e){if(typeof e=="function")return Qs(e)?1:0;if(e!=null){if(e=e.$$typeof,e===fe)return 11;if(e===Ee)return 14}return 2}function ln(e,t){var n=e.alternate;return n===null?(n=gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Yo(e,t,n,r,i,s){var a=2;if(r=e,typeof e=="function")Qs(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Oe:return Nn(n.children,i,s,t);case qe:a=8,i|=8;break;case Re:return e=gt(12,n,t,i|2),e.elementType=Re,e.lanes=s,e;case me:return e=gt(13,n,t,i),e.elementType=me,e.lanes=s,e;case Y:return e=gt(19,n,t,i),e.elementType=Y,e.lanes=s,e;case ye:return Qo(n,i,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case K:a=10;break e;case Se:a=9;break e;case fe:a=11;break e;case Ee:a=14;break e;case ae:a=16,r=null;break e}throw Error(c(130,e==null?e:typeof e,""))}return t=gt(a,n,t,i),t.elementType=e,t.type=r,t.lanes=s,t}function Nn(e,t,n,r){return e=gt(7,e,r,t),e.lanes=n,e}function Qo(e,t,n,r){return e=gt(22,e,r,t),e.elementType=ye,e.lanes=n,e.stateNode={isHidden:!1},e}function Ks(e,t,n){return e=gt(6,e,null,t),e.lanes=n,e}function Xs(e,t,n){return t=gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function qh(e,t,n,r,i){this.tag=t,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=Ni(0),this.expirationTimes=Ni(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ni(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Zs(e,t,n,r,i,s,a,l,d){return e=new qh(e,t,n,l,d),t===1?(t=1,s===!0&&(t|=8)):t=0,s=gt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ds(s),e}function Bh(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:ke,key:r==null?null:""+r,children:e,containerInfo:t,implementation:n}}function dc(e){if(!e)return Zt;e=e._reactInternals;e:{if(hn(e)!==e||e.tag!==1)throw Error(c(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(nt(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(c(171))}if(e.tag===1){var n=e.type;if(nt(n))return Dl(e,n,t)}return t}function hc(e,t,n,r,i,s,a,l,d){return e=Zs(n,r,!0,e,i,s,a,l,d),e.context=dc(null),n=e.current,r=Je(),i=sn(n),s=Dt(r,i),s.callback=t??null,tn(n,s,i),e.current.lanes=i,ar(e,i,r),it(e,r),e}function Ko(e,t,n,r){var i=t.current,s=Je(),a=sn(i);return n=dc(n),t.context===null?t.context=n:t.pendingContext=n,t=Dt(s,a),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),e=tn(i,t,a),e!==null&&(Et(e,i,a,s),Co(e,i,a)),a}function Xo(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function fc(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Js(e,t){fc(e,t),(e=e.alternate)&&fc(e,t)}function Vh(){return null}var pc=typeof reportError=="function"?reportError:function(e){console.error(e)};function ea(e){this._internalRoot=e}Zo.prototype.render=ea.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(c(409));Ko(e,t,null,null)},Zo.prototype.unmount=ea.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;kn(function(){Ko(null,e,null,null)}),t[Lt]=null}};function Zo(e){this._internalRoot=e}Zo.prototype.unstable_scheduleHydration=function(e){if(e){var t=Xa();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Gt.length&&t!==0&&t<Gt[n].priority;n++);Gt.splice(n,0,e),n===0&&el(e)}};function ta(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Jo(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function mc(){}function Gh(e,t,n,r,i){if(i){if(typeof r=="function"){var s=r;r=function(){var x=Xo(a);s.call(x)}}var a=hc(t,r,e,0,null,!1,!1,"",mc);return e._reactRootContainer=a,e[Lt]=a.current,kr(e.nodeType===8?e.parentNode:e),kn(),a}for(;i=e.lastChild;)e.removeChild(i);if(typeof r=="function"){var l=r;r=function(){var x=Xo(d);l.call(x)}}var d=Zs(e,0,!1,null,null,!1,!1,"",mc);return e._reactRootContainer=d,e[Lt]=d.current,kr(e.nodeType===8?e.parentNode:e),kn(function(){Ko(t,d,n,r)}),d}function ei(e,t,n,r,i){var s=n._reactRootContainer;if(s){var a=s;if(typeof i=="function"){var l=i;i=function(){var d=Xo(a);l.call(d)}}Ko(t,a,e,i)}else a=Gh(n,t,e,i,r);return Xo(a)}Qa=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=sr(t.pendingLanes);n!==0&&(Si(t,n|1),it(t,Ae()),(ne&6)===0&&(Qn=Ae()+500,Jt()))}break;case 13:kn(function(){var r=Ft(e,1);if(r!==null){var i=Je();Et(r,e,1,i)}}),Js(e,1)}},Ei=function(e){if(e.tag===13){var t=Ft(e,134217728);if(t!==null){var n=Je();Et(t,e,134217728,n)}Js(e,134217728)}},Ka=function(e){if(e.tag===13){var t=sn(e),n=Ft(e,t);if(n!==null){var r=Je();Et(n,e,t,r)}Js(e,t)}},Xa=function(){return ue},Za=function(e,t){var n=ue;try{return ue=e,t()}finally{ue=n}},gi=function(e,t,n){switch(t){case"input":if(ci(e,n),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=xo(r);if(!i)throw Error(c(90));ja(r),ci(r,i)}}}break;case"textarea":Ca(e,n);break;case"select":t=n.value,t!=null&&En(e,!!n.multiple,t,!1)}},Ma=Vs,Oa=kn;var Yh={usingClientEntryPoint:!1,Events:[Nr,Mn,xo,La,za,Vs]},Fr={findFiberByHostInstance:fn,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},Qh={bundleType:Fr.bundleType,version:Fr.version,rendererPackageName:Fr.rendererPackageName,rendererConfig:Fr.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:U.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=$a(e),e===null?null:e.stateNode},findFiberByHostInstance:Fr.findFiberByHostInstance||Vh,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var ti=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!ti.isDisabled&&ti.supportsFiber)try{Xr=ti.inject(Qh),Ct=ti}catch{}}return st.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Yh,st.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!ta(t))throw Error(c(200));return Bh(e,t,null,n)},st.createRoot=function(e,t){if(!ta(e))throw Error(c(299));var n=!1,r="",i=pc;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onRecoverableError!==void 0&&(i=t.onRecoverableError)),t=Zs(e,1,!1,null,null,n,!1,r,i),e[Lt]=t.current,kr(e.nodeType===8?e.parentNode:e),new ea(t)},st.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(c(188)):(e=Object.keys(e).join(","),Error(c(268,e)));return e=$a(t),e=e===null?null:e.stateNode,e},st.flushSync=function(e){return kn(e)},st.hydrate=function(e,t,n){if(!Jo(t))throw Error(c(200));return ei(null,e,t,!0,n)},st.hydrateRoot=function(e,t,n){if(!ta(e))throw Error(c(405));var r=n!=null&&n.hydratedSources||null,i=!1,s="",a=pc;if(n!=null&&(n.unstable_strictMode===!0&&(i=!0),n.identifierPrefix!==void 0&&(s=n.identifierPrefix),n.onRecoverableError!==void 0&&(a=n.onRecoverableError)),t=hc(t,null,e,1,n??null,i,!1,s,a),e[Lt]=t.current,kr(e),r)for(e=0;e<r.length;e++)n=r[e],i=n._getVersion,i=i(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,i]:t.mutableSourceEagerHydrationData.push(n,i);return new Zo(t)},st.render=function(e,t,n){if(!Jo(t))throw Error(c(200));return ei(null,e,t,!1,n)},st.unmountComponentAtNode=function(e){if(!Jo(e))throw Error(c(40));return e._reactRootContainer?(kn(function(){ei(null,null,e,!1,function(){e._reactRootContainer=null,e[Lt]=null})}),!0):!1},st.unstable_batchedUpdates=Vs,st.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Jo(n))throw Error(c(200));if(e==null||e._reactInternals===void 0)throw Error(c(38));return ei(e,t,n,!1,r)},st.version="18.3.1-next-f1338f8080-20240426",st}var bc;function rf(){if(bc)return oa.exports;bc=1;function u(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(m){console.error(m)}}return u(),oa.exports=nf(),oa.exports}var Nc;function of(){if(Nc)return ni;Nc=1;var u=rf();return ni.createRoot=u.createRoot,ni.hydrateRoot=u.hydrateRoot,ni}var sf=of();const ua="pierre:route";function si(){if(typeof window>"u")return"/";const u=window.location.pathname.replace(/\/+$/,"");return u===""?"/":u}function Sc(u){const m=document.getElementById(u);m&&m.scrollIntoView({behavior:"smooth",block:"start"})}function af(u){const m=u.indexOf("#"),c=m===-1?u:u.slice(0,m),S=m===-1?"":u.slice(m+1),C=(c===""?si():c.replace(/\/+$/,"")||"/")===si();if(S&&C){Sc(S);return}window.history.pushState({},"",u),window.dispatchEvent(new Event(ua)),S?requestAnimationFrame(()=>requestAnimationFrame(()=>Sc(S))):window.scrollTo(0,0)}function Hc(){const[u,m]=D.useState(si);return D.useEffect(()=>{const c=()=>m(si());return window.addEventListener("popstate",c),window.addEventListener(ua,c),()=>{window.removeEventListener("popstate",c),window.removeEventListener(ua,c)}},[]),u}function lf(u){return/^https?:\/\//.test(u)||u.startsWith("/api")||u.startsWith("/app")||u.startsWith("mailto:")}function ze({to:u,children:m,onClick:c,...S}){const b=lf(u),C=D.useCallback(T=>{c==null||c(T),!b&&(T.defaultPrevented||T.button!==0||T.metaKey||T.ctrlKey||T.shiftKey||T.altKey||(T.preventDefault(),af(u)))},[b,c,u]);return o.jsx("a",{href:u,onClick:C,...S,children:m})}const ya="pierre:cookie-consent",ca=1,ai="pierre:consent";function uf(){try{const u=window.localStorage.getItem(ya);if(!u)return null;const m=JSON.parse(u);return m.choice!=="granted"&&m.choice!=="denied"||m.version!==ca?null:{choice:m.choice,version:ca,at:m.at??""}}catch{return null}}function xa(){var u;return typeof window>"u"?null:((u=uf())==null?void 0:u.choice)??null}function cf(){return xa()==="granted"}function Ec(u){try{const m={choice:u,version:ca,at:new Date().toISOString()};window.localStorage.setItem(ya,JSON.stringify(m))}catch{}u==="denied"&&Bc(),window.dispatchEvent(new CustomEvent(ai,{detail:u}))}function qc(){try{window.localStorage.removeItem(ya)}catch{}Bc(),window.dispatchEvent(new CustomEvent(ai,{detail:null}))}function Bc(){var S;if(typeof document>"u")return;const u=window.location.hostname,m=u.split("."),c=new Set([u,`.${u}`]);if(m.length>2){const b=m.slice(-2).join(".");c.add(b),c.add(`.${b}`)}for(const b of document.cookie.split(";")){const C=(S=b.split("=")[0])==null?void 0:S.trim();if(C&&/^_ga(_|$)|^_gid$|^_gat/.test(C)){for(const T of c)document.cookie=`${C}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${T}`;document.cookie=`${C}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`}}}function df(u){const m=c=>{u(c.detail??null)};return window.addEventListener(ai,m),()=>window.removeEventListener(ai,m)}const da="";function hf(u){return/^G-[A-Z0-9]{6,}$/i.test(u)&&u!=="G-XXXXXXXXXX"}function ga(){return hf(da)}let ha=!1,li=!1;function ff(){window.dataLayer=window.dataLayer||[],!window.gtag&&(window.gtag=function(){window.dataLayer.push(arguments)})}function Vc(){var m;if(typeof window>"u"||!ga()||!cf())return;if(ha){li=!0,(m=window.gtag)==null||m.call(window,"consent","update",{analytics_storage:"granted"});return}ha=!0,li=!0,ff(),window.gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"}),window.gtag("consent","update",{analytics_storage:"granted"});const u=document.createElement("script");u.async=!0,u.src=`https://www.googletagmanager.com/gtag/js?id=${da}`,document.head.appendChild(u),window.gtag("js",new Date),window.gtag("config",da,{send_page_view:!1,allow_google_signals:!1,allow_ad_personalization_signals:!1})}function va(){li=!1,typeof window<"u"&&window.gtag&&window.gtag("consent","update",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied"})}function pf(u){!ha||!li||!window.gtag||window.gtag("event","page_view",{page_path:u,page_location:window.location.href,page_title:document.title})}const z="Limn",mf="limn-review",cn=`npx ${mf}`,yf="https://github.com/alexwakeman/pierre-review",Gc="https://pierre-review.com",xf=`${Gc}/og-image.png`,gf={"/":{title:`${z} — plan your day across every repository`,description:`${z} opens on one board that answers what to work on today: review requests, replies, red builds, conflicts and pull requests ready to land, from every repository, ranked. You decide what counts as your turn and in what order. It also measures what the review bots on top are worth. Free and open core, and on your machine Claude reviews and fixes pull requests on your own Claude.`},"/for-developers":{title:"For developers — plan your day, by your own rules",description:`A red build, two reviews waiting, a reply on a thread you had moved on from, a conflict that appeared overnight. ${z} puts all of it on one board across every repository, ranked, with what to do next at the top. You decide what counts as your turn and how it is ordered, then finish the work in place — reply, approve, merge, resolve the conflict. Claude reviews and fixes pull requests on your own Claude Code or Anthropic API key, on your machine. Free, with no repository limit.`},"/for-managers":{title:"For engineering managers — see the whole review loop, people and bots",description:"Throughput, lead time and where the waiting happens across every repository you own, with people counted apart from automation — free. Then a forwardable report per sprint, an hour-by-hour account of who was holding each pull request, and a keep / tune / noisy verdict on every review bot you pay for."},"/contact":{title:"Contact — a free month of Pro, for asking",description:"Card payments are not switched on yet, so Pro is free for a month to anyone who asks for it: every paid surface, no card, nothing to cancel. Send a message and it is enabled on your account. The free tier needs none of this — it works today."},"/how-we-measure":{title:"How we measure — the two models, in plain English",description:`Almost everything ${z} shows you is counted, not predicted. Two questions resist counting and have a model each: how serious a review-bot comment is, and whether your bots are doing well compared with the same bots in comparable repositories. What each one is for, how it was built, and how we know it works.`},"/privacy":{title:`Privacy policy — ${z}`,description:`What ${z} collects, why, who processes it, how long it is kept, and how to get it deleted or exported. Run locally, ${z} collects nothing at all.`},"/cookies":{title:`Cookie policy — ${z}`,description:`Every cookie ${z} sets, what it does, how long it lasts, and a one-click control to change your analytics choice.`},"/terms":{title:`Terms of service — ${z}`,description:`The terms for using the hosted ${z} service: what you get, what you are responsible for, billing and cancellation, and the limits of liability.`}},Yc={title:`Page not found — ${z}`,description:`That page does not exist. Head back to the ${z} home page.`,robots:"noindex, follow"};function dn(u){return{...gf[u]??Yc,path:u}}function It(u,m,c,S){let b=document.head.querySelector(u);b||(b=document.createElement("meta"),b.setAttribute(m,c),document.head.appendChild(b)),b.setAttribute("content",S)}function vf(u,m){let c=document.head.querySelector(`link[rel="${u}"]`);c||(c=document.createElement("link"),c.setAttribute("rel",u),document.head.appendChild(c)),c.setAttribute("href",m)}function Ht({title:u,description:m,path:c,image:S=xf,robots:b="index, follow"}){D.useEffect(()=>{const C=`${Gc}${c??window.location.pathname}`;document.title=u,It('meta[name="description"]',"name","description",m),It('meta[name="robots"]',"name","robots",b),vf("canonical",C),It('meta[property="og:url"]',"property","og:url",C),It('meta[property="og:title"]',"property","og:title",u),It('meta[property="og:description"]',"property","og:description",m),It('meta[property="og:url"]',"property","og:url",C),It('meta[property="og:image"]',"property","og:image",S),It('meta[name="twitter:title"]',"name","twitter:title",u),It('meta[name="twitter:description"]',"name","twitter:description",m),It('meta[name="twitter:image"]',"name","twitter:image",S)},[u,m,c,S])}const wf={channel:{label:"Channel ping",rows:[".xxxxxxx.","x.......x","x.a.a...x","x.aaaaa.x","x.a.a...x",".xxxxxxx.","..x......",".x......."]},group:{label:"Group chat",rows:["xxxxxx.....","x.xx.x.....","xxxxxx.....",".x.........","...xxxxxxx.","...x.....x.","...x.aaa.x.","...xxxxxxx.",".....x....."]},bell:{label:"Generic alert",rows:["...xx...","..xxxx..",".xxxxxx.",".xxxxxx.","xxxxxxxx","xxxxxxxx","..aaaa..","...aa..."]},notebook:{label:"Notebook scribble",rows:["xxxxxxxx","x......x","x.aaa..x","x......x","x.aaaa.x","x......x","x.aa...x","xxxxxxxx"]},email:{label:"Email",rows:["xxxxxxxxxx","xa......ax","x.aa..aa.x","x...aa...x","x........x","x........x","x........x","xxxxxxxxxx"]},meeting:{label:"Meeting invite",rows:["xxxxxxx...","x.....x..x","x.aaa.x.xx","x.aaa.xxxx","x.aaa.x.xx","x.....x..x","xxxxxxx..."]},at:{label:"@-mention",rows:[".xxxxxx.","x......x","x.axxa.x","x.x..x.x","x.axxa.x","x......x",".xxxx...","....xxx."]},thread:{label:"Thread reply",rows:["xxxxxxx..","x.....x..","xxxxxxx..","..x......","..x......","..xxxxxxx","..x.....x","..xxxxxxx","....a...."]},repo:{label:"Repo event",rows:["..a....a..","..x....x..","..x...xx..","..x..xx...","..xxxx....","..x.......","..x.......","..a......."]},review:{label:"Review request",rows:["..xxxx..",".x....x.","x..aa..x","x.aaaa.x","x..aa..x",".x....x.","..xxxx.."]},ci:{label:"CI failure",rows:["xxxxxxxx","xa....ax","x.a..a.x","x..aa..x","x..aa..x","x.a..a.x","xa....ax","xxxxxxxx"]},bot:{label:"Review bot",rows:["....x....","...xxx...",".xxxxxxx.","x.......x","x.aa.aa.x","x.......x","x.xxxxx.x",".xxxxxxx.","..x...x.."]},craft:{label:"The triage caret",rows:[".....x.....","....xax....","...xaaax...","..xxaaaxx..",".xxxxaxxxx.","xxxxxxxxxxx","x.xx...xx.x","a..a...a..a"]},burst:{label:"Cleared",rows:["a...a",".a.a.",".....",".a.a.","a...a"]},miss:{label:"Missed",rows:["a...a",".a.a.","..a..",".a.a.","a...a"]}};function kf(u){const m=u.reduce((S,b)=>Math.max(S,b.length),0),c=[];return u.forEach((S,b)=>{const C=S.padEnd(m,".");let T=0;for(;T<m;){const q=C[T];if(q!=="x"&&q!=="a"){T+=1;continue}let L=1;for(;T+L<m&&C[T+L]===q;)L+=1;c.push({x:T,y:b,w:L,accent:q==="a"}),T+=L}}),{cols:m,rows:u.length,runs:c}}const fa=Object.fromEntries(Object.entries(wf).map(([u,{label:m,rows:c}])=>[u,{label:m,...kf(c)}]));function Qc({name:u,cell:m,fill:c,accent:S,opacity:b,className:C=""}){const T=fa[u],q=S??c;return o.jsx("svg",{width:T.cols*m,height:T.rows*m,viewBox:`0 0 ${T.cols} ${T.rows}`,shapeRendering:"crispEdges","aria-hidden":"true",focusable:"false",className:C,style:b===void 0?void 0:{opacity:b},children:T.runs.map(L=>o.jsx("rect",{x:L.x,y:L.y,width:L.w,height:1,fill:L.accent?q:c},`${L.y}-${L.x}`))})}function jf({className:u="text-[21px]"}){return o.jsxs("span",{className:`inline-flex items-center gap-2.5 font-display font-semibold tracking-[-0.02em] text-ink ${u}`,children:[o.jsx(Qc,{name:"group",cell:2,fill:"#16161A",accent:"#C13A20",className:"shrink-0"}),o.jsxs("span",{children:[z,o.jsx("span",{className:"text-signal-text",children:"."})]})]})}const Cc=[{to:"/for-developers",label:"For developers"},{to:"/for-managers",label:"For managers"},{to:"/how-we-measure",label:"How we measure"},{to:"/contact",label:"Contact"}],bf={"/features":"/for-developers","/how-it-works":"/how-we-measure","/bots":"/for-managers","/pro":"/for-managers","/insights":"/for-managers","/reviews":"/for-managers","/pricing":"/contact"};function Tc(u,m){return u===m||bf[u]===m}const _c="border-b-2 border-signal-fill pb-0.5 text-ink",Pc="transition-colors duration-hover ease-standard",aa="focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink";function Nf(){const u=Hc(),m=Cc.some(c=>Tc(u,c.to));return o.jsx("header",{className:"border-b border-rule px-gutter py-[26px]",children:o.jsxs("nav",{"aria-label":"Primary",className:"flex flex-wrap items-baseline justify-between gap-x-6 gap-y-4",children:[o.jsx(ze,{to:"/","aria-label":"Home",className:`${aa}`,children:o.jsx(jf,{})}),o.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-5 gap-y-2 font-mono text-mono-nav text-nav-idle type:gap-x-[30px]",children:[Cc.map(c=>{const S=Tc(u,c.to);return o.jsx(ze,{to:c.to,"aria-current":S?"page":void 0,className:`${S?_c:"hover:text-ink"} ${Pc} ${aa}`,children:c.label},c.to)}),o.jsx(ze,{to:"/api/auth/login",className:`text-ink ${m?"":_c} ${Pc} ${aa}`,children:"Sign in"})]})]})})}const Sf="transition-colors duration-hover ease-standard",Ef="focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",Ut=`hover:text-ink ${Sf} ${Ef}`;function Cf(){const u=D.useCallback(()=>{va(),qc()},[]);return o.jsxs("footer",{className:"border-t border-rule px-gutter py-[26px] font-mono text-mono-caption text-secondary",children:[o.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-x-8 gap-y-3",children:[o.jsxs("span",{children:["© 2026 ",z,". Built for sprint situational awareness."]}),o.jsxs("span",{className:"flex flex-wrap items-baseline gap-x-5 gap-y-2",children:[o.jsx(ze,{to:"/for-developers",className:Ut,children:"For developers"}),o.jsx(ze,{to:"/for-managers",className:Ut,children:"For managers"}),o.jsx(ze,{to:"/how-we-measure",className:Ut,children:"How we measure"}),o.jsx(ze,{to:"/contact",className:Ut,children:"Contact"}),o.jsx("a",{href:yf,target:"_blank",rel:"noreferrer noopener",className:Ut,children:"GitHub"}),o.jsx(ze,{to:"/privacy",className:Ut,children:"Privacy"}),o.jsx(ze,{to:"/cookies",className:Ut,children:"Cookies"}),o.jsx(ze,{to:"/terms",className:Ut,children:"Terms"}),ga()&&o.jsx("button",{type:"button",onClick:u,className:Ut,children:"Cookie settings"})]})]}),o.jsxs("p",{className:"mt-4 max-w-caption",children:[z," is a desktop experience today. A phone-friendly build is planned."]})]})}function et({children:u,wide:m=!1,className:c="text-secondary"}){return o.jsx("span",{className:`block font-mono uppercase ${m?"text-mono-label-wide":"text-mono-label"} ${c}`,children:u})}function Tf({n:u,word:m}){return o.jsxs("div",{className:"mb-6 font-mono text-mono-label uppercase text-secondary rail:mb-0 rail:pt-[10px]",children:[u&&o.jsxs("span",{className:"rail:block",children:[u,o.jsx("span",{className:"rail:hidden",children:" / "})]}),m]})}const _f={default:"py-section-y",lg:"py-section-y-lg",none:""},Pf={rule:"border-t border-rule",ink:"border-t border-ink",none:""};function Me({id:u,tone:m="paper",divider:c="rule",pad:S="default",className:b="",children:C}){return o.jsx("section",{id:u,className:`px-gutter ${_f[S]} ${Pf[c]} ${m==="alt"?"bg-paper-alt":""} ${b}`,children:C})}function He({rail:u,cols:m="two",className:c="",children:S}){return o.jsxs("div",{className:`grid items-start gap-grid-gutter ${m==="two"?"rail:grid-cols-rail":"rail:grid-cols-rail-1"} ${c}`,children:[u&&o.jsx(Tf,{...u}),S]})}const Ur="focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",Hr="transition-colors duration-hover ease-standard";function Jn({to:u,children:m,className:c=""}){return o.jsx(ze,{to:u,className:`inline-block bg-ink px-6 py-[15px] font-display text-[16px] font-semibold text-paper hover:bg-[#08080A] ${Hr} ${Ur} ${c}`,children:m})}function Af({to:u,children:m,className:c=""}){return o.jsx(ze,{to:u,className:`inline-block bg-signal-text px-6 py-[15px] font-display text-[16px] font-semibold text-paper hover:bg-[#A6301A] ${Hr} ${Ur} ${c}`,children:m})}function Zn({to:u,children:m,className:c=""}){return o.jsx(ze,{to:u,className:`inline-block border-b border-ink px-1.5 py-[15px] font-display text-[16px] font-medium text-ink hover:text-signal-text ${Hr} ${Ur} ${c}`,children:m})}function la({to:u,children:m,className:c=""}){return o.jsx(ze,{to:u,className:`inline-block border-b border-signal-fill pb-[3px] font-mono text-mono-nav text-ink hover:text-signal-text ${Hr} ${Ur} ${c}`,children:m})}function Ac({to:u,children:m,className:c=""}){return o.jsx(ze,{to:u,className:`border-b border-signal-fill text-ink hover:text-signal-text ${Hr} ${Ur} ${c}`,children:m})}function vt({moment:u,children:m}){return o.jsxs("p",{className:"mt-7 flex items-baseline gap-3.5 border-t border-rule pt-4 font-mono text-mono-nav text-secondary",children:[o.jsx("span",{"aria-hidden":"true",className:"text-signal-text",children:"—"}),o.jsxs("span",{children:[o.jsx("span",{className:"text-ink",children:u})," · ",m]})]})}function at({children:u}){return o.jsxs("li",{className:"flex gap-3.5 text-body-sm",children:[o.jsx("span",{"aria-hidden":"true",className:"pt-1.5 font-mono text-mono-caption text-signal-text",children:"—"}),o.jsx("span",{children:u})]})}function If(){const[u,m]=D.useState(!1);D.useEffect(()=>{if(ga())return m(xa()===null),df(b=>m(b===null))},[]);const c=D.useCallback(()=>{Ec("granted"),Vc(),m(!1)},[]),S=D.useCallback(()=>{Ec("denied"),va(),m(!1)},[]);return u?o.jsx("div",{role:"dialog","aria-modal":"false","aria-label":"Cookie choices",className:"fixed inset-x-0 bottom-0 z-50 border-t border-ink bg-paper",children:o.jsxs("div",{className:"mx-auto flex max-w-canvas flex-col gap-5 px-gutter py-5 rail:flex-row rail:items-center rail:justify-between",children:[o.jsxs("p",{className:"max-w-answer text-list",children:["We'd like to use Google Analytics to count page views and see which pages people find useful. It sets a cookie and shares your IP address with Google. Nothing loads unless you say yes, and the site works exactly the same either way."," ",o.jsx(Ac,{to:"/cookies",children:"Cookie policy"})," · ",o.jsx(Ac,{to:"/privacy",children:"Privacy"})]}),o.jsxs("div",{className:"flex shrink-0 gap-3",children:[o.jsx("button",{type:"button",onClick:S,className:`${Ic} border border-ink text-ink hover:bg-ink hover:text-paper`,children:"Decline"}),o.jsx("button",{type:"button",onClick:c,className:`${Ic} border border-ink bg-ink text-paper hover:bg-[#08080A]`,children:"Accept"})]})]})}):null}const Ic="px-5 py-2.5 font-display text-[15px] font-semibold transition-colors duration-hover ease-standard focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",Kc=D.createContext(null);function Rf(){const u=D.useContext(Kc);if(!u)throw new Error("useLightbox must be used within a LightboxProvider");return u}function Lf({children:u}){const[m,c]=D.useState(null),[S,b]=D.useState(0),[C,T]=D.useState(!1),q=D.useRef(null),L=D.useCallback($=>{c([$]),b(0),T(!1)},[]),ee=D.useCallback(($,B)=>{$.length!==0&&(c($),b((B%$.length+$.length)%$.length),T(!1))},[]),J=D.useCallback(()=>c(null),[]),G=(m==null?void 0:m.length)??0,V=G>1,pe=(m==null?void 0:m[S])??null,ce=D.useCallback($=>{T(!1),b(B=>G<=1?B:((B+$)%G+G)%G)},[G]);return D.useEffect(()=>{var Ne;if(!m)return;const $=he=>{he.key==="Escape"?J():V&&he.key==="ArrowRight"?(he.preventDefault(),ce(1)):V&&he.key==="ArrowLeft"&&(he.preventDefault(),ce(-1))};window.addEventListener("keydown",$);const B=document.body.style.overflow;return document.body.style.overflow="hidden",(Ne=q.current)==null||Ne.focus(),()=>{window.removeEventListener("keydown",$),document.body.style.overflow=B}},[m,J,V,ce]),o.jsxs(Kc.Provider,{value:{open:L,openGallery:ee},children:[u,pe&&o.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":pe.title??pe.alt,onClick:J,className:"fixed inset-0 z-[100] flex flex-col bg-ink/95",children:[o.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-3 sm:px-6 sm:py-4",children:[o.jsxs("span",{className:"flex min-w-0 items-center gap-2 font-mono text-mono-caption text-on-dark-secondary",children:[o.jsx("span",{className:"min-w-0 truncate",children:pe.title??z.toLowerCase()}),V&&o.jsxs("span",{className:"shrink-0 tabular-nums text-on-dark-tertiary","aria-live":"polite",children:[S+1," / ",G]})]}),o.jsxs("button",{ref:q,type:"button",onClick:J,"aria-label":"Close",className:"inline-flex items-center gap-1.5 border border-on-dark-secondary/40 px-3 py-1.5 font-mono text-mono-caption text-on-dark-body transition-colors duration-hover ease-standard hover:border-on-dark-primary hover:text-on-dark-primary focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-on-dark-primary",children:[o.jsx(zf,{className:"h-3.5 w-3.5"}),o.jsx("span",{className:"hidden sm:inline",children:"Close"}),o.jsx("span",{className:"sm:hidden",children:"Esc"})]})]}),o.jsxs("div",{className:`relative min-h-0 flex-1 overflow-auto px-3 pb-2 sm:px-6 ${C?"":"flex items-center justify-center"}`,children:[o.jsx("img",{src:pe.src,alt:pe.alt,onClick:$=>{$.stopPropagation(),V?ce(1):T(B=>!B)},style:C?{width:"min(1600px, 240vw)"}:void 0,className:C?"mx-auto block h-auto max-w-none cursor-zoom-out":`block max-h-full max-w-full ${V?"cursor-pointer":"cursor-zoom-in"}`}),V&&o.jsxs(o.Fragment,{children:[o.jsx("button",{type:"button","aria-label":"Previous screenshot",onClick:$=>{$.stopPropagation(),ce(-1)},className:"fixed left-2 top-1/2 z-[101] -translate-y-1/2 border border-on-dark-secondary/40 bg-ink p-2.5 text-on-dark-body transition-colors duration-hover ease-standard hover:border-on-dark-primary hover:text-on-dark-primary focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-on-dark-primary sm:left-4",children:o.jsx(Rc,{className:"h-5 w-5 rotate-180"})}),o.jsx("button",{type:"button","aria-label":"Next screenshot",onClick:$=>{$.stopPropagation(),ce(1)},className:"fixed right-2 top-1/2 z-[101] -translate-y-1/2 border border-on-dark-secondary/40 bg-ink p-2.5 text-on-dark-body transition-colors duration-hover ease-standard hover:border-on-dark-primary hover:text-on-dark-primary focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-on-dark-primary sm:right-4",children:o.jsx(Rc,{className:"h-5 w-5"})})]})]}),o.jsx("p",{className:"pointer-events-none px-4 pb-3 pt-1 text-center font-mono text-[11px] text-on-dark-tertiary",children:V?"Tap the image or use ‹ › / arrow keys for the next shot · tap outside or press Esc to close":`Tap the image to ${C?"fit it to the screen":"zoom in"} · tap outside or press Esc to close`})]})]})}function zf({className:u}){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",className:u,children:o.jsx("path",{d:"M18 6 6 18M6 6l12 12"})})}function Rc({className:u}){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",className:u,children:o.jsx("path",{d:"m9 6 6 6-6 6"})})}function $r({src:u,alt:m,caption:c,height:S,fit:b,note:C,strong:T=!1,className:q=""}){const{open:L}=Rf(),ee=()=>L({src:u,alt:m,title:c});return o.jsxs("div",{className:q,children:[o.jsxs("figure",{className:`border ${T?"border-rule-strong":"border-rule"}`,children:[o.jsxs("figcaption",{className:"flex items-center justify-between border-b border-rule px-4 py-[11px] font-mono text-mono-caption text-secondary",children:[o.jsx("span",{children:c}),o.jsx("button",{type:"button",onClick:ee,className:"text-signal-text transition-colors duration-hover ease-standard hover:text-ink focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",children:"Enlarge"})]}),o.jsx("button",{type:"button",onClick:ee,"aria-label":`Enlarge screenshot: ${m}`,className:"block w-full cursor-zoom-in focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ink",children:o.jsx("span",{style:{height:S},className:"block w-full overflow-hidden bg-paper",children:o.jsx("img",{src:u,alt:m,loading:"lazy",decoding:"async",className:`h-full w-full ${b==="cover"?"object-cover object-top":"object-contain"}`})})})]}),C&&o.jsx("p",{className:"mt-[18px] max-w-caption text-list text-muted",children:C})]})}function Xe({rail:u,tone:m="paper",divider:c="rule",label:S,heading:b,children:C,src:T,alt:q,caption:L,height:ee=620,fit:J="cover",note:G}){return o.jsxs(Me,{tone:m,divider:c,children:[o.jsx(He,{rail:u,cols:"one",children:o.jsxs("div",{children:[S&&o.jsx(et,{className:"mb-4 text-signal-text",children:S}),o.jsx("h2",{className:"mb-6 max-w-[30ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:b}),o.jsx("div",{className:"max-w-[68ch]",children:C})]})}),o.jsx($r,{src:T,alt:q,caption:L,height:ee,fit:J,note:G,strong:m==="alt",className:"mt-10"})]})}const Mf=2,Of=600;function Ff(u){const m=Math.floor(u/1e3),c=m%60;return`${Math.floor(m/60)}:${c<10?"0":""}${c}`}function Df(u,m){let c=0;for(let S=0;S<u.length;S+=1){const b=u[S];if(!b||m<b.startMs)break;c=S}return c}const Lc="focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ink";function Wf({src:u,poster:m,alt:c,caption:S,meta:b,width:C,height:T,cues:q,className:L=""}){const ee=D.useRef(null),J=D.useRef(0),[G,V]=D.useState(!1),[pe,ce]=D.useState(!1),[$,B]=D.useState(!1),[Ne,he]=D.useState(!1),[Pe,U]=D.useState(!1),[te,ke]=D.useState(0),[Oe,qe]=D.useState(!0);D.useEffect(()=>{V(!0);const Y=window.matchMedia("(prefers-reduced-motion: reduce)");ce(Y.matches);const Ee=ae=>ce(ae.matches);return Y.addEventListener("change",Ee),()=>Y.removeEventListener("change",Ee)},[]);const Re=G&&(!pe||$);D.useEffect(()=>{if(!Re)return;const Y=ee.current;Y&&Y.play().catch(()=>he(!0))},[Re]);const K=D.useCallback(()=>{B(!0),he(!1);const Y=ee.current;Y&&(Y.ended&&(Y.currentTime=0),U(!1),Y.play().catch(()=>he(!0)))},[]),Se=D.useCallback(Y=>{const Ee=ee.current;if(!Ee)return;const ae=Y/1e3;Ee.currentTime=ae,U(!1),Ee.play().catch(()=>he(!0)),J.current+=1;const ye=J.current;window.setTimeout(()=>{if(J.current!==ye)return;const N=ee.current;N&&(N.seekable.length===0||Math.abs(N.currentTime-ae)>Mf)&&qe(!1)},Of)},[]),fe=Re&&Oe,me=q[te];return o.jsx("div",{className:L,children:o.jsxs("div",{className:"grid gap-8 rail:grid-cols-[minmax(0,1fr)_280px] rail:items-start",children:[o.jsxs("figure",{className:"border border-rule",children:[o.jsxs("figcaption",{className:"flex items-center justify-between border-b border-rule px-4 py-[11px] font-mono text-mono-caption text-secondary",children:[o.jsx("span",{children:S}),o.jsx("span",{children:b})]}),o.jsxs("span",{style:{aspectRatio:`${C} / ${T}`},className:"relative block w-full overflow-hidden bg-paper",children:[Re?o.jsx("video",{ref:ee,src:u,poster:m,muted:!0,playsInline:!0,controls:!0,preload:"auto","aria-label":c,className:"h-full w-full object-cover",onTimeUpdate:Y=>ke(Df(q,Y.currentTarget.currentTime*1e3)),onPlaying:()=>{U(!1),he(!1)},onEnded:()=>U(!0)}):o.jsx("img",{src:m,alt:c,loading:"lazy",decoding:"async",className:"h-full w-full object-cover"}),G&&(Pe||!Re||Ne)&&o.jsx("span",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:o.jsx("button",{type:"button",onClick:K,className:`pointer-events-auto border border-ink bg-paper px-5 py-2.5 font-mono text-mono-nav text-ink transition-colors duration-hover ease-standard hover:bg-ink hover:text-paper ${Lc}`,children:Pe?"Replay the walkthrough":"Play the walkthrough"})})]})]}),o.jsxs("div",{children:[o.jsx(et,{className:"mb-4 text-secondary",children:"Chapters"}),o.jsx("p",{"aria-live":"polite",className:"sr-only",children:Re&&me?`Now showing: ${me.title}`:""}),o.jsx("ol",{className:"border-t border-rule",children:q.map((Y,Ee)=>{const ae=Re&&Ee===te,ye=Re&&!ae,N=o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"flex items-baseline justify-between gap-3",children:[o.jsx("span",{className:`font-mono text-mono-nav ${ae?"text-ink":"text-ink-body"}`,children:Y.title}),o.jsx("span",{className:"font-mono text-mono-caption tabular-nums text-secondary",children:Ff(Y.startMs)})]}),o.jsx("span",{className:`mt-1 block text-[13px] leading-[1.5] ${ye?"text-muted":"text-ink-body"}`,children:Y.text})]}),M=`block w-full border-b border-l-2 border-b-rule py-3 pl-3.5 pr-1 text-left ${ae?"border-l-signal-fill":"border-l-transparent"}`;return o.jsx("li",{children:fe?o.jsx("button",{type:"button",onClick:()=>Se(Y.startMs),"aria-current":ae?"true":void 0,className:`${M} transition-colors duration-hover ease-standard hover:bg-paper-alt ${Lc}`,children:N}):o.jsx("span",{className:M,"aria-current":ae?"true":void 0,children:N})},Y.id)})})]})]})})}const $f=[{id:"feed",startMs:0,endMs:4375,title:"Feed",text:"Every repository in one stream: pull requests, reviews, comments and builds."},{id:"timeline",startMs:4375,endMs:8875,title:"Timeline",text:"The same work on a clock. Who opened what, when a review landed, what has been sitting."},{id:"pr-detail",startMs:8875,endMs:13374,title:"One pull request",text:"Review standing, every bot that has looked at it, and whether it can land."},{id:"addressed",startMs:13374,endMs:18208,title:"Was it dealt with?",text:"A bot raised a concern and the branch moved on. This reads the diff since, and says what is still open."},{id:"bots",startMs:18208,endMs:23625,title:"Bots",text:"Every review bot: how much it says, how much your team acts on, and how often it overstated a finding."},{id:"reports",startMs:23625,endMs:28123,title:"Reports",text:"Throughput, lead time and review load, with people counted apart from automation."}],zc=["channel","group","bell","email","meeting","at","thread"],Uf=18,Xn=2,Hf="#2A2A2E",Xc=.16,Zc=1.6,qf=120,Mc=16,Bf=.002,Vf=.01,Gf=1-Math.pow(Vf/Xc,1/Zc),Yf=24301;function Qf(u){let m=u>>>0;return()=>(m=Math.imul(m,1664525)+1013904223>>>0,m/4294967296)}function Kf(){const u=D.useRef(null);return D.useEffect(()=>{const m=u.current;if(!m)return;const c=m.getContext("2d");if(!c)return;const S=Qf(Yf),b=[];let C=0,T=0,q=1,L=0,ee=0,J=!0,G=!0,V=!1;const pe=()=>{const K=Math.floor(S()*zc.length);return zc[K]??"bell"},ce=K=>{K.name=pe(),K.xf=S(),K.y=-(.06+S()*.5)*T-fa[K.name].rows*Xn},$=()=>{b.length=0;for(let K=0;K<Uf;K+=1){const Se=pe();b.push({name:Se,xf:S(),y:(S()*1.28-.28)*T})}},B=()=>{const K=Math.max(1,Math.round(m.clientWidth)),Se=Math.max(1,Math.round(m.clientHeight)),fe=Math.min(window.devicePixelRatio||1,2);if(K===C&&Se===T&&fe===q)return!1;const me=T;if(C=K,T=Se,q=fe,m.width=Math.round(K*fe),m.height=Math.round(Se*fe),c.setTransform(fe,0,0,fe,0,0),me>0){const Y=Se/me;for(const Ee of b)Ee.y*=Y}return!0},Ne=()=>{c.clearRect(0,0,C,T),c.fillStyle=Hf;for(const K of b){const Se=Math.min(1,Math.max(0,K.y/T)),fe=Xc*Math.pow(1-Se,Zc);if(fe<=Bf)continue;const me=fa[K.name],Y=Math.round(K.xf*Math.max(0,C-me.cols*Xn)),Ee=Math.round(K.y*q)/q;c.globalAlpha=fe;for(const ae of me.runs)c.fillRect(Y+ae.x*Xn,Ee+ae.y*Xn,ae.w*Xn,Xn)}c.globalAlpha=1},he=K=>{L=requestAnimationFrame(he);const Se=ee===0?0:Math.min((K-ee)/1e3,.1);ee=K;for(const fe of b){const me=Math.min(1,Math.max(0,fe.y/T)),Y=(1-me)*(1-me);fe.y+=(Mc+(qf-Mc)*Y)*Se,(fe.y>=T||me>=Gf)&&ce(fe)}Ne()},Pe=()=>{L!==0&&(cancelAnimationFrame(L),L=0)},U=()=>{L!==0||V||!J||!G||(ee=0,L=requestAnimationFrame(he))},te=window.matchMedia("(prefers-reduced-motion: reduce)");V=te.matches;const ke=K=>{V=K.matches,V?(Pe(),Ne()):U()},Oe=new IntersectionObserver(K=>{const Se=K[K.length-1];J=Se?Se.isIntersecting:!0,J?U():Pe()},{threshold:0}),qe=new ResizeObserver(()=>{B()&&Ne()}),Re=()=>{G=!document.hidden,G?U():Pe()};return B(),$(),Ne(),G=!document.hidden,te.addEventListener("change",ke),document.addEventListener("visibilitychange",Re),Oe.observe(m),qe.observe(m),U(),()=>{Pe(),Oe.disconnect(),qe.disconnect(),te.removeEventListener("change",ke),document.removeEventListener("visibilitychange",Re)}},[]),o.jsx("canvas",{ref:u,"aria-hidden":"true",className:"pointer-events-none absolute inset-0 z-0 h-full w-full select-none"})}const Xf=[{q:"What should I work on today?",free:"Pending: everything waiting on you or your workspace, across every repository, in six ranked tabs — the top five of each marked Do next.",pro:"Plan my day: a written headline, a line on what can wait, and a reason on each planned card. The order stays the free one."},{q:"Can I change what counts as my turn?",free:"Yes. Switch card types on or off, move your own work into My turn, set the order, choose how every tab ranks, and mute a repository or a workspace.",pro:"Everything free does. Your rules are never the paid part."},{q:"What happened on this pull request?",free:"Every thread triaged — untouched, replied, likely addressed, resolved. Blast radius, blockers, merge verdict.",pro:"A short written summary, a read on what a red build means, and a check on whether a comment was really addressed."},{q:"Can I act without leaving?",free:"Reply, resolve, approve, merge, merge-when-ready, update from trunk, resolve conflicts hunk by hunk.",pro:"Everything free does. Acting on a pull request is never the paid part."},{q:"Can Claude review or fix this?",free:"Yes, on your machine, on your own Claude: a review you tick and post, a chat on it, and a fix that is pushed only when you click.",pro:"Everything free does. The agents are never the paid part."},{q:"Which review bots are worth their seat?",free:"Detect every bot, name it, set its role and record what it costs — and an independent severity grade on every comment it leaves.",pro:"The per-bot scoreboard: keep / tune / noisy, dollars per comment your team acted on, over-calling as a weekly line."},{q:"How does that compare to other teams?",free:"—",pro:"Your bots placed against a 2,204-repository cohort, with a written refusal wherever the cohort is too thin to answer."},{q:"How is the team doing?",free:"Flow metrics for the workspace, activity and reach by repository, open pull requests and trunk health.",pro:"A stored report per sprint or month, compared like-for-like against the last one, with the coverage stated."},{q:"Is a repository about to bite us?",free:"Default-branch health across every repository, the checks failing on it, and the pull request that landed its latest commit.",pro:"Everything free does. Trunk health is never the paid part — it is the thing you need at the worst moment."},{q:"Where is the time actually going?",free:"—",pro:"Chronology: every open hour attributed to a reviewer, an author, or waiting to land. Nobody is named."},{q:"What do I take into a one-to-one?",free:"—",pro:"A report with a section per person you pick. Preparation, not a ranking — there is no leaderboard anywhere in it."},{q:"Can I keep the noise down?",free:"Bots hidden by default, notifications only for work that is yours, and a mute per repository or per workspace.",pro:"Everything free does, plus a Slack digest per workspace if you would rather read it there."},{q:"Where does it run?",free:`${cn} on your machine, or the hosted service. No repository limit, no user limit. Claude review and fix run on your machine only.`,pro:"The same two places. Pro unlocks on whichever one you already use."}];function qr(){return o.jsxs(o.Fragment,{children:[o.jsx(Me,{divider:"ink",pad:"none",className:"py-14",id:"pricing",children:o.jsx(He,{rail:{word:"Free vs Pro"},cols:"one",children:o.jsxs("div",{children:[o.jsx("h2",{className:"mb-6 max-w-[30ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"Free answers one pull request. Pro answers the fortnight."}),o.jsxs("p",{className:"mb-10 max-w-[62ch] text-pretty text-lede text-ink-soft",children:[z," is open core. The free tier is the product, not a trial — it has no repository limit, no user limit and no expiry, and every action you take on a pull request lives in it. Pro is what happens when you need the same truth one grain up: across repositories, across people, across a period."]}),o.jsxs("div",{className:"border-t border-ink",children:[o.jsxs("div",{className:"hidden gap-grid-gutter border-b border-rule-strong py-3 rail:grid rail:grid-cols-[1.1fr_1.3fr_1.3fr]",children:[o.jsx(et,{className:"text-secondary",children:"Question"}),o.jsx(et,{className:"text-secondary",children:"Free · open core"}),o.jsx(et,{className:"text-signal-text",children:"Pro · free for a month"})]}),Xf.map(u=>o.jsxs("div",{className:"grid gap-x-grid-gutter gap-y-2 border-b border-rule-hair py-[18px] rail:grid-cols-[1.1fr_1.3fr_1.3fr]",children:[o.jsx("p",{className:"font-display text-list font-semibold text-ink",children:u.q}),o.jsxs("div",{children:[o.jsx(et,{className:"mb-1 text-secondary rail:hidden",children:"Free"}),o.jsx("p",{className:"text-list text-ink-body",children:u.free})]}),o.jsxs("div",{children:[o.jsx(et,{className:"mb-1 text-signal-text rail:hidden",children:"Pro"}),o.jsx("p",{className:"text-list text-ink-body",children:u.pro})]})]},u.q))]}),o.jsx("p",{className:"mt-6 max-w-[62ch] font-mono text-mono-caption text-secondary",children:"Pro lists at $25 per user, and is free for a month to anyone who asks for it. A user is someone who signs in — bots never count, and there is no per-repository charge."}),o.jsxs("p",{className:"mt-2 max-w-[62ch] font-mono text-mono-caption text-secondary",children:["Review and fix run locally only, on your own Claude Code or Anthropic API key."," ",z," stores no key and charges nothing for it."]}),o.jsx($r,{src:"/shots/free-reports.png",alt:"The Reports pane on a free account: the flow metrics render in full, and the paid period-report panel below them is listed, badged and locked rather than hidden",caption:"limn · reports, free account",height:460,fit:"cover",className:"mt-10",note:"What a free account actually sees. The paid panes are listed and locked rather than hidden, so you can tell what you are not buying before you buy it — and the free metrics above them are the ones that moved here off another tab."})]})})}),o.jsx(Me,{divider:"none",pad:"lg",children:o.jsx(He,{rail:{word:"Start"},cols:"one",children:o.jsxs("div",{children:[o.jsx("h2",{className:"mb-5 max-w-[24ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2-major",children:"Start free. Every repository, nothing missed."}),o.jsx("p",{className:"mb-9 max-w-[56ch] text-pretty text-lede text-ink-soft",children:"Sign in with GitHub and the first repositories are on screen in a couple of minutes, or run the whole free tier on your own machine and keep the data there. For Pro, send a message — it is free for a month, for asking."}),o.jsxs("div",{className:"mb-5 flex flex-wrap items-center gap-3.5",children:[o.jsx(Jn,{to:"/api/auth/login",children:"Sign in with GitHub"}),o.jsx(Af,{to:"/contact?topic=pro",children:"Ask for a free month of Pro"})]}),o.jsxs("p",{className:"max-w-reassure font-mono text-mono-nav text-secondary",children:["Card payments are not switched on yet, so Pro is not sold from this page — it is given, a month at a time, to anyone who asks. No card, nothing to cancel. Or run the free tier locally: ",o.jsx("span",{className:"text-ink",children:cn})]})]})})})]})}const Oc=["CodeRabbit","Greptile","Copilot","Cursor","Qodo","Devin"],Zf=$f,Jf=[{n:"98%",d:"more PRs merged since AI-assisted coding took hold"},{n:"+91%",d:"longer those PRs now spend waiting in review"},{n:"6.9/10",d:"the measured relevance of the average bot review comment"},{n:"5",d:"vendors claiming #1 on the same code-review benchmark"}],ep=["Your day, planned across every repository — a red build, an unanswered review, a stale thread, a conflict — in six ranked tabs.","By your rules: what counts as your turn, what order it comes in, and which repositories may interrupt you.","And the top of it is finishable in place — reply, approve, merge, clear the conflict, without leaving the app."],tp=["Switch each kind of card on or off — review requests, @mentions, replies to you, new commits since you reviewed. A type you switch off leaves the counts and the notifications too.","Move your own red builds, merge conflicts and pull requests ready to land into My turn, and add a red default branch if you want it there.","Choose how every tab ranks — Balanced, Mine first, Oldest first or Quick wins — or set the three weights yourself.","Mute a repository or a whole workspace. Its cards stay on the board; they stop claiming your turn and stop notifying you."],np=["Throughput, lead time and reach per repository, with people counted apart from automation. Free.","A forwardable report per sprint, and an hour-by-hour account of who was holding each pull request.","And a keep / tune / noisy verdict on every review bot you pay for, priced per comment your team used."];function rp(){return Ht(dn("/")),o.jsxs(o.Fragment,{children:[o.jsxs("header",{className:"relative grid gap-16 overflow-hidden px-gutter pt-hero-y rail:grid-cols-hero",children:[o.jsx(Kf,{}),o.jsxs("div",{className:"relative z-10",children:[o.jsx(Qc,{name:"group",cell:4,fill:"#16161A",accent:"#C13A20",className:"mb-7"}),o.jsx(et,{wide:!0,className:"mb-[26px] text-secondary",children:"The multi-repo review layer"}),o.jsx("h1",{className:"mb-7 max-w-[22ch] text-pretty font-display text-hero-sm font-semibold text-ink type:text-hero",children:"Plan your day across every repository."}),o.jsxs("p",{className:"mb-[34px] max-w-lede text-pretty text-lede text-ink-soft",children:[z," opens on one board that answers what to work on today: review requests, replies, red builds, conflicts and pull requests ready to land, from every repository, ranked, with the next thing at the top. You decide what counts as your turn and in what order. It also measures what the review bots on top are worth. Free and open core. Run it on your machine and Claude reviews and fixes pull requests too, on your own Claude."]}),o.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3.5",children:[o.jsx(Jn,{to:"/api/auth/login",children:"Sign in with GitHub"}),o.jsx(Zn,{to:"/for-developers",children:"See it for developers"})]}),o.jsx("p",{className:"mb-11 max-w-reassure font-mono text-mono-nav text-secondary",children:"Or run it entirely on your machine — local mode uses your gh login and keeps no stored credentials."})]}),o.jsxs("div",{className:"relative z-10 rail:border-l rail:border-rule rail:pl-6 rail:pt-2",children:[o.jsx(et,{className:"mb-4 text-secondary",children:"Also reads"}),o.jsx("div",{className:"flex flex-wrap gap-x-6 gap-y-2 font-mono text-mono-row text-ink-body rail:flex-col rail:gap-0",children:Oc.map((u,m)=>o.jsx("div",{className:m===Oc.length-1?"":"rail:mb-2.5 rail:border-b rail:border-rule-hair rail:pb-[9px]",children:u},u))})]})]}),o.jsxs(Xe,{rail:{n:"01",word:"Your day"},tone:"alt",divider:"ink",heading:"Everything waiting, in the order to do it.",src:"/shots/pending-board.png",alt:"The Pending board across four repositories: ready-to-merge, your-turn and in-your-repos cards with their CI state, reach chips and merge actions",caption:"limn · pending",height:640,children:[o.jsxs("p",{className:"mb-6",children:["Pending is the first screen. Six tabs — My turn, Needs fixing, Waiting on review, Unanswered threads, Ready to land and Dependencies — across every repository in the workspace. Each tab is ranked, and its top five are marked"," ",o.jsx("span",{className:"text-ink",children:"Do next"}),". The actions sit on the cards: merge, merge when ready, update the branch, resolve the conflict, reply to the thread."]}),o.jsx("p",{className:"mb-6",children:"The order is arithmetic, and every card shows its working. By default three numbers are added up: how few steps the job is from landing (half the weight), how long it has sat (three tenths — four days scores that part in full, one day a fraction of it), and whether your name is on it, you maintain the repository, or neither (the last fifth). Conflicts and three or more unanswered threads push a job down; a change of three files or fewer pulls it up. Equal scores break on age, so the same data always comes back in the same order."}),o.jsxs("p",{className:"mb-6",children:["An approved pull request that can land sits at the top. The same one with nobody’s approval on it ranks ",o.jsx("em",{children:"below"})," an ordinary review request — deliberately, and after measuring: ranked the other way round, the head of the board filled with unreviewed dependency bumps."]}),o.jsx("p",{className:"mb-6",children:"A card exists only while you still owe something. Act, and it leaves on its own — there is nothing to tick off. One you can’t act on, you dismiss: it stays gone until something new happens on it, and a pull request with two jobs shows as one card."}),o.jsxs("p",{children:["No model decides any of it. The tabs and the order are free on every tier. The"," ",o.jsx("span",{className:"text-ink",children:"Plan my day"})," button in the corner is Pro: it writes a headline, a line on what can wait, and one line on each planned card saying why it comes now."]})]}),o.jsx(Me,{children:o.jsxs(He,{rail:{n:"02",word:"Your rules"},children:[o.jsxs("div",{children:[o.jsx("h2",{className:"mb-6 max-w-[26ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"You decide what counts as your turn."}),o.jsx("p",{className:"mb-6 max-w-[52ch] text-pretty",children:"The rules behind the board are settings, and they are free. Change them and the tabs, the counts and the notifications move together — and the board explains its order with the rules you set."}),o.jsx(la,{to:"/for-developers",children:"How the rules work →"})]}),o.jsx("ul",{className:"flex flex-col gap-3.5",children:tp.map(u=>o.jsx(at,{children:u},u))})]})}),o.jsxs(Me,{pad:"none",className:"py-14",children:[o.jsx(Wf,{src:"/demo/limn-walkthrough.mp4",poster:"/demo/limn-walkthrough-poster.jpg",alt:"A screen recording moving through six screens: the activity feed, the timeline, one pull request, the addressed check on a bot thread, the bot ROI table, and the period report",caption:`${z.toLowerCase()} · the walkthrough`,meta:"28 seconds · no sound",width:1770,height:996,cues:Zf}),o.jsx("p",{className:"mt-[18px] max-w-caption text-list text-muted",children:"A seeded eight-repository workspace, so the names and the numbers are invented. The software is not."})]}),o.jsx(Me,{divider:"ink",pad:"none",className:"py-14",children:o.jsx(He,{rail:{word:"The numbers"},cols:"one",children:o.jsxs("div",{children:[o.jsx("h2",{className:"mb-10 max-w-[30ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"More is shipping. It is waiting longer. And everyone claims first place."}),o.jsx("div",{className:"grid gap-x-grid-gutter gap-y-8 type:grid-cols-2 rail:grid-cols-4",children:Jf.map(u=>o.jsxs("div",{className:"border-t border-rule-strong pt-[18px]",children:[o.jsx("div",{className:"mb-2.5 font-display text-price font-semibold tracking-[-0.03em] text-ink",children:u.n}),o.jsx("p",{className:"text-list text-ink-body",children:u.d})]},u.n))}),o.jsx("p",{className:"mt-8 font-mono text-mono-caption text-secondary",children:"Sources: Faros AI, 10,000+ developers · Fatima et al., arXiv, April 2026 · the vendors’ own blogs, 2026."})]})})}),o.jsx(Me,{pad:"none",className:"py-14",children:o.jsx(He,{rail:{word:`Why ${z}`},cols:"one",children:o.jsxs("div",{children:[o.jsx("h2",{className:"mb-6 max-w-[26ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"Built for the engineers keeping up."}),o.jsx("p",{className:"mb-6 max-w-[62ch] text-pretty text-lede",children:"A review loop runs across whatever shape your code is in — one repository or twenty, a monorepo or a fleet of services. What changed is the volume moving through it. AI multiplied both halves at once: more pull requests, and far more commentary on each one."}),o.jsx("p",{className:"mb-6 max-w-answer font-serif text-pull-quote italic text-ink",children:"The pace isn’t coming back down. So the tools have to come up."}),o.jsxs("p",{className:"mb-6 max-w-[62ch] text-pretty",children:["To limn something is to bring it into enough light to see its shape — the word comes down from the Latin for ",o.jsx("em",{children:"illuminate"}),". That is the whole idea: complexity you can see is complexity you can manage. The churn stays out there; you get the calm layer above it."]}),o.jsxs("p",{className:"max-w-[62ch] text-pretty",children:["Which cuts both ways, and that is the part worth holding onto. A light shows you what is actually there. It does not invent what is not — so where the data will not carry a claim, ",z," says so in words instead of filling the gap with a number."]})]})})}),o.jsx(Me,{divider:"ink",tone:"alt",children:o.jsxs(He,{rail:{n:"03",word:"For you"},children:[o.jsxs("div",{children:[o.jsx("h3",{className:"mb-[18px] font-display text-h3 font-semibold text-ink",children:"If you write the code"}),o.jsxs("p",{className:"mb-6 max-w-[52ch] text-pretty",children:["Your day arrives out of order: a build to fix here, a review to answer there, six bot comments on the one you thought was done, a conflict that appeared overnight. ",z," plans it across every repository, by rules you set, and puts the next thing at the top."]}),o.jsx("ul",{className:"mb-8 flex flex-col gap-3.5",children:ep.map(u=>o.jsx(at,{children:u},u))}),o.jsx(la,{to:"/for-developers",children:"For developers →"})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-[18px] font-display text-h3 font-semibold text-ink",children:"If you run the team"}),o.jsxs("p",{className:"mb-6 max-w-[52ch] text-pretty",children:["Where the effort went, how long it waited, and what the review automation cost — counted the same way in every repository. ",z," measures the whole loop on your own data, and refuses the questions that data will not support."]}),o.jsx("ul",{className:"mb-8 flex flex-col gap-3.5",children:np.map(u=>o.jsx(at,{children:u},u))}),o.jsx(la,{to:"/for-managers",children:"For engineering managers →"})]})]})}),o.jsxs(Xe,{rail:{n:"04",word:"The week"},heading:"How the work actually moved.",src:"/shots/flow-metrics.png",alt:"Workspace flow metrics: throughput, lead time, time to a first human review and merge-time build health, with people counted apart from automation, above per-repository activity rows",caption:"limn · flow metrics",height:640,children:[o.jsx("p",{className:"mb-6",children:"Throughput, lead time, and how long a pull request waited for its first human review — across every repository at once, with people counted apart from automation, because a blended median describes no pull request anyone wrote."}),o.jsx("p",{children:"Free on every tier. Pro turns the same numbers into a stored report per sprint you can forward, and an hour-by-hour account of whether the waiting sat with a reviewer or with the author — with nobody named."})]}),o.jsxs(Xe,{rail:{n:"05",word:"The bots"},tone:"alt",heading:"And the automation stacked on top of it.",src:"/shots/bot-roi.png",alt:"The bot ROI panel: six review vendors with volume, acted-on rate, overdue threads and keep or tune verdicts, above charts of weekly volume, effectiveness and severity inflation",caption:"limn · bot roi",height:660,children:[o.jsxs("p",{className:"mb-6",children:["A team can be running two to six review vendors at once, and none of them reports on itself. ",z," grades every bot comment independently, with a purpose-trained classifier that, graded blind against a human expert, picked the same severity seven times in ten — where the vendors’ own badges managed fewer than five. Free, on every tier."]}),o.jsx("p",{children:"Pro turns those grades into a scoreboard: how much of what each vendor said your team acted on, what that came to per comment, how often it called something major that was not — and where all of it sits against a cohort of 2,204 repositories."})]}),o.jsx(Me,{children:o.jsx(He,{rail:{n:"06",word:"Local"},cols:"one",children:o.jsxs("div",{children:[o.jsx("h2",{className:"mb-6 max-w-[28ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"Or run the whole thing on your own machine."}),o.jsxs("p",{className:"mb-6 max-w-[62ch] text-pretty",children:["One command, your existing ",o.jsx("span",{className:"text-ink",children:"gh"})," login, a SQLite file on your disk. No hosted backend and no stored credentials. Claude review and fix run only here, on your own Claude Code or Anthropic API key; the hosted app has everything else."]}),o.jsx("p",{className:"max-w-[62ch] font-mono text-mono-row text-ink",children:cn})]})})}),o.jsx(qr,{})]})}const op=["A build went red on the branch you pushed before you logged off.","Someone answered a thread on a pull request you had already moved on from.","Two reviews are waiting on you in a repository you only maintain.","One of yours is ready to land and has been green since yesterday.","And a conflict appeared overnight on the one you most wanted to finish."];function Fc(){return Ht(dn("/for-developers")),o.jsxs(o.Fragment,{children:[o.jsxs("header",{className:"px-gutter pt-hero-y",children:[o.jsx(et,{wide:!0,className:"mb-[26px] text-secondary",children:"For developers"}),o.jsx("h1",{className:"mb-7 max-w-[20ch] text-pretty font-display text-hero-sm font-semibold text-ink type:text-hero",children:"Plan your day, by your own rules."}),o.jsxs("p",{className:"mb-[34px] max-w-lede text-pretty text-lede text-ink-soft",children:["A red build on one branch. Two reviews waiting on another. A reply on a thread you had moved on from, and a conflict that appeared overnight on the one that was ready to land. ",z," puts all of it on one board across every repository you work in, ranked, with what to do next at the top. You decide what counts as your turn and how it is ordered — and you finish the work without leaving the page. Claude reviews and fixes pull requests too, on your own Claude, free."]}),o.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3.5",children:[o.jsx(Jn,{to:"/api/auth/login",children:"Sign in with GitHub"}),o.jsx(Zn,{to:"/for-managers",children:"If you run the team →"})]}),o.jsxs("p",{className:"mb-11 max-w-reassure font-mono text-mono-nav text-secondary",children:["Everything in the next eight sections is free, with no repository limit. Run it on your own machine with ",o.jsx("span",{className:"text-ink",children:cn})," and it keeps no credentials at all. Review and fix run only there."]})]}),o.jsx(Me,{divider:"ink",children:o.jsx(He,{rail:{n:"01",word:"The day"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-[30px] max-w-[28ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2-major",children:"Your day arrives out of order."}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("p",{className:"mb-6",children:"At any moment five different jobs want five different things from you — a build to fix, a review to answer, a thread to reply to, a conflict to clear, one sitting green and ready to land. They are all open, they all have your name on them, and nothing puts them in a sequence."}),o.jsx("p",{className:"mb-6",children:"Spread that across six repositories — a reviewer on some, an author on others, a maintainer on a couple you rarely open — and layer three or four review bots reading every pull request on top. The volume is not the problem on its own. The problem is that none of it arrives sorted by how much it has to do with you, today."}),o.jsx("p",{children:"GitHub will tell you that something happened. It will not tell you what to do first."})]}),o.jsxs("div",{children:[o.jsx("ul",{className:"flex flex-col gap-3.5",children:op.map(u=>o.jsx(at,{children:u},u))}),o.jsx(vt,{moment:"Free, always",children:"everything in sections 01 to 08 is in the open-core tier."})]})]})]})})}),o.jsxs(Xe,{rail:{n:"02",word:"Pending"},tone:"alt",heading:"Your day, planned on one board.",src:"/shots/pending-board.png",alt:"The Pending board across four repositories: ready-to-merge, your-turn and in-your-repos cards, each with its CI state, file counts, reach chip and merge actions",caption:"limn · pending",height:640,children:[o.jsxs("p",{className:"mb-6",children:["Pending is the first screen. Six tabs — My turn, Needs fixing, Waiting on review, Unanswered threads, Ready to land and Dependencies — from every repository in the workspace. Each tab is ranked, and its top five are"," ",o.jsx("span",{className:"text-ink",children:"Do next"}),"."]}),o.jsxs("p",{className:"mb-6",children:["The ordering is code rather than a model: three numbers, added up. By default, half the weight is how close the job is to ",o.jsx("em",{children:"finished"})," — a two-file change outranks a forty-file one, and a conflict or three unanswered threads pushes a job down rather than up. Three tenths is how long it has been sitting, in fixed steps at one, two and four days. The last fifth is how directly it is tied to you: your name on it, a repository you maintain, or neither. Every card shows its working, and a"," ",o.jsx("span",{className:"text-ink",children:"How Pending works"})," guide explains the rest."]}),o.jsx("p",{className:"mb-6",children:"An approved pull request that can land comes out top. The same one with nobody’s approval on it ranks below a plain review request, deliberately: ranked the other way, the head of the board filled with unreviewed dependency bumps."}),o.jsx("p",{className:"mb-6",children:"A card exists only while you genuinely owe an action and have not taken it. There is nothing to tick off, because the list is worked out fresh on every read rather than stored: act, and the card leaves on its own. One you can’t act on, you dismiss — it stays gone until something new happens on it."}),o.jsxs("p",{className:"mb-6",children:["The labels are careful about what they claim."," ",o.jsx("span",{className:"text-ink",children:"Your turn"})," means the work is tied to you."," ",o.jsx("span",{className:"text-ink",children:"In your repos"})," means somebody opened something on ground you maintain — orbit, not ownership. A card will not tell you a stranger’s pull request is yours."]}),o.jsxs("p",{children:["The tabs and the order are free on every tier. The"," ",o.jsx("span",{className:"text-ink",children:"Plan my day"})," button in the corner is Pro: it adds the written sentences on top (§09)."]}),o.jsx(vt,{moment:"09:04",children:"sixty-one items across five repositories, and the first three are the ones you can finish before standup."})]}),o.jsx(Me,{children:o.jsx(He,{rail:{n:"03",word:"Your rules"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-6 max-w-[28ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"You decide what counts as your turn, and in what order."}),o.jsxs("p",{className:"mb-[30px] max-w-[62ch] text-pretty",children:["The rules behind the board are settings. The tabs, the counts and the notifications follow them, and the board explains its order with them. The"," ",o.jsx("span",{className:"text-ink",children:"Customise"})," link on My turn opens them."]}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"What counts"}),o.jsx("p",{className:"text-list text-ink-body",children:"Each kind of card has its own switch: review requests, @mentions, replies in threads you started, replies to your comments elsewhere, new commits since you reviewed, approvals and activity on your own pull requests. Switch one off and it leaves My turn, its counts and its notifications together. New pull requests nobody asked you about start off."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"What joins it"}),o.jsx("p",{className:"text-list text-ink-body",children:"Your own red builds, merge conflicts, pull requests ready to land and unanswered threads can move out of their own tabs into My turn. So can a red default branch, in the repositories you maintain or in all of them. Each of these starts off."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"In what order"}),o.jsxs("p",{className:"text-list text-ink-body",children:["Put My turn’s card types in the order you work through them. Then choose how every tab ranks: ",o.jsx("span",{className:"text-ink",children:"Balanced"}),","," ",o.jsx("span",{className:"text-ink",children:"Mine first"}),","," ",o.jsx("span",{className:"text-ink",children:"Oldest first"})," or"," ",o.jsx("span",{className:"text-ink",children:"Quick wins"})," — or set the three weights yourself."]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"What may interrupt you"}),o.jsxs("p",{className:"text-list text-ink-body",children:["Mute a repository, or a whole workspace. Its cards stay on the board, but they stop saying ",o.jsx("span",{className:"text-ink",children:"Your turn"})," and stop notifying you. Notifications only ever fire for work that is yours."]})]})]}),o.jsx(vt,{moment:"Free",children:"every one of these, on every tier, running locally or hosted."})]})})}),o.jsx(Me,{children:o.jsx(He,{rail:{n:"04",word:"Review and fix"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-6 max-w-[28ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"Claude reviews it and fixes it. On your own Claude, free."}),o.jsx("p",{className:"mb-[30px] max-w-[62ch] text-pretty",children:"Every pull request has a Claude tab. Claude reads the change and writes up what it finds; you decide what reaches GitHub."}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-3",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"Claude Review"}),o.jsx("p",{className:"text-list text-ink-body",children:"Findings on the change, each tied to a line. Tick the ones worth keeping and post them as one GitHub review. Paste in the story and it checks the change against it. Switch on auto review for a workspace and new pull requests are reviewed as they arrive."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"Ask Claude"}),o.jsx("p",{className:"text-list text-ink-body",children:"A chat on the review, and on each finding. Ask why a line was flagged, or whether it matters here. It reads the same code the review did."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"AI Fix"}),o.jsx("p",{className:"text-list text-ink-body",children:"Pick the review comments you want fixed. It edits a copy of the branch and shows you the diff. It pushes only when you click Push."})]})]}),o.jsxs("div",{className:"mt-10 grid gap-grid-gutter rail:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"Your Claude, not ours"}),o.jsxs("p",{className:"text-list text-ink-body",children:["It runs on your own Claude Code or Anthropic API key: the Claude Code session you are signed in to, or ",o.jsx("span",{className:"text-ink",children:"ANTHROPIC_API_KEY"}),"."," ",z," stores no key and charges nothing for it. The first time, it asks for a one-time download of about 110 MB. It runs on your machine, with"," ",o.jsx("span",{className:"text-ink",children:cn}),"."]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"What it can do"}),o.jsxs("ul",{className:"flex flex-col gap-3.5",children:[o.jsx(at,{children:"The reviewer reads the code. It cannot edit files, run commands or reach the web."}),o.jsx(at,{children:"The fixer edits files. It has no shell, so it builds and tests nothing."}),o.jsx(at,{children:"Nothing is posted or pushed until you press the button."})]})]})]}),o.jsx(vt,{moment:"09:07",children:"a review on the pull request you were about to approve; two findings posted, one fixed."})]})})}),o.jsxs(Xe,{rail:{n:"05",word:"Act in place"},tone:"alt",heading:"Reply, approve, merge — from the board.",src:"/shots/pr-detail.png",alt:"A pull request in detail: the merge verdict and its blockers, the reach chip, approve and merge controls, the bot triage grade and the review threads",caption:"limn · pull request",height:640,children:[o.jsxs("p",{className:"mb-6",children:["One verdict answers “can this land?” and the action sits on the same row. Merge, or arm ",o.jsx("span",{className:"text-ink",children:"merge when ready"})," and it lands the moment checks go green — pinned to the exact commit you looked at, so a new push disarms it rather than merging code you never saw."]}),o.jsxs("p",{className:"mb-6",children:["When GitHub refuses and will not say why, the pull request carries a ranked list of what is actually holding it, each line marked"," ",o.jsx("span",{className:"text-ink",children:"proven"})," or"," ",o.jsx("span",{className:"text-ink",children:"inferred"})," — because only some of it is knowable from what GitHub returns, and pretending otherwise is how a tool loses your trust."]}),o.jsx("p",{className:"mb-6",children:"Conflicts are resolved in the app, hunk by hunk: take a side, or edit the result yourself. Free, running locally or hosted."}),o.jsx("p",{children:"The header carries how far the change reaches — low, medium or high, with the reasons written out. It refuses rather than guesses: where GitHub truncated the file list it will assert “high” but never “low”, because a truncated list is always a floor."}),o.jsx(vt,{moment:"09:11",children:"two merged, one armed for when the build finishes, one conflict cleared."})]}),o.jsxs(Xe,{rail:{n:"06",word:"The threads"},heading:"Every review thread already triaged.",src:"/shots/pr-threads.png",alt:"A pull request's thread list: each thread carrying a derived state, the vendor that opened it and a severity badge",caption:"limn · threads",height:640,children:[o.jsxs("p",{className:"mb-6",children:["Each review thread carries a state worked out from the repository itself: resolved, replied but still open, untouched — or"," ",o.jsx("span",{className:"text-ink",children:"likely addressed"}),", which means a commit touched that file after the comment landed."]}),o.jsx("p",{className:"mb-6",children:"That last one is a heuristic and the interface says so wherever it appears. A rename or an unrelated edit can trip it. It is offered as a shortcut through forty bot threads, never as a verdict."}),o.jsx("p",{children:"Bot comments also arrive already graded for severity, by a classifier trained for this one job — free, and never the vendor’s own badge, which is stored to be shown and not to be believed."}),o.jsx(vt,{moment:"09:19",children:"fifteen threads on one pull request; three still need you, and one button clears the rest."})]}),o.jsxs(Xe,{rail:{n:"07",word:"The bots"},tone:"alt",heading:"And the bot comments, graded before you read them.",src:"/shots/severity-strip.png",alt:"What the bots are flagging across the workspace: total findings, the share graded high severity, the share that are nits, and the top categories",caption:"limn · what the bots are flagging",height:520,fit:"contain",children:[o.jsx("p",{className:"mb-6",children:"Every bot-written comment is graded for severity — nit, minor, major, critical — by a purpose-trained ModernBERT classifier, served as an int8 ONNX artifact. It runs on the CPU you already have: no GPU, no API call, no comment leaving the machine, and nothing metered. Its eight categories come from a separate deterministic pass, so a category is reproducible rather than sampled."}),o.jsxs("p",{className:"mb-6",children:["It is measured, not asserted. We hid every label a batch of real bot comments already carried and had them graded from scratch by a human expert. The model picked the same severity ",o.jsx("strong",{children:"seven times in ten"})," — which is exactly how often two human experts agreed with ",o.jsx("em",{children:"each other"})," on the same comments, so it is reading them about as well as the job allows. CodeRabbit’s own badge matched the expert fewer than five times in ten."]}),o.jsx("p",{className:"mb-6",children:"Which is why the vendor’s badge is stored and shown beside ours and never used as an input. Tuning towards agreement with it measurably moves the model away from ground truth, so the two are drawn apart rather than reconciled."}),o.jsx("p",{children:"Where two bots flagged the same lines, the pull request says so, so you read the finding once."}),o.jsx(vt,{moment:"Nothing auto-acts",children:"on a grade. Critical is under-recalled, so the product buckets major and critical together as “high” and leaves the decision with you."})]}),o.jsxs(Me,{children:[o.jsx(He,{rail:{n:"08",word:"Also free"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-[30px] max-w-[30ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"And the rest of it, still without paying."}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-3",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"The stream"}),o.jsx("p",{className:"text-list text-ink-body",children:"One chronological feed across every repository in the workspace. Automated accounts are left out until you ask for them, with lenses for red builds and for the kinds of pull-request event you care about."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"Search and the timeline"}),o.jsx("p",{className:"text-list text-ink-body",children:"Full-text search over titles, bodies and comments in every repository you track, and a timeline that plots a fortnight of work per person per repository so a catch-up is one picture."})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"mb-3 font-display text-h4 font-semibold text-ink",children:"Trunk health"}),o.jsx("p",{className:"text-list text-ink-body",children:"Whether each repository’s default branch is green, the checks that are failing on it, and what landed there last, for every repository in the workspace."})]})]})]})}),o.jsx($r,{src:"/shots/feed.png",alt:"The cross-repository activity feed: one chronological stream of opens, reviews, merges and comments across every repository in the workspace",caption:"limn · feed",height:520,fit:"cover",className:"mt-10"})]}),o.jsx(Me,{divider:"ink",tone:"alt",children:o.jsxs(He,{rail:{n:"09",word:"Pro"},children:[o.jsxs("div",{children:[o.jsx(et,{className:"mb-4 text-signal-text",children:"Pro · $25 per user"}),o.jsx("h2",{className:"mb-6 max-w-[26ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"The reading, when the list gets long."}),o.jsx("p",{className:"mb-6 max-w-[58ch] text-pretty",children:"Pro does not unlock an action. Everything you can do to a pull request, Claude’s review and fix included, and every rule behind Pending, you already get for nothing, and that is deliberate — a tool that held back the merge button would be holding your work hostage."}),o.jsxs("p",{className:"mb-6 max-w-[58ch] text-pretty",children:["What it adds is writing. On Pending, ",o.jsx("span",{className:"text-ink",children:"Plan my day"})," ","writes a headline for the day, a line on what can wait, and one line on each planned card saying why it comes now — it never changes the order. A short summary at the top of a long pull request. A read on what a red build actually broke, rather than a link to a log. A check on whether a review comment was really addressed, judged from the commits since the thread started rather than from whether somebody clicked resolve."]}),o.jsx("p",{className:"max-w-[58ch] text-pretty",children:"On a quiet week you will not miss it. On the week you come back to two hundred threads, it is the difference between reading them and triaging them."})]}),o.jsx($r,{src:"/shots/pending-card.png",alt:"A single Pending card showing its kind, the review standing, the merge verdict and the actions available on it",caption:"limn · one card",height:300,fit:"contain",strong:!0,note:"Free ranks the list. Pro writes the reason on it."})]})}),o.jsx(qr,{})]})}const ip=["Where is the work actually happening across the repositories I own?","What is stuck right now, and is it stuck on a reviewer or on the author?","How much of the review load is people, and how much is automation?","Which of the bots we pay for is earning its seat?","What do I put in front of a director on Friday without writing it by hand?"];function Wr(){return Ht(dn("/for-managers")),o.jsxs(o.Fragment,{children:[o.jsxs("header",{className:"px-gutter pt-hero-y",children:[o.jsx(et,{wide:!0,className:"mb-[26px] text-secondary",children:"For engineering managers"}),o.jsx("h1",{className:"mb-7 max-w-[20ch] text-pretty font-display text-hero-sm font-semibold text-ink type:text-hero",children:"Six repositories, one answer."}),o.jsxs("p",{className:"mb-[34px] max-w-lede text-pretty text-lede text-ink-soft",children:[z," lights up what a fortnight of work across every repository you own actually came to — where it happened, how long it waited, and who was holding it — and then what the review bots layered on top cost and returned. It shows what the data can carry and refuses the rest, which is most of what this category sells."]}),o.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3.5",children:[o.jsx(Jn,{to:"/api/auth/login",children:"Sign in with GitHub"}),o.jsx(Zn,{to:"/for-developers",children:"If you write the code →"})]}),o.jsxs("p",{className:"mb-11 max-w-reassure font-mono text-mono-nav text-secondary",children:["Sections 02 to 05 are free on every tier. Run the whole free product on your own machine with ",o.jsx("span",{className:"text-ink",children:cn}),"."]})]}),o.jsx(Me,{divider:"ink",children:o.jsx(He,{rail:{n:"01",word:"The questions"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-[30px] max-w-[30ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2-major",children:"Five questions, and one place that answers them."}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("p",{className:"mb-6",children:"Where is the effort going, what is stuck, how long are people waiting. Answering those across a set of repositories means counting the same things the same way in each of them — and then separating what people did from what automation did, because agents now author a real share of the pull requests and several vendors comment on every one."}),o.jsxs("p",{className:"mb-6",children:["The questions beside this are the ones actually asked in a staff meeting."," ",z," answers each with a stated population and a stated window, or says why it cannot."]}),o.jsx("p",{children:"Your team plans its day on the free Pending board — everything waiting on them or on the workspace, in six ranked tabs, by rules each person sets. This page is the same work one grain up: the fortnight, not the morning."})]}),o.jsxs("div",{children:[o.jsx("ul",{className:"flex flex-col gap-3.5",children:ip.map(u=>o.jsx(at,{children:u},u))}),o.jsx(vt,{moment:"Never",children:"a developer leaderboard. There is no such screen in the product."})]})]})]})})}),o.jsxs(Xe,{rail:{n:"02",word:"Free"},tone:"alt",heading:"The state of play, at no charge.",src:"/shots/flow-metrics.png",alt:"Workspace flow metrics — throughput, lead time, time to a first human review and merge-time build health — with people counted apart from automation, above per-repository activity rows",caption:"limn · flow metrics",height:640,children:[o.jsx("p",{className:"mb-6",children:"Throughput, lead time, time to a first human review and merge-time build health for the whole workspace — with people counted apart from automation, because a blended median describes no pull request anyone wrote."}),o.jsx("p",{className:"mb-6",children:"Time to a first human review is the number most worth holding. It is the part of the wait that is entirely yours to spend, it sits ahead of everything else in the queue, and no bot approval is allowed to count towards it."}),o.jsx("p",{children:"A repository added part-way through a window is marked rather than pro-rated, and where a pull request’s size was never observed it says “size unknown” rather than counting it as zero."}),o.jsx(vt,{moment:"Free, on every tier",children:"this whole section, and the two that follow it."})]}),o.jsxs(Xe,{rail:{n:"03",word:"Per repository"},heading:"Which repository is carrying the fortnight.",src:"/shots/repo-rows.png",alt:"Where the work is happening: pull requests opened per repository with people stacked separately from automation, beside lines changed per repository",caption:"limn · repository activity",height:560,fit:"contain",children:[o.jsx("p",{className:"mb-6",children:"Two columns, two scales, two origins. A bar’s length is a ratio within its own column and never a number you can read across — the two measures are counted in different units, and putting them on one axis would invent a comparison."}),o.jsx("p",{className:"mb-6",children:"Pull requests opened splits people from automation in the bar itself, so you can see which repositories the agents are working in without doing arithmetic."}),o.jsx("p",{children:"The repository name is written out in full and wraps. The rotated, truncated axis label it replaced rendered six of seven real repositories as “…tric-backend”."})]}),o.jsx(Me,{tone:"alt",children:o.jsxs(He,{rail:{n:"04",word:"Reach"},children:[o.jsxs("div",{children:[o.jsx("h2",{className:"mb-6 max-w-[26ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"And how much of it could break something."}),o.jsx("p",{className:"mb-6 max-w-[58ch] text-pretty",children:"The open pull requests in each repository, split by how far a change could reach — worked out from what the diff touches: migrations, schemas, interface definitions, infrastructure, and whether files that usually move together are missing from it."}),o.jsx("p",{className:"max-w-[58ch] text-pretty",children:"It is a snapshot of right now rather than a window, and it says so. Drafts are included, and the draft count is disclosed, because the tile above it excludes them and two numbers that disagree need to explain themselves."})]}),o.jsx($r,{src:"/shots/reach.png",alt:"Reach by repository: open pull requests per repository split into low, medium and high reach, with two repositories reporting no reading rather than a zero",caption:"limn · reach",height:420,fit:"contain",strong:!0,note:"Two repositories report no reading rather than a zero. The co-change index only exists where the history supports one, and a zero there would read as a clean bill of health."})]})}),o.jsxs(Xe,{rail:{n:"05",word:"Your bots"},heading:"Find every bot. Name it. Price it. Free.",src:"/shots/bot-settings.png",alt:"The bot settings table: every detected automated account with its vendor, its role, the confidence behind the call and the monthly price you typed in",caption:"limn · bot settings",height:600,children:[o.jsxs("p",{className:"mb-6",children:[z," detects every automated account touching your repositories and separates the review vendors from the dependency bumps, the quality gates, the release automation and the agents that write code — and lets you correct any of it by hand, with your judgement winning in both directions."]}),o.jsx("p",{className:"mb-6",children:"That split is what makes the human numbers above trustworthy. A merged dependency bump and a merged feature are both “a merge” until something tells them apart, and on real data the bumps alone dragged a reported median pull-request size from 142 lines to 68."}),o.jsx("p",{children:"Type in what each one costs a month and the figure is stored per workspace. The grade on every bot comment is free too — a purpose-trained ModernBERT classifier, served as int8 ONNX on ordinary CPU, which — graded blind against a human expert — picked the same severity seven times in ten, where the vendor’s own badge managed fewer than five. The ruler is never the paid part."})]}),o.jsxs(Xe,{rail:{n:"06",word:"Pro"},tone:"alt",divider:"ink",label:"Pro · $25 per user",heading:"A report per sprint, that you can forward.",src:"/shots/period-report.png",alt:"A stored sprint report: the effort-versus-automation split, the biggest movers, and fifteen metrics each with this period, the prior period, the change and a forecast column",caption:"limn · period report",height:680,children:[o.jsx("p",{className:"mb-6",children:"A stored artifact for each completed sprint or calendar month — fifteen metrics, a like-for-like comparison against the previous period, the biggest movers, and a short written summary. Every event in it is timestamped inside the window at both ends, so the document stays reproducible after you send it."}),o.jsxs("p",{className:"mb-6",children:["The comparison is recomputed over the repositories tracked in ",o.jsx("em",{children:"both"})," periods and says so on the row. Otherwise the delta would be measuring which repositories you onboarded rather than what the team did — and the headline figure and the change would be two different populations wearing one number."]}),o.jsx("p",{children:"The forecast refuses at calendar-month grain outright, because months run 28 to 31 days and a trend line fitted through them reads February as a dip every year."})]}),o.jsxs(Xe,{rail:{n:"07",word:"Pro"},heading:"Where the waiting happens — without naming anyone.",src:"/shots/chronology.png",alt:"The Chronology panel: reviewer, author and landing courts with their share and their magnitude, plus the per-repository rows underneath",caption:"limn · chronology",height:620,note:"Sixty-six merged pull requests a person actually worked on. The never-human-touched population is reported on its own, never blended in.",children:[o.jsx("p",{className:"mb-6",children:"Every hour a pull request was open belongs to somebody: a reviewer who has not looked, an author who owes a response, or nobody — approved and waiting to land. Chronology attributes all of them and reports the split per repository."}),o.jsxs("p",{className:"mb-6",children:["A bot action never moves the ball, and pull requests no person ever touched are excluded and reported separately — on real data that is 46% of merges, and folding them in would report a reviewer problem that is an automation fact. It speaks up only when a court is both lopsided ",o.jsx("em",{children:"and"})," slow, because a share without a magnitude invents a crisis in a healthy repository."]}),o.jsx("p",{children:"No person is named anywhere in it, and the server sends no actor ids at all — that is structural, not a setting. The People report, for one-to-ones, is the opposite by design: you pick who, the sections are alphabetical, and there is no ranking and no comparison table in it."})]}),o.jsxs(Xe,{rail:{n:"08",word:"Pro"},tone:"alt",heading:"What the bots cost, and what they returned.",src:"/shots/bot-roi.png",alt:"The bot ROI panel: six review vendors with thread volume, acted-on rate, overdue counts, time to address and keep or tune verdicts, above charts of weekly volume, effectiveness and severity inflation",caption:"limn · bot roi",height:660,children:[o.jsx("p",{className:"mb-6",children:"A keep, tune or noisy verdict per vendor, built from how much of what it said your team acted on — and dollars per acted-on comment, divided by one stated calendar month at both ends, with both halves of the division printed on the card."}),o.jsx("p",{className:"mb-6",children:"Beside it, over-calling as a weekly line: how often a vendor badged something major that our model read as minor. A bot that badges nothing is named and omitted rather than drawn as a zero."}),o.jsx("p",{children:"It refuses where it should. A repository younger than the window, a reviewer with nothing acted on, or fewer than ten acted-on comments each withhold the per-comment figure on their own, while the honest counts still render."}),o.jsx(vt,{moment:"The receipt",children:"488 bot threads in a fortnight, 62% acted on, six vendors, one of them worth dropping."})]}),o.jsxs(Xe,{rail:{n:"09",word:"Pro"},heading:"And how that compares to everyone else.",src:"/shots/benchmark.png",alt:"The peer benchmark panel placing each vendor against a cohort of repositories, with per-metric percentiles carrying their cohort size and written refusals where the cohort is too thin",caption:"limn · benchmark",height:620,children:[o.jsx("p",{className:"mb-6",children:"Your vendors placed against a cohort of 2,204 repositories, banded by how busy a repository is, so a quiet service is not compared against a monorepo. Every percentile carries the number of repositories behind it and which band it sat in."}),o.jsx("p",{children:"Where the cohort is too thin to answer, it says so in words — there are fourteen distinct refusal sentences in this panel, and they are the feature. A percentile drawn from four repositories is a number that will move on its own next month."})]}),o.jsx(qr,{})]})}const sp=["The severity badge on every bot comment, wherever you read it.","The “needs a look” counts on a pull request, so a wall of forty threads has a top.","The keep / tune / noisy verdict on each vendor, and the over-calling line beside it."],ap=["Where each of your bots sits against the same bot running in comparable repositories.","What a typical team gets out of that vendor, so your own rate has something to mean.","A written refusal wherever the comparison would not be honest."];function Dc(){return Ht(dn("/how-we-measure")),o.jsxs(o.Fragment,{children:[o.jsxs("header",{className:"px-gutter pt-hero-y",children:[o.jsx(et,{wide:!0,className:"mb-[26px] text-secondary",children:"How we measure"}),o.jsx("h1",{className:"mb-7 max-w-[20ch] text-pretty font-display text-hero-sm font-semibold text-ink type:text-hero",children:"Two models. One job each."}),o.jsxs("p",{className:"mb-[34px] max-w-lede text-pretty text-lede text-ink-soft",children:["Almost everything ",z," shows you is arithmetic — counted, not predicted. Two questions resist counting, and each has a model of its own built for it: how serious is this comment, and is that good compared to everybody else?"]}),o.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3.5",children:[o.jsx(Jn,{to:"/api/auth/login",children:"Sign in with GitHub"}),o.jsx(Zn,{to:"/for-managers",children:"See what it produces →"})]}),o.jsx("p",{className:"mb-11 max-w-reassure font-mono text-mono-nav text-secondary",children:"Both are built and run by us. Neither sends your code or your comments anywhere."})]}),o.jsxs(Xe,{rail:{n:"01",word:"The grader"},divider:"ink",heading:"How serious is this comment?",src:"/shots/severity-findings.png",alt:"The model's grades on real bot comments, beside a grid showing where the model and the vendor's own badge agreed and where they did not",caption:"limn · the grade, and the disagreement",height:640,children:[o.jsx("p",{className:"mb-6",children:"A review bot leaves forty comments on a pull request. Two of them will change whether the code works. The rest are preferences, tidy-ups and things somebody already knew. Nothing in the comments themselves tells you which is which — and the vendor’s own labels are marking their own homework."}),o.jsx("p",{className:"mb-6",children:"So the first model reads each comment and says how serious it is: a nit, something minor, something major, or something critical. It is the same judgement a senior engineer makes in a second and cannot make four hundred times a week."}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"How it was built"}),o.jsx("p",{className:"mb-6",children:"We collected millions of real review-bot comments from public repositories on GitHub — every major vendor, across projects of every size — and taught the model on those rather than on anything invented. Under the hood it is a fine-tuned ModernBERT, which is a language model small enough to run on the ordinary processor in a laptop or a server: no graphics card, no cloud, nothing sent out, and nothing metered."}),o.jsx("p",{className:"mb-6",children:"It does one thing, and that is the point. It is not a general assistant being asked nicely to have an opinion; it was trained for this single question and does nothing else."}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"How we know it works"}),o.jsx("p",{className:"mb-6",children:"We took a batch of real bot comments, hid every label they already carried, and had them graded from scratch by a human expert. Then we compared."}),o.jsxs("p",{className:"mb-6",children:["The model chose the same severity as the expert"," ",o.jsx("strong",{children:"seven times in ten"}),". To know whether that is good, we needed something to compare it against — so we checked how often two human experts agreed with ",o.jsx("em",{children:"each other"})," on the same comments. Also seven times in ten. The model is reading these comments about as well as the question can be answered."]}),o.jsx("p",{children:"On those same comments, CodeRabbit’s own severity labels matched the expert fewer than five times in ten. That gap is the whole reason we grade independently instead of passing the vendor’s label through."}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"What it feeds"}),o.jsx("ul",{className:"flex flex-col gap-3.5",children:sp.map(u=>o.jsx(at,{children:u},u))}),o.jsx(vt,{moment:"Free on every tier",children:"the grade, everywhere it appears. The ruler is never the paid part."})]}),o.jsxs(Xe,{rail:{n:"02",word:"The benchmark"},tone:"alt",heading:"And is that good, or normal?",src:"/shots/benchmark.png",alt:"The peer benchmark placing each vendor against comparable repositories, with written refusals where the comparison would not be honest",caption:"limn · the comparison",height:620,children:[o.jsx("p",{className:"mb-6",children:"Say your team acts on half of what CodeRabbit tells it. Is that good? There is no way to know from inside your own repositories. Half might be excellent. Half might mean the bot is badly configured and everyone has quietly started ignoring it."}),o.jsxs("p",{className:"mb-6",children:["The second model answers that by building the missing half of the comparison: what the same bot does in ",o.jsx("em",{children:"other people’s"})," repositories."]}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"How it was built"}),o.jsxs("p",{className:"mb-6",children:["Every public action on GitHub is published as a public event stream. We read it to find repositories running each review vendor, drew a sample of"," ",o.jsx("strong",{children:"2,204 of them"})," across seven vendors, and then visited each one to collect what actually happened: how much the bot said, how much of it people replied to, resolved, or left sitting."]}),o.jsx("p",{className:"mb-6",children:"Repositories are then grouped with others of a similar size and pace, because a quiet internal service and a busy monorepo are not the same test. Your repository is placed against its own group, never against the average of all of them."}),o.jsx("p",{children:"Which repositories to sample was decided in code, with a fixed seed and a written record of every choice, so the cohort is reproducible rather than hand-picked. It is rebuilt as the corpus grows, and the page tells you how old the current one is."}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"How we know it works"}),o.jsx("p",{className:"mb-6",children:"By refusing. Some groups have plenty of comparable repositories behind them and some have a handful, and a comparison drawn from a handful is a number that will move on its own next month. Where a group is too thin, the panel says so in words instead of printing a figure."}),o.jsxs("p",{children:["There are fourteen different ways it can decline to answer, and each one names which comparison it is declining and why. Every figure it ",o.jsx("em",{children:"does"})," print carries how many repositories are behind it and which group they were."]}),o.jsx("h3",{className:"mb-3 mt-10 font-display text-h4 font-semibold text-ink",children:"What it feeds"}),o.jsx("ul",{className:"flex flex-col gap-3.5",children:ap.map(u=>o.jsx(at,{children:u},u))}),o.jsx(vt,{moment:"Pro",children:"the comparison. The independent grade underneath it stays free."})]}),o.jsx(Me,{divider:"ink",children:o.jsx(He,{rail:{n:"03",word:"And nowhere else"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-[30px] max-w-[32ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2-major",children:"Everything else here is counting, and counting is better at it."}),o.jsxs("div",{className:"grid gap-grid-gutter rail:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx("p",{className:"mb-6",children:"Two models, on two questions, and that is the end of the list. How many pull requests merged, how long they waited, whose turn it is, what is stalled, what a change touches, who was holding it — all of that is arithmetic over your own data. It is exact, it is reproducible, and you can check it."}),o.jsxs("p",{children:["A model would make every one of those ",o.jsx("em",{children:"worse"}),". It would turn a number you can verify into an estimate you have to trust, and estimates are how dashboards stop being believed."]})]}),o.jsxs("div",{children:[o.jsxs("p",{className:"mb-6",children:["There is a third place ",z," uses AI, and it is separate from both models on this page: writing. Short summaries — a paragraph on a long pull request, a read on a red build, the reason beside an item in your queue — and, on your own machine, Claude’s review of a pull request and its fix for the comments you pick. Those are language, not measurement, and they are clearly marked wherever they appear."]}),o.jsx("p",{children:"No number on any screen comes from them, and nothing in the product acts on a model’s output on its own. A grade changes what a list is sorted by. It never resolves a thread, merges a pull request or closes anything. A review is posted, and a fix pushed, only when you press the button."})]})]})]})})}),o.jsx(qr,{})]})}const Wc=[{value:"pro_trial",label:"Start a free month of Pro"},{value:"question",label:"A question about the product"},{value:"problem",label:"Something is broken"},{value:"other",label:"Something else"}],ii="focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",ri=`w-full border-b border-rule-strong bg-transparent py-2.5 font-display text-body-sm text-ink placeholder:text-secondary hover:border-ink focus:border-ink transition-colors duration-hover ease-standard ${ii}`;function oi({id:u,label:m,hint:c,children:S}){return o.jsxs("div",{className:"mb-7",children:[o.jsx("label",{htmlFor:u,className:"mb-2 block",children:o.jsx(et,{children:m})}),S,c&&o.jsx("p",{className:"mt-2 font-mono text-mono-caption text-secondary",children:c})]})}function lp(){const[u,m]=D.useState("checking"),[c,S]=D.useState(""),[b,C]=D.useState("idle"),[T,q]=D.useState(""),[L,ee]=D.useState(""),[J,G]=D.useState(""),[V,pe]=D.useState(""),[ce,$]=D.useState(""),[B,Ne]=D.useState("pro_trial");D.useEffect(()=>{const te=new URLSearchParams(window.location.search).get("topic");te==="pro"?Ne("pro_trial"):te&&Wc.some(ke=>ke.value===te)&&Ne(te)},[]),D.useEffect(()=>{let U=!0;return fetch("/api/contact/ticket",{headers:{accept:"application/json"}}).then(async te=>{if(!te.ok)throw new Error(String(te.status));return await te.json()}).then(te=>{U&&(typeof te.ticket=="string"&&te.ticket!==""?(S(te.ticket),m("ready")):m("unavailable"))}).catch(()=>{U&&m("unavailable")}),()=>{U=!1}},[]);const he=D.useCallback(async U=>{if(U.preventDefault(),b!=="sending"){C("sending"),q("");try{const te=await fetch("/api/contact",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:L,email:J,topic:B,message:V,ticket:c,website:ce})});if(te.ok){C("sent");return}const ke=await te.json().catch(()=>({}));q(ke.message??(te.status===429?"That is a few messages in a short time. Try again in a little while.":"That did not send. Please try again in a minute.")),C("idle")}catch{q("That did not send — check your connection and try again."),C("idle")}}},[J,V,L,b,c,B,ce]);if(b==="sent")return o.jsxs("div",{className:"max-w-answer border-t border-ink pt-8",children:[o.jsx("h2",{className:"mb-4 font-display text-h3 font-semibold text-ink",children:"That’s with us."}),o.jsxs("p",{className:"mb-2 text-body-sm text-ink-body",children:["You’ll get a reply at ",o.jsx("span",{className:"text-ink",children:J}),", usually the same day."]}),o.jsx("p",{className:"font-mono text-mono-caption text-secondary",children:"If you asked for a Pro month, the reply carries the details of how it is switched on for your account."})]});if(u==="unavailable")return o.jsxs("div",{className:"max-w-answer border-t border-ink pt-8",children:[o.jsx("h2",{className:"mb-4 font-display text-h3 font-semibold text-ink",children:"The form isn’t taking messages right now."}),o.jsxs("p",{className:"text-body-sm text-ink-body",children:["Rather than accept something it cannot deliver, it says so. Open an issue on"," ",o.jsx("a",{href:"https://github.com/alexwakeman/pierre-review/issues",target:"_blank",rel:"noreferrer noopener",className:`border-b border-signal-fill text-ink hover:text-signal-text ${ii}`,children:"GitHub"})," ","and it will reach the same person."]})]});const Pe=b==="sending"||u==="checking";return o.jsxs("form",{onSubmit:he,className:"max-w-answer border-t border-ink pt-8",noValidate:!1,children:[o.jsx(oi,{id:"contact-topic",label:"What is this about",children:o.jsx("select",{id:"contact-topic",value:B,onChange:U=>Ne(U.target.value),className:`${ri} appearance-none`,children:Wc.map(U=>o.jsx("option",{value:U.value,children:U.label},U.value))})}),o.jsx(oi,{id:"contact-name",label:"Your name",children:o.jsx("input",{id:"contact-name",name:"name",type:"text",required:!0,maxLength:120,autoComplete:"name",value:L,onChange:U=>ee(U.target.value),className:ri})}),o.jsx(oi,{id:"contact-email",label:"Email",hint:"Used to reply to you, and for nothing else. It is not added to a list.",children:o.jsx("input",{id:"contact-email",name:"email",type:"email",required:!0,maxLength:254,autoComplete:"email",value:J,onChange:U=>G(U.target.value),className:ri})}),o.jsx(oi,{id:"contact-message",label:"Message",hint:"How many repositories, and which review bots you run, is the useful part — it is usually what the reply turns on.",children:o.jsx("textarea",{id:"contact-message",name:"message",required:!0,rows:6,maxLength:2500,value:V,onChange:U=>pe(U.target.value),className:`${ri} resize-y`})}),o.jsxs("div",{"aria-hidden":"true",className:"absolute left-[-9999px] top-auto h-px w-px overflow-hidden",children:[o.jsx("label",{htmlFor:"contact-website",children:"Website"}),o.jsx("input",{id:"contact-website",name:"website",type:"text",tabIndex:-1,autoComplete:"off",value:ce,onChange:U=>$(U.target.value)})]}),T&&o.jsx("p",{role:"alert",className:"mb-6 border-l border-signal-fill pl-4 text-body-sm text-signal-text",children:T}),o.jsx("noscript",{children:o.jsx("p",{className:"mb-6 border-l border-signal-fill pl-4 text-body-sm text-ink-body",children:"This form needs JavaScript to send. With it switched off, open an issue at github.com/alexwakeman/pierre-review/issues instead — it reaches the same person."})}),o.jsx("button",{type:"submit",disabled:Pe,className:`inline-block bg-ink px-6 py-[15px] font-display text-[16px] font-semibold text-paper hover:bg-[#08080A] disabled:cursor-not-allowed disabled:bg-muted transition-colors duration-hover ease-standard ${ii}`,children:b==="sending"?"Sending…":"Send"}),o.jsxs("p",{className:"mt-5 max-w-reassure font-mono text-mono-nav text-secondary",children:["Your message goes to one person, not a ticketing queue. What the form collects and how long it is kept is in the"," ",o.jsx("a",{href:"/privacy",className:`border-b border-signal-fill text-ink hover:text-signal-text ${ii}`,children:"privacy policy"}),"."]})]})}function $c(){return Ht(dn("/contact")),o.jsxs(o.Fragment,{children:[o.jsxs("header",{className:"px-gutter pb-[52px] pt-hero-y",children:[o.jsx(et,{wide:!0,className:"mb-5 text-secondary",children:"Contact"}),o.jsx("h1",{className:"mb-6 max-w-[19ch] text-pretty font-display text-hero-sm font-semibold text-ink type:text-page-title",children:"Ask, and Pro is on us for a month."}),o.jsx("p",{className:"mb-[34px] max-w-lede text-pretty text-lede text-ink-soft",children:"Card payments are not switched on yet, and rather than hold Pro back until they are, we are giving it away for a month to anyone who asks. Send a message, and Pro is enabled on your account — every paid surface, no card, nothing to cancel."}),o.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-3.5",children:[o.jsx(Zn,{to:"/for-developers",children:"What you get, for developers →"}),o.jsx(Zn,{to:"/for-managers",children:"And for managers →"})]}),o.jsxs("p",{className:"mb-11 max-w-reassure font-mono text-mono-nav text-secondary",children:["The free tier needs none of this — sign in, or run"," ",o.jsx("span",{className:"text-ink",children:cn})," on your own machine, and it works today."]})]}),o.jsx(Me,{divider:"ink",children:o.jsx(He,{rail:{n:"01",word:"Message"},children:o.jsxs("div",{className:"rail:col-span-2 rail:grid rail:grid-cols-2 rail:gap-grid-gutter",children:[o.jsx("div",{children:o.jsx(lp,{})}),o.jsxs("div",{className:"mt-12 rail:mt-0",children:[o.jsx("h2",{className:"mb-5 max-w-[24ch] text-pretty font-display text-h3 font-semibold text-ink",children:"What happens next"}),o.jsxs("ul",{className:"mb-9 flex flex-col gap-3.5 text-ink-body",children:[o.jsx(at,{children:"It reaches one person, who replies — usually the same day, and always within two working days."}),o.jsx(at,{children:"If you asked for the Pro month, the reply says how it is turned on. There is no card, no invoice and no auto-renewal at the end of it."}),o.jsx(at,{children:"If you found something broken, the reply comes from the person who will fix it."}),o.jsx(at,{children:"Your email is used to answer you. It is not added to a mailing list and it is not passed to anyone."})]}),o.jsx("h2",{className:"mb-5 max-w-[24ch] text-pretty font-display text-h3 font-semibold text-ink",children:"Why a month, free"}),o.jsxs("p",{className:"mb-4 max-w-answer text-body-sm text-ink-body",children:[z," measures things most teams have never had measured — what a fortnight of review actually cost, and what the bots on top of it returned. Those readings get better the more estates they are run against, and the fastest way to make them better is for people to run them and say what was wrong."]}),o.jsx("p",{className:"max-w-answer text-body-sm text-ink-body",children:"So the month is not a discount waiting to convert. It buys the one thing that cannot be bought later: being told what the report got wrong by someone who knows their own team."})]})]})})}),o.jsx(Me,{divider:"rule",pad:"lg",children:o.jsx(He,{rail:{n:"02",word:"Elsewhere"},children:o.jsxs("div",{className:"rail:col-span-2",children:[o.jsx("h2",{className:"mb-5 max-w-[28ch] text-pretty font-display text-h2-sm font-semibold text-ink type:text-h2",children:"Or skip the form entirely."}),o.jsxs("p",{className:"mb-4 max-w-answer text-body-sm text-ink-body",children:["The whole free tier is open core and it installs in one command. Nothing on this page is a gate in front of it —"," ",o.jsx("span",{className:"font-mono text-mono-row text-ink",children:cn})," ","runs it against your own repositories using your existing"," ",o.jsx("span",{className:"font-mono text-mono-row text-ink",children:"gh"})," login, stores no credentials, and sends nothing to us."]}),o.jsx("p",{className:"max-w-answer text-body-sm text-ink-body",children:"Bugs and feature requests are better as issues than as messages: they are public, they are searchable, and somebody else hitting the same thing can add to them."})]})})}),o.jsx(qr,{})]})}const up="13 September 2026",Uc="wakemana@gmail.com",Jc="Alex Wakeman";function wa({title:u,intro:m,children:c}){return o.jsxs("div",{className:"max-w-[78ch] px-gutter py-16",children:[o.jsx("h1",{className:"font-display text-h2-sm font-semibold text-ink type:text-h2-minor",children:u}),o.jsxs("p",{className:"mt-3.5 font-mono text-mono-label uppercase text-secondary",children:["Last updated ",up]}),o.jsx("div",{className:"mt-6 space-y-3.5 text-body-sm",children:m}),o.jsx("div",{className:"mt-10 space-y-10",children:c})]})}function de({id:u,heading:m,children:c}){return o.jsxs("section",{id:u,className:"scroll-mt-16 border-t border-rule pt-7",children:[o.jsx("h2",{className:"font-display text-h4 font-semibold text-ink",children:m}),o.jsx("div",{className:"mt-3.5 space-y-3.5 text-body-sm",children:c})]})}function W({children:u}){return o.jsx("p",{children:u})}function Sn({children:u}){return o.jsx("ul",{className:"ml-5 list-disc space-y-2 text-body-sm",children:u})}function re({children:u}){return o.jsx("span",{className:"font-display font-semibold text-ink",children:u})}function pa({columns:u,rows:m}){return o.jsx("div",{className:"overflow-x-auto border border-rule",children:o.jsxs("table",{className:"w-full min-w-[36rem] border-collapse text-left text-list",children:[o.jsx("thead",{children:o.jsx("tr",{className:"border-b border-rule bg-paper-alt",children:u.map(c=>o.jsx("th",{className:"px-3.5 py-3 font-mono text-mono-label uppercase text-secondary",children:c},c))})}),o.jsx("tbody",{children:m.map((c,S)=>o.jsx("tr",{className:"border-b border-rule-hair align-top last:border-0",children:c.map((b,C)=>o.jsx("td",{className:"px-3.5 py-3",children:b},C))},S))})]})})}function ka({title:u,children:m}){return o.jsxs("div",{className:"border-t border-ink bg-paper-alt px-5 py-4",children:[o.jsx("p",{className:"font-mono text-mono-label uppercase text-secondary",children:u}),o.jsx("div",{className:"mt-2.5 space-y-2 text-list",children:m})]})}function Rt(){return o.jsx("a",{href:`mailto:${Uc}`,className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",children:Uc})}function cp(){return Ht(dn("/privacy")),o.jsxs(wa,{title:"Privacy policy",intro:o.jsxs(o.Fragment,{children:[o.jsxs("p",{children:["This notice explains what personal data ",z," processes, why, and what you can do about it. It covers the hosted service at"," ",o.jsx("span",{className:"font-mono text-ink",children:"pierre-review.com"}),"."]}),o.jsx("div",{className:"mt-5",children:o.jsx(ka,{title:`If you run ${z} on your own machine, this notice barely applies to you`,children:o.jsxs("p",{children:[z,"'s default mode is local: it runs on your computer, stores everything in a SQLite file under your home directory, authenticates with your own ",o.jsx("span",{className:"font-mono",children:"gh"})," CLI token, and sends nothing to us. We have no server in that path and receive no data — not telemetry, not crash reports, not analytics. The rest of this notice is about the hosted cloud version, where there is a server and we do process data. Sections 2 (analytics) and 7 (AI features) are the only ones with anything to say about local installs, and both are opt-in."]})})})]}),children:[o.jsxs(de,{id:"controller",heading:"1. Who is responsible",children:[o.jsxs(W,{children:["The data controller for the hosted service is ",o.jsx(re,{children:Jc}),", an individual sole trader based in the United Kingdom, contactable at ",o.jsx(Rt,{}),".",z," is a small independent project, not a company with a privacy department: the same person who wrote the code answers the email."]}),o.jsx(W,{children:"Because the controller is UK-based, the UK GDPR and the Data Protection Act 2018 apply, and the EU GDPR applies to visitors and users in the EEA. If you are in California, see §11."})]}),o.jsxs(de,{id:"website",heading:"2. The website and analytics",children:[o.jsxs(W,{children:["The marketing pages you are reading now are static. They set no cookies and run no third-party scripts ",o.jsx("em",{children:"until you agree to them"}),". Specifically:"]}),o.jsxs(Sn,{children:[o.jsxs("li",{children:[o.jsx(re,{children:"Google Analytics 4"})," — used to count page views and see which pages are useful. It writes a first-party ",o.jsx("span",{className:"font-mono",children:"_ga"})," cookie and sends your IP address, approximate location, device/browser details and the pages you view to Google. It runs ",o.jsx("em",{children:"only"})," if you press Accept on the cookie banner. Decline and the script is never even downloaded. Google Signals and ad personalisation are switched off, so the data is never joined to an advertising profile. Full detail, including how to change your mind, is in the"," ",o.jsx(ze,{to:"/cookies",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"cookie policy"}),"."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Fonts and assets"})," — the brand typeface and every image are served from this domain. There is no Google Fonts request, no CDN and no tracking pixel, so loading a page discloses nothing to a third party."]}),o.jsxs("li",{children:[o.jsx(re,{children:"The contact form"})," — if you send one, the name, email address, subject and message you type are delivered to a private Slack channel that one person reads. Nothing else is collected with it: no fingerprint, no tracking identifier, and no third-party anti-spam service (the form is protected by a hidden field, a signed minimum fill time and a rate limit, all of which run on our own server). Your email address is used to reply to you and for nothing else — it is not added to any mailing list. See §5 and §6."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Server logs"})," — the hosting provider records request metadata including your IP address, for security and debugging. See §6."]})]}),o.jsxs(W,{children:[o.jsx(re,{children:"Legal basis:"})," consent (UK/EU GDPR Art. 6(1)(a)) for analytics; legitimate interests (Art. 6(1)(f)) for keeping the service secure and available, and for answering a message you chose to send us."]})]}),o.jsxs(de,{id:"account",heading:"3. If you sign in to the hosted app",children:[o.jsx(W,{children:"Signing in uses GitHub OAuth. We never see or store a password. What we do store:"}),o.jsx(pa,{columns:["Data","Why","Notes"],rows:[["Your GitHub id, username, display name and avatar URL","To identify your account and show who you are in the UI","Read from GitHub at sign-in and refreshed periodically"],["A GitHub access token",`To read the repositories you ask ${z} to watch, and to perform actions you initiate (posting a review, resolving a thread)`,"Encrypted at rest with AES-256-GCM. Never sent to your browser, never logged."],["A session cookie","To keep you signed in","Named pierre_session, cryptographically sealed, HTTP-only, 30 days. Strictly necessary — no consent needed, and it cannot be declined without signing out."],["Timestamp of your last activity","So we only sync repositories for accounts that are actually being used","A single timestamp; no history is kept"],["Your plan, and a Stripe customer id if you buy Pro","To know what you are entitled to","See §5 — card details never reach our server"]]}),o.jsxs(W,{children:[o.jsx(re,{children:"Legal basis:"})," performance of a contract (Art. 6(1)(b)) — this is the data required to provide the service you asked for."]})]}),o.jsxs(de,{id:"repo-data",heading:"4. Repository data — including other people's",children:[o.jsxs(W,{children:[z,"'s purpose is to show a team's pull-request activity. When you add a repository, ",z," copies recent activity from GitHub into its database so it can be searched, filtered and charted. That includes:"]}),o.jsxs(Sn,{children:[o.jsx("li",{children:"pull request titles, descriptions, state, timestamps, labels and CI results;"}),o.jsx("li",{children:"review comments, review bodies and issue comments — the actual text people wrote;"}),o.jsx("li",{children:"commit SHAs, messages and the file paths each commit touched;"}),o.jsx("li",{children:"the GitHub username, display name and avatar of everyone who authored, reviewed or commented on any of it;"}),o.jsx("li",{children:"metrics derived from the above (review turnaround, bot activity, and so on)."})]}),o.jsxs(W,{children:[o.jsxs(re,{children:["This means ",z," processes personal data about people who never signed up for it"]})," ","— your colleagues, and any outside contributor to a repository you watch. We are stating that plainly because it is true of every tool in this category and is rarely admitted."]}),o.jsxs(W,{children:["Two things limit it. First, ",z," only ever reads what the connected GitHub token can already read, so it can never surface anything the account holder was not already entitled to see. Second, by default ",z," stores ",o.jsx("em",{children:"less"})," than it could: pull-request descriptions, diff hunks and commit messages are not persisted at all unless the operator turns that on — they are fetched from GitHub on demand when you open a pull request, and cached in your browser rather than on the server."]}),o.jsxs(W,{children:[o.jsx(re,{children:"Legal basis:"})," legitimate interests (Art. 6(1)(f)) — the interest being a development team's ability to see and manage its own review workload. The data is professional activity that the individuals concerned published in a collaborative workspace, the processing is limited to what the team's existing access already permits, and it is not used for profiling, advertising or any decision about the individual. If you are deploying ",z," for a team, you are likely a joint or independent controller for this data under your own privacy notice; contact us at ",o.jsx(Rt,{})," if you need a data processing agreement."]})]}),o.jsxs(de,{id:"processors",heading:"5. Who else the data reaches",children:[o.jsx(W,{children:"We use a small number of processors. No data is sold, and there are no advertising or data-broker relationships."}),o.jsx(pa,{columns:["Recipient","What they receive","Where","When"],rows:[["GitHub (Microsoft)","Your token is used to read repository activity; actions you take (a review, a comment, a resolved thread) are written back","USA / global","Always — it is the data source"],["Railway","Hosting: the application, its database and its request logs","USA / EU region","Always"],["Google (Analytics)","Page views, IP address, device and browser data","USA","Only with your consent (§2)"],["Anthropic","The content sent to the model: diffs, comment text and metrics for the pull requests being summarised or analysed","USA","Only when you use a Pro AI feature (§7)"],["Stripe","Your payment details, name and billing address","USA / EU","Only if you buy Pro. Collected by Stripe directly — card data never touches our server."],["Slack","The digest content: the summary prose, the repository names it covers, the name of the workspace it is for, and links back into the app (which contain workspace and repository ids). It is sent to the channel behind the webhook URL you supply, per workspace.","USA","Only if you set up a Slack digest webhook yourself, and only for the workspaces you select"],["Slack (contact form)","The name, email address, subject and message you typed into the contact form. It is delivered to a private channel belonging to us, which one person reads.","USA","Only when you submit the contact form"]]}),o.jsx(W,{children:"Transfers outside the UK/EEA rely on the UK International Data Transfer Addendum and the EU Standard Contractual Clauses, as incorporated in each provider's data processing terms. We may also disclose data where legally required, or to protect the service against abuse."})]}),o.jsx(de,{id:"retention",heading:"6. How long data is kept",children:o.jsxs(Sn,{children:[o.jsxs("li",{children:[o.jsx(re,{children:"Repository activity"})," — pull requests and everything attached to them are deleted automatically once they have been inactive for 180 days. This runs nightly; nothing accumulates indefinitely."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Your account"})," — kept until you delete it. Deleting removes the account row, your encrypted token, every repository you added and all the activity synced for them."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Contact-form messages"})," — kept in the Slack channel they are delivered to for as long as the conversation is useful, and deleted on request. The application stores no copy of its own: the message is passed straight through to Slack and never written to our database. The one exception is a failed delivery, which is written to the server log so the message is not simply lost — those logs are short-lived, as above."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Server logs"})," — retained by the hosting provider for a short operational window (days, not months). Credentials are redacted before anything is written."]}),o.jsxs("li",{children:[o.jsx(re,{children:"AI usage records"})," — a running count of tokens and credits used per month, for billing and quota. The prompts themselves are not stored by us."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Billing records"})," — held by Stripe for as long as UK tax law requires (currently six years)."]})]})}),o.jsxs(de,{id:"ai",heading:"7. AI features",children:[o.jsxs(W,{children:[z,"'s AI features are opt-in and clearly labelled. When you use one — a repository digest, a pull-request summary, a read on a failed build, team insights — the relevant content is sent to ",o.jsx(re,{children:"Anthropic"})," to generate the result. That content can include source-code diffs, review comments and the names of the people involved."]}),o.jsx(W,{children:"Anthropic acts as our processor and, under its commercial terms, does not use this content to train its models. Even so: treat an AI feature as a decision to share that code and those comments with a third party, and do not enable it on a repository where that would be inappropriate. Nothing is sent unless you press the button."}),o.jsxs(W,{children:["On a local install, AI features use ",o.jsx("em",{children:"your own"})," Claude Code session or Anthropic API key, and the content goes from your machine to Anthropic directly — we are not in the path, never see it, and store no key. Claude review and fix run only there. They send nothing until you press the button, or until you switch on auto review for a workspace."]})]}),o.jsxs(de,{id:"benchmark",heading:"8. The cross-organisation benchmark (off by default)",children:[o.jsxs(W,{children:["The hosted app offers an optional benchmark that compares your review-bot metrics against an aggregate of other organisations. It is ",o.jsx(re,{children:"off unless you switch it on"}),". When enabled, aggregate, non-identifying counts are contributed to that pool — never repository names, pull-request contents or usernames. You can turn it off at any time in settings, which stops further contribution."]}),o.jsxs(W,{children:[o.jsx(re,{children:"Legal basis:"})," consent (Art. 6(1)(a)), withdrawable at any time."]})]}),o.jsxs(de,{id:"rights",heading:"9. Your rights",children:[o.jsx(W,{children:"Under UK/EU GDPR you can ask us to: give you a copy of your data (access and portability), correct it, delete it, restrict or object to how we use it, and withdraw any consent you have given. Exercising a right never costs you anything and never degrades the service."}),o.jsx(W,{children:"Two of these are self-service in the hosted app, under Settings → Your data:"}),o.jsxs(Sn,{children:[o.jsxs("li",{children:[o.jsx(re,{children:"Export"})," — downloads everything associated with your account as a single JSON file."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Delete account"})," — irreversibly removes your account, your encrypted GitHub token, your repositories and all synced activity. It also revokes",z,"'s access to your GitHub account."]})]}),o.jsxs(W,{children:["For anything else, or if you are not a user but your GitHub activity appears in someone's ",z," instance, email ",o.jsx(Rt,{})," and we will respond within one month. To help with the second case: we hold that data on behalf of whichever account added the repository, so we may need to put you in touch with them — include the repository name if you can."]}),o.jsxs(W,{children:["If you are unhappy with how we handle it, you can complain to the UK"," ",o.jsx("a",{href:"https://ico.org.uk/make-a-complaint/",target:"_blank",rel:"noreferrer noopener",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"Information Commissioner's Office"}),", or to your own EU supervisory authority."]})]}),o.jsxs(de,{id:"security",heading:"10. Security",children:[o.jsx(W,{children:"GitHub tokens are encrypted at rest with AES-256-GCM under a key held only in the server environment. Session cookies are sealed, HTTP-only and same-site. All traffic is HTTPS with HSTS. Every database query is scoped to the owning account, and that isolation is enforced by an automated check in the build. Credentials are redacted from logs. The application is open source, so you can verify all of this rather than take our word for it."}),o.jsxs(W,{children:["No system is perfect. If you find a vulnerability, please report it privately to"," ",o.jsx(Rt,{})," rather than opening a public issue."]})]}),o.jsx(de,{id:"california",heading:"11. California residents",children:o.jsxs(W,{children:["We do not sell personal information and do not share it for cross-context behavioural advertising, as those terms are defined by the CCPA/CPRA. You have the right to know what we collect (§§2–4), to delete it, to correct it, and not to be discriminated against for asking. Use the self-service controls in §9 or email"," ",o.jsx(Rt,{}),". We do not knowingly collect data from anyone under 16."]})}),o.jsx(de,{id:"changes",heading:"12. Changes",children:o.jsx(W,{children:"If this notice changes materially we will update the date at the top and, where the change affects consent, re-ask for it. The full history is in the public git repository, so you can diff any version against any other."})})]})}function dp(){Ht(dn("/cookies"));const u=typeof window>"u"?null:xa(),m=D.useCallback(()=>{va(),qc(),window.scrollTo({top:document.body.scrollHeight,behavior:"smooth"})},[]);return o.jsxs(wa,{title:"Cookie policy",intro:o.jsxs(o.Fragment,{children:[o.jsxs("p",{children:[z," sets four cookies in total. Two are needed to keep you signed in, one exists for ten minutes during a GitHub sign-in, and one is analytics — which only ever appears if you agreed to it."]}),o.jsx("div",{className:"mt-5",children:o.jsxs(ka,{title:"Your current choice",children:[o.jsx("p",{children:u==="granted"?"You have accepted analytics cookies.":u==="denied"?"You have declined analytics cookies. None are set.":"You have not made a choice yet, so no analytics cookies are set."}),o.jsx("button",{type:"button",onClick:m,className:"mt-2 border border-ink px-4 py-2 font-display text-[15px] font-semibold text-ink transition-colors duration-hover ease-standard hover:bg-ink hover:text-paper focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ink",children:"Change my choice"})]})})]}),children:[o.jsxs(de,{id:"list",heading:"Every cookie, in full",children:[o.jsx(pa,{columns:["Name","Type","Purpose","Lifetime"],rows:[[o.jsx("span",{className:"font-mono text-xs",children:"pierre_session"}),"Strictly necessary","Keeps you signed in to the hosted app. Cryptographically sealed and HTTP-only, so page scripts cannot read it. Contains only your internal account id.","30 days"],[o.jsx("span",{className:"font-mono text-xs",children:"pierre_oauth_state"}),"Strictly necessary","A one-time random value that proves a GitHub sign-in was started by you and not by another site. Set when you click Sign in, deleted the moment you come back.","10 minutes"],[o.jsx("span",{className:"font-mono text-xs",children:"_ga"}),"Analytics — consent required","Google Analytics: distinguishes one visitor from another so page views can be counted.","2 years"],[o.jsx("span",{className:"font-mono text-xs",children:"_ga_<ID>"}),"Analytics — consent required","Google Analytics: keeps session state for this specific property.","2 years"]]}),o.jsxs(W,{children:[z," also uses your browser's ",o.jsx(re,{children:"local storage"})," — not cookies — to remember interface preferences (which rows you collapsed, how tall the detail pane is, your cookie choice itself) and to cache pull-request detail so the app feels fast. None of it is transmitted anywhere and it never leaves your device."]})]}),o.jsxs(de,{id:"necessary",heading:"Why two of them can't be declined",children:[o.jsxs(W,{children:["The two ",o.jsx("span",{className:"font-mono text-xs",children:"pierre_*"})," cookies are what the law calls strictly necessary: they exist solely to deliver something you explicitly asked for (being signed in, and being signed in ",o.jsx("em",{children:"safely"}),"). There is no version of the hosted app that works without them, and they carry no tracking value — one holds an account number, the other a random string that is thrown away seconds later. That is why they are set without asking."]}),o.jsxs(W,{children:["If you would rather not have them at all, run ",z," locally instead. There is no session, no sign-in and no server."]})]}),o.jsxs(de,{id:"analytics",heading:"The analytics cookies, and how they behave",children:[o.jsxs(Sn,{children:[o.jsxs("li",{children:[o.jsx(re,{children:"Nothing loads before you agree."})," Decline, and the Google Analytics script is never downloaded — so Google is not contacted at all, not even to be told you refused."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Declining costs you nothing."})," Every feature works identically. There is no nag, no reduced functionality, and the banner does not come back."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Advertising signals are off."})," Google Signals and ad personalisation are explicitly disabled, so the data cannot be joined to an advertising profile or used for remarketing."]}),o.jsxs("li",{children:[o.jsx(re,{children:"Changing your mind deletes the cookies."})," Withdrawing consent expires"," ",o.jsx("span",{className:"font-mono text-xs",children:"_ga"})," and"," ",o.jsx("span",{className:"font-mono text-xs",children:"_ga_<ID>"})," on your device immediately and stops all further measurement."]})]}),o.jsxs(W,{children:["Google is the recipient of this data and acts as our processor; the transfer is to the United States. See §§2 and 5 of the"," ",o.jsx(ze,{to:"/privacy",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"privacy policy"})," ","for the legal detail."]})]}),o.jsx(de,{id:"self-hosted",heading:"Self-hosted and local installs",children:o.jsxs(W,{children:["If you run ",z," yourself, analytics is not configured at all unless you supply your own measurement id at build time — so the banner never appears and no analytics cookie is ever set. The local desktop mode has no sign-in, so it sets neither session cookie either. A local install sets ",o.jsx(re,{children:"no cookies whatsoever"}),"."]})}),o.jsxs(de,{id:"browser",heading:"Browser-level controls",children:[o.jsxs(W,{children:["You can also block or delete cookies in your browser's settings, or use Google's own"," ",o.jsx("a",{href:"https://tools.google.com/dlpage/gaoptout",target:"_blank",rel:"noreferrer noopener",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"Analytics opt-out extension"}),". Blocking the two necessary cookies will sign you out of the hosted app."]}),o.jsxs(W,{children:["Questions about any of this: ",o.jsx(Rt,{}),"."]})]})]})}function hp(){return Ht(dn("/terms")),o.jsxs(wa,{title:"Terms of service",intro:o.jsxs(o.Fragment,{children:[o.jsxs("p",{children:["These terms cover the hosted service at"," ",o.jsx("span",{className:"font-mono text-ink",children:"pierre-review.com"}),". By signing in you agree to them."]}),o.jsx("div",{className:"mt-5",children:o.jsx(ka,{title:"The self-hosted code is under a different licence, not these terms",children:o.jsxs("p",{children:[z,"'s source is published under the Functional Source Licence (FSL-1.1-MIT), which converts to MIT two years after each release. If you clone the repository and run it yourself, that licence governs — not this document. These terms only apply to the version we host for you."]})})})]}),children:[o.jsxs(de,{id:"who",heading:"1. Who you are contracting with",children:[o.jsxs(W,{children:["The service is provided by ",o.jsx(re,{children:Jc}),", a sole trader in the United Kingdom, contactable at ",o.jsx(Rt,{}),". These terms are governed by the laws of England and Wales, and the courts of England and Wales have exclusive jurisdiction."]}),o.jsx(W,{children:"You must be at least 16 years old and have a GitHub account to use the service."})]}),o.jsxs(de,{id:"service",heading:"2. What the service does",children:[o.jsxs(W,{children:[z," reads pull-request activity from GitHub repositories you nominate and presents it as a dashboard. Some features send content to an AI model to produce summaries or reviews. The"," ",o.jsx(ze,{to:"/features",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"features"})," ","and"," ",o.jsx(ze,{to:"/pricing",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"pricing"})," ","pages describe what is included at each tier."]}),o.jsx(W,{children:"We may change, add or remove features. If a change materially reduces what a paid plan provides, we will tell paying users before it takes effect."})]}),o.jsxs(de,{id:"account",heading:"3. Your account",children:[o.jsxs(W,{children:["You are responsible for activity under your account, and for keeping your GitHub account secure — anyone who controls your GitHub login can sign in to ",z," as you. Tell us at ",o.jsx(Rt,{})," if you believe your account has been misused."]}),o.jsx(W,{children:"You can delete your account at any time from Settings → Your data. Deletion is immediate and irreversible."})]}),o.jsx(de,{id:"billing",heading:"4. Paying for Pro",children:o.jsxs(Sn,{children:[o.jsxs("li",{children:["Pro is billed monthly in advance through ",o.jsx(re,{children:"Stripe"}),", which handles all payment details. We never see your card number."]}),o.jsx("li",{children:"AI features carry a monthly allowance. When it is used up, AI generation stops until the allowance resets at the start of the next month — it does not silently keep spending, and you are never billed for overage without asking."}),o.jsxs("li",{children:[o.jsx(re,{children:"Cancel any time."})," Cancellation takes effect at the end of the period you have already paid for; there is no lock-in and no cancellation fee."]}),o.jsxs("li",{children:["We do not offer pro-rata refunds for a partial month, but if something went genuinely wrong, email ",o.jsx(Rt,{})," and we will sort it out."]}),o.jsx("li",{children:"If a payment fails, Pro features stop and the account falls back to the free tier. Your data is not deleted."}),o.jsx("li",{children:"Prices may change with at least 30 days' notice; the new price applies from your next renewal."})]})}),o.jsxs(de,{id:"acceptable",heading:"5. What you must not do",children:[o.jsxs(W,{children:["The important one first: ",z," reads GitHub using ",o.jsx("em",{children:"your"})," access token, so it can reach whatever you can reach."," ",o.jsx(re,{children:"You are responsible for having the right to access every repository you add"}),", and for complying with your employer's or client's policies about where that data may be copied and whether it may be sent to an AI model. Adding a repository you are not authorised to export is your breach, not ours."]}),o.jsx(W,{children:"You also agree not to:"}),o.jsxs(Sn,{children:[o.jsx("li",{children:"attempt to access another account's data, or probe, scan or overload the service (security research is welcome — see §9);"}),o.jsx("li",{children:"circumvent the plan limits, credit allowances or rate limits, or automate the AI features to consume allowance in bulk;"}),o.jsx("li",{children:"use the service to break the law, or in breach of GitHub's own terms;"}),o.jsx("li",{children:"resell the hosted service as your own."})]}),o.jsx(W,{children:"We may suspend an account that is causing harm to the service or to others. Where it is reasonable to do so, we will contact you first."})]}),o.jsx(de,{id:"your-data",heading:"6. Your data",children:o.jsxs(W,{children:["You keep all rights in your code and your repository content. We claim no ownership and no licence beyond what is needed to run the features you use — store it, display it back to you, and pass it to the processors listed in the"," ",o.jsx(ze,{to:"/privacy",className:"border-b border-signal-fill text-ink transition-colors duration-hover ease-standard hover:text-signal-text",children:"privacy policy"}),". We do not use your code or comments to train any model."]})}),o.jsxs(de,{id:"ai",heading:"7. AI output — read this one",children:[o.jsxs(W,{children:["AI-generated summaries, insights and reviews are ",o.jsx(re,{children:"suggestions produced by a language model"}),". They can be confidently wrong: they miss real bugs, invent problems that do not exist, and misread intent. Nothing ",z," generates is a substitute for human review, and no AI review is ever posted to GitHub without you reading it and pressing the button."]}),o.jsx(W,{children:"You are responsible for anything you post, merge or act on. We accept no liability for a defect an AI review failed to find, or for a change made on the strength of one."})]}),o.jsx(de,{id:"availability",heading:"8. Availability",children:o.jsxs(W,{children:["The service is provided on an ",o.jsx(re,{children:"as-is, as-available"})," basis, with no uptime guarantee and no service-level agreement. It is a small independent product: there will be maintenance, and occasionally there will be outages. Data is stored durably by our hosting provider, but ",o.jsxs(re,{children:["you should not treat ",z," as the system of record"]})," — GitHub is. Everything ",z," holds can be re-synced from there."]})}),o.jsxs(de,{id:"liability",heading:"9. Liability",children:[o.jsx(W,{children:"To the fullest extent the law allows, we exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. We are not liable for indirect or consequential loss, lost profits, lost data or business interruption."}),o.jsx(W,{children:"Where liability cannot be excluded, it is capped at the greater of the amount you paid us in the twelve months before the claim, or £50. Nothing here limits liability for death or personal injury caused by negligence, for fraud, or for anything else that cannot lawfully be limited — and if you are a consumer, your statutory rights are unaffected."}),o.jsxs(W,{children:["Found a security problem? Report it privately to ",o.jsx(Rt,{})," and we will not pursue you for good-faith testing that respects other users' data and does not degrade the service."]})]}),o.jsx(de,{id:"termination",heading:"10. Ending it",children:o.jsx(W,{children:"You may stop using the service and delete your account at any time. We may terminate or suspend access for a material breach of these terms, or with 30 days' notice if we discontinue the hosted service — in which case we will refund any period you have paid for in advance and give you time to export your data."})}),o.jsx(de,{id:"changes",heading:"11. Changes to these terms",children:o.jsx(W,{children:"We will update the date at the top when these terms change, and give paying users notice of anything material. Continuing to use the service after a change means you accept it. Every revision is in the public git history."})})]})}const fp={"/":rp,"/for-developers":Fc,"/for-managers":Wr,"/how-we-measure":Dc,"/contact":$c,"/privacy":cp,"/cookies":dp,"/terms":hp,"/features":Fc,"/how-it-works":Dc,"/bots":Wr,"/pro":Wr,"/pricing":$c,"/insights":Wr,"/reviews":Wr};function pp(){return Ht(Yc),o.jsxs(Me,{divider:"none",pad:"lg",children:[o.jsx("h1",{className:"mb-5 max-w-[22ch] font-display text-h2-sm font-semibold text-ink type:text-h2-major",children:"This page wandered off."}),o.jsx("p",{className:"mb-9 max-w-[56ch]",children:"The link is dead, but the timeline isn’t. Let’s get you back."}),o.jsx(Jn,{to:"/",children:"Back to home"})]})}function mp(){const u=Hc(),m=fp[u]??pp;return D.useEffect(()=>{Vc()},[]),D.useEffect(()=>{pf(u)},[u]),o.jsx(Lf,{children:o.jsxs("div",{className:"mx-auto min-h-screen max-w-canvas",children:[o.jsx(Nf,{}),o.jsx("main",{children:o.jsx(m,{})}),o.jsx(Cf,{}),o.jsx(If,{})]})})}const ed=document.getElementById("root");if(!ed)throw new Error("#root not found");sf.createRoot(ed).render(o.jsx(D.StrictMode,{children:o.jsx(mp,{})}));
|