Commit 55a1b8252814
tarball8 files changed+4869-16
@@ -1,5 +1,26 @@
11
{22
"nodes": {3
+ "fenix": {4
+ "inputs": {5
+ "nixpkgs": [6
+ "nixpkgs"7
+ ],8
+ "rust-analyzer-src": "rust-analyzer-src"9
+ },10
+ "locked": {11
+ "lastModified": 1790335941,12
+ "narHash": "sha256-eTMQK7tXCCaEuTr0cHjEQXaqFIngqK78sU4OX9lZCS0=",13
+ "owner": "nix-community",14
+ "repo": "fenix",15
+ "rev": "529de6f9a0c6721ae2a69d5719bbb803390e7b86",16
+ "type": "github"17
+ },18
+ "original": {19
+ "owner": "nix-community",20
+ "repo": "fenix",21
+ "type": "github"22
+ }23
+ },324
"nixpkgs": {425
"locked": {526
"lastModified": 1788746152,@@ -18,8 +39,26 @@
1839
},1940
"root": {2041
"inputs": {42
+ "fenix": "fenix",2143
"nixpkgs": "nixpkgs"2244
}45
+ },46
+ "rust-analyzer-src": {47
+ "flake": false,48
+ "locked": {49
+ "lastModified": 1790291720,50
+ "narHash": "sha256-BDG4YK/xih0d7llp/FdkWLXhyhKJN/VfWSEh4pOa8FA=",51
+ "owner": "rust-lang",52
+ "repo": "rust-analyzer",53
+ "rev": "f6f7271e040aef24535f4592352e1b02fb312ce2",54
+ "type": "github"55
+ },56
+ "original": {57
+ "owner": "rust-lang",58
+ "ref": "nightly",59
+ "repo": "rust-analyzer",60
+ "type": "github"61
+ }2362
}2463
},2564
"root": "root",@@ -1,10 +1,53 @@
11
{2
- inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";2
+ inputs = {3
+ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";4
+ fenix = {5
+ url = "github:nix-community/fenix";6
+ inputs.nixpkgs.follows = "nixpkgs";7
+ };8
+ };39
410
outputs =5
- { self, nixpkgs }:11
+ {12
+ self,13
+ nixpkgs,14
+ fenix,15
+ }:616
let717
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;18
+ webManifest = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.toml);19
+ storeFeature = nixpkgs.lib.removePrefix "macltok/" (builtins.head webManifest.features.store);20
+ webLock = builtins.fromTOML (builtins.readFile ./harness/web/Cargo.lock);21
+ lockedVersion =22
+ name: (nixpkgs.lib.findFirst (p: p.name == name) null webLock.package).version;23
+ # wasm-bindgen-test-runner refuses a module built by any other wasm-bindgen version24
+ wasmBindgenCli =25
+ pkgs:26
+ pkgs.buildWasmBindgenCli rec {27
+ src = pkgs.fetchCrate {28
+ pname = "wasm-bindgen-cli";29
+ version = lockedVersion "wasm-bindgen";30
+ hash = "sha256-a7lcXJnnZkYReja+iUO7NqqrWyv3toxnUgQb8s4IS5s=";31
+ };32
+ cargoDeps = pkgs.rustPlatform.fetchCargoVendor {33
+ inherit src;34
+ inherit (src) pname version;35
+ hash = "sha256-R1Tas33Ursy8kqsxguAkG0ZhNed2n5uFTAhw1l2qlLY=";36
+ };37
+ };38
+ wasmToolchain =39
+ system:40
+ let41
+ toolchains = fenix.packages.${system};42
+ in43
+ toolchains.combine [44
+ toolchains.stable.cargo45
+ toolchains.stable.clippy46
+ toolchains.stable.rustc47
+ toolchains.stable.rustfmt48
+ toolchains.stable.rust-src49
+ toolchains.targets.wasm32-unknown-unknown.stable.rust-std50
+ ];851
in952
{1053
packages = forAllSystems (@@ -24,20 +67,61 @@
2467
}2568
);2669
27
- checks = forAllSystems (system: {28
- default = self.packages.${system}.default;29
- sqlite = nixpkgs.legacyPackages.${system}.rustPlatform.buildRustPackage {30
- pname = "macltok-sqlite-check";31
- version = "0.1.0";32
- src = self;33
- cargoLock.lockFile = ./Cargo.lock;34
- preBuild = "export NIX_BUILD_CORES=2";35
- buildFeatures = [ "sqlite" ];36
- nativeBuildInputs = [ nixpkgs.legacyPackages.${system}.pkg-config ];37
- buildInputs = [ nixpkgs.legacyPackages.${system}.sqlite ];38
- SSL_CERT_FILE = "${nixpkgs.legacyPackages.${system}.cacert}/etc/ssl/certs/ca-bundle.crt";39
- };40
- });70
+ checks = forAllSystems (71
+ system:72
+ let73
+ pkgs = nixpkgs.legacyPackages.${system};74
+ toolchain = wasmToolchain system;75
+ wasmPlatform = pkgs.makeRustPlatform {76
+ cargo = toolchain;77
+ rustc = toolchain;78
+ };79
+ # continuwuity refuses to start without /etc/resolv.conf, which the build sandbox lacks, or with80
+ # stdenv's deliberately bogus SSL_CERT_FILE81
+ sandboxedHomeserver = pkgs.writeShellScriptBin "conduwuit" ''82
+ export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt83
+ exec ${pkgs.lib.getExe pkgs.bubblewrap} --dev-bind / / --tmpfs /etc \84
+ --ro-bind ${pkgs.writeText "resolv.conf" "nameserver 127.0.0.1\n"} /etc/resolv.conf \85
+ ${pkgs.lib.getExe' pkgs.matrix-continuwuity "conduwuit"} "$@"86
+ '';87
+ in88
+ {89
+ default = self.packages.${system}.default;90
+ sqlite = pkgs.rustPlatform.buildRustPackage {91
+ pname = "macltok-sqlite-check";92
+ version = "0.1.0";93
+ src = self;94
+ cargoLock.lockFile = ./Cargo.lock;95
+ preBuild = "export NIX_BUILD_CORES=2";96
+ buildFeatures = [ "sqlite" ];97
+ nativeBuildInputs = [ pkgs.pkg-config ];98
+ buildInputs = [ pkgs.sqlite ];99
+ SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";100
+ };101
+ web = wasmPlatform.buildRustPackage {102
+ pname = "macltok-web-check";103
+ version = "0.1.0";104
+ src = self;105
+ cargoRoot = "harness/web";106
+ cargoLock.lockFile = ./harness/web/Cargo.lock;107
+ nativeBuildInputs = with pkgs; [108
+ (wasmBindgenCli pkgs)109
+ firefox110
+ geckodriver111
+ sandboxedHomeserver112
+ nushell113
+ ];114
+ buildPhase = ''115
+ runHook preBuild116
+ export HOME=$TMPDIR117
+ nu --no-config-file harness/web/run.nu118
+ runHook postBuild119
+ '';120
+ doCheck = false;121
+ installPhase = "touch $out";122
+ };123
+ }124
+ );41125
42126
devShells = forAllSystems (43127
system:@@ -56,6 +140,19 @@
56140
sqlite57141
];58142
};143
+ web = pkgs.mkShell {144
+ packages = with pkgs; [145
+ (wasmToolchain system)146
+ (wasmBindgenCli pkgs)147
+ binaryen148
+ brotli149
+ firefox150
+ geckodriver151
+ matrix-continuwuity152
+ nushell153
+ ];154
+ MACLTOK_STORE_FEATURE = storeFeature;155
+ };59156
}60157
);61158
};@@ -0,0 +1,3 @@
1
+[target.wasm32-unknown-unknown]2
+runner = "wasm-bindgen-test-runner"3
+rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""]@@ -0,0 +1,4513 @@
1
+# This file is automatically @generated by Cargo.2
+# It is not intended for manual editing.3
+version = 44
+5
+[[package]]6
+name = "accessory"7
+version = "2.1.1"8
+source = "registry+https://github.com/rust-lang/crates.io-index"9
+checksum = "cc86a613208ca7d144ca24f6ec49c5cdfa5c05a46f2f7ab5880ff99371f165de"10
+dependencies = [11
+ "macroific 3.0.1",12
+ "proc-macro2",13
+ "quote",14
+ "syn 3.0.5",15
+]16
+17
+[[package]]18
+name = "adler2"19
+version = "2.0.1"20
+source = "registry+https://github.com/rust-lang/crates.io-index"21
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"22
+23
+[[package]]24
+name = "aead"25
+version = "0.5.2"26
+source = "registry+https://github.com/rust-lang/crates.io-index"27
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"28
+dependencies = [29
+ "crypto-common",30
+ "generic-array",31
+]32
+33
+[[package]]34
+name = "aes"35
+version = "0.8.4"36
+source = "registry+https://github.com/rust-lang/crates.io-index"37
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"38
+dependencies = [39
+ "cfg-if",40
+ "cipher",41
+ "cpufeatures 0.2.17",42
+]43
+44
+[[package]]45
+name = "aho-corasick"46
+version = "1.1.5"47
+source = "registry+https://github.com/rust-lang/crates.io-index"48
+checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"49
+dependencies = [50
+ "memchr",51
+]52
+53
+[[package]]54
+name = "android_system_properties"55
+version = "0.1.6"56
+source = "registry+https://github.com/rust-lang/crates.io-index"57
+checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"58
+dependencies = [59
+ "libc",60
+]61
+62
+[[package]]63
+name = "anyhow"64
+version = "1.0.104"65
+source = "registry+https://github.com/rust-lang/crates.io-index"66
+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"67
+68
+[[package]]69
+name = "anymap2"70
+version = "0.13.0"71
+source = "registry+https://github.com/rust-lang/crates.io-index"72
+checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"73
+74
+[[package]]75
+name = "aquamarine"76
+version = "0.6.0"77
+source = "registry+https://github.com/rust-lang/crates.io-index"78
+checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2"79
+dependencies = [80
+ "include_dir",81
+ "itertools 0.10.5",82
+ "proc-macro-error2",83
+ "proc-macro2",84
+ "quote",85
+ "syn 2.0.119",86
+]87
+88
+[[package]]89
+name = "archery"90
+version = "1.2.3"91
+source = "registry+https://github.com/rust-lang/crates.io-index"92
+checksum = "33ca55ee147b1926dbea904f50fe4902494e97bc742205abbbf10c709e43815f"93
+94
+[[package]]95
+name = "arrayvec"96
+version = "0.7.8"97
+source = "registry+https://github.com/rust-lang/crates.io-index"98
+checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"99
+dependencies = [100
+ "serde",101
+]102
+103
+[[package]]104
+name = "as_variant"105
+version = "1.3.0"106
+source = "registry+https://github.com/rust-lang/crates.io-index"107
+checksum = "9dbc3a507a82b17ba0d98f6ce8fd6954ea0c8152e98009d36a40d8dcc8ce078a"108
+109
+[[package]]110
+name = "assign"111
+version = "1.1.1"112
+source = "registry+https://github.com/rust-lang/crates.io-index"113
+checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002"114
+115
+[[package]]116
+name = "async-channel"117
+version = "2.5.0"118
+source = "registry+https://github.com/rust-lang/crates.io-index"119
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"120
+dependencies = [121
+ "concurrent-queue",122
+ "event-listener-strategy",123
+ "futures-core",124
+ "pin-project-lite",125
+]126
+127
+[[package]]128
+name = "async-compression"129
+version = "0.4.45"130
+source = "registry+https://github.com/rust-lang/crates.io-index"131
+checksum = "24a8ec73eb862508b7041723c89386365894b4e7d9f6998bf1b8529e5b0ee254"132
+dependencies = [133
+ "compression-codecs",134
+ "compression-core",135
+ "pin-project-lite",136
+ "tokio",137
+]138
+139
+[[package]]140
+name = "async-once-cell"141
+version = "0.5.4"142
+source = "registry+https://github.com/rust-lang/crates.io-index"143
+checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a"144
+145
+[[package]]146
+name = "async-rx"147
+version = "0.2.1"148
+source = "registry+https://github.com/rust-lang/crates.io-index"149
+checksum = "a82c1a761cd7b772912fd2500f2c0a850c0c72f5f66543038393ac6cfaa3659a"150
+dependencies = [151
+ "futures-core",152
+ "pin-project-lite",153
+]154
+155
+[[package]]156
+name = "async-stream"157
+version = "0.3.6"158
+source = "registry+https://github.com/rust-lang/crates.io-index"159
+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"160
+dependencies = [161
+ "async-stream-impl",162
+ "futures-core",163
+ "pin-project-lite",164
+]165
+166
+[[package]]167
+name = "async-stream-impl"168
+version = "0.3.6"169
+source = "registry+https://github.com/rust-lang/crates.io-index"170
+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"171
+dependencies = [172
+ "proc-macro2",173
+ "quote",174
+ "syn 2.0.119",175
+]176
+177
+[[package]]178
+name = "async-trait"179
+version = "0.1.92"180
+source = "registry+https://github.com/rust-lang/crates.io-index"181
+checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"182
+dependencies = [183
+ "proc-macro2",184
+ "quote",185
+ "syn 3.0.5",186
+]187
+188
+[[package]]189
+name = "async_cell"190
+version = "0.2.3"191
+source = "registry+https://github.com/rust-lang/crates.io-index"192
+checksum = "447ab28afbb345f5408b120702a44e5529ebf90b1796ec76e9528df8e288e6c2"193
+dependencies = [194
+ "loom",195
+]196
+197
+[[package]]198
+name = "atomic-waker"199
+version = "1.1.2"200
+source = "registry+https://github.com/rust-lang/crates.io-index"201
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"202
+203
+[[package]]204
+name = "autocfg"205
+version = "1.5.1"206
+source = "registry+https://github.com/rust-lang/crates.io-index"207
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"208
+209
+[[package]]210
+name = "aws-lc-rs"211
+version = "1.18.1"212
+source = "registry+https://github.com/rust-lang/crates.io-index"213
+checksum = "b281d307588d634de920874890732659e2e7672f72b5e10e81badc1a8a83621e"214
+dependencies = [215
+ "aws-lc-sys",216
+ "zeroize",217
+]218
+219
+[[package]]220
+name = "aws-lc-sys"221
+version = "0.45.0"222
+source = "registry+https://github.com/rust-lang/crates.io-index"223
+checksum = "9bff6c3b54fad79a2e60b8102caf565819711497c1f5f092f49508e2f5c31b27"224
+dependencies = [225
+ "cc",226
+ "cmake",227
+ "dunce",228
+ "fs_extra",229
+ "pkg-config",230
+]231
+232
+[[package]]233
+name = "backon"234
+version = "1.6.0"235
+source = "registry+https://github.com/rust-lang/crates.io-index"236
+checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"237
+dependencies = [238
+ "fastrand",239
+ "gloo-timers",240
+ "tokio",241
+]242
+243
+[[package]]244
+name = "base64"245
+version = "0.22.1"246
+source = "registry+https://github.com/rust-lang/crates.io-index"247
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"248
+249
+[[package]]250
+name = "base64ct"251
+version = "1.8.3"252
+source = "registry+https://github.com/rust-lang/crates.io-index"253
+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"254
+255
+[[package]]256
+name = "bitflags"257
+version = "2.13.1"258
+source = "registry+https://github.com/rust-lang/crates.io-index"259
+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"260
+dependencies = [261
+ "serde_core",262
+]263
+264
+[[package]]265
+name = "bitmaps"266
+version = "3.2.1"267
+source = "registry+https://github.com/rust-lang/crates.io-index"268
+checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6"269
+270
+[[package]]271
+name = "blake3"272
+version = "1.8.7"273
+source = "registry+https://github.com/rust-lang/crates.io-index"274
+checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae"275
+dependencies = [276
+ "arrayvec",277
+ "cc",278
+ "cfg-if",279
+ "constant_time_eq",280
+ "cpufeatures 0.3.1",281
+]282
+283
+[[package]]284
+name = "block-buffer"285
+version = "0.10.4"286
+source = "registry+https://github.com/rust-lang/crates.io-index"287
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"288
+dependencies = [289
+ "generic-array",290
+]291
+292
+[[package]]293
+name = "block-padding"294
+version = "0.3.3"295
+source = "registry+https://github.com/rust-lang/crates.io-index"296
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"297
+dependencies = [298
+ "generic-array",299
+]300
+301
+[[package]]302
+name = "bs58"303
+version = "0.5.1"304
+source = "registry+https://github.com/rust-lang/crates.io-index"305
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"306
+dependencies = [307
+ "tinyvec",308
+]309
+310
+[[package]]311
+name = "bumpalo"312
+version = "3.20.3"313
+source = "registry+https://github.com/rust-lang/crates.io-index"314
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"315
+316
+[[package]]317
+name = "byteorder"318
+version = "1.5.0"319
+source = "registry+https://github.com/rust-lang/crates.io-index"320
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"321
+322
+[[package]]323
+name = "bytes"324
+version = "1.12.1"325
+source = "registry+https://github.com/rust-lang/crates.io-index"326
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"327
+328
+[[package]]329
+name = "bytesize"330
+version = "2.7.0"331
+source = "registry+https://github.com/rust-lang/crates.io-index"332
+checksum = "7354288c522e7e980fafd2075d63d1285794c3a6a16cdd492f189ea406e5f18b"333
+334
+[[package]]335
+name = "cast"336
+version = "0.3.0"337
+source = "registry+https://github.com/rust-lang/crates.io-index"338
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"339
+340
+[[package]]341
+name = "cbc"342
+version = "0.1.2"343
+source = "registry+https://github.com/rust-lang/crates.io-index"344
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"345
+dependencies = [346
+ "cipher",347
+]348
+349
+[[package]]350
+name = "cc"351
+version = "1.4.5"352
+source = "registry+https://github.com/rust-lang/crates.io-index"353
+checksum = "005ec2760ca554fae18df7a11195552ec576cd665632a881bc011d5bb2fd4d80"354
+dependencies = [355
+ "find-msvc-tools",356
+ "jobserver",357
+ "libc",358
+ "shlex",359
+]360
+361
+[[package]]362
+name = "cfg-if"363
+version = "1.0.4"364
+source = "registry+https://github.com/rust-lang/crates.io-index"365
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"366
+367
+[[package]]368
+name = "cfg_aliases"369
+version = "0.2.2"370
+source = "registry+https://github.com/rust-lang/crates.io-index"371
+checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"372
+373
+[[package]]374
+name = "chacha20"375
+version = "0.9.1"376
+source = "registry+https://github.com/rust-lang/crates.io-index"377
+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"378
+dependencies = [379
+ "cfg-if",380
+ "cipher",381
+ "cpufeatures 0.2.17",382
+]383
+384
+[[package]]385
+name = "chacha20"386
+version = "0.10.2"387
+source = "registry+https://github.com/rust-lang/crates.io-index"388
+checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06"389
+dependencies = [390
+ "cfg-if",391
+ "cpufeatures 0.3.1",392
+ "rand_core 0.10.1",393
+]394
+395
+[[package]]396
+name = "chacha20poly1305"397
+version = "0.10.1"398
+source = "registry+https://github.com/rust-lang/crates.io-index"399
+checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"400
+dependencies = [401
+ "aead",402
+ "chacha20 0.9.1",403
+ "cipher",404
+ "poly1305",405
+ "zeroize",406
+]407
+408
+[[package]]409
+name = "chrono"410
+version = "0.4.45"411
+source = "registry+https://github.com/rust-lang/crates.io-index"412
+checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"413
+dependencies = [414
+ "iana-time-zone",415
+ "js-sys",416
+ "num-traits",417
+ "serde",418
+ "wasm-bindgen",419
+ "windows-link",420
+]421
+422
+[[package]]423
+name = "cipher"424
+version = "0.4.4"425
+source = "registry+https://github.com/rust-lang/crates.io-index"426
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"427
+dependencies = [428
+ "crypto-common",429
+ "inout",430
+ "zeroize",431
+]432
+433
+[[package]]434
+name = "cmake"435
+version = "0.1.58"436
+source = "registry+https://github.com/rust-lang/crates.io-index"437
+checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"438
+dependencies = [439
+ "cc",440
+]441
+442
+[[package]]443
+name = "combine"444
+version = "4.6.8"445
+source = "registry+https://github.com/rust-lang/crates.io-index"446
+checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e"447
+dependencies = [448
+ "bytes",449
+ "memchr",450
+]451
+452
+[[package]]453
+name = "compression-codecs"454
+version = "0.4.40"455
+source = "registry+https://github.com/rust-lang/crates.io-index"456
+checksum = "100590da849306918656ffbb22576bbdfc1382b50ad10d1d50ec177d3b205fb2"457
+dependencies = [458
+ "compression-core",459
+ "flate2",460
+ "memchr",461
+]462
+463
+[[package]]464
+name = "compression-core"465
+version = "0.4.33"466
+source = "registry+https://github.com/rust-lang/crates.io-index"467
+checksum = "6e8ccc4ea9f6acc32d102c0f6d471d11d913ad15f20c04de743374861fa1d414"468
+469
+[[package]]470
+name = "concurrent-queue"471
+version = "2.5.0"472
+source = "registry+https://github.com/rust-lang/crates.io-index"473
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"474
+dependencies = [475
+ "crossbeam-utils",476
+]477
+478
+[[package]]479
+name = "const-oid"480
+version = "0.9.6"481
+source = "registry+https://github.com/rust-lang/crates.io-index"482
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"483
+484
+[[package]]485
+name = "const_panic"486
+version = "0.2.17"487
+source = "registry+https://github.com/rust-lang/crates.io-index"488
+checksum = "9603f79528ece8163c496f8932121cb36cfe46259e9c907bb3d8205139d7caa3"489
+dependencies = [490
+ "typewit",491
+]492
+493
+[[package]]494
+name = "constant_time_eq"495
+version = "0.4.2"496
+source = "registry+https://github.com/rust-lang/crates.io-index"497
+checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"498
+499
+[[package]]500
+name = "core-foundation"501
+version = "0.10.1"502
+source = "registry+https://github.com/rust-lang/crates.io-index"503
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"504
+dependencies = [505
+ "core-foundation-sys",506
+ "libc",507
+]508
+509
+[[package]]510
+name = "core-foundation-sys"511
+version = "0.8.7"512
+source = "registry+https://github.com/rust-lang/crates.io-index"513
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"514
+515
+[[package]]516
+name = "cpufeatures"517
+version = "0.2.17"518
+source = "registry+https://github.com/rust-lang/crates.io-index"519
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"520
+dependencies = [521
+ "libc",522
+]523
+524
+[[package]]525
+name = "cpufeatures"526
+version = "0.3.1"527
+source = "registry+https://github.com/rust-lang/crates.io-index"528
+checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566"529
+dependencies = [530
+ "libc",531
+]532
+533
+[[package]]534
+name = "crc32fast"535
+version = "1.5.1"536
+source = "registry+https://github.com/rust-lang/crates.io-index"537
+checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"538
+dependencies = [539
+ "cfg-if",540
+]541
+542
+[[package]]543
+name = "crossbeam-utils"544
+version = "0.8.23"545
+source = "registry+https://github.com/rust-lang/crates.io-index"546
+checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6"547
+548
+[[package]]549
+name = "crypto-common"550
+version = "0.1.7"551
+source = "registry+https://github.com/rust-lang/crates.io-index"552
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"553
+dependencies = [554
+ "generic-array",555
+ "rand_core 0.6.4",556
+ "typenum",557
+]558
+559
+[[package]]560
+name = "ctr"561
+version = "0.9.2"562
+source = "registry+https://github.com/rust-lang/crates.io-index"563
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"564
+dependencies = [565
+ "cipher",566
+]567
+568
+[[package]]569
+name = "curve25519-dalek"570
+version = "4.1.3"571
+source = "registry+https://github.com/rust-lang/crates.io-index"572
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"573
+dependencies = [574
+ "cfg-if",575
+ "cpufeatures 0.2.17",576
+ "curve25519-dalek-derive",577
+ "digest",578
+ "fiat-crypto",579
+ "rustc_version",580
+ "serde",581
+ "subtle",582
+ "zeroize",583
+]584
+585
+[[package]]586
+name = "curve25519-dalek-derive"587
+version = "0.1.1"588
+source = "registry+https://github.com/rust-lang/crates.io-index"589
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"590
+dependencies = [591
+ "proc-macro2",592
+ "quote",593
+ "syn 2.0.119",594
+]595
+596
+[[package]]597
+name = "date_header"598
+version = "1.0.5"599
+source = "registry+https://github.com/rust-lang/crates.io-index"600
+checksum = "0c03c416ed1a30fbb027ef484ba6ab6f80e1eada675e1a2b92fd673c045a1f1d"601
+602
+[[package]]603
+name = "deadpool"604
+version = "0.13.1"605
+source = "registry+https://github.com/rust-lang/crates.io-index"606
+checksum = "3e98a7e119cd347f4201e1159b19831029e203e2d8b790547708e8157b4acf1e"607
+dependencies = [608
+ "deadpool-runtime",609
+ "tokio",610
+]611
+612
+[[package]]613
+name = "deadpool-runtime"614
+version = "0.3.1"615
+source = "registry+https://github.com/rust-lang/crates.io-index"616
+checksum = "2657f61fb1dd8bf37a8d51093cc7cee4e77125b22f7753f49b289f831bec2bae"617
+dependencies = [618
+ "tokio",619
+]620
+621
+[[package]]622
+name = "deadpool-sync"623
+version = "0.2.0"624
+source = "registry+https://github.com/rust-lang/crates.io-index"625
+checksum = "e385cc95d3d582c328b36d1ff90feac061102b001894b555e6b465a2e0eaabbf"626
+dependencies = [627
+ "deadpool-runtime",628
+]629
+630
+[[package]]631
+name = "decancer"632
+version = "3.3.3"633
+source = "registry+https://github.com/rust-lang/crates.io-index"634
+checksum = "a9244323129647178bf41ac861a2cdb9d9c81b9b09d3d0d1de9cd302b33b8a1d"635
+636
+[[package]]637
+name = "delegate-display"638
+version = "3.0.1"639
+source = "registry+https://github.com/rust-lang/crates.io-index"640
+checksum = "54e3a499943fd5180aeffcb708164ffb22125ceeccb05491b5297981d37d6249"641
+dependencies = [642
+ "impartial-ord",643
+ "itoa",644
+ "macroific 3.0.1",645
+ "proc-macro2",646
+ "quote",647
+ "syn 3.0.5",648
+]649
+650
+[[package]]651
+name = "der"652
+version = "0.7.10"653
+source = "registry+https://github.com/rust-lang/crates.io-index"654
+checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"655
+dependencies = [656
+ "const-oid",657
+ "zeroize",658
+]659
+660
+[[package]]661
+name = "deranged"662
+version = "0.5.8"663
+source = "registry+https://github.com/rust-lang/crates.io-index"664
+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"665
+666
+[[package]]667
+name = "derivative"668
+version = "2.2.0"669
+source = "registry+https://github.com/rust-lang/crates.io-index"670
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"671
+dependencies = [672
+ "proc-macro2",673
+ "quote",674
+ "syn 1.0.109",675
+]676
+677
+[[package]]678
+name = "derive_more"679
+version = "1.0.0"680
+source = "registry+https://github.com/rust-lang/crates.io-index"681
+checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"682
+dependencies = [683
+ "derive_more-impl 1.0.0",684
+]685
+686
+[[package]]687
+name = "derive_more"688
+version = "2.1.1"689
+source = "registry+https://github.com/rust-lang/crates.io-index"690
+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"691
+dependencies = [692
+ "derive_more-impl 2.1.1",693
+]694
+695
+[[package]]696
+name = "derive_more-impl"697
+version = "1.0.0"698
+source = "registry+https://github.com/rust-lang/crates.io-index"699
+checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"700
+dependencies = [701
+ "proc-macro2",702
+ "quote",703
+ "syn 2.0.119",704
+]705
+706
+[[package]]707
+name = "derive_more-impl"708
+version = "2.1.1"709
+source = "registry+https://github.com/rust-lang/crates.io-index"710
+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"711
+dependencies = [712
+ "proc-macro2",713
+ "quote",714
+ "rustc_version",715
+ "syn 2.0.119",716
+ "unicode-xid",717
+]718
+719
+[[package]]720
+name = "digest"721
+version = "0.10.7"722
+source = "registry+https://github.com/rust-lang/crates.io-index"723
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"724
+dependencies = [725
+ "block-buffer",726
+ "crypto-common",727
+ "subtle",728
+]729
+730
+[[package]]731
+name = "displaydoc"732
+version = "0.2.7"733
+source = "registry+https://github.com/rust-lang/crates.io-index"734
+checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"735
+dependencies = [736
+ "proc-macro2",737
+ "quote",738
+ "syn 3.0.5",739
+]740
+741
+[[package]]742
+name = "dunce"743
+version = "1.0.5"744
+source = "registry+https://github.com/rust-lang/crates.io-index"745
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"746
+747
+[[package]]748
+name = "ed25519"749
+version = "2.2.3"750
+source = "registry+https://github.com/rust-lang/crates.io-index"751
+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"752
+dependencies = [753
+ "pkcs8",754
+ "serde",755
+ "signature",756
+]757
+758
+[[package]]759
+name = "ed25519-dalek"760
+version = "2.2.0"761
+source = "registry+https://github.com/rust-lang/crates.io-index"762
+checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"763
+dependencies = [764
+ "curve25519-dalek",765
+ "ed25519",766
+ "rand_core 0.6.4",767
+ "serde",768
+ "sha2",769
+ "subtle",770
+ "zeroize",771
+]772
+773
+[[package]]774
+name = "either"775
+version = "1.18.0"776
+source = "registry+https://github.com/rust-lang/crates.io-index"777
+checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34"778
+779
+[[package]]780
+name = "emojis"781
+version = "0.8.2"782
+source = "registry+https://github.com/rust-lang/crates.io-index"783
+checksum = "0a4d5d50b0b58df5173d8ff1192b4d1422ceae5d981b30d4b6f8ed1d673a2bc4"784
+dependencies = [785
+ "phf",786
+]787
+788
+[[package]]789
+name = "equivalent"790
+version = "1.0.2"791
+source = "registry+https://github.com/rust-lang/crates.io-index"792
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"793
+794
+[[package]]795
+name = "errno"796
+version = "0.3.14"797
+source = "registry+https://github.com/rust-lang/crates.io-index"798
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"799
+dependencies = [800
+ "libc",801
+ "windows-sys 0.61.2",802
+]803
+804
+[[package]]805
+name = "event-listener"806
+version = "5.4.2"807
+source = "registry+https://github.com/rust-lang/crates.io-index"808
+checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2"809
+dependencies = [810
+ "parking",811
+ "pin-project-lite",812
+]813
+814
+[[package]]815
+name = "event-listener-strategy"816
+version = "0.5.4"817
+source = "registry+https://github.com/rust-lang/crates.io-index"818
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"819
+dependencies = [820
+ "event-listener",821
+ "pin-project-lite",822
+]823
+824
+[[package]]825
+name = "eyeball"826
+version = "0.8.8"827
+source = "registry+https://github.com/rust-lang/crates.io-index"828
+checksum = "d93bd0ebf93d61d6332d3c09a96e97975968a44e19a64c947bde06e6baff383f"829
+dependencies = [830
+ "futures-core",831
+ "readlock",832
+ "readlock-tokio",833
+ "tokio",834
+ "tokio-util",835
+ "tracing",836
+]837
+838
+[[package]]839
+name = "eyeball-im"840
+version = "0.8.0"841
+source = "registry+https://github.com/rust-lang/crates.io-index"842
+checksum = "4790c03df183c2b46665c1a58118c04fd3e3976ec2fe16a0aa00e00c9eea7754"843
+dependencies = [844
+ "futures-core",845
+ "imbl",846
+ "tokio",847
+ "tracing",848
+]849
+850
+[[package]]851
+name = "eyeball-im-util"852
+version = "0.10.0"853
+source = "registry+https://github.com/rust-lang/crates.io-index"854
+checksum = "809fa2e8e59c25a41f5b2440aa937f1e84df6ae48b707e65f69ce259b1c44bda"855
+dependencies = [856
+ "arrayvec",857
+ "eyeball-im",858
+ "futures-core",859
+ "imbl",860
+ "pin-project-lite",861
+ "smallvec",862
+]863
+864
+[[package]]865
+name = "fallible-iterator"866
+version = "0.3.0"867
+source = "registry+https://github.com/rust-lang/crates.io-index"868
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"869
+870
+[[package]]871
+name = "fallible-streaming-iterator"872
+version = "0.1.9"873
+source = "registry+https://github.com/rust-lang/crates.io-index"874
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"875
+876
+[[package]]877
+name = "fancy_constructor"878
+version = "2.1.1"879
+source = "registry+https://github.com/rust-lang/crates.io-index"880
+checksum = "4a8211ab12c36b63c269e17873331dc1da196a3edb7a5c79015677ef972da34a"881
+dependencies = [882
+ "macroific 3.0.1",883
+ "proc-macro2",884
+ "quote",885
+ "syn 3.0.5",886
+]887
+888
+[[package]]889
+name = "fastrand"890
+version = "2.5.0"891
+source = "registry+https://github.com/rust-lang/crates.io-index"892
+checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"893
+894
+[[package]]895
+name = "fiat-crypto"896
+version = "0.2.9"897
+source = "registry+https://github.com/rust-lang/crates.io-index"898
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"899
+900
+[[package]]901
+name = "find-msvc-tools"902
+version = "0.1.12"903
+source = "registry+https://github.com/rust-lang/crates.io-index"904
+checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d"905
+906
+[[package]]907
+name = "flate2"908
+version = "1.1.10"909
+source = "registry+https://github.com/rust-lang/crates.io-index"910
+checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"911
+dependencies = [912
+ "crc32fast",913
+ "miniz_oxide",914
+ "zlib-rs",915
+]916
+917
+[[package]]918
+name = "fnv"919
+version = "1.0.7"920
+source = "registry+https://github.com/rust-lang/crates.io-index"921
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"922
+923
+[[package]]924
+name = "foldhash"925
+version = "0.1.5"926
+source = "registry+https://github.com/rust-lang/crates.io-index"927
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"928
+929
+[[package]]930
+name = "form_urlencoded"931
+version = "1.2.2"932
+source = "registry+https://github.com/rust-lang/crates.io-index"933
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"934
+dependencies = [935
+ "percent-encoding",936
+]937
+938
+[[package]]939
+name = "fs_extra"940
+version = "1.3.0"941
+source = "registry+https://github.com/rust-lang/crates.io-index"942
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"943
+944
+[[package]]945
+name = "futures-channel"946
+version = "0.3.34"947
+source = "registry+https://github.com/rust-lang/crates.io-index"948
+checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4"949
+dependencies = [950
+ "futures-core",951
+]952
+953
+[[package]]954
+name = "futures-core"955
+version = "0.3.34"956
+source = "registry+https://github.com/rust-lang/crates.io-index"957
+checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"958
+959
+[[package]]960
+name = "futures-executor"961
+version = "0.3.34"962
+source = "registry+https://github.com/rust-lang/crates.io-index"963
+checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432"964
+dependencies = [965
+ "futures-core",966
+ "futures-task",967
+ "futures-util",968
+]969
+970
+[[package]]971
+name = "futures-io"972
+version = "0.3.34"973
+source = "registry+https://github.com/rust-lang/crates.io-index"974
+checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed"975
+976
+[[package]]977
+name = "futures-macro"978
+version = "0.3.34"979
+source = "registry+https://github.com/rust-lang/crates.io-index"980
+checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"981
+dependencies = [982
+ "proc-macro2",983
+ "quote",984
+ "syn 3.0.5",985
+]986
+987
+[[package]]988
+name = "futures-sink"989
+version = "0.3.34"990
+source = "registry+https://github.com/rust-lang/crates.io-index"991
+checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d"992
+993
+[[package]]994
+name = "futures-task"995
+version = "0.3.34"996
+source = "registry+https://github.com/rust-lang/crates.io-index"997
+checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"998
+999
+[[package]]1000
+name = "futures-util"1001
+version = "0.3.34"1002
+source = "registry+https://github.com/rust-lang/crates.io-index"1003
+checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"1004
+dependencies = [1005
+ "futures-channel",1006
+ "futures-core",1007
+ "futures-io",1008
+ "futures-macro",1009
+ "futures-sink",1010
+ "futures-task",1011
+ "memchr",1012
+ "pin-project-lite",1013
+ "slab",1014
+]1015
+1016
+[[package]]1017
+name = "fuzzy-matcher"1018
+version = "0.3.7"1019
+source = "registry+https://github.com/rust-lang/crates.io-index"1020
+checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"1021
+dependencies = [1022
+ "thread_local",1023
+]1024
+1025
+[[package]]1026
+name = "generator"1027
+version = "0.8.9"1028
+source = "registry+https://github.com/rust-lang/crates.io-index"1029
+checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae"1030
+dependencies = [1031
+ "cc",1032
+ "cfg-if",1033
+ "libc",1034
+ "log",1035
+ "rustversion",1036
+ "windows-link",1037
+ "windows-result",1038
+]1039
+1040
+[[package]]1041
+name = "generic-array"1042
+version = "0.14.7"1043
+source = "registry+https://github.com/rust-lang/crates.io-index"1044
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"1045
+dependencies = [1046
+ "typenum",1047
+ "version_check",1048
+]1049
+1050
+[[package]]1051
+name = "getrandom"1052
+version = "0.2.17"1053
+source = "registry+https://github.com/rust-lang/crates.io-index"1054
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"1055
+dependencies = [1056
+ "cfg-if",1057
+ "js-sys",1058
+ "libc",1059
+ "wasi",1060
+ "wasm-bindgen",1061
+]1062
+1063
+[[package]]1064
+name = "getrandom"1065
+version = "0.3.4"1066
+source = "registry+https://github.com/rust-lang/crates.io-index"1067
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"1068
+dependencies = [1069
+ "cfg-if",1070
+ "js-sys",1071
+ "libc",1072
+ "r-efi 5.3.0",1073
+ "wasip2",1074
+ "wasm-bindgen",1075
+]1076
+1077
+[[package]]1078
+name = "getrandom"1079
+version = "0.4.3"1080
+source = "registry+https://github.com/rust-lang/crates.io-index"1081
+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"1082
+dependencies = [1083
+ "cfg-if",1084
+ "js-sys",1085
+ "libc",1086
+ "r-efi 6.0.0",1087
+ "rand_core 0.10.1",1088
+ "wasm-bindgen",1089
+]1090
+1091
+[[package]]1092
+name = "gloo-timers"1093
+version = "0.3.0"1094
+source = "registry+https://github.com/rust-lang/crates.io-index"1095
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"1096
+dependencies = [1097
+ "futures-channel",1098
+ "futures-core",1099
+ "js-sys",1100
+ "wasm-bindgen",1101
+]1102
+1103
+[[package]]1104
+name = "gloo-utils"1105
+version = "0.2.0"1106
+source = "registry+https://github.com/rust-lang/crates.io-index"1107
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"1108
+dependencies = [1109
+ "js-sys",1110
+ "serde",1111
+ "serde_json",1112
+ "wasm-bindgen",1113
+ "web-sys",1114
+]1115
+1116
+[[package]]1117
+name = "growable-bloom-filter"1118
+version = "2.1.1"1119
+source = "registry+https://github.com/rust-lang/crates.io-index"1120
+checksum = "d174ccb4ba660d431329e7f0797870d0a4281e36353ec4b4a3c5eab6c2cfb6f1"1121
+dependencies = [1122
+ "serde",1123
+ "serde_bytes",1124
+ "serde_derive",1125
+ "xxhash-rust",1126
+]1127
+1128
+[[package]]1129
+name = "h2"1130
+version = "0.4.19"1131
+source = "registry+https://github.com/rust-lang/crates.io-index"1132
+checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16"1133
+dependencies = [1134
+ "atomic-waker",1135
+ "bytes",1136
+ "fnv",1137
+ "futures-core",1138
+ "futures-sink",1139
+ "http",1140
+ "indexmap",1141
+ "slab",1142
+ "tokio",1143
+ "tokio-util",1144
+ "tracing",1145
+]1146
+1147
+[[package]]1148
+name = "hashbrown"1149
+version = "0.15.5"1150
+source = "registry+https://github.com/rust-lang/crates.io-index"1151
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"1152
+dependencies = [1153
+ "foldhash",1154
+]1155
+1156
+[[package]]1157
+name = "hashbrown"1158
+version = "0.17.1"1159
+source = "registry+https://github.com/rust-lang/crates.io-index"1160
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"1161
+1162
+[[package]]1163
+name = "hashlink"1164
+version = "0.10.0"1165
+source = "registry+https://github.com/rust-lang/crates.io-index"1166
+checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"1167
+dependencies = [1168
+ "hashbrown 0.15.5",1169
+]1170
+1171
+[[package]]1172
+name = "hermit-abi"1173
+version = "0.5.3"1174
+source = "registry+https://github.com/rust-lang/crates.io-index"1175
+checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284"1176
+1177
+[[package]]1178
+name = "hkdf"1179
+version = "0.12.4"1180
+source = "registry+https://github.com/rust-lang/crates.io-index"1181
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"1182
+dependencies = [1183
+ "hmac",1184
+]1185
+1186
+[[package]]1187
+name = "hmac"1188
+version = "0.12.1"1189
+source = "registry+https://github.com/rust-lang/crates.io-index"1190
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"1191
+dependencies = [1192
+ "digest",1193
+]1194
+1195
+[[package]]1196
+name = "html5ever"1197
+version = "0.39.0"1198
+source = "registry+https://github.com/rust-lang/crates.io-index"1199
+checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8"1200
+dependencies = [1201
+ "log",1202
+ "markup5ever",1203
+]1204
+1205
+[[package]]1206
+name = "http"1207
+version = "1.5.0"1208
+source = "registry+https://github.com/rust-lang/crates.io-index"1209
+checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"1210
+dependencies = [1211
+ "bytes",1212
+ "itoa",1213
+]1214
+1215
+[[package]]1216
+name = "http-body"1217
+version = "1.1.0"1218
+source = "registry+https://github.com/rust-lang/crates.io-index"1219
+checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"1220
+dependencies = [1221
+ "bytes",1222
+ "http",1223
+]1224
+1225
+[[package]]1226
+name = "http-body-util"1227
+version = "0.1.5"1228
+source = "registry+https://github.com/rust-lang/crates.io-index"1229
+checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c"1230
+dependencies = [1231
+ "bytes",1232
+ "futures-core",1233
+ "http",1234
+ "http-body",1235
+ "pin-project-lite",1236
+]1237
+1238
+[[package]]1239
+name = "httparse"1240
+version = "1.10.1"1241
+source = "registry+https://github.com/rust-lang/crates.io-index"1242
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"1243
+1244
+[[package]]1245
+name = "hyper"1246
+version = "1.11.1"1247
+source = "registry+https://github.com/rust-lang/crates.io-index"1248
+checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43"1249
+dependencies = [1250
+ "atomic-waker",1251
+ "bytes",1252
+ "futures-channel",1253
+ "futures-core",1254
+ "h2",1255
+ "http",1256
+ "http-body",1257
+ "httparse",1258
+ "itoa",1259
+ "pin-project-lite",1260
+ "smallvec",1261
+ "tokio",1262
+ "want",1263
+]1264
+1265
+[[package]]1266
+name = "hyper-rustls"1267
+version = "0.27.9"1268
+source = "registry+https://github.com/rust-lang/crates.io-index"1269
+checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"1270
+dependencies = [1271
+ "http",1272
+ "hyper",1273
+ "hyper-util",1274
+ "rustls",1275
+ "tokio",1276
+ "tokio-rustls",1277
+ "tower-service",1278
+]1279
+1280
+[[package]]1281
+name = "hyper-util"1282
+version = "0.1.20"1283
+source = "registry+https://github.com/rust-lang/crates.io-index"1284
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"1285
+dependencies = [1286
+ "base64",1287
+ "bytes",1288
+ "futures-channel",1289
+ "futures-util",1290
+ "http",1291
+ "http-body",1292
+ "hyper",1293
+ "ipnet",1294
+ "libc",1295
+ "percent-encoding",1296
+ "pin-project-lite",1297
+ "socket2",1298
+ "tokio",1299
+ "tower-service",1300
+ "tracing",1301
+]1302
+1303
+[[package]]1304
+name = "iana-time-zone"1305
+version = "0.1.65"1306
+source = "registry+https://github.com/rust-lang/crates.io-index"1307
+checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"1308
+dependencies = [1309
+ "android_system_properties",1310
+ "core-foundation-sys",1311
+ "iana-time-zone-haiku",1312
+ "js-sys",1313
+ "log",1314
+ "wasm-bindgen",1315
+ "windows-core",1316
+]1317
+1318
+[[package]]1319
+name = "iana-time-zone-haiku"1320
+version = "0.1.2"1321
+source = "registry+https://github.com/rust-lang/crates.io-index"1322
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"1323
+dependencies = [1324
+ "cc",1325
+]1326
+1327
+[[package]]1328
+name = "icu_collections"1329
+version = "2.3.0"1330
+source = "registry+https://github.com/rust-lang/crates.io-index"1331
+checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"1332
+dependencies = [1333
+ "displaydoc",1334
+ "potential_utf",1335
+ "utf8_iter",1336
+ "yoke",1337
+ "zerofrom",1338
+ "zerovec",1339
+]1340
+1341
+[[package]]1342
+name = "icu_locale_core"1343
+version = "2.3.0"1344
+source = "registry+https://github.com/rust-lang/crates.io-index"1345
+checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"1346
+dependencies = [1347
+ "displaydoc",1348
+ "litemap",1349
+ "tinystr",1350
+ "writeable",1351
+ "zerovec",1352
+]1353
+1354
+[[package]]1355
+name = "icu_normalizer"1356
+version = "2.3.0"1357
+source = "registry+https://github.com/rust-lang/crates.io-index"1358
+checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"1359
+dependencies = [1360
+ "icu_collections",1361
+ "icu_normalizer_data",1362
+ "icu_properties",1363
+ "icu_provider",1364
+ "smallvec",1365
+ "zerovec",1366
+]1367
+1368
+[[package]]1369
+name = "icu_normalizer_data"1370
+version = "2.3.0"1371
+source = "registry+https://github.com/rust-lang/crates.io-index"1372
+checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"1373
+1374
+[[package]]1375
+name = "icu_properties"1376
+version = "2.3.0"1377
+source = "registry+https://github.com/rust-lang/crates.io-index"1378
+checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"1379
+dependencies = [1380
+ "displaydoc",1381
+ "icu_collections",1382
+ "icu_locale_core",1383
+ "icu_properties_data",1384
+ "icu_provider",1385
+ "zerotrie",1386
+ "zerovec",1387
+]1388
+1389
+[[package]]1390
+name = "icu_properties_data"1391
+version = "2.3.0"1392
+source = "registry+https://github.com/rust-lang/crates.io-index"1393
+checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"1394
+1395
+[[package]]1396
+name = "icu_provider"1397
+version = "2.3.1"1398
+source = "registry+https://github.com/rust-lang/crates.io-index"1399
+checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"1400
+dependencies = [1401
+ "displaydoc",1402
+ "icu_locale_core",1403
+ "writeable",1404
+ "yoke",1405
+ "zerofrom",1406
+ "zerotrie",1407
+ "zerovec",1408
+]1409
+1410
+[[package]]1411
+name = "idna"1412
+version = "1.1.0"1413
+source = "registry+https://github.com/rust-lang/crates.io-index"1414
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"1415
+dependencies = [1416
+ "idna_adapter",1417
+ "smallvec",1418
+ "utf8_iter",1419
+]1420
+1421
+[[package]]1422
+name = "idna_adapter"1423
+version = "1.2.2"1424
+source = "registry+https://github.com/rust-lang/crates.io-index"1425
+checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"1426
+dependencies = [1427
+ "icu_normalizer",1428
+ "icu_properties",1429
+]1430
+1431
+[[package]]1432
+name = "imbl"1433
+version = "6.1.0"1434
+source = "registry+https://github.com/rust-lang/crates.io-index"1435
+checksum = "0fade8ae6828627ad1fa094a891eccfb25150b383047190a3648d66d06186501"1436
+dependencies = [1437
+ "archery",1438
+ "bitmaps",1439
+ "imbl-sized-chunks",1440
+ "rand_core 0.9.5",1441
+ "rand_xoshiro",1442
+ "serde",1443
+ "version_check",1444
+]1445
+1446
+[[package]]1447
+name = "imbl-sized-chunks"1448
+version = "0.1.3"1449
+source = "registry+https://github.com/rust-lang/crates.io-index"1450
+checksum = "8f4241005618a62f8d57b2febd02510fb96e0137304728543dfc5fd6f052c22d"1451
+dependencies = [1452
+ "bitmaps",1453
+]1454
+1455
+[[package]]1456
+name = "impartial-ord"1457
+version = "2.0.0"1458
+source = "registry+https://github.com/rust-lang/crates.io-index"1459
+checksum = "bc680e03d1a08bdc1c01b60e0c39723430ced63d8cabd93cee0449b6ba916a25"1460
+dependencies = [1461
+ "proc-macro2",1462
+ "quote",1463
+ "syn 3.0.5",1464
+]1465
+1466
+[[package]]1467
+name = "include_dir"1468
+version = "0.7.4"1469
+source = "registry+https://github.com/rust-lang/crates.io-index"1470
+checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"1471
+dependencies = [1472
+ "include_dir_macros",1473
+]1474
+1475
+[[package]]1476
+name = "include_dir_macros"1477
+version = "0.7.4"1478
+source = "registry+https://github.com/rust-lang/crates.io-index"1479
+checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"1480
+dependencies = [1481
+ "proc-macro2",1482
+ "quote",1483
+]1484
+1485
+[[package]]1486
+name = "indexmap"1487
+version = "2.14.2"1488
+source = "registry+https://github.com/rust-lang/crates.io-index"1489
+checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855"1490
+dependencies = [1491
+ "equivalent",1492
+ "hashbrown 0.17.1",1493
+ "serde",1494
+ "serde_core",1495
+]1496
+1497
+[[package]]1498
+name = "inout"1499
+version = "0.1.4"1500
+source = "registry+https://github.com/rust-lang/crates.io-index"1501
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"1502
+dependencies = [1503
+ "block-padding",1504
+ "generic-array",1505
+]1506
+1507
+[[package]]1508
+name = "ipnet"1509
+version = "2.12.2"1510
+source = "registry+https://github.com/rust-lang/crates.io-index"1511
+checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0"1512
+1513
+[[package]]1514
+name = "itertools"1515
+version = "0.10.5"1516
+source = "registry+https://github.com/rust-lang/crates.io-index"1517
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"1518
+dependencies = [1519
+ "either",1520
+]1521
+1522
+[[package]]1523
+name = "itertools"1524
+version = "0.14.0"1525
+source = "registry+https://github.com/rust-lang/crates.io-index"1526
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"1527
+dependencies = [1528
+ "either",1529
+]1530
+1531
+[[package]]1532
+name = "itoa"1533
+version = "1.0.18"1534
+source = "registry+https://github.com/rust-lang/crates.io-index"1535
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"1536
+1537
+[[package]]1538
+name = "jni"1539
+version = "0.22.4"1540
+source = "registry+https://github.com/rust-lang/crates.io-index"1541
+checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"1542
+dependencies = [1543
+ "cfg-if",1544
+ "combine",1545
+ "jni-macros",1546
+ "jni-sys",1547
+ "log",1548
+ "simd_cesu8",1549
+ "thiserror 2.0.20",1550
+ "walkdir",1551
+ "windows-link",1552
+]1553
+1554
+[[package]]1555
+name = "jni-macros"1556
+version = "0.22.4"1557
+source = "registry+https://github.com/rust-lang/crates.io-index"1558
+checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"1559
+dependencies = [1560
+ "proc-macro2",1561
+ "quote",1562
+ "rustc_version",1563
+ "simd_cesu8",1564
+ "syn 2.0.119",1565
+]1566
+1567
+[[package]]1568
+name = "jni-sys"1569
+version = "0.4.1"1570
+source = "registry+https://github.com/rust-lang/crates.io-index"1571
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"1572
+dependencies = [1573
+ "jni-sys-macros",1574
+]1575
+1576
+[[package]]1577
+name = "jni-sys-macros"1578
+version = "0.4.1"1579
+source = "registry+https://github.com/rust-lang/crates.io-index"1580
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"1581
+dependencies = [1582
+ "quote",1583
+ "syn 2.0.119",1584
+]1585
+1586
+[[package]]1587
+name = "jobserver"1588
+version = "0.1.35"1589
+source = "registry+https://github.com/rust-lang/crates.io-index"1590
+checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"1591
+dependencies = [1592
+ "getrandom 0.4.3",1593
+ "libc",1594
+]1595
+1596
+[[package]]1597
+name = "js-sys"1598
+version = "0.3.105"1599
+source = "registry+https://github.com/rust-lang/crates.io-index"1600
+checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e"1601
+dependencies = [1602
+ "cfg-if",1603
+ "futures-util",1604
+ "wasm-bindgen",1605
+]1606
+1607
+[[package]]1608
+name = "js_int"1609
+version = "0.2.2"1610
+source = "registry+https://github.com/rust-lang/crates.io-index"1611
+checksum = "d937f95470b270ce8b8950207715d71aa8e153c0d44c6684d59397ed4949160a"1612
+dependencies = [1613
+ "serde",1614
+]1615
+1616
+[[package]]1617
+name = "js_option"1618
+version = "0.2.0"1619
+source = "registry+https://github.com/rust-lang/crates.io-index"1620
+checksum = "c7dd3e281add16813cf673bf74a32249b0aa0d1c8117519a17b3ada5e8552b3c"1621
+dependencies = [1622
+ "serde_core",1623
+]1624
+1625
+[[package]]1626
+name = "konst"1627
+version = "0.4.3"1628
+source = "registry+https://github.com/rust-lang/crates.io-index"1629
+checksum = "f660d5f887e3562f9ab6f4a14988795b694099d66b4f5dedc02d197ba9becb1d"1630
+dependencies = [1631
+ "const_panic",1632
+ "typewit",1633
+]1634
+1635
+[[package]]1636
+name = "language-tags"1637
+version = "0.3.2"1638
+source = "registry+https://github.com/rust-lang/crates.io-index"1639
+checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"1640
+1641
+[[package]]1642
+name = "lazy_static"1643
+version = "1.5.0"1644
+source = "registry+https://github.com/rust-lang/crates.io-index"1645
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"1646
+1647
+[[package]]1648
+name = "libc"1649
+version = "0.2.189"1650
+source = "registry+https://github.com/rust-lang/crates.io-index"1651
+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"1652
+1653
+[[package]]1654
+name = "libm"1655
+version = "0.2.16"1656
+source = "registry+https://github.com/rust-lang/crates.io-index"1657
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"1658
+1659
+[[package]]1660
+name = "libsqlite3-sys"1661
+version = "0.35.0"1662
+source = "registry+https://github.com/rust-lang/crates.io-index"1663
+checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f"1664
+dependencies = [1665
+ "pkg-config",1666
+ "vcpkg",1667
+]1668
+1669
+[[package]]1670
+name = "linux-raw-sys"1671
+version = "0.12.1"1672
+source = "registry+https://github.com/rust-lang/crates.io-index"1673
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"1674
+1675
+[[package]]1676
+name = "litemap"1677
+version = "0.8.3"1678
+source = "registry+https://github.com/rust-lang/crates.io-index"1679
+checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"1680
+1681
+[[package]]1682
+name = "lock_api"1683
+version = "0.4.14"1684
+source = "registry+https://github.com/rust-lang/crates.io-index"1685
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"1686
+dependencies = [1687
+ "scopeguard",1688
+]1689
+1690
+[[package]]1691
+name = "log"1692
+version = "0.4.34"1693
+source = "registry+https://github.com/rust-lang/crates.io-index"1694
+checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"1695
+1696
+[[package]]1697
+name = "loom"1698
+version = "0.7.2"1699
+source = "registry+https://github.com/rust-lang/crates.io-index"1700
+checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"1701
+dependencies = [1702
+ "cfg-if",1703
+ "generator",1704
+ "scoped-tls",1705
+ "tracing",1706
+ "tracing-subscriber",1707
+]1708
+1709
+[[package]]1710
+name = "lru-slab"1711
+version = "0.1.2"1712
+source = "registry+https://github.com/rust-lang/crates.io-index"1713
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"1714
+1715
+[[package]]1716
+name = "macltok"1717
+version = "0.1.0"1718
+dependencies = [1719
+ "futures-util",1720
+ "getrandom 0.2.17",1721
+ "getrandom 0.3.4",1722
+ "getrandom 0.4.3",1723
+ "http",1724
+ "imbl",1725
+ "matrix-sdk",1726
+ "matrix-sdk-crypto",1727
+ "matrix-sdk-store-encryption",1728
+ "matrix-sdk-ui",1729
+ "matrix_indexed_db_futures",1730
+ "mime",1731
+ "reqwest",1732
+ "ruma",1733
+ "serde",1734
+ "sha2",1735
+ "thiserror 2.0.20",1736
+ "tokio",1737
+ "tracing",1738
+ "url",1739
+ "uuid",1740
+]1741
+1742
+[[package]]1743
+name = "macltok-web"1744
+version = "0.1.0"1745
+dependencies = [1746
+ "futures-channel",1747
+ "js-sys",1748
+ "macltok",1749
+ "wasm-bindgen",1750
+ "wasm-bindgen-futures",1751
+ "wasm-bindgen-test",1752
+ "web-sys",1753
+]1754
+1755
+[[package]]1756
+name = "macroific"1757
+version = "2.0.0"1758
+source = "registry+https://github.com/rust-lang/crates.io-index"1759
+checksum = "89f276537b4b8f981bf1c13d79470980f71134b7bdcc5e6e911e910e556b0285"1760
+dependencies = [1761
+ "macroific_attr_parse 2.0.0",1762
+ "macroific_core 2.0.0",1763
+ "macroific_macro 2.0.0",1764
+]1765
+1766
+[[package]]1767
+name = "macroific"1768
+version = "3.0.1"1769
+source = "registry+https://github.com/rust-lang/crates.io-index"1770
+checksum = "c437abb3bf40939b00d1dff858ed2050d948bc230dee39546ed16795fcf10ec2"1771
+dependencies = [1772
+ "macroific_attr_parse 3.0.1",1773
+ "macroific_core 3.0.1",1774
+ "macroific_macro 3.0.1",1775
+]1776
+1777
+[[package]]1778
+name = "macroific_attr_parse"1779
+version = "2.0.0"1780
+source = "registry+https://github.com/rust-lang/crates.io-index"1781
+checksum = "ad4023761b45fcd36abed8fb7ae6a80456b0a38102d55e89a57d9a594a236be9"1782
+dependencies = [1783
+ "proc-macro2",1784
+ "quote",1785
+ "sealed 0.6.0",1786
+ "syn 2.0.119",1787
+]1788
+1789
+[[package]]1790
+name = "macroific_attr_parse"1791
+version = "3.0.1"1792
+source = "registry+https://github.com/rust-lang/crates.io-index"1793
+checksum = "aeb7a82ec1aa16094da719be18615d79cb2574b037358e4e6c6d96eedcff3a93"1794
+dependencies = [1795
+ "proc-macro2",1796
+ "quote",1797
+ "sealed 0.7.0",1798
+ "syn 3.0.5",1799
+]1800
+1801
+[[package]]1802
+name = "macroific_core"1803
+version = "2.0.0"1804
+source = "registry+https://github.com/rust-lang/crates.io-index"1805
+checksum = "d0a7594d3c14916fa55bef7e9d18c5daa9ed410dd37504251e4b75bbdeec33e3"1806
+dependencies = [1807
+ "proc-macro2",1808
+ "quote",1809
+ "sealed 0.6.0",1810
+ "syn 2.0.119",1811
+]1812
+1813
+[[package]]1814
+name = "macroific_core"1815
+version = "3.0.1"1816
+source = "registry+https://github.com/rust-lang/crates.io-index"1817
+checksum = "26c8e789484d2fa216eee9d5e0565ba80ccda389bcf0e111143a7b8f4792336e"1818
+dependencies = [1819
+ "proc-macro2",1820
+ "quote",1821
+ "sealed 0.7.0",1822
+ "syn 3.0.5",1823
+]1824
+1825
+[[package]]1826
+name = "macroific_macro"1827
+version = "2.0.0"1828
+source = "registry+https://github.com/rust-lang/crates.io-index"1829
+checksum = "4da6f2ed796261b0a74e2b52b42c693bb6dee1effba3a482c49592659f824b3b"1830
+dependencies = [1831
+ "macroific_attr_parse 2.0.0",1832
+ "macroific_core 2.0.0",1833
+ "proc-macro2",1834
+ "quote",1835
+ "syn 2.0.119",1836
+]1837
+1838
+[[package]]1839
+name = "macroific_macro"1840
+version = "3.0.1"1841
+source = "registry+https://github.com/rust-lang/crates.io-index"1842
+checksum = "e30d63cb102648965753f0d47a6ab171b1cbb1fb5c363f4784ea986782fc7b77"1843
+dependencies = [1844
+ "macroific_attr_parse 3.0.1",1845
+ "macroific_core 3.0.1",1846
+ "proc-macro2",1847
+ "quote",1848
+ "syn 3.0.5",1849
+]1850
+1851
+[[package]]1852
+name = "maplit"1853
+version = "1.0.2"1854
+source = "registry+https://github.com/rust-lang/crates.io-index"1855
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"1856
+1857
+[[package]]1858
+name = "markup5ever"1859
+version = "0.39.0"1860
+source = "registry+https://github.com/rust-lang/crates.io-index"1861
+checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de"1862
+dependencies = [1863
+ "log",1864
+ "tendril",1865
+ "web_atoms",1866
+]1867
+1868
+[[package]]1869
+name = "matchers"1870
+version = "0.2.0"1871
+source = "registry+https://github.com/rust-lang/crates.io-index"1872
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"1873
+dependencies = [1874
+ "regex-automata",1875
+]1876
+1877
+[[package]]1878
+name = "matrix-pickle"1879
+version = "0.2.3"1880
+source = "registry+https://github.com/rust-lang/crates.io-index"1881
+checksum = "b3d65d46b7379dd0afa4a42f9b2269821d31afdee0111b5e0d74e3bee03553a0"1882
+dependencies = [1883
+ "matrix-pickle-derive",1884
+ "thiserror 2.0.20",1885
+]1886
+1887
+[[package]]1888
+name = "matrix-pickle-derive"1889
+version = "0.2.3"1890
+source = "registry+https://github.com/rust-lang/crates.io-index"1891
+checksum = "414b5e4c34009f2bc3fe35dd018f25755ca38858096574841c7332f99e2c7e77"1892
+dependencies = [1893
+ "proc-macro-crate",1894
+ "proc-macro2",1895
+ "quote",1896
+ "syn 2.0.119",1897
+]1898
+1899
+[[package]]1900
+name = "matrix-sdk"1901
+version = "0.18.0"1902
+source = "registry+https://github.com/rust-lang/crates.io-index"1903
+checksum = "7083d580527511ac5d9369e03b9f2b20902e76949f1b3964051f978e4d3756ae"1904
+dependencies = [1905
+ "anymap2",1906
+ "aquamarine",1907
+ "as_variant",1908
+ "async-channel",1909
+ "async-once-cell",1910
+ "async-stream",1911
+ "async-trait",1912
+ "backon",1913
+ "bytes",1914
+ "bytesize",1915
+ "cfg-if",1916
+ "event-listener",1917
+ "eyeball",1918
+ "eyeball-im",1919
+ "futures-core",1920
+ "futures-util",1921
+ "gloo-timers",1922
+ "http",1923
+ "imbl",1924
+ "indexmap",1925
+ "itertools 0.14.0",1926
+ "js_int",1927
+ "language-tags",1928
+ "matrix-sdk-base",1929
+ "matrix-sdk-common",1930
+ "matrix-sdk-indexeddb",1931
+ "matrix-sdk-sqlite",1932
+ "mime",1933
+ "mime2ext",1934
+ "oauth2",1935
+ "oauth2-reqwest",1936
+ "percent-encoding",1937
+ "pin-project-lite",1938
+ "reqwest",1939
+ "ruma",1940
+ "rustls",1941
+ "rustls-native-certs",1942
+ "rustls-pki-types",1943
+ "serde",1944
+ "serde_html_form",1945
+ "serde_json",1946
+ "sha2",1947
+ "tempfile",1948
+ "thiserror 2.0.20",1949
+ "tokio",1950
+ "tokio-stream",1951
+ "tokio-util",1952
+ "tracing",1953
+ "url",1954
+ "urlencoding",1955
+ "vodozemac",1956
+ "webpki-roots",1957
+ "zeroize",1958
+]1959
+1960
+[[package]]1961
+name = "matrix-sdk-base"1962
+version = "0.18.0"1963
+source = "registry+https://github.com/rust-lang/crates.io-index"1964
+checksum = "e09a917eb1f7643d9d9a06b2f131e2ceb39df6910a7b830dac18bfd6db37a1f5"1965
+dependencies = [1966
+ "as_variant",1967
+ "async-trait",1968
+ "bitflags",1969
+ "decancer",1970
+ "eyeball",1971
+ "eyeball-im",1972
+ "futures-util",1973
+ "growable-bloom-filter",1974
+ "matrix-sdk-common",1975
+ "matrix-sdk-crypto",1976
+ "matrix-sdk-store-encryption",1977
+ "regex",1978
+ "ruma",1979
+ "serde",1980
+ "serde_json",1981
+ "thiserror 2.0.20",1982
+ "tokio",1983
+ "tracing",1984
+ "unicode-normalization",1985
+]1986
+1987
+[[package]]1988
+name = "matrix-sdk-common"1989
+version = "0.18.0"1990
+source = "registry+https://github.com/rust-lang/crates.io-index"1991
+checksum = "2b9d1e0fee0f090180ef9457034adc547e80de9e6e3eb2e63aaac68a8476f836"1992
+dependencies = [1993
+ "eyeball-im",1994
+ "futures-core",1995
+ "futures-executor",1996
+ "futures-util",1997
+ "gloo-timers",1998
+ "imbl",1999
+ "ruma",2000
+ "serde",2001
+ "serde_json",2002
+ "thiserror 2.0.20",2003
+ "tokio",2004
+ "tracing",2005
+ "tracing-subscriber",2006
+ "wasm-bindgen",2007
+ "wasm-bindgen-futures",2008
+ "web-sys",2009
+]2010
+2011
+[[package]]2012
+name = "matrix-sdk-crypto"2013
+version = "0.18.0"2014
+source = "registry+https://github.com/rust-lang/crates.io-index"2015
+checksum = "c54afd2a326f51c13a6ad44ec86315a688fffeb3f1e287fb343e0e1836a3bdaf"2016
+dependencies = [2017
+ "aes",2018
+ "aquamarine",2019
+ "as_variant",2020
+ "async-trait",2021
+ "bs58",2022
+ "byteorder",2023
+ "cfg-if",2024
+ "ctr",2025
+ "eyeball",2026
+ "futures-core",2027
+ "futures-util",2028
+ "hkdf",2029
+ "hmac",2030
+ "itertools 0.14.0",2031
+ "js_option",2032
+ "matrix-sdk-common",2033
+ "pbkdf2",2034
+ "rand 0.10.2",2035
+ "rmp-serde",2036
+ "ruma",2037
+ "serde",2038
+ "serde_json",2039
+ "sha2",2040
+ "subtle",2041
+ "thiserror 2.0.20",2042
+ "time",2043
+ "tokio",2044
+ "tokio-stream",2045
+ "tracing",2046
+ "ulid",2047
+ "url",2048
+ "vodozemac",2049
+ "zeroize",2050
+]2051
+2052
+[[package]]2053
+name = "matrix-sdk-indexeddb"2054
+version = "0.18.0"2055
+source = "registry+https://github.com/rust-lang/crates.io-index"2056
+checksum = "fef37395fffb7c916f7109ab0d16d8ca599403dd8164d08c0d966176b66ede47"2057
+dependencies = [2058
+ "async-trait",2059
+ "base64",2060
+ "futures-util",2061
+ "getrandom 0.4.3",2062
+ "gloo-utils",2063
+ "growable-bloom-filter",2064
+ "hkdf",2065
+ "js-sys",2066
+ "matrix-sdk-base",2067
+ "matrix-sdk-crypto",2068
+ "matrix-sdk-store-encryption",2069
+ "matrix_indexed_db_futures",2070
+ "rmp-serde",2071
+ "ruma",2072
+ "serde",2073
+ "serde-wasm-bindgen",2074
+ "serde_json",2075
+ "sha2",2076
+ "thiserror 2.0.20",2077
+ "tokio",2078
+ "tracing",2079
+ "uuid",2080
+ "wasm-bindgen",2081
+ "web-sys",2082
+ "zeroize",2083
+]2084
+2085
+[[package]]2086
+name = "matrix-sdk-sqlite"2087
+version = "0.18.0"2088
+source = "registry+https://github.com/rust-lang/crates.io-index"2089
+checksum = "a49133429271005745f8d5a05362d2ba6567274777250236799927ca30dc0670"2090
+dependencies = [2091
+ "as_variant",2092
+ "async-trait",2093
+ "deadpool",2094
+ "deadpool-sync",2095
+ "itertools 0.14.0",2096
+ "matrix-sdk-base",2097
+ "matrix-sdk-crypto",2098
+ "matrix-sdk-store-encryption",2099
+ "num_cpus",2100
+ "rmp-serde",2101
+ "ruma",2102
+ "rusqlite",2103
+ "serde",2104
+ "serde_json",2105
+ "serde_path_to_error",2106
+ "thiserror 2.0.20",2107
+ "tokio",2108
+ "tracing",2109
+ "vodozemac",2110
+ "zeroize",2111
+]2112
+2113
+[[package]]2114
+name = "matrix-sdk-store-encryption"2115
+version = "0.18.0"2116
+source = "registry+https://github.com/rust-lang/crates.io-index"2117
+checksum = "2f48f304e553fb6200b1d7d1f77a88fd182076d4b25624e9dbfa42d6a37de35e"2118
+dependencies = [2119
+ "base64",2120
+ "blake3",2121
+ "chacha20poly1305",2122
+ "getrandom 0.2.17",2123
+ "getrandom 0.4.3",2124
+ "hmac",2125
+ "pbkdf2",2126
+ "rand 0.10.2",2127
+ "rmp-serde",2128
+ "serde",2129
+ "serde_json",2130
+ "sha2",2131
+ "thiserror 2.0.20",2132
+ "zeroize",2133
+]2134
+2135
+[[package]]2136
+name = "matrix-sdk-ui"2137
+version = "0.18.0"2138
+source = "registry+https://github.com/rust-lang/crates.io-index"2139
+checksum = "6d1f2b8a8cf57164d7cee4eb61c0b9f074b2e11d766a9391b7db0b9f2cbd83d8"2140
+dependencies = [2141
+ "as_variant",2142
+ "async-rx",2143
+ "async-stream",2144
+ "async_cell",2145
+ "bitflags",2146
+ "chrono",2147
+ "emojis",2148
+ "eyeball",2149
+ "eyeball-im",2150
+ "eyeball-im-util",2151
+ "futures-core",2152
+ "futures-util",2153
+ "fuzzy-matcher",2154
+ "growable-bloom-filter",2155
+ "imbl",2156
+ "indexmap",2157
+ "itertools 0.14.0",2158
+ "matrix-sdk",2159
+ "matrix-sdk-base",2160
+ "matrix-sdk-common",2161
+ "mime",2162
+ "pin-project-lite",2163
+ "ruma",2164
+ "serde",2165
+ "serde_json",2166
+ "thiserror 2.0.20",2167
+ "tokio",2168
+ "tokio-stream",2169
+ "tracing",2170
+ "unicode-normalization",2171
+ "unicode-segmentation",2172
+]2173
+2174
+[[package]]2175
+name = "matrix_indexed_db_futures"2176
+version = "0.7.0"2177
+source = "registry+https://github.com/rust-lang/crates.io-index"2178
+checksum = "245ff6a224b4df7b0c90dda2dd5a6eb46112708d49e8bdd8b007fccb09fea8e4"2179
+dependencies = [2180
+ "accessory",2181
+ "cfg-if",2182
+ "delegate-display",2183
+ "derive_more 2.1.1",2184
+ "fancy_constructor",2185
+ "futures-core",2186
+ "js-sys",2187
+ "matrix_indexed_db_futures_macros_internal",2188
+ "sealed 0.6.0",2189
+ "serde",2190
+ "serde-wasm-bindgen",2191
+ "smallvec",2192
+ "thiserror 2.0.20",2193
+ "tokio",2194
+ "wasm-bindgen",2195
+ "wasm-bindgen-futures",2196
+ "wasm_evt_listener",2197
+ "web-sys",2198
+ "web-time",2199
+]2200
+2201
+[[package]]2202
+name = "matrix_indexed_db_futures_macros_internal"2203
+version = "1.0.0"2204
+source = "registry+https://github.com/rust-lang/crates.io-index"2205
+checksum = "b428aee5c0fe9e5babd29e99d289b7f64718c444989aac0442d1fd6d3e3f66d1"2206
+dependencies = [2207
+ "macroific 2.0.0",2208
+ "proc-macro2",2209
+ "quote",2210
+ "syn 2.0.119",2211
+]2212
+2213
+[[package]]2214
+name = "memchr"2215
+version = "2.8.3"2216
+source = "registry+https://github.com/rust-lang/crates.io-index"2217
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"2218
+2219
+[[package]]2220
+name = "mime"2221
+version = "0.3.17"2222
+source = "registry+https://github.com/rust-lang/crates.io-index"2223
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"2224
+2225
+[[package]]2226
+name = "mime2ext"2227
+version = "0.1.54"2228
+source = "registry+https://github.com/rust-lang/crates.io-index"2229
+checksum = "cbf6f36070878c42c5233846cd3de24cf9016828fd47bc22957a687298bb21fc"2230
+2231
+[[package]]2232
+name = "minicov"2233
+version = "0.3.8"2234
+source = "registry+https://github.com/rust-lang/crates.io-index"2235
+checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"2236
+dependencies = [2237
+ "cc",2238
+ "walkdir",2239
+]2240
+2241
+[[package]]2242
+name = "miniz_oxide"2243
+version = "0.9.1"2244
+source = "registry+https://github.com/rust-lang/crates.io-index"2245
+checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"2246
+dependencies = [2247
+ "adler2",2248
+ "simd-adler32",2249
+]2250
+2251
+[[package]]2252
+name = "mio"2253
+version = "1.2.3"2254
+source = "registry+https://github.com/rust-lang/crates.io-index"2255
+checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8"2256
+dependencies = [2257
+ "libc",2258
+ "wasi",2259
+ "windows-sys 0.61.2",2260
+]2261
+2262
+[[package]]2263
+name = "new_debug_unreachable"2264
+version = "1.0.6"2265
+source = "registry+https://github.com/rust-lang/crates.io-index"2266
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"2267
+2268
+[[package]]2269
+name = "nu-ansi-term"2270
+version = "0.50.3"2271
+source = "registry+https://github.com/rust-lang/crates.io-index"2272
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"2273
+dependencies = [2274
+ "windows-sys 0.61.2",2275
+]2276
+2277
+[[package]]2278
+name = "num-conv"2279
+version = "0.2.2"2280
+source = "registry+https://github.com/rust-lang/crates.io-index"2281
+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"2282
+2283
+[[package]]2284
+name = "num-traits"2285
+version = "0.2.19"2286
+source = "registry+https://github.com/rust-lang/crates.io-index"2287
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"2288
+dependencies = [2289
+ "autocfg",2290
+ "libm",2291
+]2292
+2293
+[[package]]2294
+name = "num_cpus"2295
+version = "1.17.0"2296
+source = "registry+https://github.com/rust-lang/crates.io-index"2297
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"2298
+dependencies = [2299
+ "hermit-abi",2300
+ "libc",2301
+]2302
+2303
+[[package]]2304
+name = "oauth2"2305
+version = "5.0.0"2306
+source = "registry+https://github.com/rust-lang/crates.io-index"2307
+checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d"2308
+dependencies = [2309
+ "base64",2310
+ "chrono",2311
+ "getrandom 0.2.17",2312
+ "http",2313
+ "rand 0.8.8",2314
+ "serde",2315
+ "serde_json",2316
+ "serde_path_to_error",2317
+ "sha2",2318
+ "thiserror 1.0.69",2319
+ "url",2320
+]2321
+2322
+[[package]]2323
+name = "oauth2-reqwest"2324
+version = "0.1.0-alpha.3"2325
+source = "registry+https://github.com/rust-lang/crates.io-index"2326
+checksum = "234fb5c965bbce983ee5de636a7a51d6a3223da8067ea02f9ab2d2d78ac08be2"2327
+dependencies = [2328
+ "oauth2",2329
+ "reqwest",2330
+]2331
+2332
+[[package]]2333
+name = "once_cell"2334
+version = "1.21.4"2335
+source = "registry+https://github.com/rust-lang/crates.io-index"2336
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"2337
+2338
+[[package]]2339
+name = "oorandom"2340
+version = "11.1.5"2341
+source = "registry+https://github.com/rust-lang/crates.io-index"2342
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"2343
+2344
+[[package]]2345
+name = "opaque-debug"2346
+version = "0.3.1"2347
+source = "registry+https://github.com/rust-lang/crates.io-index"2348
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"2349
+2350
+[[package]]2351
+name = "openssl-probe"2352
+version = "0.2.1"2353
+source = "registry+https://github.com/rust-lang/crates.io-index"2354
+checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"2355
+2356
+[[package]]2357
+name = "parking"2358
+version = "2.2.1"2359
+source = "registry+https://github.com/rust-lang/crates.io-index"2360
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"2361
+2362
+[[package]]2363
+name = "parking_lot"2364
+version = "0.12.5"2365
+source = "registry+https://github.com/rust-lang/crates.io-index"2366
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"2367
+dependencies = [2368
+ "lock_api",2369
+ "parking_lot_core",2370
+]2371
+2372
+[[package]]2373
+name = "parking_lot_core"2374
+version = "0.9.12"2375
+source = "registry+https://github.com/rust-lang/crates.io-index"2376
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"2377
+dependencies = [2378
+ "cfg-if",2379
+ "libc",2380
+ "redox_syscall",2381
+ "smallvec",2382
+ "windows-link",2383
+]2384
+2385
+[[package]]2386
+name = "pbkdf2"2387
+version = "0.12.2"2388
+source = "registry+https://github.com/rust-lang/crates.io-index"2389
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"2390
+dependencies = [2391
+ "digest",2392
+]2393
+2394
+[[package]]2395
+name = "percent-encoding"2396
+version = "2.3.2"2397
+source = "registry+https://github.com/rust-lang/crates.io-index"2398
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"2399
+2400
+[[package]]2401
+name = "phf"2402
+version = "0.13.1"2403
+source = "registry+https://github.com/rust-lang/crates.io-index"2404
+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"2405
+dependencies = [2406
+ "phf_shared",2407
+ "serde",2408
+]2409
+2410
+[[package]]2411
+name = "phf_codegen"2412
+version = "0.13.1"2413
+source = "registry+https://github.com/rust-lang/crates.io-index"2414
+checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"2415
+dependencies = [2416
+ "phf_generator",2417
+ "phf_shared",2418
+]2419
+2420
+[[package]]2421
+name = "phf_generator"2422
+version = "0.13.1"2423
+source = "registry+https://github.com/rust-lang/crates.io-index"2424
+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"2425
+dependencies = [2426
+ "fastrand",2427
+ "phf_shared",2428
+]2429
+2430
+[[package]]2431
+name = "phf_shared"2432
+version = "0.13.1"2433
+source = "registry+https://github.com/rust-lang/crates.io-index"2434
+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"2435
+dependencies = [2436
+ "siphasher",2437
+]2438
+2439
+[[package]]2440
+name = "pin-project-lite"2441
+version = "0.2.17"2442
+source = "registry+https://github.com/rust-lang/crates.io-index"2443
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"2444
+2445
+[[package]]2446
+name = "pkcs8"2447
+version = "0.10.2"2448
+source = "registry+https://github.com/rust-lang/crates.io-index"2449
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"2450
+dependencies = [2451
+ "der",2452
+ "spki",2453
+]2454
+2455
+[[package]]2456
+name = "pkg-config"2457
+version = "0.3.34"2458
+source = "registry+https://github.com/rust-lang/crates.io-index"2459
+checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"2460
+2461
+[[package]]2462
+name = "poly1305"2463
+version = "0.8.0"2464
+source = "registry+https://github.com/rust-lang/crates.io-index"2465
+checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"2466
+dependencies = [2467
+ "cpufeatures 0.2.17",2468
+ "opaque-debug",2469
+ "universal-hash",2470
+]2471
+2472
+[[package]]2473
+name = "potential_utf"2474
+version = "0.1.6"2475
+source = "registry+https://github.com/rust-lang/crates.io-index"2476
+checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"2477
+dependencies = [2478
+ "zerovec",2479
+]2480
+2481
+[[package]]2482
+name = "powerfmt"2483
+version = "0.2.0"2484
+source = "registry+https://github.com/rust-lang/crates.io-index"2485
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"2486
+2487
+[[package]]2488
+name = "ppv-lite86"2489
+version = "0.2.21"2490
+source = "registry+https://github.com/rust-lang/crates.io-index"2491
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"2492
+dependencies = [2493
+ "zerocopy",2494
+]2495
+2496
+[[package]]2497
+name = "precomputed-hash"2498
+version = "0.1.1"2499
+source = "registry+https://github.com/rust-lang/crates.io-index"2500
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"2501
+2502
+[[package]]2503
+name = "proc-macro-crate"2504
+version = "3.5.0"2505
+source = "registry+https://github.com/rust-lang/crates.io-index"2506
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"2507
+dependencies = [2508
+ "toml_edit",2509
+]2510
+2511
+[[package]]2512
+name = "proc-macro-error-attr2"2513
+version = "2.0.0"2514
+source = "registry+https://github.com/rust-lang/crates.io-index"2515
+checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"2516
+dependencies = [2517
+ "proc-macro2",2518
+ "quote",2519
+]2520
+2521
+[[package]]2522
+name = "proc-macro-error2"2523
+version = "2.0.1"2524
+source = "registry+https://github.com/rust-lang/crates.io-index"2525
+checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"2526
+dependencies = [2527
+ "proc-macro-error-attr2",2528
+ "proc-macro2",2529
+ "quote",2530
+]2531
+2532
+[[package]]2533
+name = "proc-macro2"2534
+version = "1.0.107"2535
+source = "registry+https://github.com/rust-lang/crates.io-index"2536
+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"2537
+dependencies = [2538
+ "unicode-ident",2539
+]2540
+2541
+[[package]]2542
+name = "prost"2543
+version = "0.14.4"2544
+source = "registry+https://github.com/rust-lang/crates.io-index"2545
+checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1"2546
+dependencies = [2547
+ "bytes",2548
+ "prost-derive",2549
+]2550
+2551
+[[package]]2552
+name = "prost-derive"2553
+version = "0.14.4"2554
+source = "registry+https://github.com/rust-lang/crates.io-index"2555
+checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf"2556
+dependencies = [2557
+ "anyhow",2558
+ "itertools 0.14.0",2559
+ "proc-macro2",2560
+ "quote",2561
+ "syn 2.0.119",2562
+]2563
+2564
+[[package]]2565
+name = "quinn"2566
+version = "0.11.11"2567
+source = "registry+https://github.com/rust-lang/crates.io-index"2568
+checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8"2569
+dependencies = [2570
+ "bytes",2571
+ "cfg_aliases",2572
+ "pin-project-lite",2573
+ "quinn-proto",2574
+ "quinn-udp",2575
+ "rustc-hash",2576
+ "rustls",2577
+ "socket2",2578
+ "thiserror 2.0.20",2579
+ "tokio",2580
+ "tracing",2581
+ "web-time",2582
+]2583
+2584
+[[package]]2585
+name = "quinn-proto"2586
+version = "0.11.17"2587
+source = "registry+https://github.com/rust-lang/crates.io-index"2588
+checksum = "04759210543be93709136e28212294a659ef5001836ff4eab4d663e4529bba83"2589
+dependencies = [2590
+ "aws-lc-rs",2591
+ "bytes",2592
+ "getrandom 0.4.3",2593
+ "lru-slab",2594
+ "rand 0.10.2",2595
+ "rand_pcg",2596
+ "ring",2597
+ "rustc-hash",2598
+ "rustls",2599
+ "rustls-pki-types",2600
+ "slab",2601
+ "thiserror 2.0.20",2602
+ "tinyvec",2603
+ "tracing",2604
+ "web-time",2605
+]2606
+2607
+[[package]]2608
+name = "quinn-udp"2609
+version = "0.5.15"2610
+source = "registry+https://github.com/rust-lang/crates.io-index"2611
+checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"2612
+dependencies = [2613
+ "cfg_aliases",2614
+ "libc",2615
+ "once_cell",2616
+ "socket2",2617
+ "tracing",2618
+ "windows-sys 0.61.2",2619
+]2620
+2621
+[[package]]2622
+name = "quote"2623
+version = "1.0.47"2624
+source = "registry+https://github.com/rust-lang/crates.io-index"2625
+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"2626
+dependencies = [2627
+ "proc-macro2",2628
+]2629
+2630
+[[package]]2631
+name = "r-efi"2632
+version = "5.3.0"2633
+source = "registry+https://github.com/rust-lang/crates.io-index"2634
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"2635
+2636
+[[package]]2637
+name = "r-efi"2638
+version = "6.0.0"2639
+source = "registry+https://github.com/rust-lang/crates.io-index"2640
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"2641
+2642
+[[package]]2643
+name = "rand"2644
+version = "0.8.8"2645
+source = "registry+https://github.com/rust-lang/crates.io-index"2646
+checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c"2647
+dependencies = [2648
+ "libc",2649
+ "rand_chacha 0.3.1",2650
+ "rand_core 0.6.4",2651
+]2652
+2653
+[[package]]2654
+name = "rand"2655
+version = "0.9.5"2656
+source = "registry+https://github.com/rust-lang/crates.io-index"2657
+checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"2658
+dependencies = [2659
+ "rand_chacha 0.9.0",2660
+ "rand_core 0.9.5",2661
+]2662
+2663
+[[package]]2664
+name = "rand"2665
+version = "0.10.2"2666
+source = "registry+https://github.com/rust-lang/crates.io-index"2667
+checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"2668
+dependencies = [2669
+ "chacha20 0.10.2",2670
+ "getrandom 0.4.3",2671
+ "rand_core 0.10.1",2672
+]2673
+2674
+[[package]]2675
+name = "rand_chacha"2676
+version = "0.3.1"2677
+source = "registry+https://github.com/rust-lang/crates.io-index"2678
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"2679
+dependencies = [2680
+ "ppv-lite86",2681
+ "rand_core 0.6.4",2682
+]2683
+2684
+[[package]]2685
+name = "rand_chacha"2686
+version = "0.9.0"2687
+source = "registry+https://github.com/rust-lang/crates.io-index"2688
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"2689
+dependencies = [2690
+ "ppv-lite86",2691
+ "rand_core 0.9.5",2692
+]2693
+2694
+[[package]]2695
+name = "rand_core"2696
+version = "0.6.4"2697
+source = "registry+https://github.com/rust-lang/crates.io-index"2698
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"2699
+dependencies = [2700
+ "getrandom 0.2.17",2701
+]2702
+2703
+[[package]]2704
+name = "rand_core"2705
+version = "0.9.5"2706
+source = "registry+https://github.com/rust-lang/crates.io-index"2707
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"2708
+dependencies = [2709
+ "getrandom 0.3.4",2710
+]2711
+2712
+[[package]]2713
+name = "rand_core"2714
+version = "0.10.1"2715
+source = "registry+https://github.com/rust-lang/crates.io-index"2716
+checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"2717
+2718
+[[package]]2719
+name = "rand_pcg"2720
+version = "0.10.2"2721
+source = "registry+https://github.com/rust-lang/crates.io-index"2722
+checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"2723
+dependencies = [2724
+ "rand_core 0.10.1",2725
+]2726
+2727
+[[package]]2728
+name = "rand_xoshiro"2729
+version = "0.7.0"2730
+source = "registry+https://github.com/rust-lang/crates.io-index"2731
+checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41"2732
+dependencies = [2733
+ "rand_core 0.9.5",2734
+]2735
+2736
+[[package]]2737
+name = "readlock"2738
+version = "0.1.11"2739
+source = "registry+https://github.com/rust-lang/crates.io-index"2740
+checksum = "6da6f291b23556edd9edaf655a0be2ad8ef8002ff5f1bca62b264f3f58b53f34"2741
+2742
+[[package]]2743
+name = "readlock-tokio"2744
+version = "0.1.6"2745
+source = "registry+https://github.com/rust-lang/crates.io-index"2746
+checksum = "fc7e264f9ec4f3d112e8e2f214e8e7cb5cf3b83278f3570b7e00bfe13d3bd8ff"2747
+dependencies = [2748
+ "tokio",2749
+]2750
+2751
+[[package]]2752
+name = "redox_syscall"2753
+version = "0.5.18"2754
+source = "registry+https://github.com/rust-lang/crates.io-index"2755
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"2756
+dependencies = [2757
+ "bitflags",2758
+]2759
+2760
+[[package]]2761
+name = "regex"2762
+version = "1.13.1"2763
+source = "registry+https://github.com/rust-lang/crates.io-index"2764
+checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"2765
+dependencies = [2766
+ "aho-corasick",2767
+ "memchr",2768
+ "regex-automata",2769
+ "regex-syntax",2770
+]2771
+2772
+[[package]]2773
+name = "regex-automata"2774
+version = "0.4.18"2775
+source = "registry+https://github.com/rust-lang/crates.io-index"2776
+checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"2777
+dependencies = [2778
+ "aho-corasick",2779
+ "memchr",2780
+ "regex-syntax",2781
+]2782
+2783
+[[package]]2784
+name = "regex-syntax"2785
+version = "0.8.11"2786
+source = "registry+https://github.com/rust-lang/crates.io-index"2787
+checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"2788
+2789
+[[package]]2790
+name = "reqwest"2791
+version = "0.13.4"2792
+source = "registry+https://github.com/rust-lang/crates.io-index"2793
+checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"2794
+dependencies = [2795
+ "base64",2796
+ "bytes",2797
+ "futures-core",2798
+ "futures-util",2799
+ "h2",2800
+ "http",2801
+ "http-body",2802
+ "http-body-util",2803
+ "hyper",2804
+ "hyper-rustls",2805
+ "hyper-util",2806
+ "js-sys",2807
+ "log",2808
+ "percent-encoding",2809
+ "pin-project-lite",2810
+ "quinn",2811
+ "rustls",2812
+ "rustls-pki-types",2813
+ "rustls-platform-verifier",2814
+ "sync_wrapper",2815
+ "tokio",2816
+ "tokio-rustls",2817
+ "tokio-util",2818
+ "tower",2819
+ "tower-http",2820
+ "tower-service",2821
+ "url",2822
+ "wasm-bindgen",2823
+ "wasm-bindgen-futures",2824
+ "wasm-streams",2825
+ "web-sys",2826
+]2827
+2828
+[[package]]2829
+name = "ring"2830
+version = "0.17.14"2831
+source = "registry+https://github.com/rust-lang/crates.io-index"2832
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"2833
+dependencies = [2834
+ "cc",2835
+ "cfg-if",2836
+ "getrandom 0.2.17",2837
+ "libc",2838
+ "untrusted",2839
+ "windows-sys 0.52.0",2840
+]2841
+2842
+[[package]]2843
+name = "rmp"2844
+version = "0.8.15"2845
+source = "registry+https://github.com/rust-lang/crates.io-index"2846
+checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c"2847
+dependencies = [2848
+ "num-traits",2849
+]2850
+2851
+[[package]]2852
+name = "rmp-serde"2853
+version = "1.3.1"2854
+source = "registry+https://github.com/rust-lang/crates.io-index"2855
+checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155"2856
+dependencies = [2857
+ "rmp",2858
+ "serde",2859
+]2860
+2861
+[[package]]2862
+name = "ruma"2863
+version = "0.16.0"2864
+source = "registry+https://github.com/rust-lang/crates.io-index"2865
+checksum = "ee4fe5bfacdb0e95e733da3b6c37d98edf46447a4a8e8dea824e0da266d8ad59"2866
+dependencies = [2867
+ "assign",2868
+ "js_int",2869
+ "js_option",2870
+ "ruma-client-api",2871
+ "ruma-common",2872
+ "ruma-events",2873
+ "ruma-html",2874
+ "web-time",2875
+]2876
+2877
+[[package]]2878
+name = "ruma-client-api"2879
+version = "0.24.0"2880
+source = "registry+https://github.com/rust-lang/crates.io-index"2881
+checksum = "bf7ca43a888ca569168d7e3901f4dd14a777b860bb19f4c08e35414162eb261c"2882
+dependencies = [2883
+ "as_variant",2884
+ "assign",2885
+ "bytes",2886
+ "http",2887
+ "js_int",2888
+ "js_option",2889
+ "maplit",2890
+ "ruma-common",2891
+ "ruma-events",2892
+ "serde",2893
+ "serde_html_form",2894
+ "serde_json",2895
+ "thiserror 2.0.20",2896
+ "url",2897
+ "web-time",2898
+]2899
+2900
+[[package]]2901
+name = "ruma-common"2902
+version = "0.19.0"2903
+source = "registry+https://github.com/rust-lang/crates.io-index"2904
+checksum = "2c3b4f00112791b490acce57df1ce3eb3f88899b045bebcff8a29f75369640cc"2905
+dependencies = [2906
+ "as_variant",2907
+ "base64",2908
+ "bytes",2909
+ "date_header",2910
+ "form_urlencoded",2911
+ "getrandom 0.4.3",2912
+ "http",2913
+ "indexmap",2914
+ "js_int",2915
+ "konst",2916
+ "percent-encoding",2917
+ "rand 0.10.2",2918
+ "regex",2919
+ "ruma-identifiers-validation",2920
+ "ruma-macros",2921
+ "serde",2922
+ "serde_html_form",2923
+ "serde_json",2924
+ "thiserror 2.0.20",2925
+ "time",2926
+ "tracing",2927
+ "url",2928
+ "uuid",2929
+ "web-time",2930
+ "wildmatch",2931
+ "zeroize",2932
+]2933
+2934
+[[package]]2935
+name = "ruma-events"2936
+version = "0.34.0"2937
+source = "registry+https://github.com/rust-lang/crates.io-index"2938
+checksum = "85d2f90830fc131691349b96a69ff53444eb6c3e8dc7869c77961b43cfaf3344"2939
+dependencies = [2940
+ "as_variant",2941
+ "indexmap",2942
+ "js_int",2943
+ "js_option",2944
+ "ruma-common",2945
+ "ruma-html",2946
+ "ruma-macros",2947
+ "serde",2948
+ "serde_json",2949
+ "thiserror 2.0.20",2950
+ "tracing",2951
+ "web-time",2952
+ "wildmatch",2953
+ "zeroize",2954
+]2955
+2956
+[[package]]2957
+name = "ruma-html"2958
+version = "0.8.0"2959
+source = "registry+https://github.com/rust-lang/crates.io-index"2960
+checksum = "48d33a944650f4bbd2188dd204d39dd87a9a1498f14b3a13252910c90ed7cd43"2961
+dependencies = [2962
+ "as_variant",2963
+ "html5ever",2964
+ "tracing",2965
+ "wildmatch",2966
+]2967
+2968
+[[package]]2969
+name = "ruma-identifiers-validation"2970
+version = "0.12.1"2971
+source = "registry+https://github.com/rust-lang/crates.io-index"2972
+checksum = "9d6cff00317675f487c4e7ccfb18875a14c5a14867b51d13f2a826053f03c432"2973
+dependencies = [2974
+ "js_int",2975
+ "thiserror 2.0.20",2976
+]2977
+2978
+[[package]]2979
+name = "ruma-macros"2980
+version = "0.19.0"2981
+source = "registry+https://github.com/rust-lang/crates.io-index"2982
+checksum = "c8cfb39eaa9b9fd389126ff941e060b496add5cbbfef559d80c46e571dda459c"2983
+dependencies = [2984
+ "as_variant",2985
+ "cfg-if",2986
+ "proc-macro-crate",2987
+ "proc-macro2",2988
+ "quote",2989
+ "ruma-identifiers-validation",2990
+ "serde",2991
+ "syn 2.0.119",2992
+ "toml",2993
+]2994
+2995
+[[package]]2996
+name = "rusqlite"2997
+version = "0.37.0"2998
+source = "registry+https://github.com/rust-lang/crates.io-index"2999
+checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f"3000
+dependencies = [3001
+ "bitflags",3002
+ "fallible-iterator",3003
+ "fallible-streaming-iterator",3004
+ "hashlink",3005
+ "libsqlite3-sys",3006
+ "smallvec",3007
+]3008
+3009
+[[package]]3010
+name = "rustc-hash"3011
+version = "2.1.3"3012
+source = "registry+https://github.com/rust-lang/crates.io-index"3013
+checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"3014
+3015
+[[package]]3016
+name = "rustc_version"3017
+version = "0.4.1"3018
+source = "registry+https://github.com/rust-lang/crates.io-index"3019
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"3020
+dependencies = [3021
+ "semver",3022
+]3023
+3024
+[[package]]3025
+name = "rustix"3026
+version = "1.1.4"3027
+source = "registry+https://github.com/rust-lang/crates.io-index"3028
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"3029
+dependencies = [3030
+ "bitflags",3031
+ "errno",3032
+ "libc",3033
+ "linux-raw-sys",3034
+ "windows-sys 0.61.2",3035
+]3036
+3037
+[[package]]3038
+name = "rustls"3039
+version = "0.23.44"3040
+source = "registry+https://github.com/rust-lang/crates.io-index"3041
+checksum = "6725596c3f2c3a0aef021139e145d4eafe314a6623e4680ca83852b2c67ab2ba"3042
+dependencies = [3043
+ "aws-lc-rs",3044
+ "log",3045
+ "once_cell",3046
+ "rustls-pki-types",3047
+ "rustls-webpki",3048
+ "subtle",3049
+ "zeroize",3050
+]3051
+3052
+[[package]]3053
+name = "rustls-native-certs"3054
+version = "0.8.4"3055
+source = "registry+https://github.com/rust-lang/crates.io-index"3056
+checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"3057
+dependencies = [3058
+ "openssl-probe",3059
+ "rustls-pki-types",3060
+ "schannel",3061
+ "security-framework",3062
+]3063
+3064
+[[package]]3065
+name = "rustls-pki-types"3066
+version = "1.15.1"3067
+source = "registry+https://github.com/rust-lang/crates.io-index"3068
+checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"3069
+dependencies = [3070
+ "web-time",3071
+ "zeroize",3072
+]3073
+3074
+[[package]]3075
+name = "rustls-platform-verifier"3076
+version = "0.7.0"3077
+source = "registry+https://github.com/rust-lang/crates.io-index"3078
+checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0"3079
+dependencies = [3080
+ "core-foundation",3081
+ "core-foundation-sys",3082
+ "jni",3083
+ "log",3084
+ "once_cell",3085
+ "rustls",3086
+ "rustls-native-certs",3087
+ "rustls-platform-verifier-android",3088
+ "rustls-webpki",3089
+ "security-framework",3090
+ "security-framework-sys",3091
+ "webpki-root-certs",3092
+ "windows-sys 0.61.2",3093
+]3094
+3095
+[[package]]3096
+name = "rustls-platform-verifier-android"3097
+version = "0.1.1"3098
+source = "registry+https://github.com/rust-lang/crates.io-index"3099
+checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"3100
+3101
+[[package]]3102
+name = "rustls-webpki"3103
+version = "0.103.15"3104
+source = "registry+https://github.com/rust-lang/crates.io-index"3105
+checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"3106
+dependencies = [3107
+ "aws-lc-rs",3108
+ "ring",3109
+ "rustls-pki-types",3110
+ "untrusted",3111
+]3112
+3113
+[[package]]3114
+name = "rustversion"3115
+version = "1.0.23"3116
+source = "registry+https://github.com/rust-lang/crates.io-index"3117
+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"3118
+3119
+[[package]]3120
+name = "same-file"3121
+version = "1.0.6"3122
+source = "registry+https://github.com/rust-lang/crates.io-index"3123
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"3124
+dependencies = [3125
+ "winapi-util",3126
+]3127
+3128
+[[package]]3129
+name = "schannel"3130
+version = "0.1.29"3131
+source = "registry+https://github.com/rust-lang/crates.io-index"3132
+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"3133
+dependencies = [3134
+ "windows-sys 0.61.2",3135
+]3136
+3137
+[[package]]3138
+name = "scoped-tls"3139
+version = "1.0.1"3140
+source = "registry+https://github.com/rust-lang/crates.io-index"3141
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"3142
+3143
+[[package]]3144
+name = "scopeguard"3145
+version = "1.2.0"3146
+source = "registry+https://github.com/rust-lang/crates.io-index"3147
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"3148
+3149
+[[package]]3150
+name = "sealed"3151
+version = "0.6.0"3152
+source = "registry+https://github.com/rust-lang/crates.io-index"3153
+checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107"3154
+dependencies = [3155
+ "proc-macro2",3156
+ "quote",3157
+ "syn 2.0.119",3158
+]3159
+3160
+[[package]]3161
+name = "sealed"3162
+version = "0.7.0"3163
+source = "registry+https://github.com/rust-lang/crates.io-index"3164
+checksum = "9b68e2ea526d9fb32f23ca8894fb5da9e743f34c2f41701f0501dc8a25c4b343"3165
+dependencies = [3166
+ "proc-macro2",3167
+ "quote",3168
+ "syn 3.0.5",3169
+]3170
+3171
+[[package]]3172
+name = "security-framework"3173
+version = "3.7.0"3174
+source = "registry+https://github.com/rust-lang/crates.io-index"3175
+checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"3176
+dependencies = [3177
+ "bitflags",3178
+ "core-foundation",3179
+ "core-foundation-sys",3180
+ "libc",3181
+ "security-framework-sys",3182
+]3183
+3184
+[[package]]3185
+name = "security-framework-sys"3186
+version = "2.17.0"3187
+source = "registry+https://github.com/rust-lang/crates.io-index"3188
+checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"3189
+dependencies = [3190
+ "core-foundation-sys",3191
+ "libc",3192
+]3193
+3194
+[[package]]3195
+name = "semver"3196
+version = "1.0.28"3197
+source = "registry+https://github.com/rust-lang/crates.io-index"3198
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"3199
+3200
+[[package]]3201
+name = "serde"3202
+version = "1.0.229"3203
+source = "registry+https://github.com/rust-lang/crates.io-index"3204
+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"3205
+dependencies = [3206
+ "serde_core",3207
+ "serde_derive",3208
+]3209
+3210
+[[package]]3211
+name = "serde-wasm-bindgen"3212
+version = "0.6.5"3213
+source = "registry+https://github.com/rust-lang/crates.io-index"3214
+checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"3215
+dependencies = [3216
+ "js-sys",3217
+ "serde",3218
+ "wasm-bindgen",3219
+]3220
+3221
+[[package]]3222
+name = "serde_bytes"3223
+version = "0.11.19"3224
+source = "registry+https://github.com/rust-lang/crates.io-index"3225
+checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"3226
+dependencies = [3227
+ "serde",3228
+ "serde_core",3229
+]3230
+3231
+[[package]]3232
+name = "serde_core"3233
+version = "1.0.229"3234
+source = "registry+https://github.com/rust-lang/crates.io-index"3235
+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"3236
+dependencies = [3237
+ "serde_derive",3238
+]3239
+3240
+[[package]]3241
+name = "serde_derive"3242
+version = "1.0.229"3243
+source = "registry+https://github.com/rust-lang/crates.io-index"3244
+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"3245
+dependencies = [3246
+ "proc-macro2",3247
+ "quote",3248
+ "syn 3.0.5",3249
+]3250
+3251
+[[package]]3252
+name = "serde_html_form"3253
+version = "0.4.1"3254
+source = "registry+https://github.com/rust-lang/crates.io-index"3255
+checksum = "8f0346d7a342ab90f405cfc08f25d15075f944f42fcabbc5eac923829fa6d228"3256
+dependencies = [3257
+ "form_urlencoded",3258
+ "indexmap",3259
+ "itoa",3260
+ "serde_core",3261
+ "zmij",3262
+]3263
+3264
+[[package]]3265
+name = "serde_json"3266
+version = "1.0.151"3267
+source = "registry+https://github.com/rust-lang/crates.io-index"3268
+checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"3269
+dependencies = [3270
+ "itoa",3271
+ "memchr",3272
+ "serde",3273
+ "serde_core",3274
+ "zmij",3275
+]3276
+3277
+[[package]]3278
+name = "serde_path_to_error"3279
+version = "0.1.20"3280
+source = "registry+https://github.com/rust-lang/crates.io-index"3281
+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"3282
+dependencies = [3283
+ "itoa",3284
+ "serde",3285
+ "serde_core",3286
+]3287
+3288
+[[package]]3289
+name = "serde_spanned"3290
+version = "1.1.1"3291
+source = "registry+https://github.com/rust-lang/crates.io-index"3292
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"3293
+dependencies = [3294
+ "serde_core",3295
+]3296
+3297
+[[package]]3298
+name = "sha2"3299
+version = "0.10.9"3300
+source = "registry+https://github.com/rust-lang/crates.io-index"3301
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"3302
+dependencies = [3303
+ "cfg-if",3304
+ "cpufeatures 0.2.17",3305
+ "digest",3306
+]3307
+3308
+[[package]]3309
+name = "sharded-slab"3310
+version = "0.1.7"3311
+source = "registry+https://github.com/rust-lang/crates.io-index"3312
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"3313
+dependencies = [3314
+ "lazy_static",3315
+]3316
+3317
+[[package]]3318
+name = "shlex"3319
+version = "2.0.1"3320
+source = "registry+https://github.com/rust-lang/crates.io-index"3321
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"3322
+3323
+[[package]]3324
+name = "signature"3325
+version = "2.2.0"3326
+source = "registry+https://github.com/rust-lang/crates.io-index"3327
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"3328
+dependencies = [3329
+ "rand_core 0.6.4",3330
+]3331
+3332
+[[package]]3333
+name = "simd-adler32"3334
+version = "0.3.10"3335
+source = "registry+https://github.com/rust-lang/crates.io-index"3336
+checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"3337
+3338
+[[package]]3339
+name = "simd_cesu8"3340
+version = "1.2.0"3341
+source = "registry+https://github.com/rust-lang/crates.io-index"3342
+checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520"3343
+dependencies = [3344
+ "rustc_version",3345
+ "simdutf8",3346
+]3347
+3348
+[[package]]3349
+name = "simdutf8"3350
+version = "0.1.5"3351
+source = "registry+https://github.com/rust-lang/crates.io-index"3352
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"3353
+3354
+[[package]]3355
+name = "siphasher"3356
+version = "1.0.3"3357
+source = "registry+https://github.com/rust-lang/crates.io-index"3358
+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"3359
+3360
+[[package]]3361
+name = "slab"3362
+version = "0.4.12"3363
+source = "registry+https://github.com/rust-lang/crates.io-index"3364
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"3365
+3366
+[[package]]3367
+name = "smallvec"3368
+version = "1.16.0"3369
+source = "registry+https://github.com/rust-lang/crates.io-index"3370
+checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f"3371
+dependencies = [3372
+ "serde",3373
+]3374
+3375
+[[package]]3376
+name = "socket2"3377
+version = "0.6.5"3378
+source = "registry+https://github.com/rust-lang/crates.io-index"3379
+checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"3380
+dependencies = [3381
+ "libc",3382
+ "windows-sys 0.61.2",3383
+]3384
+3385
+[[package]]3386
+name = "spki"3387
+version = "0.7.3"3388
+source = "registry+https://github.com/rust-lang/crates.io-index"3389
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"3390
+dependencies = [3391
+ "base64ct",3392
+ "der",3393
+]3394
+3395
+[[package]]3396
+name = "stable_deref_trait"3397
+version = "1.2.1"3398
+source = "registry+https://github.com/rust-lang/crates.io-index"3399
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"3400
+3401
+[[package]]3402
+name = "string_cache"3403
+version = "0.9.0"3404
+source = "registry+https://github.com/rust-lang/crates.io-index"3405
+checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901"3406
+dependencies = [3407
+ "new_debug_unreachable",3408
+ "parking_lot",3409
+ "phf_shared",3410
+ "precomputed-hash",3411
+]3412
+3413
+[[package]]3414
+name = "string_cache_codegen"3415
+version = "0.6.1"3416
+source = "registry+https://github.com/rust-lang/crates.io-index"3417
+checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69"3418
+dependencies = [3419
+ "phf_generator",3420
+ "phf_shared",3421
+ "proc-macro2",3422
+ "quote",3423
+]3424
+3425
+[[package]]3426
+name = "subtle"3427
+version = "2.6.1"3428
+source = "registry+https://github.com/rust-lang/crates.io-index"3429
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"3430
+3431
+[[package]]3432
+name = "syn"3433
+version = "1.0.109"3434
+source = "registry+https://github.com/rust-lang/crates.io-index"3435
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"3436
+dependencies = [3437
+ "proc-macro2",3438
+ "quote",3439
+ "unicode-ident",3440
+]3441
+3442
+[[package]]3443
+name = "syn"3444
+version = "2.0.119"3445
+source = "registry+https://github.com/rust-lang/crates.io-index"3446
+checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"3447
+dependencies = [3448
+ "proc-macro2",3449
+ "quote",3450
+ "unicode-ident",3451
+]3452
+3453
+[[package]]3454
+name = "syn"3455
+version = "3.0.5"3456
+source = "registry+https://github.com/rust-lang/crates.io-index"3457
+checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9"3458
+dependencies = [3459
+ "proc-macro2",3460
+ "quote",3461
+ "unicode-ident",3462
+]3463
+3464
+[[package]]3465
+name = "sync_wrapper"3466
+version = "1.0.2"3467
+source = "registry+https://github.com/rust-lang/crates.io-index"3468
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"3469
+dependencies = [3470
+ "futures-core",3471
+]3472
+3473
+[[package]]3474
+name = "synstructure"3475
+version = "0.13.2"3476
+source = "registry+https://github.com/rust-lang/crates.io-index"3477
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"3478
+dependencies = [3479
+ "proc-macro2",3480
+ "quote",3481
+ "syn 2.0.119",3482
+]3483
+3484
+[[package]]3485
+name = "tempfile"3486
+version = "3.27.0"3487
+source = "registry+https://github.com/rust-lang/crates.io-index"3488
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"3489
+dependencies = [3490
+ "fastrand",3491
+ "once_cell",3492
+ "rustix",3493
+ "windows-sys 0.61.2",3494
+]3495
+3496
+[[package]]3497
+name = "tendril"3498
+version = "0.5.1"3499
+source = "registry+https://github.com/rust-lang/crates.io-index"3500
+checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08"3501
+dependencies = [3502
+ "new_debug_unreachable",3503
+]3504
+3505
+[[package]]3506
+name = "thiserror"3507
+version = "1.0.69"3508
+source = "registry+https://github.com/rust-lang/crates.io-index"3509
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"3510
+dependencies = [3511
+ "thiserror-impl 1.0.69",3512
+]3513
+3514
+[[package]]3515
+name = "thiserror"3516
+version = "2.0.20"3517
+source = "registry+https://github.com/rust-lang/crates.io-index"3518
+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"3519
+dependencies = [3520
+ "thiserror-impl 2.0.20",3521
+]3522
+3523
+[[package]]3524
+name = "thiserror-impl"3525
+version = "1.0.69"3526
+source = "registry+https://github.com/rust-lang/crates.io-index"3527
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"3528
+dependencies = [3529
+ "proc-macro2",3530
+ "quote",3531
+ "syn 2.0.119",3532
+]3533
+3534
+[[package]]3535
+name = "thiserror-impl"3536
+version = "2.0.20"3537
+source = "registry+https://github.com/rust-lang/crates.io-index"3538
+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"3539
+dependencies = [3540
+ "proc-macro2",3541
+ "quote",3542
+ "syn 3.0.5",3543
+]3544
+3545
+[[package]]3546
+name = "thread_local"3547
+version = "1.1.10"3548
+source = "registry+https://github.com/rust-lang/crates.io-index"3549
+checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070"3550
+dependencies = [3551
+ "cfg-if",3552
+]3553
+3554
+[[package]]3555
+name = "time"3556
+version = "0.3.55"3557
+source = "registry+https://github.com/rust-lang/crates.io-index"3558
+checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"3559
+dependencies = [3560
+ "deranged",3561
+ "num-conv",3562
+ "powerfmt",3563
+ "serde_core",3564
+ "time-core",3565
+ "time-macros",3566
+]3567
+3568
+[[package]]3569
+name = "time-core"3570
+version = "0.1.9"3571
+source = "registry+https://github.com/rust-lang/crates.io-index"3572
+checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"3573
+3574
+[[package]]3575
+name = "time-macros"3576
+version = "0.2.32"3577
+source = "registry+https://github.com/rust-lang/crates.io-index"3578
+checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"3579
+dependencies = [3580
+ "num-conv",3581
+ "time-core",3582
+]3583
+3584
+[[package]]3585
+name = "tinystr"3586
+version = "0.8.4"3587
+source = "registry+https://github.com/rust-lang/crates.io-index"3588
+checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"3589
+dependencies = [3590
+ "displaydoc",3591
+ "zerovec",3592
+]3593
+3594
+[[package]]3595
+name = "tinyvec"3596
+version = "1.13.2"3597
+source = "registry+https://github.com/rust-lang/crates.io-index"3598
+checksum = "4cf0ded5c4e56918d8f8a339e1bb67d038d3bc6d144ac407904015ba2e4cde9b"3599
+dependencies = [3600
+ "tinyvec_macros",3601
+]3602
+3603
+[[package]]3604
+name = "tinyvec_macros"3605
+version = "0.1.1"3606
+source = "registry+https://github.com/rust-lang/crates.io-index"3607
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"3608
+3609
+[[package]]3610
+name = "tokio"3611
+version = "1.53.1"3612
+source = "registry+https://github.com/rust-lang/crates.io-index"3613
+checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"3614
+dependencies = [3615
+ "bytes",3616
+ "libc",3617
+ "mio",3618
+ "pin-project-lite",3619
+ "socket2",3620
+ "tokio-macros",3621
+ "windows-sys 0.61.2",3622
+]3623
+3624
+[[package]]3625
+name = "tokio-macros"3626
+version = "2.7.2"3627
+source = "registry+https://github.com/rust-lang/crates.io-index"3628
+checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"3629
+dependencies = [3630
+ "proc-macro2",3631
+ "quote",3632
+ "syn 3.0.5",3633
+]3634
+3635
+[[package]]3636
+name = "tokio-rustls"3637
+version = "0.26.5"3638
+source = "registry+https://github.com/rust-lang/crates.io-index"3639
+checksum = "b0c85f2c3ef0b1cd58b36682f4b17aaa995f0e5db534d85692b4903abce21f67"3640
+dependencies = [3641
+ "rustls",3642
+ "tokio",3643
+]3644
+3645
+[[package]]3646
+name = "tokio-stream"3647
+version = "0.1.19"3648
+source = "registry+https://github.com/rust-lang/crates.io-index"3649
+checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b"3650
+dependencies = [3651
+ "futures-core",3652
+ "pin-project-lite",3653
+ "tokio",3654
+ "tokio-util",3655
+]3656
+3657
+[[package]]3658
+name = "tokio-util"3659
+version = "0.7.19"3660
+source = "registry+https://github.com/rust-lang/crates.io-index"3661
+checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52"3662
+dependencies = [3663
+ "bytes",3664
+ "futures-core",3665
+ "futures-sink",3666
+ "libc",3667
+ "pin-project-lite",3668
+ "tokio",3669
+]3670
+3671
+[[package]]3672
+name = "toml"3673
+version = "1.1.5+spec-1.1.0"3674
+source = "registry+https://github.com/rust-lang/crates.io-index"3675
+checksum = "12c0ba9680044b4ce98d391a62094047eada0d64860b80166c39f4a6b5640785"3676
+dependencies = [3677
+ "serde_core",3678
+ "serde_spanned",3679
+ "toml_datetime",3680
+ "toml_parser",3681
+ "winnow",3682
+]3683
+3684
+[[package]]3685
+name = "toml_datetime"3686
+version = "1.1.1+spec-1.1.0"3687
+source = "registry+https://github.com/rust-lang/crates.io-index"3688
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"3689
+dependencies = [3690
+ "serde_core",3691
+]3692
+3693
+[[package]]3694
+name = "toml_edit"3695
+version = "0.25.13+spec-1.1.0"3696
+source = "registry+https://github.com/rust-lang/crates.io-index"3697
+checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b"3698
+dependencies = [3699
+ "indexmap",3700
+ "toml_datetime",3701
+ "toml_parser",3702
+ "winnow",3703
+]3704
+3705
+[[package]]3706
+name = "toml_parser"3707
+version = "1.1.3+spec-1.1.0"3708
+source = "registry+https://github.com/rust-lang/crates.io-index"3709
+checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"3710
+dependencies = [3711
+ "winnow",3712
+]3713
+3714
+[[package]]3715
+name = "tower"3716
+version = "0.5.3"3717
+source = "registry+https://github.com/rust-lang/crates.io-index"3718
+checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"3719
+dependencies = [3720
+ "futures-core",3721
+ "futures-util",3722
+ "pin-project-lite",3723
+ "sync_wrapper",3724
+ "tokio",3725
+ "tower-layer",3726
+ "tower-service",3727
+]3728
+3729
+[[package]]3730
+name = "tower-http"3731
+version = "0.6.11"3732
+source = "registry+https://github.com/rust-lang/crates.io-index"3733
+checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"3734
+dependencies = [3735
+ "async-compression",3736
+ "bitflags",3737
+ "bytes",3738
+ "futures-core",3739
+ "futures-util",3740
+ "http",3741
+ "http-body",3742
+ "http-body-util",3743
+ "pin-project-lite",3744
+ "tokio",3745
+ "tokio-util",3746
+ "tower",3747
+ "tower-layer",3748
+ "tower-service",3749
+ "url",3750
+]3751
+3752
+[[package]]3753
+name = "tower-layer"3754
+version = "0.3.3"3755
+source = "registry+https://github.com/rust-lang/crates.io-index"3756
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"3757
+3758
+[[package]]3759
+name = "tower-service"3760
+version = "0.3.3"3761
+source = "registry+https://github.com/rust-lang/crates.io-index"3762
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"3763
+3764
+[[package]]3765
+name = "tracing"3766
+version = "0.1.44"3767
+source = "registry+https://github.com/rust-lang/crates.io-index"3768
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"3769
+dependencies = [3770
+ "pin-project-lite",3771
+ "tracing-attributes",3772
+ "tracing-core",3773
+]3774
+3775
+[[package]]3776
+name = "tracing-attributes"3777
+version = "0.1.31"3778
+source = "registry+https://github.com/rust-lang/crates.io-index"3779
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"3780
+dependencies = [3781
+ "proc-macro2",3782
+ "quote",3783
+ "syn 2.0.119",3784
+]3785
+3786
+[[package]]3787
+name = "tracing-core"3788
+version = "0.1.36"3789
+source = "registry+https://github.com/rust-lang/crates.io-index"3790
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"3791
+dependencies = [3792
+ "once_cell",3793
+ "valuable",3794
+]3795
+3796
+[[package]]3797
+name = "tracing-log"3798
+version = "0.2.0"3799
+source = "registry+https://github.com/rust-lang/crates.io-index"3800
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"3801
+dependencies = [3802
+ "log",3803
+ "once_cell",3804
+ "tracing-core",3805
+]3806
+3807
+[[package]]3808
+name = "tracing-subscriber"3809
+version = "0.3.23"3810
+source = "registry+https://github.com/rust-lang/crates.io-index"3811
+checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"3812
+dependencies = [3813
+ "matchers",3814
+ "nu-ansi-term",3815
+ "once_cell",3816
+ "regex-automata",3817
+ "sharded-slab",3818
+ "smallvec",3819
+ "thread_local",3820
+ "tracing",3821
+ "tracing-core",3822
+ "tracing-log",3823
+]3824
+3825
+[[package]]3826
+name = "try-lock"3827
+version = "0.2.5"3828
+source = "registry+https://github.com/rust-lang/crates.io-index"3829
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"3830
+3831
+[[package]]3832
+name = "typenum"3833
+version = "1.20.1"3834
+source = "registry+https://github.com/rust-lang/crates.io-index"3835
+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"3836
+3837
+[[package]]3838
+name = "typewit"3839
+version = "1.15.2"3840
+source = "registry+https://github.com/rust-lang/crates.io-index"3841
+checksum = "214ca0b2191785cbc06209b9ca1861e048e39b5ba33574b3cedd58363d5bb5f6"3842
+3843
+[[package]]3844
+name = "ulid"3845
+version = "1.2.1"3846
+source = "registry+https://github.com/rust-lang/crates.io-index"3847
+checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe"3848
+dependencies = [3849
+ "rand 0.9.5",3850
+ "web-time",3851
+]3852
+3853
+[[package]]3854
+name = "unicode-ident"3855
+version = "1.0.24"3856
+source = "registry+https://github.com/rust-lang/crates.io-index"3857
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"3858
+3859
+[[package]]3860
+name = "unicode-normalization"3861
+version = "0.1.25"3862
+source = "registry+https://github.com/rust-lang/crates.io-index"3863
+checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"3864
+dependencies = [3865
+ "tinyvec",3866
+]3867
+3868
+[[package]]3869
+name = "unicode-segmentation"3870
+version = "1.13.3"3871
+source = "registry+https://github.com/rust-lang/crates.io-index"3872
+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"3873
+3874
+[[package]]3875
+name = "unicode-xid"3876
+version = "0.2.6"3877
+source = "registry+https://github.com/rust-lang/crates.io-index"3878
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"3879
+3880
+[[package]]3881
+name = "universal-hash"3882
+version = "0.5.1"3883
+source = "registry+https://github.com/rust-lang/crates.io-index"3884
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"3885
+dependencies = [3886
+ "crypto-common",3887
+ "subtle",3888
+]3889
+3890
+[[package]]3891
+name = "untrusted"3892
+version = "0.9.0"3893
+source = "registry+https://github.com/rust-lang/crates.io-index"3894
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"3895
+3896
+[[package]]3897
+name = "url"3898
+version = "2.5.8"3899
+source = "registry+https://github.com/rust-lang/crates.io-index"3900
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"3901
+dependencies = [3902
+ "form_urlencoded",3903
+ "idna",3904
+ "percent-encoding",3905
+ "serde",3906
+ "serde_derive",3907
+]3908
+3909
+[[package]]3910
+name = "urlencoding"3911
+version = "2.1.3"3912
+source = "registry+https://github.com/rust-lang/crates.io-index"3913
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"3914
+3915
+[[package]]3916
+name = "utf8_iter"3917
+version = "1.0.4"3918
+source = "registry+https://github.com/rust-lang/crates.io-index"3919
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"3920
+3921
+[[package]]3922
+name = "uuid"3923
+version = "1.26.0"3924
+source = "registry+https://github.com/rust-lang/crates.io-index"3925
+checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812"3926
+dependencies = [3927
+ "getrandom 0.4.3",3928
+ "js-sys",3929
+ "serde_core",3930
+ "wasm-bindgen",3931
+]3932
+3933
+[[package]]3934
+name = "valuable"3935
+version = "0.1.1"3936
+source = "registry+https://github.com/rust-lang/crates.io-index"3937
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"3938
+3939
+[[package]]3940
+name = "vcpkg"3941
+version = "0.2.15"3942
+source = "registry+https://github.com/rust-lang/crates.io-index"3943
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"3944
+3945
+[[package]]3946
+name = "version_check"3947
+version = "0.9.5"3948
+source = "registry+https://github.com/rust-lang/crates.io-index"3949
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"3950
+3951
+[[package]]3952
+name = "vodozemac"3953
+version = "0.10.0"3954
+source = "registry+https://github.com/rust-lang/crates.io-index"3955
+checksum = "b98bf83c0992966775b8012f194b07b44928996163e5a05b741b43891571ae5b"3956
+dependencies = [3957
+ "aes",3958
+ "arrayvec",3959
+ "base64",3960
+ "base64ct",3961
+ "cbc",3962
+ "chacha20poly1305",3963
+ "curve25519-dalek",3964
+ "ed25519-dalek",3965
+ "getrandom 0.2.17",3966
+ "hkdf",3967
+ "hmac",3968
+ "matrix-pickle",3969
+ "prost",3970
+ "rand 0.8.8",3971
+ "serde",3972
+ "serde_bytes",3973
+ "serde_json",3974
+ "sha2",3975
+ "subtle",3976
+ "thiserror 2.0.20",3977
+ "x25519-dalek",3978
+ "zeroize",3979
+]3980
+3981
+[[package]]3982
+name = "walkdir"3983
+version = "2.5.0"3984
+source = "registry+https://github.com/rust-lang/crates.io-index"3985
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"3986
+dependencies = [3987
+ "same-file",3988
+ "winapi-util",3989
+]3990
+3991
+[[package]]3992
+name = "want"3993
+version = "0.3.1"3994
+source = "registry+https://github.com/rust-lang/crates.io-index"3995
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"3996
+dependencies = [3997
+ "try-lock",3998
+]3999
+4000
+[[package]]4001
+name = "wasi"4002
+version = "0.11.1+wasi-snapshot-preview1"4003
+source = "registry+https://github.com/rust-lang/crates.io-index"4004
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"4005
+4006
+[[package]]4007
+name = "wasip2"4008
+version = "1.0.4+wasi-0.2.12"4009
+source = "registry+https://github.com/rust-lang/crates.io-index"4010
+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"4011
+dependencies = [4012
+ "wit-bindgen",4013
+]4014
+4015
+[[package]]4016
+name = "wasm-bindgen"4017
+version = "0.2.128"4018
+source = "registry+https://github.com/rust-lang/crates.io-index"4019
+checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf"4020
+dependencies = [4021
+ "cfg-if",4022
+ "once_cell",4023
+ "rustversion",4024
+ "wasm-bindgen-macro",4025
+ "wasm-bindgen-shared",4026
+]4027
+4028
+[[package]]4029
+name = "wasm-bindgen-futures"4030
+version = "0.4.78"4031
+source = "registry+https://github.com/rust-lang/crates.io-index"4032
+checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928"4033
+dependencies = [4034
+ "js-sys",4035
+ "wasm-bindgen",4036
+]4037
+4038
+[[package]]4039
+name = "wasm-bindgen-macro"4040
+version = "0.2.128"4041
+source = "registry+https://github.com/rust-lang/crates.io-index"4042
+checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed"4043
+dependencies = [4044
+ "quote",4045
+ "wasm-bindgen-macro-support",4046
+]4047
+4048
+[[package]]4049
+name = "wasm-bindgen-macro-support"4050
+version = "0.2.128"4051
+source = "registry+https://github.com/rust-lang/crates.io-index"4052
+checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a"4053
+dependencies = [4054
+ "bumpalo",4055
+ "proc-macro2",4056
+ "quote",4057
+ "syn 3.0.5",4058
+ "wasm-bindgen-shared",4059
+]4060
+4061
+[[package]]4062
+name = "wasm-bindgen-shared"4063
+version = "0.2.128"4064
+source = "registry+https://github.com/rust-lang/crates.io-index"4065
+checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e"4066
+dependencies = [4067
+ "unicode-ident",4068
+]4069
+4070
+[[package]]4071
+name = "wasm-bindgen-test"4072
+version = "0.3.78"4073
+source = "registry+https://github.com/rust-lang/crates.io-index"4074
+checksum = "45863ef0bef521c12124eb39d9a38513c47db75f22e503c06beacd40afeb35db"4075
+dependencies = [4076
+ "async-trait",4077
+ "cast",4078
+ "js-sys",4079
+ "libm",4080
+ "minicov",4081
+ "nu-ansi-term",4082
+ "num-traits",4083
+ "oorandom",4084
+ "serde",4085
+ "serde_json",4086
+ "wasm-bindgen",4087
+ "wasm-bindgen-futures",4088
+ "wasm-bindgen-test-macro",4089
+ "wasm-bindgen-test-shared",4090
+]4091
+4092
+[[package]]4093
+name = "wasm-bindgen-test-macro"4094
+version = "0.3.78"4095
+source = "registry+https://github.com/rust-lang/crates.io-index"4096
+checksum = "8c89dcab8b516b6b603baca9d550b7282d68fcc7f367e3956cff7ebf406a3f12"4097
+dependencies = [4098
+ "proc-macro2",4099
+ "quote",4100
+ "syn 3.0.5",4101
+]4102
+4103
+[[package]]4104
+name = "wasm-bindgen-test-shared"4105
+version = "0.2.128"4106
+source = "registry+https://github.com/rust-lang/crates.io-index"4107
+checksum = "f37b4f992cebe528ef34964ae69681ac0fe7080071e7298e46008f9d380302af"4108
+4109
+[[package]]4110
+name = "wasm-streams"4111
+version = "0.5.0"4112
+source = "registry+https://github.com/rust-lang/crates.io-index"4113
+checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"4114
+dependencies = [4115
+ "futures-util",4116
+ "js-sys",4117
+ "wasm-bindgen",4118
+ "wasm-bindgen-futures",4119
+ "web-sys",4120
+]4121
+4122
+[[package]]4123
+name = "wasm_evt_listener"4124
+version = "0.1.0"4125
+source = "registry+https://github.com/rust-lang/crates.io-index"4126
+checksum = "dc92d6378b411ed94839112a36d9dbc77143451d85b05dfb0cce93a78dab1963"4127
+dependencies = [4128
+ "accessory",4129
+ "derivative",4130
+ "derive_more 1.0.0",4131
+ "fancy_constructor",4132
+ "futures-core",4133
+ "js-sys",4134
+ "smallvec",4135
+ "tokio",4136
+ "wasm-bindgen",4137
+ "web-sys",4138
+]4139
+4140
+[[package]]4141
+name = "web-sys"4142
+version = "0.3.105"4143
+source = "registry+https://github.com/rust-lang/crates.io-index"4144
+checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8"4145
+dependencies = [4146
+ "js-sys",4147
+ "wasm-bindgen",4148
+]4149
+4150
+[[package]]4151
+name = "web-time"4152
+version = "1.1.0"4153
+source = "registry+https://github.com/rust-lang/crates.io-index"4154
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"4155
+dependencies = [4156
+ "js-sys",4157
+ "serde",4158
+ "wasm-bindgen",4159
+]4160
+4161
+[[package]]4162
+name = "web_atoms"4163
+version = "0.2.6"4164
+source = "registry+https://github.com/rust-lang/crates.io-index"4165
+checksum = "ba8b815c1b593dc0baf78dd0f4fc8fdb2de53198fb1163738093e9a311c33fb3"4166
+dependencies = [4167
+ "phf",4168
+ "phf_codegen",4169
+ "string_cache",4170
+ "string_cache_codegen",4171
+]4172
+4173
+[[package]]4174
+name = "webpki-root-certs"4175
+version = "1.0.9"4176
+source = "registry+https://github.com/rust-lang/crates.io-index"4177
+checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b"4178
+dependencies = [4179
+ "rustls-pki-types",4180
+]4181
+4182
+[[package]]4183
+name = "webpki-roots"4184
+version = "1.0.9"4185
+source = "registry+https://github.com/rust-lang/crates.io-index"4186
+checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"4187
+dependencies = [4188
+ "rustls-pki-types",4189
+]4190
+4191
+[[package]]4192
+name = "wildmatch"4193
+version = "2.6.1"4194
+source = "registry+https://github.com/rust-lang/crates.io-index"4195
+checksum = "29333c3ea1ba8b17211763463ff24ee84e41c78224c16b001cd907e663a38c68"4196
+4197
+[[package]]4198
+name = "winapi-util"4199
+version = "0.1.11"4200
+source = "registry+https://github.com/rust-lang/crates.io-index"4201
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"4202
+dependencies = [4203
+ "windows-sys 0.61.2",4204
+]4205
+4206
+[[package]]4207
+name = "windows-core"4208
+version = "0.62.2"4209
+source = "registry+https://github.com/rust-lang/crates.io-index"4210
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"4211
+dependencies = [4212
+ "windows-implement",4213
+ "windows-interface",4214
+ "windows-link",4215
+ "windows-result",4216
+ "windows-strings",4217
+]4218
+4219
+[[package]]4220
+name = "windows-implement"4221
+version = "0.60.2"4222
+source = "registry+https://github.com/rust-lang/crates.io-index"4223
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"4224
+dependencies = [4225
+ "proc-macro2",4226
+ "quote",4227
+ "syn 2.0.119",4228
+]4229
+4230
+[[package]]4231
+name = "windows-interface"4232
+version = "0.59.3"4233
+source = "registry+https://github.com/rust-lang/crates.io-index"4234
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"4235
+dependencies = [4236
+ "proc-macro2",4237
+ "quote",4238
+ "syn 2.0.119",4239
+]4240
+4241
+[[package]]4242
+name = "windows-link"4243
+version = "0.2.1"4244
+source = "registry+https://github.com/rust-lang/crates.io-index"4245
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"4246
+4247
+[[package]]4248
+name = "windows-result"4249
+version = "0.4.1"4250
+source = "registry+https://github.com/rust-lang/crates.io-index"4251
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"4252
+dependencies = [4253
+ "windows-link",4254
+]4255
+4256
+[[package]]4257
+name = "windows-strings"4258
+version = "0.5.1"4259
+source = "registry+https://github.com/rust-lang/crates.io-index"4260
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"4261
+dependencies = [4262
+ "windows-link",4263
+]4264
+4265
+[[package]]4266
+name = "windows-sys"4267
+version = "0.52.0"4268
+source = "registry+https://github.com/rust-lang/crates.io-index"4269
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"4270
+dependencies = [4271
+ "windows-targets",4272
+]4273
+4274
+[[package]]4275
+name = "windows-sys"4276
+version = "0.61.2"4277
+source = "registry+https://github.com/rust-lang/crates.io-index"4278
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"4279
+dependencies = [4280
+ "windows-link",4281
+]4282
+4283
+[[package]]4284
+name = "windows-targets"4285
+version = "0.52.6"4286
+source = "registry+https://github.com/rust-lang/crates.io-index"4287
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"4288
+dependencies = [4289
+ "windows_aarch64_gnullvm",4290
+ "windows_aarch64_msvc",4291
+ "windows_i686_gnu",4292
+ "windows_i686_gnullvm",4293
+ "windows_i686_msvc",4294
+ "windows_x86_64_gnu",4295
+ "windows_x86_64_gnullvm",4296
+ "windows_x86_64_msvc",4297
+]4298
+4299
+[[package]]4300
+name = "windows_aarch64_gnullvm"4301
+version = "0.52.6"4302
+source = "registry+https://github.com/rust-lang/crates.io-index"4303
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"4304
+4305
+[[package]]4306
+name = "windows_aarch64_msvc"4307
+version = "0.52.6"4308
+source = "registry+https://github.com/rust-lang/crates.io-index"4309
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"4310
+4311
+[[package]]4312
+name = "windows_i686_gnu"4313
+version = "0.52.6"4314
+source = "registry+https://github.com/rust-lang/crates.io-index"4315
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"4316
+4317
+[[package]]4318
+name = "windows_i686_gnullvm"4319
+version = "0.52.6"4320
+source = "registry+https://github.com/rust-lang/crates.io-index"4321
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"4322
+4323
+[[package]]4324
+name = "windows_i686_msvc"4325
+version = "0.52.6"4326
+source = "registry+https://github.com/rust-lang/crates.io-index"4327
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"4328
+4329
+[[package]]4330
+name = "windows_x86_64_gnu"4331
+version = "0.52.6"4332
+source = "registry+https://github.com/rust-lang/crates.io-index"4333
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"4334
+4335
+[[package]]4336
+name = "windows_x86_64_gnullvm"4337
+version = "0.52.6"4338
+source = "registry+https://github.com/rust-lang/crates.io-index"4339
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"4340
+4341
+[[package]]4342
+name = "windows_x86_64_msvc"4343
+version = "0.52.6"4344
+source = "registry+https://github.com/rust-lang/crates.io-index"4345
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"4346
+4347
+[[package]]4348
+name = "winnow"4349
+version = "1.0.4"4350
+source = "registry+https://github.com/rust-lang/crates.io-index"4351
+checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"4352
+dependencies = [4353
+ "memchr",4354
+]4355
+4356
+[[package]]4357
+name = "wit-bindgen"4358
+version = "0.57.1"4359
+source = "registry+https://github.com/rust-lang/crates.io-index"4360
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"4361
+4362
+[[package]]4363
+name = "writeable"4364
+version = "0.6.4"4365
+source = "registry+https://github.com/rust-lang/crates.io-index"4366
+checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"4367
+4368
+[[package]]4369
+name = "x25519-dalek"4370
+version = "2.0.1"4371
+source = "registry+https://github.com/rust-lang/crates.io-index"4372
+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"4373
+dependencies = [4374
+ "curve25519-dalek",4375
+ "rand_core 0.6.4",4376
+ "serde",4377
+ "zeroize",4378
+]4379
+4380
+[[package]]4381
+name = "xxhash-rust"4382
+version = "0.8.18"4383
+source = "registry+https://github.com/rust-lang/crates.io-index"4384
+checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6"4385
+4386
+[[package]]4387
+name = "yoke"4388
+version = "0.8.3"4389
+source = "registry+https://github.com/rust-lang/crates.io-index"4390
+checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"4391
+dependencies = [4392
+ "stable_deref_trait",4393
+ "yoke-derive",4394
+ "zerofrom",4395
+]4396
+4397
+[[package]]4398
+name = "yoke-derive"4399
+version = "0.8.2"4400
+source = "registry+https://github.com/rust-lang/crates.io-index"4401
+checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"4402
+dependencies = [4403
+ "proc-macro2",4404
+ "quote",4405
+ "syn 2.0.119",4406
+ "synstructure",4407
+]4408
+4409
+[[package]]4410
+name = "zerocopy"4411
+version = "0.8.56"4412
+source = "registry+https://github.com/rust-lang/crates.io-index"4413
+checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"4414
+dependencies = [4415
+ "zerocopy-derive",4416
+]4417
+4418
+[[package]]4419
+name = "zerocopy-derive"4420
+version = "0.8.56"4421
+source = "registry+https://github.com/rust-lang/crates.io-index"4422
+checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"4423
+dependencies = [4424
+ "proc-macro2",4425
+ "quote",4426
+ "syn 2.0.119",4427
+]4428
+4429
+[[package]]4430
+name = "zerofrom"4431
+version = "0.1.8"4432
+source = "registry+https://github.com/rust-lang/crates.io-index"4433
+checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"4434
+dependencies = [4435
+ "zerofrom-derive",4436
+]4437
+4438
+[[package]]4439
+name = "zerofrom-derive"4440
+version = "0.1.7"4441
+source = "registry+https://github.com/rust-lang/crates.io-index"4442
+checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"4443
+dependencies = [4444
+ "proc-macro2",4445
+ "quote",4446
+ "syn 2.0.119",4447
+ "synstructure",4448
+]4449
+4450
+[[package]]4451
+name = "zeroize"4452
+version = "1.9.0"4453
+source = "registry+https://github.com/rust-lang/crates.io-index"4454
+checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"4455
+dependencies = [4456
+ "zeroize_derive",4457
+]4458
+4459
+[[package]]4460
+name = "zeroize_derive"4461
+version = "1.5.0"4462
+source = "registry+https://github.com/rust-lang/crates.io-index"4463
+checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328"4464
+dependencies = [4465
+ "proc-macro2",4466
+ "quote",4467
+ "syn 2.0.119",4468
+]4469
+4470
+[[package]]4471
+name = "zerotrie"4472
+version = "0.2.5"4473
+source = "registry+https://github.com/rust-lang/crates.io-index"4474
+checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"4475
+dependencies = [4476
+ "displaydoc",4477
+ "yoke",4478
+ "zerofrom",4479
+]4480
+4481
+[[package]]4482
+name = "zerovec"4483
+version = "0.11.8"4484
+source = "registry+https://github.com/rust-lang/crates.io-index"4485
+checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"4486
+dependencies = [4487
+ "yoke",4488
+ "zerofrom",4489
+ "zerovec-derive",4490
+]4491
+4492
+[[package]]4493
+name = "zerovec-derive"4494
+version = "0.11.6"4495
+source = "registry+https://github.com/rust-lang/crates.io-index"4496
+checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"4497
+dependencies = [4498
+ "proc-macro2",4499
+ "quote",4500
+ "syn 3.0.5",4501
+]4502
+4503
+[[package]]4504
+name = "zlib-rs"4505
+version = "0.6.7"4506
+source = "registry+https://github.com/rust-lang/crates.io-index"4507
+checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12"4508
+4509
+[[package]]4510
+name = "zmij"4511
+version = "1.0.23"4512
+source = "registry+https://github.com/rust-lang/crates.io-index"4513
+checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"@@ -0,0 +1,33 @@
1
+[package]2
+name = "macltok-web"3
+version = "0.1.0"4
+edition = "2024"5
+publish = false6
+7
+[workspace]8
+9
+[lib]10
+crate-type = ["cdylib", "rlib"]11
+12
+[features]13
+default = ["store"]14
+# the flake reads the macltok store feature name from here15
+store = ["macltok/indexeddb"]16
+17
+[dependencies]18
+macltok = { path = "../.." }19
+wasm-bindgen = "0.2"20
+wasm-bindgen-futures = "0.4"21
+futures-channel = "0.3"22
+23
+[dev-dependencies]24
+js-sys = "0.3"25
+wasm-bindgen-test = "0.3"26
+web-sys = { version = "0.3", features = ["DedicatedWorkerGlobalScope"] }27
+28
+[profile.release]29
+opt-level = "z"30
+lto = true31
+codegen-units = 132
+panic = "abort"33
+strip = true@@ -0,0 +1,102 @@
1
+# drives macltok in a headless firefox worker against a throwaway continuwuity2
+# run from the web devshell, `nix develop .#web -c nu harness/web/run.nu`3
+4
+const crate = path self .5
+const root = path self ../..6
+const username = "harness"7
+const password = "harness-password"8
+9
+# the shared build wrapper sets CARGO_TARGET_DIR, the nix sandbox does not10
+def target [] { $env.CARGO_TARGET_DIR? | default ($root | path join target) }11
+12
+def scratch [] { target | path join harness }13
+14
+def start-homeserver [] {15
+ let dir = scratch16
+ rm -rf $dir17
+ mkdir $dir18
+ let port = 616719
+ let config = $dir | path join homeserver.toml20
+ let log = $dir | path join homeserver.log21
+ {22
+ global: {23
+ server_name: "localhost"24
+ database_path: ($dir | path join db)25
+ address: ["127.0.0.1"]26
+ port: $port27
+ allow_federation: false28
+ new_user_displayname_suffix: ""29
+ }30
+ } | to toml | save $config31
+ # the first account otherwise needs a one-time token that is only ever printed to the log32
+ let create = $"users create-user ($username) ($password)"33
+ let pid = ^bash -c 'conduwuit -c "$1" --execute "$2" > "$3" 2>&1 & echo $!' _ $config $create $log | str trim34
+ let url = $'http://127.0.0.1:($port)'35
+ for _ in 1..100 {36
+ if (try { login $url | ignore; true } catch { false }) {37
+ return { pid: $pid, url: $url }38
+ }39
+ sleep 100ms40
+ }41
+ try { stop $pid }42
+ print (open --raw $log | lines | last 20 | str join "\n")43
+ error make { msg: "homeserver did not come up" }44
+}45
+46
+def login [url: string] {47
+ let body = { type: "m.login.password", identifier: { type: "m.id.user", user: $username }, password: $password }48
+ http post --content-type application/json $'($url)/_matrix/client/v3/login' $body49
+}50
+51
+def seed [url: string] {52
+ let auth = [Authorization $'Bearer ((login $url).access_token)']53
+ http post --headers $auth --content-type application/json $'($url)/_matrix/client/v3/createRoom' { name: "harness" } | ignore54
+}55
+56
+def stop [pid: string] {57
+ ^kill -9 $pid58
+}59
+60
+def main [] {61
+ let server = start-homeserver62
+ let result = try {63
+ let versions = http get $'($server.url)/_matrix/client/versions'64
+ if not ($versions.unstable_features | get -o 'org.matrix.simplified_msc3575' | default false) {65
+ error make { msg: "homeserver does not advertise simplified sliding sync" }66
+ }67
+ seed $server.url68
+ cd $crate69
+ with-env {70
+ MACLTOK_HOMESERVER: $server.url71
+ MACLTOK_USERNAME: $username72
+ MACLTOK_PASSWORD: $password73
+ GECKODRIVER: (which geckodriver | get 0.path)74
+ WASM_BINDGEN_TEST_TIMEOUT: "180"75
+ } {76
+ ^cargo test --target wasm32-unknown-unknown --test worker77
+ }78
+ null79
+ } catch {|error| $error }80
+ stop $server.pid81
+ if $result != null {82
+ print $'homeserver log at (scratch)/homeserver.log'83
+ error make { msg: $result.msg }84
+ }85
+}86
+87
+# release build of the same slice, sized raw, after wasm-opt, and compressed88
+def "main size" [] {89
+ let target = target90
+ let out = scratch | path join size91
+ rm -rf $out92
+ mkdir $out93
+ cd $crate94
+ ^cargo build --release --lib --target wasm32-unknown-unknown95
+ ^wasm-bindgen --target web --out-dir $out ($target | path join wasm32-unknown-unknown release macltok_web.wasm)96
+ let raw = $out | path join macltok_web_bg.wasm97
+ let opt = $out | path join macltok_web_opt.wasm98
+ ^wasm-opt -Oz --enable-bulk-memory --enable-nontrapping-float-to-int --enable-sign-ext --enable-mutable-globals --enable-reference-types --enable-multivalue -o $opt $raw99
+ ^gzip -9 -k $opt100
+ ^brotli -q 11 -k $opt101
+ [$raw $opt $'($opt).gz' $'($opt).br'] | each {|file| { file: ($file | path basename), size: (ls $file | get 0.size) } }102
+}@@ -0,0 +1,47 @@
1
+//! a browser-side slice of macltok, login through to a live sync, exported for2
+//! wasm-bindgen so both the worker test and the size measurement reach the same code3
+4
+use futures_channel::oneshot;5
+use macltok::{6
+ ConnectionState, EncryptedSessionStore, EngineConfig, Event, PasswordLogin, Session, StoreConfig,7
+};8
+use wasm_bindgen::prelude::*;9
+10
+#[wasm_bindgen]11
+pub async fn smoke(12
+ homeserver: String,13
+ username: String,14
+ password: String,15
+ store_name: String,16
+) -> Result<(), JsError> {17
+ let sessions = EncryptedSessionStore::indexeddb(18
+ StoreConfig::indexeddb(store_name, "macltok-web").with_lock_holder("macltok-web-worker"),19
+ );20
+ let login = PasswordLogin::new(homeserver, username, password);21
+ let session = Session::login_password(login, &sessions).await?;22
+ let (engine, handle, mut events) = session.build(EngineConfig::default()).await?;23
+ let (done, running) = oneshot::channel();24
+ wasm_bindgen_futures::spawn_local(async move {25
+ let _ = done.send(engine.run().await);26
+ });27
+28
+ let mut online = false;29
+ let mut rooms = false;30
+ while !(online && rooms) {31
+ match events.recv().await {32
+ Some(Event::ConnectionChanged(ConnectionState::Online)) => online = true,33
+ Some(Event::RoomsChanged) => rooms = true,34
+ Some(Event::Stopped) | None => {35
+ return Err(JsError::new("engine stopped before it came online"));36
+ }37
+ Some(_) => {}38
+ }39
+ }40
+41
+ handle.shutdown().await?;42
+ while events.recv().await.is_some() {}43
+ running44
+ .await45
+ .map_err(|_| JsError::new("engine task vanished"))??;46
+ Ok(())47
+}@@ -0,0 +1,19 @@
1
+//! needs a live homeserver, run.nu starts one and bakes its credentials in at build time2
+3
+use wasm_bindgen::JsCast;4
+use wasm_bindgen_test::*;5
+6
+wasm_bindgen_test_configure!(run_in_dedicated_worker);7
+8
+#[wasm_bindgen_test]9
+async fn logs_in_and_syncs() {10
+ assert!(js_sys::global().is_instance_of::<web_sys::DedicatedWorkerGlobalScope>());11
+ macltok_web::smoke(12
+ env!("MACLTOK_HOMESERVER").into(),13
+ env!("MACLTOK_USERNAME").into(),14
+ env!("MACLTOK_PASSWORD").into(),15
+ "macltok-web".into(),16
+ )17
+ .await18
+ .unwrap_or_else(|error| panic!("{:?}", wasm_bindgen::JsValue::from(error)));19
+}