From cd04debdf74e16fa616b95c6d1607d709a3d7e6a Mon Sep 17 00:00:00 2001 From: yishuiliunian Date: Sun, 31 May 2026 11:10:26 +0800 Subject: [PATCH 1/3] feat(memory): event-sourced associative recall + importance tool + arch cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: memory_recall previously had no reinforcement signal (cold-start every session) and no way for the LLM to mark salient nodes — limiting it to pure graph traversal. This change makes recall behavior accumulate across sessions via an append-only event log, and exposes user/LLM intent through a new importance tool. Verified per-query lift of MRR +7.4% / R@10 +16.1% on the expanded 58-query eval fixture. Core additions - event_log/: per-session JSONL append-only log (writer / fold / gc / schema / recall_stats), git-mergeable by design; folds into in-memory RecallStats on session start - graph::recall now emits QueryEvent + RecallHit; scoring layer adds recall_reinforcement_bonus (frequency) and importance_bonus (user intent) - MemoryImportanceTool: production write path so LLM/user can mark nodes important; previously the score path read a field that had no writer - MemorySubsystem::bootstrap: memory crate owns its own orchestration (canonicalize → gc → fold → install_stats → set_event_log → scan → watch) instead of agent-server stitching primitives - MemoryConfig: gc_compress_after_days (90) + gc_archive_after_days (365) replace hardcoded constants - ensure_gitignore: auto-managed gitignore rules for memory-events/ Bug fixes found via multi-angle sweep (8 angles × verify) - compress_file orphan recovery (.jsonl + .jsonl.gz coexistence after crash between rename and remove caused 2× recall_count inflation) - compress_file concurrent GC race (per-process pid+nanos tmp suffix replaces fixed .tmp that two sessions could truncate) - fold_one_file partial-batch recovery (single IO error no longer drops the entire file's already-parsed events) - run_gc read_dir error now counts toward stats.errors instead of silent zero-return - compress_file streams via io::copy instead of read_to_end (was OOM-prone on multi-GB session files) - ensure_gitignore handles non-UTF8 existing files via lossy decode (was appending rules indefinitely on every session start) Architecture cleanup (arch_check) - EmotionalTag → ImportanceTag rename (13 symbols + serde wire tag) — the field was always literally i8 importance with no emotion model - install_recall_stats now &mut self (compile-time prevents post-Arc race) - gitignore moved out of store/ (store layer should not reach project root) - MemoryGraph::record_event made pub (delete record_emotional_tag wrapper — inconsistent with recall.rs use-site construction pattern) - store/event_log_* + recall_stats moved to event_log/ submodule (separate concerns: SQLite vs event sourcing) - recall.rs (311 lines) split into recall/{mod,anchors,emit}.rs - queries_node.rs (222 lines) split into queries_node/{mod,read,write}.rs - Dead code removed: CoRecall emit (no fold consumer), NearMiss schema (never emitted), runner::run() (replaced by run_with_warmup(0)) Testing - 47 new fixture .md files + 48 new ground-truth queries (4 domain clusters: postgres ops, ci/cd, auth/security, observability) - per-query warmup A/B framework in eval (cold vs warm 5x/20x vs Imp +5/+10 vs Per-Q 5x) - 8 GC recovery tests (orphan / concurrent tmp / streaming / read_dir error / archive collision / fold partial recovery / non-UTF8 gitignore) - 6 importance tool tests (metadata / validation / e2e write+fold / repeated tagging / silent drop without event log) - 2 associative recall integration tests (reinforcement persists across sessions; importance lifts ranking) Verification - bazel test //... — all passing (207 memory crate + 6 other targets) - bazel build //... --config=clippy --config=rustfmt — clean - 200-line file limit — 0 violations - eval gates: cold R@5=0.579, MRR=0.753; per-Q lift +7.4% MRR, +16.1% R@10 --- CLAUDE.md | 4 + MODULE.bazel | 7 + MODULE.bazel.lock | 834 +++++++++++++----- crates/loopal-agent-server/BUILD.bazel | 2 + crates/loopal-agent-server/src/agent_setup.rs | 8 +- .../src/agent_setup_context.rs | 3 + crates/loopal-agent-server/src/lib.rs | 1 + .../loopal-agent-server/src/memory_adapter.rs | 4 +- .../src/memory_consolidation.rs | 6 +- crates/loopal-agent-server/src/memory_init.rs | 86 ++ crates/loopal-agent-server/src/params.rs | 15 + .../loopal-agent-server/src/session_start.rs | 7 + .../tests/suite/build_kernel_depth_test.rs | 1 + .../tests/suite/hub_harness.rs | 1 + .../tests/suite/memory_consolidation_test.rs | 6 +- .../tests/suite/prompt_post_test.rs | 3 + .../src/tools/collaboration/agent_spawn.rs | 2 +- crates/loopal-agent/src/tools/mod.rs | 11 + crates/loopal-config/src/lib.rs | 2 +- crates/loopal-config/src/settings/memory.rs | 4 + crates/loopal-error/BUILD.bazel | 2 + crates/loopal-error/src/errors.rs | 3 + crates/loopal-error/src/lib.rs | 2 + crates/loopal-error/src/memory_graph_error.rs | 40 + crates/loopal-memory/BUILD.bazel | 20 +- .../agent-prompts/memory-maintainer.md | 15 +- crates/loopal-memory/eval/BUILD.bazel | 22 + crates/loopal-memory/eval/data/fixtures/.md | 0 .../eval/data/fixtures/MEMORY.md | 35 + .../eval/data/fixtures/alert-fatigue-audit.md | 14 + .../eval/data/fixtures/alert-rules-catalog.md | 15 + .../eval/data/fixtures/api-key-rotation.md | 19 + .../data/fixtures/artifact-cache-strategy.md | 19 + .../eval/data/fixtures/audit-log-retention.md | 19 + .../eval/data/fixtures/auth-architecture.md | 22 + .../eval/data/fixtures/bazel-remote-cache.md | 18 + .../eval/data/fixtures/blue-green-fallback.md | 17 + .../eval/data/fixtures/chrome-cdp.md | 13 + .../data/fixtures/cicd-pipeline-overview.md | 21 + .../fixtures/cold-email-deliverability.md | 12 + .../data/fixtures/cold-email-templates.md | 13 + .../fixtures/connection-storm-incident.md | 14 + .../eval/data/fixtures/dashboard-deploy.md | 13 + .../eval/data/fixtures/dashboard-metrics.md | 13 + .../data/fixtures/deploy-canary-rollout.md | 19 + .../data/fixtures/docker-multistage-build.md | 19 + .../data/fixtures/feedback-batch-rejected.md | 15 + .../fixtures/feedback-draft-discharges.md | 15 + .../fixtures/feedback-no-mocks-in-tests.md | 15 + .../data/fixtures/flaky-test-quarantine.md | 19 + .../github-actions-workflow-layout.md | 18 + .../data/fixtures/gtm-high-intent-radar.md | 13 + .../fixtures/incident-postmortem-template.md | 13 + .../fixtures/index-bloat-investigation.md | 13 + .../data/fixtures/jwt-clock-skew-incident.md | 17 + .../eval/data/fixtures/jwt-rs256-signing.md | 19 + .../data/fixtures/log-retention-policy.md | 13 + .../eval/data/fixtures/loopal-cron-miss.md | 11 + .../fixtures/metric-cardinality-budget.md | 13 + .../eval/data/fixtures/mfa-enrollment-flow.md | 18 + .../eval/data/fixtures/oauth2-pkce-flow.md | 19 + .../eval/data/fixtures/observability-stack.md | 16 + .../eval/data/fixtures/oncall-runbook.md | 14 + .../data/fixtures/otel-trace-propagation.md | 14 + .../data/fixtures/partition-rotation-cron.md | 14 + .../data/fixtures/password-rotation-policy.md | 18 + .../data/fixtures/pgbackrest-backup-policy.md | 14 + .../data/fixtures/pgbouncer-pool-sizing.md | 14 + .../eval/data/fixtures/pitr-recovery-drill.md | 13 + .../eval/data/fixtures/postgres-runbook.md | 18 + .../eval/data/fixtures/rbac-role-matrix.md | 18 + .../fixtures/reference-grafana-dashboard.md | 13 + .../data/fixtures/reference-volcengine-api.md | 11 + .../data/fixtures/replica-lag-alerting.md | 14 + .../data/fixtures/runner-autoscale-tuning.md | 17 + .../eval/data/fixtures/scanner-idempotency.md | 13 + .../eval/data/fixtures/scanner-replay.md | 13 + .../eval/data/fixtures/scanner-state.md | 14 + .../data/fixtures/schema-migration-flyway.md | 14 + .../eval/data/fixtures/secrets-oidc-vault.md | 18 + .../data/fixtures/self-hosted-runner-pool.md | 18 + .../data/fixtures/session-expiry-policy.md | 18 + .../data/fixtures/session-fixation-test.md | 20 + .../eval/data/fixtures/slo-definitions.md | 14 + .../eval/data/fixtures/slow-query-triage.md | 15 + .../fixtures/streaming-replication-setup.md | 15 + .../data/fixtures/structured-log-schema.md | 14 + .../fixtures/suspicious-login-detection.md | 20 + .../fixtures/test-parallelization-shards.md | 18 + .../data/fixtures/trace-sampling-policy.md | 13 + .../fixtures/twitter-algorithm-playbook.md | 13 + .../eval/data/fixtures/twitter-automation.md | 14 + .../eval/data/fixtures/twitter-cooldown.md | 13 + .../eval/data/fixtures/twitter-dm-outreach.md | 13 + .../data/fixtures/twitter-list-curation.md | 13 + .../eval/data/fixtures/twitter-long-tweets.md | 12 + .../data/fixtures/twitter-monitor-scraping.md | 14 + .../eval/data/fixtures/twitter-rate-limit.md | 13 + .../data/fixtures/twitter-reply-cold-start.md | 13 + .../data/fixtures/user-tone-prefer-direct.md | 11 + .../eval/data/fixtures/vacuum-tuning-guide.md | 15 + .../loopal-memory/eval/data/ground_truth.yaml | 545 ++++++++++++ crates/loopal-memory/eval/src/baseline.rs | 82 ++ crates/loopal-memory/eval/src/fixture.rs | 183 ++++ crates/loopal-memory/eval/src/ground_truth.rs | 64 ++ crates/loopal-memory/eval/src/main.rs | 120 +++ crates/loopal-memory/eval/src/metrics.rs | 151 ++++ crates/loopal-memory/eval/src/report.rs | 188 ++++ .../eval/src/report_retrieved.rs | 44 + crates/loopal-memory/eval/src/runner.rs | 217 +++++ crates/loopal-memory/eval/src/synth_eval.rs | 56 ++ .../src/{extraction.rs => agent_output.rs} | 0 .../loopal-memory/src/consolidation/lock.rs | 121 ++- .../src/consolidation/schedule.rs | 11 +- crates/loopal-memory/src/event_log/gc.rs | 141 +++ crates/loopal-memory/src/event_log/mod.rs | 9 + .../src/event_log/recall_stats.rs | 43 + crates/loopal-memory/src/event_log/schema.rs | 69 ++ crates/loopal-memory/src/event_log/writer.rs | 149 ++++ crates/loopal-memory/src/extract/errors.rs | 16 + .../loopal-memory/src/extract/frontmatter.rs | 106 +++ crates/loopal-memory/src/extract/mod.rs | 162 ++++ crates/loopal-memory/src/extract/related.rs | 14 + crates/loopal-memory/src/extract/wikilink.rs | 50 ++ crates/loopal-memory/src/graph/co_occur.rs | 77 ++ crates/loopal-memory/src/graph/format.rs | 143 +++ crates/loopal-memory/src/graph/mod.rs | 7 + .../loopal-memory/src/graph/recall/anchors.rs | 145 +++ crates/loopal-memory/src/graph/recall/emit.rs | 47 + crates/loopal-memory/src/graph/recall/mod.rs | 143 +++ crates/loopal-memory/src/graph/score.rs | 79 ++ crates/loopal-memory/src/init/gitignore.rs | 42 + crates/loopal-memory/src/init/mod.rs | 3 + crates/loopal-memory/src/lib.rs | 34 +- crates/loopal-memory/src/policy.rs | 34 + crates/loopal-memory/src/render/mod.rs | 103 +++ crates/loopal-memory/src/render/ranking.rs | 53 ++ crates/loopal-memory/src/store/candidates.rs | 62 ++ crates/loopal-memory/src/store/connection.rs | 54 ++ crates/loopal-memory/src/store/edge_ops.rs | 79 ++ crates/loopal-memory/src/store/file_ops.rs | 39 + crates/loopal-memory/src/store/migrations.rs | 48 + crates/loopal-memory/src/store/mod.rs | 119 +++ crates/loopal-memory/src/store/node_ops.rs | 78 ++ .../loopal-memory/src/store/queries_edge.rs | 155 ++++ .../loopal-memory/src/store/queries_files.rs | 55 ++ crates/loopal-memory/src/store/queries_fts.rs | 92 ++ .../loopal-memory/src/store/queries_graph.rs | 181 ++++ .../src/store/queries_node/mod.rs | 29 + .../src/store/queries_node/read.rs | 99 +++ .../src/store/queries_node/write.rs | 109 +++ crates/loopal-memory/src/store/schema.rs | 74 ++ crates/loopal-memory/src/store/schema.sql | 87 ++ crates/loopal-memory/src/store/types.rs | 136 +++ crates/loopal-memory/src/sync/init.rs | 120 +++ crates/loopal-memory/src/sync/mod.rs | 30 + crates/loopal-memory/src/sync/persist.rs | 80 ++ crates/loopal-memory/src/sync/subsystem.rs | 107 +++ crates/loopal-memory/src/sync/watcher/mod.rs | 180 ++++ .../loopal-memory/src/sync/watcher/rename.rs | 49 + .../loopal-memory/src/sync/watcher/setup.rs | 61 ++ .../src/synthesize/derive_chain.rs | 46 + crates/loopal-memory/src/synthesize/mod.rs | 49 + .../src/synthesize/slug_cluster.rs | 69 ++ .../loopal-memory/src/synthesize/supersede.rs | 49 + crates/loopal-memory/src/synthesize/tfidf.rs | 101 +++ .../src/synthesize/token_cluster.rs | 60 ++ crates/loopal-memory/src/tools/importance.rs | 141 +++ crates/loopal-memory/src/tools/mod.rs | 5 + crates/loopal-memory/src/tools/recall.rs | 131 +++ crates/loopal-memory/tests/suite.rs | 68 ++ .../associative_recall_integration_test.rs | 172 ++++ .../tests/suite/candidates_test.rs | 123 +++ .../tests/suite/event_log_gc_test.rs | 150 ++++ .../tests/suite/event_log_recovery_test.rs | 185 ++++ .../tests/suite/event_log_test.rs | 159 ++++ .../tests/suite/extract_frontmatter_test.rs | 69 ++ .../tests/suite/extract_orchestrator_test.rs | 132 +++ .../tests/suite/extract_related_test.rs | 40 + .../tests/suite/extract_wikilink_test.rs | 64 ++ .../tests/suite/file_cache_test.rs | 57 ++ .../tests/suite/importance_test.rs | 151 ++++ .../suite/memory_init_integration_test.rs | 68 ++ .../tests/suite/recall_anchor_test.rs | 138 +++ .../tests/suite/recall_format_test.rs | 118 +++ .../tests/suite/recall_query_test.rs | 175 ++++ .../tests/suite/recall_tool_test.rs | 99 +++ .../tests/suite/rename_node_test.rs | 93 ++ .../tests/suite/render_index_test.rs | 131 +++ .../tests/suite/render_ranking_test.rs | 65 ++ .../tests/suite/store_edge_case_test.rs | 156 ++++ .../tests/suite/store_edge_test.rs | 259 ++++++ .../tests/suite/store_fts_test.rs | 178 ++++ .../tests/suite/store_graph_filter_test.rs | 124 +++ .../tests/suite/store_graph_test.rs | 150 ++++ .../tests/suite/store_node_test.rs | 167 ++++ .../tests/suite/store_types_test.rs | 85 ++ .../tests/suite/sync_init_test.rs | 93 ++ .../tests/suite/synth_derive_test.rs | 109 +++ .../tests/suite/synth_slug_test.rs | 100 +++ .../tests/suite/synth_supersede_test.rs | 93 ++ .../tests/suite/synth_token_test.rs | 143 +++ .../prompts/core/memory-guidance.md | 12 +- crates/loopal-runtime/src/session.rs | 8 + crates/loopal-storage/src/sessions.rs | 13 +- 205 files changed, 12129 insertions(+), 289 deletions(-) create mode 100644 crates/loopal-agent-server/src/memory_init.rs create mode 100644 crates/loopal-error/src/memory_graph_error.rs create mode 100644 crates/loopal-memory/eval/BUILD.bazel create mode 100644 crates/loopal-memory/eval/data/fixtures/.md create mode 100644 crates/loopal-memory/eval/data/fixtures/MEMORY.md create mode 100644 crates/loopal-memory/eval/data/fixtures/alert-fatigue-audit.md create mode 100644 crates/loopal-memory/eval/data/fixtures/alert-rules-catalog.md create mode 100644 crates/loopal-memory/eval/data/fixtures/api-key-rotation.md create mode 100644 crates/loopal-memory/eval/data/fixtures/artifact-cache-strategy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/audit-log-retention.md create mode 100644 crates/loopal-memory/eval/data/fixtures/auth-architecture.md create mode 100644 crates/loopal-memory/eval/data/fixtures/bazel-remote-cache.md create mode 100644 crates/loopal-memory/eval/data/fixtures/blue-green-fallback.md create mode 100644 crates/loopal-memory/eval/data/fixtures/chrome-cdp.md create mode 100644 crates/loopal-memory/eval/data/fixtures/cicd-pipeline-overview.md create mode 100644 crates/loopal-memory/eval/data/fixtures/cold-email-deliverability.md create mode 100644 crates/loopal-memory/eval/data/fixtures/cold-email-templates.md create mode 100644 crates/loopal-memory/eval/data/fixtures/connection-storm-incident.md create mode 100644 crates/loopal-memory/eval/data/fixtures/dashboard-deploy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/dashboard-metrics.md create mode 100644 crates/loopal-memory/eval/data/fixtures/deploy-canary-rollout.md create mode 100644 crates/loopal-memory/eval/data/fixtures/docker-multistage-build.md create mode 100644 crates/loopal-memory/eval/data/fixtures/feedback-batch-rejected.md create mode 100644 crates/loopal-memory/eval/data/fixtures/feedback-draft-discharges.md create mode 100644 crates/loopal-memory/eval/data/fixtures/feedback-no-mocks-in-tests.md create mode 100644 crates/loopal-memory/eval/data/fixtures/flaky-test-quarantine.md create mode 100644 crates/loopal-memory/eval/data/fixtures/github-actions-workflow-layout.md create mode 100644 crates/loopal-memory/eval/data/fixtures/gtm-high-intent-radar.md create mode 100644 crates/loopal-memory/eval/data/fixtures/incident-postmortem-template.md create mode 100644 crates/loopal-memory/eval/data/fixtures/index-bloat-investigation.md create mode 100644 crates/loopal-memory/eval/data/fixtures/jwt-clock-skew-incident.md create mode 100644 crates/loopal-memory/eval/data/fixtures/jwt-rs256-signing.md create mode 100644 crates/loopal-memory/eval/data/fixtures/log-retention-policy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/loopal-cron-miss.md create mode 100644 crates/loopal-memory/eval/data/fixtures/metric-cardinality-budget.md create mode 100644 crates/loopal-memory/eval/data/fixtures/mfa-enrollment-flow.md create mode 100644 crates/loopal-memory/eval/data/fixtures/oauth2-pkce-flow.md create mode 100644 crates/loopal-memory/eval/data/fixtures/observability-stack.md create mode 100644 crates/loopal-memory/eval/data/fixtures/oncall-runbook.md create mode 100644 crates/loopal-memory/eval/data/fixtures/otel-trace-propagation.md create mode 100644 crates/loopal-memory/eval/data/fixtures/partition-rotation-cron.md create mode 100644 crates/loopal-memory/eval/data/fixtures/password-rotation-policy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/pgbackrest-backup-policy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/pgbouncer-pool-sizing.md create mode 100644 crates/loopal-memory/eval/data/fixtures/pitr-recovery-drill.md create mode 100644 crates/loopal-memory/eval/data/fixtures/postgres-runbook.md create mode 100644 crates/loopal-memory/eval/data/fixtures/rbac-role-matrix.md create mode 100644 crates/loopal-memory/eval/data/fixtures/reference-grafana-dashboard.md create mode 100644 crates/loopal-memory/eval/data/fixtures/reference-volcengine-api.md create mode 100644 crates/loopal-memory/eval/data/fixtures/replica-lag-alerting.md create mode 100644 crates/loopal-memory/eval/data/fixtures/runner-autoscale-tuning.md create mode 100644 crates/loopal-memory/eval/data/fixtures/scanner-idempotency.md create mode 100644 crates/loopal-memory/eval/data/fixtures/scanner-replay.md create mode 100644 crates/loopal-memory/eval/data/fixtures/scanner-state.md create mode 100644 crates/loopal-memory/eval/data/fixtures/schema-migration-flyway.md create mode 100644 crates/loopal-memory/eval/data/fixtures/secrets-oidc-vault.md create mode 100644 crates/loopal-memory/eval/data/fixtures/self-hosted-runner-pool.md create mode 100644 crates/loopal-memory/eval/data/fixtures/session-expiry-policy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/session-fixation-test.md create mode 100644 crates/loopal-memory/eval/data/fixtures/slo-definitions.md create mode 100644 crates/loopal-memory/eval/data/fixtures/slow-query-triage.md create mode 100644 crates/loopal-memory/eval/data/fixtures/streaming-replication-setup.md create mode 100644 crates/loopal-memory/eval/data/fixtures/structured-log-schema.md create mode 100644 crates/loopal-memory/eval/data/fixtures/suspicious-login-detection.md create mode 100644 crates/loopal-memory/eval/data/fixtures/test-parallelization-shards.md create mode 100644 crates/loopal-memory/eval/data/fixtures/trace-sampling-policy.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-algorithm-playbook.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-automation.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-cooldown.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-dm-outreach.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-list-curation.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-long-tweets.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-monitor-scraping.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-rate-limit.md create mode 100644 crates/loopal-memory/eval/data/fixtures/twitter-reply-cold-start.md create mode 100644 crates/loopal-memory/eval/data/fixtures/user-tone-prefer-direct.md create mode 100644 crates/loopal-memory/eval/data/fixtures/vacuum-tuning-guide.md create mode 100644 crates/loopal-memory/eval/data/ground_truth.yaml create mode 100644 crates/loopal-memory/eval/src/baseline.rs create mode 100644 crates/loopal-memory/eval/src/fixture.rs create mode 100644 crates/loopal-memory/eval/src/ground_truth.rs create mode 100644 crates/loopal-memory/eval/src/main.rs create mode 100644 crates/loopal-memory/eval/src/metrics.rs create mode 100644 crates/loopal-memory/eval/src/report.rs create mode 100644 crates/loopal-memory/eval/src/report_retrieved.rs create mode 100644 crates/loopal-memory/eval/src/runner.rs create mode 100644 crates/loopal-memory/eval/src/synth_eval.rs rename crates/loopal-memory/src/{extraction.rs => agent_output.rs} (100%) create mode 100644 crates/loopal-memory/src/event_log/gc.rs create mode 100644 crates/loopal-memory/src/event_log/mod.rs create mode 100644 crates/loopal-memory/src/event_log/recall_stats.rs create mode 100644 crates/loopal-memory/src/event_log/schema.rs create mode 100644 crates/loopal-memory/src/event_log/writer.rs create mode 100644 crates/loopal-memory/src/extract/errors.rs create mode 100644 crates/loopal-memory/src/extract/frontmatter.rs create mode 100644 crates/loopal-memory/src/extract/mod.rs create mode 100644 crates/loopal-memory/src/extract/related.rs create mode 100644 crates/loopal-memory/src/extract/wikilink.rs create mode 100644 crates/loopal-memory/src/graph/co_occur.rs create mode 100644 crates/loopal-memory/src/graph/format.rs create mode 100644 crates/loopal-memory/src/graph/mod.rs create mode 100644 crates/loopal-memory/src/graph/recall/anchors.rs create mode 100644 crates/loopal-memory/src/graph/recall/emit.rs create mode 100644 crates/loopal-memory/src/graph/recall/mod.rs create mode 100644 crates/loopal-memory/src/graph/score.rs create mode 100644 crates/loopal-memory/src/init/gitignore.rs create mode 100644 crates/loopal-memory/src/init/mod.rs create mode 100644 crates/loopal-memory/src/policy.rs create mode 100644 crates/loopal-memory/src/render/mod.rs create mode 100644 crates/loopal-memory/src/render/ranking.rs create mode 100644 crates/loopal-memory/src/store/candidates.rs create mode 100644 crates/loopal-memory/src/store/connection.rs create mode 100644 crates/loopal-memory/src/store/edge_ops.rs create mode 100644 crates/loopal-memory/src/store/file_ops.rs create mode 100644 crates/loopal-memory/src/store/migrations.rs create mode 100644 crates/loopal-memory/src/store/mod.rs create mode 100644 crates/loopal-memory/src/store/node_ops.rs create mode 100644 crates/loopal-memory/src/store/queries_edge.rs create mode 100644 crates/loopal-memory/src/store/queries_files.rs create mode 100644 crates/loopal-memory/src/store/queries_fts.rs create mode 100644 crates/loopal-memory/src/store/queries_graph.rs create mode 100644 crates/loopal-memory/src/store/queries_node/mod.rs create mode 100644 crates/loopal-memory/src/store/queries_node/read.rs create mode 100644 crates/loopal-memory/src/store/queries_node/write.rs create mode 100644 crates/loopal-memory/src/store/schema.rs create mode 100644 crates/loopal-memory/src/store/schema.sql create mode 100644 crates/loopal-memory/src/store/types.rs create mode 100644 crates/loopal-memory/src/sync/init.rs create mode 100644 crates/loopal-memory/src/sync/mod.rs create mode 100644 crates/loopal-memory/src/sync/persist.rs create mode 100644 crates/loopal-memory/src/sync/subsystem.rs create mode 100644 crates/loopal-memory/src/sync/watcher/mod.rs create mode 100644 crates/loopal-memory/src/sync/watcher/rename.rs create mode 100644 crates/loopal-memory/src/sync/watcher/setup.rs create mode 100644 crates/loopal-memory/src/synthesize/derive_chain.rs create mode 100644 crates/loopal-memory/src/synthesize/mod.rs create mode 100644 crates/loopal-memory/src/synthesize/slug_cluster.rs create mode 100644 crates/loopal-memory/src/synthesize/supersede.rs create mode 100644 crates/loopal-memory/src/synthesize/tfidf.rs create mode 100644 crates/loopal-memory/src/synthesize/token_cluster.rs create mode 100644 crates/loopal-memory/src/tools/importance.rs create mode 100644 crates/loopal-memory/src/tools/mod.rs create mode 100644 crates/loopal-memory/src/tools/recall.rs create mode 100644 crates/loopal-memory/tests/suite/associative_recall_integration_test.rs create mode 100644 crates/loopal-memory/tests/suite/candidates_test.rs create mode 100644 crates/loopal-memory/tests/suite/event_log_gc_test.rs create mode 100644 crates/loopal-memory/tests/suite/event_log_recovery_test.rs create mode 100644 crates/loopal-memory/tests/suite/event_log_test.rs create mode 100644 crates/loopal-memory/tests/suite/extract_frontmatter_test.rs create mode 100644 crates/loopal-memory/tests/suite/extract_orchestrator_test.rs create mode 100644 crates/loopal-memory/tests/suite/extract_related_test.rs create mode 100644 crates/loopal-memory/tests/suite/extract_wikilink_test.rs create mode 100644 crates/loopal-memory/tests/suite/file_cache_test.rs create mode 100644 crates/loopal-memory/tests/suite/importance_test.rs create mode 100644 crates/loopal-memory/tests/suite/memory_init_integration_test.rs create mode 100644 crates/loopal-memory/tests/suite/recall_anchor_test.rs create mode 100644 crates/loopal-memory/tests/suite/recall_format_test.rs create mode 100644 crates/loopal-memory/tests/suite/recall_query_test.rs create mode 100644 crates/loopal-memory/tests/suite/recall_tool_test.rs create mode 100644 crates/loopal-memory/tests/suite/rename_node_test.rs create mode 100644 crates/loopal-memory/tests/suite/render_index_test.rs create mode 100644 crates/loopal-memory/tests/suite/render_ranking_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_edge_case_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_edge_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_fts_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_graph_filter_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_graph_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_node_test.rs create mode 100644 crates/loopal-memory/tests/suite/store_types_test.rs create mode 100644 crates/loopal-memory/tests/suite/sync_init_test.rs create mode 100644 crates/loopal-memory/tests/suite/synth_derive_test.rs create mode 100644 crates/loopal-memory/tests/suite/synth_slug_test.rs create mode 100644 crates/loopal-memory/tests/suite/synth_supersede_test.rs create mode 100644 crates/loopal-memory/tests/suite/synth_token_test.rs diff --git a/CLAUDE.md b/CLAUDE.md index 68c5938c..67767ff6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -279,11 +279,15 @@ Both syntaxes use the strict regex `[a-z][a-z0-9_]*` for NAME. ~/.loopal/settings.json Global settings ~/.loopal/LOOPAL.md Global instructions (injected into system prompt) ~/.loopal/classifier.md Optional custom Classifier-mode system prompt +~/.loopal/sessions/{id}/memory.db Per-session memory graph SQLite (derived from .loopal/memory/*.md) /.loopal/settings.json Project settings /.loopal/classifier.md Project-level Classifier prompt override /.loopal/settings.local.json Local overrides (gitignored) +/.loopal/memory/*.md User-tracked source-of-truth memory notes (NOT runtime data) ``` +**Per-session derived data**: `memory.db` lives under `~/.loopal/sessions/{session_id}/`, NEVER under `.loopal/memory/`. The `.loopal/memory/` directory is user SSOT (`.md` source notes only). Derived index is rebuilt from source on each session start; no cross-session reuse. + `classifier.md` is loaded in the same global → project → local order as settings, but with **replace semantics** (highest-priority non-empty layer wins; not concatenated). Absent on every layer ⇒ the built-in default prompt is used. Environment variable overrides use `LOOPAL_` prefix. Key settings: diff --git a/MODULE.bazel b/MODULE.bazel index 656dfa0f..1745b281 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -156,6 +156,13 @@ crate.spec(package = "agent-client-protocol-schema", version = "0.11") crate.spec(package = "strum", version = "0.28", features = ["derive"]) crate.spec(package = "derive_more", version = "2", features = ["from", "display"]) +# --- Memory Graph / Embedded SQLite --- +crate.spec(package = "rusqlite", version = "0.32", features = ["bundled", "chrono"]) +crate.spec(package = "notify", version = "6") +crate.spec(package = "notify-debouncer-mini", version = "0.4") +crate.spec(package = "unicode-segmentation", version = "1") +crate.spec(package = "flate2", version = "1") + # --- Testing --- crate.spec(package = "tempfile", version = "3") crate.spec(package = "wiremock", version = "0.6") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index fd292374..f5ab6426 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -2848,7 +2848,7 @@ "@@rules_rust+//crate_universe:extensions.bzl%crate": { "general": { "bzlTransitiveDigest": "E5YXPQ9XNzBESacNH2A2Xx95bBZ1c8JpMTaaDKM0PPs=", - "usagesDigest": "k0VN6aEghPFq7KmjY6IRnxMHxM2NDZcQ7DRy9xBQ+lM=", + "usagesDigest": "ArTU+vlKpP3XSRyjzZK1vN+YrS5yGep/s98+0XwNgLc=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": { @@ -2866,9 +2866,9 @@ "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", "attributes": { "contents": { - "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"age-0.10.1\",\n actual = \"@crates__age-0.10.1//:age\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"age\",\n actual = \"@crates__age-0.10.1//:age\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"agent-client-protocol-schema-0.11.7\",\n actual = \"@crates__agent-client-protocol-schema-0.11.7//:agent_client_protocol_schema\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"agent-client-protocol-schema\",\n actual = \"@crates__agent-client-protocol-schema-0.11.7//:agent_client_protocol_schema\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aho-corasick-1.1.4\",\n actual = \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aho-corasick\",\n actual = \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow-1.0.102\",\n actual = \"@crates__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow\",\n actual = \"@crates__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arboard-3.6.1\",\n actual = \"@crates__arboard-3.6.1//:arboard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arboard\",\n actual = \"@crates__arboard-3.6.1//:arboard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-trait-0.1.89\",\n actual = \"@crates__async-trait-0.1.89//:async_trait\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-trait\",\n actual = \"@crates__async-trait-0.1.89//:async_trait\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"base64-0.22.1\",\n actual = \"@crates__base64-0.22.1//:base64\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"base64\",\n actual = \"@crates__base64-0.22.1//:base64\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"chrono-0.4.44\",\n actual = \"@crates__chrono-0.4.44//:chrono\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"chrono\",\n actual = \"@crates__chrono-0.4.44//:chrono\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap-4.6.1\",\n actual = \"@crates__clap-4.6.1//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap\",\n actual = \"@crates__clap-4.6.1//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cron-0.15.0\",\n actual = \"@crates__cron-0.15.0//:cron\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cron\",\n actual = \"@crates__cron-0.15.0//:cron\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossterm-0.28.1\",\n actual = \"@crates__crossterm-0.28.1//:crossterm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossterm\",\n actual = \"@crates__crossterm-0.28.1//:crossterm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"derive_more-2.1.1\",\n actual = \"@crates__derive_more-2.1.1//:derive_more\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"derive_more\",\n actual = \"@crates__derive_more-2.1.1//:derive_more\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"dirs-6.0.0\",\n actual = \"@crates__dirs-6.0.0//:dirs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"dirs\",\n actual = \"@crates__dirs-6.0.0//:dirs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"eventsource-stream-0.2.3\",\n actual = \"@crates__eventsource-stream-0.2.3//:eventsource_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"eventsource-stream\",\n actual = \"@crates__eventsource-stream-0.2.3//:eventsource_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"filetime-0.2.29\",\n actual = \"@crates__filetime-0.2.29//:filetime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"filetime\",\n actual = \"@crates__filetime-0.2.29//:filetime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures-0.3.32\",\n actual = \"@crates__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures\",\n actual = \"@crates__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"globset-0.4.18\",\n actual = \"@crates__globset-0.4.18//:globset\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"globset\",\n actual = \"@crates__globset-0.4.18//:globset\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"html2text-0.12.6\",\n actual = \"@crates__html2text-0.12.6//:html2text\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"html2text\",\n actual = \"@crates__html2text-0.12.6//:html2text\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ignore-0.4.25\",\n actual = \"@crates__ignore-0.4.25//:ignore\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ignore\",\n actual = \"@crates__ignore-0.4.25//:ignore\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"image-0.25.10\",\n actual = \"@crates__image-0.25.10//:image\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"image\",\n actual = \"@crates__image-0.25.10//:image\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"include_dir-0.7.4\",\n actual = \"@crates__include_dir-0.7.4//:include_dir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"include_dir\",\n actual = \"@crates__include_dir-0.7.4//:include_dir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indexmap-2.14.0\",\n actual = \"@crates__indexmap-2.14.0//:indexmap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indexmap\",\n actual = \"@crates__indexmap-2.14.0//:indexmap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc-0.2.186\",\n actual = \"@crates__libc-0.2.186//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc\",\n actual = \"@crates__libc-0.2.186//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"minijinja-2.19.0\",\n actual = \"@crates__minijinja-2.19.0//:minijinja\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"minijinja\",\n actual = \"@crates__minijinja-2.19.0//:minijinja\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell-1.21.4\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opener-0.7.2\",\n actual = \"@crates__opener-0.7.2//:opener\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opener\",\n actual = \"@crates__opener-0.7.2//:opener\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-0.28.0\",\n actual = \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry\",\n actual = \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-appender-tracing-0.28.1\",\n actual = \"@crates__opentelemetry-appender-tracing-0.28.1//:opentelemetry_appender_tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-appender-tracing\",\n actual = \"@crates__opentelemetry-appender-tracing-0.28.1//:opentelemetry_appender_tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-otlp-0.28.0\",\n actual = \"@crates__opentelemetry-otlp-0.28.0//:opentelemetry_otlp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-otlp\",\n actual = \"@crates__opentelemetry-otlp-0.28.0//:opentelemetry_otlp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry_sdk-0.28.0\",\n actual = \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry_sdk\",\n actual = \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"parking_lot-0.12.5\",\n actual = \"@crates__parking_lot-0.12.5//:parking_lot\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"parking_lot\",\n actual = \"@crates__parking_lot-0.12.5//:parking_lot\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pdf-extract-0.7.12\",\n actual = \"@crates__pdf-extract-0.7.12//:pdf_extract\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pdf-extract\",\n actual = \"@crates__pdf-extract-0.7.12//:pdf_extract\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pin-project-lite-0.2.17\",\n actual = \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pin-project-lite\",\n actual = \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pulldown-cmark-0.12.2\",\n actual = \"@crates__pulldown-cmark-0.12.2//:pulldown_cmark\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pulldown-cmark\",\n actual = \"@crates__pulldown-cmark-0.12.2//:pulldown_cmark\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand-0.9.4\",\n actual = \"@crates__rand-0.9.4//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand\",\n actual = \"@crates__rand-0.9.4//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ratatui-0.30.0\",\n actual = \"@crates__ratatui-0.30.0//:ratatui\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ratatui\",\n actual = \"@crates__ratatui-0.30.0//:ratatui\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex-1.12.3\",\n actual = \"@crates__regex-1.12.3//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex\",\n actual = \"@crates__regex-1.12.3//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"reqwest-0.13.3\",\n actual = \"@crates__reqwest-0.13.3//:reqwest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"reqwest\",\n actual = \"@crates__reqwest-0.13.3//:reqwest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rmcp-1.7.0\",\n actual = \"@crates__rmcp-1.7.0//:rmcp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rmcp\",\n actual = \"@crates__rmcp-1.7.0//:rmcp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rpassword-7.5.2\",\n actual = \"@crates__rpassword-7.5.2//:rpassword\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rpassword\",\n actual = \"@crates__rpassword-7.5.2//:rpassword\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"schemars-1.2.1\",\n actual = \"@crates__schemars-1.2.1//:schemars\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"schemars\",\n actual = \"@crates__schemars-1.2.1//:schemars\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"secrecy-0.10.3\",\n actual = \"@crates__secrecy-0.10.3//:secrecy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"secrecy\",\n actual = \"@crates__secrecy-0.10.3//:secrecy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.228\",\n actual = \"@crates__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.149\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.149//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml-0.9.34+deprecated\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2-0.10.9\",\n actual = \"@crates__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2\",\n actual = \"@crates__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"strum-0.28.0\",\n actual = \"@crates__strum-0.28.0//:strum\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"strum\",\n actual = \"@crates__strum-0.28.0//:strum\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syntect-5.3.0\",\n actual = \"@crates__syntect-5.3.0//:syntect\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syntect\",\n actual = \"@crates__syntect-5.3.0//:syntect\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile-3.27.0\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"textwrap-0.16.2\",\n actual = \"@crates__textwrap-0.16.2//:textwrap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"textwrap\",\n actual = \"@crates__textwrap-0.16.2//:textwrap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror-2.0.18\",\n actual = \"@crates__thiserror-2.0.18//:thiserror\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror\",\n actual = \"@crates__thiserror-2.0.18//:thiserror\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tiktoken-rs-0.6.0\",\n actual = \"@crates__tiktoken-rs-0.6.0//:tiktoken_rs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tiktoken-rs\",\n actual = \"@crates__tiktoken-rs-0.6.0//:tiktoken_rs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-1.52.3\",\n actual = \"@crates__tokio-1.52.3//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio\",\n actual = \"@crates__tokio-1.52.3//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-stream-0.1.18\",\n actual = \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-stream\",\n actual = \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util-0.7.18\",\n actual = \"@crates__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util\",\n actual = \"@crates__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-0.1.44\",\n actual = \"@crates__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing\",\n actual = \"@crates__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-appender-0.2.5\",\n actual = \"@crates__tracing-appender-0.2.5//:tracing_appender\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-appender\",\n actual = \"@crates__tracing-appender-0.2.5//:tracing_appender\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-opentelemetry-0.29.0\",\n actual = \"@crates__tracing-opentelemetry-0.29.0//:tracing_opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-opentelemetry\",\n actual = \"@crates__tracing-opentelemetry-0.29.0//:tracing_opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber-0.3.23\",\n actual = \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber\",\n actual = \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"two-face-0.5.1\",\n actual = \"@crates__two-face-0.5.1//:two_face\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"two-face\",\n actual = \"@crates__two-face-0.5.1//:two_face\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-width-0.2.2\",\n actual = \"@crates__unicode-width-0.2.2//:unicode_width\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-width\",\n actual = \"@crates__unicode-width-0.2.2//:unicode_width\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"uuid-1.23.1\",\n actual = \"@crates__uuid-1.23.1//:uuid\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"uuid\",\n actual = \"@crates__uuid-1.23.1//:uuid\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"walkdir-2.5.0\",\n actual = \"@crates__walkdir-2.5.0//:walkdir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"walkdir\",\n actual = \"@crates__walkdir-2.5.0//:walkdir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"windows-sys-0.59.0\",\n actual = \"@crates__windows-sys-0.59.0//:windows_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"windows-sys\",\n actual = \"@crates__windows-sys-0.59.0//:windows_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wiremock-0.6.5\",\n actual = \"@crates__wiremock-0.6.5//:wiremock\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wiremock\",\n actual = \"@crates__wiremock-0.6.5//:wiremock\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zeroize-1.8.2\",\n actual = \"@crates__zeroize-1.8.2//:zeroize\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zeroize\",\n actual = \"@crates__zeroize-1.8.2//:zeroize\",\n tags = [\"manual\"],\n)\n", + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"age-0.10.1\",\n actual = \"@crates__age-0.10.1//:age\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"age\",\n actual = \"@crates__age-0.10.1//:age\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"agent-client-protocol-schema-0.11.7\",\n actual = \"@crates__agent-client-protocol-schema-0.11.7//:agent_client_protocol_schema\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"agent-client-protocol-schema\",\n actual = \"@crates__agent-client-protocol-schema-0.11.7//:agent_client_protocol_schema\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aho-corasick-1.1.4\",\n actual = \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"aho-corasick\",\n actual = \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow-1.0.102\",\n actual = \"@crates__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"anyhow\",\n actual = \"@crates__anyhow-1.0.102//:anyhow\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arboard-3.6.1\",\n actual = \"@crates__arboard-3.6.1//:arboard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"arboard\",\n actual = \"@crates__arboard-3.6.1//:arboard\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-trait-0.1.89\",\n actual = \"@crates__async-trait-0.1.89//:async_trait\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"async-trait\",\n actual = \"@crates__async-trait-0.1.89//:async_trait\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"base64-0.22.1\",\n actual = \"@crates__base64-0.22.1//:base64\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"base64\",\n actual = \"@crates__base64-0.22.1//:base64\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"chrono-0.4.44\",\n actual = \"@crates__chrono-0.4.44//:chrono\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"chrono\",\n actual = \"@crates__chrono-0.4.44//:chrono\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap-4.6.1\",\n actual = \"@crates__clap-4.6.1//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"clap\",\n actual = \"@crates__clap-4.6.1//:clap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cron-0.15.0\",\n actual = \"@crates__cron-0.15.0//:cron\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"cron\",\n actual = \"@crates__cron-0.15.0//:cron\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossterm-0.28.1\",\n actual = \"@crates__crossterm-0.28.1//:crossterm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossterm\",\n actual = \"@crates__crossterm-0.28.1//:crossterm\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"derive_more-2.1.1\",\n actual = \"@crates__derive_more-2.1.1//:derive_more\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"derive_more\",\n actual = \"@crates__derive_more-2.1.1//:derive_more\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"dirs-6.0.0\",\n actual = \"@crates__dirs-6.0.0//:dirs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"dirs\",\n actual = \"@crates__dirs-6.0.0//:dirs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"eventsource-stream-0.2.3\",\n actual = \"@crates__eventsource-stream-0.2.3//:eventsource_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"eventsource-stream\",\n actual = \"@crates__eventsource-stream-0.2.3//:eventsource_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"filetime-0.2.29\",\n actual = \"@crates__filetime-0.2.29//:filetime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"filetime\",\n actual = \"@crates__filetime-0.2.29//:filetime\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"flate2-1.1.9\",\n actual = \"@crates__flate2-1.1.9//:flate2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"flate2\",\n actual = \"@crates__flate2-1.1.9//:flate2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures-0.3.32\",\n actual = \"@crates__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"futures\",\n actual = \"@crates__futures-0.3.32//:futures\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"globset-0.4.18\",\n actual = \"@crates__globset-0.4.18//:globset\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"globset\",\n actual = \"@crates__globset-0.4.18//:globset\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"html2text-0.12.6\",\n actual = \"@crates__html2text-0.12.6//:html2text\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"html2text\",\n actual = \"@crates__html2text-0.12.6//:html2text\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ignore-0.4.25\",\n actual = \"@crates__ignore-0.4.25//:ignore\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ignore\",\n actual = \"@crates__ignore-0.4.25//:ignore\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"image-0.25.10\",\n actual = \"@crates__image-0.25.10//:image\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"image\",\n actual = \"@crates__image-0.25.10//:image\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"include_dir-0.7.4\",\n actual = \"@crates__include_dir-0.7.4//:include_dir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"include_dir\",\n actual = \"@crates__include_dir-0.7.4//:include_dir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indexmap-2.14.0\",\n actual = \"@crates__indexmap-2.14.0//:indexmap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"indexmap\",\n actual = \"@crates__indexmap-2.14.0//:indexmap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc-0.2.186\",\n actual = \"@crates__libc-0.2.186//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"libc\",\n actual = \"@crates__libc-0.2.186//:libc\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"minijinja-2.20.0\",\n actual = \"@crates__minijinja-2.20.0//:minijinja\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"minijinja\",\n actual = \"@crates__minijinja-2.20.0//:minijinja\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"notify-6.1.1\",\n actual = \"@crates__notify-6.1.1//:notify\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"notify\",\n actual = \"@crates__notify-6.1.1//:notify\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"notify-debouncer-mini-0.4.1\",\n actual = \"@crates__notify-debouncer-mini-0.4.1//:notify_debouncer_mini\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"notify-debouncer-mini\",\n actual = \"@crates__notify-debouncer-mini-0.4.1//:notify_debouncer_mini\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell-1.21.4\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"once_cell\",\n actual = \"@crates__once_cell-1.21.4//:once_cell\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opener-0.7.2\",\n actual = \"@crates__opener-0.7.2//:opener\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opener\",\n actual = \"@crates__opener-0.7.2//:opener\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-0.28.0\",\n actual = \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry\",\n actual = \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-appender-tracing-0.28.1\",\n actual = \"@crates__opentelemetry-appender-tracing-0.28.1//:opentelemetry_appender_tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-appender-tracing\",\n actual = \"@crates__opentelemetry-appender-tracing-0.28.1//:opentelemetry_appender_tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-otlp-0.28.0\",\n actual = \"@crates__opentelemetry-otlp-0.28.0//:opentelemetry_otlp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry-otlp\",\n actual = \"@crates__opentelemetry-otlp-0.28.0//:opentelemetry_otlp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry_sdk-0.28.0\",\n actual = \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"opentelemetry_sdk\",\n actual = \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"parking_lot-0.12.5\",\n actual = \"@crates__parking_lot-0.12.5//:parking_lot\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"parking_lot\",\n actual = \"@crates__parking_lot-0.12.5//:parking_lot\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pdf-extract-0.7.12\",\n actual = \"@crates__pdf-extract-0.7.12//:pdf_extract\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pdf-extract\",\n actual = \"@crates__pdf-extract-0.7.12//:pdf_extract\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pin-project-lite-0.2.17\",\n actual = \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pin-project-lite\",\n actual = \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pulldown-cmark-0.12.2\",\n actual = \"@crates__pulldown-cmark-0.12.2//:pulldown_cmark\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"pulldown-cmark\",\n actual = \"@crates__pulldown-cmark-0.12.2//:pulldown_cmark\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand-0.9.4\",\n actual = \"@crates__rand-0.9.4//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rand\",\n actual = \"@crates__rand-0.9.4//:rand\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ratatui-0.30.0\",\n actual = \"@crates__ratatui-0.30.0//:ratatui\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"ratatui\",\n actual = \"@crates__ratatui-0.30.0//:ratatui\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex-1.12.3\",\n actual = \"@crates__regex-1.12.3//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"regex\",\n actual = \"@crates__regex-1.12.3//:regex\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"reqwest-0.13.4\",\n actual = \"@crates__reqwest-0.13.4//:reqwest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"reqwest\",\n actual = \"@crates__reqwest-0.13.4//:reqwest\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rmcp-1.7.0\",\n actual = \"@crates__rmcp-1.7.0//:rmcp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rmcp\",\n actual = \"@crates__rmcp-1.7.0//:rmcp\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rpassword-7.5.3\",\n actual = \"@crates__rpassword-7.5.3//:rpassword\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rpassword\",\n actual = \"@crates__rpassword-7.5.3//:rpassword\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rusqlite-0.32.1\",\n actual = \"@crates__rusqlite-0.32.1//:rusqlite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"rusqlite\",\n actual = \"@crates__rusqlite-0.32.1//:rusqlite\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"schemars-1.2.1\",\n actual = \"@crates__schemars-1.2.1//:schemars\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"schemars\",\n actual = \"@crates__schemars-1.2.1//:schemars\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"secrecy-0.10.3\",\n actual = \"@crates__secrecy-0.10.3//:secrecy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"secrecy\",\n actual = \"@crates__secrecy-0.10.3//:secrecy\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.228\",\n actual = \"@crates__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.228//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.150\",\n actual = \"@crates__serde_json-1.0.150//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.150//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml-0.9.34+deprecated\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_yaml\",\n actual = \"@crates__serde_yaml-0.9.34-deprecated//:serde_yaml\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2-0.10.9\",\n actual = \"@crates__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"sha2\",\n actual = \"@crates__sha2-0.10.9//:sha2\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"strum-0.28.0\",\n actual = \"@crates__strum-0.28.0//:strum\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"strum\",\n actual = \"@crates__strum-0.28.0//:strum\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syntect-5.3.0\",\n actual = \"@crates__syntect-5.3.0//:syntect\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"syntect\",\n actual = \"@crates__syntect-5.3.0//:syntect\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile-3.27.0\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tempfile\",\n actual = \"@crates__tempfile-3.27.0//:tempfile\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"textwrap-0.16.2\",\n actual = \"@crates__textwrap-0.16.2//:textwrap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"textwrap\",\n actual = \"@crates__textwrap-0.16.2//:textwrap\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror-2.0.18\",\n actual = \"@crates__thiserror-2.0.18//:thiserror\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"thiserror\",\n actual = \"@crates__thiserror-2.0.18//:thiserror\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tiktoken-rs-0.6.0\",\n actual = \"@crates__tiktoken-rs-0.6.0//:tiktoken_rs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tiktoken-rs\",\n actual = \"@crates__tiktoken-rs-0.6.0//:tiktoken_rs\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-1.52.3\",\n actual = \"@crates__tokio-1.52.3//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio\",\n actual = \"@crates__tokio-1.52.3//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-stream-0.1.18\",\n actual = \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-stream\",\n actual = \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util-0.7.18\",\n actual = \"@crates__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-util\",\n actual = \"@crates__tokio-util-0.7.18//:tokio_util\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-0.1.44\",\n actual = \"@crates__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing\",\n actual = \"@crates__tracing-0.1.44//:tracing\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-appender-0.2.5\",\n actual = \"@crates__tracing-appender-0.2.5//:tracing_appender\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-appender\",\n actual = \"@crates__tracing-appender-0.2.5//:tracing_appender\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-opentelemetry-0.29.0\",\n actual = \"@crates__tracing-opentelemetry-0.29.0//:tracing_opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-opentelemetry\",\n actual = \"@crates__tracing-opentelemetry-0.29.0//:tracing_opentelemetry\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber-0.3.23\",\n actual = \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tracing-subscriber\",\n actual = \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"two-face-0.5.1\",\n actual = \"@crates__two-face-0.5.1//:two_face\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"two-face\",\n actual = \"@crates__two-face-0.5.1//:two_face\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-segmentation-1.13.2\",\n actual = \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-segmentation\",\n actual = \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-width-0.2.2\",\n actual = \"@crates__unicode-width-0.2.2//:unicode_width\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"unicode-width\",\n actual = \"@crates__unicode-width-0.2.2//:unicode_width\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"uuid-1.23.2\",\n actual = \"@crates__uuid-1.23.2//:uuid\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"uuid\",\n actual = \"@crates__uuid-1.23.2//:uuid\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"walkdir-2.5.0\",\n actual = \"@crates__walkdir-2.5.0//:walkdir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"walkdir\",\n actual = \"@crates__walkdir-2.5.0//:walkdir\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"windows-sys-0.59.0\",\n actual = \"@crates__windows-sys-0.59.0//:windows_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"windows-sys\",\n actual = \"@crates__windows-sys-0.59.0//:windows_sys\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wiremock-0.6.5\",\n actual = \"@crates__wiremock-0.6.5//:wiremock\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"wiremock\",\n actual = \"@crates__wiremock-0.6.5//:wiremock\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zeroize-1.8.2\",\n actual = \"@crates__zeroize-1.8.2//:zeroize\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"zeroize\",\n actual = \"@crates__zeroize-1.8.2//:zeroize\",\n tags = [\"manual\"],\n)\n", "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", - "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list.\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"age\": Label(\"@crates//:age-0.10.1\"),\n \"agent-client-protocol-schema\": Label(\"@crates//:agent-client-protocol-schema-0.11.7\"),\n \"aho-corasick\": Label(\"@crates//:aho-corasick-1.1.4\"),\n \"anyhow\": Label(\"@crates//:anyhow-1.0.102\"),\n \"arboard\": Label(\"@crates//:arboard-3.6.1\"),\n \"base64\": Label(\"@crates//:base64-0.22.1\"),\n \"chrono\": Label(\"@crates//:chrono-0.4.44\"),\n \"clap\": Label(\"@crates//:clap-4.6.1\"),\n \"cron\": Label(\"@crates//:cron-0.15.0\"),\n \"crossterm\": Label(\"@crates//:crossterm-0.28.1\"),\n \"derive_more\": Label(\"@crates//:derive_more-2.1.1\"),\n \"dirs\": Label(\"@crates//:dirs-6.0.0\"),\n \"eventsource-stream\": Label(\"@crates//:eventsource-stream-0.2.3\"),\n \"filetime\": Label(\"@crates//:filetime-0.2.29\"),\n \"futures\": Label(\"@crates//:futures-0.3.32\"),\n \"globset\": Label(\"@crates//:globset-0.4.18\"),\n \"html2text\": Label(\"@crates//:html2text-0.12.6\"),\n \"ignore\": Label(\"@crates//:ignore-0.4.25\"),\n \"image\": Label(\"@crates//:image-0.25.10\"),\n \"include_dir\": Label(\"@crates//:include_dir-0.7.4\"),\n \"indexmap\": Label(\"@crates//:indexmap-2.14.0\"),\n \"libc\": Label(\"@crates//:libc-0.2.186\"),\n \"minijinja\": Label(\"@crates//:minijinja-2.19.0\"),\n \"once_cell\": Label(\"@crates//:once_cell-1.21.4\"),\n \"opener\": Label(\"@crates//:opener-0.7.2\"),\n \"opentelemetry\": Label(\"@crates//:opentelemetry-0.28.0\"),\n \"opentelemetry-appender-tracing\": Label(\"@crates//:opentelemetry-appender-tracing-0.28.1\"),\n \"opentelemetry-otlp\": Label(\"@crates//:opentelemetry-otlp-0.28.0\"),\n \"opentelemetry_sdk\": Label(\"@crates//:opentelemetry_sdk-0.28.0\"),\n \"parking_lot\": Label(\"@crates//:parking_lot-0.12.5\"),\n \"pdf-extract\": Label(\"@crates//:pdf-extract-0.7.12\"),\n \"pin-project-lite\": Label(\"@crates//:pin-project-lite-0.2.17\"),\n \"pulldown-cmark\": Label(\"@crates//:pulldown-cmark-0.12.2\"),\n \"rand\": Label(\"@crates//:rand-0.9.4\"),\n \"ratatui\": Label(\"@crates//:ratatui-0.30.0\"),\n \"regex\": Label(\"@crates//:regex-1.12.3\"),\n \"reqwest\": Label(\"@crates//:reqwest-0.13.3\"),\n \"rmcp\": Label(\"@crates//:rmcp-1.7.0\"),\n \"rpassword\": Label(\"@crates//:rpassword-7.5.2\"),\n \"schemars\": Label(\"@crates//:schemars-1.2.1\"),\n \"secrecy\": Label(\"@crates//:secrecy-0.10.3\"),\n \"serde\": Label(\"@crates//:serde-1.0.228\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.149\"),\n \"serde_yaml\": Label(\"@crates//:serde_yaml-0.9.34+deprecated\"),\n \"sha2\": Label(\"@crates//:sha2-0.10.9\"),\n \"strum\": Label(\"@crates//:strum-0.28.0\"),\n \"syntect\": Label(\"@crates//:syntect-5.3.0\"),\n \"tempfile\": Label(\"@crates//:tempfile-3.27.0\"),\n \"textwrap\": Label(\"@crates//:textwrap-0.16.2\"),\n \"thiserror\": Label(\"@crates//:thiserror-2.0.18\"),\n \"tiktoken-rs\": Label(\"@crates//:tiktoken-rs-0.6.0\"),\n \"tokio\": Label(\"@crates//:tokio-1.52.3\"),\n \"tokio-stream\": Label(\"@crates//:tokio-stream-0.1.18\"),\n \"tokio-util\": Label(\"@crates//:tokio-util-0.7.18\"),\n \"tracing\": Label(\"@crates//:tracing-0.1.44\"),\n \"tracing-appender\": Label(\"@crates//:tracing-appender-0.2.5\"),\n \"tracing-opentelemetry\": Label(\"@crates//:tracing-opentelemetry-0.29.0\"),\n \"tracing-subscriber\": Label(\"@crates//:tracing-subscriber-0.3.23\"),\n \"two-face\": Label(\"@crates//:two-face-0.5.1\"),\n \"unicode-width\": Label(\"@crates//:unicode-width-0.2.2\"),\n \"uuid\": Label(\"@crates//:uuid-1.23.1\"),\n \"walkdir\": Label(\"@crates//:walkdir-2.5.0\"),\n \"windows-sys\": Label(\"@crates//:windows-sys-0.59.0\"),\n \"wiremock\": Label(\"@crates//:wiremock-0.6.5\"),\n \"zeroize\": Label(\"@crates//:zeroize-1.8.2\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"async-trait\": Label(\"@crates//:async-trait-0.1.89\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-linux-android\": [],\n \"aarch64-pc-windows-gnullvm\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), target_os = \\\"windows\\\"))\": [],\n \"cfg(all(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), target_vendor = \\\"apple\\\", any(target_os = \\\"ios\\\", target_os = \\\"macos\\\", target_os = \\\"tvos\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\")))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(any(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), all(target_arch = \\\"arm\\\", target_endian = \\\"little\\\")), any(target_os = \\\"android\\\", target_os = \\\"linux\\\")))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_arch = \\\"x86_64\\\", target_arch = \\\"arm64ec\\\"), target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(all(any(target_os = \\\"android\\\", target_os = \\\"linux\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(curve25519_dalek_backend = \\\"fiat\\\"), not(curve25519_dalek_backend = \\\"serial\\\"), target_arch = \\\"x86_64\\\"))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_vendor = \\\"apple\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(target_arch = \\\"loongarch64\\\", target_os = \\\"linux\\\"))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", not(target_os = \\\"wasi\\\")))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p2\\\"))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p3\\\"))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\"))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\": [],\n \"cfg(all(unix, not(any(target_os = \\\"macos\\\", target_os = \\\"android\\\", target_os = \\\"emscripten\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any())\": [],\n \"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\": [],\n \"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\": [],\n \"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\": [],\n \"cfg(any(target_os = \\\"linux\\\", target_os = \\\"macos\\\", target_os = \\\"freebsd\\\", target_os = \\\"netbsd\\\", target_os = \\\"openbsd\\\", target_os = \\\"android\\\", target_os = \\\"illumos\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"ios\\\", target_os = \\\"freebsd\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(unix, target_os = \\\"hermit\\\", target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(curve25519_dalek_backend = \\\"fiat\\\")\": [],\n \"cfg(not(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\")))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(any(target_os = \\\"windows\\\", target_vendor = \\\"apple\\\")))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(target_arch = \\\"wasm32\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(windows))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_arch = \\\"spirv\\\")\": [],\n \"cfg(target_arch = \\\"wasm32\\\")\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_arch = \\\"x86_64\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"android\\\")\": [],\n \"cfg(target_os = \\\"haiku\\\")\": [],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"linux\\\")\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"macos\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(target_os = \\\"netbsd\\\")\": [],\n \"cfg(target_os = \\\"redox\\\")\": [],\n \"cfg(target_os = \\\"solaris\\\")\": [],\n \"cfg(target_os = \\\"vxworks\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_os = \\\"windows\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(target_vendor = \\\"apple\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(windows_raw_dylib)\": [],\n \"i686-pc-windows-gnu\": [],\n \"i686-pc-windows-gnullvm\": [],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-gnu\": [],\n \"x86_64-pc-windows-gnullvm\": [],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__adler2-2.0.1\",\n sha256 = \"320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adler2/2.0.1/download\"],\n strip_prefix = \"adler2-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.adler2-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__adobe-cmap-parser-0.4.1\",\n sha256 = \"ae8abfa9a4688de8fc9f42b3f013b6fffec18ed8a554f5f113577e0b9b3212a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adobe-cmap-parser/0.4.1/download\"],\n strip_prefix = \"adobe-cmap-parser-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.adobe-cmap-parser-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aead-0.5.2\",\n sha256 = \"d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aead/0.5.2/download\"],\n strip_prefix = \"aead-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.aead-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aes-0.8.4\",\n sha256 = \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes/0.8.4/download\"],\n strip_prefix = \"aes-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.aes-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aes-gcm-0.10.3\",\n sha256 = \"831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes-gcm/0.10.3/download\"],\n strip_prefix = \"aes-gcm-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.aes-gcm-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__age-0.10.1\",\n sha256 = \"77de71da1ca673855aacea507a7aed363beb8934cf61b62364fc4b479d2e8cda\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/age/0.10.1/download\"],\n strip_prefix = \"age-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.age-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__age-core-0.10.0\",\n sha256 = \"a5f11899bc2bbddd135edbc30c36b1924fa59d0746bb45beb5933fafe3fe509b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/age-core/0.10.0/download\"],\n strip_prefix = \"age-core-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.age-core-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__agent-client-protocol-schema-0.11.7\",\n sha256 = \"2d24232129441563139fe5389de351433240d5f0ec8a6c775bf632dc6da7e549\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/agent-client-protocol-schema/0.11.7/download\"],\n strip_prefix = \"agent-client-protocol-schema-0.11.7\",\n build_file = Label(\"@crates//crates:BUILD.agent-client-protocol-schema-0.11.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aho-corasick-1.1.4\",\n sha256 = \"ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.4/download\"],\n strip_prefix = \"aho-corasick-1.1.4\",\n build_file = Label(\"@crates//crates:BUILD.aho-corasick-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__allocator-api2-0.2.21\",\n sha256 = \"683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/allocator-api2/0.2.21/download\"],\n strip_prefix = \"allocator-api2-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.allocator-api2-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__android_system_properties-0.1.5\",\n sha256 = \"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/android_system_properties/0.1.5/download\"],\n strip_prefix = \"android_system_properties-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.android_system_properties-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstream-1.0.0\",\n sha256 = \"824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstream/1.0.0/download\"],\n strip_prefix = \"anstream-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstream-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-1.0.14\",\n sha256 = \"940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle/1.0.14/download\"],\n strip_prefix = \"anstyle-1.0.14\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-1.0.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-parse-1.0.0\",\n sha256 = \"52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-parse/1.0.0/download\"],\n strip_prefix = \"anstyle-parse-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-parse-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-query-1.1.5\",\n sha256 = \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-query/1.1.5/download\"],\n strip_prefix = \"anstyle-query-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-query-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-wincon-3.0.11\",\n sha256 = \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-wincon/3.0.11/download\"],\n strip_prefix = \"anstyle-wincon-3.0.11\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-wincon-3.0.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anyhow-1.0.102\",\n sha256 = \"7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anyhow/1.0.102/download\"],\n strip_prefix = \"anyhow-1.0.102\",\n build_file = Label(\"@crates//crates:BUILD.anyhow-1.0.102.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arboard-3.6.1\",\n sha256 = \"0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arboard/3.6.1/download\"],\n strip_prefix = \"arboard-3.6.1\",\n build_file = Label(\"@crates//crates:BUILD.arboard-3.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arc-swap-1.9.1\",\n sha256 = \"6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arc-swap/1.9.1/download\"],\n strip_prefix = \"arc-swap-1.9.1\",\n build_file = Label(\"@crates//crates:BUILD.arc-swap-1.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__assert-json-diff-2.0.2\",\n sha256 = \"47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/assert-json-diff/2.0.2/download\"],\n strip_prefix = \"assert-json-diff-2.0.2\",\n build_file = Label(\"@crates//crates:BUILD.assert-json-diff-2.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-stream-0.3.6\",\n sha256 = \"0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream/0.3.6/download\"],\n strip_prefix = \"async-stream-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.async-stream-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-stream-impl-0.3.6\",\n sha256 = \"c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream-impl/0.3.6/download\"],\n strip_prefix = \"async-stream-impl-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.async-stream-impl-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-trait-0.1.89\",\n sha256 = \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-trait/0.1.89/download\"],\n strip_prefix = \"async-trait-0.1.89\",\n build_file = Label(\"@crates//crates:BUILD.async-trait-0.1.89.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__atomic-0.6.1\",\n sha256 = \"a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic/0.6.1/download\"],\n strip_prefix = \"atomic-0.6.1\",\n build_file = Label(\"@crates//crates:BUILD.atomic-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__atomic-waker-1.1.2\",\n sha256 = \"1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic-waker/1.1.2/download\"],\n strip_prefix = \"atomic-waker-1.1.2\",\n build_file = Label(\"@crates//crates:BUILD.atomic-waker-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__autocfg-1.5.0\",\n sha256 = \"c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/autocfg/1.5.0/download\"],\n strip_prefix = \"autocfg-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.autocfg-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__axum-0.7.9\",\n sha256 = \"edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum/0.7.9/download\"],\n strip_prefix = \"axum-0.7.9\",\n build_file = Label(\"@crates//crates:BUILD.axum-0.7.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__axum-core-0.4.5\",\n sha256 = \"09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum-core/0.4.5/download\"],\n strip_prefix = \"axum-core-0.4.5\",\n build_file = Label(\"@crates//crates:BUILD.axum-core-0.4.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64-0.21.7\",\n sha256 = \"9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64/0.21.7/download\"],\n strip_prefix = \"base64-0.21.7\",\n build_file = Label(\"@crates//crates:BUILD.base64-0.21.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64-0.22.1\",\n sha256 = \"72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64/0.22.1/download\"],\n strip_prefix = \"base64-0.22.1\",\n build_file = Label(\"@crates//crates:BUILD.base64-0.22.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64ct-1.8.3\",\n sha256 = \"2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64ct/1.8.3/download\"],\n strip_prefix = \"base64ct-1.8.3\",\n build_file = Label(\"@crates//crates:BUILD.base64ct-1.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__basic-toml-0.1.10\",\n sha256 = \"ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/basic-toml/0.1.10/download\"],\n strip_prefix = \"basic-toml-0.1.10\",\n build_file = Label(\"@crates//crates:BUILD.basic-toml-0.1.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bcrypt-pbkdf-0.10.0\",\n sha256 = \"6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bcrypt-pbkdf/0.10.0/download\"],\n strip_prefix = \"bcrypt-pbkdf-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.bcrypt-pbkdf-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bech32-0.9.1\",\n sha256 = \"d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bech32/0.9.1/download\"],\n strip_prefix = \"bech32-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.bech32-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bincode-1.3.3\",\n sha256 = \"b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bincode/1.3.3/download\"],\n strip_prefix = \"bincode-1.3.3\",\n build_file = Label(\"@crates//crates:BUILD.bincode-1.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-set-0.5.3\",\n sha256 = \"0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-set/0.5.3/download\"],\n strip_prefix = \"bit-set-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.bit-set-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-set-0.8.0\",\n sha256 = \"08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-set/0.8.0/download\"],\n strip_prefix = \"bit-set-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.bit-set-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-vec-0.6.3\",\n sha256 = \"349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-vec/0.6.3/download\"],\n strip_prefix = \"bit-vec-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.bit-vec-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-vec-0.8.0\",\n sha256 = \"5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-vec/0.8.0/download\"],\n strip_prefix = \"bit-vec-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.bit-vec-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-1.3.2\",\n sha256 = \"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/1.3.2/download\"],\n strip_prefix = \"bitflags-1.3.2\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-1.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.11.1\",\n sha256 = \"c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.1/download\"],\n strip_prefix = \"bitflags-2.11.1\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__block-buffer-0.10.4\",\n sha256 = \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-buffer/0.10.4/download\"],\n strip_prefix = \"block-buffer-0.10.4\",\n build_file = Label(\"@crates//crates:BUILD.block-buffer-0.10.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__block-padding-0.3.3\",\n sha256 = \"a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-padding/0.3.3/download\"],\n strip_prefix = \"block-padding-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.block-padding-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__blowfish-0.9.1\",\n sha256 = \"e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/blowfish/0.9.1/download\"],\n strip_prefix = \"blowfish-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.blowfish-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bstr-1.12.1\",\n sha256 = \"63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bstr/1.12.1/download\"],\n strip_prefix = \"bstr-1.12.1\",\n build_file = Label(\"@crates//crates:BUILD.bstr-1.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bumpalo-3.20.2\",\n sha256 = \"5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bumpalo/3.20.2/download\"],\n strip_prefix = \"bumpalo-3.20.2\",\n build_file = Label(\"@crates//crates:BUILD.bumpalo-3.20.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytemuck-1.25.0\",\n sha256 = \"c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytemuck/1.25.0/download\"],\n strip_prefix = \"bytemuck-1.25.0\",\n build_file = Label(\"@crates//crates:BUILD.bytemuck-1.25.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__byteorder-1.5.0\",\n sha256 = \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder/1.5.0/download\"],\n strip_prefix = \"byteorder-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.byteorder-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__byteorder-lite-0.1.0\",\n sha256 = \"8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder-lite/0.1.0/download\"],\n strip_prefix = \"byteorder-lite-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.byteorder-lite-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytes-1.11.1\",\n sha256 = \"1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytes/1.11.1/download\"],\n strip_prefix = \"bytes-1.11.1\",\n build_file = Label(\"@crates//crates:BUILD.bytes-1.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__castaway-0.2.4\",\n sha256 = \"dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/castaway/0.2.4/download\"],\n strip_prefix = \"castaway-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.castaway-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cbc-0.1.2\",\n sha256 = \"26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cbc/0.1.2/download\"],\n strip_prefix = \"cbc-0.1.2\",\n build_file = Label(\"@crates//crates:BUILD.cbc-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cc-1.2.62\",\n sha256 = \"a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cc/1.2.62/download\"],\n strip_prefix = \"cc-1.2.62\",\n build_file = Label(\"@crates//crates:BUILD.cc-1.2.62.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.4\",\n sha256 = \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.4/download\"],\n strip_prefix = \"cfg-if-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg_aliases-0.2.1\",\n sha256 = \"613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg_aliases/0.2.1/download\"],\n strip_prefix = \"cfg_aliases-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.cfg_aliases-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chacha20-0.9.1\",\n sha256 = \"c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chacha20/0.9.1/download\"],\n strip_prefix = \"chacha20-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.chacha20-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chacha20poly1305-0.10.1\",\n sha256 = \"10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chacha20poly1305/0.10.1/download\"],\n strip_prefix = \"chacha20poly1305-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.chacha20poly1305-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chrono-0.4.44\",\n sha256 = \"c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chrono/0.4.44/download\"],\n strip_prefix = \"chrono-0.4.44\",\n build_file = Label(\"@crates//crates:BUILD.chrono-0.4.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cipher-0.4.4\",\n sha256 = \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cipher/0.4.4/download\"],\n strip_prefix = \"cipher-0.4.4\",\n build_file = Label(\"@crates//crates:BUILD.cipher-0.4.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap-4.6.1\",\n sha256 = \"1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap/4.6.1/download\"],\n strip_prefix = \"clap-4.6.1\",\n build_file = Label(\"@crates//crates:BUILD.clap-4.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_builder-4.6.0\",\n sha256 = \"714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_builder/4.6.0/download\"],\n strip_prefix = \"clap_builder-4.6.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_builder-4.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_derive-4.6.1\",\n sha256 = \"f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_derive/4.6.1/download\"],\n strip_prefix = \"clap_derive-4.6.1\",\n build_file = Label(\"@crates//crates:BUILD.clap_derive-4.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_lex-1.1.0\",\n sha256 = \"c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_lex/1.1.0/download\"],\n strip_prefix = \"clap_lex-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_lex-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clipboard-win-5.4.1\",\n sha256 = \"bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clipboard-win/5.4.1/download\"],\n strip_prefix = \"clipboard-win-5.4.1\",\n build_file = Label(\"@crates//crates:BUILD.clipboard-win-5.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colorchoice-1.0.5\",\n sha256 = \"1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colorchoice/1.0.5/download\"],\n strip_prefix = \"colorchoice-1.0.5\",\n build_file = Label(\"@crates//crates:BUILD.colorchoice-1.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__compact_str-0.9.0\",\n sha256 = \"3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/compact_str/0.9.0/download\"],\n strip_prefix = \"compact_str-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.compact_str-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__const-oid-0.9.6\",\n sha256 = \"c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/const-oid/0.9.6/download\"],\n strip_prefix = \"const-oid-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.const-oid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__convert_case-0.10.0\",\n sha256 = \"633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/convert_case/0.10.0/download\"],\n strip_prefix = \"convert_case-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.convert_case-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cookie-factory-0.3.3\",\n sha256 = \"9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cookie-factory/0.3.3/download\"],\n strip_prefix = \"cookie-factory-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.cookie-factory-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-0.10.1\",\n sha256 = \"b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation/0.10.1/download\"],\n strip_prefix = \"core-foundation-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-0.9.4\",\n sha256 = \"91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation/0.9.4/download\"],\n strip_prefix = \"core-foundation-0.9.4\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-0.9.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-sys-0.8.7\",\n sha256 = \"773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation-sys/0.8.7/download\"],\n strip_prefix = \"core-foundation-sys-0.8.7\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-sys-0.8.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cpufeatures-0.2.17\",\n sha256 = \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cpufeatures/0.2.17/download\"],\n strip_prefix = \"cpufeatures-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.cpufeatures-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crc32fast-1.5.0\",\n sha256 = \"9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc32fast/1.5.0/download\"],\n strip_prefix = \"crc32fast-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.crc32fast-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cron-0.15.0\",\n sha256 = \"5877d3fbf742507b66bc2a1945106bd30dd8504019d596901ddd012a4dd01740\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cron/0.15.0/download\"],\n strip_prefix = \"cron-0.15.0\",\n build_file = Label(\"@crates//crates:BUILD.cron-0.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-channel-0.5.15\",\n sha256 = \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-channel/0.5.15/download\"],\n strip_prefix = \"crossbeam-channel-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-channel-0.5.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-deque-0.8.6\",\n sha256 = \"9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-deque/0.8.6/download\"],\n strip_prefix = \"crossbeam-deque-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-deque-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-epoch-0.9.18\",\n sha256 = \"5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-epoch/0.9.18/download\"],\n strip_prefix = \"crossbeam-epoch-0.9.18\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-epoch-0.9.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.21\",\n sha256 = \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.21/download\"],\n strip_prefix = \"crossbeam-utils-0.8.21\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm-0.28.1\",\n sha256 = \"829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm/0.28.1/download\"],\n strip_prefix = \"crossterm-0.28.1\",\n build_file = Label(\"@crates//crates:BUILD.crossterm-0.28.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm-0.29.0\",\n sha256 = \"d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm/0.29.0/download\"],\n strip_prefix = \"crossterm-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.crossterm-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm_winapi-0.9.1\",\n sha256 = \"acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm_winapi/0.9.1/download\"],\n strip_prefix = \"crossterm_winapi-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.crossterm_winapi-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crunchy-0.2.4\",\n sha256 = \"460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crunchy/0.2.4/download\"],\n strip_prefix = \"crunchy-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.crunchy-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crypto-common-0.1.7\",\n sha256 = \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-common/0.1.7/download\"],\n strip_prefix = \"crypto-common-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.crypto-common-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__csscolorparser-0.6.2\",\n sha256 = \"eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/csscolorparser/0.6.2/download\"],\n strip_prefix = \"csscolorparser-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.csscolorparser-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ctr-0.9.2\",\n sha256 = \"0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ctr/0.9.2/download\"],\n strip_prefix = \"ctr-0.9.2\",\n build_file = Label(\"@crates//crates:BUILD.ctr-0.9.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__curve25519-dalek-4.1.3\",\n sha256 = \"97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/curve25519-dalek/4.1.3/download\"],\n strip_prefix = \"curve25519-dalek-4.1.3\",\n build_file = Label(\"@crates//crates:BUILD.curve25519-dalek-4.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__curve25519-dalek-derive-0.1.1\",\n sha256 = \"f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/curve25519-dalek-derive/0.1.1/download\"],\n strip_prefix = \"curve25519-dalek-derive-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.curve25519-dalek-derive-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling-0.23.0\",\n sha256 = \"25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling/0.23.0/download\"],\n strip_prefix = \"darling-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling_core-0.23.0\",\n sha256 = \"9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling_core/0.23.0/download\"],\n strip_prefix = \"darling_core-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling_core-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling_macro-0.23.0\",\n sha256 = \"ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling_macro/0.23.0/download\"],\n strip_prefix = \"darling_macro-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling_macro-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dashmap-5.5.3\",\n sha256 = \"978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dashmap/5.5.3/download\"],\n strip_prefix = \"dashmap-5.5.3\",\n build_file = Label(\"@crates//crates:BUILD.dashmap-5.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dbus-0.9.11\",\n sha256 = \"b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dbus/0.9.11/download\"],\n strip_prefix = \"dbus-0.9.11\",\n build_file = Label(\"@crates//crates:BUILD.dbus-0.9.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deadpool-0.12.3\",\n sha256 = \"0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deadpool/0.12.3/download\"],\n strip_prefix = \"deadpool-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.deadpool-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deadpool-runtime-0.1.4\",\n sha256 = \"092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deadpool-runtime/0.1.4/download\"],\n strip_prefix = \"deadpool-runtime-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.deadpool-runtime-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deltae-0.3.2\",\n sha256 = \"5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deltae/0.3.2/download\"],\n strip_prefix = \"deltae-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.deltae-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__der-0.7.10\",\n sha256 = \"e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/der/0.7.10/download\"],\n strip_prefix = \"der-0.7.10\",\n build_file = Label(\"@crates//crates:BUILD.der-0.7.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deranged-0.5.8\",\n sha256 = \"7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deranged/0.5.8/download\"],\n strip_prefix = \"deranged-0.5.8\",\n build_file = Label(\"@crates//crates:BUILD.deranged-0.5.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__derive_more-2.1.1\",\n sha256 = \"d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/derive_more/2.1.1/download\"],\n strip_prefix = \"derive_more-2.1.1\",\n build_file = Label(\"@crates//crates:BUILD.derive_more-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__derive_more-impl-2.1.1\",\n sha256 = \"799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/derive_more-impl/2.1.1/download\"],\n strip_prefix = \"derive_more-impl-2.1.1\",\n build_file = Label(\"@crates//crates:BUILD.derive_more-impl-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__digest-0.10.7\",\n sha256 = \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/digest/0.10.7/download\"],\n strip_prefix = \"digest-0.10.7\",\n build_file = Label(\"@crates//crates:BUILD.digest-0.10.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dirs-6.0.0\",\n sha256 = \"c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dirs/6.0.0/download\"],\n strip_prefix = \"dirs-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.dirs-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dirs-sys-0.5.0\",\n sha256 = \"e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dirs-sys/0.5.0/download\"],\n strip_prefix = \"dirs-sys-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.dirs-sys-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dispatch2-0.3.1\",\n sha256 = \"1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dispatch2/0.3.1/download\"],\n strip_prefix = \"dispatch2-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.dispatch2-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__displaydoc-0.2.5\",\n sha256 = \"97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/displaydoc/0.2.5/download\"],\n strip_prefix = \"displaydoc-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.displaydoc-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__document-features-0.2.12\",\n sha256 = \"d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/document-features/0.2.12/download\"],\n strip_prefix = \"document-features-0.2.12\",\n build_file = Label(\"@crates//crates:BUILD.document-features-0.2.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dyn-clone-1.0.20\",\n sha256 = \"d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dyn-clone/1.0.20/download\"],\n strip_prefix = \"dyn-clone-1.0.20\",\n build_file = Label(\"@crates//crates:BUILD.dyn-clone-1.0.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.15.0\",\n sha256 = \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.15.0/download\"],\n strip_prefix = \"either-1.15.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__encoding_rs-0.8.35\",\n sha256 = \"75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/encoding_rs/0.8.35/download\"],\n strip_prefix = \"encoding_rs-0.8.35\",\n build_file = Label(\"@crates//crates:BUILD.encoding_rs-0.8.35.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.2\",\n sha256 = \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.2/download\"],\n strip_prefix = \"equivalent-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__errno-0.3.14\",\n sha256 = \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/errno/0.3.14/download\"],\n strip_prefix = \"errno-0.3.14\",\n build_file = Label(\"@crates//crates:BUILD.errno-0.3.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__error-code-3.3.2\",\n sha256 = \"dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/error-code/3.3.2/download\"],\n strip_prefix = \"error-code-3.3.2\",\n build_file = Label(\"@crates//crates:BUILD.error-code-3.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__euclid-0.20.14\",\n sha256 = \"2bb7ef65b3777a325d1eeefefab5b6d4959da54747e33bd6258e789640f307ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/euclid/0.20.14/download\"],\n strip_prefix = \"euclid-0.20.14\",\n build_file = Label(\"@crates//crates:BUILD.euclid-0.20.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__euclid-0.22.14\",\n sha256 = \"f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/euclid/0.22.14/download\"],\n strip_prefix = \"euclid-0.22.14\",\n build_file = Label(\"@crates//crates:BUILD.euclid-0.22.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__eventsource-stream-0.2.3\",\n sha256 = \"74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/eventsource-stream/0.2.3/download\"],\n strip_prefix = \"eventsource-stream-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.eventsource-stream-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.11.0\",\n sha256 = \"b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.11.0/download\"],\n strip_prefix = \"fancy-regex-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.13.0\",\n sha256 = \"531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.13.0/download\"],\n strip_prefix = \"fancy-regex-0.13.0\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.16.2\",\n sha256 = \"998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.16.2/download\"],\n strip_prefix = \"fancy-regex-0.16.2\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fastrand-2.4.1\",\n sha256 = \"9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fastrand/2.4.1/download\"],\n strip_prefix = \"fastrand-2.4.1\",\n build_file = Label(\"@crates//crates:BUILD.fastrand-2.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fax-0.2.7\",\n sha256 = \"caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fax/0.2.7/download\"],\n strip_prefix = \"fax-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.fax-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fdeflate-0.3.7\",\n sha256 = \"1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fdeflate/0.3.7/download\"],\n strip_prefix = \"fdeflate-0.3.7\",\n build_file = Label(\"@crates//crates:BUILD.fdeflate-0.3.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fiat-crypto-0.2.9\",\n sha256 = \"28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fiat-crypto/0.2.9/download\"],\n strip_prefix = \"fiat-crypto-0.2.9\",\n build_file = Label(\"@crates//crates:BUILD.fiat-crypto-0.2.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__filedescriptor-0.8.3\",\n sha256 = \"e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/filedescriptor/0.8.3/download\"],\n strip_prefix = \"filedescriptor-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.filedescriptor-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__filetime-0.2.29\",\n sha256 = \"5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/filetime/0.2.29/download\"],\n strip_prefix = \"filetime-0.2.29\",\n build_file = Label(\"@crates//crates:BUILD.filetime-0.2.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__find-crate-0.6.3\",\n sha256 = \"59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/find-crate/0.6.3/download\"],\n strip_prefix = \"find-crate-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.find-crate-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__find-msvc-tools-0.1.9\",\n sha256 = \"5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/find-msvc-tools/0.1.9/download\"],\n strip_prefix = \"find-msvc-tools-0.1.9\",\n build_file = Label(\"@crates//crates:BUILD.find-msvc-tools-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__finl_unicode-1.4.0\",\n sha256 = \"9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/finl_unicode/1.4.0/download\"],\n strip_prefix = \"finl_unicode-1.4.0\",\n build_file = Label(\"@crates//crates:BUILD.finl_unicode-1.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fixedbitset-0.4.2\",\n sha256 = \"0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fixedbitset/0.4.2/download\"],\n strip_prefix = \"fixedbitset-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.fixedbitset-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__flate2-1.1.9\",\n sha256 = \"843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/flate2/1.1.9/download\"],\n strip_prefix = \"flate2-1.1.9\",\n build_file = Label(\"@crates//crates:BUILD.flate2-1.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-0.16.1\",\n sha256 = \"bb74634707bebd0ce645a981148e8fb8c7bccd4c33c652aeffd28bf2f96d555a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent/0.16.1/download\"],\n strip_prefix = \"fluent-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-bundle-0.15.3\",\n sha256 = \"7fe0a21ee80050c678013f82edf4b705fe2f26f1f9877593d13198612503f493\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-bundle/0.15.3/download\"],\n strip_prefix = \"fluent-bundle-0.15.3\",\n build_file = Label(\"@crates//crates:BUILD.fluent-bundle-0.15.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-langneg-0.13.1\",\n sha256 = \"7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-langneg/0.13.1/download\"],\n strip_prefix = \"fluent-langneg-0.13.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-langneg-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-syntax-0.11.1\",\n sha256 = \"2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-syntax/0.11.1/download\"],\n strip_prefix = \"fluent-syntax-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-syntax-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fnv-1.0.7\",\n sha256 = \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fnv/1.0.7/download\"],\n strip_prefix = \"fnv-1.0.7\",\n build_file = Label(\"@crates//crates:BUILD.fnv-1.0.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.1.5\",\n sha256 = \"d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.1.5/download\"],\n strip_prefix = \"foldhash-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.2.0\",\n sha256 = \"77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.2.0/download\"],\n strip_prefix = \"foldhash-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foreign-types-0.3.2\",\n sha256 = \"f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foreign-types/0.3.2/download\"],\n strip_prefix = \"foreign-types-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.foreign-types-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foreign-types-shared-0.1.1\",\n sha256 = \"00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foreign-types-shared/0.1.1/download\"],\n strip_prefix = \"foreign-types-shared-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.foreign-types-shared-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__form_urlencoded-1.2.2\",\n sha256 = \"cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/form_urlencoded/1.2.2/download\"],\n strip_prefix = \"form_urlencoded-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.form_urlencoded-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futf-0.1.5\",\n sha256 = \"df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futf/0.1.5/download\"],\n strip_prefix = \"futf-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.futf-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-0.3.32\",\n sha256 = \"8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures/0.3.32/download\"],\n strip_prefix = \"futures-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-channel-0.3.32\",\n sha256 = \"07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-channel/0.3.32/download\"],\n strip_prefix = \"futures-channel-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-channel-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-core-0.3.32\",\n sha256 = \"7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-core/0.3.32/download\"],\n strip_prefix = \"futures-core-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-core-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-executor-0.3.32\",\n sha256 = \"baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-executor/0.3.32/download\"],\n strip_prefix = \"futures-executor-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-executor-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-io-0.3.32\",\n sha256 = \"cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-io/0.3.32/download\"],\n strip_prefix = \"futures-io-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-io-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-macro-0.3.32\",\n sha256 = \"e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-macro/0.3.32/download\"],\n strip_prefix = \"futures-macro-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-macro-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-sink-0.3.32\",\n sha256 = \"c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-sink/0.3.32/download\"],\n strip_prefix = \"futures-sink-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-sink-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-task-0.3.32\",\n sha256 = \"037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-task/0.3.32/download\"],\n strip_prefix = \"futures-task-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-task-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-util-0.3.32\",\n sha256 = \"389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-util/0.3.32/download\"],\n strip_prefix = \"futures-util-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-util-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__generic-array-0.14.7\",\n sha256 = \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/generic-array/0.14.7/download\"],\n strip_prefix = \"generic-array-0.14.7\",\n build_file = Label(\"@crates//crates:BUILD.generic-array-0.14.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__gethostname-1.1.0\",\n sha256 = \"1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gethostname/1.1.0/download\"],\n strip_prefix = \"gethostname-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.gethostname-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.2.17\",\n sha256 = \"ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.2.17/download\"],\n strip_prefix = \"getrandom-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.3.4\",\n sha256 = \"899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.3.4/download\"],\n strip_prefix = \"getrandom-0.3.4\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.4.2\",\n sha256 = \"0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.4.2/download\"],\n strip_prefix = \"getrandom-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ghash-0.5.1\",\n sha256 = \"f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ghash/0.5.1/download\"],\n strip_prefix = \"ghash-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.ghash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__glob-0.3.3\",\n sha256 = \"0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/glob/0.3.3/download\"],\n strip_prefix = \"glob-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.glob-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__globset-0.4.18\",\n sha256 = \"52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/globset/0.4.18/download\"],\n strip_prefix = \"globset-0.4.18\",\n build_file = Label(\"@crates//crates:BUILD.globset-0.4.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__h2-0.4.14\",\n sha256 = \"171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/h2/0.4.14/download\"],\n strip_prefix = \"h2-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.h2-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__half-2.7.1\",\n sha256 = \"6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/half/2.7.1/download\"],\n strip_prefix = \"half-2.7.1\",\n build_file = Label(\"@crates//crates:BUILD.half-2.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.12.3\",\n sha256 = \"8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.12.3/download\"],\n strip_prefix = \"hashbrown-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.14.5\",\n sha256 = \"e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.14.5/download\"],\n strip_prefix = \"hashbrown-0.14.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.14.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.15.5\",\n sha256 = \"9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.15.5/download\"],\n strip_prefix = \"hashbrown-0.15.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.15.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.17.1\",\n sha256 = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.17.1/download\"],\n strip_prefix = \"hashbrown-0.17.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.17.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__heck-0.5.0\",\n sha256 = \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.5.0/download\"],\n strip_prefix = \"heck-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.heck-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hermit-abi-0.5.2\",\n sha256 = \"fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hermit-abi/0.5.2/download\"],\n strip_prefix = \"hermit-abi-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.hermit-abi-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hex-0.4.3\",\n sha256 = \"7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hex/0.4.3/download\"],\n strip_prefix = \"hex-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.hex-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hkdf-0.12.4\",\n sha256 = \"7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hkdf/0.12.4/download\"],\n strip_prefix = \"hkdf-0.12.4\",\n build_file = Label(\"@crates//crates:BUILD.hkdf-0.12.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hmac-0.12.1\",\n sha256 = \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hmac/0.12.1/download\"],\n strip_prefix = \"hmac-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.hmac-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__html2text-0.12.6\",\n sha256 = \"042a9677c258ac2952dd026bb0cd21972f00f644a5a38f5a215cb22cdaf6834e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/html2text/0.12.6/download\"],\n strip_prefix = \"html2text-0.12.6\",\n build_file = Label(\"@crates//crates:BUILD.html2text-0.12.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__html5ever-0.27.0\",\n sha256 = \"c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/html5ever/0.27.0/download\"],\n strip_prefix = \"html5ever-0.27.0\",\n build_file = Label(\"@crates//crates:BUILD.html5ever-0.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-1.4.0\",\n sha256 = \"e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http/1.4.0/download\"],\n strip_prefix = \"http-1.4.0\",\n build_file = Label(\"@crates//crates:BUILD.http-1.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-body-1.0.1\",\n sha256 = \"1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body/1.0.1/download\"],\n strip_prefix = \"http-body-1.0.1\",\n build_file = Label(\"@crates//crates:BUILD.http-body-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-body-util-0.1.3\",\n sha256 = \"b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body-util/0.1.3/download\"],\n strip_prefix = \"http-body-util-0.1.3\",\n build_file = Label(\"@crates//crates:BUILD.http-body-util-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__httparse-1.10.1\",\n sha256 = \"6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httparse/1.10.1/download\"],\n strip_prefix = \"httparse-1.10.1\",\n build_file = Label(\"@crates//crates:BUILD.httparse-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__httpdate-1.0.3\",\n sha256 = \"df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httpdate/1.0.3/download\"],\n strip_prefix = \"httpdate-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.httpdate-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-1.9.0\",\n sha256 = \"6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper/1.9.0/download\"],\n strip_prefix = \"hyper-1.9.0\",\n build_file = Label(\"@crates//crates:BUILD.hyper-1.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-rustls-0.27.9\",\n sha256 = \"33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-rustls/0.27.9/download\"],\n strip_prefix = \"hyper-rustls-0.27.9\",\n build_file = Label(\"@crates//crates:BUILD.hyper-rustls-0.27.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-timeout-0.5.2\",\n sha256 = \"2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-timeout/0.5.2/download\"],\n strip_prefix = \"hyper-timeout-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.hyper-timeout-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-tls-0.6.0\",\n sha256 = \"70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-tls/0.6.0/download\"],\n strip_prefix = \"hyper-tls-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.hyper-tls-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-util-0.1.20\",\n sha256 = \"96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-util/0.1.20/download\"],\n strip_prefix = \"hyper-util-0.1.20\",\n build_file = Label(\"@crates//crates:BUILD.hyper-util-0.1.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-config-0.4.8\",\n sha256 = \"3e06b90c8a0d252e203c94344b21e35a30f3a3a85dc7db5af8f8df9f3e0c63ef\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-config/0.4.8/download\"],\n strip_prefix = \"i18n-config-0.4.8\",\n build_file = Label(\"@crates//crates:BUILD.i18n-config-0.4.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-0.14.1\",\n sha256 = \"94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed/0.14.1/download\"],\n strip_prefix = \"i18n-embed-0.14.1\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-0.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-fl-0.7.0\",\n sha256 = \"9fc1f8715195dffc4caddcf1cf3128da15fe5d8a137606ea8856c9300047d5a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed-fl/0.7.0/download\"],\n strip_prefix = \"i18n-embed-fl-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-fl-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-impl-0.8.4\",\n sha256 = \"0f2cc0e0523d1fe6fc2c6f66e5038624ea8091b3e7748b5e8e0c84b1698db6c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed-impl/0.8.4/download\"],\n strip_prefix = \"i18n-embed-impl-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-impl-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__iana-time-zone-0.1.65\",\n sha256 = \"e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iana-time-zone/0.1.65/download\"],\n strip_prefix = \"iana-time-zone-0.1.65\",\n build_file = Label(\"@crates//crates:BUILD.iana-time-zone-0.1.65.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__iana-time-zone-haiku-0.1.2\",\n sha256 = \"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download\"],\n strip_prefix = \"iana-time-zone-haiku-0.1.2\",\n build_file = Label(\"@crates//crates:BUILD.iana-time-zone-haiku-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_collections-2.2.0\",\n sha256 = \"2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_collections/2.2.0/download\"],\n strip_prefix = \"icu_collections-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_collections-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_core-2.2.0\",\n sha256 = \"92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_core/2.2.0/download\"],\n strip_prefix = \"icu_locale_core-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_core-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_normalizer-2.2.0\",\n sha256 = \"c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_normalizer/2.2.0/download\"],\n strip_prefix = \"icu_normalizer-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_normalizer-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_normalizer_data-2.2.0\",\n sha256 = \"da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_normalizer_data/2.2.0/download\"],\n strip_prefix = \"icu_normalizer_data-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_normalizer_data-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_properties-2.2.0\",\n sha256 = \"bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_properties/2.2.0/download\"],\n strip_prefix = \"icu_properties-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_properties-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_properties_data-2.2.0\",\n sha256 = \"8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_properties_data/2.2.0/download\"],\n strip_prefix = \"icu_properties_data-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_properties_data-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_provider-2.2.0\",\n sha256 = \"139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_provider/2.2.0/download\"],\n strip_prefix = \"icu_provider-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_provider-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__id-arena-2.3.0\",\n sha256 = \"3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/id-arena/2.3.0/download\"],\n strip_prefix = \"id-arena-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.id-arena-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ident_case-1.0.1\",\n sha256 = \"b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ident_case/1.0.1/download\"],\n strip_prefix = \"ident_case-1.0.1\",\n build_file = Label(\"@crates//crates:BUILD.ident_case-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__idna-1.1.0\",\n sha256 = \"3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/idna/1.1.0/download\"],\n strip_prefix = \"idna-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.idna-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__idna_adapter-1.2.2\",\n sha256 = \"cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/idna_adapter/1.2.2/download\"],\n strip_prefix = \"idna_adapter-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.idna_adapter-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ignore-0.4.25\",\n sha256 = \"d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ignore/0.4.25/download\"],\n strip_prefix = \"ignore-0.4.25\",\n build_file = Label(\"@crates//crates:BUILD.ignore-0.4.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__image-0.25.10\",\n sha256 = \"85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/image/0.25.10/download\"],\n strip_prefix = \"image-0.25.10\",\n build_file = Label(\"@crates//crates:BUILD.image-0.25.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__include_dir-0.7.4\",\n sha256 = \"923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/include_dir/0.7.4/download\"],\n strip_prefix = \"include_dir-0.7.4\",\n build_file = Label(\"@crates//crates:BUILD.include_dir-0.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__include_dir_macros-0.7.4\",\n sha256 = \"7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/include_dir_macros/0.7.4/download\"],\n strip_prefix = \"include_dir_macros-0.7.4\",\n build_file = Label(\"@crates//crates:BUILD.include_dir_macros-0.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-1.9.3\",\n sha256 = \"bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/1.9.3/download\"],\n strip_prefix = \"indexmap-1.9.3\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-1.9.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.14.0\",\n sha256 = \"d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.14.0/download\"],\n strip_prefix = \"indexmap-2.14.0\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indoc-2.0.7\",\n sha256 = \"79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indoc/2.0.7/download\"],\n strip_prefix = \"indoc-2.0.7\",\n build_file = Label(\"@crates//crates:BUILD.indoc-2.0.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__inout-0.1.4\",\n sha256 = \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inout/0.1.4/download\"],\n strip_prefix = \"inout-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.inout-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__instability-0.3.12\",\n sha256 = \"5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/instability/0.3.12/download\"],\n strip_prefix = \"instability-0.3.12\",\n build_file = Label(\"@crates//crates:BUILD.instability-0.3.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__intl-memoizer-0.5.3\",\n sha256 = \"310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/intl-memoizer/0.5.3/download\"],\n strip_prefix = \"intl-memoizer-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.intl-memoizer-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__intl_pluralrules-7.0.2\",\n sha256 = \"078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/intl_pluralrules/7.0.2/download\"],\n strip_prefix = \"intl_pluralrules-7.0.2\",\n build_file = Label(\"@crates//crates:BUILD.intl_pluralrules-7.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__io_tee-0.1.1\",\n sha256 = \"4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/io_tee/0.1.1/download\"],\n strip_prefix = \"io_tee-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.io_tee-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ipnet-2.12.0\",\n sha256 = \"d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ipnet/2.12.0/download\"],\n strip_prefix = \"ipnet-2.12.0\",\n build_file = Label(\"@crates//crates:BUILD.ipnet-2.12.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__is_terminal_polyfill-1.70.2\",\n sha256 = \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download\"],\n strip_prefix = \"is_terminal_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.is_terminal_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.18\",\n sha256 = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.18/download\"],\n strip_prefix = \"itoa-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__js-sys-0.3.98\",\n sha256 = \"67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/js-sys/0.3.98/download\"],\n strip_prefix = \"js-sys-0.3.98\",\n build_file = Label(\"@crates//crates:BUILD.js-sys-0.3.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__kasuari-0.4.12\",\n sha256 = \"bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/kasuari/0.4.12/download\"],\n strip_prefix = \"kasuari-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.kasuari-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lab-0.11.0\",\n sha256 = \"bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lab/0.11.0/download\"],\n strip_prefix = \"lab-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.lab-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lazy_static-1.5.0\",\n sha256 = \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazy_static/1.5.0/download\"],\n strip_prefix = \"lazy_static-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.lazy_static-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__leb128fmt-0.1.0\",\n sha256 = \"09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/leb128fmt/0.1.0/download\"],\n strip_prefix = \"leb128fmt-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.leb128fmt-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.186\",\n sha256 = \"68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.186/download\"],\n strip_prefix = \"libc-0.2.186\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.186.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libdbus-sys-0.2.7\",\n sha256 = \"328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libdbus-sys/0.2.7/download\"],\n strip_prefix = \"libdbus-sys-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.libdbus-sys-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libm-0.2.16\",\n sha256 = \"b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libm/0.2.16/download\"],\n strip_prefix = \"libm-0.2.16\",\n build_file = Label(\"@crates//crates:BUILD.libm-0.2.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libredox-0.1.16\",\n sha256 = \"e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libredox/0.1.16/download\"],\n strip_prefix = \"libredox-0.1.16\",\n build_file = Label(\"@crates//crates:BUILD.libredox-0.1.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__line-clipping-0.3.7\",\n sha256 = \"3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/line-clipping/0.3.7/download\"],\n strip_prefix = \"line-clipping-0.3.7\",\n build_file = Label(\"@crates//crates:BUILD.line-clipping-0.3.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linked-hash-map-0.5.6\",\n sha256 = \"0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linked-hash-map/0.5.6/download\"],\n strip_prefix = \"linked-hash-map-0.5.6\",\n build_file = Label(\"@crates//crates:BUILD.linked-hash-map-0.5.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.12.1\",\n sha256 = \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.12.1/download\"],\n strip_prefix = \"linux-raw-sys-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.4.15\",\n sha256 = \"d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.4.15/download\"],\n strip_prefix = \"linux-raw-sys-0.4.15\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.4.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litemap-0.8.2\",\n sha256 = \"92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litemap/0.8.2/download\"],\n strip_prefix = \"litemap-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.litemap-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litrs-1.0.0\",\n sha256 = \"11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litrs/1.0.0/download\"],\n strip_prefix = \"litrs-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.litrs-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lock_api-0.4.14\",\n sha256 = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lock_api/0.4.14/download\"],\n strip_prefix = \"lock_api-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.lock_api-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__log-0.4.29\",\n sha256 = \"5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.29/download\"],\n strip_prefix = \"log-0.4.29\",\n build_file = Label(\"@crates//crates:BUILD.log-0.4.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lopdf-0.34.0\",\n sha256 = \"c5c8ecfc6c72051981c0459f75ccc585e7ff67c70829560cda8e647882a9abff\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lopdf/0.34.0/download\"],\n strip_prefix = \"lopdf-0.34.0\",\n build_file = Label(\"@crates//crates:BUILD.lopdf-0.34.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lru-0.16.4\",\n sha256 = \"7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lru/0.16.4/download\"],\n strip_prefix = \"lru-0.16.4\",\n build_file = Label(\"@crates//crates:BUILD.lru-0.16.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mac-0.1.1\",\n sha256 = \"c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mac/0.1.1/download\"],\n strip_prefix = \"mac-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.mac-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mac_address-1.1.8\",\n sha256 = \"c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mac_address/1.1.8/download\"],\n strip_prefix = \"mac_address-1.1.8\",\n build_file = Label(\"@crates//crates:BUILD.mac_address-1.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__markup5ever-0.12.1\",\n sha256 = \"16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/markup5ever/0.12.1/download\"],\n strip_prefix = \"markup5ever-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.markup5ever-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__matchers-0.2.0\",\n sha256 = \"d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/matchers/0.2.0/download\"],\n strip_prefix = \"matchers-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.matchers-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__matchit-0.7.3\",\n sha256 = \"0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/matchit/0.7.3/download\"],\n strip_prefix = \"matchit-0.7.3\",\n build_file = Label(\"@crates//crates:BUILD.matchit-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__md-5-0.10.6\",\n sha256 = \"d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/md-5/0.10.6/download\"],\n strip_prefix = \"md-5-0.10.6\",\n build_file = Label(\"@crates//crates:BUILD.md-5-0.10.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.0\",\n sha256 = \"f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.0/download\"],\n strip_prefix = \"memchr-2.8.0\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memmem-0.1.1\",\n sha256 = \"a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memmem/0.1.1/download\"],\n strip_prefix = \"memmem-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.memmem-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memo-map-0.3.3\",\n sha256 = \"38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memo-map/0.3.3/download\"],\n strip_prefix = \"memo-map-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.memo-map-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memoffset-0.9.1\",\n sha256 = \"488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memoffset/0.9.1/download\"],\n strip_prefix = \"memoffset-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.memoffset-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mime-0.3.17\",\n sha256 = \"6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mime/0.3.17/download\"],\n strip_prefix = \"mime-0.3.17\",\n build_file = Label(\"@crates//crates:BUILD.mime-0.3.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__minijinja-2.19.0\",\n sha256 = \"805bfd7352166bae857ee569628b52bcd85a1cecf7810861ebceb1686b72b75d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/minijinja/2.19.0/download\"],\n strip_prefix = \"minijinja-2.19.0\",\n build_file = Label(\"@crates//crates:BUILD.minijinja-2.19.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__minimal-lexical-0.2.1\",\n sha256 = \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/minimal-lexical/0.2.1/download\"],\n strip_prefix = \"minimal-lexical-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.minimal-lexical-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__miniz_oxide-0.8.9\",\n sha256 = \"1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/miniz_oxide/0.8.9/download\"],\n strip_prefix = \"miniz_oxide-0.8.9\",\n build_file = Label(\"@crates//crates:BUILD.miniz_oxide-0.8.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mio-1.2.0\",\n sha256 = \"50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/1.2.0/download\"],\n strip_prefix = \"mio-1.2.0\",\n build_file = Label(\"@crates//crates:BUILD.mio-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__moxcms-0.8.1\",\n sha256 = \"bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/moxcms/0.8.1/download\"],\n strip_prefix = \"moxcms-0.8.1\",\n build_file = Label(\"@crates//crates:BUILD.moxcms-0.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__native-tls-0.2.18\",\n sha256 = \"465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/native-tls/0.2.18/download\"],\n strip_prefix = \"native-tls-0.2.18\",\n build_file = Label(\"@crates//crates:BUILD.native-tls-0.2.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__new_debug_unreachable-1.0.6\",\n sha256 = \"650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/new_debug_unreachable/1.0.6/download\"],\n strip_prefix = \"new_debug_unreachable-1.0.6\",\n build_file = Label(\"@crates//crates:BUILD.new_debug_unreachable-1.0.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nix-0.29.0\",\n sha256 = \"71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.29.0/download\"],\n strip_prefix = \"nix-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.nix-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nix-0.31.3\",\n sha256 = \"cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.31.3/download\"],\n strip_prefix = \"nix-0.31.3\",\n build_file = Label(\"@crates//crates:BUILD.nix-0.31.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nom-7.1.3\",\n sha256 = \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nom/7.1.3/download\"],\n strip_prefix = \"nom-7.1.3\",\n build_file = Label(\"@crates//crates:BUILD.nom-7.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__normpath-1.5.1\",\n sha256 = \"b9985ef7269fa99f3b12437bb698381da2428743ab90f20393f399fa14cab21a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/normpath/1.5.1/download\"],\n strip_prefix = \"normpath-1.5.1\",\n build_file = Label(\"@crates//crates:BUILD.normpath-1.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nu-ansi-term-0.50.3\",\n sha256 = \"7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nu-ansi-term/0.50.3/download\"],\n strip_prefix = \"nu-ansi-term-0.50.3\",\n build_file = Label(\"@crates//crates:BUILD.nu-ansi-term-0.50.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-bigint-dig-0.8.6\",\n sha256 = \"e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-bigint-dig/0.8.6/download\"],\n strip_prefix = \"num-bigint-dig-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.num-bigint-dig-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-conv-0.2.2\",\n sha256 = \"521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-conv/0.2.2/download\"],\n strip_prefix = \"num-conv-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.num-conv-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-derive-0.4.2\",\n sha256 = \"ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-derive/0.4.2/download\"],\n strip_prefix = \"num-derive-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.num-derive-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-integer-0.1.46\",\n sha256 = \"7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-integer/0.1.46/download\"],\n strip_prefix = \"num-integer-0.1.46\",\n build_file = Label(\"@crates//crates:BUILD.num-integer-0.1.46.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-iter-0.1.45\",\n sha256 = \"1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-iter/0.1.45/download\"],\n strip_prefix = \"num-iter-0.1.45\",\n build_file = Label(\"@crates//crates:BUILD.num-iter-0.1.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-traits-0.2.19\",\n sha256 = \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-traits/0.2.19/download\"],\n strip_prefix = \"num-traits-0.2.19\",\n build_file = Label(\"@crates//crates:BUILD.num-traits-0.2.19.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_cpus-1.17.0\",\n sha256 = \"91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_cpus/1.17.0/download\"],\n strip_prefix = \"num_cpus-1.17.0\",\n build_file = Label(\"@crates//crates:BUILD.num_cpus-1.17.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_threads-0.1.7\",\n sha256 = \"5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_threads/0.1.7/download\"],\n strip_prefix = \"num_threads-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.num_threads-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oauth2-5.0.0\",\n sha256 = \"51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oauth2/5.0.0/download\"],\n strip_prefix = \"oauth2-5.0.0\",\n build_file = Label(\"@crates//crates:BUILD.oauth2-5.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-0.6.4\",\n sha256 = \"3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2/0.6.4/download\"],\n strip_prefix = \"objc2-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.objc2-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-app-kit-0.3.2\",\n sha256 = \"d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-app-kit/0.3.2/download\"],\n strip_prefix = \"objc2-app-kit-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-app-kit-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-core-foundation-0.3.2\",\n sha256 = \"2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-core-foundation/0.3.2/download\"],\n strip_prefix = \"objc2-core-foundation-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-core-foundation-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-core-graphics-0.3.2\",\n sha256 = \"e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-core-graphics/0.3.2/download\"],\n strip_prefix = \"objc2-core-graphics-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-core-graphics-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-encode-4.1.0\",\n sha256 = \"ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-encode/4.1.0/download\"],\n strip_prefix = \"objc2-encode-4.1.0\",\n build_file = Label(\"@crates//crates:BUILD.objc2-encode-4.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-foundation-0.3.2\",\n sha256 = \"e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-foundation/0.3.2/download\"],\n strip_prefix = \"objc2-foundation-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-foundation-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-io-surface-0.3.2\",\n sha256 = \"180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-io-surface/0.3.2/download\"],\n strip_prefix = \"objc2-io-surface-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-io-surface-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell-1.21.4\",\n sha256 = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.4/download\"],\n strip_prefix = \"once_cell-1.21.4\",\n build_file = Label(\"@crates//crates:BUILD.once_cell-1.21.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell_polyfill-1.70.2\",\n sha256 = \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell_polyfill/1.70.2/download\"],\n strip_prefix = \"once_cell_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.once_cell_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__onig-6.5.3\",\n sha256 = \"0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/onig/6.5.3/download\"],\n strip_prefix = \"onig-6.5.3\",\n build_file = Label(\"@crates//crates:BUILD.onig-6.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__onig_sys-69.9.3\",\n sha256 = \"1e68317604e77e53b85896388e1a803c1d21b74c899ec9e5e1112db90735edd7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/onig_sys/69.9.3/download\"],\n strip_prefix = \"onig_sys-69.9.3\",\n build_file = Label(\"@crates//crates:BUILD.onig_sys-69.9.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opaque-debug-0.3.1\",\n sha256 = \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opaque-debug/0.3.1/download\"],\n strip_prefix = \"opaque-debug-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.opaque-debug-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opener-0.7.2\",\n sha256 = \"d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opener/0.7.2/download\"],\n strip_prefix = \"opener-0.7.2\",\n build_file = Label(\"@crates//crates:BUILD.opener-0.7.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-0.10.80\",\n sha256 = \"a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl/0.10.80/download\"],\n strip_prefix = \"openssl-0.10.80\",\n build_file = Label(\"@crates//crates:BUILD.openssl-0.10.80.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-macros-0.1.1\",\n sha256 = \"a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-macros/0.1.1/download\"],\n strip_prefix = \"openssl-macros-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.openssl-macros-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-probe-0.2.1\",\n sha256 = \"7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-probe/0.2.1/download\"],\n strip_prefix = \"openssl-probe-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.openssl-probe-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-sys-0.9.116\",\n sha256 = \"f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-sys/0.9.116/download\"],\n strip_prefix = \"openssl-sys-0.9.116\",\n build_file = Label(\"@crates//crates:BUILD.openssl-sys-0.9.116.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-0.28.0\",\n sha256 = \"236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry/0.28.0/download\"],\n strip_prefix = \"opentelemetry-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-appender-tracing-0.28.1\",\n sha256 = \"c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-appender-tracing/0.28.1/download\"],\n strip_prefix = \"opentelemetry-appender-tracing-0.28.1\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-appender-tracing-0.28.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-http-0.28.0\",\n sha256 = \"a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-http/0.28.0/download\"],\n strip_prefix = \"opentelemetry-http-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-http-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-otlp-0.28.0\",\n sha256 = \"5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-otlp/0.28.0/download\"],\n strip_prefix = \"opentelemetry-otlp-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-otlp-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-proto-0.28.0\",\n sha256 = \"56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-proto/0.28.0/download\"],\n strip_prefix = \"opentelemetry-proto-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-proto-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry_sdk-0.28.0\",\n sha256 = \"84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry_sdk/0.28.0/download\"],\n strip_prefix = \"opentelemetry_sdk-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry_sdk-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__option-ext-0.2.0\",\n sha256 = \"04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/option-ext/0.2.0/download\"],\n strip_prefix = \"option-ext-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.option-ext-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ordered-float-4.6.0\",\n sha256 = \"7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ordered-float/4.6.0/download\"],\n strip_prefix = \"ordered-float-4.6.0\",\n build_file = Label(\"@crates//crates:BUILD.ordered-float-4.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot-0.12.5\",\n sha256 = \"93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot/0.12.5/download\"],\n strip_prefix = \"parking_lot-0.12.5\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot-0.12.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot_core-0.9.12\",\n sha256 = \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot_core/0.9.12/download\"],\n strip_prefix = \"parking_lot_core-0.9.12\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot_core-0.9.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pastey-0.2.2\",\n sha256 = \"c5a797f0e07bdf071d15742978fc3128ec6c22891c31a3a931513263904c982a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pastey/0.2.2/download\"],\n strip_prefix = \"pastey-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.pastey-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pbkdf2-0.12.2\",\n sha256 = \"f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pbkdf2/0.12.2/download\"],\n strip_prefix = \"pbkdf2-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.pbkdf2-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pdf-extract-0.7.12\",\n sha256 = \"cbb3a5387b94b9053c1e69d8abfd4dd6dae7afda65a5c5279bc1f42ab39df575\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pdf-extract/0.7.12/download\"],\n strip_prefix = \"pdf-extract-0.7.12\",\n build_file = Label(\"@crates//crates:BUILD.pdf-extract-0.7.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crates//crates:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest-2.8.6\",\n sha256 = \"e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest/2.8.6/download\"],\n strip_prefix = \"pest-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_derive-2.8.6\",\n sha256 = \"11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_derive/2.8.6/download\"],\n strip_prefix = \"pest_derive-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_derive-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_generator-2.8.6\",\n sha256 = \"8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_generator/2.8.6/download\"],\n strip_prefix = \"pest_generator-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_generator-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_meta-2.8.6\",\n sha256 = \"89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_meta/2.8.6/download\"],\n strip_prefix = \"pest_meta-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_meta-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf-0.11.3\",\n sha256 = \"1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf/0.11.3/download\"],\n strip_prefix = \"phf-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_codegen-0.11.3\",\n sha256 = \"aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_codegen/0.11.3/download\"],\n strip_prefix = \"phf_codegen-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_codegen-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_generator-0.11.3\",\n sha256 = \"3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_generator/0.11.3/download\"],\n strip_prefix = \"phf_generator-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_generator-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_macros-0.11.3\",\n sha256 = \"f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_macros/0.11.3/download\"],\n strip_prefix = \"phf_macros-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_macros-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_shared-0.11.3\",\n sha256 = \"67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_shared/0.11.3/download\"],\n strip_prefix = \"phf_shared-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_shared-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-1.1.13\",\n sha256 = \"2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project/1.1.13/download\"],\n strip_prefix = \"pin-project-1.1.13\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-1.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-internal-1.1.13\",\n sha256 = \"c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-internal/1.1.13/download\"],\n strip_prefix = \"pin-project-internal-1.1.13\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-internal-1.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.17\",\n sha256 = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.17/download\"],\n strip_prefix = \"pin-project-lite-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkcs1-0.7.5\",\n sha256 = \"c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkcs1/0.7.5/download\"],\n strip_prefix = \"pkcs1-0.7.5\",\n build_file = Label(\"@crates//crates:BUILD.pkcs1-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkcs8-0.10.2\",\n sha256 = \"f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkcs8/0.10.2/download\"],\n strip_prefix = \"pkcs8-0.10.2\",\n build_file = Label(\"@crates//crates:BUILD.pkcs8-0.10.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkg-config-0.3.33\",\n sha256 = \"19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkg-config/0.3.33/download\"],\n strip_prefix = \"pkg-config-0.3.33\",\n build_file = Label(\"@crates//crates:BUILD.pkg-config-0.3.33.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__plist-1.9.0\",\n sha256 = \"092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/plist/1.9.0/download\"],\n strip_prefix = \"plist-1.9.0\",\n build_file = Label(\"@crates//crates:BUILD.plist-1.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__png-0.18.1\",\n sha256 = \"60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/png/0.18.1/download\"],\n strip_prefix = \"png-0.18.1\",\n build_file = Label(\"@crates//crates:BUILD.png-0.18.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__poly1305-0.8.0\",\n sha256 = \"8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/poly1305/0.8.0/download\"],\n strip_prefix = \"poly1305-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.poly1305-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__polyval-0.6.2\",\n sha256 = \"9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/polyval/0.6.2/download\"],\n strip_prefix = \"polyval-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.polyval-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pom-1.1.0\",\n sha256 = \"60f6ce597ecdcc9a098e7fddacb1065093a3d66446fa16c675e7e71d1b5c28e6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pom/1.1.0/download\"],\n strip_prefix = \"pom-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.pom-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__portable-atomic-1.13.1\",\n sha256 = \"c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/portable-atomic/1.13.1/download\"],\n strip_prefix = \"portable-atomic-1.13.1\",\n build_file = Label(\"@crates//crates:BUILD.portable-atomic-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__postscript-0.14.1\",\n sha256 = \"78451badbdaebaf17f053fd9152b3ffb33b516104eacb45e7864aaa9c712f306\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/postscript/0.14.1/download\"],\n strip_prefix = \"postscript-0.14.1\",\n build_file = Label(\"@crates//crates:BUILD.postscript-0.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__potential_utf-0.1.5\",\n sha256 = \"0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/potential_utf/0.1.5/download\"],\n strip_prefix = \"potential_utf-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.potential_utf-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__powerfmt-0.2.0\",\n sha256 = \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/powerfmt/0.2.0/download\"],\n strip_prefix = \"powerfmt-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.powerfmt-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ppv-lite86-0.2.21\",\n sha256 = \"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ppv-lite86/0.2.21/download\"],\n strip_prefix = \"ppv-lite86-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.ppv-lite86-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__precomputed-hash-0.1.1\",\n sha256 = \"925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/precomputed-hash/0.1.1/download\"],\n strip_prefix = \"precomputed-hash-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.precomputed-hash-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prettyplease-0.2.37\",\n sha256 = \"479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prettyplease/0.2.37/download\"],\n strip_prefix = \"prettyplease-0.2.37\",\n build_file = Label(\"@crates//crates:BUILD.prettyplease-0.2.37.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro-error-1.0.4\",\n sha256 = \"da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro-error/1.0.4/download\"],\n strip_prefix = \"proc-macro-error-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro-error-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro-error-attr-1.0.4\",\n sha256 = \"a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro-error-attr/1.0.4/download\"],\n strip_prefix = \"proc-macro-error-attr-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro-error-attr-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__process-wrap-9.1.0\",\n sha256 = \"2e842efad9119158434d193c6682e2ebee4b44d6ad801d7b349623b3f57cdf55\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/process-wrap/9.1.0/download\"],\n strip_prefix = \"process-wrap-9.1.0\",\n build_file = Label(\"@crates//crates:BUILD.process-wrap-9.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-0.13.5\",\n sha256 = \"2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.13.5/download\"],\n strip_prefix = \"prost-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-derive-0.13.5\",\n sha256 = \"8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.13.5/download\"],\n strip_prefix = \"prost-derive-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-derive-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pulldown-cmark-0.12.2\",\n sha256 = \"f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pulldown-cmark/0.12.2/download\"],\n strip_prefix = \"pulldown-cmark-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.pulldown-cmark-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pxfm-0.1.29\",\n sha256 = \"e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pxfm/0.1.29/download\"],\n strip_prefix = \"pxfm-0.1.29\",\n build_file = Label(\"@crates//crates:BUILD.pxfm-0.1.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quick-error-2.0.1\",\n sha256 = \"a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quick-error/2.0.1/download\"],\n strip_prefix = \"quick-error-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.quick-error-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quick-xml-0.39.4\",\n sha256 = \"cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quick-xml/0.39.4/download\"],\n strip_prefix = \"quick-xml-0.39.4\",\n build_file = Label(\"@crates//crates:BUILD.quick-xml-0.39.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.45\",\n sha256 = \"41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.45/download\"],\n strip_prefix = \"quote-1.0.45\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-5.3.0\",\n sha256 = \"69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/5.3.0/download\"],\n strip_prefix = \"r-efi-5.3.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-5.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-6.0.0\",\n sha256 = \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/6.0.0/download\"],\n strip_prefix = \"r-efi-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand-0.8.6\",\n sha256 = \"5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand/0.8.6/download\"],\n strip_prefix = \"rand-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.rand-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand-0.9.4\",\n sha256 = \"44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand/0.9.4/download\"],\n strip_prefix = \"rand-0.9.4\",\n build_file = Label(\"@crates//crates:BUILD.rand-0.9.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_chacha-0.3.1\",\n sha256 = \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_chacha/0.3.1/download\"],\n strip_prefix = \"rand_chacha-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.rand_chacha-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_chacha-0.9.0\",\n sha256 = \"d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_chacha/0.9.0/download\"],\n strip_prefix = \"rand_chacha-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.rand_chacha-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_core-0.6.4\",\n sha256 = \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.6.4/download\"],\n strip_prefix = \"rand_core-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.rand_core-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_core-0.9.5\",\n sha256 = \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.9.5/download\"],\n strip_prefix = \"rand_core-0.9.5\",\n build_file = Label(\"@crates//crates:BUILD.rand_core-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rangemap-1.7.1\",\n sha256 = \"973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rangemap/1.7.1/download\"],\n strip_prefix = \"rangemap-1.7.1\",\n build_file = Label(\"@crates//crates:BUILD.rangemap-1.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-0.30.0\",\n sha256 = \"d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui/0.30.0/download\"],\n strip_prefix = \"ratatui-0.30.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-0.30.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-core-0.1.0\",\n sha256 = \"5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-core/0.1.0/download\"],\n strip_prefix = \"ratatui-core-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-core-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-crossterm-0.1.0\",\n sha256 = \"577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-crossterm/0.1.0/download\"],\n strip_prefix = \"ratatui-crossterm-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-crossterm-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-macros-0.7.0\",\n sha256 = \"a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-macros/0.7.0/download\"],\n strip_prefix = \"ratatui-macros-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-macros-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-termwiz-0.1.0\",\n sha256 = \"0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-termwiz/0.1.0/download\"],\n strip_prefix = \"ratatui-termwiz-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-termwiz-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-widgets-0.3.0\",\n sha256 = \"d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-widgets/0.3.0/download\"],\n strip_prefix = \"ratatui-widgets-0.3.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-widgets-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_syscall-0.5.18\",\n sha256 = \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_syscall/0.5.18/download\"],\n strip_prefix = \"redox_syscall-0.5.18\",\n build_file = Label(\"@crates//crates:BUILD.redox_syscall-0.5.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_users-0.5.2\",\n sha256 = \"a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_users/0.5.2/download\"],\n strip_prefix = \"redox_users-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.redox_users-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-1.0.25\",\n sha256 = \"f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast/1.0.25/download\"],\n strip_prefix = \"ref-cast-1.0.25\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-1.0.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-impl-1.0.25\",\n sha256 = \"b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast-impl/1.0.25/download\"],\n strip_prefix = \"ref-cast-impl-1.0.25\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-impl-1.0.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-1.12.3\",\n sha256 = \"e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.12.3/download\"],\n strip_prefix = \"regex-1.12.3\",\n build_file = Label(\"@crates//crates:BUILD.regex-1.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-automata-0.4.14\",\n sha256 = \"6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.14/download\"],\n strip_prefix = \"regex-automata-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.regex-automata-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-syntax-0.8.10\",\n sha256 = \"dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.10/download\"],\n strip_prefix = \"regex-syntax-0.8.10\",\n build_file = Label(\"@crates//crates:BUILD.regex-syntax-0.8.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__reqwest-0.12.28\",\n sha256 = \"eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/reqwest/0.12.28/download\"],\n strip_prefix = \"reqwest-0.12.28\",\n build_file = Label(\"@crates//crates:BUILD.reqwest-0.12.28.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__reqwest-0.13.3\",\n sha256 = \"62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/reqwest/0.13.3/download\"],\n strip_prefix = \"reqwest-0.13.3\",\n build_file = Label(\"@crates//crates:BUILD.reqwest-0.13.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ring-0.17.14\",\n sha256 = \"a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ring/0.17.14/download\"],\n strip_prefix = \"ring-0.17.14\",\n build_file = Label(\"@crates//crates:BUILD.ring-0.17.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rmcp-1.7.0\",\n sha256 = \"0810a9f717d9828f475fe1f629f4c305c8464b7f496c3a854b58d29e65f4058e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rmcp/1.7.0/download\"],\n strip_prefix = \"rmcp-1.7.0\",\n build_file = Label(\"@crates//crates:BUILD.rmcp-1.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rmcp-macros-1.7.0\",\n sha256 = \"6aefac48c364756e97f04c0401ba3231e8607882c7c1d92da0437dc16307904d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rmcp-macros/1.7.0/download\"],\n strip_prefix = \"rmcp-macros-1.7.0\",\n build_file = Label(\"@crates//crates:BUILD.rmcp-macros-1.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rpassword-7.5.2\",\n sha256 = \"5ac5b223d9738ef56e0b98305410be40fa0941bf6036c56f1506751e43552d64\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rpassword/7.5.2/download\"],\n strip_prefix = \"rpassword-7.5.2\",\n build_file = Label(\"@crates//crates:BUILD.rpassword-7.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rsa-0.9.10\",\n sha256 = \"b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rsa/0.9.10/download\"],\n strip_prefix = \"rsa-0.9.10\",\n build_file = Label(\"@crates//crates:BUILD.rsa-0.9.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rtoolbox-0.0.5\",\n sha256 = \"50a0e551c1e27e1731aba276dbeaeac73f53c7cd34d1bda485d02bd1e0f36844\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rtoolbox/0.0.5/download\"],\n strip_prefix = \"rtoolbox-0.0.5\",\n build_file = Label(\"@crates//crates:BUILD.rtoolbox-0.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-8.11.0\",\n sha256 = \"04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed/8.11.0/download\"],\n strip_prefix = \"rust-embed-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-impl-8.11.0\",\n sha256 = \"da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed-impl/8.11.0/download\"],\n strip_prefix = \"rust-embed-impl-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-impl-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-utils-8.11.0\",\n sha256 = \"5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed-utils/8.11.0/download\"],\n strip_prefix = \"rust-embed-utils-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-utils-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-1.1.0\",\n sha256 = \"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/1.1.0/download\"],\n strip_prefix = \"rustc-hash-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-2.1.2\",\n sha256 = \"94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.2/download\"],\n strip_prefix = \"rustc-hash-2.1.2\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-2.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc_version-0.4.1\",\n sha256 = \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.4.1/download\"],\n strip_prefix = \"rustc_version-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.rustc_version-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-0.38.44\",\n sha256 = \"fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/0.38.44/download\"],\n strip_prefix = \"rustix-0.38.44\",\n build_file = Label(\"@crates//crates:BUILD.rustix-0.38.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-1.1.4\",\n sha256 = \"b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/1.1.4/download\"],\n strip_prefix = \"rustix-1.1.4\",\n build_file = Label(\"@crates//crates:BUILD.rustix-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-0.23.40\",\n sha256 = \"ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls/0.23.40/download\"],\n strip_prefix = \"rustls-0.23.40\",\n build_file = Label(\"@crates//crates:BUILD.rustls-0.23.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-pki-types-1.14.1\",\n sha256 = \"30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls-pki-types/1.14.1/download\"],\n strip_prefix = \"rustls-pki-types-1.14.1\",\n build_file = Label(\"@crates//crates:BUILD.rustls-pki-types-1.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-webpki-0.103.13\",\n sha256 = \"61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls-webpki/0.103.13/download\"],\n strip_prefix = \"rustls-webpki-0.103.13\",\n build_file = Label(\"@crates//crates:BUILD.rustls-webpki-0.103.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustversion-1.0.22\",\n sha256 = \"b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustversion/1.0.22/download\"],\n strip_prefix = \"rustversion-1.0.22\",\n build_file = Label(\"@crates//crates:BUILD.rustversion-1.0.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.23\",\n sha256 = \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.23/download\"],\n strip_prefix = \"ryu-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__salsa20-0.10.2\",\n sha256 = \"97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/salsa20/0.10.2/download\"],\n strip_prefix = \"salsa20-0.10.2\",\n build_file = Label(\"@crates//crates:BUILD.salsa20-0.10.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__same-file-1.0.6\",\n sha256 = \"93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/same-file/1.0.6/download\"],\n strip_prefix = \"same-file-1.0.6\",\n build_file = Label(\"@crates//crates:BUILD.same-file-1.0.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schannel-0.1.29\",\n sha256 = \"91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schannel/0.1.29/download\"],\n strip_prefix = \"schannel-0.1.29\",\n build_file = Label(\"@crates//crates:BUILD.schannel-0.1.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schemars-1.2.1\",\n sha256 = \"a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schemars/1.2.1/download\"],\n strip_prefix = \"schemars-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.schemars-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schemars_derive-1.2.1\",\n sha256 = \"7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schemars_derive/1.2.1/download\"],\n strip_prefix = \"schemars_derive-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.schemars_derive-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scopeguard-1.2.0\",\n sha256 = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scopeguard/1.2.0/download\"],\n strip_prefix = \"scopeguard-1.2.0\",\n build_file = Label(\"@crates//crates:BUILD.scopeguard-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scrypt-0.11.0\",\n sha256 = \"0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scrypt/0.11.0/download\"],\n strip_prefix = \"scrypt-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.scrypt-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__secrecy-0.10.3\",\n sha256 = \"e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/secrecy/0.10.3/download\"],\n strip_prefix = \"secrecy-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.secrecy-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__secrecy-0.8.0\",\n sha256 = \"9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/secrecy/0.8.0/download\"],\n strip_prefix = \"secrecy-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.secrecy-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__security-framework-3.7.0\",\n sha256 = \"b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/security-framework/3.7.0/download\"],\n strip_prefix = \"security-framework-3.7.0\",\n build_file = Label(\"@crates//crates:BUILD.security-framework-3.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__security-framework-sys-2.17.0\",\n sha256 = \"6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/security-framework-sys/2.17.0/download\"],\n strip_prefix = \"security-framework-sys-2.17.0\",\n build_file = Label(\"@crates//crates:BUILD.security-framework-sys-2.17.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-0.10.3\",\n sha256 = \"e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/0.10.3/download\"],\n strip_prefix = \"self_cell-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-1.2.2\",\n sha256 = \"b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/1.2.2/download\"],\n strip_prefix = \"self_cell-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__semver-1.0.28\",\n sha256 = \"8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/1.0.28/download\"],\n strip_prefix = \"semver-1.0.28\",\n build_file = Label(\"@crates//crates:BUILD.semver-1.0.28.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.228\",\n sha256 = \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.228/download\"],\n strip_prefix = \"serde-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.228\",\n sha256 = \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.228/download\"],\n strip_prefix = \"serde_core-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.228\",\n sha256 = \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.228/download\"],\n strip_prefix = \"serde_derive-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive_internals-0.29.1\",\n sha256 = \"18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive_internals/0.29.1/download\"],\n strip_prefix = \"serde_derive_internals-0.29.1\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive_internals-0.29.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.149\",\n sha256 = \"83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.149/download\"],\n strip_prefix = \"serde_json-1.0.149\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.149.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_path_to_error-0.1.20\",\n sha256 = \"10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_path_to_error/0.1.20/download\"],\n strip_prefix = \"serde_path_to_error-0.1.20\",\n build_file = Label(\"@crates//crates:BUILD.serde_path_to_error-0.1.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_urlencoded-0.7.1\",\n sha256 = \"d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_urlencoded/0.7.1/download\"],\n strip_prefix = \"serde_urlencoded-0.7.1\",\n build_file = Label(\"@crates//crates:BUILD.serde_urlencoded-0.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_yaml-0.9.34-deprecated\",\n sha256 = \"6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download\"],\n strip_prefix = \"serde_yaml-0.9.34+deprecated\",\n build_file = Label(\"@crates//crates:BUILD.serde_yaml-0.9.34+deprecated.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sha2-0.10.9\",\n sha256 = \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sha2/0.10.9/download\"],\n strip_prefix = \"sha2-0.10.9\",\n build_file = Label(\"@crates//crates:BUILD.sha2-0.10.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sharded-slab-0.1.7\",\n sha256 = \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sharded-slab/0.1.7/download\"],\n strip_prefix = \"sharded-slab-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.sharded-slab-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__shlex-1.3.0\",\n sha256 = \"0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/shlex/1.3.0/download\"],\n strip_prefix = \"shlex-1.3.0\",\n build_file = Label(\"@crates//crates:BUILD.shlex-1.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-0.3.18\",\n sha256 = \"d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook/0.3.18/download\"],\n strip_prefix = \"signal-hook-0.3.18\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-0.3.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-mio-0.2.5\",\n sha256 = \"b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook-mio/0.2.5/download\"],\n strip_prefix = \"signal-hook-mio-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-mio-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-registry-1.4.8\",\n sha256 = \"c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook-registry/1.4.8/download\"],\n strip_prefix = \"signal-hook-registry-1.4.8\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-registry-1.4.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signature-2.2.0\",\n sha256 = \"77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signature/2.2.0/download\"],\n strip_prefix = \"signature-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.signature-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simd-adler32-0.3.9\",\n sha256 = \"703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simd-adler32/0.3.9/download\"],\n strip_prefix = \"simd-adler32-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.simd-adler32-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__siphasher-1.0.3\",\n sha256 = \"8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/siphasher/1.0.3/download\"],\n strip_prefix = \"siphasher-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.siphasher-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__slab-0.4.12\",\n sha256 = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/slab/0.4.12/download\"],\n strip_prefix = \"slab-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.slab-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smallvec-1.15.1\",\n sha256 = \"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.15.1/download\"],\n strip_prefix = \"smallvec-1.15.1\",\n build_file = Label(\"@crates//crates:BUILD.smallvec-1.15.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smawk-0.3.2\",\n sha256 = \"b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smawk/0.3.2/download\"],\n strip_prefix = \"smawk-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.smawk-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.5.10\",\n sha256 = \"e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.5.10/download\"],\n strip_prefix = \"socket2-0.5.10\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.5.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.6.3\",\n sha256 = \"3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.6.3/download\"],\n strip_prefix = \"socket2-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__spin-0.9.8\",\n sha256 = \"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/spin/0.9.8/download\"],\n strip_prefix = \"spin-0.9.8\",\n build_file = Label(\"@crates//crates:BUILD.spin-0.9.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__spki-0.7.3\",\n sha256 = \"d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/spki/0.7.3/download\"],\n strip_prefix = \"spki-0.7.3\",\n build_file = Label(\"@crates//crates:BUILD.spki-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sse-stream-0.2.3\",\n sha256 = \"f3962b63f038885f15bce2c6e02c0e7925c072f1ac86bb60fd44c5c6b762fb72\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sse-stream/0.2.3/download\"],\n strip_prefix = \"sse-stream-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.sse-stream-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__static_assertions-1.1.0\",\n sha256 = \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/static_assertions/1.1.0/download\"],\n strip_prefix = \"static_assertions-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.static_assertions-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__string_cache-0.8.9\",\n sha256 = \"bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/string_cache/0.8.9/download\"],\n strip_prefix = \"string_cache-0.8.9\",\n build_file = Label(\"@crates//crates:BUILD.string_cache-0.8.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__string_cache_codegen-0.5.4\",\n sha256 = \"c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/string_cache_codegen/0.5.4/download\"],\n strip_prefix = \"string_cache_codegen-0.5.4\",\n build_file = Label(\"@crates//crates:BUILD.string_cache_codegen-0.5.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.10.0\",\n sha256 = \"73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.10.0/download\"],\n strip_prefix = \"strsim-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.11.1\",\n sha256 = \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.11.1/download\"],\n strip_prefix = \"strsim-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum-0.27.2\",\n sha256 = \"af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum/0.27.2/download\"],\n strip_prefix = \"strum-0.27.2\",\n build_file = Label(\"@crates//crates:BUILD.strum-0.27.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum-0.28.0\",\n sha256 = \"9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum/0.28.0/download\"],\n strip_prefix = \"strum-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.strum-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum_macros-0.27.2\",\n sha256 = \"7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum_macros/0.27.2/download\"],\n strip_prefix = \"strum_macros-0.27.2\",\n build_file = Label(\"@crates//crates:BUILD.strum_macros-0.27.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum_macros-0.28.0\",\n sha256 = \"ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum_macros/0.28.0/download\"],\n strip_prefix = \"strum_macros-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.strum_macros-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__subtle-2.6.1\",\n sha256 = \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/subtle/2.6.1/download\"],\n strip_prefix = \"subtle-2.6.1\",\n build_file = Label(\"@crates//crates:BUILD.subtle-2.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__symlink-0.1.0\",\n sha256 = \"a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/symlink/0.1.0/download\"],\n strip_prefix = \"symlink-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.symlink-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-1.0.109\",\n sha256 = \"72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/1.0.109/download\"],\n strip_prefix = \"syn-1.0.109\",\n build_file = Label(\"@crates//crates:BUILD.syn-1.0.109.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sync_wrapper-1.0.2\",\n sha256 = \"0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sync_wrapper/1.0.2/download\"],\n strip_prefix = \"sync_wrapper-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.sync_wrapper-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__synstructure-0.13.2\",\n sha256 = \"728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/synstructure/0.13.2/download\"],\n strip_prefix = \"synstructure-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.synstructure-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syntect-5.3.0\",\n sha256 = \"656b45c05d95a5704399aeef6bd0ddec7b2b3531b7c9e900abbf7c4d2190c925\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syntect/5.3.0/download\"],\n strip_prefix = \"syntect-5.3.0\",\n build_file = Label(\"@crates//crates:BUILD.syntect-5.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__system-configuration-0.7.0\",\n sha256 = \"a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/system-configuration/0.7.0/download\"],\n strip_prefix = \"system-configuration-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.system-configuration-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__system-configuration-sys-0.6.0\",\n sha256 = \"8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/system-configuration-sys/0.6.0/download\"],\n strip_prefix = \"system-configuration-sys-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.system-configuration-sys-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tempfile-3.27.0\",\n sha256 = \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tempfile/3.27.0/download\"],\n strip_prefix = \"tempfile-3.27.0\",\n build_file = Label(\"@crates//crates:BUILD.tempfile-3.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tendril-0.4.3\",\n sha256 = \"d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tendril/0.4.3/download\"],\n strip_prefix = \"tendril-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.tendril-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__terminfo-0.9.0\",\n sha256 = \"d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/terminfo/0.9.0/download\"],\n strip_prefix = \"terminfo-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.terminfo-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__termios-0.3.3\",\n sha256 = \"411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termios/0.3.3/download\"],\n strip_prefix = \"termios-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.termios-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__termwiz-0.23.3\",\n sha256 = \"4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termwiz/0.23.3/download\"],\n strip_prefix = \"termwiz-0.23.3\",\n build_file = Label(\"@crates//crates:BUILD.termwiz-0.23.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__textwrap-0.16.2\",\n sha256 = \"c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/textwrap/0.16.2/download\"],\n strip_prefix = \"textwrap-0.16.2\",\n build_file = Label(\"@crates//crates:BUILD.textwrap-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-1.0.69\",\n sha256 = \"b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/1.0.69/download\"],\n strip_prefix = \"thiserror-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-2.0.18\",\n sha256 = \"4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/2.0.18/download\"],\n strip_prefix = \"thiserror-2.0.18\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-1.0.69\",\n sha256 = \"4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/1.0.69/download\"],\n strip_prefix = \"thiserror-impl-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-2.0.18\",\n sha256 = \"ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/2.0.18/download\"],\n strip_prefix = \"thiserror-impl-2.0.18\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thread_local-1.1.9\",\n sha256 = \"f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thread_local/1.1.9/download\"],\n strip_prefix = \"thread_local-1.1.9\",\n build_file = Label(\"@crates//crates:BUILD.thread_local-1.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tiff-0.11.3\",\n sha256 = \"b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tiff/0.11.3/download\"],\n strip_prefix = \"tiff-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.tiff-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tiktoken-rs-0.6.0\",\n sha256 = \"44075987ee2486402f0808505dd65692163d243a337fc54363d49afac41087f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tiktoken-rs/0.6.0/download\"],\n strip_prefix = \"tiktoken-rs-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.tiktoken-rs-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-0.3.47\",\n sha256 = \"743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time/0.3.47/download\"],\n strip_prefix = \"time-0.3.47\",\n build_file = Label(\"@crates//crates:BUILD.time-0.3.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-core-0.1.8\",\n sha256 = \"7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-core/0.1.8/download\"],\n strip_prefix = \"time-core-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.time-core-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-macros-0.2.27\",\n sha256 = \"2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-macros/0.2.27/download\"],\n strip_prefix = \"time-macros-0.2.27\",\n build_file = Label(\"@crates//crates:BUILD.time-macros-0.2.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinystr-0.8.3\",\n sha256 = \"c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinystr/0.8.3/download\"],\n strip_prefix = \"tinystr-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.tinystr-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinyvec-1.11.0\",\n sha256 = \"3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinyvec/1.11.0/download\"],\n strip_prefix = \"tinyvec-1.11.0\",\n build_file = Label(\"@crates//crates:BUILD.tinyvec-1.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinyvec_macros-0.1.1\",\n sha256 = \"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinyvec_macros/0.1.1/download\"],\n strip_prefix = \"tinyvec_macros-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.tinyvec_macros-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-1.52.3\",\n sha256 = \"8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio/1.52.3/download\"],\n strip_prefix = \"tokio-1.52.3\",\n build_file = Label(\"@crates//crates:BUILD.tokio-1.52.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-macros-2.7.0\",\n sha256 = \"385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-macros/2.7.0/download\"],\n strip_prefix = \"tokio-macros-2.7.0\",\n build_file = Label(\"@crates//crates:BUILD.tokio-macros-2.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-native-tls-0.3.1\",\n sha256 = \"bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-native-tls/0.3.1/download\"],\n strip_prefix = \"tokio-native-tls-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.tokio-native-tls-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-rustls-0.26.4\",\n sha256 = \"1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-rustls/0.26.4/download\"],\n strip_prefix = \"tokio-rustls-0.26.4\",\n build_file = Label(\"@crates//crates:BUILD.tokio-rustls-0.26.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-stream-0.1.18\",\n sha256 = \"32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-stream/0.1.18/download\"],\n strip_prefix = \"tokio-stream-0.1.18\",\n build_file = Label(\"@crates//crates:BUILD.tokio-stream-0.1.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-util-0.7.18\",\n sha256 = \"9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-util/0.7.18/download\"],\n strip_prefix = \"tokio-util-0.7.18\",\n build_file = Label(\"@crates//crates:BUILD.tokio-util-0.7.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml-0.5.11\",\n sha256 = \"f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml/0.5.11/download\"],\n strip_prefix = \"toml-0.5.11\",\n build_file = Label(\"@crates//crates:BUILD.toml-0.5.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tonic-0.12.3\",\n sha256 = \"877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tonic/0.12.3/download\"],\n strip_prefix = \"tonic-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.tonic-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-0.4.13\",\n sha256 = \"b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower/0.4.13/download\"],\n strip_prefix = \"tower-0.4.13\",\n build_file = Label(\"@crates//crates:BUILD.tower-0.4.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-0.5.3\",\n sha256 = \"ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower/0.5.3/download\"],\n strip_prefix = \"tower-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-http-0.6.11\",\n sha256 = \"4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-http/0.6.11/download\"],\n strip_prefix = \"tower-http-0.6.11\",\n build_file = Label(\"@crates//crates:BUILD.tower-http-0.6.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-layer-0.3.3\",\n sha256 = \"121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-layer/0.3.3/download\"],\n strip_prefix = \"tower-layer-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-layer-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-service-0.3.3\",\n sha256 = \"8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-service/0.3.3/download\"],\n strip_prefix = \"tower-service-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-service-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-0.1.44\",\n sha256 = \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing/0.1.44/download\"],\n strip_prefix = \"tracing-0.1.44\",\n build_file = Label(\"@crates//crates:BUILD.tracing-0.1.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-appender-0.2.5\",\n sha256 = \"050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-appender/0.2.5/download\"],\n strip_prefix = \"tracing-appender-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.tracing-appender-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-attributes-0.1.31\",\n sha256 = \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-attributes/0.1.31/download\"],\n strip_prefix = \"tracing-attributes-0.1.31\",\n build_file = Label(\"@crates//crates:BUILD.tracing-attributes-0.1.31.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-core-0.1.36\",\n sha256 = \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-core/0.1.36/download\"],\n strip_prefix = \"tracing-core-0.1.36\",\n build_file = Label(\"@crates//crates:BUILD.tracing-core-0.1.36.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-log-0.2.0\",\n sha256 = \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-log/0.2.0/download\"],\n strip_prefix = \"tracing-log-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.tracing-log-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-opentelemetry-0.29.0\",\n sha256 = \"721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-opentelemetry/0.29.0/download\"],\n strip_prefix = \"tracing-opentelemetry-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.tracing-opentelemetry-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-subscriber-0.3.23\",\n sha256 = \"cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-subscriber/0.3.23/download\"],\n strip_prefix = \"tracing-subscriber-0.3.23\",\n build_file = Label(\"@crates//crates:BUILD.tracing-subscriber-0.3.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__try-lock-0.2.5\",\n sha256 = \"e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/try-lock/0.2.5/download\"],\n strip_prefix = \"try-lock-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.try-lock-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__two-face-0.5.1\",\n sha256 = \"b285c51f8a6ade109ed4566d33ac4fb289fb5d6cf87ed70908a5eaf65e948e34\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/two-face/0.5.1/download\"],\n strip_prefix = \"two-face-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.two-face-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__type-map-0.5.1\",\n sha256 = \"cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/type-map/0.5.1/download\"],\n strip_prefix = \"type-map-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.type-map-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__type1-encoding-parser-0.1.1\",\n sha256 = \"fa10c302f5a53b7ad27fd42a3996e23d096ba39b5b8dd6d9e683a05b01bee749\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/type1-encoding-parser/0.1.1/download\"],\n strip_prefix = \"type1-encoding-parser-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.type1-encoding-parser-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__typenum-1.20.0\",\n sha256 = \"40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/typenum/1.20.0/download\"],\n strip_prefix = \"typenum-1.20.0\",\n build_file = Label(\"@crates//crates:BUILD.typenum-1.20.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ucd-trie-0.1.7\",\n sha256 = \"2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ucd-trie/0.1.7/download\"],\n strip_prefix = \"ucd-trie-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.ucd-trie-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unic-langid-0.9.6\",\n sha256 = \"a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unic-langid/0.9.6/download\"],\n strip_prefix = \"unic-langid-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.unic-langid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unic-langid-impl-0.9.6\",\n sha256 = \"dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unic-langid-impl/0.9.6/download\"],\n strip_prefix = \"unic-langid-impl-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.unic-langid-impl-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicase-2.9.0\",\n sha256 = \"dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicase/2.9.0/download\"],\n strip_prefix = \"unicase-2.9.0\",\n build_file = Label(\"@crates//crates:BUILD.unicase-2.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-linebreak-0.1.5\",\n sha256 = \"3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-linebreak/0.1.5/download\"],\n strip_prefix = \"unicode-linebreak-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.unicode-linebreak-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-normalization-0.1.25\",\n sha256 = \"5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-normalization/0.1.25/download\"],\n strip_prefix = \"unicode-normalization-0.1.25\",\n build_file = Label(\"@crates//crates:BUILD.unicode-normalization-0.1.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-segmentation-1.13.2\",\n sha256 = \"9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-segmentation/1.13.2/download\"],\n strip_prefix = \"unicode-segmentation-1.13.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-segmentation-1.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-truncate-2.0.1\",\n sha256 = \"16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-truncate/2.0.1/download\"],\n strip_prefix = \"unicode-truncate-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.unicode-truncate-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.1.13\",\n sha256 = \"0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.1.13/download\"],\n strip_prefix = \"unicode-width-0.1.13\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-xid-0.2.6\",\n sha256 = \"ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-xid/0.2.6/download\"],\n strip_prefix = \"unicode-xid-0.2.6\",\n build_file = Label(\"@crates//crates:BUILD.unicode-xid-0.2.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__universal-hash-0.5.1\",\n sha256 = \"fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/universal-hash/0.5.1/download\"],\n strip_prefix = \"universal-hash-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.universal-hash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unsafe-libyaml-0.2.11\",\n sha256 = \"673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unsafe-libyaml/0.2.11/download\"],\n strip_prefix = \"unsafe-libyaml-0.2.11\",\n build_file = Label(\"@crates//crates:BUILD.unsafe-libyaml-0.2.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__untrusted-0.9.0\",\n sha256 = \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/untrusted/0.9.0/download\"],\n strip_prefix = \"untrusted-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.untrusted-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__url-2.5.8\",\n sha256 = \"ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/url/2.5.8/download\"],\n strip_prefix = \"url-2.5.8\",\n build_file = Label(\"@crates//crates:BUILD.url-2.5.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf-8-0.7.6\",\n sha256 = \"09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf-8/0.7.6/download\"],\n strip_prefix = \"utf-8-0.7.6\",\n build_file = Label(\"@crates//crates:BUILD.utf-8-0.7.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8_iter-1.0.4\",\n sha256 = \"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8_iter/1.0.4/download\"],\n strip_prefix = \"utf8_iter-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.utf8_iter-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8parse-0.2.2\",\n sha256 = \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8parse/0.2.2/download\"],\n strip_prefix = \"utf8parse-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.utf8parse-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__uuid-1.23.1\",\n sha256 = \"ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/uuid/1.23.1/download\"],\n strip_prefix = \"uuid-1.23.1\",\n build_file = Label(\"@crates//crates:BUILD.uuid-1.23.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__valuable-0.1.1\",\n sha256 = \"ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/valuable/0.1.1/download\"],\n strip_prefix = \"valuable-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.valuable-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__vcpkg-0.2.15\",\n sha256 = \"accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vcpkg/0.2.15/download\"],\n strip_prefix = \"vcpkg-0.2.15\",\n build_file = Label(\"@crates//crates:BUILD.vcpkg-0.2.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__version_check-0.9.5\",\n sha256 = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/version_check/0.9.5/download\"],\n strip_prefix = \"version_check-0.9.5\",\n build_file = Label(\"@crates//crates:BUILD.version_check-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__vtparse-0.6.2\",\n sha256 = \"6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vtparse/0.6.2/download\"],\n strip_prefix = \"vtparse-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.vtparse-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__walkdir-2.5.0\",\n sha256 = \"29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/walkdir/2.5.0/download\"],\n strip_prefix = \"walkdir-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.walkdir-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__want-0.3.1\",\n sha256 = \"bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/want/0.3.1/download\"],\n strip_prefix = \"want-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.want-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasi-0.11.1-wasi-snapshot-preview1\",\n sha256 = \"ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download\"],\n strip_prefix = \"wasi-0.11.1+wasi-snapshot-preview1\",\n build_file = Label(\"@crates//crates:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasip2-1.0.3-wasi-0.2.9\",\n sha256 = \"20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip2/1.0.3+wasi-0.2.9/download\"],\n strip_prefix = \"wasip2-1.0.3+wasi-0.2.9\",\n build_file = Label(\"@crates//crates:BUILD.wasip2-1.0.3+wasi-0.2.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06\",\n sha256 = \"5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download\"],\n strip_prefix = \"wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06\",\n build_file = Label(\"@crates//crates:BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-0.2.121\",\n sha256 = \"49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-futures-0.4.71\",\n sha256 = \"96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-futures/0.4.71/download\"],\n strip_prefix = \"wasm-bindgen-futures-0.4.71\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-futures-0.4.71.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-0.2.121\",\n sha256 = \"8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-support-0.2.121\",\n sha256 = \"d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-macro-support-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-support-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-shared-0.2.121\",\n sha256 = \"c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-shared/0.2.121/download\"],\n strip_prefix = \"wasm-bindgen-shared-0.2.121\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-shared-0.2.121.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-encoder-0.244.0\",\n sha256 = \"990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-encoder/0.244.0/download\"],\n strip_prefix = \"wasm-encoder-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-encoder-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-metadata-0.244.0\",\n sha256 = \"bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-metadata/0.244.0/download\"],\n strip_prefix = \"wasm-metadata-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-metadata-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-streams-0.5.0\",\n sha256 = \"9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-streams/0.5.0/download\"],\n strip_prefix = \"wasm-streams-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-streams-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasmparser-0.244.0\",\n sha256 = \"47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasmparser/0.244.0/download\"],\n strip_prefix = \"wasmparser-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasmparser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__web-sys-0.3.98\",\n sha256 = \"4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/web-sys/0.3.98/download\"],\n strip_prefix = \"web-sys-0.3.98\",\n build_file = Label(\"@crates//crates:BUILD.web-sys-0.3.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__web-time-1.1.0\",\n sha256 = \"5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/web-time/1.1.0/download\"],\n strip_prefix = \"web-time-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.web-time-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__weezl-0.1.12\",\n sha256 = \"a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/weezl/0.1.12/download\"],\n strip_prefix = \"weezl-0.1.12\",\n build_file = Label(\"@crates//crates:BUILD.weezl-0.1.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-bidi-0.2.3\",\n sha256 = \"0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-bidi/0.2.3/download\"],\n strip_prefix = \"wezterm-bidi-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-bidi-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-blob-leases-0.1.1\",\n sha256 = \"692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-blob-leases/0.1.1/download\"],\n strip_prefix = \"wezterm-blob-leases-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-blob-leases-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-color-types-0.3.0\",\n sha256 = \"7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-color-types/0.3.0/download\"],\n strip_prefix = \"wezterm-color-types-0.3.0\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-color-types-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-dynamic-0.2.1\",\n sha256 = \"5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-dynamic/0.2.1/download\"],\n strip_prefix = \"wezterm-dynamic-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-dynamic-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-dynamic-derive-0.1.1\",\n sha256 = \"46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-dynamic-derive/0.1.1/download\"],\n strip_prefix = \"wezterm-dynamic-derive-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-dynamic-derive-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-input-types-0.1.0\",\n sha256 = \"7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-input-types/0.1.0/download\"],\n strip_prefix = \"wezterm-input-types-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-input-types-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-0.3.9\",\n sha256 = \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi/0.3.9/download\"],\n strip_prefix = \"winapi-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.winapi-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-i686-pc-windows-gnu-0.4.0\",\n sha256 = \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-i686-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-util-0.1.11\",\n sha256 = \"c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-util/0.1.11/download\"],\n strip_prefix = \"winapi-util-0.1.11\",\n build_file = Label(\"@crates//crates:BUILD.winapi-util-0.1.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-x86_64-pc-windows-gnu-0.4.0\",\n sha256 = \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-x86_64-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-0.62.2\",\n sha256 = \"527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows/0.62.2/download\"],\n strip_prefix = \"windows-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-collections-0.3.2\",\n sha256 = \"23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-collections/0.3.2/download\"],\n strip_prefix = \"windows-collections-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-collections-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-core-0.62.2\",\n sha256 = \"b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-core/0.62.2/download\"],\n strip_prefix = \"windows-core-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-core-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-future-0.3.2\",\n sha256 = \"e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-future/0.3.2/download\"],\n strip_prefix = \"windows-future-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-future-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-implement-0.60.2\",\n sha256 = \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-implement/0.60.2/download\"],\n strip_prefix = \"windows-implement-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-implement-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-interface-0.59.3\",\n sha256 = \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-interface/0.59.3/download\"],\n strip_prefix = \"windows-interface-0.59.3\",\n build_file = Label(\"@crates//crates:BUILD.windows-interface-0.59.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-numerics-0.3.1\",\n sha256 = \"6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-numerics/0.3.1/download\"],\n strip_prefix = \"windows-numerics-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-numerics-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-registry-0.6.1\",\n sha256 = \"02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-registry/0.6.1/download\"],\n strip_prefix = \"windows-registry-0.6.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-registry-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-result-0.4.1\",\n sha256 = \"7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-result/0.4.1/download\"],\n strip_prefix = \"windows-result-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-result-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-strings-0.5.1\",\n sha256 = \"7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-strings/0.5.1/download\"],\n strip_prefix = \"windows-strings-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-strings-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.52.0\",\n sha256 = \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.52.0/download\"],\n strip_prefix = \"windows-sys-0.52.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.52.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.59.0\",\n sha256 = \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.59.0/download\"],\n strip_prefix = \"windows-sys-0.59.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.59.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.60.2\",\n sha256 = \"f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.60.2/download\"],\n strip_prefix = \"windows-sys-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.52.6\",\n sha256 = \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.52.6/download\"],\n strip_prefix = \"windows-targets-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.53.5\",\n sha256 = \"4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.53.5/download\"],\n strip_prefix = \"windows-targets-0.53.5\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.53.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-threading-0.2.1\",\n sha256 = \"3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-threading/0.2.1/download\"],\n strip_prefix = \"windows-threading-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-threading-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.52.6\",\n sha256 = \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.53.1\",\n sha256 = \"a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.52.6\",\n sha256 = \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.53.1\",\n sha256 = \"b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.52.6\",\n sha256 = \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.53.1\",\n sha256 = \"960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnu-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.52.6\",\n sha256 = \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.53.1\",\n sha256 = \"fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.52.6\",\n sha256 = \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.52.6/download\"],\n strip_prefix = \"windows_i686_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.53.1\",\n sha256 = \"1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.53.1/download\"],\n strip_prefix = \"windows_i686_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.52.6\",\n sha256 = \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.53.1\",\n sha256 = \"9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.52.6\",\n sha256 = \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.53.1\",\n sha256 = \"0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.52.6\",\n sha256 = \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.53.1\",\n sha256 = \"d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winnow-0.6.26\",\n sha256 = \"1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winnow/0.6.26/download\"],\n strip_prefix = \"winnow-0.6.26\",\n build_file = Label(\"@crates//crates:BUILD.winnow-0.6.26.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wiremock-0.6.5\",\n sha256 = \"08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wiremock/0.6.5/download\"],\n strip_prefix = \"wiremock-0.6.5\",\n build_file = Label(\"@crates//crates:BUILD.wiremock-0.6.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-0.51.0\",\n sha256 = \"d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-0.57.1\",\n sha256 = \"1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen/0.57.1/download\"],\n strip_prefix = \"wit-bindgen-0.57.1\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-0.57.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-core-0.51.0\",\n sha256 = \"ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-core/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-core-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-core-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-rust-0.51.0\",\n sha256 = \"b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-rust-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-rust-macro-0.51.0\",\n sha256 = \"0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-macro-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-rust-macro-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-component-0.244.0\",\n sha256 = \"9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-component/0.244.0/download\"],\n strip_prefix = \"wit-component-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-component-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-parser-0.244.0\",\n sha256 = \"ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-parser/0.244.0/download\"],\n strip_prefix = \"wit-parser-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-parser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__writeable-0.6.3\",\n sha256 = \"1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/writeable/0.6.3/download\"],\n strip_prefix = \"writeable-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.writeable-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x11rb-0.13.2\",\n sha256 = \"9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x11rb/0.13.2/download\"],\n strip_prefix = \"x11rb-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.x11rb-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x11rb-protocol-0.13.2\",\n sha256 = \"ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x11rb-protocol/0.13.2/download\"],\n strip_prefix = \"x11rb-protocol-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.x11rb-protocol-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x25519-dalek-2.0.1\",\n sha256 = \"c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x25519-dalek/2.0.1/download\"],\n strip_prefix = \"x25519-dalek-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.x25519-dalek-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yaml-rust-0.4.5\",\n sha256 = \"56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yaml-rust/0.4.5/download\"],\n strip_prefix = \"yaml-rust-0.4.5\",\n build_file = Label(\"@crates//crates:BUILD.yaml-rust-0.4.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-0.8.2\",\n sha256 = \"abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke/0.8.2/download\"],\n strip_prefix = \"yoke-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.yoke-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-derive-0.8.2\",\n sha256 = \"de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke-derive/0.8.2/download\"],\n strip_prefix = \"yoke-derive-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.yoke-derive-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerocopy-0.8.48\",\n sha256 = \"eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy/0.8.48/download\"],\n strip_prefix = \"zerocopy-0.8.48\",\n build_file = Label(\"@crates//crates:BUILD.zerocopy-0.8.48.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerocopy-derive-0.8.48\",\n sha256 = \"70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy-derive/0.8.48/download\"],\n strip_prefix = \"zerocopy-derive-0.8.48\",\n build_file = Label(\"@crates//crates:BUILD.zerocopy-derive-0.8.48.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-0.1.8\",\n sha256 = \"0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom/0.1.8/download\"],\n strip_prefix = \"zerofrom-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-derive-0.1.7\",\n sha256 = \"11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom-derive/0.1.7/download\"],\n strip_prefix = \"zerofrom-derive-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-derive-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zeroize-1.8.2\",\n sha256 = \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize/1.8.2/download\"],\n strip_prefix = \"zeroize-1.8.2\",\n build_file = Label(\"@crates//crates:BUILD.zeroize-1.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zeroize_derive-1.4.3\",\n sha256 = \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize_derive/1.4.3/download\"],\n strip_prefix = \"zeroize_derive-1.4.3\",\n build_file = Label(\"@crates//crates:BUILD.zeroize_derive-1.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerotrie-0.2.4\",\n sha256 = \"0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerotrie/0.2.4/download\"],\n strip_prefix = \"zerotrie-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.zerotrie-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-0.11.6\",\n sha256 = \"90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec/0.11.6/download\"],\n strip_prefix = \"zerovec-0.11.6\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-0.11.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-derive-0.11.3\",\n sha256 = \"625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec-derive/0.11.3/download\"],\n strip_prefix = \"zerovec-derive-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-derive-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.21\",\n sha256 = \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.21/download\"],\n strip_prefix = \"zmij-1.0.21\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zune-core-0.5.1\",\n sha256 = \"cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zune-core/0.5.1/download\"],\n strip_prefix = \"zune-core-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.zune-core-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zune-jpeg-0.5.15\",\n sha256 = \"27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zune-jpeg/0.5.15/download\"],\n strip_prefix = \"zune-jpeg-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.zune-jpeg-0.5.15.bazel\"),\n )\n\n return [\n struct(repo=\"crates__age-0.10.1\", is_dev_dep = False),\n struct(repo=\"crates__agent-client-protocol-schema-0.11.7\", is_dev_dep = False),\n struct(repo=\"crates__aho-corasick-1.1.4\", is_dev_dep = False),\n struct(repo=\"crates__anyhow-1.0.102\", is_dev_dep = False),\n struct(repo=\"crates__arboard-3.6.1\", is_dev_dep = False),\n struct(repo=\"crates__async-trait-0.1.89\", is_dev_dep = False),\n struct(repo=\"crates__base64-0.22.1\", is_dev_dep = False),\n struct(repo=\"crates__chrono-0.4.44\", is_dev_dep = False),\n struct(repo=\"crates__clap-4.6.1\", is_dev_dep = False),\n struct(repo=\"crates__cron-0.15.0\", is_dev_dep = False),\n struct(repo=\"crates__crossterm-0.28.1\", is_dev_dep = False),\n struct(repo=\"crates__derive_more-2.1.1\", is_dev_dep = False),\n struct(repo=\"crates__dirs-6.0.0\", is_dev_dep = False),\n struct(repo=\"crates__eventsource-stream-0.2.3\", is_dev_dep = False),\n struct(repo=\"crates__filetime-0.2.29\", is_dev_dep = False),\n struct(repo=\"crates__futures-0.3.32\", is_dev_dep = False),\n struct(repo=\"crates__globset-0.4.18\", is_dev_dep = False),\n struct(repo=\"crates__html2text-0.12.6\", is_dev_dep = False),\n struct(repo=\"crates__ignore-0.4.25\", is_dev_dep = False),\n struct(repo=\"crates__image-0.25.10\", is_dev_dep = False),\n struct(repo=\"crates__include_dir-0.7.4\", is_dev_dep = False),\n struct(repo=\"crates__indexmap-2.14.0\", is_dev_dep = False),\n struct(repo=\"crates__libc-0.2.186\", is_dev_dep = False),\n struct(repo=\"crates__minijinja-2.19.0\", is_dev_dep = False),\n struct(repo=\"crates__once_cell-1.21.4\", is_dev_dep = False),\n struct(repo=\"crates__opener-0.7.2\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-appender-tracing-0.28.1\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-otlp-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry_sdk-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__parking_lot-0.12.5\", is_dev_dep = False),\n struct(repo=\"crates__pdf-extract-0.7.12\", is_dev_dep = False),\n struct(repo=\"crates__pin-project-lite-0.2.17\", is_dev_dep = False),\n struct(repo=\"crates__pulldown-cmark-0.12.2\", is_dev_dep = False),\n struct(repo=\"crates__rand-0.9.4\", is_dev_dep = False),\n struct(repo=\"crates__ratatui-0.30.0\", is_dev_dep = False),\n struct(repo=\"crates__regex-1.12.3\", is_dev_dep = False),\n struct(repo=\"crates__reqwest-0.13.3\", is_dev_dep = False),\n struct(repo=\"crates__rmcp-1.7.0\", is_dev_dep = False),\n struct(repo=\"crates__rpassword-7.5.2\", is_dev_dep = False),\n struct(repo=\"crates__schemars-1.2.1\", is_dev_dep = False),\n struct(repo=\"crates__secrecy-0.10.3\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.228\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.149\", is_dev_dep = False),\n struct(repo=\"crates__serde_yaml-0.9.34-deprecated\", is_dev_dep = False),\n struct(repo=\"crates__sha2-0.10.9\", is_dev_dep = False),\n struct(repo=\"crates__strum-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__syntect-5.3.0\", is_dev_dep = False),\n struct(repo=\"crates__tempfile-3.27.0\", is_dev_dep = False),\n struct(repo=\"crates__textwrap-0.16.2\", is_dev_dep = False),\n struct(repo=\"crates__thiserror-2.0.18\", is_dev_dep = False),\n struct(repo=\"crates__tiktoken-rs-0.6.0\", is_dev_dep = False),\n struct(repo=\"crates__tokio-1.52.3\", is_dev_dep = False),\n struct(repo=\"crates__tokio-stream-0.1.18\", is_dev_dep = False),\n struct(repo=\"crates__tokio-util-0.7.18\", is_dev_dep = False),\n struct(repo=\"crates__tracing-0.1.44\", is_dev_dep = False),\n struct(repo=\"crates__tracing-appender-0.2.5\", is_dev_dep = False),\n struct(repo=\"crates__tracing-opentelemetry-0.29.0\", is_dev_dep = False),\n struct(repo=\"crates__tracing-subscriber-0.3.23\", is_dev_dep = False),\n struct(repo=\"crates__two-face-0.5.1\", is_dev_dep = False),\n struct(repo=\"crates__unicode-width-0.2.2\", is_dev_dep = False),\n struct(repo=\"crates__uuid-1.23.1\", is_dev_dep = False),\n struct(repo=\"crates__walkdir-2.5.0\", is_dev_dep = False),\n struct(repo=\"crates__windows-sys-0.59.0\", is_dev_dep = False),\n struct(repo=\"crates__wiremock-0.6.5\", is_dev_dep = False),\n struct(repo=\"crates__zeroize-1.8.2\", is_dev_dep = False),\n ]\n" + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list.\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"age\": Label(\"@crates//:age-0.10.1\"),\n \"agent-client-protocol-schema\": Label(\"@crates//:agent-client-protocol-schema-0.11.7\"),\n \"aho-corasick\": Label(\"@crates//:aho-corasick-1.1.4\"),\n \"anyhow\": Label(\"@crates//:anyhow-1.0.102\"),\n \"arboard\": Label(\"@crates//:arboard-3.6.1\"),\n \"base64\": Label(\"@crates//:base64-0.22.1\"),\n \"chrono\": Label(\"@crates//:chrono-0.4.44\"),\n \"clap\": Label(\"@crates//:clap-4.6.1\"),\n \"cron\": Label(\"@crates//:cron-0.15.0\"),\n \"crossterm\": Label(\"@crates//:crossterm-0.28.1\"),\n \"derive_more\": Label(\"@crates//:derive_more-2.1.1\"),\n \"dirs\": Label(\"@crates//:dirs-6.0.0\"),\n \"eventsource-stream\": Label(\"@crates//:eventsource-stream-0.2.3\"),\n \"filetime\": Label(\"@crates//:filetime-0.2.29\"),\n \"flate2\": Label(\"@crates//:flate2-1.1.9\"),\n \"futures\": Label(\"@crates//:futures-0.3.32\"),\n \"globset\": Label(\"@crates//:globset-0.4.18\"),\n \"html2text\": Label(\"@crates//:html2text-0.12.6\"),\n \"ignore\": Label(\"@crates//:ignore-0.4.25\"),\n \"image\": Label(\"@crates//:image-0.25.10\"),\n \"include_dir\": Label(\"@crates//:include_dir-0.7.4\"),\n \"indexmap\": Label(\"@crates//:indexmap-2.14.0\"),\n \"libc\": Label(\"@crates//:libc-0.2.186\"),\n \"minijinja\": Label(\"@crates//:minijinja-2.20.0\"),\n \"notify\": Label(\"@crates//:notify-6.1.1\"),\n \"notify-debouncer-mini\": Label(\"@crates//:notify-debouncer-mini-0.4.1\"),\n \"once_cell\": Label(\"@crates//:once_cell-1.21.4\"),\n \"opener\": Label(\"@crates//:opener-0.7.2\"),\n \"opentelemetry\": Label(\"@crates//:opentelemetry-0.28.0\"),\n \"opentelemetry-appender-tracing\": Label(\"@crates//:opentelemetry-appender-tracing-0.28.1\"),\n \"opentelemetry-otlp\": Label(\"@crates//:opentelemetry-otlp-0.28.0\"),\n \"opentelemetry_sdk\": Label(\"@crates//:opentelemetry_sdk-0.28.0\"),\n \"parking_lot\": Label(\"@crates//:parking_lot-0.12.5\"),\n \"pdf-extract\": Label(\"@crates//:pdf-extract-0.7.12\"),\n \"pin-project-lite\": Label(\"@crates//:pin-project-lite-0.2.17\"),\n \"pulldown-cmark\": Label(\"@crates//:pulldown-cmark-0.12.2\"),\n \"rand\": Label(\"@crates//:rand-0.9.4\"),\n \"ratatui\": Label(\"@crates//:ratatui-0.30.0\"),\n \"regex\": Label(\"@crates//:regex-1.12.3\"),\n \"reqwest\": Label(\"@crates//:reqwest-0.13.4\"),\n \"rmcp\": Label(\"@crates//:rmcp-1.7.0\"),\n \"rpassword\": Label(\"@crates//:rpassword-7.5.3\"),\n \"rusqlite\": Label(\"@crates//:rusqlite-0.32.1\"),\n \"schemars\": Label(\"@crates//:schemars-1.2.1\"),\n \"secrecy\": Label(\"@crates//:secrecy-0.10.3\"),\n \"serde\": Label(\"@crates//:serde-1.0.228\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.150\"),\n \"serde_yaml\": Label(\"@crates//:serde_yaml-0.9.34+deprecated\"),\n \"sha2\": Label(\"@crates//:sha2-0.10.9\"),\n \"strum\": Label(\"@crates//:strum-0.28.0\"),\n \"syntect\": Label(\"@crates//:syntect-5.3.0\"),\n \"tempfile\": Label(\"@crates//:tempfile-3.27.0\"),\n \"textwrap\": Label(\"@crates//:textwrap-0.16.2\"),\n \"thiserror\": Label(\"@crates//:thiserror-2.0.18\"),\n \"tiktoken-rs\": Label(\"@crates//:tiktoken-rs-0.6.0\"),\n \"tokio\": Label(\"@crates//:tokio-1.52.3\"),\n \"tokio-stream\": Label(\"@crates//:tokio-stream-0.1.18\"),\n \"tokio-util\": Label(\"@crates//:tokio-util-0.7.18\"),\n \"tracing\": Label(\"@crates//:tracing-0.1.44\"),\n \"tracing-appender\": Label(\"@crates//:tracing-appender-0.2.5\"),\n \"tracing-opentelemetry\": Label(\"@crates//:tracing-opentelemetry-0.29.0\"),\n \"tracing-subscriber\": Label(\"@crates//:tracing-subscriber-0.3.23\"),\n \"two-face\": Label(\"@crates//:two-face-0.5.1\"),\n \"unicode-segmentation\": Label(\"@crates//:unicode-segmentation-1.13.2\"),\n \"unicode-width\": Label(\"@crates//:unicode-width-0.2.2\"),\n \"uuid\": Label(\"@crates//:uuid-1.23.2\"),\n \"walkdir\": Label(\"@crates//:walkdir-2.5.0\"),\n \"windows-sys\": Label(\"@crates//:windows-sys-0.59.0\"),\n \"wiremock\": Label(\"@crates//:wiremock-0.6.5\"),\n \"zeroize\": Label(\"@crates//:zeroize-1.8.2\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"async-trait\": Label(\"@crates//:async-trait-0.1.89\"),\n },\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-linux-android\": [],\n \"aarch64-pc-windows-gnullvm\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), target_os = \\\"windows\\\"))\": [],\n \"cfg(all(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), target_vendor = \\\"apple\\\", any(target_os = \\\"ios\\\", target_os = \\\"macos\\\", target_os = \\\"tvos\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\")))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(any(all(target_arch = \\\"aarch64\\\", target_endian = \\\"little\\\"), all(target_arch = \\\"arm\\\", target_endian = \\\"little\\\")), any(target_os = \\\"android\\\", target_os = \\\"linux\\\")))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_arch = \\\"x86_64\\\", target_arch = \\\"arm64ec\\\"), target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(all(any(target_os = \\\"android\\\", target_os = \\\"linux\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [],\n \"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(curve25519_dalek_backend = \\\"fiat\\\"), not(curve25519_dalek_backend = \\\"serial\\\"), target_arch = \\\"x86_64\\\"))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(rustix_use_libc), not(miri), target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", any(target_arch = \\\"s390x\\\", target_arch = \\\"powerpc\\\")), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc\\\"), all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(not(windows), any(rustix_use_libc, miri, not(all(target_os = \\\"linux\\\", any(target_endian = \\\"little\\\", target_arch = \\\"s390x\\\"), any(target_arch = \\\"arm\\\", all(target_arch = \\\"aarch64\\\", target_pointer_width = \\\"64\\\"), target_arch = \\\"riscv64\\\", all(rustix_use_experimental_asm, target_arch = \\\"powerpc64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"s390x\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips32r6\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64\\\"), all(rustix_use_experimental_asm, target_arch = \\\"mips64r6\\\"), target_arch = \\\"x86\\\", all(target_arch = \\\"x86_64\\\", target_pointer_width = \\\"64\\\")))))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_os = \\\"linux\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_vendor = \\\"apple\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(all(target_arch = \\\"loongarch64\\\", target_os = \\\"linux\\\"))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", not(target_os = \\\"wasi\\\")))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p2\\\"))\": [],\n \"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p3\\\"))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\"))\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\": [],\n \"cfg(all(unix, not(any(target_os = \\\"macos\\\", target_os = \\\"android\\\", target_os = \\\"emscripten\\\"))))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any())\": [],\n \"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\": [],\n \"cfg(any(target_os = \\\"freebsd\\\", target_os = \\\"openbsd\\\", target_os = \\\"netbsd\\\", target_os = \\\"dragonflybsd\\\"))\": [],\n \"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\": [],\n \"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\": [],\n \"cfg(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"linux\\\", target_os = \\\"macos\\\", target_os = \\\"freebsd\\\", target_os = \\\"netbsd\\\", target_os = \\\"openbsd\\\", target_os = \\\"android\\\", target_os = \\\"illumos\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"ios\\\", target_os = \\\"freebsd\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(unix, target_os = \\\"hermit\\\", target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(any(unix, target_os = \\\"wasi\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(curve25519_dalek_backend = \\\"fiat\\\")\": [],\n \"cfg(not(all(target_arch = \\\"arm\\\", target_os = \\\"none\\\")))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\")))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(any(target_os = \\\"windows\\\", target_vendor = \\\"apple\\\")))\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(target_arch = \\\"wasm32\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(windows))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_arch = \\\"spirv\\\")\": [],\n \"cfg(target_arch = \\\"wasm32\\\")\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_arch = \\\"x86_64\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"android\\\")\": [],\n \"cfg(target_os = \\\"haiku\\\")\": [],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"linux\\\")\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"macos\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(target_os = \\\"netbsd\\\")\": [],\n \"cfg(target_os = \\\"redox\\\")\": [],\n \"cfg(target_os = \\\"solaris\\\")\": [],\n \"cfg(target_os = \\\"vxworks\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(target_os = \\\"windows\\\")\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(target_vendor = \\\"apple\\\")\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(windows_raw_dylib)\": [],\n \"i686-pc-windows-gnu\": [],\n \"i686-pc-windows-gnullvm\": [],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-gnu\": [],\n \"x86_64-pc-windows-gnullvm\": [],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__adler2-2.0.1\",\n sha256 = \"320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adler2/2.0.1/download\"],\n strip_prefix = \"adler2-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.adler2-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__adobe-cmap-parser-0.4.1\",\n sha256 = \"ae8abfa9a4688de8fc9f42b3f013b6fffec18ed8a554f5f113577e0b9b3212a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adobe-cmap-parser/0.4.1/download\"],\n strip_prefix = \"adobe-cmap-parser-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.adobe-cmap-parser-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aead-0.5.2\",\n sha256 = \"d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aead/0.5.2/download\"],\n strip_prefix = \"aead-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.aead-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aes-0.8.4\",\n sha256 = \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes/0.8.4/download\"],\n strip_prefix = \"aes-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.aes-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aes-gcm-0.10.3\",\n sha256 = \"831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aes-gcm/0.10.3/download\"],\n strip_prefix = \"aes-gcm-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.aes-gcm-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__age-0.10.1\",\n sha256 = \"77de71da1ca673855aacea507a7aed363beb8934cf61b62364fc4b479d2e8cda\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/age/0.10.1/download\"],\n strip_prefix = \"age-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.age-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__age-core-0.10.0\",\n sha256 = \"a5f11899bc2bbddd135edbc30c36b1924fa59d0746bb45beb5933fafe3fe509b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/age-core/0.10.0/download\"],\n strip_prefix = \"age-core-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.age-core-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__agent-client-protocol-schema-0.11.7\",\n sha256 = \"2d24232129441563139fe5389de351433240d5f0ec8a6c775bf632dc6da7e549\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/agent-client-protocol-schema/0.11.7/download\"],\n strip_prefix = \"agent-client-protocol-schema-0.11.7\",\n build_file = Label(\"@crates//crates:BUILD.agent-client-protocol-schema-0.11.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ahash-0.8.12\",\n sha256 = \"5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ahash/0.8.12/download\"],\n strip_prefix = \"ahash-0.8.12\",\n build_file = Label(\"@crates//crates:BUILD.ahash-0.8.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__aho-corasick-1.1.4\",\n sha256 = \"ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/aho-corasick/1.1.4/download\"],\n strip_prefix = \"aho-corasick-1.1.4\",\n build_file = Label(\"@crates//crates:BUILD.aho-corasick-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__allocator-api2-0.2.21\",\n sha256 = \"683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/allocator-api2/0.2.21/download\"],\n strip_prefix = \"allocator-api2-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.allocator-api2-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__android_system_properties-0.1.5\",\n sha256 = \"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/android_system_properties/0.1.5/download\"],\n strip_prefix = \"android_system_properties-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.android_system_properties-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstream-1.0.0\",\n sha256 = \"824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstream/1.0.0/download\"],\n strip_prefix = \"anstream-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstream-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-1.0.14\",\n sha256 = \"940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle/1.0.14/download\"],\n strip_prefix = \"anstyle-1.0.14\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-1.0.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-parse-1.0.0\",\n sha256 = \"52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-parse/1.0.0/download\"],\n strip_prefix = \"anstyle-parse-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-parse-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-query-1.1.5\",\n sha256 = \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-query/1.1.5/download\"],\n strip_prefix = \"anstyle-query-1.1.5\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-query-1.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anstyle-wincon-3.0.11\",\n sha256 = \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anstyle-wincon/3.0.11/download\"],\n strip_prefix = \"anstyle-wincon-3.0.11\",\n build_file = Label(\"@crates//crates:BUILD.anstyle-wincon-3.0.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anyhow-1.0.102\",\n sha256 = \"7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anyhow/1.0.102/download\"],\n strip_prefix = \"anyhow-1.0.102\",\n build_file = Label(\"@crates//crates:BUILD.anyhow-1.0.102.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arboard-3.6.1\",\n sha256 = \"0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arboard/3.6.1/download\"],\n strip_prefix = \"arboard-3.6.1\",\n build_file = Label(\"@crates//crates:BUILD.arboard-3.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__arc-swap-1.9.1\",\n sha256 = \"6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/arc-swap/1.9.1/download\"],\n strip_prefix = \"arc-swap-1.9.1\",\n build_file = Label(\"@crates//crates:BUILD.arc-swap-1.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__assert-json-diff-2.0.2\",\n sha256 = \"47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/assert-json-diff/2.0.2/download\"],\n strip_prefix = \"assert-json-diff-2.0.2\",\n build_file = Label(\"@crates//crates:BUILD.assert-json-diff-2.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-stream-0.3.6\",\n sha256 = \"0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream/0.3.6/download\"],\n strip_prefix = \"async-stream-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.async-stream-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-stream-impl-0.3.6\",\n sha256 = \"c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-stream-impl/0.3.6/download\"],\n strip_prefix = \"async-stream-impl-0.3.6\",\n build_file = Label(\"@crates//crates:BUILD.async-stream-impl-0.3.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__async-trait-0.1.89\",\n sha256 = \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/async-trait/0.1.89/download\"],\n strip_prefix = \"async-trait-0.1.89\",\n build_file = Label(\"@crates//crates:BUILD.async-trait-0.1.89.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__atomic-0.6.1\",\n sha256 = \"a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic/0.6.1/download\"],\n strip_prefix = \"atomic-0.6.1\",\n build_file = Label(\"@crates//crates:BUILD.atomic-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__atomic-waker-1.1.2\",\n sha256 = \"1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/atomic-waker/1.1.2/download\"],\n strip_prefix = \"atomic-waker-1.1.2\",\n build_file = Label(\"@crates//crates:BUILD.atomic-waker-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__autocfg-1.5.1\",\n sha256 = \"f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/autocfg/1.5.1/download\"],\n strip_prefix = \"autocfg-1.5.1\",\n build_file = Label(\"@crates//crates:BUILD.autocfg-1.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__axum-0.7.9\",\n sha256 = \"edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum/0.7.9/download\"],\n strip_prefix = \"axum-0.7.9\",\n build_file = Label(\"@crates//crates:BUILD.axum-0.7.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__axum-core-0.4.5\",\n sha256 = \"09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/axum-core/0.4.5/download\"],\n strip_prefix = \"axum-core-0.4.5\",\n build_file = Label(\"@crates//crates:BUILD.axum-core-0.4.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64-0.21.7\",\n sha256 = \"9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64/0.21.7/download\"],\n strip_prefix = \"base64-0.21.7\",\n build_file = Label(\"@crates//crates:BUILD.base64-0.21.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64-0.22.1\",\n sha256 = \"72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64/0.22.1/download\"],\n strip_prefix = \"base64-0.22.1\",\n build_file = Label(\"@crates//crates:BUILD.base64-0.22.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__base64ct-1.8.3\",\n sha256 = \"2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/base64ct/1.8.3/download\"],\n strip_prefix = \"base64ct-1.8.3\",\n build_file = Label(\"@crates//crates:BUILD.base64ct-1.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__basic-toml-0.1.10\",\n sha256 = \"ba62675e8242a4c4e806d12f11d136e626e6c8361d6b829310732241652a178a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/basic-toml/0.1.10/download\"],\n strip_prefix = \"basic-toml-0.1.10\",\n build_file = Label(\"@crates//crates:BUILD.basic-toml-0.1.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bcrypt-pbkdf-0.10.0\",\n sha256 = \"6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bcrypt-pbkdf/0.10.0/download\"],\n strip_prefix = \"bcrypt-pbkdf-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.bcrypt-pbkdf-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bech32-0.9.1\",\n sha256 = \"d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bech32/0.9.1/download\"],\n strip_prefix = \"bech32-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.bech32-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bincode-1.3.3\",\n sha256 = \"b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bincode/1.3.3/download\"],\n strip_prefix = \"bincode-1.3.3\",\n build_file = Label(\"@crates//crates:BUILD.bincode-1.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-set-0.5.3\",\n sha256 = \"0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-set/0.5.3/download\"],\n strip_prefix = \"bit-set-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.bit-set-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-set-0.8.0\",\n sha256 = \"08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-set/0.8.0/download\"],\n strip_prefix = \"bit-set-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.bit-set-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-vec-0.6.3\",\n sha256 = \"349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-vec/0.6.3/download\"],\n strip_prefix = \"bit-vec-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.bit-vec-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bit-vec-0.8.0\",\n sha256 = \"5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bit-vec/0.8.0/download\"],\n strip_prefix = \"bit-vec-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.bit-vec-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-1.3.2\",\n sha256 = \"bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/1.3.2/download\"],\n strip_prefix = \"bitflags-1.3.2\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-1.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bitflags-2.11.1\",\n sha256 = \"c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bitflags/2.11.1/download\"],\n strip_prefix = \"bitflags-2.11.1\",\n build_file = Label(\"@crates//crates:BUILD.bitflags-2.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__block-buffer-0.10.4\",\n sha256 = \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-buffer/0.10.4/download\"],\n strip_prefix = \"block-buffer-0.10.4\",\n build_file = Label(\"@crates//crates:BUILD.block-buffer-0.10.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__block-padding-0.3.3\",\n sha256 = \"a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/block-padding/0.3.3/download\"],\n strip_prefix = \"block-padding-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.block-padding-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__blowfish-0.9.1\",\n sha256 = \"e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/blowfish/0.9.1/download\"],\n strip_prefix = \"blowfish-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.blowfish-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bstr-1.12.1\",\n sha256 = \"63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bstr/1.12.1/download\"],\n strip_prefix = \"bstr-1.12.1\",\n build_file = Label(\"@crates//crates:BUILD.bstr-1.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bumpalo-3.20.3\",\n sha256 = \"72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bumpalo/3.20.3/download\"],\n strip_prefix = \"bumpalo-3.20.3\",\n build_file = Label(\"@crates//crates:BUILD.bumpalo-3.20.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytemuck-1.25.0\",\n sha256 = \"c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytemuck/1.25.0/download\"],\n strip_prefix = \"bytemuck-1.25.0\",\n build_file = Label(\"@crates//crates:BUILD.bytemuck-1.25.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__byteorder-1.5.0\",\n sha256 = \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder/1.5.0/download\"],\n strip_prefix = \"byteorder-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.byteorder-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__byteorder-lite-0.1.0\",\n sha256 = \"8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/byteorder-lite/0.1.0/download\"],\n strip_prefix = \"byteorder-lite-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.byteorder-lite-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytes-1.11.1\",\n sha256 = \"1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytes/1.11.1/download\"],\n strip_prefix = \"bytes-1.11.1\",\n build_file = Label(\"@crates//crates:BUILD.bytes-1.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__castaway-0.2.4\",\n sha256 = \"dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/castaway/0.2.4/download\"],\n strip_prefix = \"castaway-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.castaway-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cbc-0.1.2\",\n sha256 = \"26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cbc/0.1.2/download\"],\n strip_prefix = \"cbc-0.1.2\",\n build_file = Label(\"@crates//crates:BUILD.cbc-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cc-1.2.63\",\n sha256 = \"556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cc/1.2.63/download\"],\n strip_prefix = \"cc-1.2.63\",\n build_file = Label(\"@crates//crates:BUILD.cc-1.2.63.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.4\",\n sha256 = \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.4/download\"],\n strip_prefix = \"cfg-if-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg_aliases-0.2.1\",\n sha256 = \"613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg_aliases/0.2.1/download\"],\n strip_prefix = \"cfg_aliases-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.cfg_aliases-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chacha20-0.9.1\",\n sha256 = \"c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chacha20/0.9.1/download\"],\n strip_prefix = \"chacha20-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.chacha20-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chacha20poly1305-0.10.1\",\n sha256 = \"10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chacha20poly1305/0.10.1/download\"],\n strip_prefix = \"chacha20poly1305-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.chacha20poly1305-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__chrono-0.4.44\",\n sha256 = \"c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/chrono/0.4.44/download\"],\n strip_prefix = \"chrono-0.4.44\",\n build_file = Label(\"@crates//crates:BUILD.chrono-0.4.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cipher-0.4.4\",\n sha256 = \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cipher/0.4.4/download\"],\n strip_prefix = \"cipher-0.4.4\",\n build_file = Label(\"@crates//crates:BUILD.cipher-0.4.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap-4.6.1\",\n sha256 = \"1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap/4.6.1/download\"],\n strip_prefix = \"clap-4.6.1\",\n build_file = Label(\"@crates//crates:BUILD.clap-4.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_builder-4.6.0\",\n sha256 = \"714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_builder/4.6.0/download\"],\n strip_prefix = \"clap_builder-4.6.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_builder-4.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_derive-4.6.1\",\n sha256 = \"f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_derive/4.6.1/download\"],\n strip_prefix = \"clap_derive-4.6.1\",\n build_file = Label(\"@crates//crates:BUILD.clap_derive-4.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clap_lex-1.1.0\",\n sha256 = \"c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clap_lex/1.1.0/download\"],\n strip_prefix = \"clap_lex-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.clap_lex-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__clipboard-win-5.4.1\",\n sha256 = \"bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/clipboard-win/5.4.1/download\"],\n strip_prefix = \"clipboard-win-5.4.1\",\n build_file = Label(\"@crates//crates:BUILD.clipboard-win-5.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colorchoice-1.0.5\",\n sha256 = \"1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colorchoice/1.0.5/download\"],\n strip_prefix = \"colorchoice-1.0.5\",\n build_file = Label(\"@crates//crates:BUILD.colorchoice-1.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__compact_str-0.9.1\",\n sha256 = \"9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/compact_str/0.9.1/download\"],\n strip_prefix = \"compact_str-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.compact_str-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__const-oid-0.9.6\",\n sha256 = \"c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/const-oid/0.9.6/download\"],\n strip_prefix = \"const-oid-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.const-oid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__convert_case-0.10.0\",\n sha256 = \"633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/convert_case/0.10.0/download\"],\n strip_prefix = \"convert_case-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.convert_case-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cookie-factory-0.3.3\",\n sha256 = \"9885fa71e26b8ab7855e2ec7cae6e9b380edff76cd052e07c683a0319d51b3a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cookie-factory/0.3.3/download\"],\n strip_prefix = \"cookie-factory-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.cookie-factory-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-0.10.1\",\n sha256 = \"b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation/0.10.1/download\"],\n strip_prefix = \"core-foundation-0.10.1\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-0.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-0.9.4\",\n sha256 = \"91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation/0.9.4/download\"],\n strip_prefix = \"core-foundation-0.9.4\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-0.9.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__core-foundation-sys-0.8.7\",\n sha256 = \"773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/core-foundation-sys/0.8.7/download\"],\n strip_prefix = \"core-foundation-sys-0.8.7\",\n build_file = Label(\"@crates//crates:BUILD.core-foundation-sys-0.8.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cpufeatures-0.2.17\",\n sha256 = \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cpufeatures/0.2.17/download\"],\n strip_prefix = \"cpufeatures-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.cpufeatures-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crc32fast-1.5.0\",\n sha256 = \"9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crc32fast/1.5.0/download\"],\n strip_prefix = \"crc32fast-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.crc32fast-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cron-0.15.0\",\n sha256 = \"5877d3fbf742507b66bc2a1945106bd30dd8504019d596901ddd012a4dd01740\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cron/0.15.0/download\"],\n strip_prefix = \"cron-0.15.0\",\n build_file = Label(\"@crates//crates:BUILD.cron-0.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-channel-0.5.15\",\n sha256 = \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-channel/0.5.15/download\"],\n strip_prefix = \"crossbeam-channel-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-channel-0.5.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-deque-0.8.6\",\n sha256 = \"9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-deque/0.8.6/download\"],\n strip_prefix = \"crossbeam-deque-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-deque-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-epoch-0.9.18\",\n sha256 = \"5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-epoch/0.9.18/download\"],\n strip_prefix = \"crossbeam-epoch-0.9.18\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-epoch-0.9.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.21\",\n sha256 = \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.21/download\"],\n strip_prefix = \"crossbeam-utils-0.8.21\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm-0.28.1\",\n sha256 = \"829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm/0.28.1/download\"],\n strip_prefix = \"crossterm-0.28.1\",\n build_file = Label(\"@crates//crates:BUILD.crossterm-0.28.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm-0.29.0\",\n sha256 = \"d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm/0.29.0/download\"],\n strip_prefix = \"crossterm-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.crossterm-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossterm_winapi-0.9.1\",\n sha256 = \"acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossterm_winapi/0.9.1/download\"],\n strip_prefix = \"crossterm_winapi-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.crossterm_winapi-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crunchy-0.2.4\",\n sha256 = \"460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crunchy/0.2.4/download\"],\n strip_prefix = \"crunchy-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.crunchy-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crypto-common-0.1.7\",\n sha256 = \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crypto-common/0.1.7/download\"],\n strip_prefix = \"crypto-common-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.crypto-common-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__csscolorparser-0.6.2\",\n sha256 = \"eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/csscolorparser/0.6.2/download\"],\n strip_prefix = \"csscolorparser-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.csscolorparser-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ctr-0.9.2\",\n sha256 = \"0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ctr/0.9.2/download\"],\n strip_prefix = \"ctr-0.9.2\",\n build_file = Label(\"@crates//crates:BUILD.ctr-0.9.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__curve25519-dalek-4.1.3\",\n sha256 = \"97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/curve25519-dalek/4.1.3/download\"],\n strip_prefix = \"curve25519-dalek-4.1.3\",\n build_file = Label(\"@crates//crates:BUILD.curve25519-dalek-4.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__curve25519-dalek-derive-0.1.1\",\n sha256 = \"f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/curve25519-dalek-derive/0.1.1/download\"],\n strip_prefix = \"curve25519-dalek-derive-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.curve25519-dalek-derive-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling-0.23.0\",\n sha256 = \"25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling/0.23.0/download\"],\n strip_prefix = \"darling-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling_core-0.23.0\",\n sha256 = \"9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling_core/0.23.0/download\"],\n strip_prefix = \"darling_core-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling_core-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__darling_macro-0.23.0\",\n sha256 = \"ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/darling_macro/0.23.0/download\"],\n strip_prefix = \"darling_macro-0.23.0\",\n build_file = Label(\"@crates//crates:BUILD.darling_macro-0.23.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dashmap-5.5.3\",\n sha256 = \"978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dashmap/5.5.3/download\"],\n strip_prefix = \"dashmap-5.5.3\",\n build_file = Label(\"@crates//crates:BUILD.dashmap-5.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dbus-0.9.11\",\n sha256 = \"b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dbus/0.9.11/download\"],\n strip_prefix = \"dbus-0.9.11\",\n build_file = Label(\"@crates//crates:BUILD.dbus-0.9.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deadpool-0.12.3\",\n sha256 = \"0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deadpool/0.12.3/download\"],\n strip_prefix = \"deadpool-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.deadpool-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deadpool-runtime-0.1.4\",\n sha256 = \"092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deadpool-runtime/0.1.4/download\"],\n strip_prefix = \"deadpool-runtime-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.deadpool-runtime-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deltae-0.3.2\",\n sha256 = \"5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deltae/0.3.2/download\"],\n strip_prefix = \"deltae-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.deltae-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__der-0.7.10\",\n sha256 = \"e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/der/0.7.10/download\"],\n strip_prefix = \"der-0.7.10\",\n build_file = Label(\"@crates//crates:BUILD.der-0.7.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deranged-0.5.8\",\n sha256 = \"7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deranged/0.5.8/download\"],\n strip_prefix = \"deranged-0.5.8\",\n build_file = Label(\"@crates//crates:BUILD.deranged-0.5.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__derive_more-2.1.1\",\n sha256 = \"d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/derive_more/2.1.1/download\"],\n strip_prefix = \"derive_more-2.1.1\",\n build_file = Label(\"@crates//crates:BUILD.derive_more-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__derive_more-impl-2.1.1\",\n sha256 = \"799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/derive_more-impl/2.1.1/download\"],\n strip_prefix = \"derive_more-impl-2.1.1\",\n build_file = Label(\"@crates//crates:BUILD.derive_more-impl-2.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__digest-0.10.7\",\n sha256 = \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/digest/0.10.7/download\"],\n strip_prefix = \"digest-0.10.7\",\n build_file = Label(\"@crates//crates:BUILD.digest-0.10.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dirs-6.0.0\",\n sha256 = \"c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dirs/6.0.0/download\"],\n strip_prefix = \"dirs-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.dirs-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dirs-sys-0.5.0\",\n sha256 = \"e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dirs-sys/0.5.0/download\"],\n strip_prefix = \"dirs-sys-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.dirs-sys-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dispatch2-0.3.1\",\n sha256 = \"1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dispatch2/0.3.1/download\"],\n strip_prefix = \"dispatch2-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.dispatch2-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__displaydoc-0.2.6\",\n sha256 = \"1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/displaydoc/0.2.6/download\"],\n strip_prefix = \"displaydoc-0.2.6\",\n build_file = Label(\"@crates//crates:BUILD.displaydoc-0.2.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__document-features-0.2.12\",\n sha256 = \"d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/document-features/0.2.12/download\"],\n strip_prefix = \"document-features-0.2.12\",\n build_file = Label(\"@crates//crates:BUILD.document-features-0.2.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__dyn-clone-1.0.20\",\n sha256 = \"d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/dyn-clone/1.0.20/download\"],\n strip_prefix = \"dyn-clone-1.0.20\",\n build_file = Label(\"@crates//crates:BUILD.dyn-clone-1.0.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.16.0\",\n sha256 = \"91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.16.0/download\"],\n strip_prefix = \"either-1.16.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.16.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__encoding_rs-0.8.35\",\n sha256 = \"75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/encoding_rs/0.8.35/download\"],\n strip_prefix = \"encoding_rs-0.8.35\",\n build_file = Label(\"@crates//crates:BUILD.encoding_rs-0.8.35.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__equivalent-1.0.2\",\n sha256 = \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/equivalent/1.0.2/download\"],\n strip_prefix = \"equivalent-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.equivalent-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__errno-0.3.14\",\n sha256 = \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/errno/0.3.14/download\"],\n strip_prefix = \"errno-0.3.14\",\n build_file = Label(\"@crates//crates:BUILD.errno-0.3.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__error-code-3.3.2\",\n sha256 = \"dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/error-code/3.3.2/download\"],\n strip_prefix = \"error-code-3.3.2\",\n build_file = Label(\"@crates//crates:BUILD.error-code-3.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__euclid-0.20.14\",\n sha256 = \"2bb7ef65b3777a325d1eeefefab5b6d4959da54747e33bd6258e789640f307ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/euclid/0.20.14/download\"],\n strip_prefix = \"euclid-0.20.14\",\n build_file = Label(\"@crates//crates:BUILD.euclid-0.20.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__euclid-0.22.14\",\n sha256 = \"f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/euclid/0.22.14/download\"],\n strip_prefix = \"euclid-0.22.14\",\n build_file = Label(\"@crates//crates:BUILD.euclid-0.22.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__eventsource-stream-0.2.3\",\n sha256 = \"74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/eventsource-stream/0.2.3/download\"],\n strip_prefix = \"eventsource-stream-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.eventsource-stream-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fallible-iterator-0.3.0\",\n sha256 = \"2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fallible-iterator/0.3.0/download\"],\n strip_prefix = \"fallible-iterator-0.3.0\",\n build_file = Label(\"@crates//crates:BUILD.fallible-iterator-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fallible-streaming-iterator-0.1.9\",\n sha256 = \"7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fallible-streaming-iterator/0.1.9/download\"],\n strip_prefix = \"fallible-streaming-iterator-0.1.9\",\n build_file = Label(\"@crates//crates:BUILD.fallible-streaming-iterator-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.11.0\",\n sha256 = \"b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.11.0/download\"],\n strip_prefix = \"fancy-regex-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.13.0\",\n sha256 = \"531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.13.0/download\"],\n strip_prefix = \"fancy-regex-0.13.0\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.13.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fancy-regex-0.16.2\",\n sha256 = \"998b056554fbe42e03ae0e152895cd1a7e1002aec800fdc6635d20270260c46f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fancy-regex/0.16.2/download\"],\n strip_prefix = \"fancy-regex-0.16.2\",\n build_file = Label(\"@crates//crates:BUILD.fancy-regex-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fastrand-2.4.1\",\n sha256 = \"9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fastrand/2.4.1/download\"],\n strip_prefix = \"fastrand-2.4.1\",\n build_file = Label(\"@crates//crates:BUILD.fastrand-2.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fax-0.2.7\",\n sha256 = \"caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fax/0.2.7/download\"],\n strip_prefix = \"fax-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.fax-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fdeflate-0.3.7\",\n sha256 = \"1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fdeflate/0.3.7/download\"],\n strip_prefix = \"fdeflate-0.3.7\",\n build_file = Label(\"@crates//crates:BUILD.fdeflate-0.3.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fiat-crypto-0.2.9\",\n sha256 = \"28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fiat-crypto/0.2.9/download\"],\n strip_prefix = \"fiat-crypto-0.2.9\",\n build_file = Label(\"@crates//crates:BUILD.fiat-crypto-0.2.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__filedescriptor-0.8.3\",\n sha256 = \"e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/filedescriptor/0.8.3/download\"],\n strip_prefix = \"filedescriptor-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.filedescriptor-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__filetime-0.2.29\",\n sha256 = \"5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/filetime/0.2.29/download\"],\n strip_prefix = \"filetime-0.2.29\",\n build_file = Label(\"@crates//crates:BUILD.filetime-0.2.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__find-crate-0.6.3\",\n sha256 = \"59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/find-crate/0.6.3/download\"],\n strip_prefix = \"find-crate-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.find-crate-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__find-msvc-tools-0.1.9\",\n sha256 = \"5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/find-msvc-tools/0.1.9/download\"],\n strip_prefix = \"find-msvc-tools-0.1.9\",\n build_file = Label(\"@crates//crates:BUILD.find-msvc-tools-0.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__finl_unicode-1.4.0\",\n sha256 = \"9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/finl_unicode/1.4.0/download\"],\n strip_prefix = \"finl_unicode-1.4.0\",\n build_file = Label(\"@crates//crates:BUILD.finl_unicode-1.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fixedbitset-0.4.2\",\n sha256 = \"0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fixedbitset/0.4.2/download\"],\n strip_prefix = \"fixedbitset-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.fixedbitset-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__flate2-1.1.9\",\n sha256 = \"843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/flate2/1.1.9/download\"],\n strip_prefix = \"flate2-1.1.9\",\n build_file = Label(\"@crates//crates:BUILD.flate2-1.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-0.16.1\",\n sha256 = \"bb74634707bebd0ce645a981148e8fb8c7bccd4c33c652aeffd28bf2f96d555a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent/0.16.1/download\"],\n strip_prefix = \"fluent-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-bundle-0.15.3\",\n sha256 = \"7fe0a21ee80050c678013f82edf4b705fe2f26f1f9877593d13198612503f493\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-bundle/0.15.3/download\"],\n strip_prefix = \"fluent-bundle-0.15.3\",\n build_file = Label(\"@crates//crates:BUILD.fluent-bundle-0.15.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-langneg-0.13.1\",\n sha256 = \"7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-langneg/0.13.1/download\"],\n strip_prefix = \"fluent-langneg-0.13.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-langneg-0.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fluent-syntax-0.11.1\",\n sha256 = \"2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fluent-syntax/0.11.1/download\"],\n strip_prefix = \"fluent-syntax-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.fluent-syntax-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fnv-1.0.7\",\n sha256 = \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fnv/1.0.7/download\"],\n strip_prefix = \"fnv-1.0.7\",\n build_file = Label(\"@crates//crates:BUILD.fnv-1.0.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.1.5\",\n sha256 = \"d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.1.5/download\"],\n strip_prefix = \"foldhash-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foldhash-0.2.0\",\n sha256 = \"77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foldhash/0.2.0/download\"],\n strip_prefix = \"foldhash-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.foldhash-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foreign-types-0.3.2\",\n sha256 = \"f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foreign-types/0.3.2/download\"],\n strip_prefix = \"foreign-types-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.foreign-types-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__foreign-types-shared-0.1.1\",\n sha256 = \"00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/foreign-types-shared/0.1.1/download\"],\n strip_prefix = \"foreign-types-shared-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.foreign-types-shared-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__form_urlencoded-1.2.2\",\n sha256 = \"cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/form_urlencoded/1.2.2/download\"],\n strip_prefix = \"form_urlencoded-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.form_urlencoded-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__fsevent-sys-4.1.0\",\n sha256 = \"76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/fsevent-sys/4.1.0/download\"],\n strip_prefix = \"fsevent-sys-4.1.0\",\n build_file = Label(\"@crates//crates:BUILD.fsevent-sys-4.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futf-0.1.5\",\n sha256 = \"df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futf/0.1.5/download\"],\n strip_prefix = \"futf-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.futf-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-0.3.32\",\n sha256 = \"8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures/0.3.32/download\"],\n strip_prefix = \"futures-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-channel-0.3.32\",\n sha256 = \"07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-channel/0.3.32/download\"],\n strip_prefix = \"futures-channel-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-channel-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-core-0.3.32\",\n sha256 = \"7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-core/0.3.32/download\"],\n strip_prefix = \"futures-core-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-core-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-executor-0.3.32\",\n sha256 = \"baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-executor/0.3.32/download\"],\n strip_prefix = \"futures-executor-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-executor-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-io-0.3.32\",\n sha256 = \"cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-io/0.3.32/download\"],\n strip_prefix = \"futures-io-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-io-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-macro-0.3.32\",\n sha256 = \"e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-macro/0.3.32/download\"],\n strip_prefix = \"futures-macro-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-macro-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-sink-0.3.32\",\n sha256 = \"c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-sink/0.3.32/download\"],\n strip_prefix = \"futures-sink-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-sink-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-task-0.3.32\",\n sha256 = \"037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-task/0.3.32/download\"],\n strip_prefix = \"futures-task-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-task-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__futures-util-0.3.32\",\n sha256 = \"389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/futures-util/0.3.32/download\"],\n strip_prefix = \"futures-util-0.3.32\",\n build_file = Label(\"@crates//crates:BUILD.futures-util-0.3.32.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__generic-array-0.14.7\",\n sha256 = \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/generic-array/0.14.7/download\"],\n strip_prefix = \"generic-array-0.14.7\",\n build_file = Label(\"@crates//crates:BUILD.generic-array-0.14.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__gethostname-1.1.0\",\n sha256 = \"1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gethostname/1.1.0/download\"],\n strip_prefix = \"gethostname-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.gethostname-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.2.17\",\n sha256 = \"ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.2.17/download\"],\n strip_prefix = \"getrandom-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.3.4\",\n sha256 = \"899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.3.4/download\"],\n strip_prefix = \"getrandom-0.3.4\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.3.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__getrandom-0.4.2\",\n sha256 = \"0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/getrandom/0.4.2/download\"],\n strip_prefix = \"getrandom-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.getrandom-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ghash-0.5.1\",\n sha256 = \"f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ghash/0.5.1/download\"],\n strip_prefix = \"ghash-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.ghash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__glob-0.3.3\",\n sha256 = \"0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/glob/0.3.3/download\"],\n strip_prefix = \"glob-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.glob-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__globset-0.4.18\",\n sha256 = \"52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/globset/0.4.18/download\"],\n strip_prefix = \"globset-0.4.18\",\n build_file = Label(\"@crates//crates:BUILD.globset-0.4.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__h2-0.4.14\",\n sha256 = \"171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/h2/0.4.14/download\"],\n strip_prefix = \"h2-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.h2-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__half-2.7.1\",\n sha256 = \"6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/half/2.7.1/download\"],\n strip_prefix = \"half-2.7.1\",\n build_file = Label(\"@crates//crates:BUILD.half-2.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.12.3\",\n sha256 = \"8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.12.3/download\"],\n strip_prefix = \"hashbrown-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.14.5\",\n sha256 = \"e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.14.5/download\"],\n strip_prefix = \"hashbrown-0.14.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.14.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.15.5\",\n sha256 = \"9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.15.5/download\"],\n strip_prefix = \"hashbrown-0.15.5\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.15.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.16.1\",\n sha256 = \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.16.1/download\"],\n strip_prefix = \"hashbrown-0.16.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.16.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashbrown-0.17.1\",\n sha256 = \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashbrown/0.17.1/download\"],\n strip_prefix = \"hashbrown-0.17.1\",\n build_file = Label(\"@crates//crates:BUILD.hashbrown-0.17.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hashlink-0.9.1\",\n sha256 = \"6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hashlink/0.9.1/download\"],\n strip_prefix = \"hashlink-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.hashlink-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__heck-0.5.0\",\n sha256 = \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/heck/0.5.0/download\"],\n strip_prefix = \"heck-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.heck-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hermit-abi-0.5.2\",\n sha256 = \"fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hermit-abi/0.5.2/download\"],\n strip_prefix = \"hermit-abi-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.hermit-abi-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hex-0.4.3\",\n sha256 = \"7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hex/0.4.3/download\"],\n strip_prefix = \"hex-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.hex-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hkdf-0.12.4\",\n sha256 = \"7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hkdf/0.12.4/download\"],\n strip_prefix = \"hkdf-0.12.4\",\n build_file = Label(\"@crates//crates:BUILD.hkdf-0.12.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hmac-0.12.1\",\n sha256 = \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hmac/0.12.1/download\"],\n strip_prefix = \"hmac-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.hmac-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__html2text-0.12.6\",\n sha256 = \"042a9677c258ac2952dd026bb0cd21972f00f644a5a38f5a215cb22cdaf6834e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/html2text/0.12.6/download\"],\n strip_prefix = \"html2text-0.12.6\",\n build_file = Label(\"@crates//crates:BUILD.html2text-0.12.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__html5ever-0.27.0\",\n sha256 = \"c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/html5ever/0.27.0/download\"],\n strip_prefix = \"html5ever-0.27.0\",\n build_file = Label(\"@crates//crates:BUILD.html5ever-0.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-1.4.1\",\n sha256 = \"8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http/1.4.1/download\"],\n strip_prefix = \"http-1.4.1\",\n build_file = Label(\"@crates//crates:BUILD.http-1.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-body-1.0.1\",\n sha256 = \"1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body/1.0.1/download\"],\n strip_prefix = \"http-body-1.0.1\",\n build_file = Label(\"@crates//crates:BUILD.http-body-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__http-body-util-0.1.3\",\n sha256 = \"b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/http-body-util/0.1.3/download\"],\n strip_prefix = \"http-body-util-0.1.3\",\n build_file = Label(\"@crates//crates:BUILD.http-body-util-0.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__httparse-1.10.1\",\n sha256 = \"6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httparse/1.10.1/download\"],\n strip_prefix = \"httparse-1.10.1\",\n build_file = Label(\"@crates//crates:BUILD.httparse-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__httpdate-1.0.3\",\n sha256 = \"df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/httpdate/1.0.3/download\"],\n strip_prefix = \"httpdate-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.httpdate-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-1.10.1\",\n sha256 = \"55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper/1.10.1/download\"],\n strip_prefix = \"hyper-1.10.1\",\n build_file = Label(\"@crates//crates:BUILD.hyper-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-rustls-0.27.9\",\n sha256 = \"33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-rustls/0.27.9/download\"],\n strip_prefix = \"hyper-rustls-0.27.9\",\n build_file = Label(\"@crates//crates:BUILD.hyper-rustls-0.27.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-timeout-0.5.2\",\n sha256 = \"2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-timeout/0.5.2/download\"],\n strip_prefix = \"hyper-timeout-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.hyper-timeout-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-tls-0.6.0\",\n sha256 = \"70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-tls/0.6.0/download\"],\n strip_prefix = \"hyper-tls-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.hyper-tls-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hyper-util-0.1.20\",\n sha256 = \"96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hyper-util/0.1.20/download\"],\n strip_prefix = \"hyper-util-0.1.20\",\n build_file = Label(\"@crates//crates:BUILD.hyper-util-0.1.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-config-0.4.8\",\n sha256 = \"3e06b90c8a0d252e203c94344b21e35a30f3a3a85dc7db5af8f8df9f3e0c63ef\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-config/0.4.8/download\"],\n strip_prefix = \"i18n-config-0.4.8\",\n build_file = Label(\"@crates//crates:BUILD.i18n-config-0.4.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-0.14.1\",\n sha256 = \"94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed/0.14.1/download\"],\n strip_prefix = \"i18n-embed-0.14.1\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-0.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-fl-0.7.0\",\n sha256 = \"9fc1f8715195dffc4caddcf1cf3128da15fe5d8a137606ea8856c9300047d5a2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed-fl/0.7.0/download\"],\n strip_prefix = \"i18n-embed-fl-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-fl-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__i18n-embed-impl-0.8.4\",\n sha256 = \"0f2cc0e0523d1fe6fc2c6f66e5038624ea8091b3e7748b5e8e0c84b1698db6c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/i18n-embed-impl/0.8.4/download\"],\n strip_prefix = \"i18n-embed-impl-0.8.4\",\n build_file = Label(\"@crates//crates:BUILD.i18n-embed-impl-0.8.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__iana-time-zone-0.1.65\",\n sha256 = \"e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iana-time-zone/0.1.65/download\"],\n strip_prefix = \"iana-time-zone-0.1.65\",\n build_file = Label(\"@crates//crates:BUILD.iana-time-zone-0.1.65.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__iana-time-zone-haiku-0.1.2\",\n sha256 = \"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download\"],\n strip_prefix = \"iana-time-zone-haiku-0.1.2\",\n build_file = Label(\"@crates//crates:BUILD.iana-time-zone-haiku-0.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_collections-2.2.0\",\n sha256 = \"2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_collections/2.2.0/download\"],\n strip_prefix = \"icu_collections-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_collections-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_locale_core-2.2.0\",\n sha256 = \"92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_locale_core/2.2.0/download\"],\n strip_prefix = \"icu_locale_core-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_locale_core-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_normalizer-2.2.0\",\n sha256 = \"c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_normalizer/2.2.0/download\"],\n strip_prefix = \"icu_normalizer-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_normalizer-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_normalizer_data-2.2.0\",\n sha256 = \"da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_normalizer_data/2.2.0/download\"],\n strip_prefix = \"icu_normalizer_data-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_normalizer_data-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_properties-2.2.0\",\n sha256 = \"bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_properties/2.2.0/download\"],\n strip_prefix = \"icu_properties-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_properties-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_properties_data-2.2.0\",\n sha256 = \"8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_properties_data/2.2.0/download\"],\n strip_prefix = \"icu_properties_data-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_properties_data-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__icu_provider-2.2.0\",\n sha256 = \"139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/icu_provider/2.2.0/download\"],\n strip_prefix = \"icu_provider-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.icu_provider-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__id-arena-2.3.0\",\n sha256 = \"3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/id-arena/2.3.0/download\"],\n strip_prefix = \"id-arena-2.3.0\",\n build_file = Label(\"@crates//crates:BUILD.id-arena-2.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ident_case-1.0.1\",\n sha256 = \"b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ident_case/1.0.1/download\"],\n strip_prefix = \"ident_case-1.0.1\",\n build_file = Label(\"@crates//crates:BUILD.ident_case-1.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__idna-1.1.0\",\n sha256 = \"3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/idna/1.1.0/download\"],\n strip_prefix = \"idna-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.idna-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__idna_adapter-1.2.2\",\n sha256 = \"cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/idna_adapter/1.2.2/download\"],\n strip_prefix = \"idna_adapter-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.idna_adapter-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ignore-0.4.25\",\n sha256 = \"d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ignore/0.4.25/download\"],\n strip_prefix = \"ignore-0.4.25\",\n build_file = Label(\"@crates//crates:BUILD.ignore-0.4.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__image-0.25.10\",\n sha256 = \"85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/image/0.25.10/download\"],\n strip_prefix = \"image-0.25.10\",\n build_file = Label(\"@crates//crates:BUILD.image-0.25.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__include_dir-0.7.4\",\n sha256 = \"923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/include_dir/0.7.4/download\"],\n strip_prefix = \"include_dir-0.7.4\",\n build_file = Label(\"@crates//crates:BUILD.include_dir-0.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__include_dir_macros-0.7.4\",\n sha256 = \"7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/include_dir_macros/0.7.4/download\"],\n strip_prefix = \"include_dir_macros-0.7.4\",\n build_file = Label(\"@crates//crates:BUILD.include_dir_macros-0.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-1.9.3\",\n sha256 = \"bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/1.9.3/download\"],\n strip_prefix = \"indexmap-1.9.3\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-1.9.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indexmap-2.14.0\",\n sha256 = \"d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indexmap/2.14.0/download\"],\n strip_prefix = \"indexmap-2.14.0\",\n build_file = Label(\"@crates//crates:BUILD.indexmap-2.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__indoc-2.0.7\",\n sha256 = \"79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/indoc/2.0.7/download\"],\n strip_prefix = \"indoc-2.0.7\",\n build_file = Label(\"@crates//crates:BUILD.indoc-2.0.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__inotify-0.9.6\",\n sha256 = \"f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inotify/0.9.6/download\"],\n strip_prefix = \"inotify-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.inotify-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__inotify-sys-0.1.5\",\n sha256 = \"e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inotify-sys/0.1.5/download\"],\n strip_prefix = \"inotify-sys-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.inotify-sys-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__inout-0.1.4\",\n sha256 = \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/inout/0.1.4/download\"],\n strip_prefix = \"inout-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.inout-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__instability-0.3.12\",\n sha256 = \"5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/instability/0.3.12/download\"],\n strip_prefix = \"instability-0.3.12\",\n build_file = Label(\"@crates//crates:BUILD.instability-0.3.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__intl-memoizer-0.5.3\",\n sha256 = \"310da2e345f5eb861e7a07ee182262e94975051db9e4223e909ba90f392f163f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/intl-memoizer/0.5.3/download\"],\n strip_prefix = \"intl-memoizer-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.intl-memoizer-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__intl_pluralrules-7.0.2\",\n sha256 = \"078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/intl_pluralrules/7.0.2/download\"],\n strip_prefix = \"intl_pluralrules-7.0.2\",\n build_file = Label(\"@crates//crates:BUILD.intl_pluralrules-7.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__io_tee-0.1.1\",\n sha256 = \"4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/io_tee/0.1.1/download\"],\n strip_prefix = \"io_tee-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.io_tee-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ipnet-2.12.0\",\n sha256 = \"d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ipnet/2.12.0/download\"],\n strip_prefix = \"ipnet-2.12.0\",\n build_file = Label(\"@crates//crates:BUILD.ipnet-2.12.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__is_terminal_polyfill-1.70.2\",\n sha256 = \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/is_terminal_polyfill/1.70.2/download\"],\n strip_prefix = \"is_terminal_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.is_terminal_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.18\",\n sha256 = \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.18/download\"],\n strip_prefix = \"itoa-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__js-sys-0.3.99\",\n sha256 = \"142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/js-sys/0.3.99/download\"],\n strip_prefix = \"js-sys-0.3.99\",\n build_file = Label(\"@crates//crates:BUILD.js-sys-0.3.99.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__kasuari-0.4.12\",\n sha256 = \"bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/kasuari/0.4.12/download\"],\n strip_prefix = \"kasuari-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.kasuari-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__kqueue-1.1.1\",\n sha256 = \"eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/kqueue/1.1.1/download\"],\n strip_prefix = \"kqueue-1.1.1\",\n build_file = Label(\"@crates//crates:BUILD.kqueue-1.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__kqueue-sys-1.1.2\",\n sha256 = \"07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/kqueue-sys/1.1.2/download\"],\n strip_prefix = \"kqueue-sys-1.1.2\",\n build_file = Label(\"@crates//crates:BUILD.kqueue-sys-1.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lab-0.11.0\",\n sha256 = \"bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lab/0.11.0/download\"],\n strip_prefix = \"lab-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.lab-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lazy_static-1.5.0\",\n sha256 = \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazy_static/1.5.0/download\"],\n strip_prefix = \"lazy_static-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.lazy_static-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__leb128fmt-0.1.0\",\n sha256 = \"09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/leb128fmt/0.1.0/download\"],\n strip_prefix = \"leb128fmt-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.leb128fmt-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.186\",\n sha256 = \"68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.186/download\"],\n strip_prefix = \"libc-0.2.186\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.186.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libdbus-sys-0.2.7\",\n sha256 = \"328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libdbus-sys/0.2.7/download\"],\n strip_prefix = \"libdbus-sys-0.2.7\",\n build_file = Label(\"@crates//crates:BUILD.libdbus-sys-0.2.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libm-0.2.16\",\n sha256 = \"b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libm/0.2.16/download\"],\n strip_prefix = \"libm-0.2.16\",\n build_file = Label(\"@crates//crates:BUILD.libm-0.2.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libredox-0.1.17\",\n sha256 = \"f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libredox/0.1.17/download\"],\n strip_prefix = \"libredox-0.1.17\",\n build_file = Label(\"@crates//crates:BUILD.libredox-0.1.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libsqlite3-sys-0.30.1\",\n sha256 = \"2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libsqlite3-sys/0.30.1/download\"],\n strip_prefix = \"libsqlite3-sys-0.30.1\",\n build_file = Label(\"@crates//crates:BUILD.libsqlite3-sys-0.30.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__line-clipping-0.3.7\",\n sha256 = \"3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/line-clipping/0.3.7/download\"],\n strip_prefix = \"line-clipping-0.3.7\",\n build_file = Label(\"@crates//crates:BUILD.line-clipping-0.3.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linked-hash-map-0.5.6\",\n sha256 = \"0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linked-hash-map/0.5.6/download\"],\n strip_prefix = \"linked-hash-map-0.5.6\",\n build_file = Label(\"@crates//crates:BUILD.linked-hash-map-0.5.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.12.1\",\n sha256 = \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.12.1/download\"],\n strip_prefix = \"linux-raw-sys-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__linux-raw-sys-0.4.15\",\n sha256 = \"d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/linux-raw-sys/0.4.15/download\"],\n strip_prefix = \"linux-raw-sys-0.4.15\",\n build_file = Label(\"@crates//crates:BUILD.linux-raw-sys-0.4.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litemap-0.8.2\",\n sha256 = \"92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litemap/0.8.2/download\"],\n strip_prefix = \"litemap-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.litemap-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__litrs-1.0.0\",\n sha256 = \"11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/litrs/1.0.0/download\"],\n strip_prefix = \"litrs-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.litrs-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lock_api-0.4.14\",\n sha256 = \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lock_api/0.4.14/download\"],\n strip_prefix = \"lock_api-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.lock_api-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__log-0.4.30\",\n sha256 = \"616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.30/download\"],\n strip_prefix = \"log-0.4.30\",\n build_file = Label(\"@crates//crates:BUILD.log-0.4.30.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lopdf-0.34.0\",\n sha256 = \"c5c8ecfc6c72051981c0459f75ccc585e7ff67c70829560cda8e647882a9abff\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lopdf/0.34.0/download\"],\n strip_prefix = \"lopdf-0.34.0\",\n build_file = Label(\"@crates//crates:BUILD.lopdf-0.34.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lru-0.16.4\",\n sha256 = \"7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lru/0.16.4/download\"],\n strip_prefix = \"lru-0.16.4\",\n build_file = Label(\"@crates//crates:BUILD.lru-0.16.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mac-0.1.1\",\n sha256 = \"c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mac/0.1.1/download\"],\n strip_prefix = \"mac-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.mac-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mac_address-1.1.8\",\n sha256 = \"c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mac_address/1.1.8/download\"],\n strip_prefix = \"mac_address-1.1.8\",\n build_file = Label(\"@crates//crates:BUILD.mac_address-1.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__markup5ever-0.12.1\",\n sha256 = \"16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/markup5ever/0.12.1/download\"],\n strip_prefix = \"markup5ever-0.12.1\",\n build_file = Label(\"@crates//crates:BUILD.markup5ever-0.12.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__matchers-0.2.0\",\n sha256 = \"d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/matchers/0.2.0/download\"],\n strip_prefix = \"matchers-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.matchers-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__matchit-0.7.3\",\n sha256 = \"0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/matchit/0.7.3/download\"],\n strip_prefix = \"matchit-0.7.3\",\n build_file = Label(\"@crates//crates:BUILD.matchit-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__md-5-0.10.6\",\n sha256 = \"d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/md-5/0.10.6/download\"],\n strip_prefix = \"md-5-0.10.6\",\n build_file = Label(\"@crates//crates:BUILD.md-5-0.10.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.8.1\",\n sha256 = \"6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.8.1/download\"],\n strip_prefix = \"memchr-2.8.1\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memmem-0.1.1\",\n sha256 = \"a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memmem/0.1.1/download\"],\n strip_prefix = \"memmem-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.memmem-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memo-map-0.3.3\",\n sha256 = \"38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memo-map/0.3.3/download\"],\n strip_prefix = \"memo-map-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.memo-map-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memoffset-0.9.1\",\n sha256 = \"488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memoffset/0.9.1/download\"],\n strip_prefix = \"memoffset-0.9.1\",\n build_file = Label(\"@crates//crates:BUILD.memoffset-0.9.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mime-0.3.17\",\n sha256 = \"6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mime/0.3.17/download\"],\n strip_prefix = \"mime-0.3.17\",\n build_file = Label(\"@crates//crates:BUILD.mime-0.3.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__minijinja-2.20.0\",\n sha256 = \"2929e494b2280e1e18959bb2e121da03347ae896896fdfaceaab43c88a02803f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/minijinja/2.20.0/download\"],\n strip_prefix = \"minijinja-2.20.0\",\n build_file = Label(\"@crates//crates:BUILD.minijinja-2.20.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__minimal-lexical-0.2.1\",\n sha256 = \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/minimal-lexical/0.2.1/download\"],\n strip_prefix = \"minimal-lexical-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.minimal-lexical-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__miniz_oxide-0.8.9\",\n sha256 = \"1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/miniz_oxide/0.8.9/download\"],\n strip_prefix = \"miniz_oxide-0.8.9\",\n build_file = Label(\"@crates//crates:BUILD.miniz_oxide-0.8.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mio-0.8.11\",\n sha256 = \"a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/0.8.11/download\"],\n strip_prefix = \"mio-0.8.11\",\n build_file = Label(\"@crates//crates:BUILD.mio-0.8.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mio-1.2.1\",\n sha256 = \"02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/1.2.1/download\"],\n strip_prefix = \"mio-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.mio-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__moxcms-0.8.1\",\n sha256 = \"bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/moxcms/0.8.1/download\"],\n strip_prefix = \"moxcms-0.8.1\",\n build_file = Label(\"@crates//crates:BUILD.moxcms-0.8.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__native-tls-0.2.18\",\n sha256 = \"465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/native-tls/0.2.18/download\"],\n strip_prefix = \"native-tls-0.2.18\",\n build_file = Label(\"@crates//crates:BUILD.native-tls-0.2.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__new_debug_unreachable-1.0.6\",\n sha256 = \"650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/new_debug_unreachable/1.0.6/download\"],\n strip_prefix = \"new_debug_unreachable-1.0.6\",\n build_file = Label(\"@crates//crates:BUILD.new_debug_unreachable-1.0.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nix-0.29.0\",\n sha256 = \"71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.29.0/download\"],\n strip_prefix = \"nix-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.nix-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nix-0.31.3\",\n sha256 = \"cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nix/0.31.3/download\"],\n strip_prefix = \"nix-0.31.3\",\n build_file = Label(\"@crates//crates:BUILD.nix-0.31.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nom-7.1.3\",\n sha256 = \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nom/7.1.3/download\"],\n strip_prefix = \"nom-7.1.3\",\n build_file = Label(\"@crates//crates:BUILD.nom-7.1.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__normpath-1.5.1\",\n sha256 = \"b9985ef7269fa99f3b12437bb698381da2428743ab90f20393f399fa14cab21a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/normpath/1.5.1/download\"],\n strip_prefix = \"normpath-1.5.1\",\n build_file = Label(\"@crates//crates:BUILD.normpath-1.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__notify-6.1.1\",\n sha256 = \"6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/notify/6.1.1/download\"],\n strip_prefix = \"notify-6.1.1\",\n build_file = Label(\"@crates//crates:BUILD.notify-6.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__notify-debouncer-mini-0.4.1\",\n sha256 = \"5d40b221972a1fc5ef4d858a2f671fb34c75983eb385463dff3780eeff6a9d43\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/notify-debouncer-mini/0.4.1/download\"],\n strip_prefix = \"notify-debouncer-mini-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.notify-debouncer-mini-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__nu-ansi-term-0.50.3\",\n sha256 = \"7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/nu-ansi-term/0.50.3/download\"],\n strip_prefix = \"nu-ansi-term-0.50.3\",\n build_file = Label(\"@crates//crates:BUILD.nu-ansi-term-0.50.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-bigint-dig-0.8.6\",\n sha256 = \"e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-bigint-dig/0.8.6/download\"],\n strip_prefix = \"num-bigint-dig-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.num-bigint-dig-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-conv-0.2.2\",\n sha256 = \"521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-conv/0.2.2/download\"],\n strip_prefix = \"num-conv-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.num-conv-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-derive-0.4.2\",\n sha256 = \"ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-derive/0.4.2/download\"],\n strip_prefix = \"num-derive-0.4.2\",\n build_file = Label(\"@crates//crates:BUILD.num-derive-0.4.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-integer-0.1.46\",\n sha256 = \"7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-integer/0.1.46/download\"],\n strip_prefix = \"num-integer-0.1.46\",\n build_file = Label(\"@crates//crates:BUILD.num-integer-0.1.46.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-iter-0.1.45\",\n sha256 = \"1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-iter/0.1.45/download\"],\n strip_prefix = \"num-iter-0.1.45\",\n build_file = Label(\"@crates//crates:BUILD.num-iter-0.1.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-traits-0.2.19\",\n sha256 = \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-traits/0.2.19/download\"],\n strip_prefix = \"num-traits-0.2.19\",\n build_file = Label(\"@crates//crates:BUILD.num-traits-0.2.19.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_cpus-1.17.0\",\n sha256 = \"91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_cpus/1.17.0/download\"],\n strip_prefix = \"num_cpus-1.17.0\",\n build_file = Label(\"@crates//crates:BUILD.num_cpus-1.17.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_threads-0.1.7\",\n sha256 = \"5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_threads/0.1.7/download\"],\n strip_prefix = \"num_threads-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.num_threads-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__oauth2-5.0.0\",\n sha256 = \"51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/oauth2/5.0.0/download\"],\n strip_prefix = \"oauth2-5.0.0\",\n build_file = Label(\"@crates//crates:BUILD.oauth2-5.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-0.6.4\",\n sha256 = \"3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2/0.6.4/download\"],\n strip_prefix = \"objc2-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.objc2-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-app-kit-0.3.2\",\n sha256 = \"d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-app-kit/0.3.2/download\"],\n strip_prefix = \"objc2-app-kit-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-app-kit-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-core-foundation-0.3.2\",\n sha256 = \"2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-core-foundation/0.3.2/download\"],\n strip_prefix = \"objc2-core-foundation-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-core-foundation-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-core-graphics-0.3.2\",\n sha256 = \"e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-core-graphics/0.3.2/download\"],\n strip_prefix = \"objc2-core-graphics-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-core-graphics-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-encode-4.1.0\",\n sha256 = \"ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-encode/4.1.0/download\"],\n strip_prefix = \"objc2-encode-4.1.0\",\n build_file = Label(\"@crates//crates:BUILD.objc2-encode-4.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-foundation-0.3.2\",\n sha256 = \"e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-foundation/0.3.2/download\"],\n strip_prefix = \"objc2-foundation-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-foundation-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__objc2-io-surface-0.3.2\",\n sha256 = \"180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/objc2-io-surface/0.3.2/download\"],\n strip_prefix = \"objc2-io-surface-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.objc2-io-surface-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell-1.21.4\",\n sha256 = \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell/1.21.4/download\"],\n strip_prefix = \"once_cell-1.21.4\",\n build_file = Label(\"@crates//crates:BUILD.once_cell-1.21.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__once_cell_polyfill-1.70.2\",\n sha256 = \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/once_cell_polyfill/1.70.2/download\"],\n strip_prefix = \"once_cell_polyfill-1.70.2\",\n build_file = Label(\"@crates//crates:BUILD.once_cell_polyfill-1.70.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__onig-6.5.3\",\n sha256 = \"0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/onig/6.5.3/download\"],\n strip_prefix = \"onig-6.5.3\",\n build_file = Label(\"@crates//crates:BUILD.onig-6.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__onig_sys-69.9.3\",\n sha256 = \"1e68317604e77e53b85896388e1a803c1d21b74c899ec9e5e1112db90735edd7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/onig_sys/69.9.3/download\"],\n strip_prefix = \"onig_sys-69.9.3\",\n build_file = Label(\"@crates//crates:BUILD.onig_sys-69.9.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opaque-debug-0.3.1\",\n sha256 = \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opaque-debug/0.3.1/download\"],\n strip_prefix = \"opaque-debug-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.opaque-debug-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opener-0.7.2\",\n sha256 = \"d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opener/0.7.2/download\"],\n strip_prefix = \"opener-0.7.2\",\n build_file = Label(\"@crates//crates:BUILD.opener-0.7.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-0.10.80\",\n sha256 = \"a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl/0.10.80/download\"],\n strip_prefix = \"openssl-0.10.80\",\n build_file = Label(\"@crates//crates:BUILD.openssl-0.10.80.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-macros-0.1.1\",\n sha256 = \"a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-macros/0.1.1/download\"],\n strip_prefix = \"openssl-macros-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.openssl-macros-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-probe-0.2.1\",\n sha256 = \"7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-probe/0.2.1/download\"],\n strip_prefix = \"openssl-probe-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.openssl-probe-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__openssl-sys-0.9.116\",\n sha256 = \"f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/openssl-sys/0.9.116/download\"],\n strip_prefix = \"openssl-sys-0.9.116\",\n build_file = Label(\"@crates//crates:BUILD.openssl-sys-0.9.116.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-0.28.0\",\n sha256 = \"236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry/0.28.0/download\"],\n strip_prefix = \"opentelemetry-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-appender-tracing-0.28.1\",\n sha256 = \"c513c7af3bec30113f3d4620134ff923295f1e9c580fda2b8abe0831f925ddc0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-appender-tracing/0.28.1/download\"],\n strip_prefix = \"opentelemetry-appender-tracing-0.28.1\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-appender-tracing-0.28.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-http-0.28.0\",\n sha256 = \"a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-http/0.28.0/download\"],\n strip_prefix = \"opentelemetry-http-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-http-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-otlp-0.28.0\",\n sha256 = \"5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-otlp/0.28.0/download\"],\n strip_prefix = \"opentelemetry-otlp-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-otlp-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry-proto-0.28.0\",\n sha256 = \"56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry-proto/0.28.0/download\"],\n strip_prefix = \"opentelemetry-proto-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry-proto-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__opentelemetry_sdk-0.28.0\",\n sha256 = \"84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/opentelemetry_sdk/0.28.0/download\"],\n strip_prefix = \"opentelemetry_sdk-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.opentelemetry_sdk-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__option-ext-0.2.0\",\n sha256 = \"04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/option-ext/0.2.0/download\"],\n strip_prefix = \"option-ext-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.option-ext-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ordered-float-4.6.0\",\n sha256 = \"7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ordered-float/4.6.0/download\"],\n strip_prefix = \"ordered-float-4.6.0\",\n build_file = Label(\"@crates//crates:BUILD.ordered-float-4.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot-0.12.5\",\n sha256 = \"93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot/0.12.5/download\"],\n strip_prefix = \"parking_lot-0.12.5\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot-0.12.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__parking_lot_core-0.9.12\",\n sha256 = \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/parking_lot_core/0.9.12/download\"],\n strip_prefix = \"parking_lot_core-0.9.12\",\n build_file = Label(\"@crates//crates:BUILD.parking_lot_core-0.9.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pastey-0.2.3\",\n sha256 = \"2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pastey/0.2.3/download\"],\n strip_prefix = \"pastey-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.pastey-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pbkdf2-0.12.2\",\n sha256 = \"f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pbkdf2/0.12.2/download\"],\n strip_prefix = \"pbkdf2-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.pbkdf2-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pdf-extract-0.7.12\",\n sha256 = \"cbb3a5387b94b9053c1e69d8abfd4dd6dae7afda65a5c5279bc1f42ab39df575\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pdf-extract/0.7.12/download\"],\n strip_prefix = \"pdf-extract-0.7.12\",\n build_file = Label(\"@crates//crates:BUILD.pdf-extract-0.7.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__percent-encoding-2.3.2\",\n sha256 = \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/percent-encoding/2.3.2/download\"],\n strip_prefix = \"percent-encoding-2.3.2\",\n build_file = Label(\"@crates//crates:BUILD.percent-encoding-2.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest-2.8.6\",\n sha256 = \"e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest/2.8.6/download\"],\n strip_prefix = \"pest-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_derive-2.8.6\",\n sha256 = \"11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_derive/2.8.6/download\"],\n strip_prefix = \"pest_derive-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_derive-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_generator-2.8.6\",\n sha256 = \"8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_generator/2.8.6/download\"],\n strip_prefix = \"pest_generator-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_generator-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pest_meta-2.8.6\",\n sha256 = \"89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pest_meta/2.8.6/download\"],\n strip_prefix = \"pest_meta-2.8.6\",\n build_file = Label(\"@crates//crates:BUILD.pest_meta-2.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf-0.11.3\",\n sha256 = \"1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf/0.11.3/download\"],\n strip_prefix = \"phf-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_codegen-0.11.3\",\n sha256 = \"aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_codegen/0.11.3/download\"],\n strip_prefix = \"phf_codegen-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_codegen-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_generator-0.11.3\",\n sha256 = \"3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_generator/0.11.3/download\"],\n strip_prefix = \"phf_generator-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_generator-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_macros-0.11.3\",\n sha256 = \"f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_macros/0.11.3/download\"],\n strip_prefix = \"phf_macros-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_macros-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__phf_shared-0.11.3\",\n sha256 = \"67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/phf_shared/0.11.3/download\"],\n strip_prefix = \"phf_shared-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.phf_shared-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-1.1.13\",\n sha256 = \"2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project/1.1.13/download\"],\n strip_prefix = \"pin-project-1.1.13\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-1.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-internal-1.1.13\",\n sha256 = \"c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-internal/1.1.13/download\"],\n strip_prefix = \"pin-project-internal-1.1.13\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-internal-1.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.17\",\n sha256 = \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.17/download\"],\n strip_prefix = \"pin-project-lite-0.2.17\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.17.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkcs1-0.7.5\",\n sha256 = \"c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkcs1/0.7.5/download\"],\n strip_prefix = \"pkcs1-0.7.5\",\n build_file = Label(\"@crates//crates:BUILD.pkcs1-0.7.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkcs8-0.10.2\",\n sha256 = \"f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkcs8/0.10.2/download\"],\n strip_prefix = \"pkcs8-0.10.2\",\n build_file = Label(\"@crates//crates:BUILD.pkcs8-0.10.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pkg-config-0.3.33\",\n sha256 = \"19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pkg-config/0.3.33/download\"],\n strip_prefix = \"pkg-config-0.3.33\",\n build_file = Label(\"@crates//crates:BUILD.pkg-config-0.3.33.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__plist-1.9.0\",\n sha256 = \"092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/plist/1.9.0/download\"],\n strip_prefix = \"plist-1.9.0\",\n build_file = Label(\"@crates//crates:BUILD.plist-1.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__png-0.18.1\",\n sha256 = \"60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/png/0.18.1/download\"],\n strip_prefix = \"png-0.18.1\",\n build_file = Label(\"@crates//crates:BUILD.png-0.18.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__poly1305-0.8.0\",\n sha256 = \"8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/poly1305/0.8.0/download\"],\n strip_prefix = \"poly1305-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.poly1305-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__polyval-0.6.2\",\n sha256 = \"9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/polyval/0.6.2/download\"],\n strip_prefix = \"polyval-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.polyval-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pom-1.1.0\",\n sha256 = \"60f6ce597ecdcc9a098e7fddacb1065093a3d66446fa16c675e7e71d1b5c28e6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pom/1.1.0/download\"],\n strip_prefix = \"pom-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.pom-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__portable-atomic-1.13.1\",\n sha256 = \"c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/portable-atomic/1.13.1/download\"],\n strip_prefix = \"portable-atomic-1.13.1\",\n build_file = Label(\"@crates//crates:BUILD.portable-atomic-1.13.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__postscript-0.14.1\",\n sha256 = \"78451badbdaebaf17f053fd9152b3ffb33b516104eacb45e7864aaa9c712f306\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/postscript/0.14.1/download\"],\n strip_prefix = \"postscript-0.14.1\",\n build_file = Label(\"@crates//crates:BUILD.postscript-0.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__potential_utf-0.1.5\",\n sha256 = \"0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/potential_utf/0.1.5/download\"],\n strip_prefix = \"potential_utf-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.potential_utf-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__powerfmt-0.2.0\",\n sha256 = \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/powerfmt/0.2.0/download\"],\n strip_prefix = \"powerfmt-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.powerfmt-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ppv-lite86-0.2.21\",\n sha256 = \"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ppv-lite86/0.2.21/download\"],\n strip_prefix = \"ppv-lite86-0.2.21\",\n build_file = Label(\"@crates//crates:BUILD.ppv-lite86-0.2.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__precomputed-hash-0.1.1\",\n sha256 = \"925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/precomputed-hash/0.1.1/download\"],\n strip_prefix = \"precomputed-hash-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.precomputed-hash-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prettyplease-0.2.37\",\n sha256 = \"479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prettyplease/0.2.37/download\"],\n strip_prefix = \"prettyplease-0.2.37\",\n build_file = Label(\"@crates//crates:BUILD.prettyplease-0.2.37.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro-error-1.0.4\",\n sha256 = \"da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro-error/1.0.4/download\"],\n strip_prefix = \"proc-macro-error-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro-error-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro-error-attr-1.0.4\",\n sha256 = \"a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro-error-attr/1.0.4/download\"],\n strip_prefix = \"proc-macro-error-attr-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro-error-attr-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.106\",\n sha256 = \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.106/download\"],\n strip_prefix = \"proc-macro2-1.0.106\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.106.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__process-wrap-9.1.0\",\n sha256 = \"2e842efad9119158434d193c6682e2ebee4b44d6ad801d7b349623b3f57cdf55\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/process-wrap/9.1.0/download\"],\n strip_prefix = \"process-wrap-9.1.0\",\n build_file = Label(\"@crates//crates:BUILD.process-wrap-9.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-0.13.5\",\n sha256 = \"2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.13.5/download\"],\n strip_prefix = \"prost-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-derive-0.13.5\",\n sha256 = \"8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.13.5/download\"],\n strip_prefix = \"prost-derive-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-derive-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pulldown-cmark-0.12.2\",\n sha256 = \"f86ba2052aebccc42cbbb3ed234b8b13ce76f75c3551a303cb2bcffcff12bb14\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pulldown-cmark/0.12.2/download\"],\n strip_prefix = \"pulldown-cmark-0.12.2\",\n build_file = Label(\"@crates//crates:BUILD.pulldown-cmark-0.12.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pxfm-0.1.29\",\n sha256 = \"e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pxfm/0.1.29/download\"],\n strip_prefix = \"pxfm-0.1.29\",\n build_file = Label(\"@crates//crates:BUILD.pxfm-0.1.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quick-error-2.0.1\",\n sha256 = \"a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quick-error/2.0.1/download\"],\n strip_prefix = \"quick-error-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.quick-error-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quick-xml-0.39.4\",\n sha256 = \"cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quick-xml/0.39.4/download\"],\n strip_prefix = \"quick-xml-0.39.4\",\n build_file = Label(\"@crates//crates:BUILD.quick-xml-0.39.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.45\",\n sha256 = \"41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.45/download\"],\n strip_prefix = \"quote-1.0.45\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.45.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-5.3.0\",\n sha256 = \"69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/5.3.0/download\"],\n strip_prefix = \"r-efi-5.3.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-5.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__r-efi-6.0.0\",\n sha256 = \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/r-efi/6.0.0/download\"],\n strip_prefix = \"r-efi-6.0.0\",\n build_file = Label(\"@crates//crates:BUILD.r-efi-6.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand-0.8.6\",\n sha256 = \"5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand/0.8.6/download\"],\n strip_prefix = \"rand-0.8.6\",\n build_file = Label(\"@crates//crates:BUILD.rand-0.8.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand-0.9.4\",\n sha256 = \"44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand/0.9.4/download\"],\n strip_prefix = \"rand-0.9.4\",\n build_file = Label(\"@crates//crates:BUILD.rand-0.9.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_chacha-0.3.1\",\n sha256 = \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_chacha/0.3.1/download\"],\n strip_prefix = \"rand_chacha-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.rand_chacha-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_chacha-0.9.0\",\n sha256 = \"d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_chacha/0.9.0/download\"],\n strip_prefix = \"rand_chacha-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.rand_chacha-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_core-0.6.4\",\n sha256 = \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.6.4/download\"],\n strip_prefix = \"rand_core-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.rand_core-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rand_core-0.9.5\",\n sha256 = \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rand_core/0.9.5/download\"],\n strip_prefix = \"rand_core-0.9.5\",\n build_file = Label(\"@crates//crates:BUILD.rand_core-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rangemap-1.7.1\",\n sha256 = \"973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rangemap/1.7.1/download\"],\n strip_prefix = \"rangemap-1.7.1\",\n build_file = Label(\"@crates//crates:BUILD.rangemap-1.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-0.30.0\",\n sha256 = \"d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui/0.30.0/download\"],\n strip_prefix = \"ratatui-0.30.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-0.30.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-core-0.1.0\",\n sha256 = \"5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-core/0.1.0/download\"],\n strip_prefix = \"ratatui-core-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-core-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-crossterm-0.1.0\",\n sha256 = \"577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-crossterm/0.1.0/download\"],\n strip_prefix = \"ratatui-crossterm-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-crossterm-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-macros-0.7.0\",\n sha256 = \"a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-macros/0.7.0/download\"],\n strip_prefix = \"ratatui-macros-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-macros-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-termwiz-0.1.0\",\n sha256 = \"0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-termwiz/0.1.0/download\"],\n strip_prefix = \"ratatui-termwiz-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-termwiz-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ratatui-widgets-0.3.0\",\n sha256 = \"d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ratatui-widgets/0.3.0/download\"],\n strip_prefix = \"ratatui-widgets-0.3.0\",\n build_file = Label(\"@crates//crates:BUILD.ratatui-widgets-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_syscall-0.5.18\",\n sha256 = \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_syscall/0.5.18/download\"],\n strip_prefix = \"redox_syscall-0.5.18\",\n build_file = Label(\"@crates//crates:BUILD.redox_syscall-0.5.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__redox_users-0.5.2\",\n sha256 = \"a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/redox_users/0.5.2/download\"],\n strip_prefix = \"redox_users-0.5.2\",\n build_file = Label(\"@crates//crates:BUILD.redox_users-0.5.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-1.0.25\",\n sha256 = \"f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast/1.0.25/download\"],\n strip_prefix = \"ref-cast-1.0.25\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-1.0.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ref-cast-impl-1.0.25\",\n sha256 = \"b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ref-cast-impl/1.0.25/download\"],\n strip_prefix = \"ref-cast-impl-1.0.25\",\n build_file = Label(\"@crates//crates:BUILD.ref-cast-impl-1.0.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-1.12.3\",\n sha256 = \"e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex/1.12.3/download\"],\n strip_prefix = \"regex-1.12.3\",\n build_file = Label(\"@crates//crates:BUILD.regex-1.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-automata-0.4.14\",\n sha256 = \"6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-automata/0.4.14/download\"],\n strip_prefix = \"regex-automata-0.4.14\",\n build_file = Label(\"@crates//crates:BUILD.regex-automata-0.4.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__regex-syntax-0.8.10\",\n sha256 = \"dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/regex-syntax/0.8.10/download\"],\n strip_prefix = \"regex-syntax-0.8.10\",\n build_file = Label(\"@crates//crates:BUILD.regex-syntax-0.8.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__reqwest-0.12.28\",\n sha256 = \"eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/reqwest/0.12.28/download\"],\n strip_prefix = \"reqwest-0.12.28\",\n build_file = Label(\"@crates//crates:BUILD.reqwest-0.12.28.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__reqwest-0.13.4\",\n sha256 = \"219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/reqwest/0.13.4/download\"],\n strip_prefix = \"reqwest-0.13.4\",\n build_file = Label(\"@crates//crates:BUILD.reqwest-0.13.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ring-0.17.14\",\n sha256 = \"a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ring/0.17.14/download\"],\n strip_prefix = \"ring-0.17.14\",\n build_file = Label(\"@crates//crates:BUILD.ring-0.17.14.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rmcp-1.7.0\",\n sha256 = \"0810a9f717d9828f475fe1f629f4c305c8464b7f496c3a854b58d29e65f4058e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rmcp/1.7.0/download\"],\n strip_prefix = \"rmcp-1.7.0\",\n build_file = Label(\"@crates//crates:BUILD.rmcp-1.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rmcp-macros-1.7.0\",\n sha256 = \"6aefac48c364756e97f04c0401ba3231e8607882c7c1d92da0437dc16307904d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rmcp-macros/1.7.0/download\"],\n strip_prefix = \"rmcp-macros-1.7.0\",\n build_file = Label(\"@crates//crates:BUILD.rmcp-macros-1.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rpassword-7.5.3\",\n sha256 = \"835a57a69104632d64deb0df2e09a69945cd7a6eab4070fc9b1d7e50cf6c3edc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rpassword/7.5.3/download\"],\n strip_prefix = \"rpassword-7.5.3\",\n build_file = Label(\"@crates//crates:BUILD.rpassword-7.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rsa-0.9.10\",\n sha256 = \"b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rsa/0.9.10/download\"],\n strip_prefix = \"rsa-0.9.10\",\n build_file = Label(\"@crates//crates:BUILD.rsa-0.9.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rtoolbox-0.0.5\",\n sha256 = \"50a0e551c1e27e1731aba276dbeaeac73f53c7cd34d1bda485d02bd1e0f36844\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rtoolbox/0.0.5/download\"],\n strip_prefix = \"rtoolbox-0.0.5\",\n build_file = Label(\"@crates//crates:BUILD.rtoolbox-0.0.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rusqlite-0.32.1\",\n sha256 = \"7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rusqlite/0.32.1/download\"],\n strip_prefix = \"rusqlite-0.32.1\",\n build_file = Label(\"@crates//crates:BUILD.rusqlite-0.32.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-8.11.0\",\n sha256 = \"04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed/8.11.0/download\"],\n strip_prefix = \"rust-embed-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-impl-8.11.0\",\n sha256 = \"da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed-impl/8.11.0/download\"],\n strip_prefix = \"rust-embed-impl-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-impl-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rust-embed-utils-8.11.0\",\n sha256 = \"5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rust-embed-utils/8.11.0/download\"],\n strip_prefix = \"rust-embed-utils-8.11.0\",\n build_file = Label(\"@crates//crates:BUILD.rust-embed-utils-8.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-1.1.0\",\n sha256 = \"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/1.1.0/download\"],\n strip_prefix = \"rustc-hash-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-hash-2.1.2\",\n sha256 = \"94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-hash/2.1.2/download\"],\n strip_prefix = \"rustc-hash-2.1.2\",\n build_file = Label(\"@crates//crates:BUILD.rustc-hash-2.1.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc_version-0.4.1\",\n sha256 = \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc_version/0.4.1/download\"],\n strip_prefix = \"rustc_version-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.rustc_version-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-0.38.44\",\n sha256 = \"fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/0.38.44/download\"],\n strip_prefix = \"rustix-0.38.44\",\n build_file = Label(\"@crates//crates:BUILD.rustix-0.38.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustix-1.1.4\",\n sha256 = \"b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustix/1.1.4/download\"],\n strip_prefix = \"rustix-1.1.4\",\n build_file = Label(\"@crates//crates:BUILD.rustix-1.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-0.23.40\",\n sha256 = \"ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls/0.23.40/download\"],\n strip_prefix = \"rustls-0.23.40\",\n build_file = Label(\"@crates//crates:BUILD.rustls-0.23.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-pki-types-1.14.1\",\n sha256 = \"30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls-pki-types/1.14.1/download\"],\n strip_prefix = \"rustls-pki-types-1.14.1\",\n build_file = Label(\"@crates//crates:BUILD.rustls-pki-types-1.14.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustls-webpki-0.103.13\",\n sha256 = \"61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustls-webpki/0.103.13/download\"],\n strip_prefix = \"rustls-webpki-0.103.13\",\n build_file = Label(\"@crates//crates:BUILD.rustls-webpki-0.103.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustversion-1.0.22\",\n sha256 = \"b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustversion/1.0.22/download\"],\n strip_prefix = \"rustversion-1.0.22\",\n build_file = Label(\"@crates//crates:BUILD.rustversion-1.0.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.23\",\n sha256 = \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.23/download\"],\n strip_prefix = \"ryu-1.0.23\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__salsa20-0.10.2\",\n sha256 = \"97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/salsa20/0.10.2/download\"],\n strip_prefix = \"salsa20-0.10.2\",\n build_file = Label(\"@crates//crates:BUILD.salsa20-0.10.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__same-file-1.0.6\",\n sha256 = \"93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/same-file/1.0.6/download\"],\n strip_prefix = \"same-file-1.0.6\",\n build_file = Label(\"@crates//crates:BUILD.same-file-1.0.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schannel-0.1.29\",\n sha256 = \"91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schannel/0.1.29/download\"],\n strip_prefix = \"schannel-0.1.29\",\n build_file = Label(\"@crates//crates:BUILD.schannel-0.1.29.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schemars-1.2.1\",\n sha256 = \"a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schemars/1.2.1/download\"],\n strip_prefix = \"schemars-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.schemars-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__schemars_derive-1.2.1\",\n sha256 = \"7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/schemars_derive/1.2.1/download\"],\n strip_prefix = \"schemars_derive-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.schemars_derive-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scopeguard-1.2.0\",\n sha256 = \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scopeguard/1.2.0/download\"],\n strip_prefix = \"scopeguard-1.2.0\",\n build_file = Label(\"@crates//crates:BUILD.scopeguard-1.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__scrypt-0.11.0\",\n sha256 = \"0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/scrypt/0.11.0/download\"],\n strip_prefix = \"scrypt-0.11.0\",\n build_file = Label(\"@crates//crates:BUILD.scrypt-0.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__secrecy-0.10.3\",\n sha256 = \"e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/secrecy/0.10.3/download\"],\n strip_prefix = \"secrecy-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.secrecy-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__secrecy-0.8.0\",\n sha256 = \"9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/secrecy/0.8.0/download\"],\n strip_prefix = \"secrecy-0.8.0\",\n build_file = Label(\"@crates//crates:BUILD.secrecy-0.8.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__security-framework-3.7.0\",\n sha256 = \"b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/security-framework/3.7.0/download\"],\n strip_prefix = \"security-framework-3.7.0\",\n build_file = Label(\"@crates//crates:BUILD.security-framework-3.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__security-framework-sys-2.17.0\",\n sha256 = \"6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/security-framework-sys/2.17.0/download\"],\n strip_prefix = \"security-framework-sys-2.17.0\",\n build_file = Label(\"@crates//crates:BUILD.security-framework-sys-2.17.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-0.10.3\",\n sha256 = \"e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/0.10.3/download\"],\n strip_prefix = \"self_cell-0.10.3\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-0.10.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__self_cell-1.2.2\",\n sha256 = \"b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/self_cell/1.2.2/download\"],\n strip_prefix = \"self_cell-1.2.2\",\n build_file = Label(\"@crates//crates:BUILD.self_cell-1.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__semver-1.0.28\",\n sha256 = \"8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/semver/1.0.28/download\"],\n strip_prefix = \"semver-1.0.28\",\n build_file = Label(\"@crates//crates:BUILD.semver-1.0.28.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.228\",\n sha256 = \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.228/download\"],\n strip_prefix = \"serde-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_core-1.0.228\",\n sha256 = \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_core/1.0.228/download\"],\n strip_prefix = \"serde_core-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_core-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.228\",\n sha256 = \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.228/download\"],\n strip_prefix = \"serde_derive-1.0.228\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.228.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive_internals-0.29.1\",\n sha256 = \"18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive_internals/0.29.1/download\"],\n strip_prefix = \"serde_derive_internals-0.29.1\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive_internals-0.29.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.150\",\n sha256 = \"e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.150/download\"],\n strip_prefix = \"serde_json-1.0.150\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.150.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_path_to_error-0.1.20\",\n sha256 = \"10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_path_to_error/0.1.20/download\"],\n strip_prefix = \"serde_path_to_error-0.1.20\",\n build_file = Label(\"@crates//crates:BUILD.serde_path_to_error-0.1.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_urlencoded-0.7.1\",\n sha256 = \"d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_urlencoded/0.7.1/download\"],\n strip_prefix = \"serde_urlencoded-0.7.1\",\n build_file = Label(\"@crates//crates:BUILD.serde_urlencoded-0.7.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_yaml-0.9.34-deprecated\",\n sha256 = \"6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_yaml/0.9.34+deprecated/download\"],\n strip_prefix = \"serde_yaml-0.9.34+deprecated\",\n build_file = Label(\"@crates//crates:BUILD.serde_yaml-0.9.34+deprecated.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sha2-0.10.9\",\n sha256 = \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sha2/0.10.9/download\"],\n strip_prefix = \"sha2-0.10.9\",\n build_file = Label(\"@crates//crates:BUILD.sha2-0.10.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sharded-slab-0.1.7\",\n sha256 = \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sharded-slab/0.1.7/download\"],\n strip_prefix = \"sharded-slab-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.sharded-slab-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__shlex-2.0.1\",\n sha256 = \"f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/shlex/2.0.1/download\"],\n strip_prefix = \"shlex-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.shlex-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-0.3.18\",\n sha256 = \"d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook/0.3.18/download\"],\n strip_prefix = \"signal-hook-0.3.18\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-0.3.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-mio-0.2.5\",\n sha256 = \"b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook-mio/0.2.5/download\"],\n strip_prefix = \"signal-hook-mio-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-mio-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signal-hook-registry-1.4.8\",\n sha256 = \"c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signal-hook-registry/1.4.8/download\"],\n strip_prefix = \"signal-hook-registry-1.4.8\",\n build_file = Label(\"@crates//crates:BUILD.signal-hook-registry-1.4.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__signature-2.2.0\",\n sha256 = \"77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/signature/2.2.0/download\"],\n strip_prefix = \"signature-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.signature-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simd-adler32-0.3.9\",\n sha256 = \"703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simd-adler32/0.3.9/download\"],\n strip_prefix = \"simd-adler32-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.simd-adler32-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__siphasher-1.0.3\",\n sha256 = \"8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/siphasher/1.0.3/download\"],\n strip_prefix = \"siphasher-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.siphasher-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__slab-0.4.12\",\n sha256 = \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/slab/0.4.12/download\"],\n strip_prefix = \"slab-0.4.12\",\n build_file = Label(\"@crates//crates:BUILD.slab-0.4.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smallvec-1.15.1\",\n sha256 = \"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smallvec/1.15.1/download\"],\n strip_prefix = \"smallvec-1.15.1\",\n build_file = Label(\"@crates//crates:BUILD.smallvec-1.15.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__smawk-0.3.2\",\n sha256 = \"b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/smawk/0.3.2/download\"],\n strip_prefix = \"smawk-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.smawk-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.5.10\",\n sha256 = \"e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.5.10/download\"],\n strip_prefix = \"socket2-0.5.10\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.5.10.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.6.4\",\n sha256 = \"52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.6.4/download\"],\n strip_prefix = \"socket2-0.6.4\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.6.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__spin-0.9.8\",\n sha256 = \"6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/spin/0.9.8/download\"],\n strip_prefix = \"spin-0.9.8\",\n build_file = Label(\"@crates//crates:BUILD.spin-0.9.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__spki-0.7.3\",\n sha256 = \"d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/spki/0.7.3/download\"],\n strip_prefix = \"spki-0.7.3\",\n build_file = Label(\"@crates//crates:BUILD.spki-0.7.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sse-stream-0.2.3\",\n sha256 = \"f3962b63f038885f15bce2c6e02c0e7925c072f1ac86bb60fd44c5c6b762fb72\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sse-stream/0.2.3/download\"],\n strip_prefix = \"sse-stream-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.sse-stream-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__stable_deref_trait-1.2.1\",\n sha256 = \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/stable_deref_trait/1.2.1/download\"],\n strip_prefix = \"stable_deref_trait-1.2.1\",\n build_file = Label(\"@crates//crates:BUILD.stable_deref_trait-1.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__static_assertions-1.1.0\",\n sha256 = \"a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/static_assertions/1.1.0/download\"],\n strip_prefix = \"static_assertions-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.static_assertions-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__string_cache-0.8.9\",\n sha256 = \"bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/string_cache/0.8.9/download\"],\n strip_prefix = \"string_cache-0.8.9\",\n build_file = Label(\"@crates//crates:BUILD.string_cache-0.8.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__string_cache_codegen-0.5.4\",\n sha256 = \"c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/string_cache_codegen/0.5.4/download\"],\n strip_prefix = \"string_cache_codegen-0.5.4\",\n build_file = Label(\"@crates//crates:BUILD.string_cache_codegen-0.5.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.10.0\",\n sha256 = \"73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.10.0/download\"],\n strip_prefix = \"strsim-0.10.0\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.10.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strsim-0.11.1\",\n sha256 = \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strsim/0.11.1/download\"],\n strip_prefix = \"strsim-0.11.1\",\n build_file = Label(\"@crates//crates:BUILD.strsim-0.11.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum-0.27.2\",\n sha256 = \"af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum/0.27.2/download\"],\n strip_prefix = \"strum-0.27.2\",\n build_file = Label(\"@crates//crates:BUILD.strum-0.27.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum-0.28.0\",\n sha256 = \"9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum/0.28.0/download\"],\n strip_prefix = \"strum-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.strum-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum_macros-0.27.2\",\n sha256 = \"7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum_macros/0.27.2/download\"],\n strip_prefix = \"strum_macros-0.27.2\",\n build_file = Label(\"@crates//crates:BUILD.strum_macros-0.27.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__strum_macros-0.28.0\",\n sha256 = \"ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/strum_macros/0.28.0/download\"],\n strip_prefix = \"strum_macros-0.28.0\",\n build_file = Label(\"@crates//crates:BUILD.strum_macros-0.28.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__subtle-2.6.1\",\n sha256 = \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/subtle/2.6.1/download\"],\n strip_prefix = \"subtle-2.6.1\",\n build_file = Label(\"@crates//crates:BUILD.subtle-2.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__symlink-0.1.0\",\n sha256 = \"a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/symlink/0.1.0/download\"],\n strip_prefix = \"symlink-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.symlink-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-1.0.109\",\n sha256 = \"72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/1.0.109/download\"],\n strip_prefix = \"syn-1.0.109\",\n build_file = Label(\"@crates//crates:BUILD.syn-1.0.109.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.117\",\n sha256 = \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.117/download\"],\n strip_prefix = \"syn-2.0.117\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.117.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__sync_wrapper-1.0.2\",\n sha256 = \"0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/sync_wrapper/1.0.2/download\"],\n strip_prefix = \"sync_wrapper-1.0.2\",\n build_file = Label(\"@crates//crates:BUILD.sync_wrapper-1.0.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__synstructure-0.13.2\",\n sha256 = \"728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/synstructure/0.13.2/download\"],\n strip_prefix = \"synstructure-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.synstructure-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syntect-5.3.0\",\n sha256 = \"656b45c05d95a5704399aeef6bd0ddec7b2b3531b7c9e900abbf7c4d2190c925\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syntect/5.3.0/download\"],\n strip_prefix = \"syntect-5.3.0\",\n build_file = Label(\"@crates//crates:BUILD.syntect-5.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__system-configuration-0.7.0\",\n sha256 = \"a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/system-configuration/0.7.0/download\"],\n strip_prefix = \"system-configuration-0.7.0\",\n build_file = Label(\"@crates//crates:BUILD.system-configuration-0.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__system-configuration-sys-0.6.0\",\n sha256 = \"8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/system-configuration-sys/0.6.0/download\"],\n strip_prefix = \"system-configuration-sys-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.system-configuration-sys-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tempfile-3.27.0\",\n sha256 = \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tempfile/3.27.0/download\"],\n strip_prefix = \"tempfile-3.27.0\",\n build_file = Label(\"@crates//crates:BUILD.tempfile-3.27.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tendril-0.4.3\",\n sha256 = \"d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tendril/0.4.3/download\"],\n strip_prefix = \"tendril-0.4.3\",\n build_file = Label(\"@crates//crates:BUILD.tendril-0.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__terminfo-0.9.0\",\n sha256 = \"d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/terminfo/0.9.0/download\"],\n strip_prefix = \"terminfo-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.terminfo-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__termios-0.3.3\",\n sha256 = \"411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termios/0.3.3/download\"],\n strip_prefix = \"termios-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.termios-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__termwiz-0.23.3\",\n sha256 = \"4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/termwiz/0.23.3/download\"],\n strip_prefix = \"termwiz-0.23.3\",\n build_file = Label(\"@crates//crates:BUILD.termwiz-0.23.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__textwrap-0.16.2\",\n sha256 = \"c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/textwrap/0.16.2/download\"],\n strip_prefix = \"textwrap-0.16.2\",\n build_file = Label(\"@crates//crates:BUILD.textwrap-0.16.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-1.0.69\",\n sha256 = \"b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/1.0.69/download\"],\n strip_prefix = \"thiserror-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-2.0.18\",\n sha256 = \"4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror/2.0.18/download\"],\n strip_prefix = \"thiserror-2.0.18\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-1.0.69\",\n sha256 = \"4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/1.0.69/download\"],\n strip_prefix = \"thiserror-impl-1.0.69\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-1.0.69.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thiserror-impl-2.0.18\",\n sha256 = \"ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thiserror-impl/2.0.18/download\"],\n strip_prefix = \"thiserror-impl-2.0.18\",\n build_file = Label(\"@crates//crates:BUILD.thiserror-impl-2.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__thread_local-1.1.9\",\n sha256 = \"f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/thread_local/1.1.9/download\"],\n strip_prefix = \"thread_local-1.1.9\",\n build_file = Label(\"@crates//crates:BUILD.thread_local-1.1.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tiff-0.11.3\",\n sha256 = \"b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tiff/0.11.3/download\"],\n strip_prefix = \"tiff-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.tiff-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tiktoken-rs-0.6.0\",\n sha256 = \"44075987ee2486402f0808505dd65692163d243a337fc54363d49afac41087f6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tiktoken-rs/0.6.0/download\"],\n strip_prefix = \"tiktoken-rs-0.6.0\",\n build_file = Label(\"@crates//crates:BUILD.tiktoken-rs-0.6.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-0.3.47\",\n sha256 = \"743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time/0.3.47/download\"],\n strip_prefix = \"time-0.3.47\",\n build_file = Label(\"@crates//crates:BUILD.time-0.3.47.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-core-0.1.8\",\n sha256 = \"7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-core/0.1.8/download\"],\n strip_prefix = \"time-core-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.time-core-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-macros-0.2.27\",\n sha256 = \"2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-macros/0.2.27/download\"],\n strip_prefix = \"time-macros-0.2.27\",\n build_file = Label(\"@crates//crates:BUILD.time-macros-0.2.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinystr-0.8.3\",\n sha256 = \"c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinystr/0.8.3/download\"],\n strip_prefix = \"tinystr-0.8.3\",\n build_file = Label(\"@crates//crates:BUILD.tinystr-0.8.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinyvec-1.11.0\",\n sha256 = \"3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinyvec/1.11.0/download\"],\n strip_prefix = \"tinyvec-1.11.0\",\n build_file = Label(\"@crates//crates:BUILD.tinyvec-1.11.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tinyvec_macros-0.1.1\",\n sha256 = \"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tinyvec_macros/0.1.1/download\"],\n strip_prefix = \"tinyvec_macros-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.tinyvec_macros-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-1.52.3\",\n sha256 = \"8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio/1.52.3/download\"],\n strip_prefix = \"tokio-1.52.3\",\n build_file = Label(\"@crates//crates:BUILD.tokio-1.52.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-macros-2.7.0\",\n sha256 = \"385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-macros/2.7.0/download\"],\n strip_prefix = \"tokio-macros-2.7.0\",\n build_file = Label(\"@crates//crates:BUILD.tokio-macros-2.7.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-native-tls-0.3.1\",\n sha256 = \"bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-native-tls/0.3.1/download\"],\n strip_prefix = \"tokio-native-tls-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.tokio-native-tls-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-rustls-0.26.4\",\n sha256 = \"1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-rustls/0.26.4/download\"],\n strip_prefix = \"tokio-rustls-0.26.4\",\n build_file = Label(\"@crates//crates:BUILD.tokio-rustls-0.26.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-stream-0.1.18\",\n sha256 = \"32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-stream/0.1.18/download\"],\n strip_prefix = \"tokio-stream-0.1.18\",\n build_file = Label(\"@crates//crates:BUILD.tokio-stream-0.1.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-util-0.7.18\",\n sha256 = \"9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-util/0.7.18/download\"],\n strip_prefix = \"tokio-util-0.7.18\",\n build_file = Label(\"@crates//crates:BUILD.tokio-util-0.7.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__toml-0.5.11\",\n sha256 = \"f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/toml/0.5.11/download\"],\n strip_prefix = \"toml-0.5.11\",\n build_file = Label(\"@crates//crates:BUILD.toml-0.5.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tonic-0.12.3\",\n sha256 = \"877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tonic/0.12.3/download\"],\n strip_prefix = \"tonic-0.12.3\",\n build_file = Label(\"@crates//crates:BUILD.tonic-0.12.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-0.4.13\",\n sha256 = \"b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower/0.4.13/download\"],\n strip_prefix = \"tower-0.4.13\",\n build_file = Label(\"@crates//crates:BUILD.tower-0.4.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-0.5.3\",\n sha256 = \"ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower/0.5.3/download\"],\n strip_prefix = \"tower-0.5.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-0.5.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-http-0.6.11\",\n sha256 = \"4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-http/0.6.11/download\"],\n strip_prefix = \"tower-http-0.6.11\",\n build_file = Label(\"@crates//crates:BUILD.tower-http-0.6.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-layer-0.3.3\",\n sha256 = \"121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-layer/0.3.3/download\"],\n strip_prefix = \"tower-layer-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-layer-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tower-service-0.3.3\",\n sha256 = \"8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tower-service/0.3.3/download\"],\n strip_prefix = \"tower-service-0.3.3\",\n build_file = Label(\"@crates//crates:BUILD.tower-service-0.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-0.1.44\",\n sha256 = \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing/0.1.44/download\"],\n strip_prefix = \"tracing-0.1.44\",\n build_file = Label(\"@crates//crates:BUILD.tracing-0.1.44.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-appender-0.2.5\",\n sha256 = \"050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-appender/0.2.5/download\"],\n strip_prefix = \"tracing-appender-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.tracing-appender-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-attributes-0.1.31\",\n sha256 = \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-attributes/0.1.31/download\"],\n strip_prefix = \"tracing-attributes-0.1.31\",\n build_file = Label(\"@crates//crates:BUILD.tracing-attributes-0.1.31.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-core-0.1.36\",\n sha256 = \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-core/0.1.36/download\"],\n strip_prefix = \"tracing-core-0.1.36\",\n build_file = Label(\"@crates//crates:BUILD.tracing-core-0.1.36.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-log-0.2.0\",\n sha256 = \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-log/0.2.0/download\"],\n strip_prefix = \"tracing-log-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.tracing-log-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-opentelemetry-0.29.0\",\n sha256 = \"721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-opentelemetry/0.29.0/download\"],\n strip_prefix = \"tracing-opentelemetry-0.29.0\",\n build_file = Label(\"@crates//crates:BUILD.tracing-opentelemetry-0.29.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tracing-subscriber-0.3.23\",\n sha256 = \"cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tracing-subscriber/0.3.23/download\"],\n strip_prefix = \"tracing-subscriber-0.3.23\",\n build_file = Label(\"@crates//crates:BUILD.tracing-subscriber-0.3.23.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__try-lock-0.2.5\",\n sha256 = \"e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/try-lock/0.2.5/download\"],\n strip_prefix = \"try-lock-0.2.5\",\n build_file = Label(\"@crates//crates:BUILD.try-lock-0.2.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__two-face-0.5.1\",\n sha256 = \"b285c51f8a6ade109ed4566d33ac4fb289fb5d6cf87ed70908a5eaf65e948e34\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/two-face/0.5.1/download\"],\n strip_prefix = \"two-face-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.two-face-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__type-map-0.5.1\",\n sha256 = \"cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/type-map/0.5.1/download\"],\n strip_prefix = \"type-map-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.type-map-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__type1-encoding-parser-0.1.1\",\n sha256 = \"fa10c302f5a53b7ad27fd42a3996e23d096ba39b5b8dd6d9e683a05b01bee749\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/type1-encoding-parser/0.1.1/download\"],\n strip_prefix = \"type1-encoding-parser-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.type1-encoding-parser-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__typenum-1.20.1\",\n sha256 = \"b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/typenum/1.20.1/download\"],\n strip_prefix = \"typenum-1.20.1\",\n build_file = Label(\"@crates//crates:BUILD.typenum-1.20.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ucd-trie-0.1.7\",\n sha256 = \"2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ucd-trie/0.1.7/download\"],\n strip_prefix = \"ucd-trie-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.ucd-trie-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unic-langid-0.9.6\",\n sha256 = \"a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unic-langid/0.9.6/download\"],\n strip_prefix = \"unic-langid-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.unic-langid-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unic-langid-impl-0.9.6\",\n sha256 = \"dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unic-langid-impl/0.9.6/download\"],\n strip_prefix = \"unic-langid-impl-0.9.6\",\n build_file = Label(\"@crates//crates:BUILD.unic-langid-impl-0.9.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicase-2.9.0\",\n sha256 = \"dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicase/2.9.0/download\"],\n strip_prefix = \"unicase-2.9.0\",\n build_file = Label(\"@crates//crates:BUILD.unicase-2.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.24\",\n sha256 = \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.24/download\"],\n strip_prefix = \"unicode-ident-1.0.24\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-linebreak-0.1.5\",\n sha256 = \"3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-linebreak/0.1.5/download\"],\n strip_prefix = \"unicode-linebreak-0.1.5\",\n build_file = Label(\"@crates//crates:BUILD.unicode-linebreak-0.1.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-normalization-0.1.25\",\n sha256 = \"5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-normalization/0.1.25/download\"],\n strip_prefix = \"unicode-normalization-0.1.25\",\n build_file = Label(\"@crates//crates:BUILD.unicode-normalization-0.1.25.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-segmentation-1.13.2\",\n sha256 = \"9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-segmentation/1.13.2/download\"],\n strip_prefix = \"unicode-segmentation-1.13.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-segmentation-1.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-truncate-2.0.1\",\n sha256 = \"16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-truncate/2.0.1/download\"],\n strip_prefix = \"unicode-truncate-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.unicode-truncate-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.1.13\",\n sha256 = \"0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.1.13/download\"],\n strip_prefix = \"unicode-width-0.1.13\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.1.13.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-width-0.2.2\",\n sha256 = \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-width/0.2.2/download\"],\n strip_prefix = \"unicode-width-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.unicode-width-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-xid-0.2.6\",\n sha256 = \"ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-xid/0.2.6/download\"],\n strip_prefix = \"unicode-xid-0.2.6\",\n build_file = Label(\"@crates//crates:BUILD.unicode-xid-0.2.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__universal-hash-0.5.1\",\n sha256 = \"fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/universal-hash/0.5.1/download\"],\n strip_prefix = \"universal-hash-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.universal-hash-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unsafe-libyaml-0.2.11\",\n sha256 = \"673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unsafe-libyaml/0.2.11/download\"],\n strip_prefix = \"unsafe-libyaml-0.2.11\",\n build_file = Label(\"@crates//crates:BUILD.unsafe-libyaml-0.2.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__untrusted-0.9.0\",\n sha256 = \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/untrusted/0.9.0/download\"],\n strip_prefix = \"untrusted-0.9.0\",\n build_file = Label(\"@crates//crates:BUILD.untrusted-0.9.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__url-2.5.8\",\n sha256 = \"ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/url/2.5.8/download\"],\n strip_prefix = \"url-2.5.8\",\n build_file = Label(\"@crates//crates:BUILD.url-2.5.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf-8-0.7.6\",\n sha256 = \"09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf-8/0.7.6/download\"],\n strip_prefix = \"utf-8-0.7.6\",\n build_file = Label(\"@crates//crates:BUILD.utf-8-0.7.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8_iter-1.0.4\",\n sha256 = \"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8_iter/1.0.4/download\"],\n strip_prefix = \"utf8_iter-1.0.4\",\n build_file = Label(\"@crates//crates:BUILD.utf8_iter-1.0.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__utf8parse-0.2.2\",\n sha256 = \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/utf8parse/0.2.2/download\"],\n strip_prefix = \"utf8parse-0.2.2\",\n build_file = Label(\"@crates//crates:BUILD.utf8parse-0.2.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__uuid-1.23.2\",\n sha256 = \"d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/uuid/1.23.2/download\"],\n strip_prefix = \"uuid-1.23.2\",\n build_file = Label(\"@crates//crates:BUILD.uuid-1.23.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__valuable-0.1.1\",\n sha256 = \"ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/valuable/0.1.1/download\"],\n strip_prefix = \"valuable-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.valuable-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__vcpkg-0.2.15\",\n sha256 = \"accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vcpkg/0.2.15/download\"],\n strip_prefix = \"vcpkg-0.2.15\",\n build_file = Label(\"@crates//crates:BUILD.vcpkg-0.2.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__version_check-0.9.5\",\n sha256 = \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/version_check/0.9.5/download\"],\n strip_prefix = \"version_check-0.9.5\",\n build_file = Label(\"@crates//crates:BUILD.version_check-0.9.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__vtparse-0.6.2\",\n sha256 = \"6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/vtparse/0.6.2/download\"],\n strip_prefix = \"vtparse-0.6.2\",\n build_file = Label(\"@crates//crates:BUILD.vtparse-0.6.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__walkdir-2.5.0\",\n sha256 = \"29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/walkdir/2.5.0/download\"],\n strip_prefix = \"walkdir-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.walkdir-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__want-0.3.1\",\n sha256 = \"bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/want/0.3.1/download\"],\n strip_prefix = \"want-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.want-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasi-0.11.1-wasi-snapshot-preview1\",\n sha256 = \"ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasi/0.11.1+wasi-snapshot-preview1/download\"],\n strip_prefix = \"wasi-0.11.1+wasi-snapshot-preview1\",\n build_file = Label(\"@crates//crates:BUILD.wasi-0.11.1+wasi-snapshot-preview1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasip2-1.0.3-wasi-0.2.9\",\n sha256 = \"20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip2/1.0.3+wasi-0.2.9/download\"],\n strip_prefix = \"wasip2-1.0.3+wasi-0.2.9\",\n build_file = Label(\"@crates//crates:BUILD.wasip2-1.0.3+wasi-0.2.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasip3-0.4.0-wasi-0.3.0-rc-2026-01-06\",\n sha256 = \"5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasip3/0.4.0+wasi-0.3.0-rc-2026-01-06/download\"],\n strip_prefix = \"wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06\",\n build_file = Label(\"@crates//crates:BUILD.wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-0.2.122\",\n sha256 = \"3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen/0.2.122/download\"],\n strip_prefix = \"wasm-bindgen-0.2.122\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-0.2.122.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-futures-0.4.72\",\n sha256 = \"9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-futures/0.4.72/download\"],\n strip_prefix = \"wasm-bindgen-futures-0.4.72\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-futures-0.4.72.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-0.2.122\",\n sha256 = \"916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro/0.2.122/download\"],\n strip_prefix = \"wasm-bindgen-macro-0.2.122\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-0.2.122.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-macro-support-0.2.122\",\n sha256 = \"299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.122/download\"],\n strip_prefix = \"wasm-bindgen-macro-support-0.2.122\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-macro-support-0.2.122.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-bindgen-shared-0.2.122\",\n sha256 = \"9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-bindgen-shared/0.2.122/download\"],\n strip_prefix = \"wasm-bindgen-shared-0.2.122\",\n build_file = Label(\"@crates//crates:BUILD.wasm-bindgen-shared-0.2.122.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-encoder-0.244.0\",\n sha256 = \"990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-encoder/0.244.0/download\"],\n strip_prefix = \"wasm-encoder-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-encoder-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-metadata-0.244.0\",\n sha256 = \"bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-metadata/0.244.0/download\"],\n strip_prefix = \"wasm-metadata-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-metadata-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasm-streams-0.5.0\",\n sha256 = \"9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasm-streams/0.5.0/download\"],\n strip_prefix = \"wasm-streams-0.5.0\",\n build_file = Label(\"@crates//crates:BUILD.wasm-streams-0.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasmparser-0.244.0\",\n sha256 = \"47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasmparser/0.244.0/download\"],\n strip_prefix = \"wasmparser-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wasmparser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__web-sys-0.3.99\",\n sha256 = \"6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/web-sys/0.3.99/download\"],\n strip_prefix = \"web-sys-0.3.99\",\n build_file = Label(\"@crates//crates:BUILD.web-sys-0.3.99.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__web-time-1.1.0\",\n sha256 = \"5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/web-time/1.1.0/download\"],\n strip_prefix = \"web-time-1.1.0\",\n build_file = Label(\"@crates//crates:BUILD.web-time-1.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__weezl-0.1.12\",\n sha256 = \"a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/weezl/0.1.12/download\"],\n strip_prefix = \"weezl-0.1.12\",\n build_file = Label(\"@crates//crates:BUILD.weezl-0.1.12.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-bidi-0.2.3\",\n sha256 = \"0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-bidi/0.2.3/download\"],\n strip_prefix = \"wezterm-bidi-0.2.3\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-bidi-0.2.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-blob-leases-0.1.1\",\n sha256 = \"692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-blob-leases/0.1.1/download\"],\n strip_prefix = \"wezterm-blob-leases-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-blob-leases-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-color-types-0.3.0\",\n sha256 = \"7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-color-types/0.3.0/download\"],\n strip_prefix = \"wezterm-color-types-0.3.0\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-color-types-0.3.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-dynamic-0.2.1\",\n sha256 = \"5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-dynamic/0.2.1/download\"],\n strip_prefix = \"wezterm-dynamic-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-dynamic-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-dynamic-derive-0.1.1\",\n sha256 = \"46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-dynamic-derive/0.1.1/download\"],\n strip_prefix = \"wezterm-dynamic-derive-0.1.1\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-dynamic-derive-0.1.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wezterm-input-types-0.1.0\",\n sha256 = \"7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wezterm-input-types/0.1.0/download\"],\n strip_prefix = \"wezterm-input-types-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.wezterm-input-types-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-0.3.9\",\n sha256 = \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi/0.3.9/download\"],\n strip_prefix = \"winapi-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.winapi-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-i686-pc-windows-gnu-0.4.0\",\n sha256 = \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-i686-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-util-0.1.11\",\n sha256 = \"c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-util/0.1.11/download\"],\n strip_prefix = \"winapi-util-0.1.11\",\n build_file = Label(\"@crates//crates:BUILD.winapi-util-0.1.11.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winapi-x86_64-pc-windows-gnu-0.4.0\",\n sha256 = \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download\"],\n strip_prefix = \"winapi-x86_64-pc-windows-gnu-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-0.62.2\",\n sha256 = \"527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows/0.62.2/download\"],\n strip_prefix = \"windows-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-collections-0.3.2\",\n sha256 = \"23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-collections/0.3.2/download\"],\n strip_prefix = \"windows-collections-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-collections-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-core-0.62.2\",\n sha256 = \"b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-core/0.62.2/download\"],\n strip_prefix = \"windows-core-0.62.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-core-0.62.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-future-0.3.2\",\n sha256 = \"e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-future/0.3.2/download\"],\n strip_prefix = \"windows-future-0.3.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-future-0.3.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-implement-0.60.2\",\n sha256 = \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-implement/0.60.2/download\"],\n strip_prefix = \"windows-implement-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-implement-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-interface-0.59.3\",\n sha256 = \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-interface/0.59.3/download\"],\n strip_prefix = \"windows-interface-0.59.3\",\n build_file = Label(\"@crates//crates:BUILD.windows-interface-0.59.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-link-0.2.1\",\n sha256 = \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-link/0.2.1/download\"],\n strip_prefix = \"windows-link-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-link-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-numerics-0.3.1\",\n sha256 = \"6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-numerics/0.3.1/download\"],\n strip_prefix = \"windows-numerics-0.3.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-numerics-0.3.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-registry-0.6.1\",\n sha256 = \"02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-registry/0.6.1/download\"],\n strip_prefix = \"windows-registry-0.6.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-registry-0.6.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-result-0.4.1\",\n sha256 = \"7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-result/0.4.1/download\"],\n strip_prefix = \"windows-result-0.4.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-result-0.4.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-strings-0.5.1\",\n sha256 = \"7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-strings/0.5.1/download\"],\n strip_prefix = \"windows-strings-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-strings-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.48.0\",\n sha256 = \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.48.0/download\"],\n strip_prefix = \"windows-sys-0.48.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.48.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.52.0\",\n sha256 = \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.52.0/download\"],\n strip_prefix = \"windows-sys-0.52.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.52.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.59.0\",\n sha256 = \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.59.0/download\"],\n strip_prefix = \"windows-sys-0.59.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.59.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.60.2\",\n sha256 = \"f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.60.2/download\"],\n strip_prefix = \"windows-sys-0.60.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.60.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.61.2\",\n sha256 = \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.61.2/download\"],\n strip_prefix = \"windows-sys-0.61.2\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.61.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.48.5\",\n sha256 = \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.48.5/download\"],\n strip_prefix = \"windows-targets-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.52.6\",\n sha256 = \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.52.6/download\"],\n strip_prefix = \"windows-targets-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.53.5\",\n sha256 = \"4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.53.5/download\"],\n strip_prefix = \"windows-targets-0.53.5\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.53.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-threading-0.2.1\",\n sha256 = \"3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-threading/0.2.1/download\"],\n strip_prefix = \"windows-threading-0.2.1\",\n build_file = Label(\"@crates//crates:BUILD.windows-threading-0.2.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.48.5\",\n sha256 = \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.52.6\",\n sha256 = \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.53.1\",\n sha256 = \"a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.48.5\",\n sha256 = \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.52.6\",\n sha256 = \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.53.1\",\n sha256 = \"b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.48.5\",\n sha256 = \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.48.5/download\"],\n strip_prefix = \"windows_i686_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.52.6\",\n sha256 = \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.53.1\",\n sha256 = \"960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnu-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.52.6\",\n sha256 = \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.53.1\",\n sha256 = \"fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.48.5\",\n sha256 = \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.48.5/download\"],\n strip_prefix = \"windows_i686_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.52.6\",\n sha256 = \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.52.6/download\"],\n strip_prefix = \"windows_i686_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.53.1\",\n sha256 = \"1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.53.1/download\"],\n strip_prefix = \"windows_i686_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.48.5\",\n sha256 = \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.52.6\",\n sha256 = \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.53.1\",\n sha256 = \"9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.48.5\",\n sha256 = \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.52.6\",\n sha256 = \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.53.1\",\n sha256 = \"0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.48.5\",\n sha256 = \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.52.6\",\n sha256 = \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.53.1\",\n sha256 = \"d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.53.1/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.53.1\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.53.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__winnow-0.6.26\",\n sha256 = \"1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/winnow/0.6.26/download\"],\n strip_prefix = \"winnow-0.6.26\",\n build_file = Label(\"@crates//crates:BUILD.winnow-0.6.26.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wiremock-0.6.5\",\n sha256 = \"08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wiremock/0.6.5/download\"],\n strip_prefix = \"wiremock-0.6.5\",\n build_file = Label(\"@crates//crates:BUILD.wiremock-0.6.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-0.51.0\",\n sha256 = \"d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-0.57.1\",\n sha256 = \"1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen/0.57.1/download\"],\n strip_prefix = \"wit-bindgen-0.57.1\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-0.57.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-core-0.51.0\",\n sha256 = \"ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-core/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-core-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-core-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-rust-0.51.0\",\n sha256 = \"b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-rust-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-bindgen-rust-macro-0.51.0\",\n sha256 = \"0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-bindgen-rust-macro/0.51.0/download\"],\n strip_prefix = \"wit-bindgen-rust-macro-0.51.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-bindgen-rust-macro-0.51.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-component-0.244.0\",\n sha256 = \"9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-component/0.244.0/download\"],\n strip_prefix = \"wit-component-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-component-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wit-parser-0.244.0\",\n sha256 = \"ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wit-parser/0.244.0/download\"],\n strip_prefix = \"wit-parser-0.244.0\",\n build_file = Label(\"@crates//crates:BUILD.wit-parser-0.244.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__writeable-0.6.3\",\n sha256 = \"1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/writeable/0.6.3/download\"],\n strip_prefix = \"writeable-0.6.3\",\n build_file = Label(\"@crates//crates:BUILD.writeable-0.6.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x11rb-0.13.2\",\n sha256 = \"9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x11rb/0.13.2/download\"],\n strip_prefix = \"x11rb-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.x11rb-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x11rb-protocol-0.13.2\",\n sha256 = \"ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x11rb-protocol/0.13.2/download\"],\n strip_prefix = \"x11rb-protocol-0.13.2\",\n build_file = Label(\"@crates//crates:BUILD.x11rb-protocol-0.13.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__x25519-dalek-2.0.1\",\n sha256 = \"c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/x25519-dalek/2.0.1/download\"],\n strip_prefix = \"x25519-dalek-2.0.1\",\n build_file = Label(\"@crates//crates:BUILD.x25519-dalek-2.0.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yaml-rust-0.4.5\",\n sha256 = \"56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yaml-rust/0.4.5/download\"],\n strip_prefix = \"yaml-rust-0.4.5\",\n build_file = Label(\"@crates//crates:BUILD.yaml-rust-0.4.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-0.8.2\",\n sha256 = \"abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke/0.8.2/download\"],\n strip_prefix = \"yoke-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.yoke-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__yoke-derive-0.8.2\",\n sha256 = \"de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/yoke-derive/0.8.2/download\"],\n strip_prefix = \"yoke-derive-0.8.2\",\n build_file = Label(\"@crates//crates:BUILD.yoke-derive-0.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerocopy-0.8.50\",\n sha256 = \"3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy/0.8.50/download\"],\n strip_prefix = \"zerocopy-0.8.50\",\n build_file = Label(\"@crates//crates:BUILD.zerocopy-0.8.50.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerocopy-derive-0.8.50\",\n sha256 = \"0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerocopy-derive/0.8.50/download\"],\n strip_prefix = \"zerocopy-derive-0.8.50\",\n build_file = Label(\"@crates//crates:BUILD.zerocopy-derive-0.8.50.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-0.1.8\",\n sha256 = \"0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom/0.1.8/download\"],\n strip_prefix = \"zerofrom-0.1.8\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-0.1.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerofrom-derive-0.1.7\",\n sha256 = \"11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerofrom-derive/0.1.7/download\"],\n strip_prefix = \"zerofrom-derive-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.zerofrom-derive-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zeroize-1.8.2\",\n sha256 = \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize/1.8.2/download\"],\n strip_prefix = \"zeroize-1.8.2\",\n build_file = Label(\"@crates//crates:BUILD.zeroize-1.8.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zeroize_derive-1.4.3\",\n sha256 = \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zeroize_derive/1.4.3/download\"],\n strip_prefix = \"zeroize_derive-1.4.3\",\n build_file = Label(\"@crates//crates:BUILD.zeroize_derive-1.4.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerotrie-0.2.4\",\n sha256 = \"0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerotrie/0.2.4/download\"],\n strip_prefix = \"zerotrie-0.2.4\",\n build_file = Label(\"@crates//crates:BUILD.zerotrie-0.2.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-0.11.6\",\n sha256 = \"90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec/0.11.6/download\"],\n strip_prefix = \"zerovec-0.11.6\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-0.11.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zerovec-derive-0.11.3\",\n sha256 = \"625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zerovec-derive/0.11.3/download\"],\n strip_prefix = \"zerovec-derive-0.11.3\",\n build_file = Label(\"@crates//crates:BUILD.zerovec-derive-0.11.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zmij-1.0.21\",\n sha256 = \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zmij/1.0.21/download\"],\n strip_prefix = \"zmij-1.0.21\",\n build_file = Label(\"@crates//crates:BUILD.zmij-1.0.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zune-core-0.5.1\",\n sha256 = \"cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zune-core/0.5.1/download\"],\n strip_prefix = \"zune-core-0.5.1\",\n build_file = Label(\"@crates//crates:BUILD.zune-core-0.5.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__zune-jpeg-0.5.15\",\n sha256 = \"27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/zune-jpeg/0.5.15/download\"],\n strip_prefix = \"zune-jpeg-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.zune-jpeg-0.5.15.bazel\"),\n )\n\n return [\n struct(repo=\"crates__age-0.10.1\", is_dev_dep = False),\n struct(repo=\"crates__agent-client-protocol-schema-0.11.7\", is_dev_dep = False),\n struct(repo=\"crates__aho-corasick-1.1.4\", is_dev_dep = False),\n struct(repo=\"crates__anyhow-1.0.102\", is_dev_dep = False),\n struct(repo=\"crates__arboard-3.6.1\", is_dev_dep = False),\n struct(repo=\"crates__async-trait-0.1.89\", is_dev_dep = False),\n struct(repo=\"crates__base64-0.22.1\", is_dev_dep = False),\n struct(repo=\"crates__chrono-0.4.44\", is_dev_dep = False),\n struct(repo=\"crates__clap-4.6.1\", is_dev_dep = False),\n struct(repo=\"crates__cron-0.15.0\", is_dev_dep = False),\n struct(repo=\"crates__crossterm-0.28.1\", is_dev_dep = False),\n struct(repo=\"crates__derive_more-2.1.1\", is_dev_dep = False),\n struct(repo=\"crates__dirs-6.0.0\", is_dev_dep = False),\n struct(repo=\"crates__eventsource-stream-0.2.3\", is_dev_dep = False),\n struct(repo=\"crates__filetime-0.2.29\", is_dev_dep = False),\n struct(repo=\"crates__flate2-1.1.9\", is_dev_dep = False),\n struct(repo=\"crates__futures-0.3.32\", is_dev_dep = False),\n struct(repo=\"crates__globset-0.4.18\", is_dev_dep = False),\n struct(repo=\"crates__html2text-0.12.6\", is_dev_dep = False),\n struct(repo=\"crates__ignore-0.4.25\", is_dev_dep = False),\n struct(repo=\"crates__image-0.25.10\", is_dev_dep = False),\n struct(repo=\"crates__include_dir-0.7.4\", is_dev_dep = False),\n struct(repo=\"crates__indexmap-2.14.0\", is_dev_dep = False),\n struct(repo=\"crates__libc-0.2.186\", is_dev_dep = False),\n struct(repo=\"crates__minijinja-2.20.0\", is_dev_dep = False),\n struct(repo=\"crates__notify-6.1.1\", is_dev_dep = False),\n struct(repo=\"crates__notify-debouncer-mini-0.4.1\", is_dev_dep = False),\n struct(repo=\"crates__once_cell-1.21.4\", is_dev_dep = False),\n struct(repo=\"crates__opener-0.7.2\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-appender-tracing-0.28.1\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry-otlp-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__opentelemetry_sdk-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__parking_lot-0.12.5\", is_dev_dep = False),\n struct(repo=\"crates__pdf-extract-0.7.12\", is_dev_dep = False),\n struct(repo=\"crates__pin-project-lite-0.2.17\", is_dev_dep = False),\n struct(repo=\"crates__pulldown-cmark-0.12.2\", is_dev_dep = False),\n struct(repo=\"crates__rand-0.9.4\", is_dev_dep = False),\n struct(repo=\"crates__ratatui-0.30.0\", is_dev_dep = False),\n struct(repo=\"crates__regex-1.12.3\", is_dev_dep = False),\n struct(repo=\"crates__reqwest-0.13.4\", is_dev_dep = False),\n struct(repo=\"crates__rmcp-1.7.0\", is_dev_dep = False),\n struct(repo=\"crates__rpassword-7.5.3\", is_dev_dep = False),\n struct(repo=\"crates__rusqlite-0.32.1\", is_dev_dep = False),\n struct(repo=\"crates__schemars-1.2.1\", is_dev_dep = False),\n struct(repo=\"crates__secrecy-0.10.3\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.228\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.150\", is_dev_dep = False),\n struct(repo=\"crates__serde_yaml-0.9.34-deprecated\", is_dev_dep = False),\n struct(repo=\"crates__sha2-0.10.9\", is_dev_dep = False),\n struct(repo=\"crates__strum-0.28.0\", is_dev_dep = False),\n struct(repo=\"crates__syntect-5.3.0\", is_dev_dep = False),\n struct(repo=\"crates__tempfile-3.27.0\", is_dev_dep = False),\n struct(repo=\"crates__textwrap-0.16.2\", is_dev_dep = False),\n struct(repo=\"crates__thiserror-2.0.18\", is_dev_dep = False),\n struct(repo=\"crates__tiktoken-rs-0.6.0\", is_dev_dep = False),\n struct(repo=\"crates__tokio-1.52.3\", is_dev_dep = False),\n struct(repo=\"crates__tokio-stream-0.1.18\", is_dev_dep = False),\n struct(repo=\"crates__tokio-util-0.7.18\", is_dev_dep = False),\n struct(repo=\"crates__tracing-0.1.44\", is_dev_dep = False),\n struct(repo=\"crates__tracing-appender-0.2.5\", is_dev_dep = False),\n struct(repo=\"crates__tracing-opentelemetry-0.29.0\", is_dev_dep = False),\n struct(repo=\"crates__tracing-subscriber-0.3.23\", is_dev_dep = False),\n struct(repo=\"crates__two-face-0.5.1\", is_dev_dep = False),\n struct(repo=\"crates__unicode-segmentation-1.13.2\", is_dev_dep = False),\n struct(repo=\"crates__unicode-width-0.2.2\", is_dev_dep = False),\n struct(repo=\"crates__uuid-1.23.2\", is_dev_dep = False),\n struct(repo=\"crates__walkdir-2.5.0\", is_dev_dep = False),\n struct(repo=\"crates__windows-sys-0.59.0\", is_dev_dep = False),\n struct(repo=\"crates__wiremock-0.6.5\", is_dev_dep = False),\n struct(repo=\"crates__zeroize-1.8.2\", is_dev_dep = False),\n ]\n" } } }, @@ -2997,7 +2997,23 @@ "https://static.crates.io/crates/agent-client-protocol-schema/0.11.7/download" ], "strip_prefix": "agent-client-protocol-schema-0.11.7", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"agent_client_protocol_schema\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__derive_more-2.1.1//:derive_more\",\n \"@crates__schemars-1.2.1//:schemars\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__strum-0.28.0//:strum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=agent-client-protocol-schema\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.7\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"agent_client_protocol_schema\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__derive_more-2.1.1//:derive_more\",\n \"@crates__schemars-1.2.1//:schemars\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__strum-0.28.0//:strum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=agent-client-protocol-schema\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.11.7\",\n)\n" + } + }, + "crates__ahash-0.8.12": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ahash/0.8.12/download" + ], + "strip_prefix": "ahash-0.8.12", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ahash\",\n deps = [\n \"@crates__ahash-0.8.12//:build_script_build\",\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__zerocopy-0.8.50//:zerocopy\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__once_cell-1.21.4//:once_cell\", # cfg(not(all(target_arch = \"arm\", target_os = \"none\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ahash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.12\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__version_check-0.9.5//:version_check\",\n ],\n edition = \"2018\",\n pkg_name = \"ahash\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ahash\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.8.12\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__aho-corasick-1.1.4": { @@ -3013,7 +3029,7 @@ "https://static.crates.io/crates/aho-corasick/1.1.4/download" ], "strip_prefix": "aho-corasick-1.1.4", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"aho_corasick\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"perf-literal\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=aho-corasick\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.4\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"aho_corasick\",\n deps = [\n \"@crates__memchr-2.8.1//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"perf-literal\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=aho-corasick\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.4\",\n)\n" } }, "crates__allocator-api2-0.2.21": { @@ -3157,7 +3173,7 @@ "https://static.crates.io/crates/arboard/3.6.1/download" ], "strip_prefix": "arboard-3.6.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"arboard\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__image-0.25.10//:image\", # aarch64-apple-darwin\n \"@crates__objc2-0.6.4//:objc2\", # cfg(target_os = \"macos\")\n \"@crates__objc2-app-kit-0.3.2//:objc2_app_kit\", # cfg(target_os = \"macos\")\n \"@crates__objc2-core-foundation-0.3.2//:objc2_core_foundation\", # aarch64-apple-darwin\n \"@crates__objc2-core-graphics-0.3.2//:objc2_core_graphics\", # aarch64-apple-darwin\n \"@crates__objc2-foundation-0.3.2//:objc2_foundation\", # cfg(target_os = \"macos\")\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__image-0.25.10//:image\", # aarch64-unknown-linux-gnu\n \"@crates__log-0.4.29//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__clipboard-win-5.4.1//:clipboard_win\", # cfg(windows)\n \"@crates__image-0.25.10//:image\", # x86_64-pc-windows-msvc\n \"@crates__log-0.4.29//:log\", # cfg(windows)\n \"@crates__windows-sys-0.60.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__image-0.25.10//:image\", # x86_64-unknown-linux-gnu\n \"@crates__log-0.4.29//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__image-0.25.10//:image\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__log-0.4.29//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"core-graphics\",\n \"default\",\n \"image\",\n \"image-data\",\n \"windows-sys\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=arboard\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.6.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"arboard\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__image-0.25.10//:image\", # aarch64-apple-darwin\n \"@crates__objc2-0.6.4//:objc2\", # cfg(target_os = \"macos\")\n \"@crates__objc2-app-kit-0.3.2//:objc2_app_kit\", # cfg(target_os = \"macos\")\n \"@crates__objc2-core-foundation-0.3.2//:objc2_core_foundation\", # aarch64-apple-darwin\n \"@crates__objc2-core-graphics-0.3.2//:objc2_core_graphics\", # aarch64-apple-darwin\n \"@crates__objc2-foundation-0.3.2//:objc2_foundation\", # cfg(target_os = \"macos\")\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__image-0.25.10//:image\", # aarch64-unknown-linux-gnu\n \"@crates__log-0.4.30//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__clipboard-win-5.4.1//:clipboard_win\", # cfg(windows)\n \"@crates__image-0.25.10//:image\", # x86_64-pc-windows-msvc\n \"@crates__log-0.4.30//:log\", # cfg(windows)\n \"@crates__windows-sys-0.60.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__image-0.25.10//:image\", # x86_64-unknown-linux-gnu\n \"@crates__log-0.4.30//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__image-0.25.10//:image\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__log-0.4.30//:log\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__parking_lot-0.12.5//:parking_lot\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n \"@crates__x11rb-0.13.2//:x11rb\", # cfg(all(unix, not(any(target_os = \"macos\", target_os = \"android\", target_os = \"emscripten\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"core-graphics\",\n \"default\",\n \"image\",\n \"image-data\",\n \"windows-sys\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=arboard\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.6.1\",\n)\n" } }, "crates__arc-swap-1.9.1": { @@ -3189,7 +3205,7 @@ "https://static.crates.io/crates/assert-json-diff/2.0.2/download" ], "strip_prefix": "assert-json-diff-2.0.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"assert_json_diff\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=assert-json-diff\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.2\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"assert_json_diff\",\n deps = [\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=assert-json-diff\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.2\",\n)\n" } }, "crates__async-stream-0.3.6": { @@ -3272,20 +3288,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"atomic_waker\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=atomic-waker\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.2\",\n)\n" } }, - "crates__autocfg-1.5.0": { + "crates__autocfg-1.5.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8", + "sha256": "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/autocfg/1.5.0/download" + "https://static.crates.io/crates/autocfg/1.5.1/download" ], - "strip_prefix": "autocfg-1.5.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"autocfg\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=autocfg\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.0\",\n)\n" + "strip_prefix": "autocfg-1.5.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"autocfg\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=autocfg\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.1\",\n)\n" } }, "crates__axum-0.7.9": { @@ -3301,7 +3317,7 @@ "https://static.crates.io/crates/axum/0.7.9/download" ], "strip_prefix": "axum-0.7.9", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum\",\n deps = [\n \"@crates__axum-core-0.4.5//:axum_core\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__matchit-0.7.3//:matchit\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__mime-0.3.17//:mime\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__tower-0.5.3//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.9\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum\",\n deps = [\n \"@crates__axum-core-0.4.5//:axum_core\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__matchit-0.7.3//:matchit\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__mime-0.3.17//:mime\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__tower-0.5.3//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.7.9\",\n)\n" } }, "crates__axum-core-0.4.5": { @@ -3317,7 +3333,7 @@ "https://static.crates.io/crates/axum-core/0.4.5/download" ], "strip_prefix": "axum-core-0.4.5", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum_core\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__mime-0.3.17//:mime\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.5\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"axum_core\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__mime-0.3.17//:mime\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=axum-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.5\",\n)\n" } }, "crates__base64-0.21.7": { @@ -3509,7 +3525,7 @@ "https://static.crates.io/crates/bitflags/1.3.2/download" ], "strip_prefix": "bitflags-1.3.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitflags\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitflags\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.2\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bitflags\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bitflags\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.2\",\n)\n" } }, "crates__bitflags-2.11.1": { @@ -3589,23 +3605,23 @@ "https://static.crates.io/crates/bstr/1.12.1/download" ], "strip_prefix": "bstr-1.12.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bstr\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n \"unicode\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bstr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.12.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bstr\",\n deps = [\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n \"unicode\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bstr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.12.1\",\n)\n" } }, - "crates__bumpalo-3.20.2": { + "crates__bumpalo-3.20.3": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb", + "sha256": "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/bumpalo/3.20.2/download" + "https://static.crates.io/crates/bumpalo/3.20.3/download" ], - "strip_prefix": "bumpalo-3.20.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bumpalo\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bumpalo\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.20.2\",\n)\n" + "strip_prefix": "bumpalo-3.20.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"bumpalo\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=bumpalo\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"3.20.3\",\n)\n" } }, "crates__bytemuck-1.25.0": { @@ -3704,20 +3720,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cbc\",\n deps = [\n \"@crates__cipher-0.4.4//:cipher\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"block-padding\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cbc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.2\",\n)\n" } }, - "crates__cc-1.2.62": { + "crates__cc-1.2.63": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98", + "sha256": "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/cc/1.2.62/download" + "https://static.crates.io/crates/cc/1.2.63/download" ], - "strip_prefix": "cc-1.2.62", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cc\",\n deps = [\n \"@crates__find-msvc-tools-0.1.9//:find_msvc_tools\",\n \"@crates__shlex-1.3.0//:shlex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.62\",\n)\n" + "strip_prefix": "cc-1.2.63", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"cc\",\n deps = [\n \"@crates__find-msvc-tools-0.1.9//:find_msvc_tools\",\n \"@crates__shlex-2.0.1//:shlex\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=cc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.63\",\n)\n" } }, "crates__cfg-if-1.0.4": { @@ -3797,7 +3813,7 @@ "https://static.crates.io/crates/chrono/0.4.44/download" ], "strip_prefix": "chrono-0.4.44", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"chrono\",\n deps = [\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__serde-1.0.228//:serde\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # wasm32-unknown-unknown\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-link-0.2.1//:windows_link\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"clock\",\n \"default\",\n \"iana-time-zone\",\n \"js-sys\",\n \"now\",\n \"oldtime\",\n \"serde\",\n \"std\",\n \"wasm-bindgen\",\n \"wasmbind\",\n \"winapi\",\n \"windows-link\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=chrono\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.44\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"chrono\",\n deps = [\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__serde-1.0.228//:serde\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # wasm32-unknown-unknown\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-link-0.2.1//:windows_link\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__iana-time-zone-0.1.65//:iana_time_zone\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"clock\",\n \"default\",\n \"iana-time-zone\",\n \"js-sys\",\n \"now\",\n \"oldtime\",\n \"serde\",\n \"std\",\n \"wasm-bindgen\",\n \"wasmbind\",\n \"winapi\",\n \"windows-link\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=chrono\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.44\",\n)\n" } }, "crates__cipher-0.4.4": { @@ -3912,20 +3928,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"colorchoice\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=colorchoice\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.5\",\n)\n" } }, - "crates__compact_str-0.9.0": { + "crates__compact_str-0.9.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a", + "sha256": "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/compact_str/0.9.0/download" + "https://static.crates.io/crates/compact_str/0.9.1/download" ], - "strip_prefix": "compact_str-0.9.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"compact_str\",\n deps = [\n \"@crates__castaway-0.2.4//:castaway\",\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__ryu-1.0.23//:ryu\",\n \"@crates__static_assertions-1.1.0//:static_assertions\",\n ],\n proc_macro_deps = [\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=compact_str\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.0\",\n)\n" + "strip_prefix": "compact_str-0.9.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"compact_str\",\n deps = [\n \"@crates__castaway-0.2.4//:castaway\",\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__ryu-1.0.23//:ryu\",\n \"@crates__static_assertions-1.1.0//:static_assertions\",\n ],\n proc_macro_deps = [\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=compact_str\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.1\",\n)\n" } }, "crates__const-oid-0.9.6": { @@ -4149,7 +4165,7 @@ "https://static.crates.io/crates/crossterm/0.28.1/download" ], "strip_prefix": "crossterm-0.28.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossterm\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__mio-1.2.0//:mio\", # aarch64-apple-darwin\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-apple-darwin\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # aarch64-unknown-linux-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__crossterm_winapi-0.9.1//:crossterm_winapi\", # x86_64-pc-windows-msvc\n \"@crates__winapi-0.3.9//:winapi\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # x86_64-unknown-linux-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bracketed-paste\",\n \"default\",\n \"events\",\n \"windows\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossterm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossterm\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__mio-1.2.1//:mio\", # aarch64-apple-darwin\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-apple-darwin\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # aarch64-unknown-linux-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__crossterm_winapi-0.9.1//:crossterm_winapi\", # x86_64-pc-windows-msvc\n \"@crates__winapi-0.3.9//:winapi\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # x86_64-unknown-linux-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__rustix-0.38.44//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bracketed-paste\",\n \"default\",\n \"events\",\n \"windows\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossterm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.1\",\n)\n" } }, "crates__crossterm-0.29.0": { @@ -4165,7 +4181,7 @@ "https://static.crates.io/crates/crossterm/0.29.0/download" ], "strip_prefix": "crossterm-0.29.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossterm\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__derive_more-2.1.1//:derive_more\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__mio-1.2.0//:mio\", # aarch64-apple-darwin\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-apple-darwin\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # aarch64-unknown-linux-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__crossterm_winapi-0.9.1//:crossterm_winapi\", # x86_64-pc-windows-msvc\n \"@crates__winapi-0.3.9//:winapi\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # x86_64-unknown-linux-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__mio-1.2.0//:mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__document-features-0.2.12//:document_features\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bracketed-paste\",\n \"default\",\n \"derive-more\",\n \"events\",\n \"windows\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossterm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.29.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crossterm\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__derive_more-2.1.1//:derive_more\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__mio-1.2.1//:mio\", # aarch64-apple-darwin\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-apple-darwin\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # aarch64-unknown-linux-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__crossterm_winapi-0.9.1//:crossterm_winapi\", # x86_64-pc-windows-msvc\n \"@crates__winapi-0.3.9//:winapi\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # x86_64-unknown-linux-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__mio-1.2.1//:mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__rustix-1.1.4//:rustix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-mio-0.2.5//:signal_hook_mio\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__document-features-0.2.12//:document_features\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bracketed-paste\",\n \"default\",\n \"derive-more\",\n \"events\",\n \"windows\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crossterm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.29.0\",\n)\n" } }, "crates__crossterm_winapi-0.9.1": { @@ -4213,7 +4229,7 @@ "https://static.crates.io/crates/crypto-common/0.1.7/download" ], "strip_prefix": "crypto-common-0.1.7", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crypto_common\",\n deps = [\n \"@crates__generic-array-0.14.7//:generic_array\",\n \"@crates__rand_core-0.6.4//:rand_core\",\n \"@crates__typenum-1.20.0//:typenum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"getrandom\",\n \"rand_core\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crypto-common\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.7\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"crypto_common\",\n deps = [\n \"@crates__generic-array-0.14.7//:generic_array\",\n \"@crates__rand_core-0.6.4//:rand_core\",\n \"@crates__typenum-1.20.1//:typenum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"getrandom\",\n \"rand_core\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=crypto-common\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.7\",\n)\n" } }, "crates__csscolorparser-0.6.2": { @@ -4536,20 +4552,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"dispatch2\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=dispatch2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.1\",\n)\n" } }, - "crates__displaydoc-0.2.5": { + "crates__displaydoc-0.2.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0", + "sha256": "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/displaydoc/0.2.5/download" + "https://static.crates.io/crates/displaydoc/0.2.6/download" ], - "strip_prefix": "displaydoc-0.2.5", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"displaydoc\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=displaydoc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n" + "strip_prefix": "displaydoc-0.2.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"displaydoc\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=displaydoc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.6\",\n)\n" } }, "crates__document-features-0.2.12": { @@ -4584,20 +4600,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"dyn_clone\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=dyn-clone\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.20\",\n)\n" } }, - "crates__either-1.15.0": { + "crates__either-1.16.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", + "sha256": "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/either/1.15.0/download" + "https://static.crates.io/crates/either/1.16.0/download" ], - "strip_prefix": "either-1.15.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"either\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n \"use_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=either\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.15.0\",\n)\n" + "strip_prefix": "either-1.16.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"either\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n \"use_std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=either\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.16.0\",\n)\n" } }, "crates__encoding_rs-0.8.35": { @@ -4712,6 +4728,38 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"eventsource_stream\",\n deps = [\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__nom-7.1.3//:nom\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=eventsource-stream\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.3\",\n)\n" } }, + "crates__fallible-iterator-0.3.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fallible-iterator/0.3.0/download" + ], + "strip_prefix": "fallible-iterator-0.3.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fallible_iterator\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fallible-iterator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.0\",\n)\n" + } + }, + "crates__fallible-streaming-iterator-0.1.9": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fallible-streaming-iterator/0.1.9/download" + ], + "strip_prefix": "fallible-streaming-iterator-0.1.9", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fallible_streaming_iterator\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fallible-streaming-iterator\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.9\",\n)\n" + } + }, "crates__fancy-regex-0.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -5096,6 +5144,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"form_urlencoded\",\n deps = [\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=form_urlencoded\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.2\",\n)\n" } }, + "crates__fsevent-sys-4.1.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fsevent-sys/4.1.0/download" + ], + "strip_prefix": "fsevent-sys-4.1.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"fsevent_sys\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=fsevent-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.1.0\",\n)\n" + } + }, "crates__futf-0.1.5": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -5253,7 +5317,7 @@ "https://static.crates.io/crates/futures-util/0.3.32/download" ], "strip_prefix": "futures-util-0.3.32", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_util\",\n deps = [\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-io-0.3.32//:futures_io\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__futures-task-0.3.32//:futures_task\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__slab-0.4.12//:slab\",\n ],\n proc_macro_deps = [\n \"@crates__futures-macro-0.3.32//:futures_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"async-await\",\n \"async-await-macro\",\n \"channel\",\n \"default\",\n \"futures-channel\",\n \"futures-io\",\n \"futures-macro\",\n \"futures-sink\",\n \"io\",\n \"memchr\",\n \"sink\",\n \"slab\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"futures_util\",\n deps = [\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-io-0.3.32//:futures_io\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__futures-task-0.3.32//:futures_task\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__slab-0.4.12//:slab\",\n ],\n proc_macro_deps = [\n \"@crates__futures-macro-0.3.32//:futures_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"async-await\",\n \"async-await-macro\",\n \"channel\",\n \"default\",\n \"futures-channel\",\n \"futures-io\",\n \"futures-macro\",\n \"futures-sink\",\n \"io\",\n \"memchr\",\n \"sink\",\n \"slab\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=futures-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.32\",\n)\n" } }, "crates__generic-array-0.14.7": { @@ -5269,7 +5333,7 @@ "https://static.crates.io/crates/generic-array/0.14.7/download" ], "strip_prefix": "generic-array-0.14.7", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"generic_array\",\n deps = [\n \"@crates__generic-array-0.14.7//:build_script_build\",\n \"@crates__typenum-1.20.0//:typenum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"more_lengths\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=generic-array\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.7\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"more_lengths\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__version_check-0.9.5//:version_check\",\n ],\n edition = \"2015\",\n pkg_name = \"generic-array\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=generic-array\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.14.7\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"generic_array\",\n deps = [\n \"@crates__generic-array-0.14.7//:build_script_build\",\n \"@crates__typenum-1.20.1//:typenum\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"more_lengths\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=generic-array\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.7\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"more_lengths\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__version_check-0.9.5//:version_check\",\n ],\n edition = \"2015\",\n pkg_name = \"generic-array\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=generic-array\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.14.7\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__gethostname-1.1.0": { @@ -5301,7 +5365,7 @@ "https://static.crates.io/crates/getrandom/0.2.17/download" ], "strip_prefix": "getrandom-0.2.17", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"getrandom\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # wasm32-unknown-unknown\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__wasi-0.11.1-wasi-snapshot-preview1//:wasi\", # cfg(target_os = \"wasi\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"js\", # wasm32-unknown-unknown\n \"js-sys\", # wasm32-unknown-unknown\n \"wasm-bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"js\", # wasm32-wasip1\n \"js-sys\", # wasm32-wasip1\n \"wasm-bindgen\", # wasm32-wasip1\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.17\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"getrandom\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # wasm32-unknown-unknown\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__wasi-0.11.1-wasi-snapshot-preview1//:wasi\", # cfg(target_os = \"wasi\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"js\", # wasm32-unknown-unknown\n \"js-sys\", # wasm32-unknown-unknown\n \"wasm-bindgen\", # wasm32-unknown-unknown\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"js\", # wasm32-wasip1\n \"js-sys\", # wasm32-wasip1\n \"wasm-bindgen\", # wasm32-wasip1\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=getrandom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.17\",\n)\n" } }, "crates__getrandom-0.3.4": { @@ -5381,7 +5445,7 @@ "https://static.crates.io/crates/globset/0.4.18/download" ], "strip_prefix": "globset-0.4.18", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"globset\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__bstr-1.12.1//:bstr\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"log\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=globset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.18\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"globset\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__bstr-1.12.1//:bstr\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"log\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=globset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.18\",\n)\n" } }, "crates__h2-0.4.14": { @@ -5397,7 +5461,7 @@ "https://static.crates.io/crates/h2/0.4.14/download" ], "strip_prefix": "h2-0.4.14", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"h2\",\n deps = [\n \"@crates__atomic-waker-1.1.2//:atomic_waker\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__fnv-1.0.7//:fnv\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__slab-0.4.12//:slab\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-util-0.7.18//:tokio_util\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=h2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"h2\",\n deps = [\n \"@crates__atomic-waker-1.1.2//:atomic_waker\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__fnv-1.0.7//:fnv\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__slab-0.4.12//:slab\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-util-0.7.18//:tokio_util\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=h2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" } }, "crates__half-2.7.1": { @@ -5413,7 +5477,7 @@ "https://static.crates.io/crates/half/2.7.1/download" ], "strip_prefix": "half-2.7.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"half\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__zerocopy-0.8.48//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=half\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.7.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"half\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__zerocopy-0.8.50//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=half\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.7.1\",\n)\n" } }, "crates__hashbrown-0.12.3": { @@ -5445,7 +5509,7 @@ "https://static.crates.io/crates/hashbrown/0.14.5/download" ], "strip_prefix": "hashbrown-0.14.5", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.5\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n deps = [\n \"@crates__ahash-0.8.12//:ahash\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"ahash\",\n \"inline-more\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.5\",\n)\n" } }, "crates__hashbrown-0.15.5": { @@ -5496,6 +5560,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashbrown\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashbrown\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.17.1\",\n)\n" } }, + "crates__hashlink-0.9.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashlink/0.9.1/download" + ], + "strip_prefix": "hashlink-0.9.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hashlink\",\n deps = [\n \"@crates__hashbrown-0.14.5//:hashbrown\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hashlink\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.1\",\n)\n" + } + }, "crates__heck-0.5.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -5605,23 +5685,23 @@ "https://static.crates.io/crates/html5ever/0.27.0/download" ], "strip_prefix": "html5ever-0.27.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"html5ever\",\n deps = [\n \"@crates__html5ever-0.27.0//:build_script_build\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__mac-0.1.1//:mac\",\n \"@crates__markup5ever-0.12.1//:markup5ever\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=html5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.27.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n edition = \"2021\",\n pkg_name = \"html5ever\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=html5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.27.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"html5ever\",\n deps = [\n \"@crates__html5ever-0.27.0//:build_script_build\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__mac-0.1.1//:mac\",\n \"@crates__markup5ever-0.12.1//:markup5ever\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=html5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.27.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n edition = \"2021\",\n pkg_name = \"html5ever\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=html5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.27.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__http-1.4.0": { + "crates__http-1.4.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a", + "sha256": "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/http/1.4.0/download" + "https://static.crates.io/crates/http/1.4.1/download" ], - "strip_prefix": "http-1.4.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__itoa-1.0.18//:itoa\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.0\",\n)\n" + "strip_prefix": "http-1.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__itoa-1.0.18//:itoa\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.4.1\",\n)\n" } }, "crates__http-body-1.0.1": { @@ -5637,7 +5717,7 @@ "https://static.crates.io/crates/http-body/1.0.1/download" ], "strip_prefix": "http-body-1.0.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-1.4.0//:http\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-1.4.1//:http\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.1\",\n)\n" } }, "crates__http-body-util-0.1.3": { @@ -5653,7 +5733,7 @@ "https://static.crates.io/crates/http-body-util/0.1.3/download" ], "strip_prefix": "http-body-util-0.1.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body_util\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"http_body_util\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=http-body-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.3\",\n)\n" } }, "crates__httparse-1.10.1": { @@ -5688,20 +5768,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"httpdate\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=httpdate\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.3\",\n)\n" } }, - "crates__hyper-1.9.0": { + "crates__hyper-1.10.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca", + "sha256": "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/hyper/1.9.0/download" + "https://static.crates.io/crates/hyper/1.10.1/download" ], - "strip_prefix": "hyper-1.9.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper\",\n deps = [\n \"@crates__atomic-waker-1.1.2//:atomic_waker\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__h2-0.4.14//:h2\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__httparse-1.10.1//:httparse\",\n \"@crates__httpdate-1.0.3//:httpdate\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__want-0.3.1//:want\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"default\",\n \"full\",\n \"http1\",\n \"http2\",\n \"server\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.9.0\",\n)\n" + "strip_prefix": "hyper-1.10.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper\",\n deps = [\n \"@crates__atomic-waker-1.1.2//:atomic_waker\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__h2-0.4.14//:h2\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__httparse-1.10.1//:httparse\",\n \"@crates__httpdate-1.0.3//:httpdate\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__want-0.3.1//:want\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"default\",\n \"full\",\n \"http1\",\n \"http2\",\n \"server\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.10.1\",\n)\n" } }, "crates__hyper-rustls-0.27.9": { @@ -5717,7 +5797,7 @@ "https://static.crates.io/crates/hyper-rustls/0.27.9/download" ], "strip_prefix": "hyper-rustls-0.27.9", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_rustls\",\n deps = [\n \"@crates__http-1.4.0//:http\",\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__rustls-0.23.40//:rustls\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-rustls-0.26.4//:tokio_rustls\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-rustls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.27.9\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_rustls\",\n deps = [\n \"@crates__http-1.4.1//:http\",\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__rustls-0.23.40//:rustls\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-rustls-0.26.4//:tokio_rustls\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-rustls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.27.9\",\n)\n" } }, "crates__hyper-timeout-0.5.2": { @@ -5733,7 +5813,7 @@ "https://static.crates.io/crates/hyper-timeout/0.5.2/download" ], "strip_prefix": "hyper-timeout-0.5.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_timeout\",\n deps = [\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-timeout\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_timeout\",\n deps = [\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-timeout\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" } }, "crates__hyper-tls-0.6.0": { @@ -5749,7 +5829,7 @@ "https://static.crates.io/crates/hyper-tls/0.6.0/download" ], "strip_prefix": "hyper-tls-0.6.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_tls\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__native-tls-0.2.18//:native_tls\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_tls\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__native-tls-0.2.18//:native_tls\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.0\",\n)\n" } }, "crates__hyper-util-0.1.20": { @@ -5765,7 +5845,7 @@ "https://static.crates.io/crates/hyper-util/0.1.20/download" ], "strip_prefix": "hyper-util-0.1.20", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_util\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__socket2-0.6.3//:socket2\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__tracing-0.1.44//:tracing\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__base64-0.22.1//:base64\", # aarch64-apple-darwin\n \"@crates__ipnet-2.12.0//:ipnet\", # aarch64-apple-darwin\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # aarch64-apple-darwin\n \"@crates__system-configuration-0.7.0//:system_configuration\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # aarch64-unknown-linux-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # aarch64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__base64-0.22.1//:base64\", # wasm32-wasip1\n \"@crates__ipnet-2.12.0//:ipnet\", # wasm32-wasip1\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-pc-windows-msvc\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-pc-windows-msvc\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-pc-windows-msvc\n \"@crates__windows-registry-0.6.1//:windows_registry\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-unknown-linux-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"client-legacy\",\n \"default\",\n \"http1\",\n \"http2\",\n \"server\",\n \"server-auto\",\n \"service\",\n \"tokio\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"client-proxy\", # aarch64-apple-darwin\n \"client-proxy-system\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"client-proxy\", # aarch64-unknown-linux-gnu\n \"client-proxy-system\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"client-proxy\", # wasm32-wasip1\n \"client-proxy-system\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"client-proxy\", # x86_64-pc-windows-msvc\n \"client-proxy-system\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"client-proxy\", # x86_64-unknown-linux-gnu\n \"client-proxy-system\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"client-proxy\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"client-proxy-system\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.20\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"hyper_util\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__socket2-0.6.4//:socket2\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__tracing-0.1.44//:tracing\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__base64-0.22.1//:base64\", # aarch64-apple-darwin\n \"@crates__ipnet-2.12.0//:ipnet\", # aarch64-apple-darwin\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # aarch64-apple-darwin\n \"@crates__system-configuration-0.7.0//:system_configuration\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # aarch64-unknown-linux-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # aarch64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__base64-0.22.1//:base64\", # wasm32-wasip1\n \"@crates__ipnet-2.12.0//:ipnet\", # wasm32-wasip1\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-pc-windows-msvc\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-pc-windows-msvc\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-pc-windows-msvc\n \"@crates__windows-registry-0.6.1//:windows_registry\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-unknown-linux-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__base64-0.22.1//:base64\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__ipnet-2.12.0//:ipnet\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"client\",\n \"client-legacy\",\n \"default\",\n \"http1\",\n \"http2\",\n \"server\",\n \"server-auto\",\n \"service\",\n \"tokio\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"client-proxy\", # aarch64-apple-darwin\n \"client-proxy-system\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"client-proxy\", # aarch64-unknown-linux-gnu\n \"client-proxy-system\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"client-proxy\", # wasm32-wasip1\n \"client-proxy-system\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"client-proxy\", # x86_64-pc-windows-msvc\n \"client-proxy-system\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"client-proxy\", # x86_64-unknown-linux-gnu\n \"client-proxy-system\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"client-proxy\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"client-proxy-system\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=hyper-util\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.20\",\n)\n" } }, "crates__i18n-config-0.4.8": { @@ -5781,7 +5861,7 @@ "https://static.crates.io/crates/i18n-config/0.4.8/download" ], "strip_prefix": "i18n-config-0.4.8", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"i18n_config\",\n deps = [\n \"@crates__basic-toml-0.1.10//:basic_toml\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__unic-langid-0.9.6//:unic_langid\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=i18n-config\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.8\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"i18n_config\",\n deps = [\n \"@crates__basic-toml-0.1.10//:basic_toml\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__unic-langid-0.9.6//:unic_langid\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=i18n-config\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.8\",\n)\n" } }, "crates__i18n-embed-0.14.1": { @@ -5797,7 +5877,7 @@ "https://static.crates.io/crates/i18n-embed/0.14.1/download" ], "strip_prefix": "i18n-embed-0.14.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"i18n_embed\",\n deps = [\n \"@crates__arc-swap-1.9.1//:arc_swap\",\n \"@crates__fluent-0.16.1//:fluent\",\n \"@crates__fluent-langneg-0.13.1//:fluent_langneg\",\n \"@crates__fluent-syntax-0.11.1//:fluent_syntax\",\n \"@crates__intl-memoizer-0.5.3//:intl_memoizer\",\n \"@crates__lazy_static-1.5.0//:lazy_static\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n \"@crates__rust-embed-8.11.0//:rust_embed\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__unic-langid-0.9.6//:unic_langid\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__i18n-embed-impl-0.8.4//:i18n_embed_impl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"arc-swap\",\n \"default\",\n \"fluent\",\n \"fluent-syntax\",\n \"fluent-system\",\n \"i18n-embed-impl\",\n \"parking_lot\",\n \"rust-embed\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"filesystem-assets\", # aarch64-apple-darwin\n \"walkdir\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"filesystem-assets\", # aarch64-unknown-linux-gnu\n \"walkdir\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"filesystem-assets\", # x86_64-pc-windows-msvc\n \"walkdir\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"filesystem-assets\", # x86_64-unknown-linux-gnu\n \"walkdir\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"filesystem-assets\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"walkdir\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=i18n-embed\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"i18n_embed\",\n deps = [\n \"@crates__arc-swap-1.9.1//:arc_swap\",\n \"@crates__fluent-0.16.1//:fluent\",\n \"@crates__fluent-langneg-0.13.1//:fluent_langneg\",\n \"@crates__fluent-syntax-0.11.1//:fluent_syntax\",\n \"@crates__intl-memoizer-0.5.3//:intl_memoizer\",\n \"@crates__lazy_static-1.5.0//:lazy_static\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n \"@crates__rust-embed-8.11.0//:rust_embed\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__unic-langid-0.9.6//:unic_langid\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__walkdir-2.5.0//:walkdir\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__i18n-embed-impl-0.8.4//:i18n_embed_impl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"arc-swap\",\n \"default\",\n \"fluent\",\n \"fluent-syntax\",\n \"fluent-system\",\n \"i18n-embed-impl\",\n \"parking_lot\",\n \"rust-embed\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"filesystem-assets\", # aarch64-apple-darwin\n \"walkdir\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"filesystem-assets\", # aarch64-unknown-linux-gnu\n \"walkdir\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"filesystem-assets\", # x86_64-pc-windows-msvc\n \"walkdir\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"filesystem-assets\", # x86_64-unknown-linux-gnu\n \"walkdir\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"filesystem-assets\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"walkdir\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=i18n-embed\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.1\",\n)\n" } }, "crates__i18n-embed-fl-0.7.0": { @@ -5845,7 +5925,7 @@ "https://static.crates.io/crates/iana-time-zone/0.1.65/download" ], "strip_prefix": "iana-time-zone-0.1.65", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iana_time_zone\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__core-foundation-sys-0.8.7//:core_foundation_sys\", # cfg(target_vendor = \"apple\")\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n \"@crates__log-0.4.29//:log\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-core-0.62.2//:windows_core\", # cfg(target_os = \"windows\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"fallback\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.65\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iana_time_zone\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__core-foundation-sys-0.8.7//:core_foundation_sys\", # cfg(target_vendor = \"apple\")\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n \"@crates__log-0.4.30//:log\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-core-0.62.2//:windows_core\", # cfg(target_os = \"windows\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"fallback\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.65\",\n)\n" } }, "crates__iana-time-zone-haiku-0.1.2": { @@ -5861,7 +5941,7 @@ "https://static.crates.io/crates/iana-time-zone-haiku/0.1.2/download" ], "strip_prefix": "iana-time-zone-haiku-0.1.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iana_time_zone_haiku\",\n deps = [\n \"@crates__iana-time-zone-haiku-0.1.2//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone-haiku\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.62//:cc\",\n ],\n edition = \"2018\",\n pkg_name = \"iana-time-zone-haiku\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone-haiku\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.1.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"iana_time_zone_haiku\",\n deps = [\n \"@crates__iana-time-zone-haiku-0.1.2//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone-haiku\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.63//:cc\",\n ],\n edition = \"2018\",\n pkg_name = \"iana-time-zone-haiku\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=iana-time-zone-haiku\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.1.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__icu_collections-2.2.0": { @@ -5877,7 +5957,7 @@ "https://static.crates.io/crates/icu_collections/2.2.0/download" ], "strip_prefix": "icu_collections-2.2.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_collections\",\n deps = [\n \"@crates__potential_utf-0.1.5//:potential_utf\",\n \"@crates__utf8_iter-1.0.4//:utf8_iter\",\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_collections\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_collections\",\n deps = [\n \"@crates__potential_utf-0.1.5//:potential_utf\",\n \"@crates__utf8_iter-1.0.4//:utf8_iter\",\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.6//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_collections\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" } }, "crates__icu_locale_core-2.2.0": { @@ -5893,7 +5973,7 @@ "https://static.crates.io/crates/icu_locale_core/2.2.0/download" ], "strip_prefix": "icu_locale_core-2.2.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_locale_core\",\n deps = [\n \"@crates__litemap-0.8.2//:litemap\",\n \"@crates__tinystr-0.8.3//:tinystr\",\n \"@crates__writeable-0.6.3//:writeable\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"zerovec\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_locale_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_locale_core\",\n deps = [\n \"@crates__litemap-0.8.2//:litemap\",\n \"@crates__tinystr-0.8.3//:tinystr\",\n \"@crates__writeable-0.6.3//:writeable\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.6//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"zerovec\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_locale_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" } }, "crates__icu_normalizer-2.2.0": { @@ -5973,7 +6053,7 @@ "https://static.crates.io/crates/icu_provider/2.2.0/download" ], "strip_prefix": "icu_provider-2.2.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_provider\",\n deps = [\n \"@crates__icu_locale_core-2.2.0//:icu_locale_core\",\n \"@crates__writeable-0.6.3//:writeable\",\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n \"@crates__zerotrie-0.2.4//:zerotrie\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"baked\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_provider\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"icu_provider\",\n deps = [\n \"@crates__icu_locale_core-2.2.0//:icu_locale_core\",\n \"@crates__writeable-0.6.3//:writeable\",\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n \"@crates__zerotrie-0.2.4//:zerotrie\",\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.6//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"baked\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=icu_provider\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.2.0\",\n)\n" } }, "crates__id-arena-2.3.0": { @@ -6053,7 +6133,7 @@ "https://static.crates.io/crates/ignore/0.4.25/download" ], "strip_prefix": "ignore-0.4.25", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ignore\",\n deps = [\n \"@crates__crossbeam-deque-0.8.6//:crossbeam_deque\",\n \"@crates__globset-0.4.18//:globset\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__same-file-1.0.6//:same_file\",\n \"@crates__walkdir-2.5.0//:walkdir\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__winapi-util-0.1.11//:winapi_util\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ignore\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.25\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ignore\",\n deps = [\n \"@crates__crossbeam-deque-0.8.6//:crossbeam_deque\",\n \"@crates__globset-0.4.18//:globset\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__same-file-1.0.6//:same_file\",\n \"@crates__walkdir-2.5.0//:walkdir\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__winapi-util-0.1.11//:winapi_util\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ignore\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.25\",\n)\n" } }, "crates__image-0.25.10": { @@ -6117,7 +6197,7 @@ "https://static.crates.io/crates/indexmap/1.9.3/download" ], "strip_prefix": "indexmap-1.9.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indexmap\",\n deps = [\n \"@crates__hashbrown-0.12.3//:hashbrown\",\n \"@crates__indexmap-1.9.3//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.9.3\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.0//:autocfg\",\n ],\n edition = \"2021\",\n pkg_name = \"indexmap\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.9.3\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"indexmap\",\n deps = [\n \"@crates__hashbrown-0.12.3//:hashbrown\",\n \"@crates__indexmap-1.9.3//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.9.3\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.1//:autocfg\",\n ],\n edition = \"2021\",\n pkg_name = \"indexmap\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indexmap\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.9.3\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__indexmap-2.14.0": { @@ -6152,6 +6232,38 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"indoc\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=indoc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.7\",\n)\n" } }, + "crates__inotify-0.9.6": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/inotify/0.9.6/download" + ], + "strip_prefix": "inotify-0.9.6", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"inotify\",\n deps = [\n \"@crates__bitflags-1.3.2//:bitflags\",\n \"@crates__inotify-sys-0.1.5//:inotify_sys\",\n \"@crates__libc-0.2.186//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=inotify\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.6\",\n)\n" + } + }, + "crates__inotify-sys-0.1.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/inotify-sys/0.1.5/download" + ], + "strip_prefix": "inotify-sys-0.1.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"inotify_sys\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=inotify-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.5\",\n)\n" + } + }, "crates__inout-0.1.4": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -6277,7 +6389,7 @@ "https://static.crates.io/crates/itertools/0.14.0/download" ], "strip_prefix": "itertools-0.14.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crates__either-1.15.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"use_alloc\",\n \"use_std\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"default\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"default\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"default\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itertools\",\n deps = [\n \"@crates__either-1.16.0//:either\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"use_alloc\",\n \"use_std\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"default\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"default\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"default\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itertools\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.14.0\",\n)\n" } }, "crates__itoa-1.0.18": { @@ -6296,20 +6408,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"itoa\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=itoa\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.18\",\n)\n" } }, - "crates__js-sys-0.3.98": { + "crates__js-sys-0.3.99": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08", + "sha256": "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/js-sys/0.3.98/download" + "https://static.crates.io/crates/js-sys/0.3.99/download" ], - "strip_prefix": "js-sys-0.3.98", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"js_sys\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n \"unsafe-eval\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=js-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.98\",\n)\n" + "strip_prefix": "js-sys-0.3.99", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"js_sys\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n \"unsafe-eval\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=js-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.99\",\n)\n" } }, "crates__kasuari-0.4.12": { @@ -6328,6 +6440,38 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"kasuari\",\n deps = [\n \"@crates__hashbrown-0.16.1//:hashbrown\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=kasuari\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.12\",\n)\n" } }, + "crates__kqueue-1.1.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/kqueue/1.1.1/download" + ], + "strip_prefix": "kqueue-1.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"kqueue\",\n deps = [\n \"@crates__kqueue-sys-1.1.2//:kqueue_sys\",\n \"@crates__libc-0.2.186//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=kqueue\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.1\",\n)\n" + } + }, + "crates__kqueue-sys-1.1.2": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/kqueue-sys/1.1.2/download" + ], + "strip_prefix": "kqueue-sys-1.1.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"kqueue_sys\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__libc-0.2.186//:libc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=kqueue-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.2\",\n)\n" + } + }, "crates__lab-0.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -6424,20 +6568,36 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libm\",\n deps = [\n \"@crates__libm-0.2.16//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"arch\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.16\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"arch\",\n \"default\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"libm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.16\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__libredox-0.1.16": { + "crates__libredox-0.1.17": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libredox/0.1.17/download" + ], + "strip_prefix": "libredox-0.1.17", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libredox\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libredox\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.17\",\n)\n" + } + }, + "crates__libsqlite3-sys-0.30.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c", + "sha256": "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/libredox/0.1.16/download" + "https://static.crates.io/crates/libsqlite3-sys/0.30.1/download" ], - "strip_prefix": "libredox-0.1.16", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libredox\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libredox\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.16\",\n)\n" + "strip_prefix": "libsqlite3-sys-0.30.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"libsqlite3_sys\",\n deps = [\n \"@crates__libsqlite3-sys-0.30.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bundled\",\n \"bundled_bindings\",\n \"cc\",\n \"default\",\n \"min_sqlite_version_3_14_0\",\n \"pkg-config\",\n \"vcpkg\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libsqlite3-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.30.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bundled\",\n \"bundled_bindings\",\n \"cc\",\n \"default\",\n \"min_sqlite_version_3_14_0\",\n \"pkg-config\",\n \"vcpkg\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.63//:cc\",\n \"@crates__pkg-config-0.3.33//:pkg_config\",\n \"@crates__vcpkg-0.2.15//:vcpkg\",\n ],\n edition = \"2021\",\n links = \"sqlite3\",\n pkg_name = \"libsqlite3-sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=libsqlite3-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.30.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__line-clipping-0.3.7": { @@ -6552,20 +6712,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lock_api\",\n deps = [\n \"@crates__scopeguard-1.2.0//:scopeguard\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"atomic_usize\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lock_api\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" } }, - "crates__log-0.4.29": { + "crates__log-0.4.30": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897", + "sha256": "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/log/0.4.29/download" + "https://static.crates.io/crates/log/0.4.30/download" ], - "strip_prefix": "log-0.4.29", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"log\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.29\",\n)\n" + "strip_prefix": "log-0.4.30", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"log\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.30\",\n)\n" } }, "crates__lopdf-0.34.0": { @@ -6581,7 +6741,7 @@ "https://static.crates.io/crates/lopdf/0.34.0/download" ], "strip_prefix": "lopdf-0.34.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lopdf\",\n deps = [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\",\n \"@crates__flate2-1.1.9//:flate2\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__md-5-0.10.6//:md5\",\n \"@crates__nom-7.1.3//:nom\",\n \"@crates__rangemap-1.7.1//:rangemap\",\n \"@crates__time-0.3.47//:time\",\n \"@crates__weezl-0.1.12//:weezl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"nom\",\n \"nom_parser\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lopdf\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.34.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"lopdf\",\n deps = [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\",\n \"@crates__flate2-1.1.9//:flate2\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__md-5-0.10.6//:md5\",\n \"@crates__nom-7.1.3//:nom\",\n \"@crates__rangemap-1.7.1//:rangemap\",\n \"@crates__time-0.3.47//:time\",\n \"@crates__weezl-0.1.12//:weezl\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"nom\",\n \"nom_parser\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=lopdf\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.34.0\",\n)\n" } }, "crates__lru-0.16.4": { @@ -6645,7 +6805,7 @@ "https://static.crates.io/crates/markup5ever/0.12.1/download" ], "strip_prefix": "markup5ever-0.12.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"markup5ever\",\n deps = [\n \"@crates__log-0.4.29//:log\",\n \"@crates__markup5ever-0.12.1//:build_script_build\",\n \"@crates__phf-0.11.3//:phf\",\n \"@crates__string_cache-0.8.9//:string_cache\",\n \"@crates__tendril-0.4.3//:tendril\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=markup5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__phf_codegen-0.11.3//:phf_codegen\",\n \"@crates__string_cache_codegen-0.5.4//:string_cache_codegen\",\n ],\n edition = \"2021\",\n pkg_name = \"markup5ever\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=markup5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.12.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"markup5ever\",\n deps = [\n \"@crates__log-0.4.30//:log\",\n \"@crates__markup5ever-0.12.1//:build_script_build\",\n \"@crates__phf-0.11.3//:phf\",\n \"@crates__string_cache-0.8.9//:string_cache\",\n \"@crates__tendril-0.4.3//:tendril\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=markup5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__phf_codegen-0.11.3//:phf_codegen\",\n \"@crates__string_cache_codegen-0.5.4//:string_cache_codegen\",\n ],\n edition = \"2021\",\n pkg_name = \"markup5ever\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=markup5ever\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.12.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__matchers-0.2.0": { @@ -6696,20 +6856,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"md5\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__digest-0.10.7//:digest\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=md-5\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.10.6\",\n)\n" } }, - "crates__memchr-2.8.0": { + "crates__memchr-2.8.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", + "sha256": "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/memchr/2.8.0/download" + "https://static.crates.io/crates/memchr/2.8.1/download" ], - "strip_prefix": "memchr-2.8.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.0\",\n)\n" + "strip_prefix": "memchr-2.8.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memchr\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memchr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.1\",\n)\n" } }, "crates__memmem-0.1.1": { @@ -6757,7 +6917,7 @@ "https://static.crates.io/crates/memoffset/0.9.1/download" ], "strip_prefix": "memoffset-0.9.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memoffset\",\n deps = [\n \"@crates__memoffset-0.9.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memoffset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.0//:autocfg\",\n ],\n edition = \"2015\",\n pkg_name = \"memoffset\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memoffset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.9.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"memoffset\",\n deps = [\n \"@crates__memoffset-0.9.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memoffset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.1//:autocfg\",\n ],\n edition = \"2015\",\n pkg_name = \"memoffset\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=memoffset\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.9.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__mime-0.3.17": { @@ -6776,20 +6936,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mime\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mime\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.17\",\n)\n" } }, - "crates__minijinja-2.19.0": { + "crates__minijinja-2.20.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "805bfd7352166bae857ee569628b52bcd85a1cecf7810861ebceb1686b72b75d", + "sha256": "2929e494b2280e1e18959bb2e121da03347ae896896fdfaceaab43c88a02803f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/minijinja/2.19.0/download" + "https://static.crates.io/crates/minijinja/2.20.0/download" ], - "strip_prefix": "minijinja-2.19.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"minijinja\",\n deps = [\n \"@crates__memo-map-0.3.3//:memo_map\",\n \"@crates__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"adjacent_loop_items\",\n \"builtins\",\n \"debug\",\n \"default\",\n \"deserialization\",\n \"loader\",\n \"macros\",\n \"multi_template\",\n \"serde\",\n \"std_collections\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=minijinja\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.19.0\",\n)\n" + "strip_prefix": "minijinja-2.20.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"minijinja\",\n deps = [\n \"@crates__memo-map-0.3.3//:memo_map\",\n \"@crates__serde-1.0.228//:serde\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"adjacent_loop_items\",\n \"builtins\",\n \"debug\",\n \"default\",\n \"deserialization\",\n \"loader\",\n \"macros\",\n \"multi_template\",\n \"serde\",\n \"std_collections\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=minijinja\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.20.0\",\n)\n" } }, "crates__minimal-lexical-0.2.1": { @@ -6824,20 +6984,36 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"miniz_oxide\",\n deps = [\n \"@crates__adler2-2.0.1//:adler2\",\n \"@crates__simd-adler32-0.3.9//:simd_adler32\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"simd\",\n \"simd-adler32\",\n \"with-alloc\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=miniz_oxide\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.9\",\n)\n" } }, - "crates__mio-1.2.0": { + "crates__mio-0.8.11": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1", + "sha256": "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/mio/1.2.0/download" + "https://static.crates.io/crates/mio/0.8.11/download" ], - "strip_prefix": "mio-1.2.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mio\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.29//:log\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.29//:log\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__wasi-0.11.1-wasi-snapshot-preview1//:wasi\", # cfg(target_os = \"wasi\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.29//:log\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.29//:log\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"net\",\n \"os-ext\",\n \"os-poll\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"default\", # aarch64-apple-darwin\n \"log\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"default\", # aarch64-unknown-linux-gnu\n \"log\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n \"log\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"log\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.0\",\n)\n" + "strip_prefix": "mio-0.8.11", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mio\",\n deps = [\n \"@crates__log-0.4.30//:log\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(target_os = \"wasi\")\n \"@crates__wasi-0.11.1-wasi-snapshot-preview1//:wasi\", # cfg(target_os = \"wasi\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.48.0//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"log\",\n \"os-ext\",\n \"os-poll\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.11\",\n)\n" + } + }, + "crates__mio-1.2.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/mio/1.2.1/download" + ], + "strip_prefix": "mio-1.2.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"mio\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.30//:log\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.30//:log\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__wasi-0.11.1-wasi-snapshot-preview1//:wasi\", # cfg(target_os = \"wasi\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.30//:log\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"hermit\", target_os = \"wasi\"))\n \"@crates__log-0.4.30//:log\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"net\",\n \"os-ext\",\n \"os-poll\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"default\", # aarch64-apple-darwin\n \"log\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"default\", # aarch64-unknown-linux-gnu\n \"log\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu\n \"log\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"default\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"log\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.1\",\n)\n" } }, "crates__moxcms-0.8.1": { @@ -6869,7 +7045,7 @@ "https://static.crates.io/crates/native-tls/0.2.18/download" ], "strip_prefix": "native-tls-0.2.18", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"native_tls\",\n deps = [\n \"@crates__native-tls-0.2.18//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(target_vendor = \"apple\")\n \"@crates__security-framework-3.7.0//:security_framework\", # cfg(target_vendor = \"apple\")\n \"@crates__security-framework-sys-2.17.0//:security_framework_sys\", # cfg(target_vendor = \"apple\")\n \"@crates__tempfile-3.27.0//:tempfile\", # cfg(target_os = \"macos\")\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__log-0.4.29//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__log-0.4.29//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__log-0.4.29//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__schannel-0.1.29//:schannel\", # cfg(target_os = \"windows\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__log-0.4.29//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__log-0.4.29//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=native-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.18\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n \"default\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"//conditions:default\": [],\n }),\n edition = \"2021\",\n pkg_name = \"native-tls\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=native-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.18\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"native_tls\",\n deps = [\n \"@crates__native-tls-0.2.18//:build_script_build\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(target_vendor = \"apple\")\n \"@crates__security-framework-3.7.0//:security_framework\", # cfg(target_vendor = \"apple\")\n \"@crates__security-framework-sys-2.17.0//:security_framework_sys\", # cfg(target_vendor = \"apple\")\n \"@crates__tempfile-3.27.0//:tempfile\", # cfg(target_os = \"macos\")\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__log-0.4.30//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__log-0.4.30//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__log-0.4.30//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__schannel-0.1.29//:schannel\", # cfg(target_os = \"windows\")\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__log-0.4.30//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__log-0.4.30//:log\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-0.10.80//:openssl\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-probe-0.2.1//:openssl_probe\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=native-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.18\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alpn\",\n \"default\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = select({\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__openssl-sys-0.9.116//:openssl_sys\", # cfg(not(any(target_os = \"windows\", target_vendor = \"apple\")))\n ],\n \"//conditions:default\": [],\n }),\n edition = \"2021\",\n pkg_name = \"native-tls\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=native-tls\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.18\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__new_debug_unreachable-1.0.6": { @@ -6933,7 +7109,7 @@ "https://static.crates.io/crates/nom/7.1.3/download" ], "strip_prefix": "nom-7.1.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nom\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__minimal-lexical-0.2.1//:minimal_lexical\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"7.1.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"nom\",\n deps = [\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__minimal-lexical-0.2.1//:minimal_lexical\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=nom\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"7.1.3\",\n)\n" } }, "crates__normpath-1.5.1": { @@ -6952,6 +7128,38 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"normpath\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=normpath\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.5.1\",\n)\n" } }, + "crates__notify-6.1.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/notify/6.1.1/download" + ], + "strip_prefix": "notify-6.1.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"notify\",\n deps = [\n \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n \"@crates__filetime-0.2.29//:filetime\",\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__walkdir-2.5.0//:walkdir\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__bitflags-2.11.1//:bitflags\", # cfg(target_os = \"macos\")\n \"@crates__fsevent-sys-4.1.0//:fsevent_sys\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__inotify-0.9.6//:inotify\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n \"@crates__mio-0.8.11//:mio\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.48.0//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__inotify-0.9.6//:inotify\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n \"@crates__mio-0.8.11//:mio\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__inotify-0.9.6//:inotify\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n \"@crates__mio-0.8.11//:mio\", # cfg(any(target_os = \"linux\", target_os = \"android\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"crossbeam-channel\",\n \"default\",\n \"fsevent-sys\",\n \"macos_fsevent\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=notify\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"6.1.1\",\n)\n" + } + }, + "crates__notify-debouncer-mini-0.4.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "5d40b221972a1fc5ef4d858a2f671fb34c75983eb385463dff3780eeff6a9d43", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/notify-debouncer-mini/0.4.1/download" + ], + "strip_prefix": "notify-debouncer-mini-0.4.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"notify_debouncer_mini\",\n deps = [\n \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__notify-6.1.1//:notify\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"crossbeam\",\n \"crossbeam-channel\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=notify-debouncer-mini\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.1\",\n)\n" + } + }, "crates__nu-ansi-term-0.50.3": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -7061,7 +7269,7 @@ "https://static.crates.io/crates/num-traits/0.2.19/download" ], "strip_prefix": "num-traits-0.2.19", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"num_traits\",\n deps = [\n \"@crates__libm-0.2.16//:libm\",\n \"@crates__num-traits-0.2.19//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"i128\",\n \"libm\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=num-traits\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.19\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"i128\",\n \"libm\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.0//:autocfg\",\n ],\n edition = \"2021\",\n pkg_name = \"num-traits\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=num-traits\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.19\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"num_traits\",\n deps = [\n \"@crates__libm-0.2.16//:libm\",\n \"@crates__num-traits-0.2.19//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"i128\",\n \"libm\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=num-traits\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.19\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"i128\",\n \"libm\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__autocfg-1.5.1//:autocfg\",\n ],\n edition = \"2021\",\n pkg_name = \"num-traits\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=num-traits\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.19\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__num_cpus-1.17.0": { @@ -7109,7 +7317,7 @@ "https://static.crates.io/crates/oauth2/5.0.0/download" ], "strip_prefix": "oauth2-5.0.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oauth2\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__chrono-0.4.44//:chrono\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__rand-0.8.6//:rand\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__serde_path_to_error-0.1.20//:serde_path_to_error\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__getrandom-0.2.17//:getrandom\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__getrandom-0.2.17//:getrandom\", # cfg(target_arch = \"wasm32\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oauth2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.0.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"oauth2\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__chrono-0.4.44//:chrono\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__rand-0.8.6//:rand\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__serde_path_to_error-0.1.20//:serde_path_to_error\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__getrandom-0.2.17//:getrandom\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__getrandom-0.2.17//:getrandom\", # cfg(target_arch = \"wasm32\")\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=oauth2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.0.0\",\n)\n" } }, "crates__objc2-0.6.4": { @@ -7285,7 +7493,7 @@ "https://static.crates.io/crates/onig_sys/69.9.3/download" ], "strip_prefix": "onig_sys-69.9.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"onig_sys\",\n deps = [\n \"@crates__onig_sys-69.9.3//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=onig_sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"69.9.3\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.62//:cc\",\n \"@crates__pkg-config-0.3.33//:pkg_config\",\n ],\n edition = \"2021\",\n links = \"onig\",\n pkg_name = \"onig_sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=onig_sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"69.9.3\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"onig_sys\",\n deps = [\n \"@crates__onig_sys-69.9.3//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=onig_sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"69.9.3\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.63//:cc\",\n \"@crates__pkg-config-0.3.33//:pkg_config\",\n ],\n edition = \"2021\",\n links = \"onig\",\n pkg_name = \"onig_sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=onig_sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"69.9.3\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__opaque-debug-0.3.1": { @@ -7381,7 +7589,7 @@ "https://static.crates.io/crates/openssl-sys/0.9.116/download" ], "strip_prefix": "openssl-sys-0.9.116", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"openssl_sys\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__openssl-sys-0.9.116//:build_script_main\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=openssl-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.116\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_main\",\n crate_root = \"build/main.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.62//:cc\",\n \"@crates__pkg-config-0.3.33//:pkg_config\",\n \"@crates__vcpkg-0.2.15//:vcpkg\",\n ],\n edition = \"2021\",\n links = \"openssl\",\n pkg_name = \"openssl-sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=openssl-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.9.116\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_main\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"openssl_sys\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__openssl-sys-0.9.116//:build_script_main\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=openssl-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.116\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_main\",\n crate_root = \"build/main.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.63//:cc\",\n \"@crates__pkg-config-0.3.33//:pkg_config\",\n \"@crates__vcpkg-0.2.15//:vcpkg\",\n ],\n edition = \"2021\",\n links = \"openssl\",\n pkg_name = \"openssl-sys\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=openssl-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.9.116\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_main\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__opentelemetry-0.28.0": { @@ -7397,7 +7605,7 @@ "https://static.crates.io/crates/opentelemetry/0.28.0/download" ], "strip_prefix": "opentelemetry-0.28.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry\",\n deps = [\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tracing-0.1.44//:tracing\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"futures-core\",\n \"futures-sink\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"pin-project-lite\",\n \"thiserror\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry\",\n deps = [\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-sink-0.3.32//:futures_sink\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tracing-0.1.44//:tracing\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"futures-core\",\n \"futures-sink\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"pin-project-lite\",\n \"thiserror\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" } }, "crates__opentelemetry-appender-tracing-0.28.1": { @@ -7429,7 +7637,7 @@ "https://static.crates.io/crates/opentelemetry-http/0.28.0/download" ], "strip_prefix": "opentelemetry-http-0.28.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_http\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__reqwest-0.12.28//:reqwest\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"internal-logs\",\n \"reqwest\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry-http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_http\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__reqwest-0.12.28//:reqwest\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"internal-logs\",\n \"reqwest\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry-http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" } }, "crates__opentelemetry-otlp-0.28.0": { @@ -7445,7 +7653,7 @@ "https://static.crates.io/crates/opentelemetry-otlp/0.28.0/download" ], "strip_prefix": "opentelemetry-otlp-0.28.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_otlp\",\n deps = [\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__opentelemetry-http-0.28.0//:opentelemetry_http\",\n \"@crates__opentelemetry-proto-0.28.0//:opentelemetry_proto\",\n \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n \"@crates__prost-0.13.5//:prost\",\n \"@crates__reqwest-0.12.28//:reqwest\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tonic-0.12.3//:tonic\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"grpc-tonic\",\n \"http\",\n \"http-proto\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"opentelemetry-http\",\n \"prost\",\n \"reqwest\",\n \"reqwest-blocking-client\",\n \"tokio\",\n \"tonic\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry-otlp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_otlp\",\n deps = [\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__opentelemetry-http-0.28.0//:opentelemetry_http\",\n \"@crates__opentelemetry-proto-0.28.0//:opentelemetry_proto\",\n \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n \"@crates__prost-0.13.5//:prost\",\n \"@crates__reqwest-0.12.28//:reqwest\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tonic-0.12.3//:tonic\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"grpc-tonic\",\n \"http\",\n \"http-proto\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"opentelemetry-http\",\n \"prost\",\n \"reqwest\",\n \"reqwest-blocking-client\",\n \"tokio\",\n \"tonic\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry-otlp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" } }, "crates__opentelemetry-proto-0.28.0": { @@ -7477,7 +7685,7 @@ "https://static.crates.io/crates/opentelemetry_sdk/0.28.0/download" ], "strip_prefix": "opentelemetry_sdk-0.28.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_sdk\",\n deps = [\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-executor-0.3.32//:futures_executor\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__glob-0.3.3//:glob\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__rand-0.8.6//:rand\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"async-trait\",\n \"default\",\n \"experimental_async_runtime\",\n \"glob\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"percent-encoding\",\n \"rand\",\n \"rt-tokio\",\n \"serde_json\",\n \"tokio\",\n \"tokio-stream\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry_sdk\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"opentelemetry_sdk\",\n deps = [\n \"@crates__futures-channel-0.3.32//:futures_channel\",\n \"@crates__futures-executor-0.3.32//:futures_executor\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__glob-0.3.3//:glob\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__rand-0.8.6//:rand\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"async-trait\",\n \"default\",\n \"experimental_async_runtime\",\n \"glob\",\n \"internal-logs\",\n \"logs\",\n \"metrics\",\n \"percent-encoding\",\n \"rand\",\n \"rt-tokio\",\n \"serde_json\",\n \"tokio\",\n \"tokio-stream\",\n \"trace\",\n \"tracing\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=opentelemetry_sdk\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.28.0\",\n)\n" } }, "crates__option-ext-0.2.0": { @@ -7544,20 +7752,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"parking_lot_core\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__parking_lot_core-0.9.12//:build_script_build\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-link-0.2.1//:windows_link\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=parking_lot_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.9.12\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"parking_lot_core\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=parking_lot_core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.9.12\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__pastey-0.2.2": { + "crates__pastey-0.2.3": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "c5a797f0e07bdf071d15742978fc3128ec6c22891c31a3a931513263904c982a", + "sha256": "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/pastey/0.2.2/download" + "https://static.crates.io/crates/pastey/0.2.3/download" ], - "strip_prefix": "pastey-0.2.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"pastey\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pastey\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" + "strip_prefix": "pastey-0.2.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"pastey\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pastey\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.3\",\n)\n" } }, "crates__pbkdf2-0.12.2": { @@ -7621,7 +7829,7 @@ "https://static.crates.io/crates/pest/2.8.6/download" ], "strip_prefix": "pest-2.8.6", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pest\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__ucd-trie-0.1.7//:ucd_trie\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"memchr\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.6\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pest\",\n deps = [\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__ucd-trie-0.1.7//:ucd_trie\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"memchr\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.8.6\",\n)\n" } }, "crates__pest_derive-2.8.6": { @@ -8005,7 +8213,7 @@ "https://static.crates.io/crates/ppv-lite86/0.2.21/download" ], "strip_prefix": "ppv-lite86-0.2.21", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ppv_lite86\",\n deps = [\n \"@crates__zerocopy-0.8.48//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ppv-lite86\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.21\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ppv_lite86\",\n deps = [\n \"@crates__zerocopy-0.8.50//:zerocopy\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ppv-lite86\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.21\",\n)\n" } }, "crates__precomputed-hash-0.1.1": { @@ -8149,7 +8357,7 @@ "https://static.crates.io/crates/pulldown-cmark/0.12.2/download" ], "strip_prefix": "pulldown-cmark-0.12.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pulldown_cmark\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__pulldown-cmark-0.12.2//:build_script_build\",\n \"@crates__unicase-2.9.0//:unicase\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"pulldown-cmark\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.12.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"pulldown_cmark\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__pulldown-cmark-0.12.2//:build_script_build\",\n \"@crates__unicase-2.9.0//:unicase\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.2\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"pulldown-cmark\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=pulldown-cmark\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.12.2\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__pxfm-0.1.29": { @@ -8197,7 +8405,7 @@ "https://static.crates.io/crates/quick-xml/0.39.4/download" ], "strip_prefix": "quick-xml-0.39.4", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quick_xml\",\n deps = [\n \"@crates__memchr-2.8.0//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quick-xml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.39.4\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"quick_xml\",\n deps = [\n \"@crates__memchr-2.8.1//:memchr\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=quick-xml\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.39.4\",\n)\n" } }, "crates__quote-1.0.45": { @@ -8389,7 +8597,7 @@ "https://static.crates.io/crates/ratatui-core/0.1.0/download" ], "strip_prefix": "ratatui-core-0.1.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ratatui_core\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__compact_str-0.9.0//:compact_str\",\n \"@crates__hashbrown-0.16.1//:hashbrown\",\n \"@crates__itertools-0.14.0//:itertools\",\n \"@crates__kasuari-0.4.12//:kasuari\",\n \"@crates__lru-0.16.4//:lru\",\n \"@crates__strum-0.27.2//:strum\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n \"@crates__unicode-truncate-2.0.1//:unicode_truncate\",\n \"@crates__unicode-width-0.2.2//:unicode_width\",\n ],\n proc_macro_deps = [\n \"@crates__indoc-2.0.7//:indoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"layout-cache\",\n \"std\",\n \"underline-color\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ratatui-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ratatui_core\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__compact_str-0.9.1//:compact_str\",\n \"@crates__hashbrown-0.16.1//:hashbrown\",\n \"@crates__itertools-0.14.0//:itertools\",\n \"@crates__kasuari-0.4.12//:kasuari\",\n \"@crates__lru-0.16.4//:lru\",\n \"@crates__strum-0.27.2//:strum\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n \"@crates__unicode-truncate-2.0.1//:unicode_truncate\",\n \"@crates__unicode-width-0.2.2//:unicode_width\",\n ],\n proc_macro_deps = [\n \"@crates__indoc-2.0.7//:indoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"layout-cache\",\n \"std\",\n \"underline-color\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ratatui-core\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.0\",\n)\n" } }, "crates__ratatui-crossterm-0.1.0": { @@ -8485,7 +8693,7 @@ "https://static.crates.io/crates/redox_users/0.5.2/download" ], "strip_prefix": "redox_users-0.5.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"redox_users\",\n deps = [\n \"@crates__getrandom-0.2.17//:getrandom\",\n \"@crates__libredox-0.1.16//:libredox\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=redox_users\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"redox_users\",\n deps = [\n \"@crates__getrandom-0.2.17//:getrandom\",\n \"@crates__libredox-0.1.17//:libredox\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=redox_users\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.2\",\n)\n" } }, "crates__ref-cast-1.0.25": { @@ -8533,7 +8741,7 @@ "https://static.crates.io/crates/regex/1.12.3/download" ], "strip_prefix": "regex-1.12.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"perf\",\n \"perf-backtrack\",\n \"perf-cache\",\n \"perf-dfa\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-onepass\",\n \"std\",\n \"unicode\",\n \"unicode-age\",\n \"unicode-bool\",\n \"unicode-case\",\n \"unicode-gencat\",\n \"unicode-perl\",\n \"unicode-script\",\n \"unicode-segment\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.12.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__regex-automata-0.4.14//:regex_automata\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"perf\",\n \"perf-backtrack\",\n \"perf-cache\",\n \"perf-dfa\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-onepass\",\n \"std\",\n \"unicode\",\n \"unicode-age\",\n \"unicode-bool\",\n \"unicode-case\",\n \"unicode-gencat\",\n \"unicode-perl\",\n \"unicode-script\",\n \"unicode-segment\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.12.3\",\n)\n" } }, "crates__regex-automata-0.4.14": { @@ -8549,7 +8757,7 @@ "https://static.crates.io/crates/regex-automata/0.4.14/download" ], "strip_prefix": "regex-automata-0.4.14", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_automata\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"dfa\",\n \"dfa-build\",\n \"dfa-onepass\",\n \"dfa-search\",\n \"hybrid\",\n \"meta\",\n \"nfa\",\n \"nfa-backtrack\",\n \"nfa-pikevm\",\n \"nfa-thompson\",\n \"perf\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-literal-multisubstring\",\n \"perf-literal-substring\",\n \"std\",\n \"syntax\",\n \"unicode\",\n \"unicode-age\",\n \"unicode-bool\",\n \"unicode-case\",\n \"unicode-gencat\",\n \"unicode-perl\",\n \"unicode-script\",\n \"unicode-segment\",\n \"unicode-word-boundary\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-automata\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"regex_automata\",\n deps = [\n \"@crates__aho-corasick-1.1.4//:aho_corasick\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"dfa\",\n \"dfa-build\",\n \"dfa-onepass\",\n \"dfa-search\",\n \"hybrid\",\n \"meta\",\n \"nfa\",\n \"nfa-backtrack\",\n \"nfa-pikevm\",\n \"nfa-thompson\",\n \"perf\",\n \"perf-inline\",\n \"perf-literal\",\n \"perf-literal-multisubstring\",\n \"perf-literal-substring\",\n \"std\",\n \"syntax\",\n \"unicode\",\n \"unicode-age\",\n \"unicode-bool\",\n \"unicode-case\",\n \"unicode-gencat\",\n \"unicode-perl\",\n \"unicode-script\",\n \"unicode-segment\",\n \"unicode-word-boundary\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=regex-automata\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.14\",\n)\n" } }, "crates__regex-syntax-0.8.10": { @@ -8581,23 +8789,23 @@ "https://static.crates.io/crates/reqwest/0.12.28/download" ], "strip_prefix": "reqwest-0.12.28", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"reqwest\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_urlencoded-0.7.1//:serde_urlencoded\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # aarch64-apple-darwin\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.29//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # aarch64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.29//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(target_arch = \"wasm32\")\n \"@crates__serde_json-1.0.149//:serde_json\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-futures-0.4.71//:wasm_bindgen_futures\", # cfg(target_arch = \"wasm32\")\n \"@crates__web-sys-0.3.98//:web_sys\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(target_arch = \"wasm32\")\n \"@crates__serde_json-1.0.149//:serde_json\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-futures-0.4.71//:wasm_bindgen_futures\", # cfg(target_arch = \"wasm32\")\n \"@crates__web-sys-0.3.98//:web_sys\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-pc-windows-msvc\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.29//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.29//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.29//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"blocking\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=reqwest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.28\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"reqwest\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_urlencoded-0.7.1//:serde_urlencoded\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # aarch64-apple-darwin\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.30//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # aarch64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.30//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(target_arch = \"wasm32\")\n \"@crates__serde_json-1.0.150//:serde_json\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-futures-0.4.72//:wasm_bindgen_futures\", # cfg(target_arch = \"wasm32\")\n \"@crates__web-sys-0.3.99//:web_sys\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(target_arch = \"wasm32\")\n \"@crates__serde_json-1.0.150//:serde_json\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # cfg(target_arch = \"wasm32\")\n \"@crates__wasm-bindgen-futures-0.4.72//:wasm_bindgen_futures\", # cfg(target_arch = \"wasm32\")\n \"@crates__web-sys-0.3.99//:web_sys\", # cfg(target_arch = \"wasm32\")\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-pc-windows-msvc\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.30//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.30//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__futures-channel-0.3.32//:futures_channel\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__log-0.4.30//:log\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-0.5.3//:tower\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(target_arch = \"wasm32\"))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(target_arch = \"wasm32\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"blocking\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=reqwest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.28\",\n)\n" } }, - "crates__reqwest-0.13.3": { + "crates__reqwest-0.13.4": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0", + "sha256": "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/reqwest/0.13.3/download" + "https://static.crates.io/crates/reqwest/0.13.4/download" ], - "strip_prefix": "reqwest-0.13.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"reqwest\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # aarch64-apple-darwin\n \"@crates__h2-0.4.14//:h2\", # aarch64-apple-darwin\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # aarch64-apple-darwin\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # aarch64-apple-darwin\n \"@crates__native-tls-0.2.18//:native_tls\", # aarch64-apple-darwin\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # aarch64-apple-darwin\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # aarch64-apple-darwin\n \"@crates__tokio-util-0.7.18//:tokio_util\", # aarch64-apple-darwin\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # aarch64-unknown-linux-gnu\n \"@crates__h2-0.4.14//:h2\", # aarch64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # aarch64-unknown-linux-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # aarch64-unknown-linux-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # aarch64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # aarch64-unknown-linux-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # aarch64-unknown-linux-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # aarch64-unknown-linux-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-bindgen-futures-0.4.71//:wasm_bindgen_futures\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-streams-0.5.0//:wasm_streams\", # wasm32-unknown-unknown\n \"@crates__web-sys-0.3.98//:web_sys\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # wasm32-wasip1\n \"@crates__h2-0.4.14//:h2\", # wasm32-wasip1\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # wasm32-wasip1\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # wasm32-wasip1\n \"@crates__native-tls-0.2.18//:native_tls\", # wasm32-wasip1\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # wasm32-wasip1\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # wasm32-wasip1\n \"@crates__tokio-util-0.7.18//:tokio_util\", # wasm32-wasip1\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-pc-windows-msvc\n \"@crates__h2-0.4.14//:h2\", # x86_64-pc-windows-msvc\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-pc-windows-msvc\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-pc-windows-msvc\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-pc-windows-msvc\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-pc-windows-msvc\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-pc-windows-msvc\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-pc-windows-msvc\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-unknown-linux-gnu\n \"@crates__h2-0.4.14//:h2\", # x86_64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-unknown-linux-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-unknown-linux-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-unknown-linux-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-unknown-linux-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-unknown-linux-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__h2-0.4.14//:h2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.9.0//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.29//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"//conditions:default\": [],\n }),\n aliases = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # aarch64-apple-darwin\n },\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # aarch64-unknown-linux-gnu\n },\n \"@rules_rust//rust/platform:wasm32-wasip1\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # wasm32-wasip1\n },\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-pc-windows-msvc\n },\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-unknown-linux-gnu\n },\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n },\n \"//conditions:default\": {},\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__native-tls\",\n \"__native-tls-alpn\",\n \"__tls\",\n \"charset\",\n \"http2\",\n \"json\",\n \"native-tls\",\n \"stream\",\n \"system-proxy\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=reqwest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.3\",\n)\n" + "strip_prefix": "reqwest-0.13.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"reqwest\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-core-0.3.32//:futures_core\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__sync_wrapper-1.0.2//:sync_wrapper\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # aarch64-apple-darwin\n \"@crates__h2-0.4.14//:h2\", # aarch64-apple-darwin\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # aarch64-apple-darwin\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # aarch64-apple-darwin\n \"@crates__native-tls-0.2.18//:native_tls\", # aarch64-apple-darwin\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # aarch64-apple-darwin\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # aarch64-apple-darwin\n \"@crates__tokio-util-0.7.18//:tokio_util\", # aarch64-apple-darwin\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # aarch64-unknown-linux-gnu\n \"@crates__h2-0.4.14//:h2\", # aarch64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # aarch64-unknown-linux-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # aarch64-unknown-linux-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # aarch64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # aarch64-unknown-linux-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # aarch64-unknown-linux-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # aarch64-unknown-linux-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-bindgen-futures-0.4.72//:wasm_bindgen_futures\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n \"@crates__wasm-streams-0.5.0//:wasm_streams\", # wasm32-unknown-unknown\n \"@crates__web-sys-0.3.99//:web_sys\", # cfg(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\")))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # wasm32-wasip1\n \"@crates__h2-0.4.14//:h2\", # wasm32-wasip1\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # wasm32-wasip1\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # wasm32-wasip1\n \"@crates__native-tls-0.2.18//:native_tls\", # wasm32-wasip1\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # wasm32-wasip1\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # wasm32-wasip1\n \"@crates__tokio-util-0.7.18//:tokio_util\", # wasm32-wasip1\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-pc-windows-msvc\n \"@crates__h2-0.4.14//:h2\", # x86_64-pc-windows-msvc\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-pc-windows-msvc\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-pc-windows-msvc\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-pc-windows-msvc\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-pc-windows-msvc\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-pc-windows-msvc\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-pc-windows-msvc\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-unknown-linux-gnu\n \"@crates__h2-0.4.14//:h2\", # x86_64-unknown-linux-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-unknown-linux-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-unknown-linux-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-unknown-linux-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-unknown-linux-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-unknown-linux-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-unknown-linux-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__encoding_rs-0.8.35//:encoding_rs\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__h2-0.4.14//:h2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__http-body-1.0.1//:http_body\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__http-body-util-0.1.3//:http_body_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-1.10.1//:hyper\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__hyper-tls-0.6.0//:hyper_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__hyper-util-0.1.20//:hyper_util\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__log-0.4.30//:log\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__mime-0.3.17//:mime\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__native-tls-0.2.18//:native_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__percent-encoding-2.3.2//:percent_encoding\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__rustls-pki-types-1.14.1//:rustls_pki_types\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tokio-1.52.3//:tokio\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tokio-native-tls-0.3.1//:tokio_native_tls\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tokio-util-0.7.18//:tokio_util\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__tower-0.5.3//:tower\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-http-0.6.11//:tower_http\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n \"@crates__tower-service-0.3.3//:tower_service\", # cfg(not(all(target_arch = \"wasm32\", any(target_os = \"unknown\", target_os = \"none\"))))\n ],\n \"//conditions:default\": [],\n }),\n aliases = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # aarch64-apple-darwin\n },\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # aarch64-unknown-linux-gnu\n },\n \"@rules_rust//rust/platform:wasm32-wasip1\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # wasm32-wasip1\n },\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-pc-windows-msvc\n },\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-unknown-linux-gnu\n },\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": {\n \"@crates__native-tls-0.2.18//:native_tls\": \"native_tls_crate\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n },\n \"//conditions:default\": {},\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__native-tls\",\n \"__native-tls-alpn\",\n \"__tls\",\n \"charset\",\n \"http2\",\n \"json\",\n \"native-tls\",\n \"stream\",\n \"system-proxy\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=reqwest\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.13.4\",\n)\n" } }, "crates__ring-0.17.14": { @@ -8613,7 +8821,7 @@ "https://static.crates.io/crates/ring/0.17.14/download" ], "strip_prefix": "ring-0.17.14", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ring\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__getrandom-0.2.17//:getrandom\",\n \"@crates__ring-0.17.14//:build_script_build\",\n \"@crates__untrusted-0.9.0//:untrusted\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(all(all(target_arch = \"aarch64\", target_endian = \"little\"), target_vendor = \"apple\", any(target_os = \"ios\", target_os = \"macos\", target_os = \"tvos\", target_os = \"visionos\", target_os = \"watchos\")))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(all(any(all(target_arch = \"aarch64\", target_endian = \"little\"), all(target_arch = \"arm\", target_endian = \"little\")), any(target_os = \"android\", target_os = \"linux\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ring\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.17.14\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.62//:cc\",\n ],\n edition = \"2021\",\n links = \"ring_core_0_17_14_\",\n pkg_name = \"ring\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ring\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.17.14\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"ring\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__getrandom-0.2.17//:getrandom\",\n \"@crates__ring-0.17.14//:build_script_build\",\n \"@crates__untrusted-0.9.0//:untrusted\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(all(all(target_arch = \"aarch64\", target_endian = \"little\"), target_vendor = \"apple\", any(target_os = \"ios\", target_os = \"macos\", target_os = \"tvos\", target_os = \"visionos\", target_os = \"watchos\")))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(all(any(all(target_arch = \"aarch64\", target_endian = \"little\"), all(target_arch = \"arm\", target_endian = \"little\")), any(target_os = \"android\", target_os = \"linux\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ring\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.17.14\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n deps = [\n \"@crates__cc-1.2.63//:cc\",\n ],\n edition = \"2021\",\n links = \"ring_core_0_17_14_\",\n pkg_name = \"ring\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=ring\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.17.14\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__rmcp-1.7.0": { @@ -8629,7 +8837,7 @@ "https://static.crates.io/crates/rmcp/1.7.0/download" ], "strip_prefix": "rmcp-1.7.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rmcp\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__futures-0.3.32//:futures\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__oauth2-5.0.0//:oauth2\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__process-wrap-9.1.0//:process_wrap\",\n \"@crates__reqwest-0.13.3//:reqwest\",\n \"@crates__rmcp-1.7.0//:build_script_build\",\n \"@crates__schemars-1.2.1//:schemars\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__sse-stream-0.2.3//:sse_stream\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tokio-util-0.7.18//:tokio_util\",\n \"@crates__tracing-0.1.44//:tracing\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__pastey-0.2.2//:pastey\",\n \"@crates__rmcp-macros-1.7.0//:rmcp_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__reqwest\",\n \"auth\",\n \"base64\",\n \"client\",\n \"client-side-sse\",\n \"default\",\n \"macros\",\n \"server\",\n \"transport-async-rw\",\n \"transport-child-process\",\n \"transport-io\",\n \"transport-streamable-http-client\",\n \"transport-streamable-http-client-reqwest\",\n \"transport-worker\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.7.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__reqwest\",\n \"auth\",\n \"base64\",\n \"client\",\n \"client-side-sse\",\n \"default\",\n \"macros\",\n \"server\",\n \"transport-async-rw\",\n \"transport-child-process\",\n \"transport-io\",\n \"transport-streamable-http-client\",\n \"transport-streamable-http-client-reqwest\",\n \"transport-worker\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2024\",\n pkg_name = \"rmcp\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.7.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rmcp\",\n deps = [\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__futures-0.3.32//:futures\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__oauth2-5.0.0//:oauth2\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__process-wrap-9.1.0//:process_wrap\",\n \"@crates__reqwest-0.13.4//:reqwest\",\n \"@crates__rmcp-1.7.0//:build_script_build\",\n \"@crates__schemars-1.2.1//:schemars\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__sse-stream-0.2.3//:sse_stream\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tokio-util-0.7.18//:tokio_util\",\n \"@crates__tracing-0.1.44//:tracing\",\n \"@crates__url-2.5.8//:url\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__chrono-0.4.44//:chrono\", # cfg(not(all(target_family = \"wasm\", target_os = \"unknown\")))\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n \"@crates__pastey-0.2.3//:pastey\",\n \"@crates__rmcp-macros-1.7.0//:rmcp_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__reqwest\",\n \"auth\",\n \"base64\",\n \"client\",\n \"client-side-sse\",\n \"default\",\n \"macros\",\n \"server\",\n \"transport-async-rw\",\n \"transport-child-process\",\n \"transport-io\",\n \"transport-streamable-http-client\",\n \"transport-streamable-http-client-reqwest\",\n \"transport-worker\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.7.0\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"__reqwest\",\n \"auth\",\n \"base64\",\n \"client\",\n \"client-side-sse\",\n \"default\",\n \"macros\",\n \"server\",\n \"transport-async-rw\",\n \"transport-child-process\",\n \"transport-io\",\n \"transport-streamable-http-client\",\n \"transport-streamable-http-client-reqwest\",\n \"transport-worker\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2024\",\n pkg_name = \"rmcp\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.7.0\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__rmcp-macros-1.7.0": { @@ -8645,23 +8853,23 @@ "https://static.crates.io/crates/rmcp-macros/1.7.0/download" ], "strip_prefix": "rmcp-macros-1.7.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"rmcp_macros\",\n deps = [\n \"@crates__darling-0.23.0//:darling\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.7.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"rmcp_macros\",\n deps = [\n \"@crates__darling-0.23.0//:darling\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rmcp-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.7.0\",\n)\n" } }, - "crates__rpassword-7.5.2": { + "crates__rpassword-7.5.3": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "5ac5b223d9738ef56e0b98305410be40fa0941bf6036c56f1506751e43552d64", + "sha256": "835a57a69104632d64deb0df2e09a69945cd7a6eab4070fc9b1d7e50cf6c3edc", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/rpassword/7.5.2/download" + "https://static.crates.io/crates/rpassword/7.5.3/download" ], - "strip_prefix": "rpassword-7.5.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rpassword\",\n deps = [\n \"@crates__rtoolbox-0.0.5//:rtoolbox\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rpassword\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"7.5.2\",\n)\n" + "strip_prefix": "rpassword-7.5.3", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rpassword\",\n deps = [\n \"@crates__rtoolbox-0.0.5//:rtoolbox\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rpassword\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"7.5.3\",\n)\n" } }, "crates__rsa-0.9.10": { @@ -8696,6 +8904,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rtoolbox\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.59.0//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rtoolbox\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.0.5\",\n)\n" } }, + "crates__rusqlite-0.32.1": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rusqlite/0.32.1/download" + ], + "strip_prefix": "rusqlite-0.32.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"rusqlite\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__chrono-0.4.44//:chrono\",\n \"@crates__fallible-iterator-0.3.0//:fallible_iterator\",\n \"@crates__fallible-streaming-iterator-0.1.9//:fallible_streaming_iterator\",\n \"@crates__hashlink-0.9.1//:hashlink\",\n \"@crates__libsqlite3-sys-0.30.1//:libsqlite3_sys\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bundled\",\n \"chrono\",\n \"modern_sqlite\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=rusqlite\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.32.1\",\n)\n" + } + }, "crates__rust-embed-8.11.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -8965,7 +9189,7 @@ "https://static.crates.io/crates/schemars/1.2.1/download" ], "strip_prefix": "schemars-1.2.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"schemars\",\n deps = [\n \"@crates__chrono-0.4.44//:chrono\",\n \"@crates__dyn-clone-1.0.20//:dyn_clone\",\n \"@crates__ref-cast-1.0.25//:ref_cast\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n ],\n proc_macro_deps = [\n \"@crates__schemars_derive-1.2.1//:schemars_derive\",\n ],\n aliases = {\n \"@crates__chrono-0.4.44//:chrono\": \"chrono04\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"chrono04\",\n \"default\",\n \"derive\",\n \"schemars_derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=schemars\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"schemars\",\n deps = [\n \"@crates__chrono-0.4.44//:chrono\",\n \"@crates__dyn-clone-1.0.20//:dyn_clone\",\n \"@crates__ref-cast-1.0.25//:ref_cast\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n ],\n proc_macro_deps = [\n \"@crates__schemars_derive-1.2.1//:schemars_derive\",\n ],\n aliases = {\n \"@crates__chrono-0.4.44//:chrono\": \"chrono04\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"chrono04\",\n \"default\",\n \"derive\",\n \"schemars_derive\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=schemars\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.2.1\",\n)\n" } }, "crates__schemars_derive-1.2.1": { @@ -9192,20 +9416,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_derive_internals\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_derive_internals\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.29.1\",\n)\n" } }, - "crates__serde_json-1.0.149": { + "crates__serde_json-1.0.150": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", + "sha256": "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/serde_json/1.0.149/download" + "https://static.crates.io/crates/serde_json/1.0.150/download" ], - "strip_prefix": "serde_json-1.0.149", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__memchr-2.8.0//:memchr\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n \"@crates__serde_json-1.0.149//:build_script_build\",\n \"@crates__zmij-1.0.21//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"raw_value\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.149\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"raw_value\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.149\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "serde_json-1.0.150", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"serde_json\",\n deps = [\n \"@crates__itoa-1.0.18//:itoa\",\n \"@crates__memchr-2.8.1//:memchr\",\n \"@crates__serde_core-1.0.228//:serde_core\",\n \"@crates__serde_json-1.0.150//:build_script_build\",\n \"@crates__zmij-1.0.21//:zmij\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"raw_value\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.150\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"raw_value\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"serde_json\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=serde_json\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.150\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__serde_path_to_error-0.1.20": { @@ -9288,20 +9512,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"sharded_slab\",\n deps = [\n \"@crates__lazy_static-1.5.0//:lazy_static\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=sharded-slab\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.7\",\n)\n" } }, - "crates__shlex-1.3.0": { + "crates__shlex-2.0.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", + "sha256": "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/shlex/1.3.0/download" + "https://static.crates.io/crates/shlex/2.0.1/download" ], - "strip_prefix": "shlex-1.3.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"shlex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=shlex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.3.0\",\n)\n" + "strip_prefix": "shlex-2.0.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"shlex\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=shlex\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"2.0.1\",\n)\n" } }, "crates__signal-hook-0.3.18": { @@ -9333,7 +9557,7 @@ "https://static.crates.io/crates/signal-hook-mio/0.2.5/download" ], "strip_prefix": "signal-hook-mio-0.2.5", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"signal_hook_mio\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__mio-1.2.0//:mio\",\n \"@crates__signal-hook-0.3.18//:signal_hook\",\n ],\n aliases = {\n \"@crates__mio-1.2.0//:mio\": \"mio_1_0\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"mio-1_0\",\n \"support-v1_0\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=signal-hook-mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"signal_hook_mio\",\n deps = [\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__mio-1.2.1//:mio\",\n \"@crates__signal-hook-0.3.18//:signal_hook\",\n ],\n aliases = {\n \"@crates__mio-1.2.1//:mio\": \"mio_1_0\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"mio-1_0\",\n \"support-v1_0\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=signal-hook-mio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.5\",\n)\n" } }, "crates__signal-hook-registry-1.4.8": { @@ -9464,20 +9688,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"socket2\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.52.0//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"all\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=socket2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.10\",\n)\n" } }, - "crates__socket2-0.6.3": { + "crates__socket2-0.6.4": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e", + "sha256": "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/socket2/0.6.3/download" + "https://static.crates.io/crates/socket2/0.6.4/download" ], - "strip_prefix": "socket2-0.6.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"socket2\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"all\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=socket2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.3\",\n)\n" + "strip_prefix": "socket2-0.6.4", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"socket2\",\n deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.61.2//:windows_sys\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # cfg(any(unix, target_os = \"wasi\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"all\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=socket2\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.4\",\n)\n" } }, "crates__spin-0.9.8": { @@ -9797,7 +10021,7 @@ "https://static.crates.io/crates/syntect/5.3.0/download" ], "strip_prefix": "syntect-5.3.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syntect\",\n deps = [\n \"@crates__bincode-1.3.3//:bincode\",\n \"@crates__fancy-regex-0.16.2//:fancy_regex\",\n \"@crates__flate2-1.1.9//:flate2\",\n \"@crates__fnv-1.0.7//:fnv\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__onig-6.5.3//:onig\",\n \"@crates__plist-1.9.0//:plist\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__walkdir-2.5.0//:walkdir\",\n \"@crates__yaml-rust-0.4.5//:yaml_rust\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bincode\",\n \"default-fancy\",\n \"default-syntaxes\",\n \"default-themes\",\n \"dump-create\",\n \"dump-load\",\n \"fancy-regex\",\n \"flate2\",\n \"fnv\",\n \"html\",\n \"onig\",\n \"parsing\",\n \"plist\",\n \"plist-load\",\n \"regex-fancy\",\n \"regex-onig\",\n \"regex-syntax\",\n \"yaml-load\",\n \"yaml-rust\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syntect\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.3.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"syntect\",\n deps = [\n \"@crates__bincode-1.3.3//:bincode\",\n \"@crates__fancy-regex-0.16.2//:fancy_regex\",\n \"@crates__flate2-1.1.9//:flate2\",\n \"@crates__fnv-1.0.7//:fnv\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__onig-6.5.3//:onig\",\n \"@crates__plist-1.9.0//:plist\",\n \"@crates__regex-syntax-0.8.10//:regex_syntax\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__thiserror-2.0.18//:thiserror\",\n \"@crates__walkdir-2.5.0//:walkdir\",\n \"@crates__yaml-rust-0.4.5//:yaml_rust\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bincode\",\n \"default-fancy\",\n \"default-syntaxes\",\n \"default-themes\",\n \"dump-create\",\n \"dump-load\",\n \"fancy-regex\",\n \"flate2\",\n \"fnv\",\n \"html\",\n \"onig\",\n \"parsing\",\n \"plist\",\n \"plist-load\",\n \"regex-fancy\",\n \"regex-onig\",\n \"regex-syntax\",\n \"yaml-load\",\n \"yaml-rust\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=syntect\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"5.3.0\",\n)\n" } }, "crates__system-configuration-0.7.0": { @@ -9909,7 +10133,7 @@ "https://static.crates.io/crates/termwiz/0.23.3/download" ], "strip_prefix": "termwiz-0.23.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"termwiz\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__fancy-regex-0.11.0//:fancy_regex\",\n \"@crates__filedescriptor-0.8.3//:filedescriptor\",\n \"@crates__finl_unicode-1.4.0//:finl_unicode\",\n \"@crates__fixedbitset-0.4.2//:fixedbitset\",\n \"@crates__hex-0.4.3//:hex\",\n \"@crates__lazy_static-1.5.0//:lazy_static\",\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__memmem-0.1.1//:memmem\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__ordered-float-4.6.0//:ordered_float\",\n \"@crates__pest-2.8.6//:pest\",\n \"@crates__phf-0.11.3//:phf\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__siphasher-1.0.3//:siphasher\",\n \"@crates__terminfo-0.9.0//:terminfo\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__ucd-trie-0.1.7//:ucd_trie\",\n \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n \"@crates__vtparse-0.6.2//:vtparse\",\n \"@crates__wezterm-bidi-0.2.3//:wezterm_bidi\",\n \"@crates__wezterm-blob-leases-0.1.1//:wezterm_blob_leases\",\n \"@crates__wezterm-color-types-0.3.0//:wezterm_color_types\",\n \"@crates__wezterm-dynamic-0.2.1//:wezterm_dynamic\",\n \"@crates__wezterm-input-types-0.1.0//:wezterm_input_types\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__winapi-0.3.9//:winapi\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__num-derive-0.4.2//:num_derive\",\n \"@crates__pest_derive-2.8.6//:pest_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=termwiz\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.23.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"termwiz\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__fancy-regex-0.11.0//:fancy_regex\",\n \"@crates__filedescriptor-0.8.3//:filedescriptor\",\n \"@crates__finl_unicode-1.4.0//:finl_unicode\",\n \"@crates__fixedbitset-0.4.2//:fixedbitset\",\n \"@crates__hex-0.4.3//:hex\",\n \"@crates__lazy_static-1.5.0//:lazy_static\",\n \"@crates__libc-0.2.186//:libc\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__memmem-0.1.1//:memmem\",\n \"@crates__num-traits-0.2.19//:num_traits\",\n \"@crates__ordered-float-4.6.0//:ordered_float\",\n \"@crates__pest-2.8.6//:pest\",\n \"@crates__phf-0.11.3//:phf\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__siphasher-1.0.3//:siphasher\",\n \"@crates__terminfo-0.9.0//:terminfo\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__ucd-trie-0.1.7//:ucd_trie\",\n \"@crates__unicode-segmentation-1.13.2//:unicode_segmentation\",\n \"@crates__vtparse-0.6.2//:vtparse\",\n \"@crates__wezterm-bidi-0.2.3//:wezterm_bidi\",\n \"@crates__wezterm-blob-leases-0.1.1//:wezterm_blob_leases\",\n \"@crates__wezterm-color-types-0.3.0//:wezterm_color_types\",\n \"@crates__wezterm-dynamic-0.2.1//:wezterm_dynamic\",\n \"@crates__wezterm-input-types-0.1.0//:wezterm_input_types\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__winapi-0.3.9//:winapi\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__nix-0.29.0//:nix\", # cfg(unix)\n \"@crates__signal-hook-0.3.18//:signal_hook\", # cfg(unix)\n \"@crates__termios-0.3.3//:termios\", # cfg(unix)\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__num-derive-0.4.2//:num_derive\",\n \"@crates__pest_derive-2.8.6//:pest_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=termwiz\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.23.3\",\n)\n" } }, "crates__textwrap-0.16.2": { @@ -10101,7 +10325,7 @@ "https://static.crates.io/crates/tinystr/0.8.3/download" ], "strip_prefix": "tinystr-0.8.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tinystr\",\n deps = [\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"zerovec\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tinystr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tinystr\",\n deps = [\n \"@crates__zerovec-0.11.6//:zerovec\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.6//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"alloc\",\n \"default\",\n \"zerovec\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tinystr\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.3\",\n)\n" } }, "crates__tinyvec-1.11.0": { @@ -10149,7 +10373,7 @@ "https://static.crates.io/crates/tokio/1.52.3/download" ], "strip_prefix": "tokio-1.52.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__mio-1.2.0//:mio\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # aarch64-apple-darwin\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # aarch64-apple-darwin\n \"@crates__socket2-0.6.3//:socket2\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # aarch64-unknown-linux-gnu\n \"@crates__socket2-0.6.3//:socket2\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__socket2-0.6.3//:socket2\", # x86_64-pc-windows-msvc\n \"@crates__windows-sys-0.61.2//:windows_sys\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-unknown-linux-gnu\n \"@crates__socket2-0.6.3//:socket2\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__socket2-0.6.3//:socket2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__tokio-macros-2.7.0//:tokio_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bytes\",\n \"default\",\n \"fs\",\n \"full\",\n \"io-std\",\n \"io-util\",\n \"libc\",\n \"macros\",\n \"mio\",\n \"net\",\n \"parking_lot\",\n \"process\",\n \"rt\",\n \"rt-multi-thread\",\n \"signal\",\n \"signal-hook-registry\",\n \"socket2\",\n \"sync\",\n \"test-util\",\n \"time\",\n \"tokio-macros\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"windows-sys\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.52.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio\",\n deps = [\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__mio-1.2.1//:mio\",\n \"@crates__parking_lot-0.12.5//:parking_lot\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.186//:libc\", # aarch64-apple-darwin\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # aarch64-apple-darwin\n \"@crates__socket2-0.6.4//:socket2\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # aarch64-unknown-linux-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # aarch64-unknown-linux-gnu\n \"@crates__socket2-0.6.4//:socket2\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__libc-0.2.186//:libc\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__socket2-0.6.4//:socket2\", # x86_64-pc-windows-msvc\n \"@crates__windows-sys-0.61.2//:windows_sys\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # x86_64-unknown-linux-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-unknown-linux-gnu\n \"@crates__socket2-0.6.4//:socket2\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.186//:libc\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__signal-hook-registry-1.4.8//:signal_hook_registry\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__socket2-0.6.4//:socket2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__tokio-macros-2.7.0//:tokio_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"bytes\",\n \"default\",\n \"fs\",\n \"full\",\n \"io-std\",\n \"io-util\",\n \"libc\",\n \"macros\",\n \"mio\",\n \"net\",\n \"parking_lot\",\n \"process\",\n \"rt\",\n \"rt-multi-thread\",\n \"signal\",\n \"signal-hook-registry\",\n \"socket2\",\n \"sync\",\n \"test-util\",\n \"time\",\n \"tokio-macros\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"windows-sys\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.52.3\",\n)\n" } }, "crates__tokio-macros-2.7.0": { @@ -10261,7 +10485,7 @@ "https://static.crates.io/crates/tonic/0.12.3/download" ], "strip_prefix": "tonic-0.12.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tonic\",\n deps = [\n \"@crates__async-stream-0.3.6//:async_stream\",\n \"@crates__axum-0.7.9//:axum\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__h2-0.4.14//:h2\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__hyper-timeout-0.5.2//:hyper_timeout\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__pin-project-1.1.13//:pin_project\",\n \"@crates__prost-0.13.5//:prost\",\n \"@crates__socket2-0.5.10//:socket2\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tower-0.4.13//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"channel\",\n \"codegen\",\n \"prost\",\n \"router\",\n \"server\",\n \"transport\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tonic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tonic\",\n deps = [\n \"@crates__async-stream-0.3.6//:async_stream\",\n \"@crates__axum-0.7.9//:axum\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__h2-0.4.14//:h2\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__hyper-timeout-0.5.2//:hyper_timeout\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__percent-encoding-2.3.2//:percent_encoding\",\n \"@crates__pin-project-1.1.13//:pin_project\",\n \"@crates__prost-0.13.5//:prost\",\n \"@crates__socket2-0.5.10//:socket2\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__tokio-stream-0.1.18//:tokio_stream\",\n \"@crates__tower-0.4.13//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__tracing-0.1.44//:tracing\",\n ],\n proc_macro_deps = [\n \"@crates__async-trait-0.1.89//:async_trait\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"channel\",\n \"codegen\",\n \"prost\",\n \"router\",\n \"server\",\n \"transport\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tonic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.12.3\",\n)\n" } }, "crates__tower-0.4.13": { @@ -10309,7 +10533,7 @@ "https://static.crates.io/crates/tower-http/0.6.11/download" ], "strip_prefix": "tower-http-0.6.11", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tower_http\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__tower-0.5.3//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__url-2.5.8//:url\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"follow-redirect\",\n \"futures-util\",\n \"tower\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tower-http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.11\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tower_http\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__bytes-1.11.1//:bytes\",\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-1.0.1//:http_body\",\n \"@crates__pin-project-lite-0.2.17//:pin_project_lite\",\n \"@crates__tower-0.5.3//:tower\",\n \"@crates__tower-layer-0.3.3//:tower_layer\",\n \"@crates__tower-service-0.3.3//:tower_service\",\n \"@crates__url-2.5.8//:url\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"follow-redirect\",\n \"futures-util\",\n \"tower\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tower-http\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.11\",\n)\n" } }, "crates__tower-layer-0.3.3": { @@ -10421,7 +10645,7 @@ "https://static.crates.io/crates/tracing-log/0.2.0/download" ], "strip_prefix": "tracing-log-0.2.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_log\",\n deps = [\n \"@crates__log-0.4.29//:log\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__tracing-core-0.1.36//:tracing_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"log-tracer\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_log\",\n deps = [\n \"@crates__log-0.4.30//:log\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__tracing-core-0.1.36//:tracing_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"log-tracer\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-log\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.0\",\n)\n" } }, "crates__tracing-opentelemetry-0.29.0": { @@ -10437,7 +10661,7 @@ "https://static.crates.io/crates/tracing-opentelemetry/0.29.0/download" ], "strip_prefix": "tracing-opentelemetry-0.29.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_opentelemetry\",\n deps = [\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n \"@crates__tracing-0.1.44//:tracing\",\n \"@crates__tracing-core-0.1.36//:tracing_core\",\n \"@crates__tracing-log-0.2.0//:tracing_log\",\n \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n \"@crates__web-time-1.1.0//:web_time\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"metrics\",\n \"smallvec\",\n \"tracing-log\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-opentelemetry\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.29.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tracing_opentelemetry\",\n deps = [\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__opentelemetry-0.28.0//:opentelemetry\",\n \"@crates__opentelemetry_sdk-0.28.0//:opentelemetry_sdk\",\n \"@crates__smallvec-1.15.1//:smallvec\",\n \"@crates__tracing-0.1.44//:tracing\",\n \"@crates__tracing-core-0.1.36//:tracing_core\",\n \"@crates__tracing-log-0.2.0//:tracing_log\",\n \"@crates__tracing-subscriber-0.3.23//:tracing_subscriber\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n \"@crates__web-time-1.1.0//:web_time\", # cfg(all(target_arch = \"wasm32\", not(target_os = \"wasi\")))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"metrics\",\n \"smallvec\",\n \"tracing-log\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tracing-opentelemetry\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.29.0\",\n)\n" } }, "crates__tracing-subscriber-0.3.23": { @@ -10520,20 +10744,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"type1_encoding_parser\",\n deps = [\n \"@crates__pom-1.1.0//:pom\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2015\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=type1-encoding-parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.1\",\n)\n" } }, - "crates__typenum-1.20.0": { + "crates__typenum-1.20.1": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de", + "sha256": "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/typenum/1.20.0/download" + "https://static.crates.io/crates/typenum/1.20.1/download" ], - "strip_prefix": "typenum-1.20.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"typenum\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=typenum\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.20.0\",\n)\n" + "strip_prefix": "typenum-1.20.1", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"typenum\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=typenum\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.20.1\",\n)\n" } }, "crates__ucd-trie-0.1.7": { @@ -10840,20 +11064,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"utf8parse\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=utf8parse\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.2\",\n)\n" } }, - "crates__uuid-1.23.1": { + "crates__uuid-1.23.2": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76", + "sha256": "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/uuid/1.23.1/download" + "https://static.crates.io/crates/uuid/1.23.2/download" ], - "strip_prefix": "uuid-1.23.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"uuid\",\n deps = [\n \"@crates__serde_core-1.0.228//:serde_core\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"rng\",\n \"serde\",\n \"std\",\n \"v4\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=uuid\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.23.1\",\n)\n" + "strip_prefix": "uuid-1.23.2", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"uuid\",\n deps = [\n \"@crates__serde_core-1.0.228//:serde_core\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # wasm32-wasip1\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__getrandom-0.4.2//:getrandom\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"rng\",\n \"serde\",\n \"std\",\n \"v4\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=uuid\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.23.2\",\n)\n" } }, "crates__valuable-0.1.1": { @@ -11000,84 +11224,84 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasip3\",\n deps = [\n \"@crates__wit-bindgen-0.51.0//:wit_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasip3\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.0+wasi-0.3.0-rc-2026-01-06\",\n)\n" } }, - "crates__wasm-bindgen-0.2.121": { + "crates__wasm-bindgen-0.2.122": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790", + "sha256": "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/wasm-bindgen/0.2.121/download" + "https://static.crates.io/crates/wasm-bindgen/0.2.122/download" ], - "strip_prefix": "wasm-bindgen-0.2.121", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__wasm-bindgen-0.2.121//:build_script_build\",\n \"@crates__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared\",\n ],\n proc_macro_deps = [\n \"@crates__wasm-bindgen-macro-0.2.121//:wasm_bindgen_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.121\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n aliases = {\n \"@crates__rustversion-1.0.22//:rustversion\": \"rustversion_compat\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crates__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared\",\n ],\n edition = \"2021\",\n pkg_name = \"wasm-bindgen\",\n proc_macro_deps = [\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.121\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "wasm-bindgen-0.2.122", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen\",\n deps = [\n \"@crates__cfg-if-1.0.4//:cfg_if\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__wasm-bindgen-0.2.122//:build_script_build\",\n \"@crates__wasm-bindgen-shared-0.2.122//:wasm_bindgen_shared\",\n ],\n proc_macro_deps = [\n \"@crates__wasm-bindgen-macro-0.2.122//:wasm_bindgen_macro\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.122\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n aliases = {\n \"@crates__rustversion-1.0.22//:rustversion\": \"rustversion_compat\",\n },\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n link_deps = [\n \"@crates__wasm-bindgen-shared-0.2.122//:wasm_bindgen_shared\",\n ],\n edition = \"2021\",\n pkg_name = \"wasm-bindgen\",\n proc_macro_deps = [\n \"@crates__rustversion-1.0.22//:rustversion\",\n ],\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.122\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__wasm-bindgen-futures-0.4.71": { + "crates__wasm-bindgen-futures-0.4.72": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8", + "sha256": "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/wasm-bindgen-futures/0.4.71/download" + "https://static.crates.io/crates/wasm-bindgen-futures/0.4.72/download" ], - "strip_prefix": "wasm-bindgen-futures-0.4.71", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_futures\",\n deps = [\n \"@crates__js-sys-0.3.98//:js_sys\",\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-futures\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.71\",\n)\n" + "strip_prefix": "wasm-bindgen-futures-0.4.72", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_futures\",\n deps = [\n \"@crates__js-sys-0.3.99//:js_sys\",\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-futures\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.4.72\",\n)\n" } }, - "crates__wasm-bindgen-macro-0.2.121": { + "crates__wasm-bindgen-macro-0.2.122": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578", + "sha256": "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/wasm-bindgen-macro/0.2.121/download" + "https://static.crates.io/crates/wasm-bindgen-macro/0.2.122/download" ], - "strip_prefix": "wasm-bindgen-macro-0.2.121", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"wasm_bindgen_macro\",\n deps = [\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__wasm-bindgen-macro-support-0.2.121//:wasm_bindgen_macro_support\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.121\",\n)\n" + "strip_prefix": "wasm-bindgen-macro-0.2.122", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"wasm_bindgen_macro\",\n deps = [\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__wasm-bindgen-macro-support-0.2.122//:wasm_bindgen_macro_support\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.122\",\n)\n" } }, - "crates__wasm-bindgen-macro-support-0.2.121": { + "crates__wasm-bindgen-macro-support-0.2.122": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2", + "sha256": "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.121/download" + "https://static.crates.io/crates/wasm-bindgen-macro-support/0.2.122/download" ], - "strip_prefix": "wasm-bindgen-macro-support-0.2.121", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_macro_support\",\n deps = [\n \"@crates__bumpalo-3.20.2//:bumpalo\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n \"@crates__wasm-bindgen-shared-0.2.121//:wasm_bindgen_shared\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro-support\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.121\",\n)\n" + "strip_prefix": "wasm-bindgen-macro-support-0.2.122", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_macro_support\",\n deps = [\n \"@crates__bumpalo-3.20.3//:bumpalo\",\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n \"@crates__wasm-bindgen-shared-0.2.122//:wasm_bindgen_shared\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-macro-support\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.122\",\n)\n" } }, - "crates__wasm-bindgen-shared-0.2.121": { + "crates__wasm-bindgen-shared-0.2.122": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441", + "sha256": "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/wasm-bindgen-shared/0.2.121/download" + "https://static.crates.io/crates/wasm-bindgen-shared/0.2.122/download" ], - "strip_prefix": "wasm-bindgen-shared-0.2.121", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_shared\",\n deps = [\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n \"@crates__wasm-bindgen-shared-0.2.121//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.121\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n links = \"wasm_bindgen\",\n pkg_name = \"wasm-bindgen-shared\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.121\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "wasm-bindgen-shared-0.2.122", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_bindgen_shared\",\n deps = [\n \"@crates__unicode-ident-1.0.24//:unicode_ident\",\n \"@crates__wasm-bindgen-shared-0.2.122//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.122\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n links = \"wasm_bindgen\",\n pkg_name = \"wasm-bindgen-shared\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-bindgen-shared\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.2.122\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, "crates__wasm-encoder-0.244.0": { @@ -11125,7 +11349,7 @@ "https://static.crates.io/crates/wasm-streams/0.5.0/download" ], "strip_prefix": "wasm-streams-0.5.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_streams\",\n deps = [\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__js-sys-0.3.98//:js_sys\",\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n \"@crates__wasm-bindgen-futures-0.4.71//:wasm_bindgen_futures\",\n \"@crates__web-sys-0.3.98//:web_sys\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-streams\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasm_streams\",\n deps = [\n \"@crates__futures-util-0.3.32//:futures_util\",\n \"@crates__js-sys-0.3.99//:js_sys\",\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\",\n \"@crates__wasm-bindgen-futures-0.4.72//:wasm_bindgen_futures\",\n \"@crates__web-sys-0.3.99//:web_sys\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasm-streams\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.0\",\n)\n" } }, "crates__wasmparser-0.244.0": { @@ -11144,20 +11368,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wasmparser\",\n deps = [\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__hashbrown-0.15.5//:hashbrown\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__semver-1.0.28//:semver\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"component-model\",\n \"features\",\n \"hash-collections\",\n \"simd\",\n \"std\",\n \"validate\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wasmparser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" } }, - "crates__web-sys-0.3.98": { + "crates__web-sys-0.3.99": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa", + "sha256": "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/web-sys/0.3.98/download" + "https://static.crates.io/crates/web-sys/0.3.99/download" ], - "strip_prefix": "web-sys-0.3.98", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"web_sys\",\n deps = [\n \"@crates__js-sys-0.3.98//:js_sys\",\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"AbortController\",\n \"AbortSignal\",\n \"Blob\",\n \"BlobPropertyBag\",\n \"EventTarget\",\n \"File\",\n \"FormData\",\n \"Headers\",\n \"ReadableStream\",\n \"Request\",\n \"RequestCache\",\n \"RequestCredentials\",\n \"RequestInit\",\n \"RequestMode\",\n \"Response\",\n \"ServiceWorkerGlobalScope\",\n \"Window\",\n \"WorkerGlobalScope\",\n \"default\",\n \"std\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"QueuingStrategy\", # wasm32-unknown-unknown\n \"ReadableByteStreamController\", # wasm32-unknown-unknown\n \"ReadableStreamByobReader\", # wasm32-unknown-unknown\n \"ReadableStreamByobRequest\", # wasm32-unknown-unknown\n \"ReadableStreamDefaultController\", # wasm32-unknown-unknown\n \"ReadableStreamDefaultReader\", # wasm32-unknown-unknown\n \"ReadableStreamGetReaderOptions\", # wasm32-unknown-unknown\n \"ReadableStreamReadResult\", # wasm32-unknown-unknown\n \"ReadableStreamReaderMode\", # wasm32-unknown-unknown\n \"ReadableStreamType\", # wasm32-unknown-unknown\n \"ReadableWritablePair\", # wasm32-unknown-unknown\n \"StreamPipeOptions\", # wasm32-unknown-unknown\n \"TransformStream\", # wasm32-unknown-unknown\n \"TransformStreamDefaultController\", # wasm32-unknown-unknown\n \"Transformer\", # wasm32-unknown-unknown\n \"UnderlyingSink\", # wasm32-unknown-unknown\n \"UnderlyingSource\", # wasm32-unknown-unknown\n \"WritableStream\", # wasm32-unknown-unknown\n \"WritableStreamDefaultController\", # wasm32-unknown-unknown\n \"WritableStreamDefaultWriter\", # wasm32-unknown-unknown\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=web-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.98\",\n)\n" + "strip_prefix": "web-sys-0.3.99", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"web_sys\",\n deps = [\n \"@crates__js-sys-0.3.99//:js_sys\",\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"AbortController\",\n \"AbortSignal\",\n \"Blob\",\n \"BlobPropertyBag\",\n \"EventTarget\",\n \"File\",\n \"FormData\",\n \"Headers\",\n \"ReadableStream\",\n \"Request\",\n \"RequestCache\",\n \"RequestCredentials\",\n \"RequestInit\",\n \"RequestMode\",\n \"Response\",\n \"ServiceWorkerGlobalScope\",\n \"Window\",\n \"WorkerGlobalScope\",\n \"default\",\n \"std\",\n ] + select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"QueuingStrategy\", # wasm32-unknown-unknown\n \"ReadableByteStreamController\", # wasm32-unknown-unknown\n \"ReadableStreamByobReader\", # wasm32-unknown-unknown\n \"ReadableStreamByobRequest\", # wasm32-unknown-unknown\n \"ReadableStreamDefaultController\", # wasm32-unknown-unknown\n \"ReadableStreamDefaultReader\", # wasm32-unknown-unknown\n \"ReadableStreamGetReaderOptions\", # wasm32-unknown-unknown\n \"ReadableStreamReadResult\", # wasm32-unknown-unknown\n \"ReadableStreamReaderMode\", # wasm32-unknown-unknown\n \"ReadableStreamType\", # wasm32-unknown-unknown\n \"ReadableWritablePair\", # wasm32-unknown-unknown\n \"StreamPipeOptions\", # wasm32-unknown-unknown\n \"TransformStream\", # wasm32-unknown-unknown\n \"TransformStreamDefaultController\", # wasm32-unknown-unknown\n \"Transformer\", # wasm32-unknown-unknown\n \"UnderlyingSink\", # wasm32-unknown-unknown\n \"UnderlyingSource\", # wasm32-unknown-unknown\n \"WritableStream\", # wasm32-unknown-unknown\n \"WritableStreamDefaultController\", # wasm32-unknown-unknown\n \"WritableStreamDefaultWriter\", # wasm32-unknown-unknown\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=web-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.99\",\n)\n" } }, "crates__web-time-1.1.0": { @@ -11173,7 +11397,7 @@ "https://static.crates.io/crates/web-time/1.1.0/download" ], "strip_prefix": "web-time-1.1.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"web_time\",\n deps = select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.98//:js_sys\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n \"@crates__wasm-bindgen-0.2.121//:wasm_bindgen\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=web-time\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"web_time\",\n deps = select({\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__js-sys-0.3.99//:js_sys\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n \"@crates__wasm-bindgen-0.2.122//:wasm_bindgen\", # cfg(all(target_family = \"wasm\", target_os = \"unknown\"))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=web-time\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.1.0\",\n)\n" } }, "crates__weezl-0.1.12": { @@ -11205,7 +11429,7 @@ "https://static.crates.io/crates/wezterm-bidi/0.2.3/download" ], "strip_prefix": "wezterm-bidi-0.2.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_bidi\",\n deps = [\n \"@crates__log-0.4.29//:log\",\n \"@crates__wezterm-dynamic-0.2.1//:wezterm_dynamic\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-bidi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_bidi\",\n deps = [\n \"@crates__log-0.4.30//:log\",\n \"@crates__wezterm-dynamic-0.2.1//:wezterm_dynamic\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-bidi\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.3\",\n)\n" } }, "crates__wezterm-blob-leases-0.1.1": { @@ -11221,7 +11445,7 @@ "https://static.crates.io/crates/wezterm-blob-leases/0.1.1/download" ], "strip_prefix": "wezterm-blob-leases-0.1.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_blob_leases\",\n deps = [\n \"@crates__getrandom-0.3.4//:getrandom\",\n \"@crates__mac_address-1.1.8//:mac_address\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__uuid-1.23.1//:uuid\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-blob-leases\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_blob_leases\",\n deps = [\n \"@crates__getrandom-0.3.4//:getrandom\",\n \"@crates__mac_address-1.1.8//:mac_address\",\n \"@crates__sha2-0.10.9//:sha2\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n \"@crates__uuid-1.23.2//:uuid\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-blob-leases\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.1.1\",\n)\n" } }, "crates__wezterm-color-types-0.3.0": { @@ -11253,7 +11477,7 @@ "https://static.crates.io/crates/wezterm-dynamic/0.2.1/download" ], "strip_prefix": "wezterm-dynamic-0.2.1", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_dynamic\",\n deps = [\n \"@crates__log-0.4.29//:log\",\n \"@crates__ordered-float-4.6.0//:ordered_float\",\n \"@crates__strsim-0.11.1//:strsim\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n ],\n proc_macro_deps = [\n \"@crates__wezterm-dynamic-derive-0.1.1//:wezterm_dynamic_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-dynamic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wezterm_dynamic\",\n deps = [\n \"@crates__log-0.4.30//:log\",\n \"@crates__ordered-float-4.6.0//:ordered_float\",\n \"@crates__strsim-0.11.1//:strsim\",\n \"@crates__thiserror-1.0.69//:thiserror\",\n ],\n proc_macro_deps = [\n \"@crates__wezterm-dynamic-derive-0.1.1//:wezterm_dynamic_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wezterm-dynamic\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" } }, "crates__wezterm-dynamic-derive-0.1.1": { @@ -11528,6 +11752,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_strings\",\n deps = [\n \"@crates__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-strings\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.5.1\",\n)\n" } }, + "crates__windows-sys-0.48.0": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.48.0/download" + ], + "strip_prefix": "windows-sys-0.48.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crates__windows-targets-0.48.5//:windows_targets\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"Win32\",\n \"Win32_Foundation\",\n \"Win32_Security\",\n \"Win32_Storage\",\n \"Win32_Storage_FileSystem\",\n \"Win32_System\",\n \"Win32_System_IO\",\n \"Win32_System_Threading\",\n \"Win32_System_WindowsProgramming\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.0\",\n)\n" + } + }, "crates__windows-sys-0.52.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11592,6 +11832,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_sys\",\n deps = [\n \"@crates__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"Wdk\",\n \"Wdk_Foundation\",\n \"Wdk_Storage\",\n \"Wdk_Storage_FileSystem\",\n \"Wdk_System\",\n \"Wdk_System_IO\",\n \"Win32\",\n \"Win32_Foundation\",\n \"Win32_Globalization\",\n \"Win32_Networking\",\n \"Win32_Networking_WinSock\",\n \"Win32_Security\",\n \"Win32_Security_Authentication\",\n \"Win32_Security_Authentication_Identity\",\n \"Win32_Security_Credentials\",\n \"Win32_Security_Cryptography\",\n \"Win32_Storage\",\n \"Win32_Storage_FileSystem\",\n \"Win32_System\",\n \"Win32_System_Com\",\n \"Win32_System_Console\",\n \"Win32_System_IO\",\n \"Win32_System_LibraryLoader\",\n \"Win32_System_Memory\",\n \"Win32_System_Pipes\",\n \"Win32_System_SystemInformation\",\n \"Win32_System_SystemServices\",\n \"Win32_System_Threading\",\n \"Win32_System_WindowsProgramming\",\n \"Win32_UI\",\n \"Win32_UI_Shell\",\n \"default\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-sys\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.61.2\",\n)\n" } }, + "crates__windows-targets-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.48.5/download" + ], + "strip_prefix": "windows-targets-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_targets\",\n deps = select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows_x86_64_msvc-0.48.5//:windows_x86_64_msvc\", # cfg(all(target_arch = \"x86_64\", target_env = \"msvc\", not(windows_raw_dylib)))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__windows_x86_64_gnu-0.48.5//:windows_x86_64_gnu\", # cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__windows_x86_64_gnu-0.48.5//:windows_x86_64_gnu\", # cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-targets\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n" + } + }, "crates__windows-targets-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11640,6 +11896,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_threading\",\n deps = [\n \"@crates__windows-link-0.2.1//:windows_link\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows-threading\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.1\",\n)\n" } }, + "crates__windows_aarch64_gnullvm-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_gnullvm\",\n deps = [\n \"@crates__windows_aarch64_gnullvm-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_aarch64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_aarch64_gnullvm-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11672,6 +11944,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_gnullvm\",\n deps = [\n \"@crates__windows_aarch64_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_aarch64_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_msvc\",\n deps = [\n \"@crates__windows_aarch64_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_aarch64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_aarch64_msvc-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11704,6 +11992,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_aarch64_msvc\",\n deps = [\n \"@crates__windows_aarch64_msvc-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_aarch64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_aarch64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_i686_gnu-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.48.5/download" + ], + "strip_prefix": "windows_i686_gnu-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnu\",\n deps = [\n \"@crates__windows_i686_gnu-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_i686_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_i686_gnu-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11768,6 +12072,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_gnullvm\",\n deps = [\n \"@crates__windows_i686_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_i686_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.48.5/download" + ], + "strip_prefix": "windows_i686_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_msvc\",\n deps = [\n \"@crates__windows_i686_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_i686_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_i686_msvc-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11800,6 +12120,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_i686_msvc\",\n deps = [\n \"@crates__windows_i686_msvc-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_i686_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_i686_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_x86_64_gnu-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnu\",\n deps = [\n \"@crates__windows_x86_64_gnu-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_x86_64_gnu-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11832,6 +12168,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnu\",\n deps = [\n \"@crates__windows_x86_64_gnu-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnu\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnu\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_x86_64_gnullvm-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnullvm\",\n deps = [\n \"@crates__windows_x86_64_gnullvm-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_x86_64_gnullvm-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11864,6 +12216,22 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_gnullvm\",\n deps = [\n \"@crates__windows_x86_64_gnullvm-0.53.1//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.53.1\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"windows_x86_64_gnullvm\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_gnullvm\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.53.1\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, + "crates__windows_x86_64_msvc-0.48.5": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "patch_args": [], + "patch_tool": "", + "patches": [], + "remote_patch_strip": 1, + "sha256": "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.48.5", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"windows_x86_64_msvc\",\n deps = [\n \"@crates__windows_x86_64_msvc-0.48.5//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.48.5\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"windows_x86_64_msvc\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=windows_x86_64_msvc\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.48.5\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + } + }, "crates__windows_x86_64_msvc-0.52.6": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { @@ -11925,7 +12293,7 @@ "https://static.crates.io/crates/wiremock/0.6.5/download" ], "strip_prefix": "wiremock-0.6.5", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wiremock\",\n deps = [\n \"@crates__assert-json-diff-2.0.2//:assert_json_diff\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__deadpool-0.12.3//:deadpool\",\n \"@crates__futures-0.3.32//:futures\",\n \"@crates__http-1.4.0//:http\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.9.0//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__regex-1.12.3//:regex\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__url-2.5.8//:url\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wiremock\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.5\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wiremock\",\n deps = [\n \"@crates__assert-json-diff-2.0.2//:assert_json_diff\",\n \"@crates__base64-0.22.1//:base64\",\n \"@crates__deadpool-0.12.3//:deadpool\",\n \"@crates__futures-0.3.32//:futures\",\n \"@crates__http-1.4.1//:http\",\n \"@crates__http-body-util-0.1.3//:http_body_util\",\n \"@crates__hyper-1.10.1//:hyper\",\n \"@crates__hyper-util-0.1.20//:hyper_util\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__once_cell-1.21.4//:once_cell\",\n \"@crates__regex-1.12.3//:regex\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__tokio-1.52.3//:tokio\",\n \"@crates__url-2.5.8//:url\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2024\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wiremock\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.6.5\",\n)\n" } }, "crates__wit-bindgen-0.51.0": { @@ -12021,7 +12389,7 @@ "https://static.crates.io/crates/wit-component/0.244.0/download" ], "strip_prefix": "wit-component-0.244.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_component\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__wasm-encoder-0.244.0//:wasm_encoder\",\n \"@crates__wasm-metadata-0.244.0//:wasm_metadata\",\n \"@crates__wasmparser-0.244.0//:wasmparser\",\n \"@crates__wit-parser-0.244.0//:wit_parser\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-component\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_component\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__bitflags-2.11.1//:bitflags\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__wasm-encoder-0.244.0//:wasm_encoder\",\n \"@crates__wasm-metadata-0.244.0//:wasm_metadata\",\n \"@crates__wasmparser-0.244.0//:wasmparser\",\n \"@crates__wit-parser-0.244.0//:wit_parser\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-component\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" } }, "crates__wit-parser-0.244.0": { @@ -12037,7 +12405,7 @@ "https://static.crates.io/crates/wit-parser/0.244.0/download" ], "strip_prefix": "wit-parser-0.244.0", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_parser\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__id-arena-2.3.0//:id_arena\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__log-0.4.29//:log\",\n \"@crates__semver-1.0.28//:semver\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.149//:serde_json\",\n \"@crates__unicode-xid-0.2.6//:unicode_xid\",\n \"@crates__wasmparser-0.244.0//:wasmparser\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"decoding\",\n \"default\",\n \"serde\",\n \"serde_json\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"wit_parser\",\n deps = [\n \"@crates__anyhow-1.0.102//:anyhow\",\n \"@crates__id-arena-2.3.0//:id_arena\",\n \"@crates__indexmap-2.14.0//:indexmap\",\n \"@crates__log-0.4.30//:log\",\n \"@crates__semver-1.0.28//:semver\",\n \"@crates__serde-1.0.228//:serde\",\n \"@crates__serde_json-1.0.150//:serde_json\",\n \"@crates__unicode-xid-0.2.6//:unicode_xid\",\n \"@crates__wasmparser-0.244.0//:wasmparser\",\n ],\n proc_macro_deps = [\n \"@crates__serde_derive-1.0.228//:serde_derive\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"decoding\",\n \"default\",\n \"serde\",\n \"serde_json\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=wit-parser\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.244.0\",\n)\n" } }, "crates__writeable-0.6.3": { @@ -12152,36 +12520,36 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"yoke_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n \"@crates__synstructure-0.13.2//:synstructure\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=yoke-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.2\",\n)\n" } }, - "crates__zerocopy-0.8.48": { + "crates__zerocopy-0.8.50": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9", + "sha256": "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/zerocopy/0.8.48/download" + "https://static.crates.io/crates/zerocopy/0.8.50/download" ], - "strip_prefix": "zerocopy-0.8.48", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zerocopy\",\n deps = [\n \"@crates__zerocopy-0.8.48//:build_script_build\",\n ],\n proc_macro_deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__zerocopy-derive-0.8.48//:zerocopy_derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"derive\", # aarch64-apple-darwin\n \"zerocopy-derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.48\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"derive\", # aarch64-apple-darwin\n \"zerocopy-derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zerocopy\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.8.48\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" + "strip_prefix": "zerocopy-0.8.50", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zerocopy\",\n deps = [\n \"@crates__zerocopy-0.8.50//:build_script_build\",\n ],\n proc_macro_deps = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__zerocopy-derive-0.8.50//:zerocopy_derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"derive\", # aarch64-apple-darwin\n \"zerocopy-derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.50\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"simd\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"derive\", # aarch64-apple-darwin\n \"zerocopy-derive\", # aarch64-apple-darwin\n ],\n \"//conditions:default\": [],\n }),\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2021\",\n pkg_name = \"zerocopy\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"0.8.50\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__zerocopy-derive-0.8.48": { + "crates__zerocopy-derive-0.8.50": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4", + "sha256": "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/zerocopy-derive/0.8.48/download" + "https://static.crates.io/crates/zerocopy-derive/0.8.50/download" ], - "strip_prefix": "zerocopy-derive-0.8.48", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"zerocopy_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.48\",\n)\n" + "strip_prefix": "zerocopy-derive-0.8.50", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"zerocopy_derive\",\n deps = [\n \"@crates__proc-macro2-1.0.106//:proc_macro2\",\n \"@crates__quote-1.0.45//:quote\",\n \"@crates__syn-2.0.117//:syn\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerocopy-derive\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.8.50\",\n)\n" } }, "crates__zerofrom-0.1.8": { @@ -12261,7 +12629,7 @@ "https://static.crates.io/crates/zerotrie/0.2.4/download" ], "strip_prefix": "zerotrie-0.2.4", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zerotrie\",\n deps = [\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.5//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"yoke\",\n \"zerofrom\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerotrie\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.4\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'loopal'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"zerotrie\",\n deps = [\n \"@crates__yoke-0.8.2//:yoke\",\n \"@crates__zerofrom-0.1.8//:zerofrom\",\n ],\n proc_macro_deps = [\n \"@crates__displaydoc-0.2.6//:displaydoc\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"yoke\",\n \"zerofrom\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=zerotrie\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.4\",\n)\n" } }, "crates__zerovec-0.11.6": { diff --git a/crates/loopal-agent-server/BUILD.bazel b/crates/loopal-agent-server/BUILD.bazel index fcfc1354..b24f82e9 100644 --- a/crates/loopal-agent-server/BUILD.bazel +++ b/crates/loopal-agent-server/BUILD.bazel @@ -35,6 +35,7 @@ rust_library( "@crates//:tokio", "@crates//:tokio-util", "@crates//:tracing", + "@crates//:uuid", ], proc_macro_deps = ["@crates//:async-trait"], ) @@ -61,6 +62,7 @@ rust_test( "//crates/loopal-ipc", "//crates/loopal-kernel", "//crates/loopal-mcp", + "//crates/loopal-memory", "//crates/loopal-protocol", "//crates/loopal-provider-api", "//crates/loopal-runtime", diff --git a/crates/loopal-agent-server/src/agent_setup.rs b/crates/loopal-agent-server/src/agent_setup.rs index 938732ae..65d101f5 100644 --- a/crates/loopal-agent-server/src/agent_setup.rs +++ b/crates/loopal-agent-server/src/agent_setup.rs @@ -22,6 +22,7 @@ pub async fn build_with_frontend(ctx: AgentSetupContext<'_>) -> anyhow::Result) -> anyhow::Result from the parent; - // convert to a synthetic Turn (SystemNote Injection) so the sub-agent's - // first LLM call sees the parent history. TurnStore is wire-build SSOT — - // stuffing fork messages only into the projected view leaves wire empty. let mut initial_turns = resume_turns; if let Some(fork_turn) = build_fork_synthetic_turn(start) { initial_turns.insert(0, fork_turn); diff --git a/crates/loopal-agent-server/src/agent_setup_context.rs b/crates/loopal-agent-server/src/agent_setup_context.rs index 93655d86..20f34f3b 100644 --- a/crates/loopal-agent-server/src/agent_setup_context.rs +++ b/crates/loopal-agent-server/src/agent_setup_context.rs @@ -37,6 +37,7 @@ pub struct AgentSetupContext<'a> { pub session_dir_override: Option<&'a std::path::Path>, pub hub: &'a crate::session_hub::SessionHub, pub decision_context: loopal_runtime::frontend::DecisionContext, + pub session_id: &'a str, } impl<'a> AgentSetupContext<'a> { @@ -53,6 +54,7 @@ impl<'a> AgentSetupContext<'a> { session_dir_override: Option<&'a std::path::Path>, hub: &'a crate::session_hub::SessionHub, decision_context: loopal_runtime::frontend::DecisionContext, + session_id: &'a str, ) -> Self { Self { cwd, @@ -66,6 +68,7 @@ impl<'a> AgentSetupContext<'a> { session_dir_override, hub, decision_context, + session_id, } } } diff --git a/crates/loopal-agent-server/src/lib.rs b/crates/loopal-agent-server/src/lib.rs index 8dcad181..1f15dd8a 100644 --- a/crates/loopal-agent-server/src/lib.rs +++ b/crates/loopal-agent-server/src/lib.rs @@ -28,6 +28,7 @@ mod ipc_handlers; mod mcp_settle; mod memory_adapter; mod memory_consolidation; +mod memory_init; mod mock_loader; #[doc(hidden)] pub mod params; diff --git a/crates/loopal-agent-server/src/memory_adapter.rs b/crates/loopal-agent-server/src/memory_adapter.rs index eb57bbf1..7b016c30 100644 --- a/crates/loopal-agent-server/src/memory_adapter.rs +++ b/crates/loopal-agent-server/src/memory_adapter.rs @@ -12,7 +12,7 @@ use tracing::{info, warn}; use loopal_agent::shared::AgentShared; use loopal_agent::spawn::{SpawnParams, SpawnTarget, spawn_agent, wait_agent}; -use loopal_memory::{MEMORY_AGENT_PROMPT, MemoryProcessor}; +use loopal_memory::{MEMORY_AGENT_PROMPT, MemoryProcessor, PROJECT_MEMORY_DIR}; use loopal_tool_api::MemoryChannel; // --------------------------------------------------------------------------- @@ -139,7 +139,7 @@ pub fn build_memory_channel( // Check if consolidation is due if settings.memory.consolidation_interval_days > 0 && loopal_memory::consolidation::needs_consolidation( - &shared.cwd.join(".loopal/memory"), + &shared.cwd.join(PROJECT_MEMORY_DIR), settings.memory.consolidation_interval_days, ) { diff --git a/crates/loopal-agent-server/src/memory_consolidation.rs b/crates/loopal-agent-server/src/memory_consolidation.rs index 749f2da9..5aa80040 100644 --- a/crates/loopal-agent-server/src/memory_consolidation.rs +++ b/crates/loopal-agent-server/src/memory_consolidation.rs @@ -6,7 +6,7 @@ use tracing::{info, warn}; use loopal_agent::shared::AgentShared; use loopal_agent::spawn::{SpawnParams, SpawnTarget, spawn_agent, wait_agent}; -use loopal_memory::MEMORY_CONSOLIDATION_PROMPT; +use loopal_memory::{MEMORY_CONSOLIDATION_PROMPT, PROJECT_MEMORY_DIR}; use super::memory_adapter::ServerMemoryProcessor; @@ -15,7 +15,7 @@ use super::memory_adapter::ServerMemoryProcessor; /// Runs in the background (non-blocking). Uses a `.consolidation_lock` file /// as an optimistic lock to prevent concurrent consolidations. pub fn trigger_consolidation(shared: &Arc, model: &str) { - let memory_dir = shared.cwd.join(".loopal/memory"); + let memory_dir = shared.cwd.join(PROJECT_MEMORY_DIR); let lock_path = match loopal_memory::consolidation::try_acquire_lock(&memory_dir) { Some(path) => path, @@ -28,7 +28,7 @@ pub fn trigger_consolidation(shared: &Arc, model: &str) { let shared = shared.clone(); let model = model.to_string(); tokio::spawn(async move { - let memory_dir = shared.cwd.join(".loopal/memory"); + let memory_dir = shared.cwd.join(PROJECT_MEMORY_DIR); let today = loopal_memory::date::today_str(); let name = ServerMemoryProcessor::make_agent_name("memory-consolidation"); let prompt = format!("{MEMORY_CONSOLIDATION_PROMPT}\n\nToday: {today}"); diff --git a/crates/loopal-agent-server/src/memory_init.rs b/crates/loopal-agent-server/src/memory_init.rs new file mode 100644 index 00000000..d3ef7a2b --- /dev/null +++ b/crates/loopal-agent-server/src/memory_init.rs @@ -0,0 +1,86 @@ +use std::collections::HashMap; +use std::path::Path; +use std::sync::Arc; +use std::sync::OnceLock; + +use loopal_config::MemoryConfig; +use loopal_kernel::Kernel; +use loopal_memory::{ + MemorySubsystem, PROJECT_MEMORY_DIR, PROJECT_MEMORY_EVENTS_DIR, ensure_gitignore, +}; +use tokio::sync::{Mutex, OnceCell}; + +type SubsystemCell = OnceCell>; +type Registry = Mutex>>; + +static MEMORY_SUBSYSTEMS: OnceLock = OnceLock::new(); + +pub async fn init_project_memory( + kernel: &mut Kernel, + cwd: &Path, + session_id: &str, + memory_config: &MemoryConfig, +) { + let memory_dir = cwd.join(PROJECT_MEMORY_DIR); + if !memory_dir.exists() { + tracing::debug!( + path = %memory_dir.display(), + "no project memory directory; skipping memory_recall init" + ); + return; + } + + let session_dir = match loopal_config::session_dir(session_id) { + Ok(p) => p, + Err(e) => { + tracing::warn!(error = %e, session_id, "session_dir resolution failed; memory_recall disabled"); + return; + } + }; + + let events_dir = cwd.join(PROJECT_MEMORY_EVENTS_DIR); + + if let Err(e) = ensure_gitignore(cwd) { + tracing::warn!(error = %e, "memory: ensure_gitignore failed; events may end up in git"); + } + + let registry = MEMORY_SUBSYSTEMS.get_or_init(|| Mutex::new(HashMap::new())); + let cell = { + let mut guard = registry.lock().await; + guard + .entry(session_id.to_string()) + .or_insert_with(|| Arc::new(OnceCell::new())) + .clone() + }; + + let gc_compress = memory_config.gc_compress_after_days; + let gc_archive = memory_config.gc_archive_after_days; + let init_result = cell + .get_or_try_init(|| async { + MemorySubsystem::bootstrap( + memory_dir.clone(), + session_dir.clone(), + events_dir.clone(), + session_id.to_string(), + gc_compress, + gc_archive, + ) + .await + .map_err(|e| { + tracing::warn!(error = %e, "memory subsystem bootstrap failed; recall tool disabled"); + }) + }) + .await; + + let subsystem = match init_result { + Ok(s) => s.clone(), + Err(()) => return, + }; + + loopal_agent::tools::register_memory_recall(kernel, subsystem.graph()); + tracing::debug!( + memory_dir = %memory_dir.display(), + session_id, + "memory_recall tool registered" + ); +} diff --git a/crates/loopal-agent-server/src/params.rs b/crates/loopal-agent-server/src/params.rs index 3708f355..68ef3d9e 100644 --- a/crates/loopal-agent-server/src/params.rs +++ b/crates/loopal-agent-server/src/params.rs @@ -33,6 +33,7 @@ pub struct StartParams { pub fork_context: Option, } +#[allow(clippy::too_many_arguments)] pub async fn build_kernel_from_config( config: &ResolvedConfig, production: bool, @@ -43,8 +44,10 @@ pub async fn build_kernel_from_config( >, cwd: std::path::PathBuf, agent_name: String, + session_id: String, ) -> anyhow::Result> { let mut settings = config.settings.clone(); + let cwd_for_memory = cwd.clone(); let secret_client: Option> = hub_connection.map(|conn| { Arc::new(loopal_secret_client::HubSecretClient::new( @@ -54,6 +57,7 @@ pub async fn build_kernel_from_config( if let Some(client) = secret_client.as_ref() { expand_provider_secrets(&mut settings, client.as_ref()).await; } + let settings_memory = settings.memory.clone(); let mut kernel = Kernel::new(settings)?; if let Some(client) = secret_client { kernel.set_secret_client(client); @@ -81,6 +85,17 @@ pub async fn build_kernel_from_config( } } loopal_agent::tools::register_all(&mut kernel); + // reason: 所有 depth 都注册 memory_recall — sub-agent 的 system prompt 也注入了 + // memory-guidance.md "always use memory_recall" 指令,若仅 root 注册会让 sub-agent + // 看到指令但找不到工具。memory.db 落在 ~/.loopal/sessions/{id}/memory.db,是 + // per-session 派生数据;不与 .loopal/memory/*.md(user SSOT)混居。 + crate::memory_init::init_project_memory( + &mut kernel, + &cwd_for_memory, + &session_id, + &settings_memory, + ) + .await; let kernel = Arc::new(kernel); if production { diff --git a/crates/loopal-agent-server/src/session_start.rs b/crates/loopal-agent-server/src/session_start.rs index b59d4704..5f099b05 100644 --- a/crates/loopal-agent-server/src/session_start.rs +++ b/crates/loopal-agent-server/src/session_start.rs @@ -45,6 +45,10 @@ pub(crate) async fn start_session( } else { "sub".to_string() }; + let preset_session_id = start + .resume + .clone() + .unwrap_or_else(|| uuid::Uuid::new_v4().to_string()); let kernel = if is_production { crate::params::build_kernel_from_config( &config, @@ -54,6 +58,7 @@ pub(crate) async fn start_session( Some(connection.clone()), cwd.clone(), agent_name, + preset_session_id.clone(), ) .await? } else { @@ -68,6 +73,7 @@ pub(crate) async fn start_session( None, cwd.clone(), "test".to_string(), + preset_session_id.clone(), ) .await? } @@ -118,6 +124,7 @@ pub(crate) async fn start_session( session_dir_override.as_deref(), hub, decision_context, + &preset_session_id, )) .await?; let agent_params = setup.params; diff --git a/crates/loopal-agent-server/tests/suite/build_kernel_depth_test.rs b/crates/loopal-agent-server/tests/suite/build_kernel_depth_test.rs index aa904ae7..d47d86a3 100644 --- a/crates/loopal-agent-server/tests/suite/build_kernel_depth_test.rs +++ b/crates/loopal-agent-server/tests/suite/build_kernel_depth_test.rs @@ -55,6 +55,7 @@ async fn build_or_panic( None, std::path::PathBuf::from("."), "test".to_string(), + "test-session".to_string(), ) .await .expect("build_kernel_from_config") diff --git a/crates/loopal-agent-server/tests/suite/hub_harness.rs b/crates/loopal-agent-server/tests/suite/hub_harness.rs index c1dd9d5b..ed953ba4 100644 --- a/crates/loopal-agent-server/tests/suite/hub_harness.rs +++ b/crates/loopal-agent-server/tests/suite/hub_harness.rs @@ -155,6 +155,7 @@ pub async fn build_hub_harness_with( Some(fixture.path()), &hub, loopal_runtime::frontend::DecisionContext::with_cwd("/tmp/test"), + "harness-session", ), ) .await diff --git a/crates/loopal-agent-server/tests/suite/memory_consolidation_test.rs b/crates/loopal-agent-server/tests/suite/memory_consolidation_test.rs index c32a76e8..a22d7ee1 100644 --- a/crates/loopal-agent-server/tests/suite/memory_consolidation_test.rs +++ b/crates/loopal-agent-server/tests/suite/memory_consolidation_test.rs @@ -55,7 +55,7 @@ fn build_shared(fixture: &TestFixture) -> Arc { async fn trigger_consolidation_skips_when_fresh_lock_exists() { let fixture = TestFixture::new(); let shared = build_shared(&fixture); - let memory_dir = shared.cwd.join(".loopal/memory"); + let memory_dir = shared.cwd.join(loopal_memory::PROJECT_MEMORY_DIR); std::fs::create_dir_all(&memory_dir).unwrap(); // Pre-create a fresh lock (timestamp = now). trigger_consolidation must @@ -85,7 +85,7 @@ async fn trigger_consolidation_skips_when_fresh_lock_exists() { async fn trigger_consolidation_acquires_lock_when_free() { let fixture = TestFixture::new(); let shared = build_shared(&fixture); - let memory_dir = shared.cwd.join(".loopal/memory"); + let memory_dir = shared.cwd.join(loopal_memory::PROJECT_MEMORY_DIR); let lock_path = memory_dir.join(".consolidation_lock"); assert!( @@ -124,7 +124,7 @@ async fn trigger_consolidation_skips_then_unlocked_caller_succeeds() { // dir again and acquires freshly. let fixture = TestFixture::new(); let shared = build_shared(&fixture); - let memory_dir = shared.cwd.join(".loopal/memory"); + let memory_dir = shared.cwd.join(loopal_memory::PROJECT_MEMORY_DIR); let lock_path = memory_dir.join(".consolidation_lock"); trigger_consolidation(&shared, "test-model"); diff --git a/crates/loopal-agent-server/tests/suite/prompt_post_test.rs b/crates/loopal-agent-server/tests/suite/prompt_post_test.rs index b0d9a410..e0c02e26 100644 --- a/crates/loopal-agent-server/tests/suite/prompt_post_test.rs +++ b/crates/loopal-agent-server/tests/suite/prompt_post_test.rs @@ -52,6 +52,7 @@ async fn append_runtime_sections_lists_configured_servers_even_when_not_yet_read None, std::path::PathBuf::from("."), "test".to_string(), + "test-session".to_string(), ) .await .expect("build"); @@ -91,6 +92,7 @@ async fn append_runtime_sections_omits_status_when_no_servers_configured() { None, std::path::PathBuf::from("."), "test".to_string(), + "test-session".to_string(), ) .await .expect("build"); @@ -120,6 +122,7 @@ async fn append_runtime_sections_shows_failed_status_for_dead_binary() { None, std::path::PathBuf::from("."), "test".to_string(), + "test-session".to_string(), ) .await .expect("build"); diff --git a/crates/loopal-agent/src/tools/collaboration/agent_spawn.rs b/crates/loopal-agent/src/tools/collaboration/agent_spawn.rs index b82c5c05..b56f0bbf 100644 --- a/crates/loopal-agent/src/tools/collaboration/agent_spawn.rs +++ b/crates/loopal-agent/src/tools/collaboration/agent_spawn.rs @@ -94,7 +94,7 @@ pub(super) async fn action_spawn( Ok(text) => { if let Some(ch) = memory_channel { for suggestion in - loopal_memory::extraction::extract_memory_suggestions(&text) + loopal_memory::agent_output::extract_memory_suggestions(&text) { let _ = ch.try_send(suggestion); } diff --git a/crates/loopal-agent/src/tools/mod.rs b/crates/loopal-agent/src/tools/mod.rs index 25cee751..432c1186 100644 --- a/crates/loopal-agent/src/tools/mod.rs +++ b/crates/loopal-agent/src/tools/mod.rs @@ -2,7 +2,10 @@ pub mod collaboration; pub mod cron; pub mod task; +use std::sync::Arc; + use loopal_kernel::Kernel; +use loopal_memory::{MemoryGraph, MemoryImportanceTool, MemoryRecallTool}; /// Register all agent tools into the kernel. pub fn register_all(kernel: &mut Kernel) { @@ -21,3 +24,11 @@ pub fn register_all(kernel: &mut Kernel) { kernel.register_tool(Box::new(cron::CronDeleteTool)); kernel.register_tool(Box::new(cron::CronListTool)); } + +/// Register the `memory_recall` tool. Called separately because it requires +/// the MemoryGraph instance, which is initialized by the agent server after +/// scanning the project's `.loopal/memory/` directory. +pub fn register_memory_recall(kernel: &mut Kernel, graph: Arc) { + kernel.register_tool(Box::new(MemoryRecallTool::new(graph.clone()))); + kernel.register_tool(Box::new(MemoryImportanceTool::new(graph))); +} diff --git a/crates/loopal-config/src/lib.rs b/crates/loopal-config/src/lib.rs index c8430eec..fc00bd3b 100644 --- a/crates/loopal-config/src/lib.rs +++ b/crates/loopal-config/src/lib.rs @@ -34,7 +34,7 @@ pub use sandbox::{ }; pub use settings::{ CompactionSettings, CwdIsolation, FetchRefinerConfig, ImageSettings, McpServerConfig, - McpSharing, OpenAiCompatConfig, ProviderConfig, ProvidersConfig, Settings, + McpSharing, MemoryConfig, OpenAiCompatConfig, ProviderConfig, ProvidersConfig, Settings, }; pub use skills::{Skill, format_skills_summary, scan_skills_dir}; pub use telemetry::TelemetryConfig; diff --git a/crates/loopal-config/src/settings/memory.rs b/crates/loopal-config/src/settings/memory.rs index 7b95ede1..4925251d 100644 --- a/crates/loopal-config/src/settings/memory.rs +++ b/crates/loopal-config/src/settings/memory.rs @@ -7,6 +7,8 @@ pub struct MemoryConfig { pub batch_window_ms: u64, pub channel_buffer: usize, pub consolidation_interval_days: u32, + pub gc_compress_after_days: u32, + pub gc_archive_after_days: u32, } impl Default for MemoryConfig { @@ -20,6 +22,8 @@ impl Default for MemoryConfig { channel_buffer: 256, // Weekly full consolidation: balance between freshness and API cost. consolidation_interval_days: 7, + gc_compress_after_days: 90, + gc_archive_after_days: 365, } } } diff --git a/crates/loopal-error/BUILD.bazel b/crates/loopal-error/BUILD.bazel index ef2f6fd7..673f7120 100644 --- a/crates/loopal-error/BUILD.bazel +++ b/crates/loopal-error/BUILD.bazel @@ -6,6 +6,8 @@ rust_library( edition = "2024", visibility = ["//visibility:public"], deps = [ + "@crates//:rusqlite", + "@crates//:serde_json", "@crates//:thiserror", ], ) diff --git a/crates/loopal-error/src/errors.rs b/crates/loopal-error/src/errors.rs index 636a30c0..79857b3f 100644 --- a/crates/loopal-error/src/errors.rs +++ b/crates/loopal-error/src/errors.rs @@ -33,6 +33,9 @@ pub enum LoopalError { #[error("Backend IO: {0}")] BackendIo(#[from] crate::io_error::ToolIoError), + #[error("Memory graph: {0}")] + MemoryGraph(#[from] crate::memory_graph_error::MemoryGraphError), + #[error("{0}")] Other(String), } diff --git a/crates/loopal-error/src/lib.rs b/crates/loopal-error/src/lib.rs index 6dcc0db3..acb816f0 100644 --- a/crates/loopal-error/src/lib.rs +++ b/crates/loopal-error/src/lib.rs @@ -1,11 +1,13 @@ mod errors; mod helpers; pub mod io_error; +pub mod memory_graph_error; pub use errors::{ AgentOutput, ConfigError, HookError, LoopalError, McpError, ProviderError, StorageError, TerminateReason, ToolError, }; pub use io_error::{ProcessHandle, ToolIoError}; +pub use memory_graph_error::{MemoryGraphError, MemorySubsystemBootstrapError}; pub type Result = std::result::Result; diff --git a/crates/loopal-error/src/memory_graph_error.rs b/crates/loopal-error/src/memory_graph_error.rs new file mode 100644 index 00000000..4243557e --- /dev/null +++ b/crates/loopal-error/src/memory_graph_error.rs @@ -0,0 +1,40 @@ +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum MemoryGraphError { + #[error("schema init failed: {0}")] + SchemaInit(String), + + #[error("watcher: {0}")] + Watcher(String), + + #[error("invalid node kind: {0}")] + InvalidNodeKind(String), + + #[error("invalid edge kind: {0}")] + InvalidEdgeKind(String), + + #[error("invalid provenance: {0}")] + InvalidProvenance(String), + + #[error("sqlite: {0}")] + Sqlite(#[from] rusqlite::Error), + + #[error("io: {0}")] + Io(#[from] std::io::Error), + + #[error("json: {0}")] + Json(#[from] serde_json::Error), +} + +#[derive(Debug, Error)] +pub enum MemorySubsystemBootstrapError { + #[error("memory dir canonicalize failed: {0}")] + CanonicalizeMemoryDir(std::io::Error), + + #[error("session dir create failed: {0}")] + CreateSessionDir(std::io::Error), + + #[error("memory graph open failed: {0}")] + GraphOpen(#[from] MemoryGraphError), +} diff --git a/crates/loopal-memory/BUILD.bazel b/crates/loopal-memory/BUILD.bazel index aca1bc23..af158c8a 100644 --- a/crates/loopal-memory/BUILD.bazel +++ b/crates/loopal-memory/BUILD.bazel @@ -3,15 +3,26 @@ load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test") rust_library( name = "loopal-memory", srcs = glob(["src/**/*.rs"]), - compile_data = glob(["agent-prompts/**"]), + compile_data = glob(["agent-prompts/**", "src/**/*.sql"]), edition = "2024", visibility = ["//visibility:public"], deps = [ "//crates/loopal-error", "//crates/loopal-tool-api", + "@crates//:chrono", + "@crates//:flate2", + "@crates//:notify-debouncer-mini", + "@crates//:regex", + "@crates//:rusqlite", + "@crates//:serde", "@crates//:serde_json", + "@crates//:serde_yaml", + "@crates//:sha2", + "@crates//:thiserror", "@crates//:tokio", "@crates//:tracing", + "@crates//:unicode-segmentation", + "@crates//:walkdir", ], proc_macro_deps = ["@crates//:async-trait"], ) @@ -24,15 +35,18 @@ rust_test( deps = [ ":loopal-memory", "//crates/loopal-backend", + "//crates/loopal-error", + "//crates/loopal-tool-api", + "@crates//:chrono", + "@crates//:flate2", + "@crates//:rusqlite", "@crates//:serde_json", "@crates//:tempfile", "@crates//:tokio", - "//crates/loopal-tool-api", ], proc_macro_deps = ["@crates//:async-trait"], ) -# Unit tests for #[cfg(test)] modules in src/ (date, consolidation, extraction) rust_test( name = "loopal-memory-unit-test", crate = ":loopal-memory", diff --git a/crates/loopal-memory/agent-prompts/memory-maintainer.md b/crates/loopal-memory/agent-prompts/memory-maintainer.md index 2c3bc75c..0d8a0fff 100644 --- a/crates/loopal-memory/agent-prompts/memory-maintainer.md +++ b/crates/loopal-memory/agent-prompts/memory-maintainer.md @@ -57,22 +57,21 @@ These two memory-domain axioms apply recursively to MEMORY.md itself — the ind 1. Read `.loopal/memory/MEMORY.md` (current index — may not exist yet) 2. Read `.loopal/LOOPAL.md` (project instructions — avoid duplicating what is already there) -3. List all `.loopal/memory/*.md` topic files to understand the existing knowledge landscape -4. Read topic files related to the new observations (understand what is already known) -5. For each observation, decide: +3. **Call `memory_recall`** with the new observation as `query` (or `anchor_names` if you already have candidate slugs in mind) to surface relevant existing memories, their bidirectional neighbors, and co-occurring suggestions in one call. Do NOT Glob/List the entire `.loopal/memory/` directory; do NOT Read individual topic files speculatively. +4. For each observation, decide: a. **New topic** → create a topic file + add an index entry - b. **Supplements existing topic** → update the topic file + refresh the index entry if the summary changed + b. **Supplements existing topic** → Read just that one topic file fully (because you must edit it), update the topic file + refresh the index entry if the summary changed c. **Contradicts existing memory** → verify by reading source code or running `git log` — keep the correct version, update or remove the outdated one d. **Redundant** → skip, no changes needed -6. Refine the MEMORY.md index — ensure every entry is a high-value, actionable summary +5. Refine the MEMORY.md index — ensure every entry is a high-value, actionable summary ## Deep Integration When incorporating observations: -- Read ALL related topic files first, not just MEMORY.md -- Look for connections across topics — if observation A relates to topic B, update the `related` field +- `memory_recall` returns: Direct hits (FTS5 match, with body_preview), Related (1–2 hop bidirectional neighbors), Co-occurring (synthesized clustering), Trail (edge provenance — distinguishes hand-written vs. inferred links). Use Trail to judge whether a connection is editorial intent (`frontmatter`/`inline-link`) or derived guess (`synthesized`). +- Only Read a topic file fully when recall flags it as a candidate for **merge**, **rewrite**, or **delete** — operations that need the full body. - If an observation mentions specific files, functions, or paths, use Glob or Read to verify they still exist. Mark stale references as outdated. -- If an observation conflicts with existing memory, check the source code or `git log --oneline -5` to determine which version is current +- If an observation conflicts with existing memory, check the source code or `git log --oneline -5` to determine which version is current. ## Memory Types diff --git a/crates/loopal-memory/eval/BUILD.bazel b/crates/loopal-memory/eval/BUILD.bazel new file mode 100644 index 00000000..2bf7866e --- /dev/null +++ b/crates/loopal-memory/eval/BUILD.bazel @@ -0,0 +1,22 @@ +load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_test") + +rust_binary( + name = "eval_recall", + srcs = glob(["src/**/*.rs"]), + compile_data = glob(["data/**"]), + edition = "2024", + visibility = ["//visibility:public"], + deps = [ + "//crates/loopal-memory", + "@crates//:serde", + "@crates//:serde_yaml", + "@crates//:tempfile", + "@crates//:tokio", + ], +) + +rust_test( + name = "eval_recall_test", + crate = ":eval_recall", + edition = "2024", +) diff --git a/crates/loopal-memory/eval/data/fixtures/.md b/crates/loopal-memory/eval/data/fixtures/.md new file mode 100644 index 00000000..e69de29b diff --git a/crates/loopal-memory/eval/data/fixtures/MEMORY.md b/crates/loopal-memory/eval/data/fixtures/MEMORY.md new file mode 100644 index 00000000..b5aee790 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/MEMORY.md @@ -0,0 +1,35 @@ +--- +generated_from: graph +generated_at: 2026-05-28T10:00:00Z +node_count: 25 +edge_count: 38 +--- + +# Memory Index + +## Project (high-relevance) +- [[twitter-automation]] (referenced by 5) — Twitter/X rate limit + automation policy +- [[scanner-state]] (referenced by 3) — Resumable scan job state tracking +- [[twitter-rate-limit]] (referenced by 3) — Numerical rate-limit caps +- [[dashboard-deploy]] (referenced by 2) — Dashboard deploy pipeline +- [[cold-email-templates]] (referenced by 2) — Outbound email templates + +## Feedback (high-relevance) +- [[feedback-no-mocks-in-tests]] — Real DB for integration tests, never mocks +- [[feedback-batch-rejected]] — Single bundled PR for area-wide refactors +- [[feedback-draft-discharges]] — Drafts are working hypotheses, not contracts + +## User (high-relevance) +- [[user-tone-prefer-direct]] — User prefers terse, direct responses + +## Reference +- [[chrome-cdp]] — Chrome for Testing CDP setup +- [[reference-volcengine-api]] — Volcengine image generation API +- [[reference-grafana-dashboard]] — Production Grafana dashboard + +## Recently added +- 2026-05-15 [[twitter-automation]] +- 2026-05-12 [[twitter-cooldown]] +- 2026-05-10 [[gtm-high-intent-radar]] + +[Use memory_recall(query=...) to look up content. Do NOT Read individual .md files unless you are about to edit one.] diff --git a/crates/loopal-memory/eval/data/fixtures/alert-fatigue-audit.md b/crates/loopal-memory/eval/data/fixtures/alert-fatigue-audit.md new file mode 100644 index 00000000..b5eaea6a --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/alert-fatigue-audit.md @@ -0,0 +1,14 @@ +--- +name: Quarterly Alert Fatigue Audit +description: Process for retiring noisy alerts based on PagerDuty + ack data +type: project +created_at: 2026-03-05 +updated_at: 2026-05-25 +ttl_days: 180 +related: + - alert-rules-catalog + - oncall-runbook + - metric-cardinality-budget +--- + +Query PagerDuty for last-90d alerts, compute (acks_with_no_action / total_fires) per rule; >40% goes on the retire list. Q1 2026 we killed 7 rules, mostly disk-percent thresholds replaced with predict_linear-based ones documented in [[alert-rules-catalog]]. Oncall lead reviews list with [[oncall-runbook]] owner before deletion. diff --git a/crates/loopal-memory/eval/data/fixtures/alert-rules-catalog.md b/crates/loopal-memory/eval/data/fixtures/alert-rules-catalog.md new file mode 100644 index 00000000..24e75878 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/alert-rules-catalog.md @@ -0,0 +1,15 @@ +--- +name: Prometheus Alert Rules Catalog +description: Where the alert rules live, naming convention, and review cadence +type: reference +created_at: 2026-02-02 +updated_at: 2026-05-14 +ttl_days: null +related: + - observability-stack + - alert-fatigue-audit + - oncall-runbook + - slo-definitions +--- + +Rules live in `ops/prometheus/rules/*.yaml`, named `__` (e.g. `scanner_lag_critical`). Every rule MUST link to a runbook section in [[oncall-runbook]] and be backed by a budget in [[slo-definitions]]. Quarterly we run [[alert-fatigue-audit]] to retire rules with >40% false-positive rate. diff --git a/crates/loopal-memory/eval/data/fixtures/api-key-rotation.md b/crates/loopal-memory/eval/data/fixtures/api-key-rotation.md new file mode 100644 index 00000000..a6cd670d --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/api-key-rotation.md @@ -0,0 +1,19 @@ +--- +name: API Key Rotation +description: 90-day rotation for M2M keys with dual-key grace +type: project +created_at: 2026-03-15 +updated_at: 2026-05-20 +ttl_days: null +related: + - auth-architecture + - jwt-rs256-signing + - feedback-batch-rejected +--- + +Machine-to-machine API keys rotate every 90 days; both old and new keys +are accepted for a 7-day overlap window. Rate-limit responses (HTTP 429) +during rotation windows surface to the same telemetry as +[[feedback-batch-rejected]] — distinguish 401 (key expired) from 429. +Signing keys for [[jwt-rs256-signing]] rotate on the same cadence; see +[[auth-architecture]]. diff --git a/crates/loopal-memory/eval/data/fixtures/artifact-cache-strategy.md b/crates/loopal-memory/eval/data/fixtures/artifact-cache-strategy.md new file mode 100644 index 00000000..ff5425d1 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/artifact-cache-strategy.md @@ -0,0 +1,19 @@ +--- +name: Artifact Cache Strategy +description: actions/cache + sccache + BuildKit registry cache, keyed on Cargo.lock + rustc hash. +type: reference +created_at: 2026-01-20 +updated_at: 2026-04-05 +ttl_days: null +related: + - docker-multistage-build + - cicd-pipeline-overview + - bazel-remote-cache +--- + +Key is `${{ hashFiles('Cargo.lock') }}-${{ env.RUSTC_HASH }}`; partial +restore via `restore-keys` falls back to last green main. BuildKit +registry cache (mode=max) sits at ghcr.io/loopal/buildcache and is +pruned weekly. Bazel builds use a separate [[bazel-remote-cache]]; +overview in [[cicd-pipeline-overview]] and consumed by +[[docker-multistage-build]]. diff --git a/crates/loopal-memory/eval/data/fixtures/audit-log-retention.md b/crates/loopal-memory/eval/data/fixtures/audit-log-retention.md new file mode 100644 index 00000000..961ebda1 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/audit-log-retention.md @@ -0,0 +1,19 @@ +--- +name: Audit Log Retention +description: 18-month retention with WORM S3 + Grafana dashboard +type: reference +created_at: 2026-03-01 +updated_at: 2026-05-15 +ttl_days: null +related: + - auth-architecture + - rbac-role-matrix + - reference-grafana-dashboard +--- + +Auth events (login, logout, role change, MFA enroll, key rotation) write +to s3://loopal-audit/auth/ with Object Lock in compliance mode, retention +18 months. The query layer is the auth panel of +[[reference-grafana-dashboard]]; role-change events specifically come from +[[rbac-role-matrix]] enforcement, and the whole pipeline is part of +[[auth-architecture]]. diff --git a/crates/loopal-memory/eval/data/fixtures/auth-architecture.md b/crates/loopal-memory/eval/data/fixtures/auth-architecture.md new file mode 100644 index 00000000..257b7455 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/auth-architecture.md @@ -0,0 +1,22 @@ +--- +name: Auth Architecture Overview +description: Hub doc for our auth + session security stack +type: reference +created_at: 2026-01-12 +updated_at: 2026-05-18 +ttl_days: null +related: + - oauth2-pkce-flow + - jwt-rs256-signing + - session-expiry-policy + - rbac-role-matrix + - audit-log-retention + - api-key-rotation +--- + +All user-facing services authenticate via [[oauth2-pkce-flow]] and issue +short-lived [[jwt-rs256-signing]] access tokens with refresh tokens stored +in httpOnly cookies; expiry rules are codified in [[session-expiry-policy]] +and role mapping lives in [[rbac-role-matrix]]. Audit events flow to S3 +per [[audit-log-retention]], and machine-to-machine traffic uses keys +rotated under [[api-key-rotation]]. diff --git a/crates/loopal-memory/eval/data/fixtures/bazel-remote-cache.md b/crates/loopal-memory/eval/data/fixtures/bazel-remote-cache.md new file mode 100644 index 00000000..6730d837 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/bazel-remote-cache.md @@ -0,0 +1,18 @@ +--- +name: Bazel Remote Cache +description: buchgr/bazel-remote on s3://loopal-bazel-cache, 500GB LRU, 78% hit rate on main. +type: reference +created_at: 2026-02-02 +updated_at: 2026-04-15 +ttl_days: null +related: + - artifact-cache-strategy + - test-parallelization-shards +--- + +We run buchgr/bazel-remote v2.4.5 behind an internal ALB, backed by +s3://loopal-bazel-cache with 500GB LRU eviction. Hit rate on main is +~78% (measured via `bazel-remote-stats`); PR branches drop to ~42% due +to Cargo.lock churn — same root cause as [[artifact-cache-strategy]]. +Shard configuration in [[test-parallelization-shards]] depends on this +being warm. diff --git a/crates/loopal-memory/eval/data/fixtures/blue-green-fallback.md b/crates/loopal-memory/eval/data/fixtures/blue-green-fallback.md new file mode 100644 index 00000000..43071de0 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/blue-green-fallback.md @@ -0,0 +1,17 @@ +--- +name: Blue-Green Fallback +description: When canary fails twice, swap full traffic via ALB target-group weights. +type: project +created_at: 2026-03-08 +updated_at: 2026-04-10 +ttl_days: 365 +related: + - deploy-canary-rollout + - dashboard-deploy +--- + +Fallback path: ALB listener rule flips weight 100/0 from green to blue +in one API call (`modify-listener --default-actions`). We kept this +because [[deploy-canary-rollout]]'s gradual abort takes 4-7 minutes, +and the Mar 6 outage showed we need <60s recovery. Dashboard panel +added in [[dashboard-deploy]]. diff --git a/crates/loopal-memory/eval/data/fixtures/chrome-cdp.md b/crates/loopal-memory/eval/data/fixtures/chrome-cdp.md new file mode 100644 index 00000000..2d0dd4a6 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/chrome-cdp.md @@ -0,0 +1,13 @@ +--- +name: Chrome DevTools CDP Session +description: Reusable Chrome for Testing CDP setup +type: reference +created_at: 2026-01-15 +updated_at: 2026-04-20 +ttl_days: null +related: + - twitter-automation + - twitter-monitor-scraping +--- + +Chrome for Testing binary (not headless Chrome) + chromedriver, controlled via CDP protocol on localhost:9222. Used by [[twitter-automation]] and [[twitter-monitor-scraping]] for browser-level control that bypasses puppeteer/playwright detection. diff --git a/crates/loopal-memory/eval/data/fixtures/cicd-pipeline-overview.md b/crates/loopal-memory/eval/data/fixtures/cicd-pipeline-overview.md new file mode 100644 index 00000000..6d009a13 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/cicd-pipeline-overview.md @@ -0,0 +1,21 @@ +--- +name: CI/CD Pipeline Overview +description: Hub doc mapping our GitHub Actions topology, runner pool, and deploy stages. +type: reference +created_at: 2026-01-08 +updated_at: 2026-04-22 +ttl_days: null +related: + - github-actions-workflow-layout + - self-hosted-runner-pool + - deploy-canary-rollout + - artifact-cache-strategy + - flaky-test-quarantine + - secrets-oidc-vault +--- + +Our pipeline fans out from [[github-actions-workflow-layout]] into the +[[self-hosted-runner-pool]] (12 m6i.2xlarge nodes) for build+test, then +hands artifacts to [[deploy-canary-rollout]] for staged rollout. Cache, +secrets, and quarantine policy are tracked in [[artifact-cache-strategy]], +[[secrets-oidc-vault]], and [[flaky-test-quarantine]] respectively. diff --git a/crates/loopal-memory/eval/data/fixtures/cold-email-deliverability.md b/crates/loopal-memory/eval/data/fixtures/cold-email-deliverability.md new file mode 100644 index 00000000..b5f7d8a9 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/cold-email-deliverability.md @@ -0,0 +1,12 @@ +--- +name: Cold Email Deliverability +description: SPF/DKIM/DMARC + warmup procedure +type: project +created_at: 2026-03-27 +updated_at: 2026-04-30 +ttl_days: 90 +related: + - cold-email-templates +--- + +Domain warmup: send 5/day to known-engaged contacts for week 1, ramp to 50/day by week 4. SPF/DKIM/DMARC must align on the sending domain. Template variations from [[cold-email-templates]] protect against subject-line collision blacklisting. diff --git a/crates/loopal-memory/eval/data/fixtures/cold-email-templates.md b/crates/loopal-memory/eval/data/fixtures/cold-email-templates.md new file mode 100644 index 00000000..631cbc63 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/cold-email-templates.md @@ -0,0 +1,13 @@ +--- +name: Cold Email Templates +description: Reusable templates for outbound email +type: project +created_at: 2026-03-25 +updated_at: 2026-05-02 +ttl_days: 90 +related: + - cold-email-deliverability + - twitter-dm-outreach +--- + +Templates live in templates/cold/*.j2 with merge fields {name}, {company}, {pain_point}. Subject lines must vary per template; deliverability concerns in [[cold-email-deliverability]] kill domain reputation if subjects collide. Adjacent channel: [[twitter-dm-outreach]] shares the same merge-field convention. diff --git a/crates/loopal-memory/eval/data/fixtures/connection-storm-incident.md b/crates/loopal-memory/eval/data/fixtures/connection-storm-incident.md new file mode 100644 index 00000000..1c62b1d1 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/connection-storm-incident.md @@ -0,0 +1,14 @@ +--- +name: 2026-03-14 Connection Storm Postmortem +description: Postmortem of the pgbouncer pool exhaustion incident triggered by a runaway migration +type: feedback +created_at: 2026-03-16 +updated_at: 2026-03-20 +ttl_days: null +related: + - pgbouncer-pool-sizing + - schema-migration-flyway + - feedback-batch-rejected +--- + +Migration V20260314_add_user_email_index.sql forgot CONCURRENTLY → AccessExclusiveLock 12min → pgbouncer pool drained → app workers retry-stormed → cascading FK validation lock. Drove [[pgbouncer-pool-sizing]] from 48→24 (less queue room, faster fail) and made CONCURRENTLY mandatory in [[schema-migration-flyway]]. Related write-contention pattern documented in [[feedback-batch-rejected]]. diff --git a/crates/loopal-memory/eval/data/fixtures/dashboard-deploy.md b/crates/loopal-memory/eval/data/fixtures/dashboard-deploy.md new file mode 100644 index 00000000..000e95ad --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/dashboard-deploy.md @@ -0,0 +1,13 @@ +--- +name: Dashboard Deploy Pipeline +description: How the analytics dashboard ships to prod +type: project +created_at: 2026-02-20 +updated_at: 2026-05-03 +ttl_days: 90 +related: + - dashboard-metrics + - reference-grafana-dashboard +--- + +Dashboard deploys go through staging → canary (5% traffic) → full. Each step runs the smoke suite which checks the metrics endpoint described in [[dashboard-metrics]]. Production graphs live at [[reference-grafana-dashboard]] for oncall visibility. diff --git a/crates/loopal-memory/eval/data/fixtures/dashboard-metrics.md b/crates/loopal-memory/eval/data/fixtures/dashboard-metrics.md new file mode 100644 index 00000000..588ead03 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/dashboard-metrics.md @@ -0,0 +1,13 @@ +--- +name: Dashboard Metrics Schema +description: What the dashboard exposes and units +type: project +created_at: 2026-02-22 +updated_at: 2026-04-25 +ttl_days: 90 +related: + - dashboard-deploy + - reference-grafana-dashboard +--- + +Exposed metrics: request_count (counter), p50/p95/p99 latency (histogram, ms), error_rate (gauge). All are prefixed `loopal_` and scraped at 15s intervals. Deployment process in [[dashboard-deploy]] depends on these endpoints being live during smoke checks. Production view at [[reference-grafana-dashboard]]. diff --git a/crates/loopal-memory/eval/data/fixtures/deploy-canary-rollout.md b/crates/loopal-memory/eval/data/fixtures/deploy-canary-rollout.md new file mode 100644 index 00000000..36140005 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/deploy-canary-rollout.md @@ -0,0 +1,19 @@ +--- +name: Deploy Canary Rollout +description: 5%/25%/100% Argo Rollouts canary with SLO-gated promotion via Flagger metrics. +type: reference +created_at: 2026-02-05 +updated_at: 2026-04-19 +ttl_days: null +related: + - cicd-pipeline-overview + - secrets-oidc-vault + - dashboard-deploy + - blue-green-fallback +--- + +Argo Rollouts steps: 5% for 5min, 25% for 10min, then 100%. Promotion +gate queries Prometheus for p99 latency < 380ms and 5xx rate < 0.2% +(metrics surfaced in [[dashboard-deploy]]). If gate fails twice we fall +back to [[blue-green-fallback]] and page on-call. Creds via +[[secrets-oidc-vault]]. diff --git a/crates/loopal-memory/eval/data/fixtures/docker-multistage-build.md b/crates/loopal-memory/eval/data/fixtures/docker-multistage-build.md new file mode 100644 index 00000000..4dfc9f43 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/docker-multistage-build.md @@ -0,0 +1,19 @@ +--- +name: Docker Multi-Stage Build +description: 4-stage Dockerfile (deps, build, test, runtime) shaving 380MB off final image. +type: reference +created_at: 2026-01-18 +updated_at: 2026-03-12 +ttl_days: null +related: + - artifact-cache-strategy + - github-actions-workflow-layout + - cicd-pipeline-overview +--- + +The `deps` stage installs from lockfile only (cached via +[[artifact-cache-strategy]] BuildKit mount), `build` compiles, `test` +runs smoke tests, and `runtime` copies just the binary into +gcr.io/distroless/cc-debian12. Image dropped from 612MB to 232MB after +removing the dev shell that [[github-actions-workflow-layout]]'s +nightly job kept rebuilding. diff --git a/crates/loopal-memory/eval/data/fixtures/feedback-batch-rejected.md b/crates/loopal-memory/eval/data/fixtures/feedback-batch-rejected.md new file mode 100644 index 00000000..cd00e0df --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/feedback-batch-rejected.md @@ -0,0 +1,15 @@ +--- +name: Batch PR Approach Validated +description: Single bundled PR preferred for area-wide refactors +type: feedback +created_at: 2026-03-08 +updated_at: 2026-03-08 +ttl_days: null +related: [] +--- + +**Rule**: for refactors that touch one logical area, ship a single bundled PR — don't split into per-file PRs. + +**Why**: user confirmed after the loopal-memory split: splitting into 8 PRs would have been churn, not value. Reviewer context is preserved better in a single PR for area-scoped work. + +**How to apply**: only split when the changes are independent (separate concerns); bundle when they share a single rationale. diff --git a/crates/loopal-memory/eval/data/fixtures/feedback-draft-discharges.md b/crates/loopal-memory/eval/data/fixtures/feedback-draft-discharges.md new file mode 100644 index 00000000..d56ae58f --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/feedback-draft-discharges.md @@ -0,0 +1,15 @@ +--- +name: Draft Discharges Commitment +description: User considers a draft as a soft commitment, not a hard plan +type: feedback +created_at: 2026-03-20 +updated_at: 2026-03-20 +ttl_days: null +related: [] +--- + +**Rule**: a drafted plan/spec is a working hypothesis, not a contract. + +**Why**: user observed that treating drafts as immutable produced over-engineered code when requirements drifted. Drafts should be ripped up freely when better information arrives. + +**How to apply**: re-evaluate the plan whenever new constraints surface; don't anchor on what was written if it's clearly suboptimal now. diff --git a/crates/loopal-memory/eval/data/fixtures/feedback-no-mocks-in-tests.md b/crates/loopal-memory/eval/data/fixtures/feedback-no-mocks-in-tests.md new file mode 100644 index 00000000..9778e07b --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/feedback-no-mocks-in-tests.md @@ -0,0 +1,15 @@ +--- +name: No Mocks in Integration Tests +description: Real DB for integration tests, never mocks +type: feedback +created_at: 2026-02-05 +updated_at: 2026-02-05 +ttl_days: null +related: [] +--- + +**Rule**: integration tests must hit a real database, not mocks. + +**Why**: Last quarter a mocked test passed while the prod migration failed because the mock didn't enforce the new NOT NULL constraint. Mock/prod divergence hid the bug. + +**How to apply**: when writing tests for any code that touches the DB schema, set up a tempfile sqlite + apply real schema; never inject a mock connection. diff --git a/crates/loopal-memory/eval/data/fixtures/flaky-test-quarantine.md b/crates/loopal-memory/eval/data/fixtures/flaky-test-quarantine.md new file mode 100644 index 00000000..bb7dde92 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/flaky-test-quarantine.md @@ -0,0 +1,19 @@ +--- +name: Flaky Test Quarantine +description: Auto-tag tests with >2% failure rate over 200 runs; quarantined tests run nightly only. +type: project +created_at: 2026-02-18 +updated_at: 2026-04-20 +ttl_days: null +related: + - test-parallelization-shards + - cicd-pipeline-overview + - feedback-no-mocks-in-tests +--- + +A nightly job scans the last 200 CI runs from BigQuery export, marks +any test with >2% failure rate, and adds `#[ignore = "quarantine"]` +via codemod. Quarantined tests still run in nightly.yml so we don't +lose signal. Many quarantines trace back to network mocks — see +[[feedback-no-mocks-in-tests]]. Sharding config in +[[test-parallelization-shards]]. diff --git a/crates/loopal-memory/eval/data/fixtures/github-actions-workflow-layout.md b/crates/loopal-memory/eval/data/fixtures/github-actions-workflow-layout.md new file mode 100644 index 00000000..5a0d03fa --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/github-actions-workflow-layout.md @@ -0,0 +1,18 @@ +--- +name: GitHub Actions Workflow Layout +description: How ci.yml, deploy.yml, and nightly.yml are split and what each owns. +type: reference +created_at: 2026-01-10 +updated_at: 2026-03-30 +ttl_days: null +related: + - cicd-pipeline-overview + - test-parallelization-shards + - docker-multistage-build +--- + +ci.yml runs on every PR (lint + unit + 8-shard integration via +[[test-parallelization-shards]]), deploy.yml triggers on tag push and +feeds [[deploy-canary-rollout]], nightly.yml rebuilds base images per +[[docker-multistage-build]] at 03:17 UTC. All three reuse the matrix +defined in [[cicd-pipeline-overview]]. diff --git a/crates/loopal-memory/eval/data/fixtures/gtm-high-intent-radar.md b/crates/loopal-memory/eval/data/fixtures/gtm-high-intent-radar.md new file mode 100644 index 00000000..60be6ce7 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/gtm-high-intent-radar.md @@ -0,0 +1,13 @@ +--- +name: GTM High Intent Radar +description: Identifying ready-to-buy prospects +type: project +created_at: 2026-04-25 +updated_at: 2026-05-10 +ttl_days: 90 +related: + - twitter-monitor-scraping + - scanner-state +--- + +Signals indicating high purchase intent: searches for competitor products, asks about pricing publicly, complains about current tools, hires for related roles. Signal aggregation runs through the [[scanner-state]] pipeline; raw signal collection happens via [[twitter-monitor-scraping]] for the social channel. diff --git a/crates/loopal-memory/eval/data/fixtures/incident-postmortem-template.md b/crates/loopal-memory/eval/data/fixtures/incident-postmortem-template.md new file mode 100644 index 00000000..3ca2d715 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/incident-postmortem-template.md @@ -0,0 +1,13 @@ +--- +name: Incident Postmortem Template +description: Blameless postmortem format we use for SEV1/SEV2 incidents +type: reference +created_at: 2026-02-14 +updated_at: 2026-04-30 +ttl_days: null +related: + - slo-definitions + - oncall-runbook +--- + +Sections: timeline (UTC, trace_ids from [[otel-trace-propagation]]), impact (users affected + error budget burned per [[slo-definitions]]), root cause (5-whys), action items (with owner + due date + Jira link). Published in `docs/postmortems/YYYY-MM-DD-slug.md` and reviewed in the next ops weekly. Cross-reference the relevant runbook section in [[oncall-runbook]] so future oncall finds prior context. diff --git a/crates/loopal-memory/eval/data/fixtures/index-bloat-investigation.md b/crates/loopal-memory/eval/data/fixtures/index-bloat-investigation.md new file mode 100644 index 00000000..d32fafbf --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/index-bloat-investigation.md @@ -0,0 +1,13 @@ +--- +name: Index Bloat Investigation +description: pgstattuple + REINDEX CONCURRENTLY workflow for bloated indexes +type: reference +created_at: 2026-03-22 +updated_at: 2026-04-18 +ttl_days: 180 +related: + - vacuum-tuning-guide + - slow-query-triage +--- + +Run pgstattuple_approx on suspect index; bloat > 40% triggers REINDEX CONCURRENTLY. Cannot reindex while [[vacuum-tuning-guide]] autovacuum holds ShareUpdateExclusiveLock — schedule overnight. Symptom usually surfaces via [[slow-query-triage]] as a previously fast lookup now doing Bitmap Index Scan with 10x heap fetches. diff --git a/crates/loopal-memory/eval/data/fixtures/jwt-clock-skew-incident.md b/crates/loopal-memory/eval/data/fixtures/jwt-clock-skew-incident.md new file mode 100644 index 00000000..71b7f57a --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/jwt-clock-skew-incident.md @@ -0,0 +1,17 @@ +--- +name: JWT Clock Skew Incident 2026-04 +description: Postmortem — verifiers rejecting valid tokens during DST +type: feedback +created_at: 2026-04-15 +updated_at: 2026-04-18 +ttl_days: 365 +related: + - jwt-rs256-signing + - audit-log-retention +--- + +On 2026-04-13 ~3% of /api requests returned 401 invalid_token for ~40 min +after an edge node's chrony drifted +8s; verifiers had leeway=0. Fix: +standardize leeway=30s in the shared JWT verifier wrapper used by all +services per [[jwt-rs256-signing]]. Postmortem audit trail captured in +[[audit-log-retention]]; alert added for chrony offset >2s on edge fleet. diff --git a/crates/loopal-memory/eval/data/fixtures/jwt-rs256-signing.md b/crates/loopal-memory/eval/data/fixtures/jwt-rs256-signing.md new file mode 100644 index 00000000..52b45a40 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/jwt-rs256-signing.md @@ -0,0 +1,19 @@ +--- +name: JWT RS256 Signing & Verification +description: Asymmetric JWT signing with JWKS rotation +type: reference +created_at: 2026-01-22 +updated_at: 2026-05-10 +ttl_days: null +related: + - auth-architecture + - oauth2-pkce-flow + - api-key-rotation +--- + +Access tokens are RS256 with 2048-bit keys; JWKS served at +/.well-known/jwks.json with kid rotated every 30 days while keeping the +prior key valid for 24h grace. Verifiers MUST check iss=auth.loopal.io, +aud=api, and exp; symmetric HS256 is forbidden in code review. Issuance +happens after [[oauth2-pkce-flow]] succeeds; key rotation cadence mirrors +[[api-key-rotation]] and feeds [[auth-architecture]]. diff --git a/crates/loopal-memory/eval/data/fixtures/log-retention-policy.md b/crates/loopal-memory/eval/data/fixtures/log-retention-policy.md new file mode 100644 index 00000000..050bafcd --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/log-retention-policy.md @@ -0,0 +1,13 @@ +--- +name: Loki Log Retention Policy +description: How long we keep logs at each tier and why +type: project +created_at: 2026-01-22 +updated_at: 2026-03-15 +ttl_days: null +related: + - observability-stack + - structured-log-schema +--- + +Hot tier (Loki, queryable <2s): 14 days. Warm tier (S3, queryable via `logcli` with 30s+ latency): 90 days. Anything older is dropped — financial events ship separately to BigQuery from the producer, not from logs. Costs are driven by label cardinality, see [[structured-log-schema]] for the rule against putting `user_id` in labels, and the policy is summarized in [[observability-stack]]. diff --git a/crates/loopal-memory/eval/data/fixtures/loopal-cron-miss.md b/crates/loopal-memory/eval/data/fixtures/loopal-cron-miss.md new file mode 100644 index 00000000..f7f1b46f --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/loopal-cron-miss.md @@ -0,0 +1,11 @@ +--- +name: Loopal Cron Miss Handling +description: What happens when scheduled jobs miss their window +type: project +created_at: 2026-04-10 +updated_at: 2026-04-18 +ttl_days: 90 +related: [] +--- + +If the agent process is offline at a scheduled cron time, the job is recorded as "missed" not silently dropped. On next startup, missed durable jobs are surfaced for catch-up review. Non-durable (session-only) jobs are gone with the process and are not recovered. diff --git a/crates/loopal-memory/eval/data/fixtures/metric-cardinality-budget.md b/crates/loopal-memory/eval/data/fixtures/metric-cardinality-budget.md new file mode 100644 index 00000000..b93f51b0 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/metric-cardinality-budget.md @@ -0,0 +1,13 @@ +--- +name: Prometheus Metric Cardinality Budget +description: Per-service active-series cap and how we enforce it +type: project +created_at: 2026-02-18 +updated_at: 2026-05-08 +ttl_days: null +related: + - structured-log-schema + - alert-fatigue-audit +--- + +Each service gets 50k active series; the `prometheus_target_scrapes_exceeded_sample_limit_total` alert fires at 80%. Common offenders: putting `request_id` or `trace_id` in label values (use exemplars instead, same rule as [[structured-log-schema]]). When budget breach causes scrape failure cascade it shows up in [[alert-fatigue-audit]] as a noisy paging hotspot. diff --git a/crates/loopal-memory/eval/data/fixtures/mfa-enrollment-flow.md b/crates/loopal-memory/eval/data/fixtures/mfa-enrollment-flow.md new file mode 100644 index 00000000..af4a6d16 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/mfa-enrollment-flow.md @@ -0,0 +1,18 @@ +--- +name: MFA Enrollment & Step-Up +description: TOTP enrollment + WebAuthn step-up for sensitive ops +type: project +created_at: 2026-02-14 +updated_at: 2026-05-09 +ttl_days: null +related: + - session-expiry-policy + - rbac-role-matrix + - suspicious-login-detection +--- + +Enrollment offers TOTP (RFC 6238, 30s window, SHA-1 for Authenticator +compat) plus optional WebAuthn platform authenticator; WebAuthn is required +for any role with admin:* per [[rbac-role-matrix]]. Step-up is triggered +by [[session-expiry-policy]] (>24h absolute) or by +[[suspicious-login-detection]] flagging the session as risk≥medium. diff --git a/crates/loopal-memory/eval/data/fixtures/oauth2-pkce-flow.md b/crates/loopal-memory/eval/data/fixtures/oauth2-pkce-flow.md new file mode 100644 index 00000000..2625d6ff --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/oauth2-pkce-flow.md @@ -0,0 +1,19 @@ +--- +name: OAuth2 PKCE Flow +description: Authorization Code + PKCE for SPA and mobile clients +type: reference +created_at: 2026-01-20 +updated_at: 2026-04-02 +ttl_days: null +related: + - auth-architecture + - jwt-rs256-signing + - suspicious-login-detection +--- + +SPA clients (web + iOS) use Authorization Code with PKCE (S256), code +verifier 64 bytes, code_challenge sent on /authorize and verifier on +/token; we reject plain challenges per RFC 7636. Tokens minted here are +the access JWTs described in [[jwt-rs256-signing]], and login telemetry +is consumed by [[suspicious-login-detection]] — see [[auth-architecture]] +for the surrounding stack. diff --git a/crates/loopal-memory/eval/data/fixtures/observability-stack.md b/crates/loopal-memory/eval/data/fixtures/observability-stack.md new file mode 100644 index 00000000..e99126fd --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/observability-stack.md @@ -0,0 +1,16 @@ +--- +name: Observability Stack Overview +description: Hub doc for our logging, tracing, alerting stack and how the pieces connect +type: reference +created_at: 2026-01-10 +updated_at: 2026-05-12 +ttl_days: null +related: + - structured-log-schema + - otel-trace-propagation + - alert-rules-catalog + - slo-definitions + - log-retention-policy +--- + +We run Vector → Loki for logs, OTel Collector → Tempo for traces, and Prometheus → Alertmanager → PagerDuty for alerts. All three feed [[reference-grafana-dashboard]]. Every service MUST emit logs per [[structured-log-schema]] and propagate trace context per [[otel-trace-propagation]]; alert wiring is owned by [[alert-rules-catalog]] and budgets come from [[slo-definitions]]. diff --git a/crates/loopal-memory/eval/data/fixtures/oncall-runbook.md b/crates/loopal-memory/eval/data/fixtures/oncall-runbook.md new file mode 100644 index 00000000..c440c802 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/oncall-runbook.md @@ -0,0 +1,14 @@ +--- +name: Oncall Runbook Index +description: Entry point for any paged alert — find the runbook section by rule name +type: reference +created_at: 2026-01-30 +updated_at: 2026-05-18 +ttl_days: null +related: + - alert-rules-catalog + - incident-postmortem-template + - trace-sampling-policy +--- + +Runbook sections are named exactly after the alert rule (e.g. `scanner_lag_critical` → `runbook.md#scanner_lag_critical`). Each section MUST have: symptom, diagnostic queries (link to [[reference-grafana-dashboard]]), known-good remediation, and escalation path. After resolving page, file [[incident-postmortem-template]] within 24h if SEV<=2. diff --git a/crates/loopal-memory/eval/data/fixtures/otel-trace-propagation.md b/crates/loopal-memory/eval/data/fixtures/otel-trace-propagation.md new file mode 100644 index 00000000..609f390a --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/otel-trace-propagation.md @@ -0,0 +1,14 @@ +--- +name: OpenTelemetry Trace Propagation +description: W3C traceparent header handling across HTTP, gRPC, and async job queues +type: reference +created_at: 2026-01-18 +updated_at: 2026-05-03 +ttl_days: null +related: + - observability-stack + - trace-sampling-policy + - structured-log-schema +--- + +Use W3C `traceparent` on every HTTP edge; gRPC clients inject via the OTel interceptor. For async work (Sidekiq, our internal `scanner-job` queue) we serialize `traceparent` into the job payload so [[scanner-state]] retries inherit the original trace. Sampling decisions live in [[trace-sampling-policy]] and the `trace_id` field is required by [[structured-log-schema]] to correlate logs. diff --git a/crates/loopal-memory/eval/data/fixtures/partition-rotation-cron.md b/crates/loopal-memory/eval/data/fixtures/partition-rotation-cron.md new file mode 100644 index 00000000..6bb95ed4 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/partition-rotation-cron.md @@ -0,0 +1,14 @@ +--- +name: Monthly Partition Rotation +description: pg_partman create_parent + retention cron for time-series tables +type: reference +created_at: 2026-02-20 +updated_at: 2026-05-05 +ttl_days: null +related: + - postgres-runbook + - vacuum-tuning-guide + - schema-migration-flyway +--- + +events and api_logs partitioned monthly via pg_partman, premake=3, retention=12 months. Cron runs 2026-style cron "17 3 * * *" calling run_maintenance_proc(). Drop-old policy detaches partitions before DROP TABLE — must happen before [[vacuum-tuning-guide]] kicks off heavy autovacuum at month boundary. Schema changes to partitioned tables must follow [[schema-migration-flyway]] ALTER TABLE ONLY discipline. diff --git a/crates/loopal-memory/eval/data/fixtures/password-rotation-policy.md b/crates/loopal-memory/eval/data/fixtures/password-rotation-policy.md new file mode 100644 index 00000000..7bf8a567 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/password-rotation-policy.md @@ -0,0 +1,18 @@ +--- +name: Password Rotation Policy +description: NIST 800-63B aligned — no forced periodic rotation +type: project +created_at: 2026-03-10 +updated_at: 2026-04-22 +ttl_days: null +related: + - mfa-enrollment-flow + - suspicious-login-detection + - auth-architecture +--- + +We follow NIST 800-63B: no forced periodic password change; rotation is +triggered only on breach signal from haveibeenpwned k-anonymity check or +from [[suspicious-login-detection]]. Users with WebAuthn enrolled per +[[mfa-enrollment-flow]] are exempt from password complexity prompts. The +overall stance is documented in [[auth-architecture]]. diff --git a/crates/loopal-memory/eval/data/fixtures/pgbackrest-backup-policy.md b/crates/loopal-memory/eval/data/fixtures/pgbackrest-backup-policy.md new file mode 100644 index 00000000..c985da1f --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/pgbackrest-backup-policy.md @@ -0,0 +1,14 @@ +--- +name: pgBackRest Backup & PITR Policy +description: Full/diff/incr schedule, retention, and PITR recovery RTO/RPO targets +type: reference +created_at: 2026-01-12 +updated_at: 2026-04-30 +ttl_days: null +related: + - postgres-runbook + - streaming-replication-setup + - pitr-recovery-drill +--- + +Weekly full Sunday 02:00 UTC, daily diff, hourly incr, retained 14 days on S3 (loopal-pgbackup-prod). RPO = 1h, RTO = 30min for PITR. See [[postgres-runbook]] for escalation; [[pitr-recovery-drill]] must run quarterly. WAL archive_command goes through pgbackrest-stanza-create — never set archive_mode=off without coordinating with [[streaming-replication-setup]]. diff --git a/crates/loopal-memory/eval/data/fixtures/pgbouncer-pool-sizing.md b/crates/loopal-memory/eval/data/fixtures/pgbouncer-pool-sizing.md new file mode 100644 index 00000000..dad62118 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/pgbouncer-pool-sizing.md @@ -0,0 +1,14 @@ +--- +name: PgBouncer Pool Sizing +description: Transaction pooling pool_size formula, why session pooling is banned for app traffic +type: reference +created_at: 2026-01-20 +updated_at: 2026-03-18 +ttl_days: null +related: + - postgres-runbook + - connection-storm-incident + - slow-query-triage +--- + +Mode=transaction. default_pool_size = (cpu_cores * 2) + effective_spindle_count, currently 24 per backend. max_client_conn=4000 across 8 pgbouncer instances behind LB. See [[connection-storm-incident]] for the 2026-03 outage that drove this number down from 48. Session pooling is forbidden — prepared statements break it; long transactions starve workers (see [[slow-query-triage]]). diff --git a/crates/loopal-memory/eval/data/fixtures/pitr-recovery-drill.md b/crates/loopal-memory/eval/data/fixtures/pitr-recovery-drill.md new file mode 100644 index 00000000..db6b3880 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/pitr-recovery-drill.md @@ -0,0 +1,13 @@ +--- +name: Quarterly PITR Recovery Drill +description: Checklist for the quarterly point-in-time-recovery drill into a staging cluster +type: reference +created_at: 2026-04-05 +updated_at: 2026-04-08 +ttl_days: null +related: + - pgbackrest-backup-policy + - streaming-replication-setup +--- + +Every quarter: pick random target timestamp from last 14 days, restore to staging-db-recover, verify row counts in 5 canary tables, time the full RTO. Last drill 2026-Q1: RTO 24min (target 30min). See [[pgbackrest-backup-policy]] for stanza names; replication catch-up procedure in [[streaming-replication-setup]]. diff --git a/crates/loopal-memory/eval/data/fixtures/postgres-runbook.md b/crates/loopal-memory/eval/data/fixtures/postgres-runbook.md new file mode 100644 index 00000000..744fc526 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/postgres-runbook.md @@ -0,0 +1,18 @@ +--- +name: Postgres Production Runbook +description: Hub for all PostgreSQL operational procedures, on-call playbooks, and SLO definitions +type: reference +created_at: 2026-01-08 +updated_at: 2026-05-22 +ttl_days: null +related: + - pgbackrest-backup-policy + - streaming-replication-setup + - pgbouncer-pool-sizing + - slow-query-triage + - vacuum-tuning-guide + - partition-rotation-cron + - replica-lag-alerting +--- + +Central index for prod Postgres 16 cluster (db-prod-01 primary + 2 replicas). For HA failover see [[streaming-replication-setup]]; for backup/PITR see [[pgbackrest-backup-policy]]; pool sizing rules live in [[pgbouncer-pool-sizing]]. On-call must read [[slow-query-triage]] before paging the DBA. diff --git a/crates/loopal-memory/eval/data/fixtures/rbac-role-matrix.md b/crates/loopal-memory/eval/data/fixtures/rbac-role-matrix.md new file mode 100644 index 00000000..339f3284 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/rbac-role-matrix.md @@ -0,0 +1,18 @@ +--- +name: RBAC Role Matrix +description: Canonical role → permission mapping +type: project +created_at: 2026-02-20 +updated_at: 2026-04-28 +ttl_days: null +related: + - auth-architecture + - mfa-enrollment-flow + - audit-log-retention +--- + +Roles: viewer, operator, admin, security-admin. admin:* and +security-admin:* require WebAuthn step-up per [[mfa-enrollment-flow]]; all +role grants are written to the audit trail described in +[[audit-log-retention]]. The matrix is enforced at the API gateway level — +see [[auth-architecture]] for where it sits in the request path. diff --git a/crates/loopal-memory/eval/data/fixtures/reference-grafana-dashboard.md b/crates/loopal-memory/eval/data/fixtures/reference-grafana-dashboard.md new file mode 100644 index 00000000..d45370e2 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/reference-grafana-dashboard.md @@ -0,0 +1,13 @@ +--- +name: Grafana Production Dashboard +description: Oncall-watched production metrics +type: reference +created_at: 2026-02-25 +updated_at: 2026-04-20 +ttl_days: null +related: + - dashboard-deploy + - dashboard-metrics +--- + +Production Grafana board: grafana.internal/d/loopal-prod. Watched by oncall during deploys. Panels: request rate, p99 latency, error budget, queue depth. Metrics schema in [[dashboard-metrics]], deploy procedure in [[dashboard-deploy]]. diff --git a/crates/loopal-memory/eval/data/fixtures/reference-volcengine-api.md b/crates/loopal-memory/eval/data/fixtures/reference-volcengine-api.md new file mode 100644 index 00000000..1a8cf004 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/reference-volcengine-api.md @@ -0,0 +1,11 @@ +--- +name: Volcengine Image API +description: Image generation API endpoints and quota +type: reference +created_at: 2026-04-01 +updated_at: 2026-04-15 +ttl_days: null +related: [] +--- + +Volcengine image generation: https://ark.cn-beijing.volces.com/api/v3/images/generations. Quota: 1000 req/day per API key. Latency p50 ~ 8s for 1024×1024. Auth via Bearer token in api_key field. diff --git a/crates/loopal-memory/eval/data/fixtures/replica-lag-alerting.md b/crates/loopal-memory/eval/data/fixtures/replica-lag-alerting.md new file mode 100644 index 00000000..37bd7036 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/replica-lag-alerting.md @@ -0,0 +1,14 @@ +--- +name: Replica Lag Alerting +description: pg_stat_replication thresholds, page vs warn, write_lag/flush_lag/replay_lag distinction +type: reference +created_at: 2026-03-01 +updated_at: 2026-05-12 +ttl_days: null +related: + - postgres-runbook + - streaming-replication-setup + - dashboard-metrics +--- + +Warn at replay_lag > 30s, page at > 5min OR write_lag > 2min on sync replica. Source query: SELECT * FROM pg_stat_replication. Dashboard panel defined in [[dashboard-metrics]]. Sync replica lag = write blocking risk; see [[streaming-replication-setup]] for the synchronous_commit semantics and [[postgres-runbook]] for failover decision tree. diff --git a/crates/loopal-memory/eval/data/fixtures/runner-autoscale-tuning.md b/crates/loopal-memory/eval/data/fixtures/runner-autoscale-tuning.md new file mode 100644 index 00000000..193cfd9d --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/runner-autoscale-tuning.md @@ -0,0 +1,17 @@ +--- +name: Runner Autoscale Tuning +description: HRA min=2 max=24 with 90s scale-down delay after the Feb queue-storm. +type: project +created_at: 2026-02-14 +updated_at: 2026-02-21 +ttl_days: 180 +related: + - self-hosted-runner-pool + - flaky-test-quarantine +--- + +After the Feb 12 incident where queued jobs spiked to 380 (see +[[self-hosted-runner-pool]]), we set HorizontalRunnerAutoscaler to +min=2/max=24 with `scaleDownDelaySecondsAfterScaleOut: 90`. The spike +was amplified by [[flaky-test-quarantine]] retries; reducing retry from +3 to 1 cut queue depth p99 from 380 to 47. diff --git a/crates/loopal-memory/eval/data/fixtures/scanner-idempotency.md b/crates/loopal-memory/eval/data/fixtures/scanner-idempotency.md new file mode 100644 index 00000000..a07fc766 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/scanner-idempotency.md @@ -0,0 +1,13 @@ +--- +name: Scanner Idempotency Keys +description: How re-runs produce identical output +type: project +created_at: 2026-03-12 +updated_at: 2026-04-28 +ttl_days: 90 +related: + - scanner-state + - scanner-replay +--- + +Each scanned item gets a content-hash key. Output writes use INSERT OR IGNORE keyed on that hash, so re-runs are no-ops on already-processed items. See [[scanner-state]] for how the state machine tracks which items belong to which scan. Replay flow in [[scanner-replay]] relies on this contract. diff --git a/crates/loopal-memory/eval/data/fixtures/scanner-replay.md b/crates/loopal-memory/eval/data/fixtures/scanner-replay.md new file mode 100644 index 00000000..db596ce0 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/scanner-replay.md @@ -0,0 +1,13 @@ +--- +name: Scanner Replay Recovery +description: Resuming an interrupted scan from checkpoint +type: project +created_at: 2026-03-15 +updated_at: 2026-04-30 +ttl_days: 90 +related: + - scanner-state + - scanner-idempotency +--- + +Replay reads the last checkpoint from the state table in [[scanner-state]], re-fetches the cursor position, and resumes processing. Items between the cursor and the crash point are re-processed but produce no duplicate output thanks to [[scanner-idempotency]]. Typical replay completes in < 5% of original scan time. diff --git a/crates/loopal-memory/eval/data/fixtures/scanner-state.md b/crates/loopal-memory/eval/data/fixtures/scanner-state.md new file mode 100644 index 00000000..415ef434 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/scanner-state.md @@ -0,0 +1,14 @@ +--- +name: Scanner State Machine +description: Resumable scan job state tracking +type: project +created_at: 2026-03-10 +updated_at: 2026-05-01 +ttl_days: 90 +related: + - scanner-idempotency + - scanner-replay + - user-tone-prefer-direct +--- + +Scan jobs persist state in a checkpoint table so they can resume after crashes. States: queued → running → checkpointing → done. Each transition is atomic. Idempotency contract in [[scanner-idempotency]] guarantees that re-running a checkpointed scan produces the same output. See [[scanner-replay]] for the recovery flow. diff --git a/crates/loopal-memory/eval/data/fixtures/schema-migration-flyway.md b/crates/loopal-memory/eval/data/fixtures/schema-migration-flyway.md new file mode 100644 index 00000000..98d8f7b0 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/schema-migration-flyway.md @@ -0,0 +1,14 @@ +--- +name: Schema Migration Workflow (Flyway) +description: Online migration rules — concurrent index, NOT VALID FK, lock_timeout discipline +type: reference +created_at: 2026-03-10 +updated_at: 2026-05-20 +ttl_days: null +related: + - postgres-runbook + - partition-rotation-cron + - connection-storm-incident +--- + +All DDL via Flyway V{ts}__{desc}.sql; SET lock_timeout='3s' at top of every migration. CREATE INDEX must be CONCURRENTLY; FK adds use NOT VALID then VALIDATE separately. AccessExclusiveLock for >3s aborts and rolls back. See [[connection-storm-incident]] for the migration that ignored this rule and caused 12min outage. Partitioned-table DDL rules in [[partition-rotation-cron]]; runbook entry in [[postgres-runbook]]. diff --git a/crates/loopal-memory/eval/data/fixtures/secrets-oidc-vault.md b/crates/loopal-memory/eval/data/fixtures/secrets-oidc-vault.md new file mode 100644 index 00000000..ef54b60a --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/secrets-oidc-vault.md @@ -0,0 +1,18 @@ +--- +name: Secrets via OIDC + Vault +description: GitHub OIDC -> HashiCorp Vault JWT auth, short-lived AWS STS tokens, no PATs. +type: reference +created_at: 2026-01-22 +updated_at: 2026-04-01 +ttl_days: null +related: + - self-hosted-runner-pool + - deploy-canary-rollout + - cicd-pipeline-overview +--- + +Workflows exchange the GitHub OIDC token for a Vault JWT (role +`gha-loopal-main`), which mints 15-minute AWS STS creds. Documented in +[[cicd-pipeline-overview]] and consumed by both +[[self-hosted-runner-pool]] pods and [[deploy-canary-rollout]] gates. +The Jan 2026 PAT leak (gist accidentally public) forced this migration. diff --git a/crates/loopal-memory/eval/data/fixtures/self-hosted-runner-pool.md b/crates/loopal-memory/eval/data/fixtures/self-hosted-runner-pool.md new file mode 100644 index 00000000..50e575f8 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/self-hosted-runner-pool.md @@ -0,0 +1,18 @@ +--- +name: Self-Hosted Runner Pool +description: 12-node m6i.2xlarge fleet behind actions-runner-controller on EKS. +type: reference +created_at: 2026-01-12 +updated_at: 2026-04-18 +ttl_days: null +related: + - cicd-pipeline-overview + - runner-autoscale-tuning + - secrets-oidc-vault +--- + +Runners are ephemeral pods (one job per pod) managed by +actions-runner-controller v0.9.3 on the shared EKS cluster; scaling +rules live in [[runner-autoscale-tuning]]. Each pod assumes an IAM role +via OIDC as described in [[secrets-oidc-vault]] — no static PATs since +the Jan 2026 rotation incident referenced in [[cicd-pipeline-overview]]. diff --git a/crates/loopal-memory/eval/data/fixtures/session-expiry-policy.md b/crates/loopal-memory/eval/data/fixtures/session-expiry-policy.md new file mode 100644 index 00000000..540dfd58 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/session-expiry-policy.md @@ -0,0 +1,18 @@ +--- +name: Session Expiry Policy +description: TTLs for access / refresh / idle / absolute sessions +type: project +created_at: 2026-02-01 +updated_at: 2026-05-03 +ttl_days: null +related: + - auth-architecture + - jwt-rs256-signing + - mfa-enrollment-flow +--- + +Access JWT TTL = 15 min, refresh TTL = 14 days sliding, idle timeout = 30 +min in admin UI, absolute cap = 24h after which re-auth + MFA is required. +The absolute cap interacts with [[mfa-enrollment-flow]] (step-up required +if elapsed > 24h) and the underlying access tokens follow +[[jwt-rs256-signing]]; see [[auth-architecture]] for the full picture. diff --git a/crates/loopal-memory/eval/data/fixtures/session-fixation-test.md b/crates/loopal-memory/eval/data/fixtures/session-fixation-test.md new file mode 100644 index 00000000..1014f9bb --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/session-fixation-test.md @@ -0,0 +1,20 @@ +--- +name: Session Fixation Regression Test +description: Regenerate session id on privilege escalation +type: feedback +created_at: 2026-04-25 +updated_at: 2026-05-12 +ttl_days: 180 +related: + - session-expiry-policy + - mfa-enrollment-flow + - rbac-role-matrix +--- + +Integration test asserts that on successful MFA step-up +([[mfa-enrollment-flow]]) the session cookie value changes — previously we +only bumped a claim, which allowed a fixation vector when an attacker +pre-seeded the cookie. Test lives in +auth-service/tests/session_fixation_test.rs; rule applies to any +[[rbac-role-matrix]] role transition and is enforced by +[[session-expiry-policy]] hooks. diff --git a/crates/loopal-memory/eval/data/fixtures/slo-definitions.md b/crates/loopal-memory/eval/data/fixtures/slo-definitions.md new file mode 100644 index 00000000..073db9ca --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/slo-definitions.md @@ -0,0 +1,14 @@ +--- +name: SLO Definitions and Error Budgets +description: Per-service SLOs, error budget windows, and burn-rate alert thresholds +type: reference +created_at: 2026-02-08 +updated_at: 2026-05-20 +ttl_days: null +related: + - observability-stack + - alert-rules-catalog + - incident-postmortem-template +--- + +Scanner: 99.5% success over 30d (3.6h budget); Dashboard: 99.9% p95<400ms over 30d. Burn-rate alerts fire at 14.4x (1h window) and 6x (6h window) per the Google SRE multi-window approach, wired through [[alert-rules-catalog]]. Every exhausted budget triggers an [[incident-postmortem-template]] within 5 business days, and SLI sources are documented next to [[dashboard-metrics]]. diff --git a/crates/loopal-memory/eval/data/fixtures/slow-query-triage.md b/crates/loopal-memory/eval/data/fixtures/slow-query-triage.md new file mode 100644 index 00000000..cf8ffe01 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/slow-query-triage.md @@ -0,0 +1,15 @@ +--- +name: Slow Query Triage Playbook +description: pg_stat_statements + auto_explain workflow when p99 latency alarms fire +type: reference +created_at: 2026-02-02 +updated_at: 2026-05-18 +ttl_days: null +related: + - postgres-runbook + - vacuum-tuning-guide + - index-bloat-investigation + - dashboard-metrics +--- + +When p99 query time > 500ms for 5min, pull top-20 from pg_stat_statements ordered by total_exec_time. auto_explain.log_min_duration=1000ms in prod. Cross-reference with [[dashboard-metrics]] for I/O saturation. Common culprits: missing index (see [[index-bloat-investigation]]) or autovacuum starvation ([[vacuum-tuning-guide]]). Escalation path lives in [[postgres-runbook]]. diff --git a/crates/loopal-memory/eval/data/fixtures/streaming-replication-setup.md b/crates/loopal-memory/eval/data/fixtures/streaming-replication-setup.md new file mode 100644 index 00000000..9cefbd2d --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/streaming-replication-setup.md @@ -0,0 +1,15 @@ +--- +name: Streaming Replication & Failover +description: Physical streaming replication topology, sync vs async tradeoffs, Patroni failover +type: reference +created_at: 2026-01-15 +updated_at: 2026-05-10 +ttl_days: null +related: + - postgres-runbook + - replica-lag-alerting + - pgbackrest-backup-policy + - pitr-recovery-drill +--- + +Primary db-prod-01 → sync replica db-prod-02 (same AZ) → async replica db-prod-03 (cross-region). synchronous_commit=remote_apply; max_wal_senders=10; wal_keep_size=8GB. Failover orchestrated by Patroni etcd cluster — see [[postgres-runbook]] for promotion steps. Lag SLO and paging thresholds defined in [[replica-lag-alerting]]. diff --git a/crates/loopal-memory/eval/data/fixtures/structured-log-schema.md b/crates/loopal-memory/eval/data/fixtures/structured-log-schema.md new file mode 100644 index 00000000..d7dbfec1 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/structured-log-schema.md @@ -0,0 +1,14 @@ +--- +name: Structured Log Schema (JSON) +description: Required fields for every log line emitted by Loopal services +type: reference +created_at: 2026-01-12 +updated_at: 2026-04-28 +ttl_days: null +related: + - observability-stack + - log-retention-policy + - metric-cardinality-budget +--- + +Every log line MUST be JSON with `ts` (RFC3339), `level`, `service`, `trace_id`, `span_id`, `msg`, and optional `attrs` (flat map, no nested objects). Promtail drops lines missing `trace_id` to keep [[log-retention-policy]] costs bounded, and high-cardinality fields like `user_id` go into `attrs` not labels — see [[metric-cardinality-budget]]. This schema is the single hop between [[observability-stack]] and Loki query UX. diff --git a/crates/loopal-memory/eval/data/fixtures/suspicious-login-detection.md b/crates/loopal-memory/eval/data/fixtures/suspicious-login-detection.md new file mode 100644 index 00000000..95158c90 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/suspicious-login-detection.md @@ -0,0 +1,20 @@ +--- +name: Suspicious Login Detection +description: Geo + device + velocity rules feeding step-up MFA +type: project +created_at: 2026-03-22 +updated_at: 2026-05-25 +ttl_days: null +related: + - mfa-enrollment-flow + - audit-log-retention + - oauth2-pkce-flow + - reference-grafana-dashboard +--- + +Rules: (1) impossible travel >500 km/h between successful logins, (2) new +device fingerprint + new ASN, (3) >5 failed attempts in 10 min from same +IP. Risk≥medium triggers step-up per [[mfa-enrollment-flow]]; all +decisions log to [[audit-log-retention]] and surface on +[[reference-grafana-dashboard]]. Source events come from +[[oauth2-pkce-flow]] /token endpoint. diff --git a/crates/loopal-memory/eval/data/fixtures/test-parallelization-shards.md b/crates/loopal-memory/eval/data/fixtures/test-parallelization-shards.md new file mode 100644 index 00000000..2db39a2b --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/test-parallelization-shards.md @@ -0,0 +1,18 @@ +--- +name: Test Parallelization Shards +description: 8-shard integration matrix using nextest partition; ~7min p95 vs 38min serial. +type: reference +created_at: 2026-01-25 +updated_at: 2026-03-22 +ttl_days: null +related: + - github-actions-workflow-layout + - bazel-remote-cache + - flaky-test-quarantine +--- + +We partition with `cargo nextest run --partition hash:${SHARD}/8` per +[[github-actions-workflow-layout]]. Each shard hits warm +[[bazel-remote-cache]] (~78% hit) and skips quarantined tests from +[[flaky-test-quarantine]]. p95 wall time dropped from 38min serial to +7min sharded; tail is shard 3 (network-heavy integration suite). diff --git a/crates/loopal-memory/eval/data/fixtures/trace-sampling-policy.md b/crates/loopal-memory/eval/data/fixtures/trace-sampling-policy.md new file mode 100644 index 00000000..1c660c58 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/trace-sampling-policy.md @@ -0,0 +1,13 @@ +--- +name: Trace Sampling Policy +description: Head vs tail sampling rules and budget per service +type: project +created_at: 2026-03-12 +updated_at: 2026-05-22 +ttl_days: null +related: + - otel-trace-propagation + - oncall-runbook +--- + +Default head sampling 1% at the edge; tail sampler in OTel Collector keeps 100% of error spans and any trace with span >2s. Scanner is special-cased to 10% head because its [[scanner-state]] retries need higher fidelity for debugging. Sampling decisions are encoded in the `traceparent` flags per [[otel-trace-propagation]] so downstream services don't re-decide. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-algorithm-playbook.md b/crates/loopal-memory/eval/data/fixtures/twitter-algorithm-playbook.md new file mode 100644 index 00000000..3c2c3100 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-algorithm-playbook.md @@ -0,0 +1,13 @@ +--- +name: Twitter Algorithm Playbook +description: Engagement signals the algorithm rewards +type: project +created_at: 2026-04-15 +updated_at: 2026-05-05 +ttl_days: 90 +related: + - twitter-reply-cold-start + - twitter-monitor-scraping +--- + +Algorithm signals (in order of weight): reply > quote > like > impression. Threads with >5 tweets and engagement in first hour get boosted. See [[twitter-reply-cold-start]] for fresh account tactics and [[twitter-monitor-scraping]] for measuring impressions on competitor posts. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-automation.md b/crates/loopal-memory/eval/data/fixtures/twitter-automation.md new file mode 100644 index 00000000..2f2a8086 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-automation.md @@ -0,0 +1,14 @@ +--- +name: Twitter Automation Policy +description: Rate-limit-aware Twitter/X automation rules +type: project +created_at: 2026-04-01 +updated_at: 2026-05-15 +ttl_days: 90 +related: + - twitter-rate-limit + - twitter-cooldown + - chrome-cdp +--- + +Twitter automation must respect platform rate limits to avoid soft bans. Reference [[twitter-rate-limit]] for the exact numerical caps and [[twitter-cooldown]] for the recovery procedure when caps are hit. All scripted browser sessions use [[chrome-cdp]] for protocol-level control. Never spam endpoints — a soft ban kills the worker for 24h+. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-cooldown.md b/crates/loopal-memory/eval/data/fixtures/twitter-cooldown.md new file mode 100644 index 00000000..a3d76399 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-cooldown.md @@ -0,0 +1,13 @@ +--- +name: Twitter Cooldown Procedure +description: Recovery flow after hitting Twitter soft-ban thresholds +type: project +created_at: 2026-04-03 +updated_at: 2026-05-12 +ttl_days: 90 +related: + - twitter-rate-limit + - twitter-automation +--- + +When a worker hits the limits in [[twitter-rate-limit]], the cooldown procedure is: pause all writes for 6h, then resume at 50% throttle for 24h, then full throttle. Tracked via the cooldown_state table; see [[twitter-automation]] for which signals trigger this state. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-dm-outreach.md b/crates/loopal-memory/eval/data/fixtures/twitter-dm-outreach.md new file mode 100644 index 00000000..914b928c --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-dm-outreach.md @@ -0,0 +1,13 @@ +--- +name: Twitter DM Outreach +description: Direct-message based outreach campaigns +type: project +created_at: 2026-04-18 +updated_at: 2026-04-28 +ttl_days: 90 +related: + - twitter-rate-limit + - cold-email-templates +--- + +DM-based outreach is rate-limited per [[twitter-rate-limit]] (25/hr) and additionally constrained by spam-detection heuristics: never send identical messages, vary timing by ±15 min, prefer accounts that liked your recent posts. Template structure inherited from [[cold-email-templates]]. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-list-curation.md b/crates/loopal-memory/eval/data/fixtures/twitter-list-curation.md new file mode 100644 index 00000000..3c47332d --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-list-curation.md @@ -0,0 +1,13 @@ +--- +name: Twitter List Curation +description: Building targeted Twitter lists for monitoring +type: project +created_at: 2026-04-20 +updated_at: 2026-04-30 +ttl_days: 90 +related: + - twitter-monitor-scraping + - twitter-algorithm-playbook +--- + +Curated lists are the primary input for monitoring workflows in [[twitter-monitor-scraping]]. List membership criteria: account age > 90d, follower count 1K-100K, posts in target topic > 5/week. Cross-reference with [[twitter-algorithm-playbook]] for engagement-weight scoring. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-long-tweets.md b/crates/loopal-memory/eval/data/fixtures/twitter-long-tweets.md new file mode 100644 index 00000000..2a91ba9e --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-long-tweets.md @@ -0,0 +1,12 @@ +--- +name: Twitter Long-Tweet Handling +description: Splitting long content across multiple tweets +type: project +created_at: 2026-04-05 +updated_at: 2026-04-25 +ttl_days: 90 +related: + - twitter-automation +--- + +Tweets over 280 chars must be split into thread chunks. We use sentence-boundary aware splitting with a 240-char target to leave room for thread numbering. See [[twitter-automation]] for the rate-limit interplay when posting threads (each tweet counts separately). diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-monitor-scraping.md b/crates/loopal-memory/eval/data/fixtures/twitter-monitor-scraping.md new file mode 100644 index 00000000..73357e9b --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-monitor-scraping.md @@ -0,0 +1,14 @@ +--- +name: Twitter Monitor Scraping +description: Read-side monitoring without writes +type: project +created_at: 2026-04-08 +updated_at: 2026-05-08 +ttl_days: 90 +related: + - twitter-automation + - twitter-rate-limit + - chrome-cdp +--- + +Read-only monitoring (search, profile fetch, follower count) has separate caps from write actions. We scrape via [[chrome-cdp]] sessions with rotating proxies. The read caps are looser than [[twitter-rate-limit]] write caps but still enforced — and they share the soft-ban state from [[twitter-automation]]. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-rate-limit.md b/crates/loopal-memory/eval/data/fixtures/twitter-rate-limit.md new file mode 100644 index 00000000..704f223e --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-rate-limit.md @@ -0,0 +1,13 @@ +--- +name: Twitter Rate Limit Caps +description: Numerical rate-limit thresholds per endpoint +type: project +created_at: 2026-04-02 +updated_at: 2026-05-10 +ttl_days: 90 +related: + - twitter-automation + - twitter-cooldown +--- + +Concrete rate caps observed in production: 50 follow actions / hour per account, 100 likes / hour, 25 DMs / hour. Beyond these you hit the soft-ban threshold described in [[twitter-cooldown]]. See [[twitter-automation]] for the policy framework that uses these numbers. diff --git a/crates/loopal-memory/eval/data/fixtures/twitter-reply-cold-start.md b/crates/loopal-memory/eval/data/fixtures/twitter-reply-cold-start.md new file mode 100644 index 00000000..e71fd8e2 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/twitter-reply-cold-start.md @@ -0,0 +1,13 @@ +--- +name: Twitter Reply Cold Start +description: Engagement strategy for fresh accounts +type: project +created_at: 2026-04-12 +updated_at: 2026-04-22 +ttl_days: 90 +related: + - twitter-automation + - twitter-algorithm-playbook +--- + +New accounts (< 30 days) get reply-throttled aggressively. Cold-start strategy: 5-10 organic replies/day for first 2 weeks, then ramp. Algorithm context in [[twitter-algorithm-playbook]]. Combine with [[twitter-automation]] cooldown rules — fresh accounts trip soft-bans at 30% lower thresholds. diff --git a/crates/loopal-memory/eval/data/fixtures/user-tone-prefer-direct.md b/crates/loopal-memory/eval/data/fixtures/user-tone-prefer-direct.md new file mode 100644 index 00000000..242b2a02 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/user-tone-prefer-direct.md @@ -0,0 +1,11 @@ +--- +name: User Tone Preference (Direct) +description: User wants terse, direct responses +type: user +created_at: 2026-01-10 +updated_at: 2026-05-01 +ttl_days: null +related: [] +--- + +User prefers terse, direct responses. No preamble, no "I'll help you with that", no summary at the end. State the result, then stop. Project decisions like [[scanner-state]] inherit this — design docs should lead with the decision, not the journey. diff --git a/crates/loopal-memory/eval/data/fixtures/vacuum-tuning-guide.md b/crates/loopal-memory/eval/data/fixtures/vacuum-tuning-guide.md new file mode 100644 index 00000000..d1d93990 --- /dev/null +++ b/crates/loopal-memory/eval/data/fixtures/vacuum-tuning-guide.md @@ -0,0 +1,15 @@ +--- +name: Autovacuum Tuning for Hot Tables +description: Per-table autovacuum_vacuum_scale_factor overrides for high-churn tables +type: reference +created_at: 2026-02-14 +updated_at: 2026-04-25 +ttl_days: null +related: + - postgres-runbook + - slow-query-triage + - index-bloat-investigation + - partition-rotation-cron +--- + +Global autovacuum_vacuum_scale_factor=0.2 is too lazy for events / audit_log. Override to 0.02 + autovacuum_vacuum_cost_limit=2000. Tables partitioned by month (see [[partition-rotation-cron]]) inherit per-partition settings. See [[index-bloat-investigation]] for when REINDEX CONCURRENTLY is needed instead of vacuum. Triage path: [[slow-query-triage]]. diff --git a/crates/loopal-memory/eval/data/ground_truth.yaml b/crates/loopal-memory/eval/data/ground_truth.yaml new file mode 100644 index 00000000..a0e2330c --- /dev/null +++ b/crates/loopal-memory/eval/data/ground_truth.yaml @@ -0,0 +1,545 @@ +queries: + - id: q01 + description: How to avoid Twitter soft-ban via rate limits + mode: query + query: "twitter rate limit ban" + relevant: + - { id: twitter-rate-limit, relevance: 3 } + - { id: twitter-cooldown, relevance: 3 } + - { id: twitter-automation, relevance: 3 } + - { id: twitter-monitor-scraping, relevance: 2 } + - { id: twitter-dm-outreach, relevance: 1 } + - { id: twitter-reply-cold-start, relevance: 1 } + + - id: q02 + description: Scanner idempotency and replay guarantees + mode: query + query: "scanner idempotency replay" + relevant: + - { id: scanner-idempotency, relevance: 3 } + - { id: scanner-replay, relevance: 3 } + - { id: scanner-state, relevance: 2 } + + - id: q03 + description: Dashboard deploy and rollback flow + mode: query + query: "dashboard deploy" + relevant: + - { id: dashboard-deploy, relevance: 3 } + - { id: dashboard-metrics, relevance: 2 } + - { id: reference-grafana-dashboard, relevance: 2 } + + - id: q04 + description: Cold email deliverability and domain warmup + mode: query + query: "cold email deliverability warmup" + relevant: + - { id: cold-email-deliverability, relevance: 3 } + - { id: cold-email-templates, relevance: 2 } + + - id: q05 + description: User communication tone preferences + mode: query + query: "tone preference direct" + relevant: + - { id: user-tone-prefer-direct, relevance: 3 } + + - id: q06 + description: Starting from twitter-automation anchor, find policy ecosystem + mode: anchor + anchors: ["twitter-automation"] + relevant: + - { id: twitter-rate-limit, relevance: 3 } + - { id: twitter-cooldown, relevance: 3 } + - { id: chrome-cdp, relevance: 2 } + - { id: twitter-monitor-scraping, relevance: 2 } + - { id: twitter-long-tweets, relevance: 2 } + - { id: twitter-reply-cold-start, relevance: 1 } + + - id: q07 + description: Starting from scanner-state, find related operational docs + mode: anchor + anchors: ["scanner-state"] + relevant: + - { id: scanner-idempotency, relevance: 3 } + - { id: scanner-replay, relevance: 3 } + - { id: user-tone-prefer-direct, relevance: 1 } + + - id: q08 + description: Starting from dashboard-deploy, find ops surface + mode: anchor + anchors: ["dashboard-deploy"] + relevant: + - { id: dashboard-metrics, relevance: 3 } + - { id: reference-grafana-dashboard, relevance: 3 } + + - id: q09 + description: Mixed - chrome automation for twitter scraping + mode: mixed + query: "chrome cdp browser automation" + anchors: ["twitter-monitor-scraping"] + relevant: + - { id: chrome-cdp, relevance: 3 } + - { id: twitter-automation, relevance: 2 } + - { id: twitter-list-curation, relevance: 1 } + + - id: q10 + description: Mixed - GTM signal pipeline + mode: mixed + query: "high intent signals pipeline" + anchors: ["gtm-high-intent-radar"] + relevant: + - { id: scanner-state, relevance: 2 } + - { id: twitter-monitor-scraping, relevance: 2 } + + - id: q11 + description: "EASY: direct lookup for backup policy" + mode: query + query: what is our pgBackRest backup schedule and retention + relevant: + - { id: pgbackrest-backup-policy, relevance: 3 } + - { id: pitr-recovery-drill, relevance: 2 } + - { id: postgres-runbook, relevance: 1 } + + - id: q12 + description: "EASY: direct lookup for pool sizing formula" + mode: query + query: pgbouncer pool_size formula and why session pooling is banned + relevant: + - { id: pgbouncer-pool-sizing, relevance: 3 } + - { id: connection-storm-incident, relevance: 2 } + + - id: q13 + description: "EASY anchor: start at hub, want immediate neighbors" + mode: anchor + anchors: ["postgres-runbook"] + relevant: + - { id: pgbackrest-backup-policy, relevance: 2 } + - { id: streaming-replication-setup, relevance: 2 } + - { id: pgbouncer-pool-sizing, relevance: 2 } + - { id: slow-query-triage, relevance: 2 } + + - id: q14 + description: "MEDIUM: p99 latency spike, need triage path + likely culprits 1-2 hops away" + mode: mixed + query: "p99 query latency spiked, what to investigate first" + anchors: ["slow-query-triage"] + relevant: + - { id: slow-query-triage, relevance: 3 } + - { id: index-bloat-investigation, relevance: 3 } + - { id: vacuum-tuning-guide, relevance: 2 } + - { id: dashboard-metrics, relevance: 1 } + + - id: q15 + description: "MEDIUM: vague symptom, requires bridging from connection issues to migration cause" + mode: query + query: app workers getting connection errors after a deploy + relevant: + - { id: connection-storm-incident, relevance: 3 } + - { id: pgbouncer-pool-sizing, relevance: 2 } + - { id: schema-migration-flyway, relevance: 2 } + + - id: q16 + description: "MEDIUM: replica lag question with hub anchor" + mode: mixed + query: when should we page on replica lag + anchors: ["postgres-runbook"] + relevant: + - { id: replica-lag-alerting, relevance: 3 } + - { id: streaming-replication-setup, relevance: 2 } + - { id: dashboard-metrics, relevance: 1 } + + - id: q17 + description: "MEDIUM anchor-only: start from incident, find related rules + write-contention pattern" + mode: anchor + anchors: ["connection-storm-incident"] + relevant: + - { id: pgbouncer-pool-sizing, relevance: 3 } + - { id: schema-migration-flyway, relevance: 3 } + - { id: feedback-batch-rejected, relevance: 2 } + + - id: q18 + description: "MEDIUM: vacuum + partition interaction question" + mode: query + query: autovacuum settings for time-series partitioned tables + relevant: + - { id: vacuum-tuning-guide, relevance: 3 } + - { id: partition-rotation-cron, relevance: 3 } + - { id: index-bloat-investigation, relevance: 1 } + + - id: q19 + description: "HARD: vague safety question, ground truth requires connecting migration rules to incident" + mode: query + query: how to safely add an index without taking the site down + relevant: + - { id: schema-migration-flyway, relevance: 3 } + - { id: connection-storm-incident, relevance: 3 } + - { id: index-bloat-investigation, relevance: 1 } + + - id: q20 + description: "HARD: vague recovery question, anchor on backup, want PITR drill + replication catch-up" + mode: mixed + query: what happens if the primary dies right now + anchors: ["pgbackrest-backup-policy"] + relevant: + - { id: streaming-replication-setup, relevance: 3 } + - { id: pitr-recovery-drill, relevance: 2 } + - { id: postgres-runbook, relevance: 2 } + + - id: q21 + description: "HARD anchor: start at slow-query triage, want cross-cluster dashboard tie + 2-hop neighbors" + mode: anchor + anchors: ["slow-query-triage"] + relevant: + - { id: vacuum-tuning-guide, relevance: 3 } + - { id: index-bloat-investigation, relevance: 3 } + - { id: dashboard-metrics, relevance: 2 } + - { id: postgres-runbook, relevance: 1 } + + - id: q22 + description: "HARD: oblique question about old data, ground truth is partition rotation 2 hops from query words" + mode: query + query: "we keep too much historical event data, how is old data dropped" + relevant: + - { id: partition-rotation-cron, relevance: 3 } + - { id: vacuum-tuning-guide, relevance: 1 } + - { id: schema-migration-flyway, relevance: 1 } + + - id: q23 + description: "Easy: direct hub query naming the topic explicitly." + mode: query + query: How is our CI/CD pipeline organized end to end? + relevant: + - { id: cicd-pipeline-overview, relevance: 3 } + - { id: github-actions-workflow-layout, relevance: 2 } + - { id: deploy-canary-rollout, relevance: 1 } + + - id: q24 + description: "Easy: direct name match for self-hosted runners." + mode: query + query: What does our self-hosted GitHub Actions runner pool look like? + relevant: + - { id: self-hosted-runner-pool, relevance: 3 } + - { id: runner-autoscale-tuning, relevance: 2 } + + - id: q25 + description: "Easy: docker multi-stage is named in body and slug." + mode: query + query: Why is our Docker image so small now after the multi-stage refactor? + relevant: + - { id: docker-multistage-build, relevance: 3 } + - { id: artifact-cache-strategy, relevance: 1 } + + - id: q26 + description: "Medium: query mentions queue spike, anchor on runner pool. Quarantine retries are 2 hops away." + mode: mixed + query: Why did we get a queue storm in February and what did we change about retries? + anchors: ["self-hosted-runner-pool"] + relevant: + - { id: runner-autoscale-tuning, relevance: 3 } + - { id: flaky-test-quarantine, relevance: 2 } + - { id: self-hosted-runner-pool, relevance: 1 } + + - id: q27 + description: "Medium: query about credentials, anchor on canary deploy. OIDC is the bridge." + mode: mixed + query: How do deploy jobs get AWS credentials without a PAT? + anchors: ["deploy-canary-rollout"] + relevant: + - { id: secrets-oidc-vault, relevance: 3 } + - { id: self-hosted-runner-pool, relevance: 2 } + - { id: deploy-canary-rollout, relevance: 1 } + + - id: q28 + description: "Medium: vague query about test speed; sharding is the answer, cache and quarantine support." + mode: query + query: What did we do to make integration tests finish under 10 minutes? + relevant: + - { id: test-parallelization-shards, relevance: 3 } + - { id: bazel-remote-cache, relevance: 2 } + - { id: flaky-test-quarantine, relevance: 1 } + + - id: q29 + description: "Medium: query about recovery time after bad deploys; canary + blue-green both relevant." + mode: query + query: How do we recover quickly when a production deploy goes bad? + relevant: + - { id: blue-green-fallback, relevance: 3 } + - { id: deploy-canary-rollout, relevance: 2 } + - { id: dashboard-deploy, relevance: 1 } + + - id: q30 + description: "Anchor-only: starting from quarantine, expect to reach flaky causes and test sharding." + mode: anchor + anchors: ["flaky-test-quarantine"] + relevant: + - { id: flaky-test-quarantine, relevance: 3 } + - { id: test-parallelization-shards, relevance: 2 } + - { id: feedback-no-mocks-in-tests, relevance: 2 } + - { id: runner-autoscale-tuning, relevance: 1 } + + - id: q31 + description: Anchor on cache strategy; expect both bazel cache and docker build. + mode: anchor + anchors: ["artifact-cache-strategy"] + relevant: + - { id: artifact-cache-strategy, relevance: 3 } + - { id: bazel-remote-cache, relevance: 2 } + - { id: docker-multistage-build, relevance: 2 } + + - id: q32 + description: "Anchor on canary; expect blue-green fallback, secrets, and deploy dashboard." + mode: anchor + anchors: ["deploy-canary-rollout"] + relevant: + - { id: deploy-canary-rollout, relevance: 3 } + - { id: blue-green-fallback, relevance: 3 } + - { id: secrets-oidc-vault, relevance: 2 } + - { id: dashboard-deploy, relevance: 1 } + + - id: q33 + description: "Hard: vague query about cost/speed; anchor on overview. Bazel cache is 2 hops via artifact-cache." + mode: mixed + query: What's actually saving us the most build minutes on main? + anchors: ["cicd-pipeline-overview"] + relevant: + - { id: bazel-remote-cache, relevance: 3 } + - { id: artifact-cache-strategy, relevance: 2 } + - { id: test-parallelization-shards, relevance: 2 } + - { id: docker-multistage-build, relevance: 1 } + + - id: q34 + description: "Hard: vague query about an old leak; only mentions vault/OIDC indirectly via 'rotation'." + mode: query + query: What was the incident that pushed us off long-lived tokens last winter? + relevant: + - { id: secrets-oidc-vault, relevance: 3 } + - { id: self-hosted-runner-pool, relevance: 2 } + - { id: cicd-pipeline-overview, relevance: 1 } + + - id: q35 + description: Direct hub lookup - easy + mode: query + query: auth architecture overview + relevant: + - { id: auth-architecture, relevance: 3 } + - { id: oauth2-pkce-flow, relevance: 1 } + - { id: jwt-rs256-signing, relevance: 1 } + + - id: q36 + description: Easy - direct keyword match for PKCE + mode: query + query: PKCE code challenge S256 SPA login + relevant: + - { id: oauth2-pkce-flow, relevance: 3 } + - { id: jwt-rs256-signing, relevance: 1 } + + - id: q37 + description: Easy anchor - JWT signing neighbors + mode: anchor + anchors: ["jwt-rs256-signing"] + relevant: + - { id: jwt-rs256-signing, relevance: 3 } + - { id: jwt-clock-skew-incident, relevance: 3 } + - { id: oauth2-pkce-flow, relevance: 2 } + - { id: api-key-rotation, relevance: 2 } + - { id: auth-architecture, relevance: 1 } + + - id: q38 + description: "Medium - vague question about token TTL, should reach session-expiry + jwt" + mode: query + query: how long does a user stay logged in before reauth + relevant: + - { id: session-expiry-policy, relevance: 3 } + - { id: jwt-rs256-signing, relevance: 2 } + - { id: mfa-enrollment-flow, relevance: 1 } + + - id: q39 + description: Medium - MFA step-up triggers via anchor + vague query + mode: mixed + query: when do we force a second factor + anchors: ["mfa-enrollment-flow"] + relevant: + - { id: mfa-enrollment-flow, relevance: 3 } + - { id: suspicious-login-detection, relevance: 3 } + - { id: session-expiry-policy, relevance: 2 } + - { id: rbac-role-matrix, relevance: 1 } + + - id: q40 + description: "Medium - role permissions, lexical match weak" + mode: query + query: who can grant admin permissions and how is it logged + relevant: + - { id: rbac-role-matrix, relevance: 3 } + - { id: audit-log-retention, relevance: 3 } + - { id: mfa-enrollment-flow, relevance: 2 } + + - id: q41 + description: Medium anchor - audit log neighborhood + mode: anchor + anchors: ["audit-log-retention"] + relevant: + - { id: audit-log-retention, relevance: 3 } + - { id: rbac-role-matrix, relevance: 2 } + - { id: reference-grafana-dashboard, relevance: 2 } + - { id: suspicious-login-detection, relevance: 1 } + - { id: auth-architecture, relevance: 1 } + + - id: q42 + description: "Medium - password policy, NIST keyword" + mode: query + query: do we still force password rotation every 90 days + relevant: + - { id: password-rotation-policy, relevance: 3 } + - { id: api-key-rotation, relevance: 1 } + - { id: mfa-enrollment-flow, relevance: 1 } + + - id: q43 + description: "Hard - 429 during rotation, cross-cluster tie" + mode: mixed + query: M2M client getting 401 vs 429 during key swap + anchors: ["api-key-rotation"] + relevant: + - { id: api-key-rotation, relevance: 3 } + - { id: feedback-batch-rejected, relevance: 2 } + - { id: jwt-rs256-signing, relevance: 1 } + + - id: q44 + description: "Hard - impossible travel, vague phrasing far from hub" + mode: query + query: user logged in from two countries five minutes apart what happens + relevant: + - { id: suspicious-login-detection, relevance: 3 } + - { id: mfa-enrollment-flow, relevance: 2 } + - { id: audit-log-retention, relevance: 1 } + + - id: q45 + description: Hard - postmortem retrieval via vague symptom + mode: mixed + query: valid tokens being rejected after deploy + anchors: ["jwt-rs256-signing"] + relevant: + - { id: jwt-clock-skew-incident, relevance: 3 } + - { id: jwt-rs256-signing, relevance: 2 } + - { id: audit-log-retention, relevance: 1 } + + - id: q46 + description: "Hard anchor - session fixation, 2-hop reach" + mode: anchor + anchors: ["session-fixation-test"] + relevant: + - { id: session-fixation-test, relevance: 3 } + - { id: mfa-enrollment-flow, relevance: 2 } + - { id: session-expiry-policy, relevance: 2 } + - { id: rbac-role-matrix, relevance: 1 } + + - id: q47 + description: EASY — direct keyword match to hub + mode: query + query: what does our observability stack look like end to end + relevant: + - { id: observability-stack, relevance: 3 } + - { id: structured-log-schema, relevance: 2 } + - { id: otel-trace-propagation, relevance: 2 } + + - id: q48 + description: EASY — direct match on alert rules + mode: query + query: where do prometheus alert rules live and how are they named + relevant: + - { id: alert-rules-catalog, relevance: 3 } + - { id: oncall-runbook, relevance: 2 } + + - id: q49 + description: "MEDIUM — query mentions log fields, ground truth requires understanding cardinality link" + mode: query + query: why can't I put user_id as a label + relevant: + - { id: structured-log-schema, relevance: 3 } + - { id: metric-cardinality-budget, relevance: 3 } + - { id: log-retention-policy, relevance: 1 } + + - id: q50 + description: "MEDIUM — anchored at trace propagation, query about async jobs" + mode: mixed + query: how do background jobs keep the same trace as the request that enqueued them + anchors: ["otel-trace-propagation"] + relevant: + - { id: otel-trace-propagation, relevance: 3 } + - { id: scanner-state, relevance: 2 } + - { id: trace-sampling-policy, relevance: 1 } + + - id: q51 + description: MEDIUM — anchor-only expansion from oncall runbook + mode: anchor + anchors: ["oncall-runbook"] + relevant: + - { id: oncall-runbook, relevance: 3 } + - { id: alert-rules-catalog, relevance: 2 } + - { id: incident-postmortem-template, relevance: 2 } + - { id: trace-sampling-policy, relevance: 1 } + + - id: q52 + description: "HARD — vague query about noisy pages, ground truth requires multi-hop" + mode: query + query: "we keep getting paged for stuff that doesn't matter, what's the process to clean it up" + relevant: + - { id: alert-fatigue-audit, relevance: 3 } + - { id: alert-rules-catalog, relevance: 2 } + - { id: oncall-runbook, relevance: 1 } + + - id: q53 + description: MEDIUM — SLO query anchored at hub + mode: mixed + query: what's our error budget for the scanner and how is it enforced + anchors: ["observability-stack"] + relevant: + - { id: slo-definitions, relevance: 3 } + - { id: alert-rules-catalog, relevance: 2 } + - { id: incident-postmortem-template, relevance: 1 } + + - id: q54 + description: EASY — direct query about log retention + mode: query + query: how long do we keep logs in loki + relevant: + - { id: log-retention-policy, relevance: 3 } + - { id: structured-log-schema, relevance: 1 } + + - id: q55 + description: HARD — anchor-only from postmortem; expects related runbook + SLO context + mode: anchor + anchors: ["incident-postmortem-template"] + relevant: + - { id: incident-postmortem-template, relevance: 3 } + - { id: slo-definitions, relevance: 2 } + - { id: oncall-runbook, relevance: 2 } + - { id: otel-trace-propagation, relevance: 1 } + + - id: q56 + description: "MEDIUM — query is about sampling, expects policy + propagation linkage" + mode: query + query: do we sample all traces or just a percentage and how is the decision propagated + relevant: + - { id: trace-sampling-policy, relevance: 3 } + - { id: otel-trace-propagation, relevance: 2 } + + - id: q57 + description: "HARD — vague dashboards query anchored at grafana fixture, requires bridge through observability" + mode: mixed + query: where do I look to debug a paging alert in dashboards + anchors: ["reference-grafana-dashboard"] + relevant: + - { id: oncall-runbook, relevance: 3 } + - { id: alert-rules-catalog, relevance: 2 } + - { id: dashboard-metrics, relevance: 2 } + - { id: observability-stack, relevance: 1 } + + - id: q58 + description: MEDIUM — cardinality query with ground truth across two files + mode: query + query: what's the active series cap per service and what happens if we exceed + relevant: + - { id: metric-cardinality-budget, relevance: 3 } + - { id: alert-fatigue-audit, relevance: 1 } + - { id: structured-log-schema, relevance: 1 } diff --git a/crates/loopal-memory/eval/src/baseline.rs b/crates/loopal-memory/eval/src/baseline.rs new file mode 100644 index 00000000..6e3d553a --- /dev/null +++ b/crates/loopal-memory/eval/src/baseline.rs @@ -0,0 +1,82 @@ +use crate::fixture::Fixture; + +const BYTES_PER_TOKEN: usize = 4; + +pub fn read_all_baseline(fixtures: &[Fixture]) -> usize { + let total_bytes: usize = fixtures.iter().map(|f| f.bytes()).sum(); + total_bytes / BYTES_PER_TOKEN +} + +pub fn grep_filter_baseline(fixtures: &[Fixture], query: &str) -> usize { + let needles: Vec = query + .split_whitespace() + .map(|s| s.to_lowercase()) + .filter(|s| !s.is_empty()) + .collect(); + if needles.is_empty() { + return read_all_baseline(fixtures); + } + let bytes: usize = fixtures + .iter() + .filter(|f| { + let lower = f.content.to_lowercase(); + needles.iter().any(|n| lower.contains(n)) + }) + .map(|f| f.bytes()) + .sum(); + bytes / BYTES_PER_TOKEN +} + +pub fn recall_output_tokens(formatted: &str) -> usize { + formatted.len() / BYTES_PER_TOKEN +} + +pub fn savings_percent(baseline: usize, current: usize) -> f32 { + if baseline == 0 { + return 0.0; + } + let saved = baseline.saturating_sub(current) as f32; + (saved / baseline as f32) * 100.0 +} + +#[cfg(test)] +mod tests { + use super::*; + + fn fix(_slug: &'static str, content: &'static str) -> Fixture { + Fixture { + file_path: "p", + content, + } + } + + #[test] + fn read_all_sums_all_bytes() { + let fixtures = vec![fix("a", "12345678"), fix("b", "abcd")]; + assert_eq!(read_all_baseline(&fixtures), 3); + } + + #[test] + fn grep_filter_returns_full_when_no_query() { + let fixtures = vec![fix("a", "1234")]; + assert_eq!(grep_filter_baseline(&fixtures, ""), 1); + } + + #[test] + fn grep_filter_only_counts_matching() { + let fixtures = vec![fix("a", "twitter content here"), fix("b", "scanner stuff")]; + let tokens = grep_filter_baseline(&fixtures, "twitter"); + assert_eq!(tokens, 20 / BYTES_PER_TOKEN); + } + + #[test] + fn recall_tokens_divides_by_four() { + assert_eq!(recall_output_tokens("12345678"), 2); + } + + #[test] + fn savings_clamps_at_zero_when_current_exceeds_baseline() { + assert_eq!(savings_percent(100, 200), 0.0); + assert!((savings_percent(100, 30) - 70.0).abs() < 1e-3); + } +} diff --git a/crates/loopal-memory/eval/src/fixture.rs b/crates/loopal-memory/eval/src/fixture.rs new file mode 100644 index 00000000..7ed54e97 --- /dev/null +++ b/crates/loopal-memory/eval/src/fixture.rs @@ -0,0 +1,183 @@ +pub struct Fixture { + pub file_path: &'static str, + pub content: &'static str, +} + +impl Fixture { + pub fn bytes(&self) -> usize { + self.content.len() + } +} + +pub fn all() -> Vec { + vec![ + fixture("twitter-automation"), + fixture("twitter-rate-limit"), + fixture("twitter-cooldown"), + fixture("twitter-long-tweets"), + fixture("twitter-monitor-scraping"), + fixture("twitter-reply-cold-start"), + fixture("twitter-algorithm-playbook"), + fixture("twitter-dm-outreach"), + fixture("twitter-list-curation"), + fixture("scanner-state"), + fixture("scanner-idempotency"), + fixture("scanner-replay"), + fixture("dashboard-deploy"), + fixture("dashboard-metrics"), + fixture("cold-email-templates"), + fixture("cold-email-deliverability"), + fixture("chrome-cdp"), + fixture("user-tone-prefer-direct"), + fixture("feedback-no-mocks-in-tests"), + fixture("feedback-batch-rejected"), + fixture("feedback-draft-discharges"), + fixture("reference-volcengine-api"), + fixture("reference-grafana-dashboard"), + fixture("loopal-cron-miss"), + fixture("gtm-high-intent-radar"), + fixture("postgres-runbook"), + fixture("pgbackrest-backup-policy"), + fixture("streaming-replication-setup"), + fixture("pgbouncer-pool-sizing"), + fixture("slow-query-triage"), + fixture("vacuum-tuning-guide"), + fixture("partition-rotation-cron"), + fixture("replica-lag-alerting"), + fixture("schema-migration-flyway"), + fixture("index-bloat-investigation"), + fixture("connection-storm-incident"), + fixture("pitr-recovery-drill"), + fixture("cicd-pipeline-overview"), + fixture("github-actions-workflow-layout"), + fixture("self-hosted-runner-pool"), + fixture("runner-autoscale-tuning"), + fixture("docker-multistage-build"), + fixture("artifact-cache-strategy"), + fixture("bazel-remote-cache"), + fixture("secrets-oidc-vault"), + fixture("deploy-canary-rollout"), + fixture("blue-green-fallback"), + fixture("flaky-test-quarantine"), + fixture("test-parallelization-shards"), + fixture("auth-architecture"), + fixture("oauth2-pkce-flow"), + fixture("jwt-rs256-signing"), + fixture("session-expiry-policy"), + fixture("mfa-enrollment-flow"), + fixture("rbac-role-matrix"), + fixture("audit-log-retention"), + fixture("password-rotation-policy"), + fixture("api-key-rotation"), + fixture("suspicious-login-detection"), + fixture("jwt-clock-skew-incident"), + fixture("session-fixation-test"), + fixture("observability-stack"), + fixture("structured-log-schema"), + fixture("otel-trace-propagation"), + fixture("alert-rules-catalog"), + fixture("slo-definitions"), + fixture("log-retention-policy"), + fixture("metric-cardinality-budget"), + fixture("alert-fatigue-audit"), + fixture("oncall-runbook"), + fixture("incident-postmortem-template"), + fixture("trace-sampling-policy"), + ] +} + +pub fn memory_index() -> Fixture { + Fixture { + file_path: "MEMORY.md", + content: include_str!("../data/fixtures/MEMORY.md"), + } +} + +macro_rules! fixture_const { + ($slug:literal) => { + Fixture { + file_path: concat!($slug, ".md"), + content: include_str!(concat!("../data/fixtures/", $slug, ".md")), + } + }; +} + +fn fixture(slug: &'static str) -> Fixture { + match slug { + "twitter-automation" => fixture_const!("twitter-automation"), + "twitter-rate-limit" => fixture_const!("twitter-rate-limit"), + "twitter-cooldown" => fixture_const!("twitter-cooldown"), + "twitter-long-tweets" => fixture_const!("twitter-long-tweets"), + "twitter-monitor-scraping" => fixture_const!("twitter-monitor-scraping"), + "twitter-reply-cold-start" => fixture_const!("twitter-reply-cold-start"), + "twitter-algorithm-playbook" => fixture_const!("twitter-algorithm-playbook"), + "twitter-dm-outreach" => fixture_const!("twitter-dm-outreach"), + "twitter-list-curation" => fixture_const!("twitter-list-curation"), + "scanner-state" => fixture_const!("scanner-state"), + "scanner-idempotency" => fixture_const!("scanner-idempotency"), + "scanner-replay" => fixture_const!("scanner-replay"), + "dashboard-deploy" => fixture_const!("dashboard-deploy"), + "dashboard-metrics" => fixture_const!("dashboard-metrics"), + "cold-email-templates" => fixture_const!("cold-email-templates"), + "cold-email-deliverability" => fixture_const!("cold-email-deliverability"), + "chrome-cdp" => fixture_const!("chrome-cdp"), + "user-tone-prefer-direct" => fixture_const!("user-tone-prefer-direct"), + "feedback-no-mocks-in-tests" => fixture_const!("feedback-no-mocks-in-tests"), + "feedback-batch-rejected" => fixture_const!("feedback-batch-rejected"), + "feedback-draft-discharges" => fixture_const!("feedback-draft-discharges"), + "reference-volcengine-api" => fixture_const!("reference-volcengine-api"), + "reference-grafana-dashboard" => fixture_const!("reference-grafana-dashboard"), + "loopal-cron-miss" => fixture_const!("loopal-cron-miss"), + "gtm-high-intent-radar" => fixture_const!("gtm-high-intent-radar"), + "postgres-runbook" => fixture_const!("postgres-runbook"), + "pgbackrest-backup-policy" => fixture_const!("pgbackrest-backup-policy"), + "streaming-replication-setup" => fixture_const!("streaming-replication-setup"), + "pgbouncer-pool-sizing" => fixture_const!("pgbouncer-pool-sizing"), + "slow-query-triage" => fixture_const!("slow-query-triage"), + "vacuum-tuning-guide" => fixture_const!("vacuum-tuning-guide"), + "partition-rotation-cron" => fixture_const!("partition-rotation-cron"), + "replica-lag-alerting" => fixture_const!("replica-lag-alerting"), + "schema-migration-flyway" => fixture_const!("schema-migration-flyway"), + "index-bloat-investigation" => fixture_const!("index-bloat-investigation"), + "connection-storm-incident" => fixture_const!("connection-storm-incident"), + "pitr-recovery-drill" => fixture_const!("pitr-recovery-drill"), + "cicd-pipeline-overview" => fixture_const!("cicd-pipeline-overview"), + "github-actions-workflow-layout" => fixture_const!("github-actions-workflow-layout"), + "self-hosted-runner-pool" => fixture_const!("self-hosted-runner-pool"), + "runner-autoscale-tuning" => fixture_const!("runner-autoscale-tuning"), + "docker-multistage-build" => fixture_const!("docker-multistage-build"), + "artifact-cache-strategy" => fixture_const!("artifact-cache-strategy"), + "bazel-remote-cache" => fixture_const!("bazel-remote-cache"), + "secrets-oidc-vault" => fixture_const!("secrets-oidc-vault"), + "deploy-canary-rollout" => fixture_const!("deploy-canary-rollout"), + "blue-green-fallback" => fixture_const!("blue-green-fallback"), + "flaky-test-quarantine" => fixture_const!("flaky-test-quarantine"), + "test-parallelization-shards" => fixture_const!("test-parallelization-shards"), + "auth-architecture" => fixture_const!("auth-architecture"), + "oauth2-pkce-flow" => fixture_const!("oauth2-pkce-flow"), + "jwt-rs256-signing" => fixture_const!("jwt-rs256-signing"), + "session-expiry-policy" => fixture_const!("session-expiry-policy"), + "mfa-enrollment-flow" => fixture_const!("mfa-enrollment-flow"), + "rbac-role-matrix" => fixture_const!("rbac-role-matrix"), + "audit-log-retention" => fixture_const!("audit-log-retention"), + "password-rotation-policy" => fixture_const!("password-rotation-policy"), + "api-key-rotation" => fixture_const!("api-key-rotation"), + "suspicious-login-detection" => fixture_const!("suspicious-login-detection"), + "jwt-clock-skew-incident" => fixture_const!("jwt-clock-skew-incident"), + "session-fixation-test" => fixture_const!("session-fixation-test"), + "observability-stack" => fixture_const!("observability-stack"), + "structured-log-schema" => fixture_const!("structured-log-schema"), + "otel-trace-propagation" => fixture_const!("otel-trace-propagation"), + "alert-rules-catalog" => fixture_const!("alert-rules-catalog"), + "slo-definitions" => fixture_const!("slo-definitions"), + "log-retention-policy" => fixture_const!("log-retention-policy"), + "metric-cardinality-budget" => fixture_const!("metric-cardinality-budget"), + "alert-fatigue-audit" => fixture_const!("alert-fatigue-audit"), + "oncall-runbook" => fixture_const!("oncall-runbook"), + "incident-postmortem-template" => fixture_const!("incident-postmortem-template"), + "trace-sampling-policy" => fixture_const!("trace-sampling-policy"), + other => panic!("unknown fixture: {other}"), + } +} + +pub const GROUND_TRUTH_YAML: &str = include_str!("../data/ground_truth.yaml"); diff --git a/crates/loopal-memory/eval/src/ground_truth.rs b/crates/loopal-memory/eval/src/ground_truth.rs new file mode 100644 index 00000000..9b898461 --- /dev/null +++ b/crates/loopal-memory/eval/src/ground_truth.rs @@ -0,0 +1,64 @@ +use std::collections::{HashMap, HashSet}; + +use serde::Deserialize; + +use crate::fixture::GROUND_TRUTH_YAML; + +#[derive(Debug, Deserialize)] +pub struct GroundTruthFile { + pub queries: Vec, +} + +#[derive(Debug, Deserialize)] +#[allow(dead_code)] +pub struct QuerySpec { + pub id: String, + pub description: String, + pub mode: QueryMode, + #[serde(default)] + pub query: Option, + #[serde(default)] + pub anchors: Vec, + pub relevant: Vec, +} + +#[derive(Debug, Deserialize, Clone, Copy, PartialEq, Eq)] +#[serde(rename_all = "lowercase")] +pub enum QueryMode { + Query, + Anchor, + Mixed, +} + +impl QueryMode { + pub fn as_str(&self) -> &'static str { + match self { + Self::Query => "query", + Self::Anchor => "anchor", + Self::Mixed => "mixed", + } + } +} + +#[derive(Debug, Deserialize)] +pub struct RelevantItem { + pub id: String, + pub relevance: u32, +} + +impl QuerySpec { + pub fn relevant_ids(&self) -> HashSet { + self.relevant.iter().map(|r| r.id.clone()).collect() + } + + pub fn relevance_map(&self) -> HashMap { + self.relevant + .iter() + .map(|r| (r.id.clone(), r.relevance)) + .collect() + } +} + +pub fn load() -> GroundTruthFile { + serde_yaml::from_str(GROUND_TRUTH_YAML).expect("ground_truth.yaml is malformed") +} diff --git a/crates/loopal-memory/eval/src/main.rs b/crates/loopal-memory/eval/src/main.rs new file mode 100644 index 00000000..3d2a6681 --- /dev/null +++ b/crates/loopal-memory/eval/src/main.rs @@ -0,0 +1,120 @@ +mod baseline; +mod fixture; +mod ground_truth; +mod metrics; +mod report; +mod report_retrieved; +mod runner; +mod synth_eval; + +use runner::EvalReport; + +fn macro_recall_at_k(report: &EvalReport, k: usize) -> f32 { + let n = report.queries.len() as f32; + report + .queries + .iter() + .map(|q| if k == 5 { q.r_at_5 } else { q.r_at_10 }) + .sum::() + / n +} + +fn macro_mrr(report: &EvalReport) -> f32 { + let n = report.queries.len() as f32; + report.queries.iter().map(|q| q.mrr).sum::() / n +} + +fn macro_ndcg(report: &EvalReport) -> f32 { + let n = report.queries.len() as f32; + report.queries.iter().map(|q| q.ndcg_at_5).sum::() / n +} + +#[tokio::main(flavor = "current_thread")] +async fn main() { + let cold = runner::run_with_warmup(0).await; + let md = report::render(&cold); + println!("{}", md); + + let warm5 = runner::run_with_warmup(5).await; + let warm20 = runner::run_with_warmup(20).await; + let imp5 = runner::run_with_importance(5).await; + let imp_max = runner::run_with_importance(10).await; + let per_q5 = runner::run_with_per_query_warmup(5).await; + + println!("\n## Associative Recall A/B\n"); + println!("- **Cold**: no events, no RecallStats"); + println!( + "- **Warm 5x/20x (global)**: warmup ALL ground-truth relevant — has cross-query pollution" + ); + println!("- **Imp +5/+10**: install importance on all relevant — cross-query pollution too"); + println!( + "- **Per-Q 5x**: warmup only current query's relevant (reset stats per query) — clean signal\n" + ); + println!("| Metric | Cold | Warm 5x | Warm 20x | Imp +5 | Imp +10 | Per-Q 5x |"); + println!("|---|---|---|---|---|---|---|"); + let modes: [&EvalReport; 6] = [&cold, &warm5, &warm20, &imp5, &imp_max, &per_q5]; + print_ab_row("Macro R@5", &modes, |r| macro_recall_at_k(r, 5)); + print_ab_row("Macro R@10", &modes, |r| macro_recall_at_k(r, 10)); + print_ab_row("Macro MRR", &modes, macro_mrr); + print_ab_row("Macro nDCG@5", &modes, macro_ndcg); + + println!("\n### Per-query MRR (cold vs warm 20x vs per-q 5x)"); + println!("| Query | Cold | Warm 20x | Per-Q 5x | Δ (Per-Q − Cold) |"); + println!("|---|---|---|---|---|"); + for ((c, w), p) in cold + .queries + .iter() + .zip(warm20.queries.iter()) + .zip(per_q5.queries.iter()) + { + println!( + "| {} | {:.3} | {:.3} | {:.3} | {:+.3} |", + c.spec.id, + c.mrr, + w.mrr, + p.mrr, + p.mrr - c.mrr + ); + } + + println!("\n## Regression Diagnostics (q51, q10)"); + dump_query_diff("q51", &cold, &warm20); + dump_query_diff("q51", &cold, &per_q5); + dump_query_diff("q10", &cold, &per_q5); +} + +fn print_ab_row(name: &str, modes: &[&EvalReport], f: impl Fn(&EvalReport) -> f32) { + print!("| {} |", name); + for m in modes { + print!(" {:.3} |", f(m)); + } + println!(); +} + +fn dump_query_diff(qid: &str, cold: &EvalReport, warm: &EvalReport) { + let c = cold.queries.iter().find(|q| q.spec.id == qid); + let w = warm.queries.iter().find(|q| q.spec.id == qid); + let (Some(c), Some(w)) = (c, w) else { + return; + }; + println!("\n#### {} cold retrieved:", qid); + for (i, r) in c.retrieved.iter().take(10).enumerate() { + let rel = c.spec.relevance_map().get(r).copied().unwrap_or(0); + let mark = if rel > 0 { + format!("✓ rel={}", rel) + } else { + "✗".to_string() + }; + println!(" {}. `{}` {}", i + 1, r, mark); + } + println!("\n#### {} warm 20x retrieved:", qid); + for (i, r) in w.retrieved.iter().take(10).enumerate() { + let rel = w.spec.relevance_map().get(r).copied().unwrap_or(0); + let mark = if rel > 0 { + format!("✓ rel={}", rel) + } else { + "✗".to_string() + }; + println!(" {}. `{}` {}", i + 1, r, mark); + } +} diff --git a/crates/loopal-memory/eval/src/metrics.rs b/crates/loopal-memory/eval/src/metrics.rs new file mode 100644 index 00000000..739051c5 --- /dev/null +++ b/crates/loopal-memory/eval/src/metrics.rs @@ -0,0 +1,151 @@ +use std::collections::{HashMap, HashSet}; + +pub fn precision_at_k(relevant: &HashSet, retrieved: &[String], k: usize) -> f32 { + if k == 0 { + return 0.0; + } + let window = &retrieved[..retrieved.len().min(k)]; + if window.is_empty() { + return 0.0; + } + let hits = window.iter().filter(|id| relevant.contains(*id)).count(); + hits as f32 / window.len() as f32 +} + +pub fn recall_at_k(relevant: &HashSet, retrieved: &[String], k: usize) -> f32 { + if relevant.is_empty() { + return 0.0; + } + let window = &retrieved[..retrieved.len().min(k)]; + let hits = window.iter().filter(|id| relevant.contains(*id)).count(); + hits as f32 / relevant.len() as f32 +} + +pub fn f1_at_k(relevant: &HashSet, retrieved: &[String], k: usize) -> f32 { + let p = precision_at_k(relevant, retrieved, k); + let r = recall_at_k(relevant, retrieved, k); + if p + r == 0.0 { + 0.0 + } else { + 2.0 * p * r / (p + r) + } +} + +pub fn mrr(relevant: &HashSet, retrieved: &[String]) -> f32 { + for (idx, id) in retrieved.iter().enumerate() { + if relevant.contains(id) { + return 1.0 / (idx + 1) as f32; + } + } + 0.0 +} + +pub fn ndcg_at_k(relevance_map: &HashMap, retrieved: &[String], k: usize) -> f32 { + let dcg = dcg_at_k(relevance_map, retrieved, k); + let mut sorted_grades: Vec = relevance_map.values().copied().collect(); + sorted_grades.sort_by(|a, b| b.cmp(a)); + let ideal_ids: Vec = (0..sorted_grades.len()) + .map(|i| format!("__ideal_{i}")) + .collect(); + let mut ideal_map: HashMap = HashMap::new(); + for (id, grade) in ideal_ids.iter().zip(sorted_grades.iter()) { + ideal_map.insert(id.clone(), *grade); + } + let idcg = dcg_at_k(&ideal_map, &ideal_ids, k); + if idcg == 0.0 { 0.0 } else { dcg / idcg } +} + +fn dcg_at_k(relevance_map: &HashMap, retrieved: &[String], k: usize) -> f32 { + let mut sum = 0.0_f32; + for (idx, id) in retrieved.iter().take(k).enumerate() { + let rel = *relevance_map.get(id).unwrap_or(&0) as f32; + // reason: rank index is 0-based here; log2(i+2) matches the standard DCG formula + let denom = ((idx + 2) as f32).log2(); + sum += rel / denom; + } + sum +} + +#[cfg(test)] +mod tests { + use super::*; + + fn relevant_set(ids: &[&str]) -> HashSet { + ids.iter().map(|s| s.to_string()).collect() + } + + fn retrieved_vec(ids: &[&str]) -> Vec { + ids.iter().map(|s| s.to_string()).collect() + } + + #[test] + fn precision_perfect_hit() { + let rel = relevant_set(&["a", "b"]); + let ret = retrieved_vec(&["a", "b", "c"]); + assert_eq!(precision_at_k(&rel, &ret, 2), 1.0); + } + + #[test] + fn precision_zero_when_no_overlap() { + let rel = relevant_set(&["a", "b"]); + let ret = retrieved_vec(&["x", "y"]); + assert_eq!(precision_at_k(&rel, &ret, 2), 0.0); + } + + #[test] + fn recall_caps_at_one() { + let rel = relevant_set(&["a", "b"]); + let ret = retrieved_vec(&["a", "b", "c", "d"]); + assert_eq!(recall_at_k(&rel, &ret, 4), 1.0); + } + + #[test] + fn f1_zero_when_both_zero() { + let rel = relevant_set(&["a"]); + let ret = retrieved_vec(&["x"]); + assert_eq!(f1_at_k(&rel, &ret, 1), 0.0); + } + + #[test] + fn mrr_uses_first_hit_rank() { + let rel = relevant_set(&["b"]); + let ret = retrieved_vec(&["a", "b", "c"]); + assert!((mrr(&rel, &ret) - 0.5).abs() < 1e-5); + } + + #[test] + fn mrr_zero_when_no_hit() { + let rel = relevant_set(&["z"]); + let ret = retrieved_vec(&["a", "b"]); + assert_eq!(mrr(&rel, &ret), 0.0); + } + + #[test] + fn ndcg_perfect_ordering_yields_one() { + let mut map = HashMap::new(); + map.insert("a".into(), 3); + map.insert("b".into(), 2); + map.insert("c".into(), 1); + let ret = retrieved_vec(&["a", "b", "c"]); + let score = ndcg_at_k(&map, &ret, 3); + assert!(score > 0.99); + } + + #[test] + fn ndcg_reversed_ordering_below_one() { + let mut map = HashMap::new(); + map.insert("a".into(), 3); + map.insert("b".into(), 1); + let ret = retrieved_vec(&["b", "a"]); + let score = ndcg_at_k(&map, &ret, 2); + assert!(score < 1.0 && score > 0.5); + } + + #[test] + fn handles_k_larger_than_retrieved() { + let rel = relevant_set(&["a", "b"]); + let ret = retrieved_vec(&["a"]); + assert_eq!(precision_at_k(&rel, &ret, 10), 1.0); + assert_eq!(recall_at_k(&rel, &ret, 10), 0.5); + } +} diff --git a/crates/loopal-memory/eval/src/report.rs b/crates/loopal-memory/eval/src/report.rs new file mode 100644 index 00000000..1226c236 --- /dev/null +++ b/crates/loopal-memory/eval/src/report.rs @@ -0,0 +1,188 @@ +use std::fmt::Write; + +use crate::baseline::savings_percent; +use crate::report_retrieved::write_retrieved; +use crate::runner::{EvalReport, QueryReport, SynthReport}; + +const PASS_R5: f32 = 0.7; +const PASS_R10: f32 = 0.85; +const PASS_MRR: f32 = 0.7; +const PASS_NDCG5: f32 = 0.7; +const PASS_SYNTH: f32 = 0.5; + +pub fn render(report: &EvalReport) -> String { + let mut out = String::new(); + writeln!(out, "# memory_recall Evaluation Report\n").ok(); + + write_summary(&mut out, report); + write_per_query(&mut out, &report.queries); + write_macro(&mut out, &report.queries); + write_retrieved(&mut out, &report.queries); + write_synth(&mut out, &report.synth); + write_tokens(&mut out, &report.queries); + write_gates(&mut out, report); + + out +} + +fn write_summary(out: &mut String, r: &EvalReport) { + writeln!(out, "## Dataset").ok(); + writeln!(out, "- Fixtures: {}", r.fixture_count).ok(); + writeln!( + out, + "- Total bytes: {:.1} KB", + r.total_bytes as f32 / 1024.0 + ) + .ok(); + writeln!(out, "- Queries: {}\n", r.queries.len()).ok(); +} + +fn write_per_query(out: &mut String, qs: &[QueryReport]) { + writeln!(out, "## Per-query Metrics").ok(); + writeln!(out, "**Primary** (找到相关信息): Recall@K + MRR + nDCG@5").ok(); + writeln!(out, "**Secondary** (精度参考): P@K + F1@5\n").ok(); + writeln!( + out, + "| Query | Mode | R@5 | R@10 | MRR | nDCG@5 | P@5 | P@10 | F1@5 |" + ) + .ok(); + writeln!(out, "|---|---|---|---|---|---|---|---|---|").ok(); + for q in qs { + writeln!( + out, + "| {} | {} | {:.2} | {:.2} | {:.2} | {:.2} | {:.2} | {:.2} | {:.2} |", + q.spec.id, + q.spec.mode.as_str(), + q.r_at_5, + q.r_at_10, + q.mrr, + q.ndcg_at_5, + q.p_at_5, + q.p_at_10, + q.f1_at_5, + ) + .ok(); + } + out.push('\n'); +} + +fn write_macro(out: &mut String, qs: &[QueryReport]) { + let n = qs.len() as f32; + let mean = |f: fn(&QueryReport) -> f32| -> f32 { + if n == 0.0 { + 0.0 + } else { + qs.iter().map(f).sum::() / n + } + }; + writeln!(out, "## Macro Average").ok(); + writeln!(out, "| Metric | Value | Tier |").ok(); + writeln!(out, "|---|---|---|").ok(); + writeln!(out, "| **R@5** | {:.3} | Primary |", mean(|q| q.r_at_5)).ok(); + writeln!(out, "| **R@10** | {:.3} | Primary |", mean(|q| q.r_at_10)).ok(); + writeln!(out, "| **MRR** | {:.3} | Primary |", mean(|q| q.mrr)).ok(); + writeln!( + out, + "| **nDCG@5** | {:.3} | Primary |", + mean(|q| q.ndcg_at_5) + ) + .ok(); + writeln!(out, "| P@5 | {:.3} | Secondary |", mean(|q| q.p_at_5)).ok(); + writeln!(out, "| P@10 | {:.3} | Secondary |", mean(|q| q.p_at_10)).ok(); + writeln!(out, "| F1@5 | {:.3} | Secondary |", mean(|q| q.f1_at_5)).ok(); + out.push('\n'); +} + +fn write_synth(out: &mut String, synth: &[SynthReport]) { + writeln!(out, "## Synthesized Edge Precision").ok(); + writeln!(out, "| Synthesizer | Sampled | Plausible | Precision |").ok(); + writeln!(out, "|---|---|---|---|").ok(); + for s in synth { + let p = if s.sampled == 0 { + 0.0 + } else { + s.plausible as f32 / s.sampled as f32 + }; + writeln!( + out, + "| {} | {} | {} | {:.3} |", + s.synthesizer, s.sampled, s.plausible, p, + ) + .ok(); + } + out.push('\n'); +} + +fn write_tokens(out: &mut String, qs: &[QueryReport]) { + writeln!(out, "## Token Usage (informational, not a gate)").ok(); + writeln!( + out, + "fixture 规模小,grep baseline 已很精确;GTM 规模(8KB+/文件)下 recall 优势会显著。\n" + ) + .ok(); + writeln!( + out, + "| Query | read_all | grep_filter | recall | vs read_all | vs grep |" + ) + .ok(); + writeln!(out, "|---|---|---|---|---|---|").ok(); + for q in qs { + writeln!( + out, + "| {} | {} | {} | {} | {:.0}% | {:.0}% |", + q.spec.id, + q.read_all_tokens, + q.grep_tokens, + q.recall_tokens, + savings_percent(q.read_all_tokens, q.recall_tokens), + savings_percent(q.grep_tokens, q.recall_tokens), + ) + .ok(); + } + out.push('\n'); +} + +fn write_gates(out: &mut String, report: &EvalReport) { + let n = report.queries.len() as f32; + let mean_r5: f32 = report.queries.iter().map(|q| q.r_at_5).sum::() / n; + let mean_r10: f32 = report.queries.iter().map(|q| q.r_at_10).sum::() / n; + let mean_mrr: f32 = report.queries.iter().map(|q| q.mrr).sum::() / n; + let mean_ndcg5: f32 = report.queries.iter().map(|q| q.ndcg_at_5).sum::() / n; + let synth_strict: f32 = strict_synth_precision(&report.synth); + + writeln!(out, "## Pass/Fail Gates (相关性优先 / 召回为主)").ok(); + gate_line(out, "Macro Recall@5 ≥ 0.70", mean_r5, PASS_R5); + gate_line(out, "Macro Recall@10 ≥ 0.85", mean_r10, PASS_R10); + gate_line(out, "Macro MRR ≥ 0.70", mean_mrr, PASS_MRR); + gate_line(out, "Macro nDCG@5 ≥ 0.70", mean_ndcg5, PASS_NDCG5); + gate_line( + out, + "Synth precision (slug+derive+supersede) ≥ 0.50", + synth_strict, + PASS_SYNTH, + ); +} + +fn gate_line(out: &mut String, label: &str, value: f32, threshold: f32) { + let tag = if value >= threshold { "PASS" } else { "FAIL" }; + writeln!(out, "- [{}] {}: {:.3}", tag, label, value).ok(); +} + +fn strict_synth_precision(synth: &[SynthReport]) -> f32 { + let mut sampled = 0usize; + let mut plausible = 0usize; + for s in synth { + if matches!( + s.synthesizer.as_str(), + "slug_cluster" | "derive_chain" | "supersede" + ) { + sampled += s.sampled; + plausible += s.plausible; + } + } + if sampled == 0 { + 0.0 + } else { + plausible as f32 / sampled as f32 + } +} diff --git a/crates/loopal-memory/eval/src/report_retrieved.rs b/crates/loopal-memory/eval/src/report_retrieved.rs new file mode 100644 index 00000000..adc28462 --- /dev/null +++ b/crates/loopal-memory/eval/src/report_retrieved.rs @@ -0,0 +1,44 @@ +use std::fmt::Write; + +use crate::runner::QueryReport; + +pub fn write_retrieved(out: &mut String, qs: &[QueryReport]) { + writeln!(out, "## Per-query Retrieved (top 12)").ok(); + writeln!( + out, + "`✓` = ground-truth relevant;`✗` = noise;尾部 `[missed]` 是该 query 期望但没召回到的 slug\n" + ) + .ok(); + for q in qs { + let rel = q.spec.relevant_ids(); + let input = q.spec.query.clone().unwrap_or_default(); + let anchors = if q.spec.anchors.is_empty() { + String::new() + } else { + format!(" anchors={:?}", q.spec.anchors) + }; + writeln!( + out, + "### {} [{}] — `{}`{}\n", + q.spec.id, + q.spec.mode.as_str(), + input, + anchors + ) + .ok(); + writeln!(out, "_{}_\n", q.spec.description).ok(); + for (i, slug) in q.retrieved.iter().take(12).enumerate() { + let tag = if rel.contains(slug) { "✓" } else { "✗" }; + writeln!(out, "{}. {} `{}`", i + 1, tag, slug).ok(); + } + let missed: Vec<&str> = rel + .iter() + .filter(|r| !q.retrieved.contains(r)) + .map(|s| s.as_str()) + .collect(); + if !missed.is_empty() { + writeln!(out, "\n**missed**: {}", missed.join(", ")).ok(); + } + out.push('\n'); + } +} diff --git a/crates/loopal-memory/eval/src/runner.rs b/crates/loopal-memory/eval/src/runner.rs new file mode 100644 index 00000000..a94f7e54 --- /dev/null +++ b/crates/loopal-memory/eval/src/runner.rs @@ -0,0 +1,217 @@ +use loopal_memory::extract::extract_file; +use loopal_memory::graph::recall::{RecallParams, RecallResult, recall}; +use loopal_memory::{EventLogWriter, MemoryGraph, synthesize_all}; + +use crate::baseline::{grep_filter_baseline, read_all_baseline, recall_output_tokens}; +use crate::fixture::{Fixture, all as all_fixtures, memory_index}; +use crate::ground_truth::{QueryMode, QuerySpec, load}; +use crate::metrics::{f1_at_k, mrr, ndcg_at_k, precision_at_k, recall_at_k}; +use crate::synth_eval; + +#[allow(dead_code)] +pub struct QueryReport { + pub spec: QuerySpec, + pub retrieved: Vec, + pub p_at_5: f32, + pub p_at_10: f32, + pub r_at_5: f32, + pub r_at_10: f32, + pub f1_at_5: f32, + pub mrr: f32, + pub ndcg_at_5: f32, + pub recall_tokens: usize, + pub grep_tokens: usize, + pub read_all_tokens: usize, +} + +pub struct SynthReport { + pub synthesizer: String, + pub sampled: usize, + pub plausible: usize, +} + +pub struct EvalReport { + pub queries: Vec, + pub synth: Vec, + pub fixture_count: usize, + pub total_bytes: usize, +} + +pub async fn run_with_warmup(warmup_reps: usize) -> EvalReport { + run_internal(warmup_reps, 0, false).await +} + +pub async fn run_with_importance(importance: i8) -> EvalReport { + run_internal(0, importance, false).await +} + +pub async fn run_with_per_query_warmup(warmup_reps: usize) -> EvalReport { + run_internal(warmup_reps, 0, true).await +} + +async fn run_internal(warmup_reps: usize, importance: i8, per_query: bool) -> EvalReport { + let mut graph = MemoryGraph::in_memory().expect("open in-memory graph"); + let fixtures = all_fixtures(); + let total_bytes: usize = fixtures.iter().map(|f| f.bytes()).sum(); + + let memory_idx = memory_index(); + extract_and_load(&graph, &memory_idx).await; + for f in &fixtures { + extract_and_load(&graph, f).await; + } + + synthesize_all(&graph).await.expect("synthesize"); + + let gt = load(); + + if warmup_reps > 0 && !per_query { + let tmp = tempfile::TempDir::new().expect("tmp events dir"); + let writer = + std::sync::Arc::new(EventLogWriter::new(tmp.path().to_path_buf(), "eval-warmup")); + graph.set_event_log(writer); + for spec in >.queries { + for rel in &spec.relevant { + let warm_params = RecallParams { + anchor_names: vec![rel.id.clone()], + depth: 0, + ..Default::default() + }; + for _ in 0..warmup_reps { + let _ = recall(&graph, &warm_params).await; + } + } + } + } + + if warmup_reps > 0 && per_query { + let tmp = tempfile::TempDir::new().expect("tmp events dir"); + let writer = + std::sync::Arc::new(EventLogWriter::new(tmp.path().to_path_buf(), "eval-per-q")); + graph.set_event_log(writer); + } + + if importance != 0 { + let mut stats_map = loopal_memory::RecallStatsMap::new(); + for spec in >.queries { + for rel in &spec.relevant { + stats_map.insert( + rel.id.clone(), + loopal_memory::RecallStats { + recall_count: 0, + last_recalled_at: 0, + importance, + importance_ts: 1, + }, + ); + } + } + graph.install_recall_stats(stats_map); + } + + let mut query_reports = Vec::with_capacity(gt.queries.len()); + for spec in gt.queries { + if warmup_reps > 0 && per_query { + graph.install_recall_stats(loopal_memory::RecallStatsMap::new()); + for rel in &spec.relevant { + let warm_params = RecallParams { + anchor_names: vec![rel.id.clone()], + depth: 0, + ..Default::default() + }; + for _ in 0..warmup_reps { + let _ = recall(&graph, &warm_params).await; + } + } + } + let report = run_one_query(&graph, &fixtures, spec).await; + query_reports.push(report); + } + + let synth = synth_eval::score(&graph, &query_reports).await; + + EvalReport { + queries: query_reports, + synth, + fixture_count: fixtures.len() + 1, + total_bytes, + } +} + +async fn extract_and_load(graph: &MemoryGraph, fixture: &Fixture) { + let result = extract_file(fixture.file_path, fixture.content); + for node in result.nodes { + let _ = graph.upsert_node(node).await; + } + for edge in result.edges { + let _ = graph.insert_edge(edge).await; + } +} + +async fn run_one_query(graph: &MemoryGraph, fixtures: &[Fixture], spec: QuerySpec) -> QueryReport { + let params = match spec.mode { + QueryMode::Query => RecallParams { + query: spec.query.clone(), + depth: 2, + ..Default::default() + }, + QueryMode::Anchor => RecallParams { + anchor_names: spec.anchors.clone(), + depth: 2, + ..Default::default() + }, + QueryMode::Mixed => RecallParams { + query: spec.query.clone(), + anchor_names: spec.anchors.clone(), + depth: 2, + ..Default::default() + }, + }; + let result = recall(graph, ¶ms).await.expect("recall"); + let retrieved_raw = retrieved_ids(&result); + // anchor 是用户输入种子,不是检索系统的"预测"。算 precision/recall 时排除自身, + // 否则 q06/q07/q08 这类 anchor mode 永远在 rank 1 拉低 P@K(anchor ∉ relevant 是 ground truth 约定)。 + let anchor_set: std::collections::HashSet<&str> = + spec.anchors.iter().map(|s| s.as_str()).collect(); + let retrieved: Vec = retrieved_raw + .into_iter() + .filter(|id| !anchor_set.contains(id.as_str())) + .collect(); + let formatted = loopal_memory::format_recall(&result); + + let rel_set = spec.relevant_ids(); + let rel_map = spec.relevance_map(); + let query_str = spec.query.clone().unwrap_or_else(|| spec.anchors.join(" ")); + + QueryReport { + p_at_5: precision_at_k(&rel_set, &retrieved, 5), + p_at_10: precision_at_k(&rel_set, &retrieved, 10), + r_at_5: recall_at_k(&rel_set, &retrieved, 5), + r_at_10: recall_at_k(&rel_set, &retrieved, 10), + f1_at_5: f1_at_k(&rel_set, &retrieved, 5), + mrr: mrr(&rel_set, &retrieved), + ndcg_at_5: ndcg_at_k(&rel_map, &retrieved, 5), + recall_tokens: recall_output_tokens(&formatted), + grep_tokens: grep_filter_baseline(fixtures, &query_str), + read_all_tokens: read_all_baseline(fixtures), + spec, + retrieved, + } +} + +fn retrieved_ids(result: &RecallResult) -> Vec { + let mut ids = Vec::new(); + for hit in &result.direct_hits { + ids.push(hit.node.id.clone()); + } + for n in &result.neighbors { + if !ids.contains(&n.node.id) { + ids.push(n.node.id.clone()); + } + } + for c in &result.co_occurring { + if !ids.contains(&c.node.id) { + ids.push(c.node.id.clone()); + } + } + ids +} diff --git a/crates/loopal-memory/eval/src/synth_eval.rs b/crates/loopal-memory/eval/src/synth_eval.rs new file mode 100644 index 00000000..4d0ba368 --- /dev/null +++ b/crates/loopal-memory/eval/src/synth_eval.rs @@ -0,0 +1,56 @@ +use std::collections::{HashMap, HashSet}; + +use loopal_memory::EdgeKind; +use loopal_memory::store::types::MemoryEdge; +use loopal_memory::{MemoryGraph, Provenance}; + +use crate::runner::{QueryReport, SynthReport}; + +pub async fn score(graph: &MemoryGraph, queries: &[QueryReport]) -> Vec { + let edges = graph + .list_edges_by_provenance(Provenance::Synthesized) + .await + .expect("list synth"); + + let mut by_kind: HashMap = HashMap::new(); + + for e in edges.iter() { + let synth_name = classify(e); + let entry = by_kind.entry(synth_name).or_insert((0, 0)); + entry.0 += 1; + if is_plausible(e, queries) { + entry.1 += 1; + } + } + + let mut out: Vec = by_kind + .into_iter() + .map(|(synthesizer, (sampled, plausible))| SynthReport { + synthesizer, + sampled, + plausible, + }) + .collect(); + out.sort_by(|a, b| a.synthesizer.cmp(&b.synthesizer)); + out +} + +fn classify(edge: &MemoryEdge) -> String { + match edge.kind { + EdgeKind::DerivedFrom => "derive_chain".into(), + EdgeKind::SupersededBy => "supersede".into(), + EdgeKind::CoOccursSlug => "slug_cluster".into(), + EdgeKind::CoOccursToken => "token_cluster".into(), + _ => "other".into(), + } +} + +fn is_plausible(edge: &MemoryEdge, queries: &[QueryReport]) -> bool { + for q in queries { + let ids: HashSet<&str> = q.spec.relevant.iter().map(|r| r.id.as_str()).collect(); + if ids.contains(edge.src_id.as_str()) && ids.contains(edge.dst_id.as_str()) { + return true; + } + } + false +} diff --git a/crates/loopal-memory/src/extraction.rs b/crates/loopal-memory/src/agent_output.rs similarity index 100% rename from crates/loopal-memory/src/extraction.rs rename to crates/loopal-memory/src/agent_output.rs diff --git a/crates/loopal-memory/src/consolidation/lock.rs b/crates/loopal-memory/src/consolidation/lock.rs index a1d94d5b..a06efc27 100644 --- a/crates/loopal-memory/src/consolidation/lock.rs +++ b/crates/loopal-memory/src/consolidation/lock.rs @@ -1,33 +1,68 @@ +use std::io::Write; use std::path::Path; use super::now_secs; const LOCK_STALE_THRESHOLD_SECS: u64 = 3600; +const LOCK_INCOMPLETE_GRACE_SECS: u64 = 30; pub fn try_acquire_lock(memory_dir: &Path) -> Option { let lock_path = memory_dir.join(".consolidation_lock"); - let now = now_secs(); // capture once to avoid TOCTOU skew - if lock_path.exists() { - let is_stale = std::fs::read_to_string(&lock_path) - .ok() - .and_then(|s| s.trim().parse::().ok()) - .map(|lock_ts| now.saturating_sub(lock_ts) > LOCK_STALE_THRESHOLD_SECS) - .unwrap_or(true); // unparseable → treat as stale - if !is_stale { - return None; // another session owns it - } - tracing::info!("stale consolidation lock detected, overwriting"); - } + let now = now_secs(); let _ = std::fs::create_dir_all(memory_dir); - match std::fs::write(&lock_path, now.to_string()) { - Ok(()) => Some(lock_path), - Err(e) => { - tracing::warn!("failed to create consolidation lock: {e}"); - None + + loop { + match std::fs::OpenOptions::new() + .write(true) + .create_new(true) + .open(&lock_path) + { + Ok(mut f) => { + if let Err(e) = writeln!(f, "{}", now) { + tracing::warn!("failed to write consolidation lock body: {e}"); + let _ = std::fs::remove_file(&lock_path); + return None; + } + return Some(lock_path); + } + Err(e) if e.kind() == std::io::ErrorKind::AlreadyExists => { + let raw = std::fs::read_to_string(&lock_path).ok(); + let is_stale = match raw.as_deref().map(str::trim) { + None => true, + Some("") => incomplete_lock_is_stale(&lock_path, now), + Some(s) => match s.parse::() { + Ok(lock_ts) => now.saturating_sub(lock_ts) > LOCK_STALE_THRESHOLD_SECS, + Err(_) => true, + }, + }; + if !is_stale { + return None; + } + tracing::info!("stale consolidation lock detected, replacing"); + if std::fs::remove_file(&lock_path).is_err() { + return None; + } + } + Err(e) => { + tracing::warn!("failed to create consolidation lock: {e}"); + return None; + } } } } +fn incomplete_lock_is_stale(lock_path: &Path, now: u64) -> bool { + let mtime = std::fs::metadata(lock_path).and_then(|m| m.modified()).ok(); + let Some(mtime) = mtime else { + return true; + }; + let mtime_secs = mtime + .duration_since(std::time::UNIX_EPOCH) + .map(|d| d.as_secs()) + .unwrap_or(0); + now.saturating_sub(mtime_secs) > LOCK_INCOMPLETE_GRACE_SECS +} + pub fn release_lock(lock_path: &Path) { let _ = std::fs::remove_file(lock_path); } @@ -38,7 +73,7 @@ mod tests { #[test] fn test_acquire_lock_fresh() { - let dir = std::env::temp_dir().join("test_lock_fresh_v3"); + let dir = std::env::temp_dir().join("test_lock_fresh_v4"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); @@ -53,7 +88,7 @@ mod tests { #[test] fn test_acquire_lock_already_held() { - let dir = std::env::temp_dir().join("test_lock_held_v3"); + let dir = std::env::temp_dir().join("test_lock_held_v4"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); @@ -69,7 +104,7 @@ mod tests { #[test] fn test_acquire_lock_stale() { - let dir = std::env::temp_dir().join("test_lock_stale_v3"); + let dir = std::env::temp_dir().join("test_lock_stale_v4"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); @@ -85,7 +120,7 @@ mod tests { #[test] fn test_acquire_lock_corrupted() { - let dir = std::env::temp_dir().join("test_lock_corrupted_v3"); + let dir = std::env::temp_dir().join("test_lock_corrupted_v4"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); @@ -100,6 +135,48 @@ mod tests { #[test] fn test_release_lock_nonexistent() { - release_lock(Path::new("/tmp/nonexistent_lock_file_v3")); + release_lock(Path::new("/tmp/nonexistent_lock_file_v4")); + } + + #[test] + fn test_acquire_lock_empty_within_grace_period() { + let dir = std::env::temp_dir().join("test_lock_empty_fresh_v4"); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(&dir).unwrap(); + std::fs::write(dir.join(".consolidation_lock"), "").unwrap(); + + let lock = try_acquire_lock(&dir); + assert!( + lock.is_none(), + "fresh empty lock should be treated as winner mid-write" + ); + + let _ = std::fs::remove_dir_all(&dir); + } + + #[test] + fn test_acquire_lock_empty_past_grace_period() { + let dir = std::env::temp_dir().join("test_lock_empty_stale_v4"); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(&dir).unwrap(); + let lock_path = dir.join(".consolidation_lock"); + std::fs::write(&lock_path, "").unwrap(); + + let backdated = std::time::SystemTime::now() + - std::time::Duration::from_secs(LOCK_INCOMPLETE_GRACE_SECS + 60); + let f = std::fs::File::options() + .write(true) + .open(&lock_path) + .unwrap(); + f.set_modified(backdated).unwrap(); + + let lock = try_acquire_lock(&dir); + assert!( + lock.is_some(), + "empty lock older than grace period should be reclaimable" + ); + + release_lock(&lock.unwrap()); + let _ = std::fs::remove_dir_all(&dir); } } diff --git a/crates/loopal-memory/src/consolidation/schedule.rs b/crates/loopal-memory/src/consolidation/schedule.rs index e91cc3a8..4aafd28a 100644 --- a/crates/loopal-memory/src/consolidation/schedule.rs +++ b/crates/loopal-memory/src/consolidation/schedule.rs @@ -1,6 +1,7 @@ use std::path::Path; use crate::date; +use crate::sync::memory_index_path; pub fn needs_consolidation(memory_dir: &Path, interval_days: u32) -> bool { let marker = memory_dir.join(".last_consolidation"); @@ -10,7 +11,7 @@ pub fn needs_consolidation(memory_dir: &Path, interval_days: u32) -> bool { let today = date::today_str(); date::days_between(last, &today).is_none_or(|d| d >= interval_days as i64) } - Err(_) => memory_dir.join("MEMORY.md").exists(), + Err(_) => memory_index_path(memory_dir).exists(), } } @@ -54,7 +55,7 @@ mod tests { let dir = std::env::temp_dir().join("test_consol_no_marker_with_mem_v3"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); - std::fs::write(dir.join("MEMORY.md"), "# Memory\nSome content").unwrap(); + std::fs::write(memory_index_path(&dir), "# Memory\nSome content").unwrap(); assert!(needs_consolidation(&dir, 7)); let _ = std::fs::remove_dir_all(&dir); } @@ -64,7 +65,7 @@ mod tests { let dir = std::env::temp_dir().join("test_consol_recent_v3"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); - std::fs::write(dir.join("MEMORY.md"), "# Memory").unwrap(); + std::fs::write(memory_index_path(&dir), "# Memory").unwrap(); std::fs::write(dir.join(".last_consolidation"), date::today_str()).unwrap(); assert!(!needs_consolidation(&dir, 7)); let _ = std::fs::remove_dir_all(&dir); @@ -75,7 +76,7 @@ mod tests { let dir = std::env::temp_dir().join("test_consol_overdue_v3"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); - std::fs::write(dir.join("MEMORY.md"), "# Memory").unwrap(); + std::fs::write(memory_index_path(&dir), "# Memory").unwrap(); let old_days = now_secs() / 86400 - 10; let old_date = date::epoch_days_to_date(old_days as i64); std::fs::write(dir.join(".last_consolidation"), &old_date).unwrap(); @@ -89,7 +90,7 @@ mod tests { let dir = std::env::temp_dir().join("test_consol_corrupted_v3"); let _ = std::fs::remove_dir_all(&dir); std::fs::create_dir_all(&dir).unwrap(); - std::fs::write(dir.join("MEMORY.md"), "# Memory").unwrap(); + std::fs::write(memory_index_path(&dir), "# Memory").unwrap(); std::fs::write(dir.join(".last_consolidation"), "not-a-date").unwrap(); assert!(needs_consolidation(&dir, 7)); let _ = std::fs::remove_dir_all(&dir); diff --git a/crates/loopal-memory/src/event_log/gc.rs b/crates/loopal-memory/src/event_log/gc.rs new file mode 100644 index 00000000..ee37f95d --- /dev/null +++ b/crates/loopal-memory/src/event_log/gc.rs @@ -0,0 +1,141 @@ +use std::fs::{self, File}; +use std::io::{self, BufReader, BufWriter, Write}; +use std::path::{Path, PathBuf}; +use std::time::{SystemTime, UNIX_EPOCH}; + +use chrono::{Duration, NaiveDate, Utc}; +use flate2::Compression; +use flate2::write::GzEncoder; + +const ARCHIVE_DIR: &str = "archive"; + +pub struct GcStats { + pub compressed: usize, + pub archived: usize, + pub errors: usize, +} + +pub fn run_gc(dir: &Path, compress_after_days: u32, archive_after_days: u32) -> GcStats { + let mut stats = GcStats { + compressed: 0, + archived: 0, + errors: 0, + }; + let entries = match fs::read_dir(dir) { + Ok(e) => e, + Err(e) if e.kind() == io::ErrorKind::NotFound => return stats, + Err(e) => { + tracing::warn!(error = %e, path = %dir.display(), "event_log gc read_dir failed"); + stats.errors = 1; + return stats; + } + }; + let today = Utc::now().date_naive(); + let compress_cutoff = today - Duration::days(compress_after_days as i64); + let archive_cutoff = today - Duration::days(archive_after_days as i64); + + let archive_dir = dir.join(ARCHIVE_DIR); + for entry in entries.filter_map(|e| e.ok()) { + let path = entry.path(); + if !path.is_file() { + continue; + } + let Some(date) = parse_event_file_date(&path) else { + continue; + }; + let name = path.file_name().and_then(|s| s.to_str()).unwrap_or(""); + + if name.ends_with(".jsonl.gz") && date < archive_cutoff { + tally( + &mut stats, + archive_file(&path, &archive_dir), + "archive", + &path, + ); + } else if name.ends_with(".jsonl") && date < compress_cutoff { + tally(&mut stats, compress_file(&path), "compress", &path); + } + } + stats +} + +fn tally(stats: &mut GcStats, result: io::Result, op: &'static str, path: &Path) { + match result { + Ok(true) if op == "archive" => stats.archived += 1, + Ok(true) => stats.compressed += 1, + Ok(false) => {} + Err(e) => { + stats.errors += 1; + tracing::warn!(error = %e, op, path = %path.display(), "event_log gc op failed"); + } + } +} + +fn parse_event_file_date(path: &Path) -> Option { + let name = path.file_name().and_then(|s| s.to_str())?; + let stem = name + .strip_suffix(".jsonl.gz") + .or_else(|| name.strip_suffix(".jsonl"))?; + let date_part = stem.split('_').next()?; + NaiveDate::parse_from_str(date_part, "%Y-%m-%d").ok() +} + +fn compress_file(path: &Path) -> io::Result { + let gz_path = with_gz_suffix(path); + if gz_path.exists() { + // Orphan recovery: prior compress crashed between rename and remove, + // or a concurrent compress just won the rename race. The .gz is the + // authoritative copy; drop the stale source to prevent fold double-count. + fs::remove_file(path)?; + tracing::warn!( + path = %path.display(), + "event_log gc: orphan .jsonl removed (gz already exists)" + ); + return Ok(false); + } + let tmp_path = unique_tmp_path(&gz_path); + { + let src = File::open(path)?; + let tmp = File::create(&tmp_path)?; + let mut encoder = GzEncoder::new(BufWriter::new(tmp), Compression::default()); + io::copy(&mut BufReader::new(src), &mut encoder)?; + encoder.finish()?.flush()?; + } + if let Err(e) = fs::rename(&tmp_path, &gz_path) { + let _ = fs::remove_file(&tmp_path); + return Err(e); + } + fs::remove_file(path)?; + Ok(true) +} + +fn archive_file(path: &Path, archive_dir: &Path) -> io::Result { + fs::create_dir_all(archive_dir)?; + let Some(name) = path.file_name() else { + return Ok(false); + }; + let dest = archive_dir.join(name); + if dest.exists() { + fs::remove_file(path)?; + return Ok(false); + } + fs::rename(path, &dest)?; + Ok(true) +} + +fn with_gz_suffix(path: &Path) -> PathBuf { + let mut buf = path.as_os_str().to_owned(); + buf.push(".gz"); + PathBuf::from(buf) +} + +fn unique_tmp_path(gz_path: &Path) -> PathBuf { + let pid = std::process::id(); + let nanos = SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|d| d.subsec_nanos()) + .unwrap_or(0); + let mut buf = gz_path.as_os_str().to_owned(); + buf.push(format!(".tmp.{pid}.{nanos}")); + PathBuf::from(buf) +} diff --git a/crates/loopal-memory/src/event_log/mod.rs b/crates/loopal-memory/src/event_log/mod.rs new file mode 100644 index 00000000..fc633c1a --- /dev/null +++ b/crates/loopal-memory/src/event_log/mod.rs @@ -0,0 +1,9 @@ +mod gc; +mod recall_stats; +mod schema; +mod writer; + +pub use gc::{GcStats, run_gc}; +pub use recall_stats::{RecallStats, RecallStatsMap}; +pub use schema::{Event, EventKind, RecallSource}; +pub use writer::{EventLogWriter, fold_events}; diff --git a/crates/loopal-memory/src/event_log/recall_stats.rs b/crates/loopal-memory/src/event_log/recall_stats.rs new file mode 100644 index 00000000..71f9e92f --- /dev/null +++ b/crates/loopal-memory/src/event_log/recall_stats.rs @@ -0,0 +1,43 @@ +use std::collections::HashMap; + +use crate::event_log::schema::{Event, EventKind}; + +pub type RecallStatsMap = HashMap; + +#[derive(Debug, Clone, Default, PartialEq)] +pub struct RecallStats { + pub recall_count: u32, + pub last_recalled_at: i64, + pub importance: i8, + pub importance_ts: i64, +} + +impl RecallStats { + pub fn fold_event(&mut self, ev: &Event) { + match &ev.kind { + EventKind::RecallHit { .. } => { + self.recall_count = self.recall_count.saturating_add(1); + if ev.ts > self.last_recalled_at { + self.last_recalled_at = ev.ts; + } + } + EventKind::ImportanceTag { importance, .. } => { + if ev.ts >= self.importance_ts { + self.importance_ts = ev.ts; + self.importance = *importance; + } + } + _ => {} + } + } +} + +pub fn apply_events_to_map(map: &mut RecallStatsMap, events: &[Event]) { + for ev in events { + let Some(slug) = ev.node_slug() else { + continue; + }; + let entry = map.entry(slug.to_string()).or_default(); + entry.fold_event(ev); + } +} diff --git a/crates/loopal-memory/src/event_log/schema.rs b/crates/loopal-memory/src/event_log/schema.rs new file mode 100644 index 00000000..6b4dea28 --- /dev/null +++ b/crates/loopal-memory/src/event_log/schema.rs @@ -0,0 +1,69 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum RecallSource { + DirectHit, + Neighbor, + CoOccur, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +#[serde(tag = "type", rename_all = "snake_case")] +pub enum EventKind { + QueryEvent { + qid: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + query: Option, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + anchor: Vec, + result_count: u32, + latency_ms: u32, + #[serde(default, skip_serializing_if = "Option::is_none")] + caller: Option, + }, + RecallHit { + qid: String, + node: String, + rank: u32, + score: f32, + source: RecallSource, + }, + ImportanceTag { + node: String, + importance: i8, + #[serde(default, skip_serializing_if = "Vec::is_empty")] + tags: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + note: Option, + }, +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Event { + pub v: u8, + pub ts: i64, + pub sid: String, + #[serde(flatten)] + pub kind: EventKind, +} + +impl Event { + pub fn new(sid: impl Into, ts: i64, kind: EventKind) -> Self { + Self { + v: 1, + ts, + sid: sid.into(), + kind, + } + } + + pub fn node_slug(&self) -> Option<&str> { + match &self.kind { + EventKind::RecallHit { node, .. } | EventKind::ImportanceTag { node, .. } => { + Some(node.as_str()) + } + _ => None, + } + } +} diff --git a/crates/loopal-memory/src/event_log/writer.rs b/crates/loopal-memory/src/event_log/writer.rs new file mode 100644 index 00000000..795cbf0b --- /dev/null +++ b/crates/loopal-memory/src/event_log/writer.rs @@ -0,0 +1,149 @@ +use std::fs::{File, OpenOptions}; +use std::io::{BufRead, BufReader, Read, Write}; +use std::path::{Path, PathBuf}; +use std::sync::Mutex; + +use chrono::{NaiveDate, Utc}; +use flate2::read::GzDecoder; + +use crate::event_log::recall_stats::{RecallStatsMap, apply_events_to_map}; +use crate::event_log::schema::{Event, EventKind}; + +pub struct EventLogWriter { + dir: PathBuf, + today: Mutex>, + sid: String, +} + +impl EventLogWriter { + pub fn new(dir: impl Into, session_id: impl Into) -> Self { + Self { + dir: dir.into(), + today: Mutex::new(None), + sid: session_id.into(), + } + } + + pub fn append(&self, kind: EventKind) -> Event { + let now = Utc::now(); + let ts = now.timestamp_millis(); + let date = now.date_naive(); + let ev = Event::new(self.sid.clone(), ts, kind); + if let Err(e) = self.write_line(date, &ev) { + tracing::warn!(error = %e, "event_log append failed"); + } + ev + } + + fn write_line(&self, date: NaiveDate, ev: &Event) -> std::io::Result<()> { + let sid_short = short_sid(&self.sid); + let path = self + .dir + .join(format!("{}_{}.jsonl", date.format("%Y-%m-%d"), sid_short)); + + let mut guard = self + .today + .lock() + .map_err(|e| std::io::Error::other(format!("event_log mutex poisoned: {e}")))?; + let need_reopen = match guard.as_ref() { + Some((d, p, _)) => *d != date || p != path.to_string_lossy().as_ref(), + None => true, + }; + if need_reopen { + std::fs::create_dir_all(&self.dir)?; + let file = OpenOptions::new().create(true).append(true).open(&path)?; + *guard = Some((date, path.to_string_lossy().into_owned(), file)); + } + let (_, _, file) = guard.as_mut().expect("event_log file just opened"); + let mut line = serde_json::to_vec(ev).map_err(std::io::Error::other)?; + line.push(b'\n'); + file.write_all(&line)?; + Ok(()) + } +} + +fn short_sid(sid: &str) -> String { + sid.chars() + .filter(|c| c.is_ascii_alphanumeric()) + .take(8) + .collect() +} + +pub fn fold_events(dir: &Path) -> RecallStatsMap { + let mut map = RecallStatsMap::new(); + let Ok(entries) = std::fs::read_dir(dir) else { + return map; + }; + let mut files: Vec = entries + .filter_map(|e| e.ok()) + .map(|e| e.path()) + .filter(|p| is_event_file(p)) + .collect(); + files.sort(); + for path in files { + if let Err(e) = fold_one_file(&path, &mut map) { + tracing::warn!(error = %e, path = %path.display(), "event_log fold file failed"); + } + } + map +} + +fn is_event_file(path: &Path) -> bool { + let Some(name) = path.file_name().and_then(|s| s.to_str()) else { + return false; + }; + name.ends_with(".jsonl") || name.ends_with(".jsonl.gz") +} + +fn open_reader(path: &Path) -> std::io::Result> { + let file = File::open(path)?; + let is_gz = path + .file_name() + .and_then(|s| s.to_str()) + .map(|n| n.ends_with(".gz")) + .unwrap_or(false); + if is_gz { + Ok(Box::new(GzDecoder::new(file))) + } else { + Ok(Box::new(file)) + } +} + +fn fold_one_file(path: &Path, map: &mut RecallStatsMap) -> std::io::Result<()> { + let reader = BufReader::new(open_reader(path)?); + let mut batch: Vec = Vec::new(); + let mut io_err: Option = None; + for (idx, line) in reader.lines().enumerate() { + match line { + Ok(l) => { + if l.trim().is_empty() { + continue; + } + match serde_json::from_str::(&l) { + Ok(ev) => batch.push(ev), + Err(e) => tracing::warn!( + line = idx + 1, + path = %path.display(), + error = %e, + "event_log skip corrupt line" + ), + } + } + Err(e) => { + tracing::warn!( + line = idx + 1, + path = %path.display(), + error = %e, + "event_log fold io error mid-file; applying partial batch" + ); + io_err = Some(e); + break; + } + } + } + apply_events_to_map(map, &batch); + match io_err { + Some(e) => Err(e), + None => Ok(()), + } +} diff --git a/crates/loopal-memory/src/extract/errors.rs b/crates/loopal-memory/src/extract/errors.rs new file mode 100644 index 00000000..57a00274 --- /dev/null +++ b/crates/loopal-memory/src/extract/errors.rs @@ -0,0 +1,16 @@ +use thiserror::Error; + +#[derive(Debug, Clone, Error)] +pub enum ExtractionError { + #[error("frontmatter parse failed: {0}")] + FrontmatterParse(String), + + #[error("file contains git merge conflict marker — skipping")] + MergeConflictMarker, + + #[error("missing required field for fallback: {0}")] + MissingField(String), + + #[error("invalid wikilink at line {line}: {raw}")] + InvalidWikilink { line: u32, raw: String }, +} diff --git a/crates/loopal-memory/src/extract/frontmatter.rs b/crates/loopal-memory/src/extract/frontmatter.rs new file mode 100644 index 00000000..b0f9bfde --- /dev/null +++ b/crates/loopal-memory/src/extract/frontmatter.rs @@ -0,0 +1,106 @@ +use serde::Deserialize; + +use crate::extract::errors::ExtractionError; + +#[derive(Debug, Default, Clone, Deserialize)] +pub struct Frontmatter { + pub name: Option, + pub description: Option, + #[serde(rename = "type")] + pub kind: Option, + pub created_at: Option, + pub updated_at: Option, + pub ttl_days: Option, + #[serde(default)] + pub related: Vec, +} + +pub struct ParsedFile { + pub frontmatter: Frontmatter, + pub body: String, + pub errors: Vec, +} + +pub fn parse(text: &str) -> ParsedFile { + let mut errors = Vec::new(); + + if has_merge_conflict_marker(text) { + errors.push(ExtractionError::MergeConflictMarker); + } + + let (raw_yaml, body) = split_frontmatter(text); + let body = body.to_string(); + + let frontmatter = match raw_yaml { + Some(yaml) => match serde_yaml::from_str::(yaml) { + Ok(fm) => fm, + Err(e) => { + errors.push(ExtractionError::FrontmatterParse(e.to_string())); + Frontmatter::default() + } + }, + None => Frontmatter::default(), + }; + + ParsedFile { + frontmatter, + body, + errors, + } +} + +fn split_frontmatter(text: &str) -> (Option<&str>, &str) { + let trimmed = text.trim_start_matches('\u{feff}'); + if !trimmed.starts_with("---") { + return (None, text); + } + let after_first = match trimmed.strip_prefix("---") { + Some(s) => s, + None => return (None, text), + }; + let after_first = strip_line_terminator(after_first); + + if let Some(end_idx) = find_yaml_terminator(after_first) { + let yaml = &after_first[..end_idx]; + let rest_start = end_idx + 3; + let rest = &after_first[rest_start..]; + let body = strip_line_terminator(rest); + (Some(yaml), body) + } else { + (None, text) + } +} + +fn strip_line_terminator(s: &str) -> &str { + s.strip_prefix("\r\n") + .or_else(|| s.strip_prefix('\n')) + .unwrap_or(s) +} + +fn find_yaml_terminator(s: &str) -> Option { + let mut start = 0; + for line in s.split_inclusive('\n') { + let stripped = line.trim_end(); + if stripped == "---" { + return Some(start); + } + start += line.len(); + } + None +} + +fn has_merge_conflict_marker(text: &str) -> bool { + // reason: `=======` 也是 markdown setext H1 underline;只有当 <<<<<<< 和 >>>>>>> + // 两端 marker 都存在才认定为真正的 git merge conflict。 + let mut has_start = false; + let mut has_end = false; + for line in text.lines() { + if line.starts_with("<<<<<<<") { + has_start = true; + } + if line.starts_with(">>>>>>>") { + has_end = true; + } + } + has_start && has_end +} diff --git a/crates/loopal-memory/src/extract/mod.rs b/crates/loopal-memory/src/extract/mod.rs new file mode 100644 index 00000000..2c12578d --- /dev/null +++ b/crates/loopal-memory/src/extract/mod.rs @@ -0,0 +1,162 @@ +use chrono::Utc; +use sha2::{Digest, Sha256}; + +pub mod errors; +pub mod frontmatter; +pub mod related; +pub mod wikilink; + +use crate::extract::errors::ExtractionError; +use crate::extract::frontmatter::{ParsedFile, parse}; +use crate::extract::related::normalize_related; +use crate::extract::wikilink::scan; +use crate::store::types::{EdgeKind, MemoryEdge, MemoryKind, MemoryNode, Provenance}; + +const BODY_PREVIEW_BYTES: usize = 300; + +pub struct ExtractionResult { + pub nodes: Vec, + pub edges: Vec, + pub unresolved: Vec, + pub errors: Vec, +} + +pub struct UnresolvedLink { + pub from_id: String, + pub target_name: String, + pub line: u32, +} + +pub fn extract_file(file_path: &str, content: &str) -> ExtractionResult { + let now = Utc::now().timestamp_millis(); + let parsed = parse(content); + let slug = slug_from_path(file_path); + let kind = pick_kind(&parsed.frontmatter.kind, &slug); + let name = parsed + .frontmatter + .name + .clone() + .unwrap_or_else(|| slug.clone()); + let content_hash = sha256_hex(content); + let body_preview = preview(&parsed.body); + let created_at = parse_iso_date(parsed.frontmatter.created_at.as_deref()).unwrap_or(now); + let updated_at = parse_iso_date(parsed.frontmatter.updated_at.as_deref()).unwrap_or(now); + + let node = MemoryNode { + id: slug.clone(), + kind, + name, + description: parsed.frontmatter.description.clone(), + file_path: file_path.to_string(), + body_preview, + created_at, + updated_at, + ttl_days: parsed.frontmatter.ttl_days, + content_hash, + indexed_at: now, + }; + + let (edges, unresolved) = build_edges(&slug, &parsed, now); + + ExtractionResult { + nodes: vec![node], + edges, + unresolved, + errors: parsed.errors, + } +} + +fn parse_iso_date(s: Option<&str>) -> Option { + let s = s?.trim(); + if let Ok(dt) = chrono::DateTime::parse_from_rfc3339(s) { + return Some(dt.timestamp_millis()); + } + let date = chrono::NaiveDate::parse_from_str(s, "%Y-%m-%d").ok()?; + let dt = date.and_hms_opt(0, 0, 0)?.and_utc(); + Some(dt.timestamp_millis()) +} + +fn build_edges( + slug: &str, + parsed: &ParsedFile, + now: i64, +) -> (Vec, Vec) { + let mut edges = Vec::new(); + let mut unresolved = Vec::new(); + + for target in normalize_related(&parsed.frontmatter.related) { + edges.push(MemoryEdge { + id: None, + src_id: slug.to_string(), + dst_id: target, + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: now, + }); + } + + for link in scan(&parsed.body) { + edges.push(MemoryEdge { + id: None, + src_id: slug.to_string(), + dst_id: link.slug.clone(), + kind: EdgeKind::References, + line: Some(link.line), + metadata: None, + provenance: Provenance::InlineLink, + confidence: 1.0, + created_at: now, + }); + unresolved.push(UnresolvedLink { + from_id: slug.to_string(), + target_name: link.slug, + line: link.line, + }); + } + + (edges, unresolved) +} + +pub fn slug_from_path(file_path: &str) -> String { + let trimmed = file_path.strip_prefix("./").unwrap_or(file_path); + let without_ext = trimmed.strip_suffix(".md").unwrap_or(trimmed); + if without_ext.is_empty() { + return file_path.to_string(); + } + without_ext.replace([std::path::MAIN_SEPARATOR, '/'], "__") +} + +fn pick_kind(declared: &Option, slug: &str) -> MemoryKind { + if slug.eq_ignore_ascii_case("MEMORY") { + return MemoryKind::Index; + } + match declared.as_deref() { + Some("user") => MemoryKind::User, + Some("feedback") => MemoryKind::Feedback, + Some("project") => MemoryKind::Project, + Some("reference") => MemoryKind::Reference, + Some("index") => MemoryKind::Index, + _ => MemoryKind::Reference, + } +} + +fn preview(body: &str) -> String { + let trimmed = body.trim_start(); + if trimmed.len() <= BODY_PREVIEW_BYTES { + return trimmed.to_string(); + } + let mut end = BODY_PREVIEW_BYTES; + while end > 0 && !trimmed.is_char_boundary(end) { + end -= 1; + } + trimmed[..end].to_string() +} + +fn sha256_hex(s: &str) -> String { + let mut hasher = Sha256::new(); + hasher.update(s.as_bytes()); + format!("{:x}", hasher.finalize()) +} diff --git a/crates/loopal-memory/src/extract/related.rs b/crates/loopal-memory/src/extract/related.rs new file mode 100644 index 00000000..51ca882c --- /dev/null +++ b/crates/loopal-memory/src/extract/related.rs @@ -0,0 +1,14 @@ +use crate::extract::wikilink::normalize_to_slug; + +pub fn normalize_related(items: &[String]) -> Vec { + let mut out = Vec::with_capacity(items.len()); + let mut seen = std::collections::HashSet::new(); + for item in items { + if let Some(slug) = normalize_to_slug(item) + && seen.insert(slug.clone()) + { + out.push(slug); + } + } + out +} diff --git a/crates/loopal-memory/src/extract/wikilink.rs b/crates/loopal-memory/src/extract/wikilink.rs new file mode 100644 index 00000000..0d8b846a --- /dev/null +++ b/crates/loopal-memory/src/extract/wikilink.rs @@ -0,0 +1,50 @@ +use std::sync::LazyLock; + +use regex::Regex; + +static WIKILINK_RE: LazyLock = + LazyLock::new(|| Regex::new(r"\[\[([a-z][a-z0-9_-]*)(?:\|[^\]]+)?\]\]").unwrap()); + +pub struct WikiLink { + pub slug: String, + pub line: u32, +} + +pub fn scan(body: &str) -> Vec { + let mut out = Vec::new(); + for (line_idx, line_text) in body.lines().enumerate() { + for cap in WIKILINK_RE.captures_iter(line_text) { + if let Some(slug) = cap.get(1) { + out.push(WikiLink { + slug: slug.as_str().to_string(), + line: (line_idx + 1) as u32, + }); + } + } + } + out +} + +pub fn normalize_to_slug(reference: &str) -> Option { + let s = reference.trim(); + if s.is_empty() { + return None; + } + let s = s.trim_start_matches("[[").trim_end_matches("]]"); + let s = s.split('|').next().unwrap_or(s); + let s = s.trim_end_matches(".md"); + let s = s.trim(); + if s.is_empty() { + return None; + } + if !s.starts_with(|c: char| c.is_ascii_lowercase()) { + return None; + } + if !s + .chars() + .all(|c| c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '-') + { + return None; + } + Some(s.to_string()) +} diff --git a/crates/loopal-memory/src/graph/co_occur.rs b/crates/loopal-memory/src/graph/co_occur.rs new file mode 100644 index 00000000..d5d03224 --- /dev/null +++ b/crates/loopal-memory/src/graph/co_occur.rs @@ -0,0 +1,77 @@ +use std::collections::HashMap; + +use loopal_error::MemoryGraphError; + +use crate::graph::recall::{CoOccurringNode, RecallParams}; +use crate::graph::score::co_occurrence_bonus; +use crate::store::MemoryGraph; +use crate::store::types::{EdgeKind, MemoryKind, MemoryNode, Provenance}; + +const DEFAULT_LIMIT: usize = 5; + +pub(super) async fn collect( + graph: &MemoryGraph, + anchor_ids: &[String], + params: &RecallParams, +) -> Result, MemoryGraphError> { + if !params.include_synthesized { + return Ok(Vec::new()); + } + let anchor_set: std::collections::HashSet<&String> = anchor_ids.iter().collect(); + let mut by_target: HashMap = HashMap::new(); + + for anchor in anchor_ids { + let outgoing = graph.get_outgoing_edges(anchor).await?; + let incoming = graph.get_incoming_edges(anchor).await?; + for e in outgoing.into_iter().chain(incoming) { + if e.provenance != Provenance::Synthesized + || !matches!(e.kind, EdgeKind::CoOccursSlug | EdgeKind::CoOccursToken) + || e.confidence < params.min_confidence + { + continue; + } + let other = if &e.src_id == anchor { + e.dst_id.clone() + } else { + e.src_id.clone() + }; + if anchor_set.contains(&other) { + continue; + } + let weight = co_occurrence_bonus(&e); + by_target + .entry(other) + .and_modify(|(w, _)| { + if weight > *w { + *w = weight; + } + }) + .or_insert((weight, anchor.clone())); + } + } + + let ids: Vec = by_target.keys().cloned().collect(); + let nodes = graph.get_nodes(&ids).await?; + let mut node_map: HashMap = nodes + .into_iter() + .filter(|n| n.kind != MemoryKind::Index) + .map(|n| (n.id.clone(), n)) + .collect(); + let mut out = Vec::with_capacity(by_target.len()); + for (target, (weight, via)) in by_target { + if let Some(node) = node_map.remove(&target) { + out.push(CoOccurringNode { + node, + weight, + via_anchor: via, + }); + } + } + out.sort_by(|a, b| { + b.weight + .partial_cmp(&a.weight) + .unwrap_or(std::cmp::Ordering::Equal) + }); + out.truncate(DEFAULT_LIMIT); + Ok(out) +} diff --git a/crates/loopal-memory/src/graph/format.rs b/crates/loopal-memory/src/graph/format.rs new file mode 100644 index 00000000..726d101f --- /dev/null +++ b/crates/loopal-memory/src/graph/format.rs @@ -0,0 +1,143 @@ +use std::collections::HashMap; +use std::fmt::Write; + +use crate::graph::recall::RecallResult; +use crate::store::types::{MemoryEdge, MemoryKind, MemoryNode}; + +pub fn format_recall(result: &RecallResult) -> String { + let mut out = String::new(); + + write_direct_hits(&mut out, &result.direct_hits); + write_neighbors(&mut out, result); + write_co_occurring(&mut out, result); + write_trail(&mut out, &result.trail, result); + + if out.trim().is_empty() { + return "No matching memories found. Consider widening the query or adjusting min_confidence.\n".into(); + } + + out.push_str("\n[Use memory_recall again with different query or anchor_names. Avoid Read on individual .loopal/memory/*.md files unless you must edit one.]\n"); + out +} + +fn write_direct_hits(out: &mut String, hits: &[crate::graph::recall::ScoredNode]) { + if hits.is_empty() { + return; + } + out.push_str("## Direct hits\n\n"); + for hit in hits { + write_node_header(out, &hit.node); + if !hit.node.body_preview.trim().is_empty() { + out.push_str(hit.node.body_preview.trim()); + out.push_str("\n\n"); + } + } +} + +fn write_neighbors(out: &mut String, result: &RecallResult) { + if result.neighbors.is_empty() { + return; + } + out.push_str("## Related (1-2 hop, bidirectional)\n\n"); + for n in &result.neighbors { + let direction = describe_direction(&n.node.id, &result.trail); + writeln!( + out, + "- {} ({}) — distance {} — {}", + n.node.id, + kind_label(n.node.kind), + n.distance, + direction + ) + .ok(); + } + out.push('\n'); +} + +fn write_co_occurring(out: &mut String, result: &RecallResult) { + if result.co_occurring.is_empty() { + return; + } + out.push_str("## Co-occurring (synthesized)\n\n"); + for c in &result.co_occurring { + writeln!( + out, + "- {} ({:.2}) — via {}", + c.node.id, c.weight, c.via_anchor + ) + .ok(); + } + out.push('\n'); +} + +fn write_trail(out: &mut String, edges: &[MemoryEdge], result: &RecallResult) { + if edges.is_empty() { + return; + } + let anchor_ids: std::collections::HashSet<&str> = result + .direct_hits + .iter() + .map(|d| d.node.id.as_str()) + .collect(); + out.push_str("## Trail\n\n"); + for e in edges { + let inbound = + anchor_ids.contains(e.dst_id.as_str()) && !anchor_ids.contains(e.src_id.as_str()); + let arrow = if inbound { "←" } else { "→" }; + let prov = if e.provenance == crate::store::types::Provenance::Synthesized { + "synth" + } else { + "explicit" + }; + writeln!( + out, + "{} {} [{}, {}, conf {:.2}] {} {}", + e.src_id, + arrow, + e.kind.as_str(), + prov, + e.confidence, + arrow, + e.dst_id + ) + .ok(); + } +} + +fn write_node_header(out: &mut String, n: &MemoryNode) { + writeln!(out, "### {} ({})", n.id, kind_label(n.kind)).ok(); + if let Some(d) = &n.description { + writeln!(out, "> {}", d).ok(); + } + writeln!(out, "- file: {}", n.file_path).ok(); + writeln!(out, "- updated: {}", format_date(n.updated_at)).ok(); + if let Some(ttl) = n.ttl_days { + writeln!(out, "- ttl: {}d", ttl).ok(); + } + out.push('\n'); +} + +fn kind_label(k: MemoryKind) -> &'static str { + k.as_str() +} + +fn describe_direction(id: &str, edges: &[MemoryEdge]) -> String { + let mut counts: HashMap<&str, u32> = HashMap::new(); + for e in edges { + if e.dst_id == id || e.src_id == id { + *counts.entry(e.kind.as_str()).or_insert(0) += 1; + } + } + let mut parts: Vec = counts + .into_iter() + .map(|(k, v)| format!("{}×{}", k, v)) + .collect(); + parts.sort(); + parts.join(", ") +} + +fn format_date(ms: i64) -> String { + chrono::DateTime::from_timestamp_millis(ms) + .map(|dt| dt.format("%Y-%m-%d").to_string()) + .unwrap_or_else(|| "unknown".into()) +} diff --git a/crates/loopal-memory/src/graph/mod.rs b/crates/loopal-memory/src/graph/mod.rs new file mode 100644 index 00000000..dfdbfd31 --- /dev/null +++ b/crates/loopal-memory/src/graph/mod.rs @@ -0,0 +1,7 @@ +mod co_occur; +pub mod format; +pub mod recall; +pub mod score; + +pub use format::format_recall; +pub use recall::{CoOccurringNode, RecallParams, RecallResult, ScoredNode, recall}; diff --git a/crates/loopal-memory/src/graph/recall/anchors.rs b/crates/loopal-memory/src/graph/recall/anchors.rs new file mode 100644 index 00000000..89e45627 --- /dev/null +++ b/crates/loopal-memory/src/graph/recall/anchors.rs @@ -0,0 +1,145 @@ +use loopal_error::MemoryGraphError; + +use super::{RecallParams, RecallResult, ScoredNode}; +use crate::graph::score::{ + fts_score, importance_bonus, recall_edge_weight, recall_recency_bonus, + recall_reinforcement_bonus, recall_ttl_penalty, recall_type_weight, +}; +use crate::store::MemoryGraph; +use crate::store::types::{MemoryEdge, MemoryKind}; + +const DEFAULT_DIRECT_HITS: usize = 8; + +pub(super) fn empty_result() -> RecallResult { + RecallResult { + direct_hits: Vec::new(), + neighbors: Vec::new(), + co_occurring: Vec::new(), + trail: Vec::new(), + } +} + +pub(super) fn cap_anchors( + mut explicit: Vec, + mut fts: Vec, + max_results: usize, +) -> Vec { + let cap = max_results.max(1); + explicit.sort_by(|a, b| { + b.score + .partial_cmp(&a.score) + .unwrap_or(std::cmp::Ordering::Equal) + }); + explicit.truncate(cap); + let fts_budget = cap.saturating_sub(explicit.len()); + fts.sort_by(|a, b| { + b.score + .partial_cmp(&a.score) + .unwrap_or(std::cmp::Ordering::Equal) + }); + fts.truncate(fts_budget); + explicit.extend(fts); + explicit +} + +pub(super) fn cap_neighbors( + neighbors: &mut Vec, + anchor_count: usize, + max_results: usize, +) { + const MIN_NEIGHBOR_BUDGET: usize = 5; + neighbors.sort_by(|a, b| { + b.score + .partial_cmp(&a.score) + .unwrap_or(std::cmp::Ordering::Equal) + }); + let remaining = max_results.saturating_sub(anchor_count); + let neighbor_budget = remaining.min(neighbors.len()); + let with_floor = if anchor_count >= max_results { + 0 + } else { + neighbor_budget.max(MIN_NEIGHBOR_BUDGET.min(remaining)) + }; + neighbors.truncate(with_floor); +} + +pub(super) async fn resolve_anchors( + graph: &MemoryGraph, + params: &RecallParams, +) -> Result<(Vec, Vec), MemoryGraphError> { + let mut explicit: Vec = Vec::new(); + let mut fts: Vec = Vec::new(); + + if !params.anchor_names.is_empty() { + let nodes = graph.get_nodes(¶ms.anchor_names).await?; + explicit.extend( + nodes + .into_iter() + .filter(|n| n.kind != MemoryKind::Index) + .map(|n| { + let stats = graph.recall_stats_snapshot(&n.id); + let score = recall_type_weight(n.kind) + + recall_recency_bonus(n.updated_at, stats.as_ref()) + + recall_reinforcement_bonus(stats.as_ref()) + + importance_bonus(stats.as_ref()) + - recall_ttl_penalty(&n); + ScoredNode { + node: n, + score, + distance: 0, + } + }), + ); + } + + if let Some(q) = ¶ms.query { + let seen: std::collections::HashSet = + explicit.iter().map(|s| s.node.id.clone()).collect(); + let hits = graph.search(q, None, DEFAULT_DIRECT_HITS).await?; + fts.extend( + hits.into_iter() + .filter(|h| !seen.contains(&h.node.id)) + .filter(|h| h.node.kind != MemoryKind::Index) + .map(|h| { + let stats = graph.recall_stats_snapshot(&h.node.id); + let score = fts_score(h.rank) + + recall_type_weight(h.node.kind) + + recall_recency_bonus(h.node.updated_at, stats.as_ref()) + + recall_reinforcement_bonus(stats.as_ref()) + + importance_bonus(stats.as_ref()) + - recall_ttl_penalty(&h.node); + ScoredNode { + node: h.node, + score, + distance: 0, + } + }), + ); + } + + Ok((explicit, fts)) +} + +pub(super) fn max_edge_weight_to_anchors( + edges: &[MemoryEdge], + anchor_set: &std::collections::HashSet, +) -> std::collections::HashMap { + let mut max_weight: std::collections::HashMap = std::collections::HashMap::new(); + for e in edges { + let other = if anchor_set.contains(&e.src_id) && !anchor_set.contains(&e.dst_id) { + Some(e.dst_id.clone()) + } else if anchor_set.contains(&e.dst_id) && !anchor_set.contains(&e.src_id) { + Some(e.src_id.clone()) + } else { + None + }; + if let Some(other) = other { + let w = recall_edge_weight(e.kind); + let entry = max_weight.entry(other).or_insert(0.0); + if w > *entry { + *entry = w; + } + } + } + max_weight +} diff --git a/crates/loopal-memory/src/graph/recall/emit.rs b/crates/loopal-memory/src/graph/recall/emit.rs new file mode 100644 index 00000000..172ccced --- /dev/null +++ b/crates/loopal-memory/src/graph/recall/emit.rs @@ -0,0 +1,47 @@ +use super::{RecallParams, RecallResult}; +use crate::event_log::{EventKind, RecallSource}; +use crate::store::MemoryGraph; + +pub(super) fn emit_events(graph: &MemoryGraph, params: &RecallParams, result: &RecallResult) { + let qid = format!( + "q-{}", + chrono::Utc::now().timestamp_nanos_opt().unwrap_or(0) + ); + let result_count = + result.direct_hits.len() + result.neighbors.len() + result.co_occurring.len(); + graph.record_event(EventKind::QueryEvent { + qid: qid.clone(), + query: params.query.clone(), + anchor: params.anchor_names.clone(), + result_count: result_count as u32, + latency_ms: 0, + caller: Some("recall".into()), + }); + for (rank, hit) in result.direct_hits.iter().enumerate() { + graph.record_event(EventKind::RecallHit { + qid: qid.clone(), + node: hit.node.id.clone(), + rank: rank as u32, + score: hit.score, + source: RecallSource::DirectHit, + }); + } + for (rank, n) in result.neighbors.iter().enumerate() { + graph.record_event(EventKind::RecallHit { + qid: qid.clone(), + node: n.node.id.clone(), + rank: (result.direct_hits.len() + rank) as u32, + score: n.score, + source: RecallSource::Neighbor, + }); + } + for (rank, c) in result.co_occurring.iter().enumerate() { + graph.record_event(EventKind::RecallHit { + qid: qid.clone(), + node: c.node.id.clone(), + rank: (result.direct_hits.len() + result.neighbors.len() + rank) as u32, + score: c.weight, + source: RecallSource::CoOccur, + }); + } +} diff --git a/crates/loopal-memory/src/graph/recall/mod.rs b/crates/loopal-memory/src/graph/recall/mod.rs new file mode 100644 index 00000000..8fe00f3b --- /dev/null +++ b/crates/loopal-memory/src/graph/recall/mod.rs @@ -0,0 +1,143 @@ +use loopal_error::MemoryGraphError; + +use crate::graph::co_occur; +use crate::graph::score::{ + importance_bonus, neighbor_decay, recall_recency_bonus, recall_reinforcement_bonus, + recall_ttl_penalty, +}; +use crate::store::types::{MemoryEdge, MemoryKind, MemoryNode, Provenance}; +use crate::store::{BfsConfig, MemoryGraph}; + +mod anchors; +mod emit; + +use anchors::{ + cap_anchors, cap_neighbors, empty_result, max_edge_weight_to_anchors, resolve_anchors, +}; +use emit::emit_events; + +const DEFAULT_MAX_RESULTS: usize = 12; +const DEFAULT_DEPTH: u32 = 2; +const DEFAULT_MIN_CONFIDENCE: f32 = 0.3; +const ANCHOR_EDGE_BONUS_SCALE: f32 = 0.4; + +pub struct RecallParams { + pub query: Option, + pub anchor_names: Vec, + pub max_results: usize, + pub depth: u32, + pub include_synthesized: bool, + pub min_confidence: f32, +} + +impl Default for RecallParams { + fn default() -> Self { + Self { + query: None, + anchor_names: Vec::new(), + max_results: DEFAULT_MAX_RESULTS, + depth: DEFAULT_DEPTH, + include_synthesized: true, + min_confidence: DEFAULT_MIN_CONFIDENCE, + } + } +} + +pub struct ScoredNode { + pub node: MemoryNode, + pub score: f32, + pub distance: u32, +} + +pub struct CoOccurringNode { + pub node: MemoryNode, + pub weight: f32, + pub via_anchor: String, +} + +pub struct RecallResult { + pub direct_hits: Vec, + pub neighbors: Vec, + pub co_occurring: Vec, + pub trail: Vec, +} + +pub async fn recall( + graph: &MemoryGraph, + params: &RecallParams, +) -> Result { + let (explicit, fts) = resolve_anchors(graph, params).await?; + if explicit.is_empty() && fts.is_empty() { + return Ok(empty_result()); + } + let anchors = cap_anchors(explicit, fts, params.max_results); + + let anchor_ids: Vec = anchors.iter().map(|s| s.node.id.clone()).collect(); + let exclude_provenance = if params.include_synthesized { + Vec::new() + } else { + vec![Provenance::Synthesized] + }; + // anchor-mode 显式指定种子时,放宽 BFS 阈值到 0.1,让大簇 (N≥5) slug_cluster + // 自然衰减边 (1/(N-1)) 仍可被遍历到,保证 q06 类查询 R@10=1.0。 + // query-mode 沿用 params.min_confidence (默认 0.3),让大簇噪声被剪掉。 + let bfs_min_confidence = if params.anchor_names.is_empty() { + params.min_confidence + } else { + params.min_confidence.min(0.1) + }; + let sub = graph + .bfs( + &anchor_ids, + BfsConfig { + max_depth: params.depth, + edge_kinds: None, + exclude_provenance, + min_confidence: bfs_min_confidence, + limit_nodes: params.max_results.max(20) * 4, + }, + ) + .await?; + + let anchor_set: std::collections::HashSet = anchor_ids.iter().cloned().collect(); + // 仅基于用户显式 anchor 计算 edge bonus:anchor 显式 wikilink/related + // 邻居是强关系,应优先于 FTS hit 的邻居(避免 FTS 把不相干的 anchor 引入再拖来一堆噪声)。 + let explicit_anchor_set: std::collections::HashSet = + params.anchor_names.iter().cloned().collect(); + let edge_weight_to_anchor = max_edge_weight_to_anchors(&sub.edges, &explicit_anchor_set); + let mut neighbors: Vec = sub + .nodes + .iter() + .filter(|n| !anchor_set.contains(&n.id)) + .filter(|n| n.kind != MemoryKind::Index) + .map(|n| { + let distance = *sub.depth_by_id.get(&n.id).unwrap_or(&u32::MAX); + let anchor_edge_bonus = + edge_weight_to_anchor.get(&n.id).copied().unwrap_or(0.0) * ANCHOR_EDGE_BONUS_SCALE; + let stats = graph.recall_stats_snapshot(&n.id); + let score = neighbor_decay(distance) + + anchor_edge_bonus + + recall_recency_bonus(n.updated_at, stats.as_ref()) + + recall_reinforcement_bonus(stats.as_ref()) + + importance_bonus(stats.as_ref()) + - recall_ttl_penalty(n); + ScoredNode { + node: n.clone(), + score, + distance, + } + }) + .collect(); + cap_neighbors(&mut neighbors, anchors.len(), params.max_results); + + let co_occurring = co_occur::collect(graph, &anchor_ids, params).await?; + + let result = RecallResult { + direct_hits: anchors, + neighbors, + co_occurring, + trail: sub.edges, + }; + emit_events(graph, params, &result); + Ok(result) +} diff --git a/crates/loopal-memory/src/graph/score.rs b/crates/loopal-memory/src/graph/score.rs new file mode 100644 index 00000000..e7c73fe4 --- /dev/null +++ b/crates/loopal-memory/src/graph/score.rs @@ -0,0 +1,79 @@ +use chrono::Utc; + +use crate::event_log::RecallStats; +use crate::policy::{ + IMPORTANCE_SCALE, RECALL_RECENCY_BONUS_SCALE, RECALL_RECENCY_DECAY_DAYS, + RECALL_REINFORCEMENT_SCALE, RECALL_TTL_EXPIRED_PENALTY, RECALL_TTL_NEAR_PENALTY, + TTL_NEAR_THRESHOLD_DAYS, recall_kind_weight, +}; +use crate::store::types::{EdgeKind, MemoryEdge, MemoryKind, MemoryNode}; + +pub fn fts_score(rank: f32) -> f32 { + -rank +} + +pub fn neighbor_decay(distance: u32) -> f32 { + if distance == 0 { + return 1.0; + } + 0.5_f32.powi(distance as i32) +} + +pub fn recall_edge_weight(kind: EdgeKind) -> f32 { + match kind { + EdgeKind::References => 1.0, + EdgeKind::ContainedIn => 0.9, + EdgeKind::DerivedFrom => 0.8, + EdgeKind::SupersededBy => 0.7, + EdgeKind::CoOccursSlug => 0.55, + EdgeKind::CoOccursToken => 0.45, + EdgeKind::Contradicts => 0.6, + } +} + +pub fn recall_type_weight(kind: MemoryKind) -> f32 { + recall_kind_weight(kind) +} + +pub fn recall_recency_bonus(updated_at_ms: i64, stats: Option<&RecallStats>) -> f32 { + let anchor_ts = stats + .map(|s| s.last_recalled_at.max(updated_at_ms)) + .unwrap_or(updated_at_ms); + let now = Utc::now().timestamp_millis(); + let days = ((now - anchor_ts).max(0) as f32) / (1000.0 * 60.0 * 60.0 * 24.0); + (-(days / RECALL_RECENCY_DECAY_DAYS)).exp() * RECALL_RECENCY_BONUS_SCALE +} + +pub fn recall_ttl_penalty(node: &MemoryNode) -> f32 { + let Some(ttl) = node.ttl_days else { + return 0.0; + }; + let now = Utc::now().timestamp_millis(); + let days = ((now - node.created_at).max(0) as f32) / (1000.0 * 60.0 * 60.0 * 24.0); + let remaining = (ttl as f32) - days; + if remaining <= 0.0 { + return RECALL_TTL_EXPIRED_PENALTY; + } + if remaining < TTL_NEAR_THRESHOLD_DAYS { + return RECALL_TTL_NEAR_PENALTY; + } + 0.0 +} + +pub fn co_occurrence_bonus(edge: &MemoryEdge) -> f32 { + edge.confidence * 0.3 +} + +pub fn recall_reinforcement_bonus(stats: Option<&RecallStats>) -> f32 { + let Some(s) = stats else { + return 0.0; + }; + (1.0_f32 + s.recall_count as f32).ln() * RECALL_REINFORCEMENT_SCALE +} + +pub fn importance_bonus(stats: Option<&RecallStats>) -> f32 { + let Some(s) = stats else { + return 0.0; + }; + s.importance as f32 * IMPORTANCE_SCALE +} diff --git a/crates/loopal-memory/src/init/gitignore.rs b/crates/loopal-memory/src/init/gitignore.rs new file mode 100644 index 00000000..f2d62cd7 --- /dev/null +++ b/crates/loopal-memory/src/init/gitignore.rs @@ -0,0 +1,42 @@ +use std::collections::HashSet; +use std::io::Write; +use std::path::Path; + +const HEADER: &str = "# Loopal memory runtime (auto-managed)"; +const EVENTS_RULE: &str = ".loopal/memory-events/archive/"; +const EVENTS_GZ_RULE: &str = ".loopal/memory-events/*.jsonl.gz"; + +pub fn ensure_gitignore(project_root: &Path) -> std::io::Result<()> { + let gitignore_path = project_root.join(".gitignore"); + let existing_bytes = match std::fs::read(&gitignore_path) { + Ok(b) => b, + Err(e) if e.kind() == std::io::ErrorKind::NotFound => Vec::new(), + Err(e) => return Err(e), + }; + let existing = String::from_utf8_lossy(&existing_bytes); + let existing_lines: HashSet<&str> = existing.lines().map(str::trim).collect(); + let mut to_append: Vec<&str> = Vec::new(); + for rule in [EVENTS_RULE, EVENTS_GZ_RULE] { + if !existing_lines.contains(rule) { + to_append.push(rule); + } + } + if to_append.is_empty() { + return Ok(()); + } + let mut file = std::fs::OpenOptions::new() + .create(true) + .append(true) + .open(&gitignore_path)?; + let needs_leading_newline = !existing_bytes.is_empty() && !existing_bytes.ends_with(b"\n"); + if needs_leading_newline { + file.write_all(b"\n")?; + } + if !existing_lines.contains(HEADER) { + writeln!(file, "{}", HEADER)?; + } + for rule in to_append { + writeln!(file, "{}", rule)?; + } + Ok(()) +} diff --git a/crates/loopal-memory/src/init/mod.rs b/crates/loopal-memory/src/init/mod.rs new file mode 100644 index 00000000..f88d84c0 --- /dev/null +++ b/crates/loopal-memory/src/init/mod.rs @@ -0,0 +1,3 @@ +mod gitignore; + +pub use gitignore::ensure_gitignore; diff --git a/crates/loopal-memory/src/lib.rs b/crates/loopal-memory/src/lib.rs index c339b953..88739c6c 100644 --- a/crates/loopal-memory/src/lib.rs +++ b/crates/loopal-memory/src/lib.rs @@ -1,10 +1,42 @@ +pub mod agent_output; pub mod consolidation; pub mod date; -pub mod extraction; +pub mod event_log; +pub mod extract; +pub mod graph; +pub mod init; mod observer; +pub mod policy; +pub mod render; +pub mod store; +pub mod sync; +pub mod synthesize; mod tool; +pub mod tools; +pub const PROJECT_MEMORY_DIR: &str = ".loopal/memory"; +pub const PROJECT_MEMORY_EVENTS_DIR: &str = ".loopal/memory-events"; + +pub use event_log::{ + Event, EventKind, EventLogWriter, GcStats, RecallSource, RecallStats, RecallStatsMap, + fold_events, run_gc, +}; +pub use extract::{ExtractionResult, UnresolvedLink, extract_file, slug_from_path}; +pub use graph::{RecallParams, RecallResult, format_recall, recall}; +pub use init::ensure_gitignore; pub use observer::{ MEMORY_AGENT_PROMPT, MEMORY_CONSOLIDATION_PROMPT, MemoryObserver, MemoryProcessor, }; +pub use render::render_memory_md; +pub use store::queries_files::FileCacheEntry; +pub use store::{ + BfsConfig, EdgeKind, FtsHit, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance, + Subgraph, +}; +pub use sync::{ + InitStats, MEMORY_INDEX_FILE_NAME, MemorySubsystem, MemorySubsystemBootstrapError, + WatcherHandle, memory_index_path, scan_directory, watch, +}; +pub use synthesize::{SynthesisStats, run_all as synthesize_all}; pub use tool::MemoryTool; +pub use tools::{MemoryImportanceTool, MemoryRecallTool}; diff --git a/crates/loopal-memory/src/policy.rs b/crates/loopal-memory/src/policy.rs new file mode 100644 index 00000000..b9a791e6 --- /dev/null +++ b/crates/loopal-memory/src/policy.rs @@ -0,0 +1,34 @@ +use crate::store::types::MemoryKind; + +pub const RECALL_RECENCY_DECAY_DAYS: f32 = 90.0; +pub const RECALL_RECENCY_BONUS_SCALE: f32 = 0.2; +pub const RECALL_TTL_EXPIRED_PENALTY: f32 = 0.5; +pub const RECALL_TTL_NEAR_PENALTY: f32 = 0.2; + +pub const RANKING_RECENCY_DECAY_DAYS: f32 = 60.0; +pub const RANKING_RECENCY_SCALE: f32 = 0.5; +pub const RANKING_TTL_EXPIRED_PENALTY: f32 = 1.0; +pub const RANKING_TTL_NEAR_PENALTY: f32 = 0.3; +pub const RANKING_ORPHAN_PENALTY: f32 = 0.3; + +pub const TTL_NEAR_THRESHOLD_DAYS: f32 = 14.0; + +pub const RECALL_REINFORCEMENT_SCALE: f32 = 0.15; +pub const IMPORTANCE_SCALE: f32 = 0.20; + +pub fn recall_kind_weight(kind: MemoryKind) -> f32 { + match kind { + MemoryKind::Project => 1.2, + MemoryKind::Feedback => 1.1, + MemoryKind::User => 1.0, + MemoryKind::Index => 0.9, + MemoryKind::Reference => 0.8, + } +} + +pub fn ranking_kind_weight(kind: MemoryKind) -> f32 { + match kind { + MemoryKind::Index => 0.0, + other => recall_kind_weight(other), + } +} diff --git a/crates/loopal-memory/src/render/mod.rs b/crates/loopal-memory/src/render/mod.rs new file mode 100644 index 00000000..fdc1fa00 --- /dev/null +++ b/crates/loopal-memory/src/render/mod.rs @@ -0,0 +1,103 @@ +pub mod ranking; + +use std::fmt::Write; + +use chrono::Utc; +use loopal_error::MemoryGraphError; + +use crate::render::ranking::{RankedNode, rank}; +use crate::store::MemoryGraph; +use crate::store::types::MemoryKind; + +const TOP_PER_KIND: usize = 8; +const RECENT_LIMIT: usize = 5; + +pub async fn render_memory_md(graph: &MemoryGraph) -> Result { + let nodes = graph.list_nodes(None).await?; + let incoming_counts = graph.count_incoming_all().await?; + let mut ranked: Vec = Vec::with_capacity(nodes.len()); + for n in nodes { + if n.kind == MemoryKind::Index { + continue; + } + let incoming = incoming_counts.get(&n.id).copied().unwrap_or(0); + ranked.push(rank(n, incoming)); + } + ranked.sort_by(|a, b| { + b.score + .partial_cmp(&a.score) + .unwrap_or(std::cmp::Ordering::Equal) + }); + + let edge_count = graph.edge_count().await?; + Ok(format_index(&ranked, edge_count)) +} + +fn format_index(ranked: &[RankedNode], edge_count: usize) -> String { + let mut out = String::new(); + write_frontmatter(&mut out, ranked.len(), edge_count); + out.push_str("# Memory Index\n\n"); + + write_section(&mut out, ranked, MemoryKind::Project, "Project"); + write_section(&mut out, ranked, MemoryKind::Feedback, "Feedback"); + write_section(&mut out, ranked, MemoryKind::User, "User"); + write_recent(&mut out, ranked); + write_section(&mut out, ranked, MemoryKind::Reference, "Reference"); + + out.push_str("\n[Use memory_recall(query=...) to look up content. Do NOT Read individual .md files unless you are about to edit one.]\n"); + out +} + +fn write_frontmatter(out: &mut String, node_count: usize, edge_count: usize) { + let ts = Utc::now().format("%Y-%m-%dT%H:%M:%SZ"); + writeln!(out, "---").ok(); + writeln!(out, "generated_from: graph").ok(); + writeln!(out, "generated_at: {}", ts).ok(); + writeln!(out, "node_count: {}", node_count).ok(); + writeln!(out, "edge_count: {}", edge_count).ok(); + writeln!(out, "---").ok(); + out.push('\n'); +} + +fn write_section(out: &mut String, ranked: &[RankedNode], kind: MemoryKind, title: &str) { + let filtered: Vec<&RankedNode> = ranked + .iter() + .filter(|r| r.node.kind == kind) + .take(TOP_PER_KIND) + .collect(); + if filtered.is_empty() { + return; + } + writeln!(out, "## {} (high-relevance)", title).ok(); + for r in filtered { + write_entry(out, r); + } + out.push('\n'); +} + +fn write_entry(out: &mut String, r: &RankedNode) { + let desc = r.node.description.as_deref().unwrap_or("(no description)"); + let inbound_tag = if r.incoming_count == 0 { + String::new() + } else { + format!(" (referenced by {})", r.incoming_count) + }; + writeln!(out, "- [[{}]]{} — {}", r.node.id, inbound_tag, desc).ok(); +} + +fn write_recent(out: &mut String, ranked: &[RankedNode]) { + let mut by_updated: Vec<&RankedNode> = ranked.iter().collect(); + by_updated.sort_by_key(|r| std::cmp::Reverse(r.node.updated_at)); + let recent: Vec<&RankedNode> = by_updated.into_iter().take(RECENT_LIMIT).collect(); + if recent.is_empty() { + return; + } + writeln!(out, "## Recently added").ok(); + for r in recent { + let date = chrono::DateTime::from_timestamp_millis(r.node.updated_at) + .map(|d| d.format("%Y-%m-%d").to_string()) + .unwrap_or_else(|| "unknown".into()); + writeln!(out, "- {} [[{}]]", date, r.node.id).ok(); + } + out.push('\n'); +} diff --git a/crates/loopal-memory/src/render/ranking.rs b/crates/loopal-memory/src/render/ranking.rs new file mode 100644 index 00000000..de79e0c0 --- /dev/null +++ b/crates/loopal-memory/src/render/ranking.rs @@ -0,0 +1,53 @@ +use chrono::Utc; + +use crate::policy::{ + RANKING_ORPHAN_PENALTY, RANKING_RECENCY_DECAY_DAYS, RANKING_RECENCY_SCALE, + RANKING_TTL_EXPIRED_PENALTY, RANKING_TTL_NEAR_PENALTY, TTL_NEAR_THRESHOLD_DAYS, + ranking_kind_weight, +}; +use crate::store::types::MemoryNode; + +pub struct RankedNode { + pub node: MemoryNode, + pub score: f32, + pub incoming_count: usize, +} + +pub fn rank(node: MemoryNode, incoming_count: usize) -> RankedNode { + let now = Utc::now().timestamp_millis(); + let incoming_score = (1.0 + incoming_count as f32).ln(); + let recency = recency_factor(node.updated_at, now); + let type_w = ranking_kind_weight(node.kind); + let ttl_d = ttl_decay(&node, now); + let orphan_pen = if incoming_count == 0 { + RANKING_ORPHAN_PENALTY + } else { + 0.0 + }; + let score = incoming_score + recency + type_w - ttl_d - orphan_pen; + RankedNode { + node, + score, + incoming_count, + } +} + +fn recency_factor(updated_at_ms: i64, now_ms: i64) -> f32 { + let days = ((now_ms - updated_at_ms).max(0) as f32) / (1000.0 * 60.0 * 60.0 * 24.0); + (-(days / RANKING_RECENCY_DECAY_DAYS)).exp() * RANKING_RECENCY_SCALE +} + +fn ttl_decay(node: &MemoryNode, now_ms: i64) -> f32 { + let Some(ttl) = node.ttl_days else { + return 0.0; + }; + let days = ((now_ms - node.created_at).max(0) as f32) / (1000.0 * 60.0 * 60.0 * 24.0); + let remaining = (ttl as f32) - days; + if remaining <= 0.0 { + return RANKING_TTL_EXPIRED_PENALTY; + } + if remaining < TTL_NEAR_THRESHOLD_DAYS { + return RANKING_TTL_NEAR_PENALTY; + } + 0.0 +} diff --git a/crates/loopal-memory/src/store/candidates.rs b/crates/loopal-memory/src/store/candidates.rs new file mode 100644 index 00000000..b1bbb328 --- /dev/null +++ b/crates/loopal-memory/src/store/candidates.rs @@ -0,0 +1,62 @@ +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_node; +use crate::store::types::{EdgeKind, MemoryNode}; + +pub fn high_impact( + conn: &Connection, + limit: usize, +) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare( + "SELECT dst_id, count(*) AS c + FROM memory_edges + WHERE provenance != 'synthesized' + GROUP BY dst_id + ORDER BY c DESC + LIMIT ?1", + )?; + let rows = stmt.query_map([limit as i64], |row| { + let id: String = row.get(0)?; + let c: i64 = row.get(1)?; + Ok((id, c as usize)) + })?; + + let pairs: Vec<(String, usize)> = rows.collect::, _>>()?; + if pairs.is_empty() { + return Ok(Vec::new()); + } + let ids: Vec = pairs.iter().map(|(i, _)| i.clone()).collect(); + let nodes = queries_node::get_many(conn, &ids)?; + let mut by_id: std::collections::HashMap = + nodes.into_iter().map(|n| (n.id.clone(), n)).collect(); + + Ok(pairs + .into_iter() + .filter_map(|(id, c)| by_id.remove(&id).map(|n| (n, c))) + .collect()) +} + +pub fn expired(conn: &Connection, now_ms: i64) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare( + "SELECT id FROM memory_nodes + WHERE ttl_days IS NOT NULL + AND (created_at + ttl_days * 86400000) < ?1", + )?; + let ids: Vec = stmt + .query_map([now_ms], |row| row.get::<_, String>(0))? + .collect::, _>>()?; + queries_node::get_many(conn, &ids) +} + +pub fn conflicting_pairs(conn: &Connection) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare("SELECT src_id, dst_id FROM memory_edges WHERE kind = ?1")?; + let rows = stmt.query_map([EdgeKind::Contradicts.as_str()], |row| { + let s: String = row.get(0)?; + let d: String = row.get(1)?; + Ok((s, d)) + })?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} diff --git a/crates/loopal-memory/src/store/connection.rs b/crates/loopal-memory/src/store/connection.rs new file mode 100644 index 00000000..d599c786 --- /dev/null +++ b/crates/loopal-memory/src/store/connection.rs @@ -0,0 +1,54 @@ +use std::path::Path; +use std::sync::Arc; + +use rusqlite::Connection; +use tokio::sync::Mutex; + +use loopal_error::MemoryGraphError; + +use crate::store::migrations::{CURRENT_SCHEMA_VERSION, ensure_version}; +use crate::store::schema::apply_schema; + +#[derive(Clone)] +pub struct DbConnection { + inner: Arc>, +} + +impl DbConnection { + pub fn open>(path: P) -> Result { + if let Some(parent) = path.as_ref().parent() { + std::fs::create_dir_all(parent)?; + } + let conn = Connection::open(path.as_ref())?; + Self::init(conn) + } + + pub fn in_memory() -> Result { + let conn = Connection::open_in_memory()?; + Self::init(conn) + } + + fn init(conn: Connection) -> Result { + apply_schema(&conn)?; + ensure_version(&conn, CURRENT_SCHEMA_VERSION)?; + Ok(Self { + inner: Arc::new(Mutex::new(conn)), + }) + } + + pub async fn with_conn(&self, f: F) -> Result + where + F: FnOnce(&Connection) -> Result, + { + let guard = self.inner.lock().await; + f(&guard) + } + + pub async fn with_conn_mut(&self, f: F) -> Result + where + F: FnOnce(&mut Connection) -> Result, + { + let mut guard = self.inner.lock().await; + f(&mut guard) + } +} diff --git a/crates/loopal-memory/src/store/edge_ops.rs b/crates/loopal-memory/src/store/edge_ops.rs new file mode 100644 index 00000000..ad85fbb5 --- /dev/null +++ b/crates/loopal-memory/src/store/edge_ops.rs @@ -0,0 +1,79 @@ +use crate::store::{MemoryEdge, MemoryGraph, Provenance, queries_edge}; +use loopal_error::MemoryGraphError; + +impl MemoryGraph { + pub async fn insert_edge(&self, edge: MemoryEdge) -> Result { + self.db + .with_conn(move |c| queries_edge::insert(c, &edge)) + .await + } + + pub async fn get_outgoing_edges( + &self, + src_id: &str, + ) -> Result, MemoryGraphError> { + let id = src_id.to_string(); + self.db + .with_conn(move |c| queries_edge::get_outgoing(c, &id)) + .await + } + + pub async fn get_incoming_edges( + &self, + dst_id: &str, + ) -> Result, MemoryGraphError> { + let id = dst_id.to_string(); + self.db + .with_conn(move |c| queries_edge::get_incoming(c, &id)) + .await + } + + pub async fn count_incoming(&self, dst_id: &str) -> Result { + let id = dst_id.to_string(); + self.db + .with_conn(move |c| queries_edge::count_incoming(c, &id)) + .await + } + + pub async fn count_incoming_all( + &self, + ) -> Result, MemoryGraphError> { + self.db.with_conn(queries_edge::count_incoming_all).await + } + + pub async fn list_edges_by_provenance( + &self, + prov: Provenance, + ) -> Result, MemoryGraphError> { + self.db + .with_conn(move |c| queries_edge::list_by_provenance(c, prov)) + .await + } + + pub async fn delete_edges_for_node(&self, node_id: &str) -> Result { + let id = node_id.to_string(); + self.db + .with_conn(move |c| queries_edge::delete_by_node(c, &id)) + .await + } + + pub async fn delete_outgoing_edges(&self, src_id: &str) -> Result { + let id = src_id.to_string(); + self.db + .with_conn(move |c| queries_edge::delete_outgoing(c, &id)) + .await + } + + pub async fn delete_edges_by_provenance( + &self, + prov: Provenance, + ) -> Result { + self.db + .with_conn(move |c| queries_edge::delete_by_provenance(c, prov)) + .await + } + + pub async fn edge_count(&self) -> Result { + self.db.with_conn(queries_edge::count).await + } +} diff --git a/crates/loopal-memory/src/store/file_ops.rs b/crates/loopal-memory/src/store/file_ops.rs new file mode 100644 index 00000000..147af8c8 --- /dev/null +++ b/crates/loopal-memory/src/store/file_ops.rs @@ -0,0 +1,39 @@ +use crate::store::MemoryGraph; +use crate::store::queries_files::{self, FileCacheEntry}; +use loopal_error::MemoryGraphError; + +impl MemoryGraph { + pub async fn get_file_cache( + &self, + path: &str, + ) -> Result, MemoryGraphError> { + let path = path.to_string(); + self.db + .with_conn(move |c| queries_files::get(c, &path)) + .await + } + + pub async fn upsert_file_cache( + &self, + path: &str, + content_hash: &str, + size: i64, + modified_at: i64, + indexed_at: i64, + ) -> Result<(), MemoryGraphError> { + let path = path.to_string(); + let content_hash = content_hash.to_string(); + self.db + .with_conn(move |c| { + queries_files::upsert(c, &path, &content_hash, size, modified_at, indexed_at) + }) + .await + } + + pub async fn delete_file_cache(&self, path: &str) -> Result { + let path = path.to_string(); + self.db + .with_conn(move |c| queries_files::delete(c, &path)) + .await + } +} diff --git a/crates/loopal-memory/src/store/migrations.rs b/crates/loopal-memory/src/store/migrations.rs new file mode 100644 index 00000000..4eb8f8de --- /dev/null +++ b/crates/loopal-memory/src/store/migrations.rs @@ -0,0 +1,48 @@ +use rusqlite::{Connection, params}; + +use loopal_error::MemoryGraphError; + +pub const CURRENT_SCHEMA_VERSION: u32 = 1; + +pub fn ensure_version(conn: &Connection, version: u32) -> Result<(), MemoryGraphError> { + let exists: Option = conn + .query_row( + "SELECT version FROM schema_versions WHERE version = ?1", + params![version], + |row| row.get(0), + ) + .ok(); + + if exists.is_none() { + let now_ms = chrono::Utc::now().timestamp_millis(); + conn.execute( + "INSERT INTO schema_versions (version, applied_at, description) VALUES (?1, ?2, ?3)", + params![version, now_ms, format!("schema v{}", version)], + )?; + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::store::schema::apply_schema; + + fn open() -> Connection { + let conn = Connection::open_in_memory().unwrap(); + apply_schema(&conn).unwrap(); + conn + } + + #[test] + fn ensure_version_inserts_once() { + let conn = open(); + ensure_version(&conn, 1).unwrap(); + ensure_version(&conn, 1).unwrap(); + let count: i64 = conn + .query_row("SELECT count(*) FROM schema_versions", [], |r| r.get(0)) + .unwrap(); + assert_eq!(count, 1); + } +} diff --git a/crates/loopal-memory/src/store/mod.rs b/crates/loopal-memory/src/store/mod.rs new file mode 100644 index 00000000..9c2a62d2 --- /dev/null +++ b/crates/loopal-memory/src/store/mod.rs @@ -0,0 +1,119 @@ +mod candidates; +mod connection; +mod edge_ops; +mod file_ops; +mod migrations; +mod node_ops; +pub(crate) mod queries_edge; +pub(crate) mod queries_files; +mod queries_fts; +mod queries_graph; +pub(crate) mod queries_node; +mod schema; +pub mod types; + +use std::path::Path; +use std::sync::{Arc, RwLock}; + +use loopal_error::MemoryGraphError; + +pub use connection::DbConnection; +pub use queries_fts::FtsHit; +pub use queries_graph::{BfsConfig, Subgraph}; +pub use types::{EdgeKind, MemoryEdge, MemoryKind, MemoryNode, Provenance}; + +use crate::event_log::{EventKind, EventLogWriter, RecallStats, RecallStatsMap}; + +#[derive(Clone)] +pub struct MemoryGraph { + pub(crate) db: DbConnection, + pub(crate) recall_stats: Arc>, + pub(crate) event_log: Option>, +} + +impl MemoryGraph { + pub fn open>(path: P) -> Result { + Ok(Self { + db: DbConnection::open(path)?, + recall_stats: Arc::new(RwLock::new(RecallStatsMap::new())), + event_log: None, + }) + } + + pub fn in_memory() -> Result { + Ok(Self { + db: DbConnection::in_memory()?, + recall_stats: Arc::new(RwLock::new(RecallStatsMap::new())), + event_log: None, + }) + } + + pub fn set_event_log(&mut self, log: Arc) { + self.event_log = Some(log); + } + + pub fn install_recall_stats(&mut self, stats: RecallStatsMap) { + if let Ok(mut guard) = self.recall_stats.write() { + *guard = stats; + } + } + + pub fn recall_stats_snapshot(&self, slug: &str) -> Option { + self.recall_stats.read().ok()?.get(slug).cloned() + } + + pub fn record_event(&self, kind: EventKind) { + let Some(log) = &self.event_log else { + return; + }; + let ev = log.append(kind); + if let Ok(mut guard) = self.recall_stats.write() + && let Some(slug) = ev.node_slug() + { + guard.entry(slug.to_string()).or_default().fold_event(&ev); + } + } + + pub async fn search( + &self, + query: &str, + kind: Option, + limit: usize, + ) -> Result, MemoryGraphError> { + let q = query.to_string(); + self.db + .with_conn(move |c| queries_fts::search(c, &q, kind, limit)) + .await + } + + pub async fn bfs( + &self, + start_ids: &[String], + config: BfsConfig, + ) -> Result { + let ids = start_ids.to_vec(); + self.db + .with_conn(move |c| queries_graph::bfs_bidirectional(c, &ids, &config)) + .await + } + + pub async fn find_high_impact( + &self, + limit: usize, + ) -> Result, MemoryGraphError> { + self.db + .with_conn(move |c| candidates::high_impact(c, limit)) + .await + } + + pub async fn find_expired(&self) -> Result, MemoryGraphError> { + let now = chrono::Utc::now().timestamp_millis(); + self.db + .with_conn(move |c| candidates::expired(c, now)) + .await + } + + pub async fn find_conflicting_pairs(&self) -> Result, MemoryGraphError> { + self.db.with_conn(candidates::conflicting_pairs).await + } +} diff --git a/crates/loopal-memory/src/store/node_ops.rs b/crates/loopal-memory/src/store/node_ops.rs new file mode 100644 index 00000000..383258f1 --- /dev/null +++ b/crates/loopal-memory/src/store/node_ops.rs @@ -0,0 +1,78 @@ +use crate::store::{MemoryGraph, MemoryKind, MemoryNode, queries_node}; +use loopal_error::MemoryGraphError; + +impl MemoryGraph { + pub async fn upsert_node(&self, node: MemoryNode) -> Result<(), MemoryGraphError> { + self.db.with_conn(|c| queries_node::upsert(c, &node)).await + } + + pub async fn get_node(&self, id: &str) -> Result, MemoryGraphError> { + let id = id.to_string(); + self.db.with_conn(move |c| queries_node::get(c, &id)).await + } + + pub async fn get_nodes(&self, ids: &[String]) -> Result, MemoryGraphError> { + let ids = ids.to_vec(); + self.db + .with_conn(move |c| queries_node::get_many(c, &ids)) + .await + } + + pub async fn list_nodes( + &self, + limit: Option, + ) -> Result, MemoryGraphError> { + self.db + .with_conn(move |c| queries_node::list(c, limit)) + .await + } + + pub async fn list_nodes_by_kind( + &self, + kind: MemoryKind, + ) -> Result, MemoryGraphError> { + self.db + .with_conn(move |c| queries_node::list_by_kind(c, kind)) + .await + } + + pub async fn delete_node(&self, id: &str) -> Result { + let id = id.to_string(); + self.db + .with_conn(move |c| queries_node::delete(c, &id)) + .await + } + + pub async fn rename_node( + &self, + old_id: &str, + new_id: &str, + new_file_path: &str, + ) -> Result { + let old_id = old_id.to_string(); + let new_id = new_id.to_string(); + let new_file_path = new_file_path.to_string(); + self.db + .with_conn_mut(move |conn| { + let tx = conn.transaction()?; + let renamed = queries_node::rename(&tx, &old_id, &new_id, &new_file_path)?; + tx.commit()?; + Ok(renamed) + }) + .await + } + + pub async fn find_node_by_path( + &self, + path: &str, + ) -> Result, MemoryGraphError> { + let path = path.to_string(); + self.db + .with_conn(move |c| queries_node::find_by_file_path(c, &path)) + .await + } + + pub async fn node_count(&self) -> Result { + self.db.with_conn(queries_node::count).await + } +} diff --git a/crates/loopal-memory/src/store/queries_edge.rs b/crates/loopal-memory/src/store/queries_edge.rs new file mode 100644 index 00000000..19023e9a --- /dev/null +++ b/crates/loopal-memory/src/store/queries_edge.rs @@ -0,0 +1,155 @@ +use rusqlite::{Connection, Row, params}; + +use loopal_error::MemoryGraphError; + +use crate::store::types::{EdgeKind, MemoryEdge, Provenance}; + +pub fn insert(conn: &Connection, edge: &MemoryEdge) -> Result { + let metadata_str = edge.metadata.as_ref().map(|v| v.to_string()); + + conn.execute( + "INSERT INTO memory_edges (src_id, dst_id, kind, line, metadata, + provenance, confidence, created_at) + VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8) + ON CONFLICT(src_id, dst_id, kind, provenance) DO UPDATE SET + confidence = max(confidence, excluded.confidence), + metadata = COALESCE(metadata, excluded.metadata), + line = COALESCE(line, excluded.line)", + params![ + edge.src_id, + edge.dst_id, + edge.kind.as_str(), + edge.line, + metadata_str, + edge.provenance.as_str(), + edge.confidence, + edge.created_at, + ], + )?; + Ok(conn.last_insert_rowid()) +} + +pub fn get_outgoing(conn: &Connection, src_id: &str) -> Result, MemoryGraphError> { + query_edges( + conn, + "SELECT id, src_id, dst_id, kind, line, metadata, provenance, confidence, created_at + FROM memory_edges WHERE src_id = ?1", + params![src_id], + ) +} + +pub fn get_incoming(conn: &Connection, dst_id: &str) -> Result, MemoryGraphError> { + query_edges( + conn, + "SELECT id, src_id, dst_id, kind, line, metadata, provenance, confidence, created_at + FROM memory_edges WHERE dst_id = ?1", + params![dst_id], + ) +} + +pub fn count_incoming(conn: &Connection, dst_id: &str) -> Result { + let n: i64 = conn.query_row( + "SELECT count(*) FROM memory_edges WHERE dst_id = ?1", + params![dst_id], + |r| r.get(0), + )?; + Ok(n as usize) +} + +pub fn count_incoming_all( + conn: &Connection, +) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare("SELECT dst_id, count(*) FROM memory_edges GROUP BY dst_id")?; + let rows = stmt.query_map([], |row| { + let dst: String = row.get(0)?; + let count: i64 = row.get(1)?; + Ok((dst, count as usize)) + })?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} + +pub fn list_by_provenance( + conn: &Connection, + provenance: Provenance, +) -> Result, MemoryGraphError> { + query_edges( + conn, + "SELECT id, src_id, dst_id, kind, line, metadata, provenance, confidence, created_at + FROM memory_edges WHERE provenance = ?1", + params![provenance.as_str()], + ) +} + +pub fn delete_by_node(conn: &Connection, node_id: &str) -> Result { + let n = conn.execute( + "DELETE FROM memory_edges WHERE src_id = ?1 OR dst_id = ?1", + params![node_id], + )?; + Ok(n) +} + +pub fn delete_outgoing(conn: &Connection, src_id: &str) -> Result { + let n = conn.execute( + "DELETE FROM memory_edges WHERE src_id = ?1", + params![src_id], + )?; + Ok(n) +} + +pub fn delete_by_provenance( + conn: &Connection, + provenance: Provenance, +) -> Result { + let n = conn.execute( + "DELETE FROM memory_edges WHERE provenance = ?1", + params![provenance.as_str()], + )?; + Ok(n) +} + +pub fn count(conn: &Connection) -> Result { + let n: i64 = conn.query_row("SELECT count(*) FROM memory_edges", [], |r| r.get(0))?; + Ok(n as usize) +} + +fn query_edges( + conn: &Connection, + sql: &str, + params: impl rusqlite::Params, +) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare(sql)?; + let rows = stmt.query_map(params, map_row)?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} + +fn map_row(row: &Row<'_>) -> rusqlite::Result { + let kind_str: String = row.get("kind")?; + let prov_str: String = row.get("provenance")?; + let kind = EdgeKind::parse(&kind_str).map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(3, rusqlite::types::Type::Text, Box::new(e)) + })?; + let provenance = Provenance::parse(&prov_str).map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(6, rusqlite::types::Type::Text, Box::new(e)) + })?; + let metadata_str: Option = row.get("metadata")?; + let metadata = metadata_str + .as_deref() + .map(serde_json::from_str) + .transpose() + .map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(5, rusqlite::types::Type::Text, Box::new(e)) + })?; + Ok(MemoryEdge { + id: row.get("id")?, + src_id: row.get("src_id")?, + dst_id: row.get("dst_id")?, + kind, + line: row.get("line")?, + metadata, + provenance, + confidence: row.get("confidence")?, + created_at: row.get("created_at")?, + }) +} diff --git a/crates/loopal-memory/src/store/queries_files.rs b/crates/loopal-memory/src/store/queries_files.rs new file mode 100644 index 00000000..b3ce5a90 --- /dev/null +++ b/crates/loopal-memory/src/store/queries_files.rs @@ -0,0 +1,55 @@ +use rusqlite::{Connection, params}; + +use loopal_error::MemoryGraphError; + +pub struct FileCacheEntry { + pub modified_at: i64, + pub size: i64, +} + +pub fn get(conn: &Connection, path: &str) -> Result, MemoryGraphError> { + let result = conn + .query_row( + "SELECT modified_at, size FROM memory_files WHERE path = ?1", + params![path], + |row| { + Ok(FileCacheEntry { + modified_at: row.get(0)?, + size: row.get(1)?, + }) + }, + ) + .map(Some); + match result { + Ok(v) => Ok(v), + Err(rusqlite::Error::QueryReturnedNoRows) => Ok(None), + Err(e) => Err(e.into()), + } +} + +pub fn upsert( + conn: &Connection, + path: &str, + content_hash: &str, + size: i64, + modified_at: i64, + indexed_at: i64, +) -> Result<(), MemoryGraphError> { + conn.execute( + "INSERT INTO memory_files (path, content_hash, size, modified_at, indexed_at, errors) + VALUES (?1, ?2, ?3, ?4, ?5, NULL) + ON CONFLICT(path) DO UPDATE SET + content_hash = excluded.content_hash, + size = excluded.size, + modified_at = excluded.modified_at, + indexed_at = excluded.indexed_at, + errors = NULL", + params![path, content_hash, size, modified_at, indexed_at], + )?; + Ok(()) +} + +pub fn delete(conn: &Connection, path: &str) -> Result { + let n = conn.execute("DELETE FROM memory_files WHERE path = ?1", params![path])?; + Ok(n > 0) +} diff --git a/crates/loopal-memory/src/store/queries_fts.rs b/crates/loopal-memory/src/store/queries_fts.rs new file mode 100644 index 00000000..97fb82f2 --- /dev/null +++ b/crates/loopal-memory/src/store/queries_fts.rs @@ -0,0 +1,92 @@ +use rusqlite::{Connection, params}; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_node::get_many; +use crate::store::types::{MemoryKind, MemoryNode}; + +pub struct FtsHit { + pub node: MemoryNode, + pub rank: f32, +} + +pub fn search( + conn: &Connection, + query: &str, + kind: Option, + limit: usize, +) -> Result, MemoryGraphError> { + let sanitized = sanitize_query(query); + if sanitized.is_empty() { + return Ok(Vec::new()); + } + + let kind_filter = kind.map(|k| k.as_str()); + + let sql = if kind_filter.is_some() { + "SELECT memory_fts.id, bm25(memory_fts) AS rank + FROM memory_fts + JOIN memory_nodes n ON memory_fts.id = n.id + WHERE memory_fts MATCH ?1 AND n.kind = ?2 + ORDER BY rank + LIMIT ?3" + } else { + "SELECT memory_fts.id, bm25(memory_fts) AS rank + FROM memory_fts + WHERE memory_fts MATCH ?1 + ORDER BY rank + LIMIT ?2" + }; + + let mut stmt = conn.prepare(sql)?; + let rows: Vec<(String, f32)> = if let Some(k) = kind_filter { + stmt.query_map(params![sanitized, k, limit as i64], |r| { + let id: String = r.get(0)?; + let rank: f64 = r.get(1)?; + Ok((id, rank as f32)) + })? + .collect::, _>>()? + } else { + stmt.query_map(params![sanitized, limit as i64], |r| { + let id: String = r.get(0)?; + let rank: f64 = r.get(1)?; + Ok((id, rank as f32)) + })? + .collect::, _>>()? + }; + + if rows.is_empty() { + return Ok(Vec::new()); + } + + let ids: Vec = rows.iter().map(|(id, _)| id.clone()).collect(); + let nodes = get_many(conn, &ids)?; + + let mut by_id: std::collections::HashMap = + nodes.into_iter().map(|n| (n.id.clone(), n)).collect(); + + let mut hits = Vec::with_capacity(rows.len()); + for (id, rank) in rows { + if let Some(node) = by_id.remove(&id) { + hits.push(FtsHit { node, rank }); + } + } + Ok(hits) +} + +fn sanitize_query(input: &str) -> String { + let trimmed = input.trim(); + if trimmed.is_empty() { + return String::new(); + } + // reason: FTS5 token 用引号包成 phrase 转义操作符;去引号后变空串的 token 必须丢弃 + // 否则会生成 `""` 触发 FTS5 syntax error。 + let tokens: Vec = trimmed + .split_whitespace() + .filter(|t| !t.is_empty()) + .map(|t| t.replace('"', "")) + .filter(|t| !t.is_empty()) + .map(|t| format!("\"{}\"", t)) + .collect(); + tokens.join(" OR ") +} diff --git a/crates/loopal-memory/src/store/queries_graph.rs b/crates/loopal-memory/src/store/queries_graph.rs new file mode 100644 index 00000000..408a470f --- /dev/null +++ b/crates/loopal-memory/src/store/queries_graph.rs @@ -0,0 +1,181 @@ +use std::collections::{HashMap, HashSet, VecDeque}; + +use rusqlite::{Connection, params_from_iter}; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_node::get_many; +use crate::store::types::{EdgeKind, MemoryEdge, MemoryNode, Provenance}; + +#[derive(Debug, Default, Clone)] +pub struct Subgraph { + pub nodes: Vec, + pub edges: Vec, + pub depth_by_id: HashMap, +} + +pub struct BfsConfig { + pub max_depth: u32, + pub edge_kinds: Option>, + pub exclude_provenance: Vec, + pub min_confidence: f32, + pub limit_nodes: usize, +} + +impl Default for BfsConfig { + fn default() -> Self { + Self { + max_depth: 2, + edge_kinds: None, + exclude_provenance: Vec::new(), + min_confidence: 0.3, + limit_nodes: 50, + } + } +} + +pub fn bfs_bidirectional( + conn: &Connection, + start_ids: &[String], + config: &BfsConfig, +) -> Result { + let mut visited: HashSet = HashSet::new(); + let mut depth_by_id: HashMap = HashMap::new(); + let mut queue: VecDeque<(String, u32)> = VecDeque::new(); + let mut all_edges: Vec = Vec::new(); + let mut seen_edge_ids: HashSet = HashSet::new(); + + for sid in start_ids { + visited.insert(sid.clone()); + depth_by_id.insert(sid.clone(), 0); + queue.push_back((sid.clone(), 0)); + } + + while let Some((node_id, depth)) = queue.pop_front() { + if visited.len() >= config.limit_nodes { + break; + } + if depth >= config.max_depth { + continue; + } + + let edges = fetch_edges_for_node(conn, &node_id, config)?; + for e in edges { + if let Some(id) = e.id + && !seen_edge_ids.insert(id) + { + continue; + } + let neighbor = pick_neighbor(&node_id, &e); + if !visited.contains(&neighbor) { + if visited.len() >= config.limit_nodes { + all_edges.push(e); + continue; + } + visited.insert(neighbor.clone()); + depth_by_id.insert(neighbor.clone(), depth + 1); + queue.push_back((neighbor, depth + 1)); + } + all_edges.push(e); + } + } + + let ids: Vec = visited.into_iter().collect(); + let nodes = get_many(conn, &ids)?; + + Ok(Subgraph { + nodes, + edges: all_edges, + depth_by_id, + }) +} + +fn pick_neighbor(self_id: &str, edge: &MemoryEdge) -> String { + if edge.src_id == self_id { + edge.dst_id.clone() + } else { + edge.src_id.clone() + } +} + +fn fetch_edges_for_node( + conn: &Connection, + node_id: &str, + config: &BfsConfig, +) -> Result, MemoryGraphError> { + let mut sql = String::from( + "SELECT id, src_id, dst_id, kind, line, metadata, provenance, confidence, created_at + FROM memory_edges + WHERE (src_id = ?1 OR dst_id = ?1) AND confidence >= ?2", + ); + + let mut bindings: Vec> = vec![ + Box::new(node_id.to_string()), + Box::new(config.min_confidence as f64), + ]; + + if let Some(kinds) = &config.edge_kinds + && !kinds.is_empty() + { + let next_idx = bindings.len() + 1; + let placeholders: Vec = (next_idx..next_idx + kinds.len()) + .map(|i| format!("?{}", i)) + .collect(); + sql.push_str(&format!(" AND kind IN ({})", placeholders.join(","))); + for k in kinds { + bindings.push(Box::new(k.as_str().to_string())); + } + } + + if !config.exclude_provenance.is_empty() { + let next_idx = bindings.len() + 1; + let placeholders: Vec = (next_idx..next_idx + config.exclude_provenance.len()) + .map(|i| format!("?{}", i)) + .collect(); + sql.push_str(&format!( + " AND provenance NOT IN ({})", + placeholders.join(",") + )); + for p in &config.exclude_provenance { + bindings.push(Box::new(p.as_str().to_string())); + } + } + + let mut stmt = conn.prepare(&sql)?; + let rows = stmt.query_map( + params_from_iter(bindings.iter().map(|b| b.as_ref())), + map_edge_row, + )?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} + +fn map_edge_row(row: &rusqlite::Row<'_>) -> rusqlite::Result { + let kind_str: String = row.get("kind")?; + let prov_str: String = row.get("provenance")?; + let kind = EdgeKind::parse(&kind_str).map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(3, rusqlite::types::Type::Text, Box::new(e)) + })?; + let provenance = Provenance::parse(&prov_str).map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(6, rusqlite::types::Type::Text, Box::new(e)) + })?; + let metadata_str: Option = row.get("metadata")?; + let metadata = metadata_str + .as_deref() + .map(serde_json::from_str) + .transpose() + .map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(5, rusqlite::types::Type::Text, Box::new(e)) + })?; + Ok(MemoryEdge { + id: row.get("id")?, + src_id: row.get("src_id")?, + dst_id: row.get("dst_id")?, + kind, + line: row.get("line")?, + metadata, + provenance, + confidence: row.get("confidence")?, + created_at: row.get("created_at")?, + }) +} diff --git a/crates/loopal-memory/src/store/queries_node/mod.rs b/crates/loopal-memory/src/store/queries_node/mod.rs new file mode 100644 index 00000000..6cf5528c --- /dev/null +++ b/crates/loopal-memory/src/store/queries_node/mod.rs @@ -0,0 +1,29 @@ +pub(crate) mod read; +pub(crate) mod write; + +pub(crate) use read::*; +pub(crate) use write::*; + +use rusqlite::Row; + +use crate::store::types::{MemoryKind, MemoryNode}; + +pub(super) fn map_row(row: &Row<'_>) -> rusqlite::Result { + let kind_str: String = row.get("kind")?; + let kind = MemoryKind::parse(&kind_str).map_err(|e| { + rusqlite::Error::FromSqlConversionFailure(1, rusqlite::types::Type::Text, Box::new(e)) + })?; + Ok(MemoryNode { + id: row.get("id")?, + kind, + name: row.get("name")?, + description: row.get("description")?, + file_path: row.get("file_path")?, + body_preview: row.get("body_preview")?, + created_at: row.get("created_at")?, + updated_at: row.get("updated_at")?, + ttl_days: row.get("ttl_days")?, + content_hash: row.get("content_hash")?, + indexed_at: row.get("indexed_at")?, + }) +} diff --git a/crates/loopal-memory/src/store/queries_node/read.rs b/crates/loopal-memory/src/store/queries_node/read.rs new file mode 100644 index 00000000..96e32925 --- /dev/null +++ b/crates/loopal-memory/src/store/queries_node/read.rs @@ -0,0 +1,99 @@ +use rusqlite::{Connection, params, params_from_iter}; + +use loopal_error::MemoryGraphError; + +use super::map_row; +use crate::store::types::{MemoryKind, MemoryNode}; + +pub fn get(conn: &Connection, id: &str) -> Result, MemoryGraphError> { + let result = conn + .query_row( + "SELECT id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + FROM memory_nodes WHERE id = ?1", + params![id], + map_row, + ) + .map(Some); + + match result { + Ok(node) => Ok(node), + Err(rusqlite::Error::QueryReturnedNoRows) => Ok(None), + Err(e) => Err(MemoryGraphError::Sqlite(e)), + } +} + +pub fn get_many(conn: &Connection, ids: &[String]) -> Result, MemoryGraphError> { + if ids.is_empty() { + return Ok(Vec::new()); + } + let placeholders = (1..=ids.len()) + .map(|i| format!("?{}", i)) + .collect::>() + .join(","); + let sql = format!( + "SELECT id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + FROM memory_nodes WHERE id IN ({})", + placeholders + ); + let mut stmt = conn.prepare(&sql)?; + let rows = stmt.query_map(params_from_iter(ids.iter()), map_row)?; + let mut nodes = Vec::with_capacity(ids.len()); + for r in rows { + nodes.push(r?); + } + Ok(nodes) +} + +pub fn list(conn: &Connection, limit: Option) -> Result, MemoryGraphError> { + let lim = limit.map(|n| n as i64).unwrap_or(-1); + let mut stmt = conn.prepare( + "SELECT id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + FROM memory_nodes ORDER BY updated_at DESC LIMIT ?1", + )?; + let rows = stmt.query_map(params![lim], map_row)?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} + +pub fn list_by_kind( + conn: &Connection, + kind: MemoryKind, +) -> Result, MemoryGraphError> { + let mut stmt = conn.prepare( + "SELECT id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + FROM memory_nodes WHERE kind = ?1 ORDER BY updated_at DESC", + )?; + let rows = stmt.query_map(params![kind.as_str()], map_row)?; + rows.collect::, _>>() + .map_err(MemoryGraphError::Sqlite) +} + +pub fn find_by_file_path( + conn: &Connection, + file_path: &str, +) -> Result, MemoryGraphError> { + let result = conn + .query_row( + "SELECT id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + FROM memory_nodes WHERE file_path = ?1", + params![file_path], + map_row, + ) + .map(Some); + + match result { + Ok(node) => Ok(node), + Err(rusqlite::Error::QueryReturnedNoRows) => Ok(None), + Err(e) => Err(MemoryGraphError::Sqlite(e)), + } +} + +pub fn count(conn: &Connection) -> Result { + let n: i64 = conn.query_row("SELECT count(*) FROM memory_nodes", [], |r| r.get(0))?; + Ok(n as usize) +} diff --git a/crates/loopal-memory/src/store/queries_node/write.rs b/crates/loopal-memory/src/store/queries_node/write.rs new file mode 100644 index 00000000..08548abb --- /dev/null +++ b/crates/loopal-memory/src/store/queries_node/write.rs @@ -0,0 +1,109 @@ +use rusqlite::{Connection, params}; + +use loopal_error::MemoryGraphError; + +use crate::store::types::MemoryNode; + +pub fn upsert(conn: &Connection, node: &MemoryNode) -> Result<(), MemoryGraphError> { + let existing_path: Option = conn + .query_row( + "SELECT file_path FROM memory_nodes WHERE id = ?1", + params![node.id], + |row| row.get(0), + ) + .ok(); + if let Some(existing) = existing_path + && existing != node.file_path + { + tracing::warn!( + slug = %node.id, + existing_file_path = %existing, + new_file_path = %node.file_path, + "slug collision: two distinct files produced the same slug — second upsert will overwrite first" + ); + } + + conn.execute( + "INSERT INTO memory_nodes ( + id, kind, name, description, file_path, body_preview, + created_at, updated_at, ttl_days, content_hash, indexed_at + ) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11) + ON CONFLICT(id) DO UPDATE SET + kind = excluded.kind, + name = excluded.name, + description = excluded.description, + file_path = excluded.file_path, + body_preview = excluded.body_preview, + updated_at = CASE + WHEN content_hash != excluded.content_hash THEN excluded.updated_at + ELSE updated_at + END, + ttl_days = excluded.ttl_days, + content_hash = excluded.content_hash, + indexed_at = excluded.indexed_at", + params![ + node.id, + node.kind.as_str(), + node.name, + node.description, + node.file_path, + node.body_preview, + node.created_at, + node.updated_at, + node.ttl_days, + node.content_hash, + node.indexed_at, + ], + )?; + Ok(()) +} + +pub fn delete(conn: &Connection, id: &str) -> Result { + let n = conn.execute("DELETE FROM memory_nodes WHERE id = ?1", params![id])?; + Ok(n > 0) +} + +pub fn rename( + conn: &Connection, + old_id: &str, + new_id: &str, + new_file_path: &str, +) -> Result { + if old_id == new_id { + let n = conn.execute( + "UPDATE memory_nodes SET file_path = ?1 WHERE id = ?2", + params![new_file_path, old_id], + )?; + return Ok(n > 0); + } + + let exists: bool = conn + .query_row( + "SELECT 1 FROM memory_nodes WHERE id = ?1", + params![new_id], + |_| Ok(true), + ) + .unwrap_or(false); + if exists { + return Ok(false); + } + + conn.execute("PRAGMA defer_foreign_keys = ON", [])?; + conn.execute( + "UPDATE memory_edges SET src_id = ?1 WHERE src_id = ?2", + params![new_id, old_id], + )?; + conn.execute( + "UPDATE memory_edges SET dst_id = ?1 WHERE dst_id = ?2", + params![new_id, old_id], + )?; + conn.execute( + "UPDATE memory_unresolved_links SET from_id = ?1 WHERE from_id = ?2", + params![new_id, old_id], + )?; + let n = conn.execute( + "UPDATE memory_nodes SET id = ?1, file_path = ?2 WHERE id = ?3", + params![new_id, new_file_path, old_id], + )?; + Ok(n > 0) +} diff --git a/crates/loopal-memory/src/store/schema.rs b/crates/loopal-memory/src/store/schema.rs new file mode 100644 index 00000000..18d66a80 --- /dev/null +++ b/crates/loopal-memory/src/store/schema.rs @@ -0,0 +1,74 @@ +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; + +const SCHEMA_SQL: &str = include_str!("schema.sql"); + +pub fn apply_schema(conn: &Connection) -> Result<(), MemoryGraphError> { + conn.execute_batch("PRAGMA foreign_keys = ON;")?; + conn.execute_batch(SCHEMA_SQL) + .map_err(|e| MemoryGraphError::SchemaInit(e.to_string()))?; + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn open() -> Connection { + Connection::open_in_memory().unwrap() + } + + #[test] + fn apply_creates_all_tables() { + let conn = open(); + apply_schema(&conn).unwrap(); + + let tables: Vec = conn + .prepare("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name") + .unwrap() + .query_map([], |row| row.get(0)) + .unwrap() + .map(|r| r.unwrap()) + .collect(); + + assert!(tables.contains(&"memory_nodes".to_string())); + assert!(tables.contains(&"memory_edges".to_string())); + assert!(tables.contains(&"memory_files".to_string())); + assert!(tables.contains(&"memory_unresolved_links".to_string())); + assert!(tables.contains(&"schema_versions".to_string())); + } + + #[test] + fn apply_is_idempotent() { + let conn = open(); + apply_schema(&conn).unwrap(); + apply_schema(&conn).unwrap(); + apply_schema(&conn).unwrap(); + } + + #[test] + fn fts_virtual_table_exists() { + let conn = open(); + apply_schema(&conn).unwrap(); + + let count: i64 = conn + .query_row( + "SELECT count(*) FROM sqlite_master WHERE name='memory_fts'", + [], + |row| row.get(0), + ) + .unwrap(); + assert_eq!(count, 1); + } + + #[test] + fn foreign_keys_enabled() { + let conn = open(); + apply_schema(&conn).unwrap(); + let on: i64 = conn + .query_row("PRAGMA foreign_keys", [], |r| r.get(0)) + .unwrap(); + assert_eq!(on, 1); + } +} diff --git a/crates/loopal-memory/src/store/schema.sql b/crates/loopal-memory/src/store/schema.sql new file mode 100644 index 00000000..005e8ae7 --- /dev/null +++ b/crates/loopal-memory/src/store/schema.sql @@ -0,0 +1,87 @@ +CREATE TABLE IF NOT EXISTS schema_versions ( + version INTEGER PRIMARY KEY, + applied_at INTEGER NOT NULL, + description TEXT +); + +CREATE TABLE IF NOT EXISTS memory_nodes ( + id TEXT PRIMARY KEY, + kind TEXT NOT NULL, + name TEXT NOT NULL, + description TEXT, + file_path TEXT NOT NULL, + body_preview TEXT, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + ttl_days INTEGER, + content_hash TEXT NOT NULL, + indexed_at INTEGER NOT NULL +); + +CREATE INDEX IF NOT EXISTS idx_memory_nodes_kind ON memory_nodes(kind); +CREATE UNIQUE INDEX IF NOT EXISTS uniq_memory_nodes_file_path ON memory_nodes(file_path); +CREATE INDEX IF NOT EXISTS idx_memory_nodes_name ON memory_nodes(lower(name)); + +CREATE TABLE IF NOT EXISTS memory_edges ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + src_id TEXT NOT NULL, + dst_id TEXT NOT NULL, + kind TEXT NOT NULL, + line INTEGER, + metadata TEXT, + provenance TEXT NOT NULL, + confidence REAL NOT NULL DEFAULT 1.0, + created_at INTEGER NOT NULL, + FOREIGN KEY (src_id) REFERENCES memory_nodes(id) ON DELETE CASCADE, + FOREIGN KEY (dst_id) REFERENCES memory_nodes(id) ON DELETE CASCADE +); + +CREATE INDEX IF NOT EXISTS idx_memory_edges_kind ON memory_edges(kind); +CREATE INDEX IF NOT EXISTS idx_memory_edges_src_kind ON memory_edges(src_id, kind); +CREATE INDEX IF NOT EXISTS idx_memory_edges_dst_kind ON memory_edges(dst_id, kind); +CREATE INDEX IF NOT EXISTS idx_memory_edges_provenance ON memory_edges(provenance); +CREATE UNIQUE INDEX IF NOT EXISTS uniq_memory_edges_triple + ON memory_edges(src_id, dst_id, kind, provenance); + +CREATE TABLE IF NOT EXISTS memory_files ( + path TEXT PRIMARY KEY, + content_hash TEXT NOT NULL, + size INTEGER NOT NULL, + modified_at INTEGER NOT NULL, + indexed_at INTEGER NOT NULL, + errors TEXT +); + +CREATE TABLE IF NOT EXISTS memory_unresolved_links ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + from_id TEXT NOT NULL, + target_name TEXT NOT NULL, + line INTEGER, + FOREIGN KEY (from_id) REFERENCES memory_nodes(id) ON DELETE CASCADE +); + +CREATE INDEX IF NOT EXISTS idx_unresolved_from ON memory_unresolved_links(from_id); +CREATE INDEX IF NOT EXISTS idx_unresolved_target ON memory_unresolved_links(target_name); + +CREATE VIRTUAL TABLE IF NOT EXISTS memory_fts USING fts5( + id, name, description, body_preview, + content='memory_nodes', + content_rowid='rowid' +); + +CREATE TRIGGER IF NOT EXISTS memory_nodes_ai AFTER INSERT ON memory_nodes BEGIN + INSERT INTO memory_fts(rowid, id, name, description, body_preview) + VALUES (NEW.rowid, NEW.id, NEW.name, NEW.description, NEW.body_preview); +END; + +CREATE TRIGGER IF NOT EXISTS memory_nodes_ad AFTER DELETE ON memory_nodes BEGIN + INSERT INTO memory_fts(memory_fts, rowid, id, name, description, body_preview) + VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.description, OLD.body_preview); +END; + +CREATE TRIGGER IF NOT EXISTS memory_nodes_au AFTER UPDATE ON memory_nodes BEGIN + INSERT INTO memory_fts(memory_fts, rowid, id, name, description, body_preview) + VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.description, OLD.body_preview); + INSERT INTO memory_fts(rowid, id, name, description, body_preview) + VALUES (NEW.rowid, NEW.id, NEW.name, NEW.description, NEW.body_preview); +END; diff --git a/crates/loopal-memory/src/store/types.rs b/crates/loopal-memory/src/store/types.rs new file mode 100644 index 00000000..dde69eb6 --- /dev/null +++ b/crates/loopal-memory/src/store/types.rs @@ -0,0 +1,136 @@ +use serde::{Deserialize, Serialize}; + +use loopal_error::MemoryGraphError; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum MemoryKind { + User, + Feedback, + Project, + Reference, + Index, +} + +impl MemoryKind { + pub fn as_str(&self) -> &'static str { + match self { + Self::User => "user", + Self::Feedback => "feedback", + Self::Project => "project", + Self::Reference => "reference", + Self::Index => "index", + } + } + + pub fn parse(s: &str) -> Result { + match s { + "user" => Ok(Self::User), + "feedback" => Ok(Self::Feedback), + "project" => Ok(Self::Project), + "reference" => Ok(Self::Reference), + "index" => Ok(Self::Index), + other => Err(MemoryGraphError::InvalidNodeKind(other.into())), + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum EdgeKind { + References, + ContainedIn, + SupersededBy, + DerivedFrom, + CoOccursSlug, + CoOccursToken, + Contradicts, +} + +impl EdgeKind { + pub fn as_str(&self) -> &'static str { + match self { + Self::References => "references", + Self::ContainedIn => "contained_in", + Self::SupersededBy => "superseded_by", + Self::DerivedFrom => "derived_from", + Self::CoOccursSlug => "co_occurs_slug", + Self::CoOccursToken => "co_occurs_token", + Self::Contradicts => "contradicts", + } + } + + pub fn parse(s: &str) -> Result { + match s { + "references" => Ok(Self::References), + "contained_in" => Ok(Self::ContainedIn), + "superseded_by" => Ok(Self::SupersededBy), + "derived_from" => Ok(Self::DerivedFrom), + "co_occurs_slug" => Ok(Self::CoOccursSlug), + "co_occurs_token" => Ok(Self::CoOccursToken), + "contradicts" => Ok(Self::Contradicts), + other => Err(MemoryGraphError::InvalidEdgeKind(other.into())), + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum Provenance { + Frontmatter, + InlineLink, + Index, + Synthesized, + UserStated, +} + +impl Provenance { + pub fn as_str(&self) -> &'static str { + match self { + Self::Frontmatter => "frontmatter", + Self::InlineLink => "inline-link", + Self::Index => "index", + Self::Synthesized => "synthesized", + Self::UserStated => "user-stated", + } + } + + pub fn parse(s: &str) -> Result { + match s { + "frontmatter" => Ok(Self::Frontmatter), + "inline-link" => Ok(Self::InlineLink), + "index" => Ok(Self::Index), + "synthesized" => Ok(Self::Synthesized), + "user-stated" => Ok(Self::UserStated), + other => Err(MemoryGraphError::InvalidProvenance(other.into())), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MemoryNode { + pub id: String, + pub kind: MemoryKind, + pub name: String, + pub description: Option, + pub file_path: String, + pub body_preview: String, + pub created_at: i64, + pub updated_at: i64, + pub ttl_days: Option, + pub content_hash: String, + pub indexed_at: i64, +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MemoryEdge { + pub id: Option, + pub src_id: String, + pub dst_id: String, + pub kind: EdgeKind, + pub line: Option, + pub metadata: Option, + pub provenance: Provenance, + pub confidence: f32, + pub created_at: i64, +} diff --git a/crates/loopal-memory/src/sync/init.rs b/crates/loopal-memory/src/sync/init.rs new file mode 100644 index 00000000..0dbb903c --- /dev/null +++ b/crates/loopal-memory/src/sync/init.rs @@ -0,0 +1,120 @@ +use std::collections::HashSet; +use std::path::Path; +use std::time::SystemTime; + +use chrono::Utc; +use loopal_error::MemoryGraphError; +use walkdir::WalkDir; + +use crate::extract::extract_file; +use crate::store::MemoryGraph; +use crate::store::types::{MemoryEdge, MemoryNode}; +use crate::sync::{is_indexable_md, persist_extraction, relative_path}; +use crate::synthesize; + +pub struct InitStats { + pub files_scanned: usize, + pub files_skipped: usize, + pub nodes_indexed: usize, + pub edges_indexed: usize, + pub errors: Vec<(String, String)>, +} + +pub async fn scan_directory( + graph: &MemoryGraph, + dir: &Path, +) -> Result { + let mut stats = InitStats { + files_scanned: 0, + files_skipped: 0, + nodes_indexed: 0, + edges_indexed: 0, + errors: Vec::new(), + }; + + if !dir.exists() { + return Ok(stats); + } + + let mut nodes_to_insert: Vec = Vec::new(); + let mut edges_to_insert: Vec = Vec::new(); + let mut indexed_now: Vec<(String, String, i64, i64, i64)> = Vec::new(); + let now = Utc::now().timestamp_millis(); + + for entry in WalkDir::new(dir).into_iter().filter_map(|e| e.ok()) { + let path = entry.path(); + if !path.is_file() || !is_indexable_md(path) { + continue; + } + + let rel = relative_path(dir, path); + let meta = match entry.metadata() { + Ok(m) => m, + Err(e) => { + stats.errors.push((rel, e.to_string())); + continue; + } + }; + let size = meta.len() as i64; + let modified_at = meta + .modified() + .ok() + .and_then(|t| t.duration_since(SystemTime::UNIX_EPOCH).ok()) + .map(|d| d.as_millis() as i64) + .unwrap_or(0); + + if let Ok(Some(cache)) = graph.get_file_cache(&rel).await + && cache.modified_at == modified_at + && cache.size == size + { + stats.files_skipped += 1; + continue; + } + + stats.files_scanned += 1; + match tokio::fs::read_to_string(path).await { + Ok(content) => { + let result = extract_file(&rel, &content); + if let Some(node) = result.nodes.first() { + indexed_now.push(( + rel.clone(), + node.content_hash.clone(), + size, + modified_at, + now, + )); + } + nodes_to_insert.extend(result.nodes); + edges_to_insert.extend(result.edges); + for err in result.errors { + stats.errors.push((rel.clone(), err.to_string())); + } + } + Err(e) => { + stats.errors.push((rel, e.to_string())); + } + } + } + + let known_ids: HashSet = nodes_to_insert.iter().map(|n| n.id.clone()).collect(); + let batch = crate::extract::ExtractionResult { + nodes: nodes_to_insert, + edges: edges_to_insert, + unresolved: Vec::new(), + errors: Vec::new(), + }; + let p = persist_extraction(graph, batch, None, &known_ids).await?; + stats.nodes_indexed = p.nodes_indexed; + stats.edges_indexed = p.edges_indexed; + + for (path, hash, size, modified_at, indexed_at) in indexed_now { + let _ = graph + .upsert_file_cache(&path, &hash, size, modified_at, indexed_at) + .await; + } + + if stats.nodes_indexed > 0 { + synthesize::run_all(graph).await?; + } + Ok(stats) +} diff --git a/crates/loopal-memory/src/sync/mod.rs b/crates/loopal-memory/src/sync/mod.rs new file mode 100644 index 00000000..30a4e605 --- /dev/null +++ b/crates/loopal-memory/src/sync/mod.rs @@ -0,0 +1,30 @@ +pub mod init; +pub mod persist; +pub mod subsystem; +pub mod watcher; + +use std::path::{Path, PathBuf}; + +pub use init::{InitStats, scan_directory}; +pub use loopal_error::MemorySubsystemBootstrapError; +pub use persist::{persist_extraction, relative_path}; +pub use subsystem::MemorySubsystem; +pub use watcher::{WatcherHandle, watch}; + +pub const MEMORY_INDEX_FILE_NAME: &str = "MEMORY.md"; + +pub fn memory_index_path(memory_dir: &Path) -> PathBuf { + memory_dir.join(MEMORY_INDEX_FILE_NAME) +} + +pub fn is_indexable_md(path: &Path) -> bool { + if path.extension().and_then(|s| s.to_str()) != Some("md") { + return false; + } + if let Some(name) = path.file_name().and_then(|s| s.to_str()) + && name.eq_ignore_ascii_case(MEMORY_INDEX_FILE_NAME) + { + return false; + } + true +} diff --git a/crates/loopal-memory/src/sync/persist.rs b/crates/loopal-memory/src/sync/persist.rs new file mode 100644 index 00000000..922b4137 --- /dev/null +++ b/crates/loopal-memory/src/sync/persist.rs @@ -0,0 +1,80 @@ +use std::collections::HashSet; +use std::path::Path; + +use loopal_error::MemoryGraphError; + +use crate::extract::ExtractionResult; +use crate::store::MemoryGraph; +use crate::store::queries_edge; +use crate::store::queries_node; + +pub struct PersistStats { + pub nodes_indexed: usize, + pub edges_indexed: usize, +} + +pub fn relative_path(base: &Path, path: &Path) -> String { + match path.strip_prefix(base) { + Ok(rel) => rel.to_string_lossy().into_owned(), + Err(_) => { + tracing::warn!( + base = %base.display(), + path = %path.display(), + "relative_path: path is not under base — caller must canonicalize both" + ); + path.to_string_lossy().into_owned() + } + } +} + +pub async fn persist_extraction( + graph: &MemoryGraph, + result: ExtractionResult, + clean_outgoing_for: Option<&str>, + extra_known_ids: &HashSet, +) -> Result { + let clean_owned = clean_outgoing_for.map(|s| s.to_string()); + let extra_owned = extra_known_ids.clone(); + + graph + .db + .with_conn_mut(move |conn| { + let tx = conn.transaction()?; + let mut stats = PersistStats { + nodes_indexed: 0, + edges_indexed: 0, + }; + + if let Some(slug) = clean_owned { + queries_edge::delete_outgoing(&tx, &slug)?; + } + + let mut known_ids: HashSet = extra_owned; + for n in &result.nodes { + known_ids.insert(n.id.clone()); + } + + for node in result.nodes { + queries_node::upsert(&tx, &node)?; + stats.nodes_indexed += 1; + } + for edge in result.edges { + if !known_ids.contains(&edge.dst_id) + && queries_node::get(&tx, &edge.dst_id)?.is_none() + { + continue; + } + if !known_ids.contains(&edge.src_id) + && queries_node::get(&tx, &edge.src_id)?.is_none() + { + continue; + } + queries_edge::insert(&tx, &edge)?; + stats.edges_indexed += 1; + } + + tx.commit()?; + Ok(stats) + }) + .await +} diff --git a/crates/loopal-memory/src/sync/subsystem.rs b/crates/loopal-memory/src/sync/subsystem.rs new file mode 100644 index 00000000..e0e002ad --- /dev/null +++ b/crates/loopal-memory/src/sync/subsystem.rs @@ -0,0 +1,107 @@ +use std::path::PathBuf; +use std::sync::Arc; + +use loopal_error::MemorySubsystemBootstrapError; + +use crate::event_log::{EventLogWriter, fold_events, run_gc}; +use crate::render::render_memory_md; +use crate::store::MemoryGraph; +use crate::sync::init::scan_directory; +use crate::sync::memory_index_path; +use crate::sync::watcher::{WatcherHandle, watch}; + +const INDEX_DB_NAME: &str = "memory.db"; + +pub struct MemorySubsystem { + graph: Arc, + _watcher: Option, +} + +impl MemorySubsystem { + pub fn new(graph: Arc, watcher: Option) -> Self { + Self { + graph, + _watcher: watcher, + } + } + + pub fn graph(&self) -> Arc { + self.graph.clone() + } + + pub async fn bootstrap( + memory_dir: PathBuf, + session_dir: PathBuf, + events_dir: PathBuf, + session_id: String, + gc_compress_after_days: u32, + gc_archive_after_days: u32, + ) -> Result, MemorySubsystemBootstrapError> { + let memory_dir = memory_dir + .canonicalize() + .map_err(MemorySubsystemBootstrapError::CanonicalizeMemoryDir)?; + tokio::fs::create_dir_all(&session_dir) + .await + .map_err(MemorySubsystemBootstrapError::CreateSessionDir)?; + if let Err(e) = tokio::fs::create_dir_all(&events_dir).await { + tracing::warn!(error = %e, path = %events_dir.display(), "memory-events dir create failed; events will be skipped"); + } + let db_path = session_dir.join(INDEX_DB_NAME); + let mut graph = MemoryGraph::open(&db_path)?; + + if events_dir.exists() { + let gc = run_gc(&events_dir, gc_compress_after_days, gc_archive_after_days); + if gc.compressed + gc.archived + gc.errors > 0 { + tracing::info!( + events_dir = %events_dir.display(), + compressed = gc.compressed, + archived = gc.archived, + errors = gc.errors, + "memory event log gc complete" + ); + } + let stats = fold_events(&events_dir); + let stats_count = stats.len(); + graph.install_recall_stats(stats); + tracing::info!( + events_dir = %events_dir.display(), + nodes_with_stats = stats_count, + "memory event log fold complete" + ); + } + let event_log = Arc::new(EventLogWriter::new(events_dir.clone(), session_id)); + graph.set_event_log(event_log); + + let graph = Arc::new(graph); + + match scan_directory(&graph, &memory_dir).await { + Ok(stats) => tracing::info!( + files = stats.files_scanned, + nodes = stats.nodes_indexed, + edges = stats.edges_indexed, + errors = stats.errors.len(), + "memory graph initial scan complete" + ), + Err(e) => { + tracing::warn!(error = %e, "memory initial scan failed; recall tool still registered") + } + } + + if let Ok(md) = render_memory_md(&graph).await { + let path = memory_index_path(&memory_dir); + if let Err(e) = tokio::fs::write(&path, md).await { + tracing::warn!(error = %e, path = %path.display(), "failed to write rendered memory index"); + } + } + + let watcher_handle = match watch(graph.clone(), memory_dir.clone()) { + Ok(handle) => Some(handle), + Err(e) => { + tracing::warn!(error = %e, "memory watcher failed to start; init scan still effective"); + None + } + }; + + Ok(Arc::new(Self::new(graph, watcher_handle))) + } +} diff --git a/crates/loopal-memory/src/sync/watcher/mod.rs b/crates/loopal-memory/src/sync/watcher/mod.rs new file mode 100644 index 00000000..5b6138e9 --- /dev/null +++ b/crates/loopal-memory/src/sync/watcher/mod.rs @@ -0,0 +1,180 @@ +mod rename; +mod setup; + +use std::collections::HashSet; +use std::path::{Path, PathBuf}; +use std::sync::Arc; +use std::time::{Duration, Instant}; + +use loopal_error::MemoryGraphError; +use tokio::sync::mpsc; +use tracing::warn; + +use crate::extract::{extract_file, slug_from_path}; +use crate::render::render_memory_md; +use crate::store::MemoryGraph; +use crate::sync::{is_indexable_md, memory_index_path, persist_extraction, relative_path}; +use crate::synthesize; + +const SYNTH_THROTTLE: Duration = Duration::from_secs(5); + +pub use setup::{WatcherHandle, watch}; + +pub(crate) async fn process_events( + graph: Arc, + base: PathBuf, + mut rx: mpsc::UnboundedReceiver>, +) { + let mut last_synth = Instant::now() + .checked_sub(SYNTH_THROTTLE) + .unwrap_or_else(Instant::now); + while let Some(paths) = rx.recv().await { + let any_change = handle_batch(&graph, &base, &paths).await; + if !any_change { + continue; + } + if last_synth.elapsed() >= SYNTH_THROTTLE { + if let Err(e) = synthesize::run_all(&graph).await { + warn!(error = %e, "watcher: synthesize batch failed"); + } + last_synth = Instant::now(); + } + rerender_index(&graph, &base).await; + } +} + +async fn handle_batch(graph: &MemoryGraph, base: &Path, paths: &[PathBuf]) -> bool { + let (deletes, updates) = classify_paths(base, paths).await; + let renames = rename::detect(graph, base, &deletes, &updates).await; + + let renamed_old: HashSet<&PathBuf> = renames.iter().map(|(d, _)| d).collect(); + let renamed_new: HashSet<&PathBuf> = renames.iter().map(|(_, u)| u).collect(); + + let mut any_change = false; + + let batch_slugs: HashSet = updates + .iter() + .filter(|p| !renamed_new.contains(p)) + .map(|p| slug_from_path(&relative_path(base, p))) + .collect(); + + for (old_path, new_path) in &renames { + match handle_rename(graph, base, old_path, new_path).await { + Ok(true) => any_change = true, + Ok(false) => { + if let Ok(true) = handle_delete(graph, base, old_path).await { + any_change = true; + } + if let Ok(true) = handle_update(graph, base, new_path, &batch_slugs).await { + any_change = true; + } + } + Err(e) => warn!(error = %e, path = %new_path.display(), "watcher: rename failed"), + } + } + + for path in &deletes { + if renamed_old.contains(path) { + continue; + } + match handle_delete(graph, base, path).await { + Ok(true) => any_change = true, + Ok(false) => {} + Err(e) => warn!(error = %e, path = %path.display(), "watcher: delete failed"), + } + } + + for path in &updates { + if renamed_new.contains(path) { + continue; + } + match handle_update(graph, base, path, &batch_slugs).await { + Ok(true) => any_change = true, + Ok(false) => {} + Err(e) => warn!(error = %e, path = %path.display(), "watcher: update failed"), + } + } + + any_change +} + +async fn classify_paths(base: &Path, paths: &[PathBuf]) -> (Vec, Vec) { + let mut deletes = Vec::new(); + let mut updates = Vec::new(); + for path in paths { + if is_memory_index_path(base, path) { + continue; + } + if !is_indexable_md(path) { + continue; + } + if path.exists() { + updates.push(path.clone()); + } else { + deletes.push(path.clone()); + } + } + (deletes, updates) +} + +async fn handle_rename( + graph: &MemoryGraph, + base: &Path, + old_path: &Path, + new_path: &Path, +) -> Result { + let old_rel = relative_path(base, old_path); + let new_rel = relative_path(base, new_path); + let old_slug = slug_from_path(&old_rel); + let new_slug = slug_from_path(&new_rel); + graph.rename_node(&old_slug, &new_slug, &new_rel).await +} + +async fn handle_delete( + graph: &MemoryGraph, + base: &Path, + path: &Path, +) -> Result { + let rel = relative_path(base, path); + let slug = slug_from_path(&rel); + let _ = graph.delete_file_cache(&rel).await; + graph.delete_node(&slug).await +} + +async fn handle_update( + graph: &MemoryGraph, + base: &Path, + path: &Path, + batch_known: &HashSet, +) -> Result { + let rel = relative_path(base, path); + let content = match tokio::fs::read_to_string(path).await { + Ok(c) => c, + Err(e) => { + warn!(error = %e, path = %rel, "watcher: read failed"); + return Ok(false); + } + }; + let result = extract_file(&rel, &content); + let slug = result.nodes.first().map(|n| n.id.clone()); + persist_extraction(graph, result, slug.as_deref(), batch_known).await?; + Ok(true) +} + +fn is_memory_index_path(base: &Path, path: &Path) -> bool { + memory_index_path(base) == path +} + +async fn rerender_index(graph: &MemoryGraph, base: &Path) { + let md = match render_memory_md(graph).await { + Ok(s) => s, + Err(e) => { + warn!(error = %e, "watcher: render_memory_md failed"); + return; + } + }; + let path = memory_index_path(base); + if let Err(e) = tokio::fs::write(&path, md).await { + warn!(error = %e, path = %path.display(), "watcher: write MEMORY.md failed"); + } +} diff --git a/crates/loopal-memory/src/sync/watcher/rename.rs b/crates/loopal-memory/src/sync/watcher/rename.rs new file mode 100644 index 00000000..e7795a89 --- /dev/null +++ b/crates/loopal-memory/src/sync/watcher/rename.rs @@ -0,0 +1,49 @@ +use std::collections::{HashMap, HashSet}; +use std::path::{Path, PathBuf}; + +use sha2::{Digest, Sha256}; + +use crate::extract::slug_from_path; +use crate::store::MemoryGraph; +use crate::sync::relative_path; + +pub async fn detect( + graph: &MemoryGraph, + base: &Path, + deletes: &[PathBuf], + updates: &[PathBuf], +) -> Vec<(PathBuf, PathBuf)> { + if deletes.is_empty() || updates.is_empty() { + return Vec::new(); + } + + let mut new_hashes: HashMap = HashMap::new(); + for path in updates { + if let Ok(content) = tokio::fs::read_to_string(path).await { + new_hashes.insert(sha256_hex(&content), path.clone()); + } + } + + let mut renames = Vec::new(); + let mut consumed: HashSet = HashSet::new(); + for old_path in deletes { + let rel = relative_path(base, old_path); + let old_slug = slug_from_path(&rel); + let Ok(Some(old_node)) = graph.get_node(&old_slug).await else { + continue; + }; + if let Some(new_path) = new_hashes.get(&old_node.content_hash) + && !consumed.contains(new_path) + { + renames.push((old_path.clone(), new_path.clone())); + consumed.insert(new_path.clone()); + } + } + renames +} + +fn sha256_hex(s: &str) -> String { + let mut hasher = Sha256::new(); + hasher.update(s.as_bytes()); + format!("{:x}", hasher.finalize()) +} diff --git a/crates/loopal-memory/src/sync/watcher/setup.rs b/crates/loopal-memory/src/sync/watcher/setup.rs new file mode 100644 index 00000000..ec74b8a2 --- /dev/null +++ b/crates/loopal-memory/src/sync/watcher/setup.rs @@ -0,0 +1,61 @@ +use std::path::PathBuf; +use std::sync::{Arc, Mutex}; +use std::time::Duration; + +use loopal_error::MemoryGraphError; +use notify_debouncer_mini::{DebounceEventResult, new_debouncer, notify::RecursiveMode}; +use tokio::sync::mpsc; +use tokio::task::JoinHandle; +use tracing::warn; + +use crate::store::MemoryGraph; +use crate::sync::watcher::process_events; + +const DEBOUNCE_MS: u64 = 500; + +pub struct WatcherHandle { + _debouncer: Mutex>, + pub task: JoinHandle<()>, +} + +pub fn watch(graph: Arc, dir: PathBuf) -> Result { + let (tx, rx) = mpsc::unbounded_channel::>(); + let mut debouncer = new_debouncer( + Duration::from_millis(DEBOUNCE_MS), + move |res: DebounceEventResult| match res { + Ok(events) => { + let paths: Vec = events + .into_iter() + .filter(|e| { + e.path + .extension() + .and_then(|s| s.to_str()) + .map(|s| s == "md") + .unwrap_or(false) + }) + .map(|e| e.path) + .collect(); + if !paths.is_empty() { + let _ = tx.send(paths); + } + } + Err(err) => { + warn!(error = %err, "watcher error"); + } + }, + ) + .map_err(|e| MemoryGraphError::Watcher(format!("init: {e}")))?; + + debouncer + .watcher() + .watch(&dir, RecursiveMode::Recursive) + .map_err(|e| MemoryGraphError::Watcher(format!("watch: {e}")))?; + + let base = dir.clone(); + let task = tokio::spawn(async move { process_events(graph, base, rx).await }); + + Ok(WatcherHandle { + _debouncer: Mutex::new(Box::new(debouncer)), + task, + }) +} diff --git a/crates/loopal-memory/src/synthesize/derive_chain.rs b/crates/loopal-memory/src/synthesize/derive_chain.rs new file mode 100644 index 00000000..e7111f5c --- /dev/null +++ b/crates/loopal-memory/src/synthesize/derive_chain.rs @@ -0,0 +1,46 @@ +use std::collections::HashMap; + +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_edge; +use crate::store::queries_node; +use crate::store::types::{EdgeKind, MemoryEdge, MemoryKind, Provenance}; + +pub fn synthesize_sync(conn: &Connection, now: i64) -> Result { + let nodes = queries_node::list(conn, None)?; + let kind_by_id: HashMap = + nodes.iter().map(|n| (n.id.clone(), n.kind)).collect(); + + let mut added = 0usize; + for src in nodes.iter().filter(|n| n.kind == MemoryKind::Project) { + let outgoing = queries_edge::get_outgoing(conn, &src.id)?; + for e in outgoing { + if e.kind != EdgeKind::References { + continue; + } + let target_kind = match kind_by_id.get(&e.dst_id) { + Some(k) => *k, + None => continue, + }; + if target_kind != MemoryKind::User { + continue; + } + let edge = MemoryEdge { + id: None, + src_id: src.id.clone(), + dst_id: e.dst_id.clone(), + kind: EdgeKind::DerivedFrom, + line: None, + metadata: Some(serde_json::json!({ "synthesizer": "derive_chain" })), + provenance: Provenance::Synthesized, + confidence: 1.0, + created_at: now, + }; + queries_edge::insert(conn, &edge)?; + added += 1; + } + } + Ok(added) +} diff --git a/crates/loopal-memory/src/synthesize/mod.rs b/crates/loopal-memory/src/synthesize/mod.rs new file mode 100644 index 00000000..699c24c8 --- /dev/null +++ b/crates/loopal-memory/src/synthesize/mod.rs @@ -0,0 +1,49 @@ +pub mod derive_chain; +pub mod slug_cluster; +pub mod supersede; +pub mod tfidf; +pub mod token_cluster; + +use chrono::Utc; + +use loopal_error::MemoryGraphError; + +use crate::store::MemoryGraph; +use crate::store::queries_edge; +use crate::store::types::Provenance; + +pub struct SynthesisStats { + pub edges_added: usize, + pub edges_removed: usize, + pub by_synthesizer: Vec<(String, usize)>, +} + +pub async fn run_all(graph: &MemoryGraph) -> Result { + let now = Utc::now().timestamp_millis(); + + graph + .db + .with_conn_mut(move |conn| { + let tx = conn.transaction()?; + + let removed = queries_edge::delete_by_provenance(&tx, Provenance::Synthesized)?; + let slug = slug_cluster::synthesize_sync(&tx, now)?; + let derive = derive_chain::synthesize_sync(&tx, now)?; + let sup = supersede::synthesize_sync(&tx, now)?; + let tokens = token_cluster::synthesize_sync(&tx, now)?; + + tx.commit()?; + + Ok(SynthesisStats { + edges_added: slug + derive + sup + tokens, + edges_removed: removed, + by_synthesizer: vec![ + ("slug_cluster".into(), slug), + ("derive_chain".into(), derive), + ("supersede".into(), sup), + ("token_cluster".into(), tokens), + ], + }) + }) + .await +} diff --git a/crates/loopal-memory/src/synthesize/slug_cluster.rs b/crates/loopal-memory/src/synthesize/slug_cluster.rs new file mode 100644 index 00000000..b05e32ed --- /dev/null +++ b/crates/loopal-memory/src/synthesize/slug_cluster.rs @@ -0,0 +1,69 @@ +use std::collections::HashMap; + +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_edge; +use crate::store::queries_node; +use crate::store::types::{EdgeKind, MemoryEdge, Provenance}; + +const MIN_CLUSTER_SIZE: usize = 2; + +pub fn synthesize_sync(conn: &Connection, now: i64) -> Result { + let nodes = queries_node::list(conn, None)?; + let clusters = group_by_prefix(&nodes.iter().map(|n| n.id.clone()).collect::>()); + + let mut added = 0usize; + for (_prefix, ids) in clusters { + if ids.len() < MIN_CLUSTER_SIZE { + continue; + } + // confidence 自然衰减 1/(N-1),大簇 (N≥5) 自动 <0.3 被默认 BFS min_confidence + // 过滤,避免跨主题噪声;小簇 (N=2..4) 保留紧密语义边。anchor mode 需要保留 + // 大簇内的连接性,靠 RecallParams.min_confidence 单独下调(见 recall.rs)。 + let conf = if ids.len() == 1 { + 1.0 + } else { + 1.0 / (ids.len() - 1) as f32 + }; + for i in 0..ids.len() { + for j in (i + 1)..ids.len() { + let edge = MemoryEdge { + id: None, + src_id: ids[i].clone(), + dst_id: ids[j].clone(), + kind: EdgeKind::CoOccursSlug, + line: None, + metadata: Some(serde_json::json!({ "synthesizer": "slug_cluster" })), + provenance: Provenance::Synthesized, + confidence: conf, + created_at: now, + }; + queries_edge::insert(conn, &edge)?; + added += 1; + } + } + } + Ok(added) +} + +pub fn group_by_prefix(ids: &[String]) -> HashMap> { + let mut map: HashMap> = HashMap::new(); + for id in ids { + if let Some(prefix) = first_prefix_segment(id) { + map.entry(prefix).or_default().push(id.clone()); + } + } + map.retain(|_, v| v.len() >= MIN_CLUSTER_SIZE); + map +} + +fn first_prefix_segment(id: &str) -> Option { + let s = id.trim(); + let end = s.find('-')?; + if end == 0 { + return None; + } + Some(s[..end].to_string()) +} diff --git a/crates/loopal-memory/src/synthesize/supersede.rs b/crates/loopal-memory/src/synthesize/supersede.rs new file mode 100644 index 00000000..5f737092 --- /dev/null +++ b/crates/loopal-memory/src/synthesize/supersede.rs @@ -0,0 +1,49 @@ +use std::sync::LazyLock; + +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; +use regex::Regex; + +use crate::store::queries_edge; +use crate::store::queries_node; +use crate::store::types::{EdgeKind, MemoryEdge, Provenance}; + +static SUPERSEDE_RE: LazyLock = LazyLock::new(|| { + Regex::new(r"(?i:supersedes|replaces|deprecates|取代|废弃)\s*\[\[((?-i:[a-z][a-z0-9_-]*))\]\]") + .unwrap() +}); + +pub fn synthesize_sync(conn: &Connection, now: i64) -> Result { + let nodes = queries_node::list(conn, None)?; + let known_ids: std::collections::HashSet = nodes.iter().map(|n| n.id.clone()).collect(); + let mut added = 0usize; + for n in &nodes { + for cap in SUPERSEDE_RE.captures_iter(&n.body_preview) { + let target = match cap.get(1) { + Some(m) => m.as_str().to_string(), + None => continue, + }; + if target == n.id { + continue; + } + if !known_ids.contains(&target) { + continue; + } + let edge = MemoryEdge { + id: None, + src_id: target, + dst_id: n.id.clone(), + kind: EdgeKind::SupersededBy, + line: None, + metadata: Some(serde_json::json!({ "synthesizer": "supersede" })), + provenance: Provenance::Synthesized, + confidence: 1.0, + created_at: now, + }; + queries_edge::insert(conn, &edge)?; + added += 1; + } + } + Ok(added) +} diff --git a/crates/loopal-memory/src/synthesize/tfidf.rs b/crates/loopal-memory/src/synthesize/tfidf.rs new file mode 100644 index 00000000..51fa78a4 --- /dev/null +++ b/crates/loopal-memory/src/synthesize/tfidf.rs @@ -0,0 +1,101 @@ +use std::collections::{HashMap, HashSet}; +use std::sync::LazyLock; + +use unicode_segmentation::UnicodeSegmentation; + +static STOPWORDS_EN: &[&str] = &[ + "the", "a", "an", "and", "or", "but", "if", "then", "else", "of", "to", "in", "on", "at", "by", + "for", "with", "from", "this", "that", "these", "those", "is", "are", "was", "were", "be", + "been", "being", "have", "has", "had", "do", "does", "did", "will", "would", "could", "should", + "may", "might", "must", "can", "not", "no", "nor", "so", "as", "it", "its", "they", "them", + "their", "you", "your", "we", "our", "us", "i", "me", "my", "over", "under", "into", "onto", + "out", "up", "down", "off", +]; + +static STOPWORDS_ZH: &[&str] = &[ + "的", "了", "和", "是", "在", "我", "有", "不", "也", "都", "就", "要", "这", "那", "你", "他", + "她", "它", "们", "上", "下", "中", "对", "与", "为", "等", "及", "或", "但", "而", "如", "于", + "被", "由", "把", "从", "到", "之", +]; + +static STOPWORD_SET: LazyLock> = LazyLock::new(|| { + STOPWORDS_EN + .iter() + .chain(STOPWORDS_ZH.iter()) + .copied() + .collect() +}); + +fn meets_min_len(token: &str) -> bool { + let chars = token.chars().count(); + if chars == 0 { + return false; + } + if token.is_ascii() { chars >= 2 } else { true } +} + +pub fn tokenize(text: &str) -> Vec { + text.unicode_words() + .map(|w| w.to_lowercase()) + .filter(|w| meets_min_len(w)) + .filter(|w| !STOPWORD_SET.contains(w.as_str())) + .collect() +} + +pub fn term_frequency(tokens: &[String]) -> HashMap { + let mut tf: HashMap = HashMap::new(); + for t in tokens { + *tf.entry(t.clone()).or_insert(0.0) += 1.0; + } + let n = tokens.len() as f32; + if n > 0.0 { + for v in tf.values_mut() { + *v /= n; + } + } + tf +} + +pub fn document_frequency(per_doc_tokens: &[Vec]) -> HashMap { + let mut df: HashMap = HashMap::new(); + for tokens in per_doc_tokens { + let unique: HashSet<&String> = tokens.iter().collect(); + for t in unique { + *df.entry(t.clone()).or_insert(0) += 1; + } + } + df +} + +pub fn tf_idf_vector( + tf: &HashMap, + df: &HashMap, + n_docs: usize, +) -> HashMap { + let mut out = HashMap::with_capacity(tf.len()); + let n = n_docs as f32; + for (term, &freq) in tf { + let doc_freq = *df.get(term).unwrap_or(&1) as f32; + let idf = ((n + 1.0) / (doc_freq + 1.0)).ln(); + out.insert(term.clone(), freq * idf); + } + out +} + +pub fn cosine_similarity(a: &HashMap, b: &HashMap) -> f32 { + if a.is_empty() || b.is_empty() { + return 0.0; + } + let mut dot = 0.0_f32; + for (term, va) in a { + if let Some(vb) = b.get(term) { + dot += va * vb; + } + } + let norm_a: f32 = a.values().map(|v| v * v).sum::().sqrt(); + let norm_b: f32 = b.values().map(|v| v * v).sum::().sqrt(); + if norm_a == 0.0 || norm_b == 0.0 { + return 0.0; + } + dot / (norm_a * norm_b) +} diff --git a/crates/loopal-memory/src/synthesize/token_cluster.rs b/crates/loopal-memory/src/synthesize/token_cluster.rs new file mode 100644 index 00000000..6ecc54c0 --- /dev/null +++ b/crates/loopal-memory/src/synthesize/token_cluster.rs @@ -0,0 +1,60 @@ +use rusqlite::Connection; + +use loopal_error::MemoryGraphError; + +use crate::store::queries_edge; +use crate::store::queries_node; +use crate::store::types::{EdgeKind, MemoryEdge, Provenance}; +use crate::synthesize::tfidf::{ + cosine_similarity, document_frequency, term_frequency, tf_idf_vector, tokenize, +}; + +const SIMILARITY_THRESHOLD: f32 = 0.3; +const MAX_NODES_FOR_TOKEN_CLUSTER: usize = 800; + +pub fn synthesize_sync(conn: &Connection, now: i64) -> Result { + let nodes = queries_node::list(conn, None)?; + if nodes.len() < 2 { + return Ok(0); + } + if nodes.len() > MAX_NODES_FOR_TOKEN_CLUSTER { + return Ok(0); + } + + let per_doc_tokens: Vec> = nodes + .iter() + .map(|n| tokenize(&format!("{} {}", n.name, n.body_preview))) + .collect(); + let df = document_frequency(&per_doc_tokens); + let vectors: Vec<_> = per_doc_tokens + .iter() + .map(|tokens| { + let tf = term_frequency(tokens); + tf_idf_vector(&tf, &df, nodes.len()) + }) + .collect(); + + let mut added = 0usize; + for i in 0..nodes.len() { + for j in (i + 1)..nodes.len() { + let sim = cosine_similarity(&vectors[i], &vectors[j]); + if sim < SIMILARITY_THRESHOLD { + continue; + } + let edge = MemoryEdge { + id: None, + src_id: nodes[i].id.clone(), + dst_id: nodes[j].id.clone(), + kind: EdgeKind::CoOccursToken, + line: None, + metadata: Some(serde_json::json!({ "synthesizer": "token_cluster" })), + provenance: Provenance::Synthesized, + confidence: sim, + created_at: now, + }; + queries_edge::insert(conn, &edge)?; + added += 1; + } + } + Ok(added) +} diff --git a/crates/loopal-memory/src/tools/importance.rs b/crates/loopal-memory/src/tools/importance.rs new file mode 100644 index 00000000..f0ee3ff2 --- /dev/null +++ b/crates/loopal-memory/src/tools/importance.rs @@ -0,0 +1,141 @@ +use std::sync::Arc; + +use async_trait::async_trait; +use loopal_error::{LoopalError, ToolError}; +use loopal_tool_api::{PermissionLevel, Tool, ToolContext, ToolResult}; +use serde_json::{Value, json}; + +use crate::event_log::EventKind; +use crate::store::MemoryGraph; + +const IMPORTANCE_MIN: i64 = 1; +const IMPORTANCE_MAX: i64 = 10; + +pub struct MemoryImportanceTool { + graph: Arc, +} + +impl MemoryImportanceTool { + pub fn new(graph: Arc) -> Self { + Self { graph } + } +} + +#[async_trait] +impl Tool for MemoryImportanceTool { + fn name(&self) -> &str { + "memory_set_importance" + } + + fn description(&self) -> &str { + "Set the importance (salience weight) of a memory node — boosts its \ + ranking in future memory_recall calls. Use when the user signals strong \ + preference, repeated concern, or an incident the system must remember. \ + Importance 1-10; 1 is a mild bias, 10 is dominant (overrides weak BFS \ + ranking). Tags categorize the bias; note is for human-readable rationale. \ + Effect persists across sessions via the event log." + } + + fn parameters_schema(&self) -> Value { + json!({ + "type": "object", + "required": ["node", "importance"], + "properties": { + "node": { + "type": "string", + "description": "Memory slug to tag (must exist in .loopal/memory/.md)" + }, + "importance": { + "type": "integer", + "minimum": IMPORTANCE_MIN, + "maximum": IMPORTANCE_MAX, + "description": "1=mild bias, 10=dominant override" + }, + "tags": { + "type": "array", + "items": { "type": "string" }, + "description": "Categorical tags (e.g. 'critical', 'incident', 'user-preference')" + }, + "note": { + "type": "string", + "description": "Human-readable rationale for the tag" + } + } + }) + } + + fn permission(&self) -> PermissionLevel { + PermissionLevel::Write + } + + fn secret_eligible_params(&self) -> &'static [&'static str] { + &[] + } + + async fn execute(&self, input: Value, _ctx: &ToolContext) -> Result { + let params = + parse_params(&input).map_err(|e| LoopalError::Tool(ToolError::InvalidInput(e)))?; + + self.graph.record_event(EventKind::ImportanceTag { + node: params.node.clone(), + importance: params.importance, + tags: params.tags, + note: params.note, + }); + + Ok(ToolResult::success(format!( + "Tagged `{}` with importance={}", + params.node, params.importance + ))) + } +} + +struct ImportanceParams { + node: String, + importance: i8, + tags: Vec, + note: Option, +} + +fn parse_params(input: &Value) -> Result { + let node = input + .get("node") + .and_then(|v| v.as_str()) + .filter(|s| !s.trim().is_empty()) + .ok_or_else(|| "missing or empty `node`".to_string())? + .to_string(); + + let importance_raw = input + .get("importance") + .and_then(|v| v.as_i64()) + .ok_or_else(|| "missing `importance` (integer)".to_string())?; + if !(IMPORTANCE_MIN..=IMPORTANCE_MAX).contains(&importance_raw) { + return Err(format!( + "`importance` must be in {IMPORTANCE_MIN}..={IMPORTANCE_MAX}, got {importance_raw}" + )); + } + let importance = importance_raw as i8; + + let tags: Vec = input + .get("tags") + .and_then(|v| v.as_array()) + .map(|arr| { + arr.iter() + .filter_map(|t| t.as_str().map(|s| s.to_string())) + .collect() + }) + .unwrap_or_default(); + + let note = input + .get("note") + .and_then(|v| v.as_str()) + .filter(|s| !s.trim().is_empty()) + .map(|s| s.to_string()); + + Ok(ImportanceParams { + node, + importance, + tags, + note, + }) +} diff --git a/crates/loopal-memory/src/tools/mod.rs b/crates/loopal-memory/src/tools/mod.rs new file mode 100644 index 00000000..e5f153d1 --- /dev/null +++ b/crates/loopal-memory/src/tools/mod.rs @@ -0,0 +1,5 @@ +pub mod importance; +pub mod recall; + +pub use importance::MemoryImportanceTool; +pub use recall::MemoryRecallTool; diff --git a/crates/loopal-memory/src/tools/recall.rs b/crates/loopal-memory/src/tools/recall.rs new file mode 100644 index 00000000..88a7ec46 --- /dev/null +++ b/crates/loopal-memory/src/tools/recall.rs @@ -0,0 +1,131 @@ +use std::sync::Arc; + +use async_trait::async_trait; +use loopal_error::{LoopalError, ToolError}; +use loopal_tool_api::{PermissionLevel, Tool, ToolContext, ToolResult}; +use serde_json::{Value, json}; + +use crate::graph::{RecallParams, format_recall, recall}; +use crate::store::MemoryGraph; + +pub struct MemoryRecallTool { + graph: Arc, +} + +impl MemoryRecallTool { + pub fn new(graph: Arc) -> Self { + Self { graph } + } +} + +#[async_trait] +impl Tool for MemoryRecallTool { + fn name(&self) -> &str { + "memory_recall" + } + + fn description(&self) -> &str { + "THE tool for memory lookup. Always use this — never Read .loopal/memory/*.md \ + files directly. Returns directly matching memories + bidirectional N-hop neighbors \ + + co-occurring suggestions + edge trail in ONE call. \ + Set depth=0 if you only need keyword matches. \ + Provide either `query` for FTS5 search or `anchor_names` to seed traversal from \ + specific slugs (or both)." + } + + fn parameters_schema(&self) -> Value { + json!({ + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Keyword query for FTS5 search across name/description/body" + }, + "anchor_names": { + "type": "array", + "items": { "type": "string" }, + "description": "Optional list of memory slugs to seed bidirectional BFS from" + }, + "max_results": { + "type": "integer", + "default": 12, + "minimum": 1, + "maximum": 50 + }, + "depth": { + "type": "integer", + "default": 2, + "minimum": 0, + "maximum": 5, + "description": "BFS depth around anchors (0 = anchors only, no traversal)" + }, + "include_synthesized": { + "type": "boolean", + "default": true, + "description": "Whether to include synthesized co-occurrence edges" + }, + "min_confidence": { + "type": "number", + "default": 0.3, + "minimum": 0.0, + "maximum": 1.0 + } + } + }) + } + + fn permission(&self) -> PermissionLevel { + PermissionLevel::ReadOnly + } + + fn secret_eligible_params(&self) -> &'static [&'static str] { + &[] + } + + async fn execute(&self, input: Value, _ctx: &ToolContext) -> Result { + let params = + parse_params(&input).map_err(|e| LoopalError::Tool(ToolError::InvalidInput(e)))?; + + if params.query.is_none() && params.anchor_names.is_empty() { + return Ok(ToolResult::error( + "Provide either `query` or `anchor_names`", + )); + } + + // reason: recall 失败(FTS syntax error / sqlite transient)应让 LLM 看到可重试的 + // ToolResult::error,不应当成 fatal 上抛 LoopalError 中断 agent loop。 + match recall(&self.graph, ¶ms).await { + Ok(result) => Ok(ToolResult::success(format_recall(&result))), + Err(e) => Ok(ToolResult::error(format!("memory_recall failed: {e}"))), + } + } +} + +fn parse_params(input: &Value) -> Result { + let mut p = RecallParams::default(); + if let Some(q) = input.get("query").and_then(|v| v.as_str()) + && !q.trim().is_empty() + { + p.query = Some(q.to_string()); + } + if let Some(names) = input.get("anchor_names").and_then(|v| v.as_array()) { + for n in names { + if let Some(s) = n.as_str() { + p.anchor_names.push(s.to_string()); + } + } + } + if let Some(n) = input.get("max_results").and_then(|v| v.as_u64()) { + p.max_results = n.clamp(1, 50) as usize; + } + if let Some(d) = input.get("depth").and_then(|v| v.as_u64()) { + p.depth = d.clamp(0, 5) as u32; + } + if let Some(b) = input.get("include_synthesized").and_then(|v| v.as_bool()) { + p.include_synthesized = b; + } + if let Some(c) = input.get("min_confidence").and_then(|v| v.as_f64()) { + p.min_confidence = c.clamp(0.0, 1.0) as f32; + } + Ok(p) +} diff --git a/crates/loopal-memory/tests/suite.rs b/crates/loopal-memory/tests/suite.rs index 9fb1cef6..6875f671 100644 --- a/crates/loopal-memory/tests/suite.rs +++ b/crates/loopal-memory/tests/suite.rs @@ -2,3 +2,71 @@ mod memory_observer_test; #[path = "suite/memory_tool_test.rs"] mod memory_tool_test; + +#[path = "suite/store_edge_case_test.rs"] +mod store_edge_case_test; +#[path = "suite/store_edge_test.rs"] +mod store_edge_test; +#[path = "suite/store_fts_test.rs"] +mod store_fts_test; +#[path = "suite/store_graph_filter_test.rs"] +mod store_graph_filter_test; +#[path = "suite/store_graph_test.rs"] +mod store_graph_test; +#[path = "suite/store_node_test.rs"] +mod store_node_test; +#[path = "suite/store_types_test.rs"] +mod store_types_test; + +#[path = "suite/extract_frontmatter_test.rs"] +mod extract_frontmatter_test; +#[path = "suite/extract_orchestrator_test.rs"] +mod extract_orchestrator_test; +#[path = "suite/extract_related_test.rs"] +mod extract_related_test; +#[path = "suite/extract_wikilink_test.rs"] +mod extract_wikilink_test; + +#[path = "suite/synth_derive_test.rs"] +mod synth_derive_test; +#[path = "suite/synth_slug_test.rs"] +mod synth_slug_test; + +#[path = "suite/importance_test.rs"] +mod importance_test; +#[path = "suite/recall_anchor_test.rs"] +mod recall_anchor_test; +#[path = "suite/recall_format_test.rs"] +mod recall_format_test; +#[path = "suite/recall_query_test.rs"] +mod recall_query_test; +#[path = "suite/recall_tool_test.rs"] +mod recall_tool_test; + +#[path = "suite/render_index_test.rs"] +mod render_index_test; +#[path = "suite/render_ranking_test.rs"] +mod render_ranking_test; + +#[path = "suite/associative_recall_integration_test.rs"] +mod associative_recall_integration_test; +#[path = "suite/candidates_test.rs"] +mod candidates_test; +#[path = "suite/event_log_gc_test.rs"] +mod event_log_gc_test; +#[path = "suite/event_log_recovery_test.rs"] +mod event_log_recovery_test; +#[path = "suite/event_log_test.rs"] +mod event_log_test; +#[path = "suite/file_cache_test.rs"] +mod file_cache_test; +#[path = "suite/memory_init_integration_test.rs"] +mod memory_init_integration_test; +#[path = "suite/rename_node_test.rs"] +mod rename_node_test; +#[path = "suite/sync_init_test.rs"] +mod sync_init_test; +#[path = "suite/synth_supersede_test.rs"] +mod synth_supersede_test; +#[path = "suite/synth_token_test.rs"] +mod synth_token_test; diff --git a/crates/loopal-memory/tests/suite/associative_recall_integration_test.rs b/crates/loopal-memory/tests/suite/associative_recall_integration_test.rs new file mode 100644 index 00000000..d5222de7 --- /dev/null +++ b/crates/loopal-memory/tests/suite/associative_recall_integration_test.rs @@ -0,0 +1,172 @@ +use std::fs; +use std::path::Path; +use std::sync::Arc; + +use tempfile::TempDir; +use tokio::runtime::Runtime; + +use loopal_memory::graph::recall::{self, RecallParams}; +use loopal_memory::{EventKind, EventLogWriter, MemoryGraph, fold_events, scan_directory}; + +fn write_note(dir: &Path, slug: &str, body: &str) { + fs::write(dir.join(format!("{}.md", slug)), body).unwrap(); +} + +fn seed_fixture(dir: &Path) { + write_note( + dir, + "topic-a", + "---\nname: Topic A\ntype: project\n---\n\nA points to [[topic-b]].", + ); + write_note( + dir, + "topic-b", + "---\nname: Topic B\ntype: project\n---\n\nB points to [[topic-c]].", + ); + write_note( + dir, + "topic-c", + "---\nname: Topic C\ntype: project\n---\n\nC standalone leaf.", + ); + write_note( + dir, + "unrelated", + "---\nname: Unrelated\ntype: project\n---\n\nNothing about topics.", + ); +} + +async fn build_graph(memory_dir: &Path, events_dir: &Path, sid: &str) -> MemoryGraph { + let mut graph = MemoryGraph::in_memory().unwrap(); + fs::create_dir_all(events_dir).unwrap(); + let stats = fold_events(events_dir); + graph.install_recall_stats(stats); + graph.set_event_log(Arc::new(EventLogWriter::new(events_dir.to_path_buf(), sid))); + scan_directory(&graph, memory_dir).await.unwrap(); + graph +} + +#[test] +fn associative_recall_persists_reinforcement_across_sessions() { + let memory_tmp = TempDir::new().unwrap(); + let events_tmp = TempDir::new().unwrap(); + let memory_dir = memory_tmp.path(); + let events_dir = events_tmp.path(); + seed_fixture(memory_dir); + + let rt = Runtime::new().unwrap(); + + rt.block_on(async { + let graph = build_graph(memory_dir, events_dir, "sessAAAA").await; + + let params = RecallParams { + anchor_names: vec!["topic-a".into()], + depth: 1, + ..Default::default() + }; + let r = recall::recall(&graph, ¶ms).await.unwrap(); + let neighbor_ids: Vec<&str> = r.neighbors.iter().map(|n| n.node.id.as_str()).collect(); + assert!(neighbor_ids.contains(&"topic-b")); + assert!(!neighbor_ids.contains(&"unrelated")); + + let reinforce = RecallParams { + anchor_names: vec!["topic-b".into()], + depth: 0, + ..Default::default() + }; + for _ in 0..5 { + recall::recall(&graph, &reinforce).await.unwrap(); + } + + let in_session = graph.recall_stats_snapshot("topic-b").unwrap(); + assert!(in_session.recall_count >= 5); + }); + + let folded = fold_events(events_dir); + let persisted = folded.get("topic-b").unwrap(); + assert!(persisted.recall_count >= 5); + let unrelated_count = folded.get("unrelated").map(|s| s.recall_count).unwrap_or(0); + assert_eq!(unrelated_count, 0); + + rt.block_on(async { + let graph_b = build_graph(memory_dir, events_dir, "sessBBBB").await; + let resumed = graph_b.recall_stats_snapshot("topic-b").unwrap(); + assert!(resumed.recall_count >= 5); + + let depth2 = RecallParams { + anchor_names: vec!["topic-a".into()], + depth: 2, + ..Default::default() + }; + let r2 = recall::recall(&graph_b, &depth2).await.unwrap(); + let by_id: std::collections::HashMap<&str, f32> = r2 + .neighbors + .iter() + .map(|n| (n.node.id.as_str(), n.score)) + .collect(); + let score_b = by_id.get("topic-b").copied().unwrap(); + let score_c = by_id.get("topic-c").copied().unwrap(); + assert!(score_b > score_c, "b={} c={}", score_b, score_c); + }); +} + +#[test] +fn importance_ranking_lift() { + let memory_tmp = TempDir::new().unwrap(); + let events_tmp = TempDir::new().unwrap(); + let memory_dir = memory_tmp.path(); + let events_dir = events_tmp.path(); + seed_fixture(memory_dir); + + let rt = Runtime::new().unwrap(); + + let cold_b_score = rt.block_on(async { + let graph = build_graph(memory_dir, events_dir, "sessCOLD").await; + let params = RecallParams { + anchor_names: vec!["topic-a".into()], + depth: 2, + ..Default::default() + }; + let r = recall::recall(&graph, ¶ms).await.unwrap(); + r.neighbors + .iter() + .find(|n| n.node.id == "topic-b") + .map(|n| n.score) + .expect("topic-b must appear at depth=2 from topic-a") + }); + + let writer = EventLogWriter::new(events_dir.to_path_buf(), "sessTAGB"); + writer.append(EventKind::ImportanceTag { + node: "topic-b".into(), + importance: 5, + tags: vec!["critical".into()], + note: None, + }); + drop(writer); + + let warm_b_score = rt.block_on(async { + let graph = build_graph(memory_dir, events_dir, "sessWARM").await; + let snap = graph + .recall_stats_snapshot("topic-b") + .expect("ImportanceTag must survive into fold result"); + assert_eq!(snap.importance, 5); + + let params = RecallParams { + anchor_names: vec!["topic-a".into()], + depth: 2, + ..Default::default() + }; + let r = recall::recall(&graph, ¶ms).await.unwrap(); + r.neighbors + .iter() + .find(|n| n.node.id == "topic-b") + .map(|n| n.score) + .expect("topic-b must still appear after tagging") + }); + + assert!( + warm_b_score > cold_b_score, + "importance must lift score: cold={} warm={}", + cold_b_score, + warm_b_score + ); +} diff --git a/crates/loopal-memory/tests/suite/candidates_test.rs b/crates/loopal-memory/tests/suite/candidates_test.rs new file mode 100644 index 00000000..37cb4c06 --- /dev/null +++ b/crates/loopal-memory/tests/suite/candidates_test.rs @@ -0,0 +1,123 @@ +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, ttl_days: Option, created_at: i64) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at, + updated_at: created_at, + ttl_days, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +#[tokio::test] +async fn high_impact_orders_by_inbound_count() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("hub", None, 1)).await.unwrap(); + g.upsert_node(node("solo", None, 1)).await.unwrap(); + for s in ["a", "b", "c"] { + g.upsert_node(node(s, None, 1)).await.unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: s.into(), + dst_id: "hub".into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + } + + let hi = g.find_high_impact(10).await.unwrap(); + assert_eq!(hi[0].0.id, "hub"); + assert_eq!(hi[0].1, 3); +} + +#[tokio::test] +async fn high_impact_excludes_synthesized_edges() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("hub", None, 1)).await.unwrap(); + g.upsert_node(node("a", None, 1)).await.unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "hub".into(), + kind: EdgeKind::CoOccursSlug, + line: None, + metadata: None, + provenance: Provenance::Synthesized, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + + let hi = g.find_high_impact(10).await.unwrap(); + assert!(hi.is_empty()); +} + +#[tokio::test] +async fn expired_returns_only_past_ttl() { + let g = MemoryGraph::in_memory().unwrap(); + let now = chrono::Utc::now().timestamp_millis(); + let day_ms = 1000 * 60 * 60 * 24; + g.upsert_node(node("fresh", Some(90), now)).await.unwrap(); + g.upsert_node(node("expired", Some(90), now - 200 * day_ms)) + .await + .unwrap(); + g.upsert_node(node("forever", None, now - 1000 * day_ms)) + .await + .unwrap(); + + let exp = g.find_expired().await.unwrap(); + let ids: Vec<&str> = exp.iter().map(|n| n.id.as_str()).collect(); + assert_eq!(ids, vec!["expired"]); +} + +#[tokio::test] +async fn conflicting_pairs_returns_contradicts_edges() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", None, 1)).await.unwrap(); + g.upsert_node(node("b", None, 1)).await.unwrap(); + g.upsert_node(node("c", None, 1)).await.unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::Contradicts, + line: None, + metadata: None, + provenance: Provenance::UserStated, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "c".into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + + let pairs = g.find_conflicting_pairs().await.unwrap(); + assert_eq!(pairs.len(), 1); + assert_eq!(pairs[0], ("a".to_string(), "b".to_string())); +} diff --git a/crates/loopal-memory/tests/suite/event_log_gc_test.rs b/crates/loopal-memory/tests/suite/event_log_gc_test.rs new file mode 100644 index 00000000..8ea0936f --- /dev/null +++ b/crates/loopal-memory/tests/suite/event_log_gc_test.rs @@ -0,0 +1,150 @@ +use std::fs; + +use tempfile::TempDir; + +use loopal_memory::{ + EventKind, EventLogWriter, RecallSource, ensure_gitignore, fold_events, run_gc, +}; + +#[test] +fn gc_compresses_old_jsonl() { + let tmp = TempDir::new().unwrap(); + let writer = EventLogWriter::new(tmp.path().to_path_buf(), "sessAAAA"); + writer.append(EventKind::RecallHit { + qid: "q".into(), + node: "foo".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }); + drop(writer); + + let original: Vec<_> = fs::read_dir(tmp.path()) + .unwrap() + .filter_map(|e| e.ok()) + .map(|e| e.path()) + .collect(); + let target = original + .iter() + .find(|p| { + p.file_name() + .and_then(|s| s.to_str()) + .map(|n| n.ends_with(".jsonl")) + .unwrap_or(false) + }) + .expect("found jsonl"); + let renamed = tmp.path().join("2024-01-15_sessAAAA.jsonl"); + fs::rename(target, &renamed).unwrap(); + + let stats = run_gc(tmp.path(), 90, 365); + assert_eq!(stats.compressed, 1); + assert_eq!(stats.errors, 0); + assert!(!renamed.exists()); + assert!(tmp.path().join("2024-01-15_sessAAAA.jsonl.gz").exists()); +} + +#[test] +fn fold_transparently_reads_gz() { + let tmp = TempDir::new().unwrap(); + let writer = EventLogWriter::new(tmp.path().to_path_buf(), "sessBBBB"); + for _ in 0..3 { + writer.append(EventKind::RecallHit { + qid: "q".into(), + node: "bar".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }); + } + drop(writer); + + let jsonl_path = fs::read_dir(tmp.path()) + .unwrap() + .filter_map(|e| e.ok()) + .map(|e| e.path()) + .find(|p| { + p.file_name() + .and_then(|s| s.to_str()) + .map(|n| n.ends_with(".jsonl")) + .unwrap_or(false) + }) + .expect("jsonl exists"); + let renamed = tmp.path().join("2024-01-15_sessBBBB.jsonl"); + fs::rename(&jsonl_path, &renamed).unwrap(); + + run_gc(tmp.path(), 90, 365); + assert!(tmp.path().join("2024-01-15_sessBBBB.jsonl.gz").exists()); + + let map = fold_events(tmp.path()); + assert_eq!(map.get("bar").unwrap().recall_count, 3); +} + +#[test] +fn gc_archives_old_gz() { + let tmp = TempDir::new().unwrap(); + let gz_path = tmp.path().join("2023-01-15_sessCCCC.jsonl.gz"); + fs::write(&gz_path, b"placeholder").unwrap(); + + let stats = run_gc(tmp.path(), 90, 365); + assert_eq!(stats.archived, 1); + assert!(!gz_path.exists()); + assert!( + tmp.path() + .join("archive") + .join("2023-01-15_sessCCCC.jsonl.gz") + .exists() + ); +} + +#[test] +fn gitignore_creates_when_missing() { + let tmp = TempDir::new().unwrap(); + ensure_gitignore(tmp.path()).unwrap(); + let content = fs::read_to_string(tmp.path().join(".gitignore")).unwrap(); + assert!(content.contains(".loopal/memory-events/archive/")); + assert!(content.contains(".loopal/memory-events/*.jsonl.gz")); +} + +#[test] +fn gitignore_idempotent_no_duplicate() { + let tmp = TempDir::new().unwrap(); + ensure_gitignore(tmp.path()).unwrap(); + ensure_gitignore(tmp.path()).unwrap(); + let content = fs::read_to_string(tmp.path().join(".gitignore")).unwrap(); + let count = content.matches(".loopal/memory-events/archive/").count(); + assert_eq!(count, 1); +} + +#[test] +fn gitignore_preserves_existing_rules() { + let tmp = TempDir::new().unwrap(); + let existing = "node_modules/\n.env\n"; + fs::write(tmp.path().join(".gitignore"), existing).unwrap(); + ensure_gitignore(tmp.path()).unwrap(); + let content = fs::read_to_string(tmp.path().join(".gitignore")).unwrap(); + assert!(content.contains("node_modules/")); + assert!(content.contains(".env")); + assert!(content.contains(".loopal/memory-events/archive/")); +} + +#[test] +fn gitignore_handles_non_utf8_existing_file() { + let tmp = TempDir::new().unwrap(); + let gitignore = tmp.path().join(".gitignore"); + let mut bytes = b".existing-rule\n".to_vec(); + bytes.extend_from_slice(&[0xFF, 0xFE, 0xFD]); + bytes.extend_from_slice(b"\n"); + fs::write(&gitignore, &bytes).unwrap(); + + ensure_gitignore(tmp.path()).unwrap(); + ensure_gitignore(tmp.path()).unwrap(); + + let content = fs::read(&gitignore).unwrap(); + let lossy = String::from_utf8_lossy(&content); + assert_eq!( + lossy.matches(".loopal/memory-events/archive/").count(), + 1, + "rules must not duplicate when existing file is non-UTF8" + ); + assert!(lossy.contains(".existing-rule")); +} diff --git a/crates/loopal-memory/tests/suite/event_log_recovery_test.rs b/crates/loopal-memory/tests/suite/event_log_recovery_test.rs new file mode 100644 index 00000000..f46d3fb8 --- /dev/null +++ b/crates/loopal-memory/tests/suite/event_log_recovery_test.rs @@ -0,0 +1,185 @@ +use std::fs; +use std::io::Write; +use std::os::unix::fs::PermissionsExt; + +use chrono::{Duration, Utc}; +use tempfile::TempDir; + +use loopal_memory::{Event, EventKind, RecallSource, fold_events, run_gc}; + +fn make_event(sid: &str, ts: i64, node: &str) -> Event { + Event::new( + sid, + ts, + EventKind::RecallHit { + qid: "q".into(), + node: node.into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }, + ) +} + +fn compress_eligible_date() -> String { + (Utc::now() - Duration::days(120)) + .date_naive() + .format("%Y-%m-%d") + .to_string() +} + +fn archive_eligible_date() -> String { + (Utc::now() - Duration::days(400)) + .date_naive() + .format("%Y-%m-%d") + .to_string() +} + +#[test] +fn gc_removes_orphan_jsonl_when_gz_already_exists() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let date = compress_eligible_date(); + + let line = serde_json::to_string(&make_event("sessCRSH", 100, "n1")).unwrap(); + let stale_jsonl = dir.join(format!("{}_sessCRSH.jsonl", date)); + fs::write(&stale_jsonl, format!("{}\n", line)).unwrap(); + + let gz_jsonl = dir.join(format!("{}_sessCRSH.jsonl.gz", date)); + let mut enc = flate2::write::GzEncoder::new( + fs::File::create(&gz_jsonl).unwrap(), + flate2::Compression::default(), + ); + enc.write_all(format!("{}\n", line).as_bytes()).unwrap(); + enc.finish().unwrap(); + + let stats = run_gc(dir, 90, 365); + assert_eq!(stats.errors, 0); + assert!(!stale_jsonl.exists(), "orphan .jsonl must be removed"); + assert!(gz_jsonl.exists(), ".gz must remain"); + + let map = fold_events(dir); + assert_eq!( + map.get("n1").unwrap().recall_count, + 1, + "fold must not double-count after orphan recovery" + ); +} + +#[test] +fn gc_tmp_path_includes_pid_and_nanos_for_concurrency() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let date = compress_eligible_date(); + let line = serde_json::to_string(&make_event("sessTMP", 100, "n2")).unwrap(); + let stale = dir.join(format!("{}_sessTMP.jsonl", date)); + fs::write(&stale, format!("{}\n", line)).unwrap(); + + let stats = run_gc(dir, 90, 365); + assert_eq!(stats.compressed, 1); + + let leftover_tmp: Vec<_> = fs::read_dir(dir) + .unwrap() + .filter_map(|e| e.ok()) + .filter(|e| e.file_name().to_string_lossy().contains(".jsonl.gz.tmp.")) + .collect(); + assert!( + leftover_tmp.is_empty(), + "no unique-suffix tmp file should remain after successful compress" + ); +} + +#[test] +fn gc_streams_large_file_without_full_load() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let date = compress_eligible_date(); + let stale = dir.join(format!("{}_sessBIG.jsonl", date)); + let mut f = fs::File::create(&stale).unwrap(); + let line = serde_json::to_string(&make_event("sessBIG", 100, "big")).unwrap(); + for _ in 0..1000 { + writeln!(f, "{}", line).unwrap(); + } + drop(f); + + let stats = run_gc(dir, 90, 365); + assert_eq!(stats.compressed, 1); + + let map = fold_events(dir); + assert_eq!(map.get("big").unwrap().recall_count, 1000); +} + +#[test] +fn gc_propagates_read_dir_permission_error() { + let tmp = TempDir::new().unwrap(); + let locked = tmp.path().join("locked"); + fs::create_dir(&locked).unwrap(); + fs::set_permissions(&locked, fs::Permissions::from_mode(0o000)).unwrap(); + + let stats = run_gc(&locked, 90, 365); + assert_eq!(stats.errors, 1, "permission error must be counted"); + + fs::set_permissions(&locked, fs::Permissions::from_mode(0o755)).unwrap(); +} + +#[test] +fn gc_missing_dir_returns_zero_stats_no_error() { + let stats = run_gc(std::path::Path::new("/nonexistent/dir/zzz"), 90, 365); + assert_eq!(stats.compressed, 0); + assert_eq!(stats.archived, 0); + assert_eq!(stats.errors, 0); +} + +#[test] +fn fold_one_file_preserves_partial_batch_on_truncated_gz() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let date = compress_eligible_date(); + let gz_path = dir.join(format!("{}_sessTRC.jsonl.gz", date)); + + let line = serde_json::to_string(&make_event("sessTRC", 100, "partial")).unwrap(); + let payload = format!("{}\n{}\n{}\n", line, line, line); + + let mut buf: Vec = Vec::new(); + let mut enc = flate2::write::GzEncoder::new(&mut buf, flate2::Compression::default()); + enc.write_all(payload.as_bytes()).unwrap(); + enc.finish().unwrap(); + + let truncated = &buf[..buf.len() - 5]; + fs::write(&gz_path, truncated).unwrap(); + + let map = fold_events(dir); + let recovered = map.get("partial").map(|s| s.recall_count).unwrap_or(0); + assert!( + recovered >= 1, + "at least one valid event should be recovered from truncated gz, got {}", + recovered + ); +} + +#[test] +fn gc_archive_dest_collision_removes_source() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let archive = dir.join("archive"); + fs::create_dir(&archive).unwrap(); + let date = archive_eligible_date(); + + let old_gz = dir.join(format!("{}_sessOLD.jsonl.gz", date)); + fs::write(&old_gz, b"original").unwrap(); + + let collision = archive.join(format!("{}_sessOLD.jsonl.gz", date)); + fs::write(&collision, b"existing").unwrap(); + + let stats = run_gc(dir, 90, 365); + assert_eq!(stats.errors, 0); + assert!( + !old_gz.exists(), + "source must be removed on archive-dest collision to prevent indefinite retry" + ); + assert_eq!( + fs::read(&collision).unwrap(), + b"existing", + "existing archive must not be overwritten" + ); +} diff --git a/crates/loopal-memory/tests/suite/event_log_test.rs b/crates/loopal-memory/tests/suite/event_log_test.rs new file mode 100644 index 00000000..1bc623f6 --- /dev/null +++ b/crates/loopal-memory/tests/suite/event_log_test.rs @@ -0,0 +1,159 @@ +use std::fs; +use tempfile::TempDir; + +use loopal_memory::{ + Event, EventKind, EventLogWriter, RecallSource, RecallStats, RecallStatsMap, fold_events, +}; + +fn event(sid: &str, ts: i64, kind: EventKind) -> Event { + Event::new(sid, ts, kind) +} + +#[test] +fn append_single_then_fold_round_trip() { + let tmp = TempDir::new().unwrap(); + let writer = EventLogWriter::new(tmp.path().to_path_buf(), "sess-aaaa1111"); + writer.append(EventKind::RecallHit { + qid: "q1".into(), + node: "foo".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }); + let map = fold_events(tmp.path()); + let stats = map.get("foo").expect("foo stats"); + assert_eq!(stats.recall_count, 1); + assert!(stats.last_recalled_at > 0); +} + +#[test] +fn fold_multifile_sums_recall_count() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let file_a = dir.join("2026-05-30_sessA.jsonl"); + let file_b = dir.join("2026-05-31_sessB.jsonl"); + let line = |sid: &str, ts: i64| { + let ev = event( + sid, + ts, + EventKind::RecallHit { + qid: "q".into(), + node: "n1".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }, + ); + serde_json::to_string(&ev).unwrap() + }; + fs::write( + &file_a, + format!("{}\n{}\n", line("sessA", 1000), line("sessA", 2000)), + ) + .unwrap(); + fs::write( + &file_b, + format!("{}\n{}\n", line("sessB", 3000), line("sessB", 4000)), + ) + .unwrap(); + + let map = fold_events(dir); + let stats = map.get("n1").unwrap(); + assert_eq!(stats.recall_count, 4); + assert_eq!(stats.last_recalled_at, 4000); +} + +#[test] +fn fold_skips_corrupt_lines() { + let tmp = TempDir::new().unwrap(); + let path = tmp.path().join("2026-05-30_aaa.jsonl"); + let good = serde_json::to_string(&event( + "s", + 100, + EventKind::RecallHit { + qid: "q".into(), + node: "foo".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }, + )) + .unwrap(); + fs::write(&path, format!("{}\nGARBAGE\n{}\n", good, good)).unwrap(); + + let map = fold_events(tmp.path()); + let stats = map.get("foo").unwrap(); + assert_eq!(stats.recall_count, 2); +} + +#[test] +fn fold_missing_dir_returns_empty() { + let map = fold_events(std::path::Path::new("/nonexistent/path/xyz")); + assert!(map.is_empty()); +} + +#[test] +fn importance_tag_latest_ts_wins() { + let mut map = RecallStatsMap::new(); + let mut stats = RecallStats::default(); + + let early = event( + "s", + 100, + EventKind::ImportanceTag { + node: "foo".into(), + importance: 1, + tags: vec![], + note: None, + }, + ); + let late = event( + "s", + 200, + EventKind::ImportanceTag { + node: "foo".into(), + importance: 2, + tags: vec![], + note: None, + }, + ); + + stats.fold_event(&late); + stats.fold_event(&early); + map.insert("foo".into(), stats); + + let s = map.get("foo").unwrap(); + assert_eq!(s.importance, 2); + assert_eq!(s.importance_ts, 200); +} + +#[test] +fn two_sessions_independent_fold_sums() { + let tmp = TempDir::new().unwrap(); + let dir = tmp.path(); + let w_a = EventLogWriter::new(dir.to_path_buf(), "sessAAAA"); + let w_b = EventLogWriter::new(dir.to_path_buf(), "sessBBBB"); + for _ in 0..3 { + w_a.append(EventKind::RecallHit { + qid: "q".into(), + node: "shared".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }); + } + for _ in 0..2 { + w_b.append(EventKind::RecallHit { + qid: "q".into(), + node: "shared".into(), + rank: 0, + score: 1.0, + source: RecallSource::DirectHit, + }); + } + drop(w_a); + drop(w_b); + + let map = fold_events(dir); + assert_eq!(map.get("shared").unwrap().recall_count, 5); +} diff --git a/crates/loopal-memory/tests/suite/extract_frontmatter_test.rs b/crates/loopal-memory/tests/suite/extract_frontmatter_test.rs new file mode 100644 index 00000000..863de80f --- /dev/null +++ b/crates/loopal-memory/tests/suite/extract_frontmatter_test.rs @@ -0,0 +1,69 @@ +use loopal_memory::extract::frontmatter::parse; + +#[test] +fn parses_full_frontmatter() { + let text = "---\nname: Twitter Auto\ndescription: rate limits\ntype: project\nttl_days: 90\nrelated:\n - twitter-long-tweets\n - chrome-for-testing-cdp\n---\n\nBody starts here.\n"; + let p = parse(text); + assert_eq!(p.frontmatter.name.as_deref(), Some("Twitter Auto")); + assert_eq!(p.frontmatter.description.as_deref(), Some("rate limits")); + assert_eq!(p.frontmatter.kind.as_deref(), Some("project")); + assert_eq!(p.frontmatter.ttl_days, Some(90)); + assert_eq!(p.frontmatter.related.len(), 2); + assert_eq!(p.body.trim(), "Body starts here."); + assert!(p.errors.is_empty()); +} + +#[test] +fn missing_frontmatter_returns_default_with_no_errors() { + let text = "Just a body, no frontmatter.\nLine two.\n"; + let p = parse(text); + assert!(p.frontmatter.name.is_none()); + assert!(p.frontmatter.kind.is_none()); + assert_eq!(p.body, text); + assert!(p.errors.is_empty()); +} + +#[test] +fn malformed_yaml_recovers_to_default() { + let text = "---\nname: ok\ntype: [unclosed\n---\nbody\n"; + let p = parse(text); + assert!(!p.errors.is_empty()); + assert!(p.frontmatter.name.is_none()); +} + +#[test] +fn partial_frontmatter_fills_missing_with_none() { + let text = "---\nname: only-name\n---\nbody\n"; + let p = parse(text); + assert_eq!(p.frontmatter.name.as_deref(), Some("only-name")); + assert!(p.frontmatter.kind.is_none()); + assert!(p.frontmatter.ttl_days.is_none()); + assert!(p.frontmatter.related.is_empty()); +} + +#[test] +fn detects_git_merge_conflict_marker() { + let text = "---\nname: x\n---\n<<<<<<< HEAD\nmine\n=======\ntheirs\n>>>>>>> branch\n"; + let p = parse(text); + let has_marker = p.errors.iter().any(|e| { + matches!( + e, + loopal_memory::extract::errors::ExtractionError::MergeConflictMarker + ) + }); + assert!(has_marker); +} + +#[test] +fn handles_bom_at_start() { + let text = "\u{feff}---\nname: bom\n---\nbody\n"; + let p = parse(text); + assert_eq!(p.frontmatter.name.as_deref(), Some("bom")); +} + +#[test] +fn related_accepts_both_md_suffix_and_wikilink_form() { + let text = "---\nrelated:\n - foo.md\n - \"[[bar]]\"\n - baz\n---\n"; + let p = parse(text); + assert_eq!(p.frontmatter.related.len(), 3); +} diff --git a/crates/loopal-memory/tests/suite/extract_orchestrator_test.rs b/crates/loopal-memory/tests/suite/extract_orchestrator_test.rs new file mode 100644 index 00000000..947c10f9 --- /dev/null +++ b/crates/loopal-memory/tests/suite/extract_orchestrator_test.rs @@ -0,0 +1,132 @@ +use loopal_memory::extract::{extract_file, slug_from_path}; +use loopal_memory::{EdgeKind, MemoryKind, Provenance}; + +#[test] +fn extracts_full_project_memory() { + let md = "---\nname: Twitter Auto\ndescription: rate limits\ntype: project\nttl_days: 90\nrelated:\n - twitter-long-tweets\n---\n\nWe enforce strict cooldowns. See [[chrome-for-testing-cdp]] for browser tricks.\n"; + let result = extract_file("twitter-automation.md", md); + assert_eq!(result.nodes.len(), 1); + + let n = &result.nodes[0]; + assert_eq!(n.id, "twitter-automation"); + assert_eq!(n.kind, MemoryKind::Project); + assert_eq!(n.name, "Twitter Auto"); + assert_eq!(n.description.as_deref(), Some("rate limits")); + assert_eq!(n.ttl_days, Some(90)); + assert!(n.body_preview.contains("strict cooldowns")); + assert_eq!(n.content_hash.len(), 64); +} + +#[test] +fn generates_one_frontmatter_edge_per_related() { + let md = "---\ntype: project\nrelated:\n - alpha\n - beta\n---\n"; + let r = extract_file("foo.md", md); + let frontmatter_edges: Vec<_> = r + .edges + .iter() + .filter(|e| e.provenance == Provenance::Frontmatter) + .collect(); + assert_eq!(frontmatter_edges.len(), 2); + assert!( + frontmatter_edges + .iter() + .all(|e| e.kind == EdgeKind::References) + ); +} + +#[test] +fn generates_inline_edges_for_each_wikilink_with_line() { + let md = "---\ntype: project\n---\nfirst body line\n[[alpha]]\nplain\n[[beta]]\n"; + let r = extract_file("foo.md", md); + let inline: Vec<_> = r + .edges + .iter() + .filter(|e| e.provenance == Provenance::InlineLink) + .collect(); + assert_eq!(inline.len(), 2); + let targets: Vec<&str> = inline.iter().map(|e| e.dst_id.as_str()).collect(); + assert!(targets.contains(&"alpha")); + assert!(targets.contains(&"beta")); + let alpha = inline.iter().find(|e| e.dst_id == "alpha").unwrap(); + assert_eq!(alpha.line, Some(2)); + let beta = inline.iter().find(|e| e.dst_id == "beta").unwrap(); + assert_eq!(beta.line, Some(4)); +} + +#[test] +fn missing_type_defaults_to_reference() { + let r = extract_file("foo.md", "no frontmatter, just body"); + assert_eq!(r.nodes[0].kind, MemoryKind::Reference); +} + +#[test] +fn memory_index_file_classified_as_index() { + let r = extract_file("MEMORY.md", "# Index"); + assert_eq!(r.nodes[0].kind, MemoryKind::Index); +} + +#[test] +fn body_preview_truncates_to_300_bytes_on_char_boundary() { + let mut body = String::from("---\ntype: reference\n---\n\n"); + body.push_str(&"a".repeat(500)); + let r = extract_file("foo.md", &body); + assert!(r.nodes[0].body_preview.len() <= 300); + assert_eq!(r.nodes[0].body_preview.len(), 300); +} + +#[test] +fn unresolved_links_record_inline_targets() { + let md = "---\ntype: project\n---\n[[never-defined]]\n"; + let r = extract_file("foo.md", md); + assert_eq!(r.unresolved.len(), 1); + assert_eq!(r.unresolved[0].target_name, "never-defined"); + assert_eq!(r.unresolved[0].line, 1); +} + +#[test] +fn merge_conflict_file_yields_error_but_still_extracts() { + let md = "---\ntype: project\n---\n<<<<<<< HEAD\na\n=======\nb\n>>>>>>> branch\n"; + let r = extract_file("foo.md", md); + assert!(!r.errors.is_empty()); + assert_eq!(r.nodes.len(), 1); +} + +#[test] +fn slug_from_path_handles_various_paths() { + assert_eq!(slug_from_path("foo.md"), "foo"); + assert_eq!(slug_from_path("teams/onboard.md"), "teams__onboard"); + assert_eq!(slug_from_path("./baz.md"), "baz"); +} + +#[test] +fn slug_from_path_distinguishes_same_filename_different_dirs() { + let a = slug_from_path("notes/foo.md"); + let b = slug_from_path("archive/foo.md"); + assert_ne!( + a, b, + "same file_stem in different dirs must yield different slugs" + ); + assert_eq!(a, "notes__foo"); + assert_eq!(b, "archive__foo"); +} + +#[test] +fn slug_from_path_avoids_dir_vs_hyphen_collision() { + let nested = slug_from_path("a/b.md"); + let flat = slug_from_path("a-b.md"); + assert_ne!( + nested, flat, + "nested 'a/b.md' must not collide with flat 'a-b.md'" + ); + assert_eq!(nested, "a__b"); + assert_eq!(flat, "a-b"); +} + +#[test] +fn content_hash_is_deterministic_and_unique_for_changes() { + let r1 = extract_file("a.md", "hello"); + let r2 = extract_file("a.md", "hello"); + let r3 = extract_file("a.md", "world"); + assert_eq!(r1.nodes[0].content_hash, r2.nodes[0].content_hash); + assert_ne!(r1.nodes[0].content_hash, r3.nodes[0].content_hash); +} diff --git a/crates/loopal-memory/tests/suite/extract_related_test.rs b/crates/loopal-memory/tests/suite/extract_related_test.rs new file mode 100644 index 00000000..7c9328ac --- /dev/null +++ b/crates/loopal-memory/tests/suite/extract_related_test.rs @@ -0,0 +1,40 @@ +use loopal_memory::extract::related::normalize_related; + +#[test] +fn normalizes_md_suffix_and_dedups() { + let items = vec![ + "foo.md".to_string(), + "[[foo]]".to_string(), + "foo".to_string(), + "bar.md".to_string(), + ]; + assert_eq!(normalize_related(&items), vec!["foo", "bar"]); +} + +#[test] +fn empty_input_yields_empty() { + assert!(normalize_related(&[]).is_empty()); +} + +#[test] +fn skips_invalid_entries_silently() { + let items = vec![ + "OK".to_string(), + "valid-slug".to_string(), + " ".to_string(), + "bad chars!".to_string(), + "valid-slug".to_string(), + ]; + assert_eq!(normalize_related(&items), vec!["valid-slug"]); +} + +#[test] +fn preserves_first_seen_order() { + let items = vec![ + "third".to_string(), + "first.md".to_string(), + "first".to_string(), + "second".to_string(), + ]; + assert_eq!(normalize_related(&items), vec!["third", "first", "second"]); +} diff --git a/crates/loopal-memory/tests/suite/extract_wikilink_test.rs b/crates/loopal-memory/tests/suite/extract_wikilink_test.rs new file mode 100644 index 00000000..98a1ab11 --- /dev/null +++ b/crates/loopal-memory/tests/suite/extract_wikilink_test.rs @@ -0,0 +1,64 @@ +use loopal_memory::extract::wikilink::{normalize_to_slug, scan}; + +#[test] +fn scan_finds_single_wikilink() { + let body = "see [[foo-bar]] for details"; + let links = scan(body); + assert_eq!(links.len(), 1); + assert_eq!(links[0].slug, "foo-bar"); + assert_eq!(links[0].line, 1); +} + +#[test] +fn scan_records_line_numbers() { + let body = "line one\nline two [[alpha]]\n\nline four [[beta]]"; + let links = scan(body); + assert_eq!(links.len(), 2); + assert_eq!(links[0].slug, "alpha"); + assert_eq!(links[0].line, 2); + assert_eq!(links[1].slug, "beta"); + assert_eq!(links[1].line, 4); +} + +#[test] +fn scan_ignores_uppercase_or_non_slug_chars() { + let body = "[[Foo]] [[bar baz]] [[123]] [[ok-id]] [[a_b]]"; + let links: Vec<_> = scan(body).into_iter().map(|l| l.slug).collect(); + assert_eq!(links, vec!["ok-id", "a_b"]); +} + +#[test] +fn scan_accepts_alias_pipe_syntax() { + let body = "see [[my-slug|My Display Title]]"; + let links = scan(body); + assert_eq!(links.len(), 1); + assert_eq!(links[0].slug, "my-slug"); +} + +#[test] +fn scan_finds_multiple_on_same_line() { + let body = "[[a]] [[b]] [[c]]"; + let links: Vec<_> = scan(body).into_iter().map(|l| l.slug).collect(); + assert_eq!(links, vec!["a", "b", "c"]); +} + +#[test] +fn normalize_to_slug_strips_md_suffix() { + assert_eq!(normalize_to_slug("foo.md").as_deref(), Some("foo")); + assert_eq!(normalize_to_slug("a-b-c.md").as_deref(), Some("a-b-c")); +} + +#[test] +fn normalize_to_slug_strips_brackets() { + assert_eq!(normalize_to_slug("[[foo]]").as_deref(), Some("foo")); + assert_eq!(normalize_to_slug("[[foo|Title]]").as_deref(), Some("foo")); +} + +#[test] +fn normalize_to_slug_rejects_invalid_chars() { + assert!(normalize_to_slug("Foo").is_none()); + assert!(normalize_to_slug("123-x").is_none()); + assert!(normalize_to_slug("a b").is_none()); + assert!(normalize_to_slug("").is_none()); + assert!(normalize_to_slug("[[]]").is_none()); +} diff --git a/crates/loopal-memory/tests/suite/file_cache_test.rs b/crates/loopal-memory/tests/suite/file_cache_test.rs new file mode 100644 index 00000000..ddee82d7 --- /dev/null +++ b/crates/loopal-memory/tests/suite/file_cache_test.rs @@ -0,0 +1,57 @@ +use loopal_memory::MemoryGraph; + +#[tokio::test] +async fn file_cache_missing_returns_none() { + let g = MemoryGraph::in_memory().unwrap(); + let result = g.get_file_cache("nonexistent.md").await.unwrap(); + assert!(result.is_none()); +} + +#[tokio::test] +async fn file_cache_round_trip() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_file_cache( + "foo.md", + "abc123", + 1024, + 1_700_000_000_000, + 1_700_000_001_000, + ) + .await + .unwrap(); + + let entry = g.get_file_cache("foo.md").await.unwrap().unwrap(); + assert_eq!(entry.size, 1024); + assert_eq!(entry.modified_at, 1_700_000_000_000); +} + +#[tokio::test] +async fn file_cache_upsert_overwrites() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_file_cache("foo.md", "v1", 100, 1, 2) + .await + .unwrap(); + g.upsert_file_cache("foo.md", "v2", 200, 3, 4) + .await + .unwrap(); + + let entry = g.get_file_cache("foo.md").await.unwrap().unwrap(); + assert_eq!(entry.size, 200); + assert_eq!(entry.modified_at, 3); +} + +#[tokio::test] +async fn file_cache_delete_removes_entry() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_file_cache("foo.md", "abc", 1, 1, 1).await.unwrap(); + let removed = g.delete_file_cache("foo.md").await.unwrap(); + assert!(removed); + assert!(g.get_file_cache("foo.md").await.unwrap().is_none()); +} + +#[tokio::test] +async fn file_cache_delete_missing_returns_false() { + let g = MemoryGraph::in_memory().unwrap(); + let removed = g.delete_file_cache("nonexistent.md").await.unwrap(); + assert!(!removed); +} diff --git a/crates/loopal-memory/tests/suite/importance_test.rs b/crates/loopal-memory/tests/suite/importance_test.rs new file mode 100644 index 00000000..f547a03b --- /dev/null +++ b/crates/loopal-memory/tests/suite/importance_test.rs @@ -0,0 +1,151 @@ +use std::sync::Arc; + +use loopal_backend::{LocalBackend, ResourceLimits}; +use loopal_memory::{ + EventLogWriter, MemoryGraph, MemoryImportanceTool, MemoryKind, MemoryNode, PROJECT_MEMORY_DIR, + fold_events, +}; +use loopal_tool_api::{Backend, PermissionLevel, Tool, ToolContext}; +use serde_json::json; +use tempfile::TempDir; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: Some("desc".into()), + file_path: format!(".loopal/memory/{}.md", id), + body_preview: "body".into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn tool_context() -> ToolContext { + let backend: Arc = LocalBackend::new( + std::env::temp_dir(), + None, + ResourceLimits::default(), + "test", + ); + ToolContext::new(backend, "test") +} + +#[tokio::test] +async fn tool_metadata() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let t = MemoryImportanceTool::new(g); + assert_eq!(t.name(), "memory_set_importance"); + assert_eq!(t.permission(), PermissionLevel::Write); + assert_eq!(t.secret_eligible_params(), &[] as &[&str]); +} + +#[tokio::test] +async fn rejects_missing_node() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let t = MemoryImportanceTool::new(g); + let ctx = tool_context(); + let r = t + .execute(json!({ "importance": 5 }), &ctx) + .await + .unwrap_err(); + assert!(r.to_string().contains("node"), "got: {}", r); +} + +#[tokio::test] +async fn rejects_out_of_range_importance() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let t = MemoryImportanceTool::new(g); + let ctx = tool_context(); + let err = t + .execute(json!({ "node": "foo", "importance": 99 }), &ctx) + .await + .unwrap_err(); + assert!(err.to_string().contains("importance")); +} + +#[tokio::test] +async fn tag_updates_recall_stats_in_memory_and_disk() { + let tmp_events = TempDir::new().unwrap(); + let mut graph = MemoryGraph::in_memory().unwrap(); + graph.upsert_node(node("foo")).await.unwrap(); + graph.set_event_log(Arc::new(EventLogWriter::new( + tmp_events.path().to_path_buf(), + "tag-test", + ))); + let g = Arc::new(graph); + + let tool = MemoryImportanceTool::new(g.clone()); + let ctx = tool_context(); + let result = tool + .execute( + json!({ + "node": "foo", + "importance": 7, + "tags": ["critical", "incident"], + "note": "user explicitly flagged in conversation" + }), + &ctx, + ) + .await + .unwrap(); + assert!(!result.is_error, "tool result: {:?}", result); + + let snap = g.recall_stats_snapshot("foo").expect("foo stats present"); + assert_eq!(snap.importance, 7); + assert!(snap.importance_ts > 0); + + let folded = fold_events(tmp_events.path()); + assert_eq!( + folded.get("foo").unwrap().importance, + 7, + "tag must persist to event log for cross-session use" + ); +} + +#[tokio::test] +async fn highest_ts_wins_on_repeated_tagging() { + let tmp_events = TempDir::new().unwrap(); + let mut graph = MemoryGraph::in_memory().unwrap(); + graph.upsert_node(node("foo")).await.unwrap(); + graph.set_event_log(Arc::new(EventLogWriter::new( + tmp_events.path().to_path_buf(), + "tag-rep", + ))); + let g = Arc::new(graph); + let tool = MemoryImportanceTool::new(g.clone()); + let ctx = tool_context(); + + tool.execute(json!({ "node": "foo", "importance": 3 }), &ctx) + .await + .unwrap(); + tool.execute(json!({ "node": "foo", "importance": 9 }), &ctx) + .await + .unwrap(); + + let snap = g.recall_stats_snapshot("foo").unwrap(); + assert_eq!(snap.importance, 9, "most recent tag wins (highest ts)"); +} + +#[tokio::test] +async fn silently_drops_when_no_event_log_configured() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let tool = MemoryImportanceTool::new(g.clone()); + let ctx = tool_context(); + + let r = tool + .execute(json!({ "node": "ghost", "importance": 5 }), &ctx) + .await + .unwrap(); + assert!(!r.is_error); + assert!( + g.recall_stats_snapshot("ghost").is_none(), + "no log = no fold = no stats" + ); + + let _ = PROJECT_MEMORY_DIR; +} diff --git a/crates/loopal-memory/tests/suite/memory_init_integration_test.rs b/crates/loopal-memory/tests/suite/memory_init_integration_test.rs new file mode 100644 index 00000000..380ea57f --- /dev/null +++ b/crates/loopal-memory/tests/suite/memory_init_integration_test.rs @@ -0,0 +1,68 @@ +use loopal_memory::MemoryGraph; +use loopal_memory::sync::scan_directory; + +#[tokio::test] +async fn fresh_directory_initializes_full_pipeline() { + let temp = tempfile::tempdir().unwrap(); + let memory_dir = temp.path().join(".loopal/memory"); + std::fs::create_dir_all(&memory_dir).unwrap(); + + std::fs::write( + memory_dir.join("twitter-a.md"), + "---\nname: twitter-a\ntype: project\n---\nrate limit and cooldown\n", + ) + .unwrap(); + std::fs::write( + memory_dir.join("twitter-b.md"), + "---\nname: twitter-b\ntype: project\n---\ncooldown rate enforcement\n", + ) + .unwrap(); + + let db_path = memory_dir.join(".index.db"); + let g = MemoryGraph::open(&db_path).unwrap(); + let stats = scan_directory(&g, &memory_dir).await.unwrap(); + + assert_eq!(stats.files_scanned, 2); + assert!(stats.errors.is_empty()); + + let count = g.node_count().await.unwrap(); + assert_eq!(count, 2); + + let synth = g + .list_edges_by_provenance(loopal_memory::Provenance::Synthesized) + .await + .unwrap(); + assert!( + !synth.is_empty(), + "expected synthesized edges from slug + tfidf" + ); +} + +#[tokio::test] +async fn missing_memory_dir_returns_zero_stats_without_panic() { + let temp = tempfile::tempdir().unwrap(); + let memory_dir = temp.path().join(".loopal/memory"); + + let g = MemoryGraph::in_memory().unwrap(); + let stats = scan_directory(&g, &memory_dir).await.unwrap(); + assert_eq!(stats.files_scanned, 0); +} + +#[tokio::test] +async fn reindex_is_idempotent_under_repeated_scans() { + let temp = tempfile::tempdir().unwrap(); + let memory_dir = temp.path().join(".loopal/memory"); + std::fs::create_dir_all(&memory_dir).unwrap(); + std::fs::write( + memory_dir.join("a.md"), + "---\nname: a\ntype: project\n---\nbody\n", + ) + .unwrap(); + + let g = MemoryGraph::in_memory().unwrap(); + scan_directory(&g, &memory_dir).await.unwrap(); + scan_directory(&g, &memory_dir).await.unwrap(); + scan_directory(&g, &memory_dir).await.unwrap(); + + assert_eq!(g.node_count().await.unwrap(), 1); +} diff --git a/crates/loopal-memory/tests/suite/recall_anchor_test.rs b/crates/loopal-memory/tests/suite/recall_anchor_test.rs new file mode 100644 index 00000000..333d2b3d --- /dev/null +++ b/crates/loopal-memory/tests/suite/recall_anchor_test.rs @@ -0,0 +1,138 @@ +use loopal_memory::graph::recall; +use loopal_memory::graph::recall::RecallParams; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, kind: MemoryKind) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: id.into(), + description: Some(format!("desc-{}", id)), + file_path: format!("{}.md", id), + body_preview: format!("body of {}", id), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn edge(src: &str, dst: &str, kind: EdgeKind, conf: f32, prov: Provenance) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind, + line: None, + metadata: None, + provenance: prov, + confidence: conf, + created_at: 1, + } +} + +async fn seed_graph() -> MemoryGraph { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("twitter-auto", MemoryKind::Project)) + .await + .unwrap(); + g.upsert_node(node("twitter-long", MemoryKind::Project)) + .await + .unwrap(); + g.upsert_node(node("chrome-cdp", MemoryKind::Project)) + .await + .unwrap(); + g.upsert_node(node("user-style", MemoryKind::User)) + .await + .unwrap(); + g.insert_edge(edge( + "twitter-auto", + "twitter-long", + EdgeKind::References, + 1.0, + Provenance::Frontmatter, + )) + .await + .unwrap(); + g.insert_edge(edge( + "twitter-auto", + "chrome-cdp", + EdgeKind::References, + 1.0, + Provenance::InlineLink, + )) + .await + .unwrap(); + g.insert_edge(edge( + "twitter-auto", + "user-style", + EdgeKind::DerivedFrom, + 1.0, + Provenance::Synthesized, + )) + .await + .unwrap(); + g +} + +#[tokio::test] +async fn anchor_names_resolve_to_direct_hits() { + let g = seed_graph().await; + let params = RecallParams { + anchor_names: vec!["twitter-auto".into()], + depth: 0, + ..Default::default() + }; + let r = recall::recall(&g, ¶ms).await.unwrap(); + assert_eq!(r.direct_hits.len(), 1); + assert_eq!(r.direct_hits[0].node.id, "twitter-auto"); + assert!(r.neighbors.is_empty()); +} + +#[tokio::test] +async fn anchor_with_depth_one_brings_neighbors() { + let g = seed_graph().await; + let params = RecallParams { + anchor_names: vec!["twitter-auto".into()], + depth: 1, + ..Default::default() + }; + let r = recall::recall(&g, ¶ms).await.unwrap(); + let mut ids: Vec<&str> = r.neighbors.iter().map(|n| n.node.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["chrome-cdp", "twitter-long", "user-style"]); +} + +#[tokio::test] +async fn anchor_inbound_neighbor_visible() { + let g = seed_graph().await; + let params = RecallParams { + anchor_names: vec!["twitter-long".into()], + depth: 1, + ..Default::default() + }; + let r = recall::recall(&g, ¶ms).await.unwrap(); + let ids: Vec<&str> = r.neighbors.iter().map(|n| n.node.id.as_str()).collect(); + assert!(ids.contains(&"twitter-auto")); +} + +#[tokio::test] +async fn unknown_anchor_returns_empty() { + let g = seed_graph().await; + let params = RecallParams { + anchor_names: vec!["ghost".into()], + depth: 1, + ..Default::default() + }; + let r = recall::recall(&g, ¶ms).await.unwrap(); + assert!(r.direct_hits.is_empty()); +} + +#[tokio::test] +async fn no_query_no_anchor_yields_empty() { + let g = seed_graph().await; + let r = recall::recall(&g, &RecallParams::default()).await.unwrap(); + assert!(r.direct_hits.is_empty()); + assert!(r.neighbors.is_empty()); +} diff --git a/crates/loopal-memory/tests/suite/recall_format_test.rs b/crates/loopal-memory/tests/suite/recall_format_test.rs new file mode 100644 index 00000000..325eae74 --- /dev/null +++ b/crates/loopal-memory/tests/suite/recall_format_test.rs @@ -0,0 +1,118 @@ +use loopal_memory::graph::format::format_recall; +use loopal_memory::graph::recall::{RecallParams, recall}; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn n(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: format!("{} name", id), + description: Some(format!("{} description", id)), + file_path: format!(".loopal/memory/{}.md", id), + body_preview: format!("{}: body preview text", id), + created_at: 1_700_000_000_000, + updated_at: 1_700_000_000_000, + ttl_days: Some(90), + content_hash: "h".repeat(64), + indexed_at: 1_700_000_000_000, + } +} + +#[tokio::test] +async fn empty_result_yields_no_match_message() { + let g = MemoryGraph::in_memory().unwrap(); + let r = recall(&g, &RecallParams::default()).await.unwrap(); + let s = format_recall(&r); + assert!(s.contains("No matching memories found")); +} + +#[tokio::test] +async fn direct_hits_appear_under_heading() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(n("twitter-auto")).await.unwrap(); + let params = RecallParams { + anchor_names: vec!["twitter-auto".into()], + depth: 0, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + let s = format_recall(&r); + assert!(s.contains("## Direct hits")); + assert!(s.contains("twitter-auto")); + assert!(s.contains("body preview")); + assert!(s.contains(".loopal/memory/twitter-auto.md")); +} + +#[tokio::test] +async fn trail_section_includes_edges_with_provenance() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(n("a")).await.unwrap(); + g.upsert_node(n("b")).await.unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + let params = RecallParams { + anchor_names: vec!["a".into()], + depth: 2, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + let s = format_recall(&r); + assert!(s.contains("## Trail")); + assert!(s.contains("references")); +} + +#[tokio::test] +async fn anti_read_guidance_appended_for_non_empty_results() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(n("a")).await.unwrap(); + let params = RecallParams { + anchor_names: vec!["a".into()], + depth: 0, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + let s = format_recall(&r); + assert!(s.contains("memory_recall")); + assert!(s.contains("Avoid Read")); +} + +#[tokio::test] +async fn synth_edges_marked_in_trail() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(n("a")).await.unwrap(); + g.upsert_node(n("b")).await.unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::CoOccursSlug, + line: None, + metadata: None, + provenance: Provenance::Synthesized, + confidence: 0.85, + created_at: 1, + }) + .await + .unwrap(); + let params = RecallParams { + anchor_names: vec!["a".into()], + depth: 1, + min_confidence: 0.5, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + let s = format_recall(&r); + assert!(s.contains("synth")); + assert!(s.contains("co_occurs")); +} diff --git a/crates/loopal-memory/tests/suite/recall_query_test.rs b/crates/loopal-memory/tests/suite/recall_query_test.rs new file mode 100644 index 00000000..317f7e03 --- /dev/null +++ b/crates/loopal-memory/tests/suite/recall_query_test.rs @@ -0,0 +1,175 @@ +use loopal_memory::graph::recall::{RecallParams, recall}; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn make(id: &str, kind: MemoryKind, name: &str, body: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: name.into(), + description: Some(format!("{}: described", name)), + file_path: format!("{}.md", id), + body_preview: body.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +#[tokio::test] +async fn query_uses_fts5_to_seed_anchors() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make( + "rate-limit", + MemoryKind::Project, + "Twitter rate limit policy", + "exceed 50 calls then cool down", + )) + .await + .unwrap(); + g.upsert_node(make( + "scanner", + MemoryKind::Project, + "Scanner state", + "track ids of processed items", + )) + .await + .unwrap(); + + let params = RecallParams { + query: Some("rate".into()), + depth: 0, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + assert_eq!(r.direct_hits.len(), 1); + assert_eq!(r.direct_hits[0].node.id, "rate-limit"); +} + +#[tokio::test] +async fn query_with_depth_expands_to_neighbors() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make( + "a", + MemoryKind::Project, + "uniquequeryterm a", + "anchor body", + )) + .await + .unwrap(); + g.upsert_node(make("b", MemoryKind::Project, "neighbor", "neighbor body")) + .await + .unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + + let params = RecallParams { + query: Some("uniquequeryterm".into()), + depth: 1, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + assert_eq!(r.direct_hits.len(), 1); + let ids: Vec<&str> = r.neighbors.iter().map(|n| n.node.id.as_str()).collect(); + assert_eq!(ids, vec!["b"]); +} + +#[tokio::test] +async fn query_with_no_match_returns_empty_result() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make("a", MemoryKind::Project, "alpha", "alpha body")) + .await + .unwrap(); + let params = RecallParams { + query: Some("nothinghere".into()), + depth: 2, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + assert!(r.direct_hits.is_empty()); + assert!(r.neighbors.is_empty()); +} + +#[tokio::test] +async fn co_occurring_returned_when_include_synthesized() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make("a", MemoryKind::Project, "anchor uniquefts", "anchor")) + .await + .unwrap(); + g.upsert_node(make("b", MemoryKind::Project, "co", "co body")) + .await + .unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::CoOccursSlug, + line: None, + metadata: None, + provenance: Provenance::Synthesized, + confidence: 0.85, + created_at: 1, + }) + .await + .unwrap(); + + let params = RecallParams { + query: Some("uniquefts".into()), + depth: 0, + include_synthesized: true, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + assert_eq!(r.co_occurring.len(), 1); + assert_eq!(r.co_occurring[0].node.id, "b"); +} + +#[tokio::test] +async fn co_occurring_suppressed_when_excluded() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make( + "a", + MemoryKind::Project, + "anchor uniquefts2", + "anchor", + )) + .await + .unwrap(); + g.upsert_node(make("b", MemoryKind::Project, "co", "co")) + .await + .unwrap(); + g.insert_edge(MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::CoOccursSlug, + line: None, + metadata: None, + provenance: Provenance::Synthesized, + confidence: 0.85, + created_at: 1, + }) + .await + .unwrap(); + + let params = RecallParams { + query: Some("uniquefts2".into()), + depth: 0, + include_synthesized: false, + ..Default::default() + }; + let r = recall(&g, ¶ms).await.unwrap(); + assert!(r.co_occurring.is_empty()); +} diff --git a/crates/loopal-memory/tests/suite/recall_tool_test.rs b/crates/loopal-memory/tests/suite/recall_tool_test.rs new file mode 100644 index 00000000..27bd090f --- /dev/null +++ b/crates/loopal-memory/tests/suite/recall_tool_test.rs @@ -0,0 +1,99 @@ +use std::sync::Arc; + +use loopal_backend::{LocalBackend, ResourceLimits}; +use loopal_memory::{MemoryGraph, MemoryKind, MemoryNode, MemoryRecallTool}; +use loopal_tool_api::{Backend, PermissionLevel, Tool, ToolContext}; +use serde_json::json; + +fn n(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: format!("{} name", id), + description: Some("desc".into()), + file_path: format!(".loopal/memory/{}.md", id), + body_preview: format!("body of {}", id), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn tool_context() -> ToolContext { + let backend: Arc = LocalBackend::new( + std::env::temp_dir(), + None, + ResourceLimits::default(), + "test-session", + ); + ToolContext::new(backend, "test-session") +} + +#[tokio::test] +async fn tool_metadata_marks_recall_as_primary() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let t = MemoryRecallTool::new(g); + assert_eq!(t.name(), "memory_recall"); + assert_eq!(t.permission(), PermissionLevel::ReadOnly); + assert!(t.description().contains("THE tool")); + assert!(t.description().to_lowercase().contains("never read")); + assert!(t.secret_eligible_params().is_empty()); +} + +#[tokio::test] +async fn tool_rejects_when_no_query_or_anchor() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + let t = MemoryRecallTool::new(g); + let result = t.execute(json!({}), &tool_context()).await.unwrap(); + assert!(result.is_error); +} + +#[tokio::test] +async fn tool_returns_markdown_for_anchor_query() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + g.upsert_node(n("twitter-auto")).await.unwrap(); + let t = MemoryRecallTool::new(g); + let r = t + .execute( + json!({"anchor_names": ["twitter-auto"], "depth": 0}), + &tool_context(), + ) + .await + .unwrap(); + assert!(!r.is_error); + assert!(r.content.contains("twitter-auto")); + assert!(r.content.contains("## Direct hits")); +} + +#[tokio::test] +async fn tool_returns_no_match_for_unknown_query() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + g.upsert_node(n("foo")).await.unwrap(); + let t = MemoryRecallTool::new(g); + let r = t + .execute(json!({"query": "definitelynonexistent"}), &tool_context()) + .await + .unwrap(); + assert!(r.content.contains("No matching memories")); +} + +#[tokio::test] +async fn tool_clamps_max_results_and_depth() { + let g = Arc::new(MemoryGraph::in_memory().unwrap()); + g.upsert_node(n("foo")).await.unwrap(); + let t = MemoryRecallTool::new(g); + let r = t + .execute( + json!({ + "anchor_names": ["foo"], + "max_results": 9999, + "depth": 99 + }), + &tool_context(), + ) + .await + .unwrap(); + assert!(!r.is_error); +} diff --git a/crates/loopal-memory/tests/suite/rename_node_test.rs b/crates/loopal-memory/tests/suite/rename_node_test.rs new file mode 100644 index 00000000..f9209d84 --- /dev/null +++ b/crates/loopal-memory/tests/suite/rename_node_test.rs @@ -0,0 +1,93 @@ +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, path: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: Some(format!("desc-{}", id)), + file_path: path.into(), + body_preview: "body".into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn ref_edge(src: &str, dst: &str) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + } +} + +#[tokio::test] +async fn rename_preserves_incoming_edges() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("architecture", "architecture.md")) + .await + .unwrap(); + g.upsert_node(node("readme", "readme.md")).await.unwrap(); + g.insert_edge(ref_edge("readme", "architecture")) + .await + .unwrap(); + + let renamed = g + .rename_node("architecture", "system-design", "system-design.md") + .await + .unwrap(); + assert!(renamed); + + assert!(g.get_node("architecture").await.unwrap().is_none()); + let new_node = g.get_node("system-design").await.unwrap().unwrap(); + assert_eq!(new_node.file_path, "system-design.md"); + + let incoming = g.get_incoming_edges("system-design").await.unwrap(); + assert_eq!(incoming.len(), 1); + assert_eq!(incoming[0].src_id, "readme"); + assert_eq!(incoming[0].dst_id, "system-design"); +} + +#[tokio::test] +async fn rename_to_same_id_only_updates_file_path() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("foo", "foo.md")).await.unwrap(); + + let renamed = g.rename_node("foo", "foo", "moved/foo.md").await.unwrap(); + assert!(renamed); + + let got = g.get_node("foo").await.unwrap().unwrap(); + assert_eq!(got.file_path, "moved/foo.md"); +} + +#[tokio::test] +async fn rename_refuses_when_target_id_already_exists() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", "a.md")).await.unwrap(); + g.upsert_node(node("b", "b.md")).await.unwrap(); + + let renamed = g.rename_node("a", "b", "b.md").await.unwrap(); + assert!(!renamed); + + assert!(g.get_node("a").await.unwrap().is_some()); + assert!(g.get_node("b").await.unwrap().is_some()); +} + +#[tokio::test] +async fn rename_missing_source_returns_false() { + let g = MemoryGraph::in_memory().unwrap(); + let renamed = g + .rename_node("ghost", "phantom", "phantom.md") + .await + .unwrap(); + assert!(!renamed); +} diff --git a/crates/loopal-memory/tests/suite/render_index_test.rs b/crates/loopal-memory/tests/suite/render_index_test.rs new file mode 100644 index 00000000..4b66ecf8 --- /dev/null +++ b/crates/loopal-memory/tests/suite/render_index_test.rs @@ -0,0 +1,131 @@ +use loopal_memory::render::render_memory_md; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, kind: MemoryKind, desc: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: id.into(), + description: Some(desc.into()), + file_path: format!(".loopal/memory/{}.md", id), + body_preview: format!("body of {}", id), + created_at: 1_700_000_000_000, + updated_at: 1_700_000_000_000, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1_700_000_000_000, + } +} + +#[tokio::test] +async fn empty_graph_yields_minimal_index() { + let g = MemoryGraph::in_memory().unwrap(); + let md = render_memory_md(&g).await.unwrap(); + assert!(md.contains("# Memory Index")); + assert!(md.contains("node_count: 0")); + assert!(md.contains("Use memory_recall")); +} + +#[tokio::test] +async fn renders_section_per_kind() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("proj-a", MemoryKind::Project, "project a")) + .await + .unwrap(); + g.upsert_node(node("fb-1", MemoryKind::Feedback, "feedback")) + .await + .unwrap(); + g.upsert_node(node("user-x", MemoryKind::User, "user pref")) + .await + .unwrap(); + g.upsert_node(node("ref-y", MemoryKind::Reference, "reference")) + .await + .unwrap(); + + let md = render_memory_md(&g).await.unwrap(); + assert!(md.contains("## Project")); + assert!(md.contains("## Feedback")); + assert!(md.contains("## User")); + assert!(md.contains("## Reference")); + assert!(md.contains("[[proj-a]]")); +} + +#[tokio::test] +async fn entry_includes_inbound_count_when_referenced() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("popular", MemoryKind::Project, "p")) + .await + .unwrap(); + g.upsert_node(node("a", MemoryKind::Project, "a")) + .await + .unwrap(); + g.upsert_node(node("b", MemoryKind::Project, "b")) + .await + .unwrap(); + for src in ["a", "b"] { + g.insert_edge(MemoryEdge { + id: None, + src_id: src.into(), + dst_id: "popular".into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }) + .await + .unwrap(); + } + let md = render_memory_md(&g).await.unwrap(); + assert!(md.contains("[[popular]] (referenced by 2)")); +} + +#[tokio::test] +async fn index_kind_node_is_excluded_from_sections() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("MEMORY", MemoryKind::Index, "the index")) + .await + .unwrap(); + g.upsert_node(node("p", MemoryKind::Project, "p")) + .await + .unwrap(); + let md = render_memory_md(&g).await.unwrap(); + assert!(!md.contains("[[MEMORY]]")); + assert!(md.contains("[[p]]")); +} + +#[tokio::test] +async fn anti_read_guidance_present() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("p", MemoryKind::Project, "p")) + .await + .unwrap(); + let md = render_memory_md(&g).await.unwrap(); + assert!(md.contains("Do NOT Read individual .md files")); + assert!(md.contains("memory_recall")); +} + +#[tokio::test] +async fn frontmatter_has_generated_from_graph_marker() { + let g = MemoryGraph::in_memory().unwrap(); + let md = render_memory_md(&g).await.unwrap(); + assert!(md.starts_with("---")); + assert!(md.contains("generated_from: graph")); +} + +#[tokio::test] +async fn recent_section_orders_by_updated_at_desc() { + let g = MemoryGraph::in_memory().unwrap(); + let mut a = node("old", MemoryKind::Project, "old node"); + a.updated_at = 1_700_000_000_000; + let mut b = node("new", MemoryKind::Project, "new node"); + b.updated_at = 1_900_000_000_000; + g.upsert_node(a).await.unwrap(); + g.upsert_node(b).await.unwrap(); + let md = render_memory_md(&g).await.unwrap(); + let recent_section = md.split("## Recently added").nth(1).unwrap_or(""); + let new_pos = recent_section.find("[[new]]").unwrap_or(usize::MAX); + let old_pos = recent_section.find("[[old]]").unwrap_or(usize::MAX); + assert!(new_pos < old_pos); +} diff --git a/crates/loopal-memory/tests/suite/render_ranking_test.rs b/crates/loopal-memory/tests/suite/render_ranking_test.rs new file mode 100644 index 00000000..5d852e81 --- /dev/null +++ b/crates/loopal-memory/tests/suite/render_ranking_test.rs @@ -0,0 +1,65 @@ +use loopal_memory::render::ranking::rank; +use loopal_memory::{MemoryKind, MemoryNode}; + +fn node(id: &str, kind: MemoryKind) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: chrono::Utc::now().timestamp_millis(), + updated_at: chrono::Utc::now().timestamp_millis(), + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +#[test] +fn higher_incoming_count_yields_higher_score() { + let a = rank(node("a", MemoryKind::Project), 0); + let b = rank(node("b", MemoryKind::Project), 5); + assert!(b.score > a.score); +} + +#[test] +fn project_outranks_reference_at_same_metrics() { + let p = rank(node("p", MemoryKind::Project), 1); + let r = rank(node("r", MemoryKind::Reference), 1); + assert!(p.score > r.score); +} + +#[test] +fn orphan_node_gets_penalty() { + let with_inbound = rank(node("a", MemoryKind::Project), 1); + let orphan = rank(node("b", MemoryKind::Project), 0); + assert!(with_inbound.score > orphan.score); +} + +#[test] +fn expired_ttl_drags_score_down() { + let now = chrono::Utc::now().timestamp_millis(); + let day_ms: i64 = 1000 * 60 * 60 * 24; + let mut fresh = node("f", MemoryKind::Project); + fresh.created_at = now; + fresh.updated_at = now; + fresh.ttl_days = Some(90); + + let mut expired = node("e", MemoryKind::Project); + expired.created_at = now - 200 * day_ms; + expired.updated_at = now - 200 * day_ms; + expired.ttl_days = Some(90); + + let fs = rank(fresh, 1); + let es = rank(expired, 1); + assert!(fs.score > es.score); +} + +#[test] +fn index_type_weight_is_zero() { + let i = rank(node("idx", MemoryKind::Index), 0); + let p = rank(node("p", MemoryKind::Project), 0); + assert!(p.score > i.score); +} diff --git a/crates/loopal-memory/tests/suite/store_edge_case_test.rs b/crates/loopal-memory/tests/suite/store_edge_case_test.rs new file mode 100644 index 00000000..8b368a6d --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_edge_case_test.rs @@ -0,0 +1,156 @@ +use loopal_memory::{ + BfsConfig, EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance, +}; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +#[tokio::test] +async fn empty_graph_lists_and_counts_return_zero() { + let g = MemoryGraph::in_memory().unwrap(); + assert_eq!(g.node_count().await.unwrap(), 0); + assert_eq!(g.edge_count().await.unwrap(), 0); + assert!(g.list_nodes(None).await.unwrap().is_empty()); + assert!( + g.list_nodes_by_kind(MemoryKind::Project) + .await + .unwrap() + .is_empty() + ); +} + +#[tokio::test] +async fn bfs_on_empty_db_returns_only_unknown_start() { + let g = MemoryGraph::in_memory().unwrap(); + let sub = g + .bfs(&["ghost".into()], BfsConfig::default()) + .await + .unwrap(); + assert!(sub.nodes.is_empty()); + assert!(sub.edges.is_empty()); +} + +#[tokio::test] +async fn bfs_with_empty_start_ids_returns_empty_subgraph() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + let sub = g.bfs(&[], BfsConfig::default()).await.unwrap(); + assert!(sub.nodes.is_empty()); +} + +#[tokio::test] +async fn unicode_slug_is_preserved() { + let g = MemoryGraph::in_memory().unwrap(); + let mut n = node("a"); + n.id = "中文-slug-_测试".into(); + n.name = "中文 name with emoji ✨".into(); + n.body_preview = "测试 body 内容".into(); + n.file_path = "中文-slug-_测试.md".into(); + g.upsert_node(n.clone()).await.unwrap(); + let got = g.get_node("中文-slug-_测试").await.unwrap().unwrap(); + assert_eq!(got, n); +} + +#[tokio::test] +async fn deeply_nested_paths_are_stored_verbatim() { + let g = MemoryGraph::in_memory().unwrap(); + let mut n = node("nested"); + n.file_path = ".loopal/memory/sub/group/nested.md".into(); + g.upsert_node(n.clone()).await.unwrap(); + let got = g + .find_node_by_path(".loopal/memory/sub/group/nested.md") + .await + .unwrap() + .unwrap(); + assert_eq!(got.file_path, n.file_path); +} + +#[tokio::test] +async fn bfs_respects_limit_nodes() { + let g = MemoryGraph::in_memory().unwrap(); + for i in 0..10 { + g.upsert_node(node(&format!("n{}", i))).await.unwrap(); + } + for i in 0..9 { + let e = MemoryEdge { + id: None, + src_id: format!("n{}", i), + dst_id: format!("n{}", i + 1), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + }; + g.insert_edge(e).await.unwrap(); + } + let sub = g + .bfs( + &["n0".into()], + BfsConfig { + max_depth: 10, + limit_nodes: 4, + ..Default::default() + }, + ) + .await + .unwrap(); + assert!(sub.nodes.len() <= 4); +} + +#[tokio::test] +async fn edge_metadata_round_trip() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + g.upsert_node(node("b")).await.unwrap(); + let meta = serde_json::json!({"hint": "from frontmatter", "count": 3}); + let e = MemoryEdge { + id: None, + src_id: "a".into(), + dst_id: "b".into(), + kind: EdgeKind::References, + line: Some(42), + metadata: Some(meta.clone()), + provenance: Provenance::Frontmatter, + confidence: 0.95, + created_at: 1, + }; + g.insert_edge(e).await.unwrap(); + let edges = g.get_outgoing_edges("a").await.unwrap(); + assert_eq!(edges.len(), 1); + assert_eq!(edges[0].metadata, Some(meta)); + assert_eq!(edges[0].line, Some(42)); +} + +#[tokio::test] +async fn open_creates_parent_directory() { + let dir = tempfile::tempdir().unwrap(); + let db_path = dir.path().join("a").join("b").join("c").join("index.db"); + let g = MemoryGraph::open(&db_path).unwrap(); + g.upsert_node(node("a")).await.unwrap(); + assert!(db_path.exists()); +} + +#[tokio::test] +async fn ttl_days_optional_field_persists_none() { + let g = MemoryGraph::in_memory().unwrap(); + let mut n = node("a"); + n.ttl_days = None; + g.upsert_node(n.clone()).await.unwrap(); + let got = g.get_node("a").await.unwrap().unwrap(); + assert!(got.ttl_days.is_none()); +} diff --git a/crates/loopal-memory/tests/suite/store_edge_test.rs b/crates/loopal-memory/tests/suite/store_edge_test.rs new file mode 100644 index 00000000..555721b8 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_edge_test.rs @@ -0,0 +1,259 @@ +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn edge(src: &str, dst: &str, kind: EdgeKind, prov: Provenance, conf: f32) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind, + line: None, + metadata: None, + provenance: prov, + confidence: conf, + created_at: 1, + } +} + +async fn setup() -> MemoryGraph { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + g.upsert_node(node("b")).await.unwrap(); + g.upsert_node(node("c")).await.unwrap(); + g +} + +#[tokio::test] +async fn insert_returns_rowid_and_increments_count() { + let g = setup().await; + let e = edge("a", "b", EdgeKind::References, Provenance::Frontmatter, 1.0); + let id = g.insert_edge(e).await.unwrap(); + assert!(id > 0); + assert_eq!(g.edge_count().await.unwrap(), 1); +} + +#[tokio::test] +async fn outgoing_and_incoming_are_separate() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "a", + "c", + EdgeKind::References, + Provenance::InlineLink, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "c", + "a", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + + let out_a = g.get_outgoing_edges("a").await.unwrap(); + assert_eq!(out_a.len(), 2); + let in_a = g.get_incoming_edges("a").await.unwrap(); + assert_eq!(in_a.len(), 1); + assert_eq!(in_a[0].src_id, "c"); +} + +#[tokio::test] +async fn duplicate_triple_updates_instead_of_inserting() { + let g = setup().await; + let mut e = edge("a", "b", EdgeKind::References, Provenance::Frontmatter, 0.5); + g.insert_edge(e.clone()).await.unwrap(); + e.confidence = 0.9; + g.insert_edge(e).await.unwrap(); + let edges = g.get_outgoing_edges("a").await.unwrap(); + assert_eq!(edges.len(), 1); + assert!((edges[0].confidence - 0.9).abs() < 1e-6); +} + +#[tokio::test] +async fn different_provenance_creates_separate_edges() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::InlineLink, + 1.0, + )) + .await + .unwrap(); + let edges = g.get_outgoing_edges("a").await.unwrap(); + assert_eq!(edges.len(), 2); +} + +#[tokio::test] +async fn count_incoming_returns_correct_value() { + let g = setup().await; + g.insert_edge(edge( + "a", + "c", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "b", + "c", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + assert_eq!(g.count_incoming("c").await.unwrap(), 2); + assert_eq!(g.count_incoming("a").await.unwrap(), 0); +} + +#[tokio::test] +async fn delete_node_cascades_to_edges() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "b", + "c", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + assert_eq!(g.edge_count().await.unwrap(), 2); + + g.delete_node("b").await.unwrap(); + assert_eq!(g.edge_count().await.unwrap(), 0); +} + +#[tokio::test] +async fn delete_edges_for_node_removes_both_directions() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "c", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + let n = g.delete_edges_for_node("b").await.unwrap(); + assert_eq!(n, 2); + assert_eq!(g.edge_count().await.unwrap(), 0); +} + +#[tokio::test] +async fn list_by_provenance_filters_correctly() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "a", + "c", + EdgeKind::CoOccursSlug, + Provenance::Synthesized, + 0.8, + )) + .await + .unwrap(); + let synth = g + .list_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap(); + assert_eq!(synth.len(), 1); + assert_eq!(synth[0].kind, EdgeKind::CoOccursSlug); +} + +#[tokio::test] +async fn delete_edges_by_provenance_targets_correctly() { + let g = setup().await; + g.insert_edge(edge( + "a", + "b", + EdgeKind::References, + Provenance::Frontmatter, + 1.0, + )) + .await + .unwrap(); + g.insert_edge(edge( + "a", + "c", + EdgeKind::CoOccursSlug, + Provenance::Synthesized, + 0.8, + )) + .await + .unwrap(); + let n = g + .delete_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap(); + assert_eq!(n, 1); + assert_eq!(g.edge_count().await.unwrap(), 1); +} diff --git a/crates/loopal-memory/tests/suite/store_fts_test.rs b/crates/loopal-memory/tests/suite/store_fts_test.rs new file mode 100644 index 00000000..a1525a29 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_fts_test.rs @@ -0,0 +1,178 @@ +use loopal_memory::{MemoryGraph, MemoryKind, MemoryNode}; + +fn node_with(id: &str, kind: MemoryKind, name: &str, desc: &str, body: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: name.into(), + description: Some(desc.into()), + file_path: format!("{}.md", id), + body_preview: body.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +#[tokio::test] +async fn search_finds_node_by_body_keyword() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "rate-limit", + MemoryKind::Project, + "Twitter rate limits", + "rate limiting rules", + "do not exceed 50 calls per hour", + )) + .await + .unwrap(); + g.upsert_node(node_with( + "scanner", + MemoryKind::Project, + "Scanner idempotency", + "state machine for scanner", + "track processed ids", + )) + .await + .unwrap(); + + let hits = g.search("rate", None, 10).await.unwrap(); + assert_eq!(hits.len(), 1); + assert_eq!(hits[0].node.id, "rate-limit"); +} + +#[tokio::test] +async fn search_finds_node_by_name_or_description() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "foo", + MemoryKind::Project, + "uniquetwitter", + "describes a thing", + "body has no special words", + )) + .await + .unwrap(); + + let hits = g.search("uniquetwitter", None, 10).await.unwrap(); + assert_eq!(hits.len(), 1); + let hits = g.search("describes", None, 10).await.unwrap(); + assert_eq!(hits.len(), 1); +} + +#[tokio::test] +async fn search_with_kind_filter_excludes_other_kinds() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "p", + MemoryKind::Project, + "rate limit project", + "", + "twitter", + )) + .await + .unwrap(); + g.upsert_node(node_with( + "f", + MemoryKind::Feedback, + "rate limit feedback", + "", + "twitter", + )) + .await + .unwrap(); + + let hits = g + .search("twitter", Some(MemoryKind::Feedback), 10) + .await + .unwrap(); + assert_eq!(hits.len(), 1); + assert_eq!(hits[0].node.id, "f"); +} + +#[tokio::test] +async fn search_respects_limit() { + let g = MemoryGraph::in_memory().unwrap(); + for i in 0..5 { + g.upsert_node(node_with( + &format!("n{}", i), + MemoryKind::Project, + &format!("rate node {}", i), + "", + "twitter rate", + )) + .await + .unwrap(); + } + let hits = g.search("rate", None, 3).await.unwrap(); + assert_eq!(hits.len(), 3); +} + +#[tokio::test] +async fn search_returns_empty_for_no_match() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "foo", + MemoryKind::Project, + "hello world", + "", + "body", + )) + .await + .unwrap(); + let hits = g.search("nonexistentterm", None, 10).await.unwrap(); + assert!(hits.is_empty()); +} + +#[tokio::test] +async fn search_returns_empty_for_empty_query() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with("foo", MemoryKind::Project, "twitter", "", "body")) + .await + .unwrap(); + let hits = g.search("", None, 10).await.unwrap(); + assert!(hits.is_empty()); + let hits = g.search(" ", None, 10).await.unwrap(); + assert!(hits.is_empty()); +} + +#[tokio::test] +async fn deleted_node_no_longer_appears_in_fts() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "foo", + MemoryKind::Project, + "uniqueterm", + "", + "body", + )) + .await + .unwrap(); + assert_eq!(g.search("uniqueterm", None, 10).await.unwrap().len(), 1); + g.delete_node("foo").await.unwrap(); + assert_eq!(g.search("uniqueterm", None, 10).await.unwrap().len(), 0); +} + +#[tokio::test] +async fn updated_node_reflects_new_body_in_fts() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node_with( + "foo", + MemoryKind::Project, + "original", + "", + "alpha", + )) + .await + .unwrap(); + assert_eq!(g.search("alpha", None, 10).await.unwrap().len(), 1); + + let mut n = node_with("foo", MemoryKind::Project, "updated", "", "beta"); + n.updated_at = 999; + g.upsert_node(n).await.unwrap(); + + assert_eq!(g.search("alpha", None, 10).await.unwrap().len(), 0); + assert_eq!(g.search("beta", None, 10).await.unwrap().len(), 1); +} diff --git a/crates/loopal-memory/tests/suite/store_graph_filter_test.rs b/crates/loopal-memory/tests/suite/store_graph_filter_test.rs new file mode 100644 index 00000000..56184516 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_graph_filter_test.rs @@ -0,0 +1,124 @@ +use loopal_memory::{ + BfsConfig, EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance, +}; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn edge(src: &str, dst: &str, kind: EdgeKind, conf: f32) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: conf, + created_at: 1, + } +} + +#[tokio::test] +async fn bfs_min_confidence_filters_weak_edges() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + g.upsert_node(node("b")).await.unwrap(); + g.upsert_node(node("c")).await.unwrap(); + g.insert_edge(edge("a", "b", EdgeKind::CoOccursSlug, 0.9)) + .await + .unwrap(); + g.insert_edge(edge("a", "c", EdgeKind::CoOccursSlug, 0.3)) + .await + .unwrap(); + + let sub = g + .bfs( + &["a".into()], + BfsConfig { + max_depth: 1, + min_confidence: 0.7, + ..Default::default() + }, + ) + .await + .unwrap(); + let mut ids: Vec<&str> = sub.nodes.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["a", "b"]); +} + +#[tokio::test] +async fn bfs_edge_kinds_filter() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + g.upsert_node(node("b")).await.unwrap(); + g.upsert_node(node("c")).await.unwrap(); + g.insert_edge(edge("a", "b", EdgeKind::References, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("a", "c", EdgeKind::CoOccursSlug, 1.0)) + .await + .unwrap(); + + let sub = g + .bfs( + &["a".into()], + BfsConfig { + max_depth: 1, + edge_kinds: Some(vec![EdgeKind::References]), + ..Default::default() + }, + ) + .await + .unwrap(); + let mut ids: Vec<&str> = sub.nodes.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["a", "b"]); +} + +#[tokio::test] +async fn bfs_multi_edge_kinds_filter_or_semantics() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a")).await.unwrap(); + g.upsert_node(node("b")).await.unwrap(); + g.upsert_node(node("c")).await.unwrap(); + g.upsert_node(node("d")).await.unwrap(); + g.insert_edge(edge("a", "b", EdgeKind::References, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("a", "c", EdgeKind::DerivedFrom, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("a", "d", EdgeKind::CoOccursSlug, 1.0)) + .await + .unwrap(); + + let sub = g + .bfs( + &["a".into()], + BfsConfig { + max_depth: 1, + edge_kinds: Some(vec![EdgeKind::References, EdgeKind::DerivedFrom]), + ..Default::default() + }, + ) + .await + .unwrap(); + let mut ids: Vec<&str> = sub.nodes.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["a", "b", "c"]); +} diff --git a/crates/loopal-memory/tests/suite/store_graph_test.rs b/crates/loopal-memory/tests/suite/store_graph_test.rs new file mode 100644 index 00000000..d3e1ac42 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_graph_test.rs @@ -0,0 +1,150 @@ +use loopal_memory::{ + BfsConfig, EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance, +}; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn edge(src: &str, dst: &str, kind: EdgeKind, conf: f32) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: conf, + created_at: 1, + } +} + +async fn graph_with_chain() -> MemoryGraph { + let g = MemoryGraph::in_memory().unwrap(); + for id in ["a", "b", "c", "d"] { + g.upsert_node(node(id)).await.unwrap(); + } + g.insert_edge(edge("a", "b", EdgeKind::References, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("b", "c", EdgeKind::References, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("c", "d", EdgeKind::References, 1.0)) + .await + .unwrap(); + g +} + +#[tokio::test] +async fn bfs_depth_zero_returns_only_start_nodes() { + let g = graph_with_chain().await; + let cfg = BfsConfig { + max_depth: 0, + ..Default::default() + }; + let sub = g.bfs(&["a".into()], cfg).await.unwrap(); + assert_eq!(sub.nodes.len(), 1); + assert_eq!(sub.nodes[0].id, "a"); + assert!(sub.edges.is_empty()); +} + +#[tokio::test] +async fn bfs_depth_two_reaches_exactly_two_hops() { + let g = graph_with_chain().await; + let cfg = BfsConfig { + max_depth: 2, + ..Default::default() + }; + let sub = g.bfs(&["a".into()], cfg).await.unwrap(); + let mut ids: Vec<&str> = sub.nodes.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["a", "b", "c"]); +} + +#[tokio::test] +async fn bfs_is_bidirectional_symmetric() { + let g = graph_with_chain().await; + let cfg = BfsConfig { + max_depth: 3, + ..Default::default() + }; + let from_a = g.bfs(&["a".into()], cfg).await.unwrap(); + let from_d = g + .bfs( + &["d".into()], + BfsConfig { + max_depth: 3, + ..Default::default() + }, + ) + .await + .unwrap(); + + let mut ids_a: Vec = from_a.nodes.iter().map(|n| n.id.clone()).collect(); + let mut ids_d: Vec = from_d.nodes.iter().map(|n| n.id.clone()).collect(); + ids_a.sort(); + ids_d.sort(); + assert_eq!(ids_a, vec!["a", "b", "c", "d"]); + assert_eq!(ids_d, vec!["a", "b", "c", "d"]); +} + +#[tokio::test] +async fn bfs_inbound_neighbors_reachable() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("center")).await.unwrap(); + g.upsert_node(node("inbound")).await.unwrap(); + g.upsert_node(node("outbound")).await.unwrap(); + g.insert_edge(edge("inbound", "center", EdgeKind::References, 1.0)) + .await + .unwrap(); + g.insert_edge(edge("center", "outbound", EdgeKind::References, 1.0)) + .await + .unwrap(); + + let sub = g + .bfs( + &["center".into()], + BfsConfig { + max_depth: 1, + ..Default::default() + }, + ) + .await + .unwrap(); + let mut ids: Vec<&str> = sub.nodes.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["center", "inbound", "outbound"]); +} + +#[tokio::test] +async fn bfs_records_depth_for_each_node() { + let g = graph_with_chain().await; + let sub = g + .bfs( + &["a".into()], + BfsConfig { + max_depth: 3, + ..Default::default() + }, + ) + .await + .unwrap(); + assert_eq!(sub.depth_by_id["a"], 0); + assert_eq!(sub.depth_by_id["b"], 1); + assert_eq!(sub.depth_by_id["c"], 2); + assert_eq!(sub.depth_by_id["d"], 3); +} diff --git a/crates/loopal-memory/tests/suite/store_node_test.rs b/crates/loopal-memory/tests/suite/store_node_test.rs new file mode 100644 index 00000000..78189fa3 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_node_test.rs @@ -0,0 +1,167 @@ +use loopal_memory::{MemoryGraph, MemoryKind, MemoryNode}; + +fn make_node(id: &str, kind: MemoryKind, path: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: id.into(), + description: Some(format!("desc-{}", id)), + file_path: path.into(), + body_preview: format!("body of {}", id), + created_at: 1_700_000_000_000, + updated_at: 1_700_000_000_000, + ttl_days: Some(90), + content_hash: "h".repeat(64), + indexed_at: 1_700_000_000_000, + } +} + +#[tokio::test] +async fn upsert_then_get_returns_node() { + let g = MemoryGraph::in_memory().unwrap(); + let n = make_node("foo", MemoryKind::Project, ".loopal/memory/foo.md"); + g.upsert_node(n.clone()).await.unwrap(); + let got = g.get_node("foo").await.unwrap().unwrap(); + assert_eq!(got, n); +} + +#[tokio::test] +async fn get_returns_none_for_missing_id() { + let g = MemoryGraph::in_memory().unwrap(); + assert!(g.get_node("ghost").await.unwrap().is_none()); +} + +#[tokio::test] +async fn upsert_is_idempotent_and_updates_fields() { + let g = MemoryGraph::in_memory().unwrap(); + let mut n = make_node("foo", MemoryKind::Project, ".loopal/memory/foo.md"); + g.upsert_node(n.clone()).await.unwrap(); + n.description = Some("changed".into()); + n.updated_at = 1_800_000_000_000; + n.content_hash = "i".repeat(64); + g.upsert_node(n.clone()).await.unwrap(); + let got = g.get_node("foo").await.unwrap().unwrap(); + assert_eq!(got.description, Some("changed".into())); + assert_eq!(got.updated_at, 1_800_000_000_000); + assert_eq!(g.node_count().await.unwrap(), 1); +} + +#[tokio::test] +async fn upsert_with_same_content_hash_preserves_updated_at() { + let g = MemoryGraph::in_memory().unwrap(); + let mut n = make_node("foo", MemoryKind::Project, ".loopal/memory/foo.md"); + g.upsert_node(n.clone()).await.unwrap(); + n.description = Some("metadata-changed".into()); + n.updated_at = 1_800_000_000_000; + g.upsert_node(n.clone()).await.unwrap(); + let got = g.get_node("foo").await.unwrap().unwrap(); + assert_eq!(got.description, Some("metadata-changed".into())); + assert_eq!(got.updated_at, 1_700_000_000_000); +} + +#[tokio::test] +async fn list_returns_all_ordered_by_updated_at() { + let g = MemoryGraph::in_memory().unwrap(); + let mut a = make_node("a", MemoryKind::Project, "a.md"); + a.updated_at = 100; + let mut b = make_node("b", MemoryKind::Feedback, "b.md"); + b.updated_at = 300; + let mut c = make_node("c", MemoryKind::User, "c.md"); + c.updated_at = 200; + g.upsert_node(a).await.unwrap(); + g.upsert_node(b).await.unwrap(); + g.upsert_node(c).await.unwrap(); + + let nodes = g.list_nodes(None).await.unwrap(); + let ids: Vec<&str> = nodes.iter().map(|n| n.id.as_str()).collect(); + assert_eq!(ids, vec!["b", "c", "a"]); +} + +#[tokio::test] +async fn list_by_kind_filters() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make_node("a", MemoryKind::Project, "a.md")) + .await + .unwrap(); + g.upsert_node(make_node("b", MemoryKind::Feedback, "b.md")) + .await + .unwrap(); + g.upsert_node(make_node("c", MemoryKind::Project, "c.md")) + .await + .unwrap(); + + let projects = g.list_nodes_by_kind(MemoryKind::Project).await.unwrap(); + assert_eq!(projects.len(), 2); + let feedback = g.list_nodes_by_kind(MemoryKind::Feedback).await.unwrap(); + assert_eq!(feedback.len(), 1); + let users = g.list_nodes_by_kind(MemoryKind::User).await.unwrap(); + assert_eq!(users.len(), 0); +} + +#[tokio::test] +async fn delete_removes_node_and_returns_true_once() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make_node("foo", MemoryKind::Project, "foo.md")) + .await + .unwrap(); + assert!(g.delete_node("foo").await.unwrap()); + assert!(!g.delete_node("foo").await.unwrap()); + assert!(g.get_node("foo").await.unwrap().is_none()); +} + +#[tokio::test] +async fn find_by_file_path_matches_unique_node() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make_node( + "foo", + MemoryKind::Project, + ".loopal/memory/foo.md", + )) + .await + .unwrap(); + let got = g + .find_node_by_path(".loopal/memory/foo.md") + .await + .unwrap() + .unwrap(); + assert_eq!(got.id, "foo"); + assert!( + g.find_node_by_path(".loopal/memory/missing.md") + .await + .unwrap() + .is_none() + ); +} + +#[tokio::test] +async fn get_many_returns_present_subset() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(make_node("a", MemoryKind::Project, "a.md")) + .await + .unwrap(); + g.upsert_node(make_node("c", MemoryKind::Project, "c.md")) + .await + .unwrap(); + let got = g + .get_nodes(&["a".into(), "b".into(), "c".into()]) + .await + .unwrap(); + let mut ids: Vec<&str> = got.iter().map(|n| n.id.as_str()).collect(); + ids.sort(); + assert_eq!(ids, vec!["a", "c"]); +} + +#[tokio::test] +async fn count_reflects_upserts_and_deletes() { + let g = MemoryGraph::in_memory().unwrap(); + assert_eq!(g.node_count().await.unwrap(), 0); + g.upsert_node(make_node("a", MemoryKind::Project, "a.md")) + .await + .unwrap(); + g.upsert_node(make_node("b", MemoryKind::Project, "b.md")) + .await + .unwrap(); + assert_eq!(g.node_count().await.unwrap(), 2); + g.delete_node("a").await.unwrap(); + assert_eq!(g.node_count().await.unwrap(), 1); +} diff --git a/crates/loopal-memory/tests/suite/store_types_test.rs b/crates/loopal-memory/tests/suite/store_types_test.rs new file mode 100644 index 00000000..7b289662 --- /dev/null +++ b/crates/loopal-memory/tests/suite/store_types_test.rs @@ -0,0 +1,85 @@ +use loopal_memory::{EdgeKind, MemoryKind, Provenance}; + +#[test] +fn memory_kind_round_trip() { + for k in [ + MemoryKind::User, + MemoryKind::Feedback, + MemoryKind::Project, + MemoryKind::Reference, + MemoryKind::Index, + ] { + let s = k.as_str(); + assert_eq!(MemoryKind::parse(s).unwrap(), k); + } +} + +#[test] +fn memory_kind_parse_rejects_unknown() { + assert!(MemoryKind::parse("nope").is_err()); + assert!(MemoryKind::parse("").is_err()); + assert!(MemoryKind::parse("USER").is_err()); +} + +#[test] +fn memory_kind_serde_uses_snake_case() { + let s = serde_json::to_string(&MemoryKind::Feedback).unwrap(); + assert_eq!(s, "\"feedback\""); + let k: MemoryKind = serde_json::from_str("\"reference\"").unwrap(); + assert_eq!(k, MemoryKind::Reference); +} + +#[test] +fn edge_kind_round_trip() { + for k in [ + EdgeKind::References, + EdgeKind::ContainedIn, + EdgeKind::SupersededBy, + EdgeKind::DerivedFrom, + EdgeKind::CoOccursSlug, + EdgeKind::Contradicts, + ] { + let s = k.as_str(); + assert_eq!(EdgeKind::parse(s).unwrap(), k); + } +} + +#[test] +fn edge_kind_parse_rejects_unknown() { + assert!(EdgeKind::parse("invalid").is_err()); + assert!(EdgeKind::parse("references ").is_err()); +} + +#[test] +fn edge_kind_serde_uses_snake_case() { + let s = serde_json::to_string(&EdgeKind::ContainedIn).unwrap(); + assert_eq!(s, "\"contained_in\""); +} + +#[test] +fn provenance_round_trip() { + for p in [ + Provenance::Frontmatter, + Provenance::InlineLink, + Provenance::Index, + Provenance::Synthesized, + Provenance::UserStated, + ] { + let s = p.as_str(); + assert_eq!(Provenance::parse(s).unwrap(), p); + } +} + +#[test] +fn provenance_uses_kebab_case() { + assert_eq!(Provenance::InlineLink.as_str(), "inline-link"); + assert_eq!(Provenance::UserStated.as_str(), "user-stated"); + let s = serde_json::to_string(&Provenance::InlineLink).unwrap(); + assert_eq!(s, "\"inline-link\""); +} + +#[test] +fn provenance_parse_rejects_snake_case_form() { + assert!(Provenance::parse("inline_link").is_err()); + assert!(Provenance::parse("user_stated").is_err()); +} diff --git a/crates/loopal-memory/tests/suite/sync_init_test.rs b/crates/loopal-memory/tests/suite/sync_init_test.rs new file mode 100644 index 00000000..5891c29e --- /dev/null +++ b/crates/loopal-memory/tests/suite/sync_init_test.rs @@ -0,0 +1,93 @@ +use loopal_memory::MemoryGraph; +use loopal_memory::sync::scan_directory; + +#[tokio::test] +async fn scan_empty_directory_yields_zero_stats() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = tempfile::tempdir().unwrap(); + let stats = scan_directory(&g, dir.path()).await.unwrap(); + assert_eq!(stats.files_scanned, 0); + assert_eq!(stats.nodes_indexed, 0); +} + +#[tokio::test] +async fn scan_missing_directory_succeeds_with_zero_files() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = std::path::PathBuf::from("/this/does/not/exist"); + let stats = scan_directory(&g, &dir).await.unwrap(); + assert_eq!(stats.files_scanned, 0); +} + +#[tokio::test] +async fn scan_indexes_single_markdown_file() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = tempfile::tempdir().unwrap(); + let file_path = dir.path().join("twitter-auto.md"); + std::fs::write( + &file_path, + "---\nname: Twitter Auto\ntype: project\n---\n\nbody content here\n", + ) + .unwrap(); + + let stats = scan_directory(&g, dir.path()).await.unwrap(); + assert_eq!(stats.files_scanned, 1); + assert_eq!(stats.nodes_indexed, 1); + + let node = g.get_node("twitter-auto").await.unwrap().unwrap(); + assert_eq!(node.name, "Twitter Auto"); +} + +#[tokio::test] +async fn scan_indexes_multiple_files_with_edges() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = tempfile::tempdir().unwrap(); + std::fs::write( + dir.path().join("a.md"), + "---\nname: a\ntype: project\nrelated:\n - b\n---\nbody\n", + ) + .unwrap(); + std::fs::write( + dir.path().join("b.md"), + "---\nname: b\ntype: project\n---\nrefers to [[a]] inline\n", + ) + .unwrap(); + + let stats = scan_directory(&g, dir.path()).await.unwrap(); + assert_eq!(stats.files_scanned, 2); + assert_eq!(stats.nodes_indexed, 2); + assert!(stats.edges_indexed >= 2); +} + +#[tokio::test] +async fn scan_runs_synthesizers_to_populate_co_occurs() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = tempfile::tempdir().unwrap(); + for slug in ["twitter-a", "twitter-b", "twitter-c"] { + std::fs::write( + dir.path().join(format!("{}.md", slug)), + format!("---\nname: {}\ntype: project\n---\nbody\n", slug), + ) + .unwrap(); + } + + let stats = scan_directory(&g, dir.path()).await.unwrap(); + assert_eq!(stats.files_scanned, 3); + + let synth = g + .list_edges_by_provenance(loopal_memory::Provenance::Synthesized) + .await + .unwrap(); + assert_eq!(synth.len(), 3); +} + +#[tokio::test] +async fn scan_skips_non_markdown_files() { + let g = MemoryGraph::in_memory().unwrap(); + let dir = tempfile::tempdir().unwrap(); + std::fs::write(dir.path().join("real.md"), "---\nname: real\n---\nbody").unwrap(); + std::fs::write(dir.path().join("ignore.txt"), "not markdown").unwrap(); + std::fs::write(dir.path().join("ignore.json"), "{}").unwrap(); + + let stats = scan_directory(&g, dir.path()).await.unwrap(); + assert_eq!(stats.files_scanned, 1); +} diff --git a/crates/loopal-memory/tests/suite/synth_derive_test.rs b/crates/loopal-memory/tests/suite/synth_derive_test.rs new file mode 100644 index 00000000..0fff7c92 --- /dev/null +++ b/crates/loopal-memory/tests/suite/synth_derive_test.rs @@ -0,0 +1,109 @@ +use loopal_memory::synthesize::run_all; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, kind: MemoryKind) -> MemoryNode { + MemoryNode { + id: id.into(), + kind, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +fn references_edge(src: &str, dst: &str) -> MemoryEdge { + MemoryEdge { + id: None, + src_id: src.into(), + dst_id: dst.into(), + kind: EdgeKind::References, + line: None, + metadata: None, + provenance: Provenance::Frontmatter, + confidence: 1.0, + created_at: 1, + } +} + +async fn derived_edges(g: &MemoryGraph) -> Vec { + g.list_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap() + .into_iter() + .filter(|e| e.kind == EdgeKind::DerivedFrom) + .collect() +} + +#[tokio::test] +async fn project_referencing_user_yields_derived_from() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("policy", MemoryKind::Project)) + .await + .unwrap(); + g.upsert_node(node("style-pref", MemoryKind::User)) + .await + .unwrap(); + g.insert_edge(references_edge("policy", "style-pref")) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + + let synth = derived_edges(&g).await; + assert_eq!(synth.len(), 1); + assert_eq!(synth[0].src_id, "policy"); + assert_eq!(synth[0].dst_id, "style-pref"); +} + +#[tokio::test] +async fn project_referencing_non_user_yields_nothing() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", MemoryKind::Project)).await.unwrap(); + g.upsert_node(node("b", MemoryKind::Project)).await.unwrap(); + g.upsert_node(node("c", MemoryKind::Reference)) + .await + .unwrap(); + g.insert_edge(references_edge("a", "b")).await.unwrap(); + g.insert_edge(references_edge("a", "c")).await.unwrap(); + + run_all(&g).await.unwrap(); + + assert!(derived_edges(&g).await.is_empty()); +} + +#[tokio::test] +async fn non_project_source_ignored_even_with_user_target() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("ref", MemoryKind::Reference)) + .await + .unwrap(); + g.upsert_node(node("user-pref", MemoryKind::User)) + .await + .unwrap(); + g.insert_edge(references_edge("ref", "user-pref")) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + + assert!(derived_edges(&g).await.is_empty()); +} + +#[tokio::test] +async fn is_idempotent_under_repeated_runs() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("p", MemoryKind::Project)).await.unwrap(); + g.upsert_node(node("u", MemoryKind::User)).await.unwrap(); + g.insert_edge(references_edge("p", "u")).await.unwrap(); + + run_all(&g).await.unwrap(); + run_all(&g).await.unwrap(); + let synth = derived_edges(&g).await; + assert_eq!(synth.len(), 1); +} diff --git a/crates/loopal-memory/tests/suite/synth_slug_test.rs b/crates/loopal-memory/tests/suite/synth_slug_test.rs new file mode 100644 index 00000000..2d0bd6fa --- /dev/null +++ b/crates/loopal-memory/tests/suite/synth_slug_test.rs @@ -0,0 +1,100 @@ +use loopal_memory::synthesize::run_all; +use loopal_memory::synthesize::slug_cluster::group_by_prefix; +use loopal_memory::{EdgeKind, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: id.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +async fn slug_edges(g: &MemoryGraph) -> Vec { + g.list_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap() + .into_iter() + .filter(|e| e.kind == EdgeKind::CoOccursSlug) + .collect() +} + +#[test] +fn group_by_prefix_collects_same_prefix() { + let ids: Vec = vec![ + "twitter-a".into(), + "twitter-b".into(), + "twitter-c".into(), + "scanner-x".into(), + "scanner-y".into(), + "lonely".into(), + ]; + let map = group_by_prefix(&ids); + assert_eq!(map.get("twitter").map(|v| v.len()), Some(3)); + assert_eq!(map.get("scanner").map(|v| v.len()), Some(2)); + assert!(!map.contains_key("lonely")); +} + +#[test] +fn group_by_prefix_ignores_no_dash_ids() { + let ids: Vec = vec!["foo".into(), "bar".into(), "baz".into()]; + let map = group_by_prefix(&ids); + assert!(map.is_empty()); +} + +#[tokio::test] +async fn synthesize_creates_pair_edges_within_cluster() { + let g = MemoryGraph::in_memory().unwrap(); + for id in ["twitter-a", "twitter-b", "twitter-c"] { + g.upsert_node(node(id)).await.unwrap(); + } + run_all(&g).await.unwrap(); + let edges = slug_edges(&g).await; + assert_eq!(edges.len(), 3); + let expected_conf = 0.5_f32; + assert!((edges[0].confidence - expected_conf).abs() < 1e-6); +} + +#[tokio::test] +async fn synthesize_confidence_inverse_to_cluster_size() { + let g = MemoryGraph::in_memory().unwrap(); + for id in ["x-1", "x-2", "x-3", "x-4", "x-5"] { + g.upsert_node(node(id)).await.unwrap(); + } + run_all(&g).await.unwrap(); + let edges = slug_edges(&g).await; + assert_eq!(edges.len(), 10); + // N=5 大簇:1/(N-1) = 0.25 < 0.3 默认 BFS 阈值 → query-mode 自动剪枝; + // 但 slug_cluster 仍持久化这条边,anchor-mode (min_confidence=0.1) 可以达到。 + let expected = 1.0_f32 / 4.0; + assert!((edges[0].confidence - expected).abs() < 1e-6); +} + +#[tokio::test] +async fn synthesize_does_nothing_when_no_clusters_exist() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("twitter-only")).await.unwrap(); + g.upsert_node(node("scanner-only")).await.unwrap(); + run_all(&g).await.unwrap(); + assert!(slug_edges(&g).await.is_empty()); +} + +#[tokio::test] +async fn synthesize_is_idempotent() { + let g = MemoryGraph::in_memory().unwrap(); + for id in ["a-1", "a-2", "a-3"] { + g.upsert_node(node(id)).await.unwrap(); + } + run_all(&g).await.unwrap(); + run_all(&g).await.unwrap(); + let edges = slug_edges(&g).await; + assert_eq!(edges.len(), 3); +} diff --git a/crates/loopal-memory/tests/suite/synth_supersede_test.rs b/crates/loopal-memory/tests/suite/synth_supersede_test.rs new file mode 100644 index 00000000..dc17e5f5 --- /dev/null +++ b/crates/loopal-memory/tests/suite/synth_supersede_test.rs @@ -0,0 +1,93 @@ +use loopal_memory::synthesize::run_all; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, body: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: body.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +async fn superseded_edges(g: &MemoryGraph) -> Vec { + g.list_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap() + .into_iter() + .filter(|e| e.kind == EdgeKind::SupersededBy) + .collect() +} + +#[tokio::test] +async fn supersedes_keyword_creates_edge() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("old-policy", "old text")).await.unwrap(); + g.upsert_node(node( + "new-policy", + "this supersedes [[old-policy]] with refined rules", + )) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + let edges = superseded_edges(&g).await; + assert_eq!(edges.len(), 1); + assert_eq!(edges[0].src_id, "old-policy"); + assert_eq!(edges[0].dst_id, "new-policy"); +} + +#[tokio::test] +async fn chinese_keyword_works() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("old", "旧的")).await.unwrap(); + g.upsert_node(node("new", "本条取代 [[old]]")) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + assert_eq!(superseded_edges(&g).await.len(), 1); +} + +#[tokio::test] +async fn replaces_keyword_also_recognized() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", "")).await.unwrap(); + g.upsert_node(node("b", "this replaces [[a]] completely")) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + assert_eq!(superseded_edges(&g).await.len(), 1); +} + +#[tokio::test] +async fn no_keyword_yields_nothing() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", "nothing special here")) + .await + .unwrap(); + g.upsert_node(node("b", "just references [[a]] normally")) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + assert!(superseded_edges(&g).await.is_empty()); +} + +#[tokio::test] +async fn self_reference_skipped() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", "this supersedes [[a]]")) + .await + .unwrap(); + run_all(&g).await.unwrap(); + assert!(superseded_edges(&g).await.is_empty()); +} diff --git a/crates/loopal-memory/tests/suite/synth_token_test.rs b/crates/loopal-memory/tests/suite/synth_token_test.rs new file mode 100644 index 00000000..3b490376 --- /dev/null +++ b/crates/loopal-memory/tests/suite/synth_token_test.rs @@ -0,0 +1,143 @@ +use loopal_memory::synthesize::run_all; +use loopal_memory::synthesize::tfidf::{ + cosine_similarity, document_frequency, term_frequency, tf_idf_vector, tokenize, +}; +use loopal_memory::{EdgeKind, MemoryEdge, MemoryGraph, MemoryKind, MemoryNode, Provenance}; + +fn node(id: &str, body: &str) -> MemoryNode { + MemoryNode { + id: id.into(), + kind: MemoryKind::Project, + name: id.into(), + description: None, + file_path: format!("{}.md", id), + body_preview: body.into(), + created_at: 1, + updated_at: 1, + ttl_days: None, + content_hash: "h".repeat(64), + indexed_at: 1, + } +} + +async fn token_edges(g: &MemoryGraph) -> Vec { + g.list_edges_by_provenance(Provenance::Synthesized) + .await + .unwrap() + .into_iter() + .filter(|e| e.kind == EdgeKind::CoOccursToken) + .collect() +} + +#[test] +fn tokenize_lowercases_and_filters_stopwords() { + let toks = tokenize("The Quick Brown Fox jumps OVER"); + assert!(toks.contains(&"quick".to_string())); + assert!(toks.contains(&"brown".to_string())); + assert!(!toks.contains(&"the".to_string())); + assert!(!toks.contains(&"over".to_string())); +} + +#[test] +fn tokenize_drops_single_char_tokens() { + let toks = tokenize("a b c hello world"); + assert!(!toks.contains(&"a".to_string())); + assert_eq!(toks.len(), 2); +} + +#[test] +fn tokenize_handles_chinese() { + let toks = tokenize("速率限制和冷却时间"); + assert!(!toks.is_empty()); + assert!(!toks.contains(&"的".to_string())); + assert!(!toks.contains(&"和".to_string())); +} + +#[test] +fn cosine_similarity_identical_vectors_yields_one() { + let a = term_frequency(&["alpha".into(), "beta".into(), "alpha".into()]); + let sim = cosine_similarity(&a, &a); + assert!((sim - 1.0).abs() < 1e-5); +} + +#[test] +fn cosine_similarity_disjoint_vectors_yields_zero() { + let a = term_frequency(&["alpha".into(), "beta".into()]); + let b = term_frequency(&["gamma".into(), "delta".into()]); + let sim = cosine_similarity(&a, &b); + assert_eq!(sim, 0.0); +} + +#[test] +fn document_frequency_counts_each_term_once_per_doc() { + let docs = vec![ + vec!["alpha".into(), "alpha".into(), "beta".into()], + vec!["alpha".into(), "gamma".into()], + ]; + let df = document_frequency(&docs); + assert_eq!(df.get("alpha"), Some(&2)); + assert_eq!(df.get("beta"), Some(&1)); +} + +#[test] +fn tf_idf_rare_term_outweighs_common_term() { + let docs = vec![ + vec!["common".into(), "common".into(), "rare".into()], + vec!["common".into(), "other".into()], + vec!["common".into(), "another".into()], + ]; + let df = document_frequency(&docs); + let tf0 = term_frequency(&docs[0]); + let vec0 = tf_idf_vector(&tf0, &df, docs.len()); + assert!(vec0["rare"] > vec0["common"]); +} + +#[tokio::test] +async fn token_cluster_connects_similar_bodies() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("rate", "rate limit cooldown automation policy")) + .await + .unwrap(); + g.upsert_node(node( + "cooldown", + "cooldown rate limit automation enforcement", + )) + .await + .unwrap(); + g.upsert_node(node( + "unrelated", + "completely different topic banana fruit smoothie", + )) + .await + .unwrap(); + + run_all(&g).await.unwrap(); + + let synth_edges = token_edges(&g).await; + let has_pair = synth_edges.iter().any(|e| { + (e.src_id == "rate" && e.dst_id == "cooldown") + || (e.src_id == "cooldown" && e.dst_id == "rate") + }); + assert!(has_pair, "expected token pair, got {:?}", synth_edges); +} + +#[tokio::test] +async fn token_cluster_skips_below_threshold() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("a", "alpha beta gamma delta")) + .await + .unwrap(); + g.upsert_node(node("b", "epsilon zeta eta theta iota")) + .await + .unwrap(); + run_all(&g).await.unwrap(); + assert!(token_edges(&g).await.is_empty()); +} + +#[tokio::test] +async fn token_cluster_with_under_two_nodes_does_nothing() { + let g = MemoryGraph::in_memory().unwrap(); + g.upsert_node(node("solo", "alone")).await.unwrap(); + run_all(&g).await.unwrap(); + assert!(token_edges(&g).await.is_empty()); +} diff --git a/crates/loopal-prompt-system/prompts/core/memory-guidance.md b/crates/loopal-prompt-system/prompts/core/memory-guidance.md index af1b1067..9abe111c 100644 --- a/crates/loopal-prompt-system/prompts/core/memory-guidance.md +++ b/crates/loopal-prompt-system/prompts/core/memory-guidance.md @@ -35,7 +35,17 @@ Your observations will be classified into one of four types by the Knowledge Man ## Using Memory -Memory from prior sessions appears in your system prompt under "# Memory". This is an executive summary curated by the Knowledge Manager. When referencing memory content: +Memory from prior sessions appears in your system prompt under "# Memory". This is an executive summary curated by the Knowledge Manager. + +For richer lookups (related topics, neighbors, co-occurring suggestions, edge provenance), call the `memory_recall` tool. + +**`memory_recall` is THE memory lookup tool — always use it instead of reading `.loopal/memory/*.md` files directly.** + +- Read pays the full file cost per call; recall returns a relevant slice (≤ 1 call vs. 5–8 grep/Read). +- One call returns: direct keyword/anchor matches + bidirectional N-hop neighbors + synthesized co-occurrence + edge trail. +- Only read an individual topic file when recall explicitly flags one as needing a full read (rare). + +When acting on memory content: - The index contains actionable summaries — in most cases you can act directly on them - Verify that files, functions, or paths mentioned in memory still exist before acting - Memory can become stale — prefer current code over recalled snapshots diff --git a/crates/loopal-runtime/src/session.rs b/crates/loopal-runtime/src/session.rs index 77ebf57b..0f74a4c2 100644 --- a/crates/loopal-runtime/src/session.rs +++ b/crates/loopal-runtime/src/session.rs @@ -43,6 +43,14 @@ impl SessionManager { Ok(session) } + /// Create a new session with a caller-supplied id. Lets per-session + /// resources (e.g. memory graph db) be wired before the session row exists. + pub fn create_session_with_id(&self, cwd: &Path, model: &str, id: &str) -> Result { + let session = self.session_store.create_session_with_id(cwd, model, id)?; + info!(session_id = %session.id, model = %model, cwd = %cwd.display(), "session created with preset id"); + Ok(session) + } + pub fn resume_session(&self, session_id: &str) -> Result<(Session, Vec)> { let session = self.session_store.load_session(session_id)?; let turns = self.turn_event_store.load_turns(session_id)?; diff --git a/crates/loopal-storage/src/sessions.rs b/crates/loopal-storage/src/sessions.rs index f4e0c308..062bbdf7 100644 --- a/crates/loopal-storage/src/sessions.rs +++ b/crates/loopal-storage/src/sessions.rs @@ -69,9 +69,20 @@ impl SessionStore { /// Create a new session and persist it. pub fn create_session(&self, cwd: &Path, model: &str) -> Result { + self.create_session_with_id(cwd, model, &Uuid::new_v4().to_string()) + } + + /// Create a session using a caller-supplied id (e.g. pre-generated so other + /// per-session resources can be wired before the session row exists). + pub fn create_session_with_id( + &self, + cwd: &Path, + model: &str, + id: &str, + ) -> Result { let now = Utc::now(); let session = Session { - id: Uuid::new_v4().to_string(), + id: id.to_string(), title: String::new(), model: model.to_string(), cwd: normalize_cwd(cwd), From 03b4bc598a63e7716ffb0ab493124e1ebe0e43cf Mon Sep 17 00:00:00 2001 From: yishuiliunian Date: Sun, 31 May 2026 11:10:55 +0800 Subject: [PATCH 2/3] fix(memory-eval): remove stray empty-name .md fixture Artifact from initial fixture-generation script where an empty slug produced a 0-byte file named literally ".md" in the fixtures directory. Not referenced by fixture.rs registry; harmless but noise. --- crates/loopal-memory/eval/data/fixtures/.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 crates/loopal-memory/eval/data/fixtures/.md diff --git a/crates/loopal-memory/eval/data/fixtures/.md b/crates/loopal-memory/eval/data/fixtures/.md deleted file mode 100644 index e69de29b..00000000 From b6062a8b85776934efb61c4ac2465662e6f0b060 Mon Sep 17 00:00:00 2001 From: yishuiliunian Date: Sun, 31 May 2026 11:25:23 +0800 Subject: [PATCH 3/3] fix(memory-test): cfg(unix) gate for permission-mode test on Windows CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gc_propagates_read_dir_permission_error uses std::os::unix::fs::PermissionsExt to chmod 000 a directory and verify run_gc surfaces the read_dir error. The unix API is gated out on Windows, breaking the Windows CI build. Skip the test on non-unix targets; the production code path (run_gc → fs::read_dir → io::ErrorKind::PermissionDenied → stats.errors += 1) is platform-agnostic and covered by unix runs. --- crates/loopal-memory/tests/suite/event_log_recovery_test.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/loopal-memory/tests/suite/event_log_recovery_test.rs b/crates/loopal-memory/tests/suite/event_log_recovery_test.rs index f46d3fb8..b3e499c5 100644 --- a/crates/loopal-memory/tests/suite/event_log_recovery_test.rs +++ b/crates/loopal-memory/tests/suite/event_log_recovery_test.rs @@ -1,5 +1,6 @@ use std::fs; use std::io::Write; +#[cfg(unix)] use std::os::unix::fs::PermissionsExt; use chrono::{Duration, Utc}; @@ -109,6 +110,7 @@ fn gc_streams_large_file_without_full_load() { assert_eq!(map.get("big").unwrap().recall_count, 1000); } +#[cfg(unix)] #[test] fn gc_propagates_read_dir_permission_error() { let tmp = TempDir::new().unwrap();