anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / build-support / rust / build-rust-crate / test / rcgen-crates.nix
blobed273c01d26dc4560bc62dd9af54d65bb8700e3d
2 # This file was @generated by crate2nix 0.10.0 with the command:
3 #   "generate"
4 # See https://github.com/kolloch/crate2nix for more info.
6 { nixpkgs ? <nixpkgs>
7 , pkgs ? import nixpkgs { config = {}; }
8 , lib ? pkgs.lib
9 , stdenv ? pkgs.stdenv
10 , buildRustCrateForPkgs ? if buildRustCrate != null
11     then lib.warn "crate2nix: Passing `buildRustCrate` as argument to Cargo.nix is deprecated. If you don't customize `buildRustCrate`, replace `callPackage ./Cargo.nix {}` by `import ./Cargo.nix { inherit pkgs; }`, and if you need to customize `buildRustCrate`, use `buildRustCrateForPkgs` instead." (_: buildRustCrate)
12     else pkgs: pkgs.buildRustCrate
13   # Deprecated
14 , buildRustCrate ? null
15   # This is used as the `crateOverrides` argument for `buildRustCrate`.
16 , defaultCrateOverrides ? pkgs.defaultCrateOverrides
17   # The features to enable for the root_crate or the workspace_members.
18 , rootFeatures ? [ "default" ]
19   # If true, throw errors instead of issueing deprecation warnings.
20 , strictDeprecation ? false
21   # Used for conditional compilation based on CPU feature detection.
22 , targetFeatures ? []
23   # Whether to perform release builds: longer compile times, faster binaries.
24 , release ? true
25   # Additional crate2nix configuration if it exists.
26 , crateConfig
27   ? lib.optionalAttrs (builtins.pathExists ./crate-config.nix) (pkgs.callPackage ./crate-config.nix {})
30 rec {
31   #
32   # "public" attributes that we attempt to keep stable with new versions of crate2nix.
33   #
35   rootCrate = rec {
36     packageId = "rcgen";
38     # Use this attribute to refer to the derivation building your root crate package.
39     # You can override the features with rootCrate.build.override { features = [ "default" "feature1" ... ]; }.
40     build = internal.buildRustCrateWithFeatures {
41       inherit packageId;
42     };
44     # Debug support which might change between releases.
45     # File a bug if you depend on any for non-debug work!
46     debug = internal.debugCrate { inherit packageId; };
47   };
48   # Refer your crate build derivation by name here.
49   # You can override the features with
50   # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
51   workspaceMembers = {
52     "rcgen" = rec {
53       packageId = "rcgen";
54       build = internal.buildRustCrateWithFeatures {
55         packageId = "rcgen";
56       };
58       # Debug support which might change between releases.
59       # File a bug if you depend on any for non-debug work!
60       debug = internal.debugCrate { inherit packageId; };
61     };
62   };
64   # A derivation that joins the outputs of all workspace members together.
65   allWorkspaceMembers = pkgs.symlinkJoin {
66       name = "all-workspace-members";
67       paths =
68         let members = builtins.attrValues workspaceMembers;
69         in builtins.map (m: m.build) members;
70   };
72   #
73   # "internal" ("private") attributes that may change in every new version of crate2nix.
74   #
76   internal = rec {
77     # Build and dependency information for crates.
78     # Many of the fields are passed one-to-one to buildRustCrate.
79     #
80     # Noteworthy:
81     # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate.
82     #   but with additional information which is used during dependency/feature resolution.
83     # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging.
84     # * `devDependencies` as of now not used by `buildRustCrate` but used to
85     #   inject test dependencies into the build
87     crates = {
88       "asn1-rs" = rec {
89         crateName = "asn1-rs";
90         version = "0.3.1";
91         edition = "2018";
92         sha256 = "0czsk1nd4dx2k83f7jzkn8klx05wbmblkx1jh51i4c170akhbzrh";
93         authors = [
94           "Pierre Chifflier <chifflier@wzdftpd.net>"
95         ];
96         dependencies = [
97           {
98             name = "asn1-rs-derive";
99             packageId = "asn1-rs-derive";
100           }
101           {
102             name = "asn1-rs-impl";
103             packageId = "asn1-rs-impl";
104           }
105           {
106             name = "displaydoc";
107             packageId = "displaydoc";
108           }
109           {
110             name = "nom";
111             packageId = "nom";
112             usesDefaultFeatures = false;
113             features = [ "std" ];
114           }
115           {
116             name = "num-traits";
117             packageId = "num-traits";
118           }
119           {
120             name = "rusticata-macros";
121             packageId = "rusticata-macros";
122           }
123           {
124             name = "thiserror";
125             packageId = "thiserror";
126           }
127           {
128             name = "time";
129             packageId = "time";
130             optional = true;
131             features = [ "macros" "parsing" "formatting" ];
132           }
133         ];
134         features = {
135           "bigint" = [ "num-bigint" ];
136           "bits" = [ "bitvec" ];
137           "bitvec" = [ "dep:bitvec" ];
138           "cookie-factory" = [ "dep:cookie-factory" ];
139           "datetime" = [ "time" ];
140           "default" = [ "std" ];
141           "num-bigint" = [ "dep:num-bigint" ];
142           "serialize" = [ "cookie-factory" ];
143           "time" = [ "dep:time" ];
144         };
145         resolvedDefaultFeatures = [ "datetime" "default" "std" "time" ];
146       };
147       "asn1-rs-derive" = rec {
148         crateName = "asn1-rs-derive";
149         version = "0.1.0";
150         edition = "2018";
151         sha256 = "1gzf9vab06lk0zjvbr07axx64fndkng2s28bnj27fnwd548pb2yv";
152         procMacro = true;
153         authors = [
154           "Pierre Chifflier <chifflier@wzdftpd.net>"
155         ];
156         dependencies = [
157           {
158             name = "proc-macro2";
159             packageId = "proc-macro2";
160           }
161           {
162             name = "quote";
163             packageId = "quote";
164           }
165           {
166             name = "syn";
167             packageId = "syn";
168           }
169           {
170             name = "synstructure";
171             packageId = "synstructure";
172           }
173         ];
175       };
176       "asn1-rs-impl" = rec {
177         crateName = "asn1-rs-impl";
178         version = "0.1.0";
179         edition = "2018";
180         sha256 = "1va27bn7qxqp4wanzjlkagnynv6jnrhnwmcky2ahzb1r405p6xr7";
181         procMacro = true;
182         authors = [
183           "Pierre Chifflier <chifflier@wzdftpd.net>"
184         ];
185         dependencies = [
186           {
187             name = "proc-macro2";
188             packageId = "proc-macro2";
189           }
190           {
191             name = "quote";
192             packageId = "quote";
193           }
194           {
195             name = "syn";
196             packageId = "syn";
197           }
198         ];
200       };
201       "autocfg 0.1.7" = rec {
202         crateName = "autocfg";
203         version = "0.1.7";
204         edition = "2015";
205         sha256 = "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x";
206         authors = [
207           "Josh Stone <cuviper@gmail.com>"
208         ];
210       };
211       "autocfg 1.0.1" = rec {
212         crateName = "autocfg";
213         version = "1.0.1";
214         edition = "2015";
215         sha256 = "0jj6i9zn4gjl03kjvziqdji6rwx8ykz8zk2ngpc331z2g3fk3c6d";
216         authors = [
217           "Josh Stone <cuviper@gmail.com>"
218         ];
220       };
221       "base64" = rec {
222         crateName = "base64";
223         version = "0.13.0";
224         edition = "2018";
225         sha256 = "1z82g23mbzjgijkpcrilc7nljpxpvpf7zxf6iyiapkgka2ngwkch";
226         authors = [
227           "Alice Maz <alice@alicemaz.com>"
228           "Marshall Pierce <marshall@mpierce.org>"
229         ];
230         features = {
231           "default" = [ "std" ];
232         };
233         resolvedDefaultFeatures = [ "default" "std" ];
234       };
235       "base64ct" = rec {
236         crateName = "base64ct";
237         version = "1.1.1";
238         edition = "2018";
239         sha256 = "0p4was874qc90q2chm2i14m9mn8zmxjis8vaxihd6a2x4aqxkd76";
240         authors = [
241           "RustCrypto Developers"
242         ];
243         features = {
244           "std" = [ "alloc" ];
245         };
246       };
247       "bitflags" = rec {
248         crateName = "bitflags";
249         version = "1.3.2";
250         edition = "2018";
251         sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy";
252         authors = [
253           "The Rust Project Developers"
254         ];
255         features = {
256           "compiler_builtins" = [ "dep:compiler_builtins" ];
257           "core" = [ "dep:core" ];
258           "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
259         };
260         resolvedDefaultFeatures = [ "default" ];
261       };
262       "botan" = rec {
263         crateName = "botan";
264         version = "0.8.1";
265         edition = "2018";
266         sha256 = "08bmiyn7c3b0dgx20w6hr28d9jcq7cj78cchr84pc686sb2s41ik";
267         authors = [
268           "Jack Lloyd <jack@randombit.net>"
269         ];
270         dependencies = [
271           {
272             name = "botan-sys";
273             packageId = "botan-sys";
274           }
275           {
276             name = "cty";
277             packageId = "cty";
278           }
279         ];
280         features = {
281           "cstr_core" = [ "dep:cstr_core" ];
282           "no-std" = [ "cstr_core/alloc" ];
283           "vendored" = [ "botan-sys/vendored" ];
284         };
285         resolvedDefaultFeatures = [ "default" "vendored" ];
286       };
287       "botan-src" = rec {
288         crateName = "botan-src";
289         version = "0.21703.0";
290         edition = "2018";
291         sha256 = "0s2ad9q84qsrllfsbj7hjhn7gr3hab9ng6lwzwqmimia6yvja8y8";
292         authors = [
293           "Rodolphe Breard <rodolphe@what.tf>"
294           "Jack Lloyd <jack@randombit.net>"
295         ];
297       };
298       "botan-sys" = rec {
299         crateName = "botan-sys";
300         version = "0.8.1";
301         edition = "2015";
302         sha256 = "1m11zblxfanrhl97j7z3ap7n17rr8j0rg91sr7f9j6y2bsniaz1x";
303         authors = [
304           "Jack Lloyd <jack@randombit.net>"
305         ];
306         dependencies = [
307           {
308             name = "cty";
309             packageId = "cty";
310           }
311         ];
312         buildDependencies = [
313           {
314             name = "botan-src";
315             packageId = "botan-src";
316             optional = true;
317           }
318         ];
319         features = {
320           "botan-src" = [ "dep:botan-src" ];
321           "vendored" = [ "botan-src" ];
322         };
323         resolvedDefaultFeatures = [ "botan-src" "default" "vendored" ];
324       };
325       "bumpalo" = rec {
326         crateName = "bumpalo";
327         version = "3.9.1";
328         edition = "2018";
329         sha256 = "1688dv6s0cbj72p9lmll8a02a85dzxvdw2is7pji490zmd35m954";
330         authors = [
331           "Nick Fitzgerald <fitzgen@gmail.com>"
332         ];
333         features = {
334         };
335         resolvedDefaultFeatures = [ "default" ];
336       };
337       "byteorder" = rec {
338         crateName = "byteorder";
339         version = "1.4.3";
340         edition = "2018";
341         sha256 = "0456lv9xi1a5bcm32arknf33ikv76p3fr9yzki4lb2897p2qkh8l";
342         authors = [
343           "Andrew Gallant <jamslam@gmail.com>"
344         ];
345         features = {
346           "default" = [ "std" ];
347         };
348       };
349       "cc" = rec {
350         crateName = "cc";
351         version = "1.0.72";
352         edition = "2018";
353         crateBin = [];
354         sha256 = "1vl50h2qh0nh0iddzj6gd1pnxnxpvwmbfxc30578c1pajmxi7a92";
355         authors = [
356           "Alex Crichton <alex@alexcrichton.com>"
357         ];
358         features = {
359           "jobserver" = [ "dep:jobserver" ];
360           "parallel" = [ "jobserver" ];
361         };
362       };
363       "cfg-if" = rec {
364         crateName = "cfg-if";
365         version = "1.0.0";
366         edition = "2018";
367         sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds";
368         authors = [
369           "Alex Crichton <alex@alexcrichton.com>"
370         ];
371         features = {
372           "compiler_builtins" = [ "dep:compiler_builtins" ];
373           "core" = [ "dep:core" ];
374           "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
375         };
376       };
377       "const-oid" = rec {
378         crateName = "const-oid";
379         version = "0.6.2";
380         edition = "2018";
381         sha256 = "12vv7csqqjj0x1l5mf51lgqiw76k5c3mb1yzfhfcqysks2j2lvwx";
382         authors = [
383           "RustCrypto Developers"
384         ];
385         features = {
386         };
387       };
388       "crypto-bigint" = rec {
389         crateName = "crypto-bigint";
390         version = "0.2.11";
391         edition = "2018";
392         sha256 = "00qckh65nzb7s7vd60wylw6alxf9g37xh31lirb1qw0l8fxx6fzq";
393         authors = [
394           "RustCrypto Developers"
395         ];
396         dependencies = [
397           {
398             name = "generic-array";
399             packageId = "generic-array";
400             optional = true;
401           }
402           {
403             name = "rand_core";
404             packageId = "rand_core";
405             optional = true;
406           }
407           {
408             name = "subtle";
409             packageId = "subtle";
410             usesDefaultFeatures = false;
411           }
412         ];
413         features = {
414           "default" = [ "rand" ];
415           "generic-array" = [ "dep:generic-array" ];
416           "rand" = [ "rand_core" ];
417           "rand_core" = [ "dep:rand_core" ];
418           "rlp" = [ "dep:rlp" ];
419           "zeroize" = [ "dep:zeroize" ];
420         };
421         resolvedDefaultFeatures = [ "default" "generic-array" "rand" "rand_core" ];
422       };
423       "cty" = rec {
424         crateName = "cty";
425         version = "0.2.2";
426         edition = "2015";
427         sha256 = "0d8z0pbr87wgzqqb2jk5pvj0afzc6d3rb772ach6fijhg6yglrdk";
428         authors = [
429           "Jorge Aparicio <jorge@japaric.io>"
430         ];
432       };
433       "data-encoding" = rec {
434         crateName = "data-encoding";
435         version = "2.3.2";
436         edition = "2018";
437         sha256 = "0mvd8bjq5mq50fcf931cff57vwmbsvs1kpxynkzrshli98y3kqiy";
438         authors = [
439           "Julien Cretin <git@ia0.eu>"
440         ];
441         features = {
442           "default" = [ "std" ];
443           "std" = [ "alloc" ];
444         };
445         resolvedDefaultFeatures = [ "alloc" "default" "std" ];
446       };
447       "der" = rec {
448         crateName = "der";
449         version = "0.4.5";
450         edition = "2018";
451         sha256 = "1x4k0jln8va1657cghl40l6p7hyvr1ixz71v9cd6imwmgp51rdvr";
452         authors = [
453           "RustCrypto Developers"
454         ];
455         dependencies = [
456           {
457             name = "const-oid";
458             packageId = "const-oid";
459             optional = true;
460           }
461           {
462             name = "crypto-bigint";
463             packageId = "crypto-bigint";
464             optional = true;
465             features = [ "generic-array" ];
466           }
467         ];
468         features = {
469           "bigint" = [ "crypto-bigint" ];
470           "const-oid" = [ "dep:const-oid" ];
471           "crypto-bigint" = [ "dep:crypto-bigint" ];
472           "der_derive" = [ "dep:der_derive" ];
473           "derive" = [ "der_derive" ];
474           "oid" = [ "const-oid" ];
475           "std" = [ "alloc" ];
476         };
477         resolvedDefaultFeatures = [ "alloc" "bigint" "const-oid" "crypto-bigint" "oid" "std" ];
478       };
479       "der-parser" = rec {
480         crateName = "der-parser";
481         version = "7.0.0";
482         edition = "2018";
483         sha256 = "10kfa2gzl3x20mwgrd43cyi79xgkqxyzcyrh0xylv4apa33qlfgy";
484         authors = [
485           "Pierre Chifflier <chifflier@wzdftpd.net>"
486         ];
487         dependencies = [
488           {
489             name = "asn1-rs";
490             packageId = "asn1-rs";
491           }
492           {
493             name = "displaydoc";
494             packageId = "displaydoc";
495             usesDefaultFeatures = false;
496           }
497           {
498             name = "nom";
499             packageId = "nom";
500           }
501           {
502             name = "num-bigint";
503             packageId = "num-bigint";
504             optional = true;
505           }
506           {
507             name = "num-traits";
508             packageId = "num-traits";
509           }
510           {
511             name = "rusticata-macros";
512             packageId = "rusticata-macros";
513           }
514         ];
515         features = {
516           "bigint" = [ "num-bigint" ];
517           "cookie-factory" = [ "dep:cookie-factory" ];
518           "default" = [ "std" ];
519           "num-bigint" = [ "dep:num-bigint" ];
520           "serialize" = [ "std" "cookie-factory" ];
521         };
522         resolvedDefaultFeatures = [ "bigint" "default" "num-bigint" "std" ];
523       };
524       "digest" = rec {
525         crateName = "digest";
526         version = "0.9.0";
527         edition = "2018";
528         sha256 = "0rmhvk33rgvd6ll71z8sng91a52rw14p0drjn1da0mqa138n1pfk";
529         authors = [
530           "RustCrypto Developers"
531         ];
532         dependencies = [
533           {
534             name = "generic-array";
535             packageId = "generic-array";
536           }
537         ];
538         features = {
539           "blobby" = [ "dep:blobby" ];
540           "dev" = [ "blobby" ];
541           "std" = [ "alloc" ];
542         };
543         resolvedDefaultFeatures = [ "alloc" "std" ];
544       };
545       "displaydoc" = rec {
546         crateName = "displaydoc";
547         version = "0.2.3";
548         edition = "2018";
549         sha256 = "11i8p5snlc1hs4g5q3wiyr75dn276l6kr0si5m7xmfa6y31mvy9v";
550         procMacro = true;
551         authors = [
552           "Jane Lusby <jlusby@yaah.dev>"
553         ];
554         dependencies = [
555           {
556             name = "proc-macro2";
557             packageId = "proc-macro2";
558           }
559           {
560             name = "quote";
561             packageId = "quote";
562           }
563           {
564             name = "syn";
565             packageId = "syn";
566           }
567         ];
568         features = {
569           "default" = [ "std" ];
570         };
571         resolvedDefaultFeatures = [ "default" "std" ];
572       };
573       "foreign-types" = rec {
574         crateName = "foreign-types";
575         version = "0.3.2";
576         edition = "2015";
577         sha256 = "1cgk0vyd7r45cj769jym4a6s7vwshvd0z4bqrb92q1fwibmkkwzn";
578         authors = [
579           "Steven Fackler <sfackler@gmail.com>"
580         ];
581         dependencies = [
582           {
583             name = "foreign-types-shared";
584             packageId = "foreign-types-shared";
585           }
586         ];
588       };
589       "foreign-types-shared" = rec {
590         crateName = "foreign-types-shared";
591         version = "0.1.1";
592         edition = "2015";
593         sha256 = "0jxgzd04ra4imjv8jgkmdq59kj8fsz6w4zxsbmlai34h26225c00";
594         authors = [
595           "Steven Fackler <sfackler@gmail.com>"
596         ];
598       };
599       "generic-array" = rec {
600         crateName = "generic-array";
601         version = "0.14.5";
602         edition = "2015";
603         sha256 = "00qqhls43bzvyb7s26iw6knvsz3mckbxl3rhaahvypzhqwzd6j7x";
604         libName = "generic_array";
605         authors = [
606           "BartÅ‚omiej KamiÅ„ski <fizyk20@gmail.com>"
607           "Aaron Trent <novacrazy@gmail.com>"
608         ];
609         dependencies = [
610           {
611             name = "typenum";
612             packageId = "typenum";
613           }
614         ];
615         buildDependencies = [
616           {
617             name = "version_check";
618             packageId = "version_check";
619           }
620         ];
621         features = {
622           "serde" = [ "dep:serde" ];
623         };
624       };
625       "getrandom" = rec {
626         crateName = "getrandom";
627         version = "0.2.4";
628         edition = "2018";
629         sha256 = "0k0bdr1dyf4n9fvnkx4fmwxhv4hgnyf55gj86v4m69fln743g3a1";
630         authors = [
631           "The Rand Project Developers"
632         ];
633         dependencies = [
634           {
635             name = "cfg-if";
636             packageId = "cfg-if";
637           }
638           {
639             name = "libc";
640             packageId = "libc";
641             usesDefaultFeatures = false;
642             target = { target, features }: (target."unix" or false);
643           }
644           {
645             name = "wasi";
646             packageId = "wasi";
647             target = { target, features }: (target."os" == "wasi");
648           }
649         ];
650         features = {
651           "compiler_builtins" = [ "dep:compiler_builtins" ];
652           "core" = [ "dep:core" ];
653           "js" = [ "wasm-bindgen" "js-sys" ];
654           "js-sys" = [ "dep:js-sys" ];
655           "rustc-dep-of-std" = [ "compiler_builtins" "core" "libc/rustc-dep-of-std" "wasi/rustc-dep-of-std" ];
656           "wasm-bindgen" = [ "dep:wasm-bindgen" ];
657         };
658         resolvedDefaultFeatures = [ "std" ];
659       };
660       "itoa" = rec {
661         crateName = "itoa";
662         version = "1.0.1";
663         edition = "2018";
664         sha256 = "0d8wr2qf5b25a04xf10rz9r0pdbjdgb0zaw3xvf8k2sqcz1qzaqs";
665         authors = [
666           "David Tolnay <dtolnay@gmail.com>"
667         ];
669       };
670       "js-sys" = rec {
671         crateName = "js-sys";
672         version = "0.3.56";
673         edition = "2018";
674         sha256 = "010g8jkj5avy3xd77i3cprjzzpfa6z9z2ay0fkllqmpx617c53x3";
675         authors = [
676           "The wasm-bindgen Developers"
677         ];
678         dependencies = [
679           {
680             name = "wasm-bindgen";
681             packageId = "wasm-bindgen";
682           }
683         ];
685       };
686       "lazy_static" = rec {
687         crateName = "lazy_static";
688         version = "1.4.0";
689         edition = "2015";
690         sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2";
691         authors = [
692           "Marvin Löbel <loebel.marvin@gmail.com>"
693         ];
694         dependencies = [
695           {
696             name = "spin";
697             packageId = "spin";
698             optional = true;
699           }
700         ];
701         features = {
702           "spin" = [ "dep:spin" ];
703           "spin_no_std" = [ "spin" ];
704         };
705         resolvedDefaultFeatures = [ "spin" "spin_no_std" ];
706       };
707       "libc" = rec {
708         crateName = "libc";
709         version = "0.2.116";
710         edition = "2015";
711         sha256 = "0x6sk17kv2fdsqxlm23bz9x1y79w90k7ylkflk44rgidhy4bspan";
712         authors = [
713           "The Rust Project Developers"
714         ];
715         features = {
716           "default" = [ "std" ];
717           "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
718           "rustc-std-workspace-core" = [ "dep:rustc-std-workspace-core" ];
719           "use_std" = [ "std" ];
720         };
721         resolvedDefaultFeatures = [ "default" "std" ];
722       };
723       "libm" = rec {
724         crateName = "libm";
725         version = "0.2.1";
726         edition = "2018";
727         sha256 = "0akh56sh51adhagmk9l84dyrlz60gv8ri05xhr13i1b18czkpmy7";
728         authors = [
729           "Jorge Aparicio <jorge@japaric.io>"
730         ];
731         features = {
732           "musl-reference-tests" = [ "rand" ];
733           "rand" = [ "dep:rand" ];
734         };
735         resolvedDefaultFeatures = [ "default" ];
736       };
737       "log" = rec {
738         crateName = "log";
739         version = "0.4.14";
740         edition = "2015";
741         sha256 = "04175hv0v62shd82qydq58a48k3bjijmk54v38zgqlbxqkkbpfai";
742         authors = [
743           "The Rust Project Developers"
744         ];
745         dependencies = [
746           {
747             name = "cfg-if";
748             packageId = "cfg-if";
749           }
750         ];
751         features = {
752           "kv_unstable" = [ "value-bag" ];
753           "kv_unstable_serde" = [ "kv_unstable_std" "value-bag/serde" "serde" ];
754           "kv_unstable_std" = [ "std" "kv_unstable" "value-bag/error" ];
755           "kv_unstable_sval" = [ "kv_unstable" "value-bag/sval" "sval" ];
756           "serde" = [ "dep:serde" ];
757           "sval" = [ "dep:sval" ];
758           "value-bag" = [ "dep:value-bag" ];
759         };
760       };
761       "memchr" = rec {
762         crateName = "memchr";
763         version = "2.4.1";
764         edition = "2018";
765         sha256 = "0smq8xzd40njqpfzv5mghigj91fzlfrfg842iz8x0wqvw2dw731h";
766         authors = [
767           "Andrew Gallant <jamslam@gmail.com>"
768           "bluss"
769         ];
770         features = {
771           "compiler_builtins" = [ "dep:compiler_builtins" ];
772           "core" = [ "dep:core" ];
773           "default" = [ "std" ];
774           "libc" = [ "dep:libc" ];
775           "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
776           "use_std" = [ "std" ];
777         };
778         resolvedDefaultFeatures = [ "std" ];
779       };
780       "minimal-lexical" = rec {
781         crateName = "minimal-lexical";
782         version = "0.2.1";
783         edition = "2018";
784         sha256 = "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8";
785         authors = [
786           "Alex Huszagh <ahuszagh@gmail.com>"
787         ];
788         features = {
789           "default" = [ "std" ];
790         };
791         resolvedDefaultFeatures = [ "std" ];
792       };
793       "nom" = rec {
794         crateName = "nom";
795         version = "7.1.0";
796         edition = "2018";
797         sha256 = "0281jdx0xcyhjgs1jkj9pii8py1clcpazg41bgz7d71qxzhi278v";
798         authors = [
799           "contact@geoffroycouprie.com"
800         ];
801         dependencies = [
802           {
803             name = "memchr";
804             packageId = "memchr";
805             usesDefaultFeatures = false;
806           }
807           {
808             name = "minimal-lexical";
809             packageId = "minimal-lexical";
810             usesDefaultFeatures = false;
811           }
812         ];
813         buildDependencies = [
814           {
815             name = "version_check";
816             packageId = "version_check";
817           }
818         ];
819         features = {
820           "default" = [ "std" ];
821           "std" = [ "alloc" "memchr/std" "minimal-lexical/std" ];
822         };
823         resolvedDefaultFeatures = [ "alloc" "default" "std" ];
824       };
825       "num-bigint" = rec {
826         crateName = "num-bigint";
827         version = "0.4.3";
828         edition = "2018";
829         sha256 = "0py73wsa5j4izhd39nkqzqv260r0ma08vy30ky54ld3vkhlbcfpr";
830         authors = [
831           "The Rust Project Developers"
832         ];
833         dependencies = [
834           {
835             name = "num-integer";
836             packageId = "num-integer";
837             usesDefaultFeatures = false;
838             features = [ "i128" ];
839           }
840           {
841             name = "num-traits";
842             packageId = "num-traits";
843             usesDefaultFeatures = false;
844             features = [ "i128" ];
845           }
846         ];
847         buildDependencies = [
848           {
849             name = "autocfg";
850             packageId = "autocfg 1.0.1";
851           }
852         ];
853         features = {
854           "arbitrary" = [ "dep:arbitrary" ];
855           "default" = [ "std" ];
856           "quickcheck" = [ "dep:quickcheck" ];
857           "rand" = [ "dep:rand" ];
858           "serde" = [ "dep:serde" ];
859           "std" = [ "num-integer/std" "num-traits/std" ];
860         };
861         resolvedDefaultFeatures = [ "default" "std" ];
862       };
863       "num-bigint-dig" = rec {
864         crateName = "num-bigint-dig";
865         version = "0.7.0";
866         edition = "2015";
867         sha256 = "1004mmipvc7pvaf3kf13i1nqh3vxf789bj72d8wl51y185aywis5";
868         authors = [
869           "dignifiedquire <dignifiedquire@gmail.com>"
870           "The Rust Project Developers"
871         ];
872         dependencies = [
873           {
874             name = "byteorder";
875             packageId = "byteorder";
876             usesDefaultFeatures = false;
877           }
878           {
879             name = "lazy_static";
880             packageId = "lazy_static";
881             usesDefaultFeatures = false;
882             features = [ "spin_no_std" ];
883           }
884           {
885             name = "libm";
886             packageId = "libm";
887           }
888           {
889             name = "num-integer";
890             packageId = "num-integer";
891             usesDefaultFeatures = false;
892           }
893           {
894             name = "num-iter";
895             packageId = "num-iter";
896             usesDefaultFeatures = false;
897           }
898           {
899             name = "num-traits";
900             packageId = "num-traits";
901             usesDefaultFeatures = false;
902           }
903           {
904             name = "rand";
905             packageId = "rand";
906             optional = true;
907             usesDefaultFeatures = false;
908           }
909           {
910             name = "smallvec";
911             packageId = "smallvec";
912             usesDefaultFeatures = false;
913           }
914           {
915             name = "zeroize";
916             packageId = "zeroize";
917             optional = true;
918             usesDefaultFeatures = false;
919             features = [ "zeroize_derive" ];
920           }
921         ];
922         buildDependencies = [
923           {
924             name = "autocfg";
925             packageId = "autocfg 0.1.7";
926           }
927         ];
928         devDependencies = [
929           {
930             name = "rand";
931             packageId = "rand";
932             features = [ "small_rng" ];
933           }
934         ];
935         features = {
936           "default" = [ "std" "i128" "u64_digit" ];
937           "i128" = [ "num-integer/i128" "num-traits/i128" ];
938           "prime" = [ "rand/std_rng" ];
939           "rand" = [ "dep:rand" ];
940           "serde" = [ "dep:serde" ];
941           "std" = [ "num-integer/std" "num-traits/std" "smallvec/write" "rand/std" "serde/std" ];
942           "zeroize" = [ "dep:zeroize" ];
943         };
944         resolvedDefaultFeatures = [ "i128" "prime" "rand" "u64_digit" "zeroize" ];
945       };
946       "num-integer" = rec {
947         crateName = "num-integer";
948         version = "0.1.44";
949         edition = "2015";
950         sha256 = "1nq152y3304as1iai95hqz8prqnc94lks1s7q05sfjdmcf56kk6j";
951         authors = [
952           "The Rust Project Developers"
953         ];
954         dependencies = [
955           {
956             name = "num-traits";
957             packageId = "num-traits";
958             usesDefaultFeatures = false;
959           }
960         ];
961         buildDependencies = [
962           {
963             name = "autocfg";
964             packageId = "autocfg 1.0.1";
965           }
966         ];
967         features = {
968           "default" = [ "std" ];
969           "i128" = [ "num-traits/i128" ];
970           "std" = [ "num-traits/std" ];
971         };
972         resolvedDefaultFeatures = [ "i128" "std" ];
973       };
974       "num-iter" = rec {
975         crateName = "num-iter";
976         version = "0.1.42";
977         edition = "2015";
978         sha256 = "0ndd9wb9qar50fdr16xm3i1zk6h2g9br56nml2n22kd56y1iq0mj";
979         authors = [
980           "The Rust Project Developers"
981         ];
982         dependencies = [
983           {
984             name = "num-integer";
985             packageId = "num-integer";
986             usesDefaultFeatures = false;
987           }
988           {
989             name = "num-traits";
990             packageId = "num-traits";
991             usesDefaultFeatures = false;
992           }
993         ];
994         buildDependencies = [
995           {
996             name = "autocfg";
997             packageId = "autocfg 1.0.1";
998           }
999         ];
1000         features = {
1001           "default" = [ "std" ];
1002           "i128" = [ "num-integer/i128" "num-traits/i128" ];
1003           "std" = [ "num-integer/std" "num-traits/std" ];
1004         };
1005       };
1006       "num-traits" = rec {
1007         crateName = "num-traits";
1008         version = "0.2.14";
1009         edition = "2015";
1010         sha256 = "144j176s2p76azy2ngk2vkdzgwdc0bc8c93jhki8c9fsbknb2r4s";
1011         authors = [
1012           "The Rust Project Developers"
1013         ];
1014         dependencies = [
1015           {
1016             name = "libm";
1017             packageId = "libm";
1018             optional = true;
1019           }
1020         ];
1021         buildDependencies = [
1022           {
1023             name = "autocfg";
1024             packageId = "autocfg 1.0.1";
1025           }
1026         ];
1027         features = {
1028           "default" = [ "std" ];
1029           "libm" = [ "dep:libm" ];
1030         };
1031         resolvedDefaultFeatures = [ "default" "i128" "libm" "std" ];
1032       };
1033       "num_threads" = rec {
1034         crateName = "num_threads";
1035         version = "0.1.3";
1036         edition = "2015";
1037         sha256 = "05gvsnv4k6d69iksz47i7fq1r61dj1k1nh4i8xrw7qlkcfx9kflp";
1038         authors = [
1039           "Jacob Pratt <open-source@jhpratt.dev>"
1040         ];
1041         dependencies = [
1042           {
1043             name = "libc";
1044             packageId = "libc";
1045             target = { target, features }: ((target."os" == "macos") || (target."os" == "freebsd"));
1046           }
1047         ];
1049       };
1050       "oid-registry" = rec {
1051         crateName = "oid-registry";
1052         version = "0.4.0";
1053         edition = "2018";
1054         sha256 = "0akbah3j8231ayrp2l1y5d9zmvbvqcsj0sa6s6dz6h85z8bhgqiq";
1055         authors = [
1056           "Pierre Chifflier <chifflier@wzdftpd.net>"
1057         ];
1058         dependencies = [
1059           {
1060             name = "asn1-rs";
1061             packageId = "asn1-rs";
1062           }
1063         ];
1064         features = {
1065           "crypto" = [ "kdf" "pkcs1" "pkcs7" "pkcs9" "pkcs12" "nist_algs" "x962" ];
1066           "default" = [ "registry" ];
1067         };
1068         resolvedDefaultFeatures = [ "crypto" "default" "kdf" "nist_algs" "pkcs1" "pkcs12" "pkcs7" "pkcs9" "registry" "x509" "x962" ];
1069       };
1070       "once_cell" = rec {
1071         crateName = "once_cell";
1072         version = "1.9.0";
1073         edition = "2018";
1074         sha256 = "1mfqhrsgi368x92bwnq3vi3p5nv0n1qlrn69gfflhvkfkxfm2cns";
1075         authors = [
1076           "Aleksey Kladov <aleksey.kladov@gmail.com>"
1077         ];
1078         features = {
1079           "alloc" = [ "race" ];
1080           "atomic-polyfill" = [ "dep:atomic-polyfill" ];
1081           "default" = [ "std" ];
1082           "parking_lot" = [ "dep:parking_lot" ];
1083           "std" = [ "alloc" ];
1084         };
1085         resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
1086       };
1087       "openssl" = rec {
1088         crateName = "openssl";
1089         version = "0.10.38";
1090         edition = "2018";
1091         sha256 = "15baqlphisr1f7ddq11jnrrzz4shdh35kwal24adyc2c4cif4yhc";
1092         authors = [
1093           "Steven Fackler <sfackler@gmail.com>"
1094         ];
1095         dependencies = [
1096           {
1097             name = "bitflags";
1098             packageId = "bitflags";
1099           }
1100           {
1101             name = "cfg-if";
1102             packageId = "cfg-if";
1103           }
1104           {
1105             name = "foreign-types";
1106             packageId = "foreign-types";
1107           }
1108           {
1109             name = "libc";
1110             packageId = "libc";
1111           }
1112           {
1113             name = "once_cell";
1114             packageId = "once_cell";
1115           }
1116           {
1117             name = "openssl-sys";
1118             packageId = "openssl-sys";
1119             rename = "ffi";
1120           }
1121         ];
1122         features = {
1123           "vendored" = [ "ffi/vendored" ];
1124         };
1125       };
1126       "openssl-sys" = rec {
1127         crateName = "openssl-sys";
1128         version = "0.9.72";
1129         edition = "2015";
1130         sha256 = "1jq3qbcvf16qn71yasdzw54b14n8nz98vr52l1gp60in72f10iky";
1131         build = "build/main.rs";
1132         authors = [
1133           "Alex Crichton <alex@alexcrichton.com>"
1134           "Steven Fackler <sfackler@gmail.com>"
1135         ];
1136         dependencies = [
1137           {
1138             name = "libc";
1139             packageId = "libc";
1140           }
1141         ];
1142         buildDependencies = [
1143           {
1144             name = "autocfg";
1145             packageId = "autocfg 1.0.1";
1146           }
1147           {
1148             name = "cc";
1149             packageId = "cc";
1150           }
1151           {
1152             name = "pkg-config";
1153             packageId = "pkg-config";
1154           }
1155           {
1156             name = "vcpkg";
1157             packageId = "vcpkg";
1158             target = {target, features}: (target."env" == "msvc");
1159           }
1160         ];
1161         features = {
1162           "openssl-src" = [ "dep:openssl-src" ];
1163           "vendored" = [ "openssl-src" ];
1164         };
1165       };
1166       "pem" = rec {
1167         crateName = "pem";
1168         version = "1.0.2";
1169         edition = "2018";
1170         sha256 = "0iqrvfnm71x9pvff39d5ajwn3gc9glxlv4d4h22max7342db18z9";
1171         authors = [
1172           "Jonathan Creekmore <jonathan@thecreekmores.org>"
1173         ];
1174         dependencies = [
1175           {
1176             name = "base64";
1177             packageId = "base64";
1178           }
1179         ];
1181       };
1182       "pem-rfc7468" = rec {
1183         crateName = "pem-rfc7468";
1184         version = "0.2.4";
1185         edition = "2018";
1186         sha256 = "1m1c9jypydzabg4yscplmvff7pdcc8gg4cqg081hnlf03hxkmsc4";
1187         authors = [
1188           "RustCrypto Developers"
1189         ];
1190         dependencies = [
1191           {
1192             name = "base64ct";
1193             packageId = "base64ct";
1194           }
1195         ];
1196         features = {
1197           "std" = [ "alloc" ];
1198         };
1199         resolvedDefaultFeatures = [ "alloc" ];
1200       };
1201       "pkcs1" = rec {
1202         crateName = "pkcs1";
1203         version = "0.2.4";
1204         edition = "2018";
1205         sha256 = "0b2f1a0lf5h53zrjvcqbxzjhh89gcfa1myhf6z7w10ypg61fwsqi";
1206         authors = [
1207           "RustCrypto Developers"
1208         ];
1209         dependencies = [
1210           {
1211             name = "der";
1212             packageId = "der";
1213             features = [ "bigint" "oid" ];
1214           }
1215           {
1216             name = "pem-rfc7468";
1217             packageId = "pem-rfc7468";
1218             optional = true;
1219           }
1220           {
1221             name = "zeroize";
1222             packageId = "zeroize";
1223             optional = true;
1224             usesDefaultFeatures = false;
1225             features = [ "alloc" ];
1226           }
1227         ];
1228         features = {
1229           "alloc" = [ "der/alloc" "zeroize" ];
1230           "pem" = [ "alloc" "pem-rfc7468/alloc" ];
1231           "pem-rfc7468" = [ "dep:pem-rfc7468" ];
1232           "zeroize" = [ "dep:zeroize" ];
1233         };
1234         resolvedDefaultFeatures = [ "alloc" "pem" "pem-rfc7468" "std" "zeroize" ];
1235       };
1236       "pkcs8" = rec {
1237         crateName = "pkcs8";
1238         version = "0.7.6";
1239         edition = "2018";
1240         sha256 = "0iq46p6fa2b8xy6pj52zpmdy8ya3fg31dj4rc19x1fi69nvgjgpf";
1241         authors = [
1242           "RustCrypto Developers"
1243         ];
1244         dependencies = [
1245           {
1246             name = "der";
1247             packageId = "der";
1248             features = [ "oid" ];
1249           }
1250           {
1251             name = "pem-rfc7468";
1252             packageId = "pem-rfc7468";
1253             optional = true;
1254           }
1255           {
1256             name = "pkcs1";
1257             packageId = "pkcs1";
1258             optional = true;
1259             features = [ "alloc" ];
1260           }
1261           {
1262             name = "spki";
1263             packageId = "spki";
1264           }
1265           {
1266             name = "zeroize";
1267             packageId = "zeroize";
1268             optional = true;
1269             usesDefaultFeatures = false;
1270             features = [ "alloc" ];
1271           }
1272         ];
1273         features = {
1274           "3des" = [ "encryption" "pkcs5/3des" ];
1275           "alloc" = [ "der/alloc" "zeroize" ];
1276           "des-insecure" = [ "encryption" "pkcs5/des-insecure" ];
1277           "encryption" = [ "alloc" "pkcs5/alloc" "pkcs5/pbes2" "rand_core" ];
1278           "pem" = [ "alloc" "pem-rfc7468/alloc" ];
1279           "pem-rfc7468" = [ "dep:pem-rfc7468" ];
1280           "pkcs1" = [ "dep:pkcs1" ];
1281           "pkcs5" = [ "dep:pkcs5" ];
1282           "rand_core" = [ "dep:rand_core" ];
1283           "sha1" = [ "encryption" "pkcs5/sha1" ];
1284           "std" = [ "alloc" "der/std" ];
1285           "zeroize" = [ "dep:zeroize" ];
1286         };
1287         resolvedDefaultFeatures = [ "alloc" "pem" "pem-rfc7468" "pkcs1" "std" "zeroize" ];
1288       };
1289       "pkg-config" = rec {
1290         crateName = "pkg-config";
1291         version = "0.3.24";
1292         edition = "2015";
1293         sha256 = "1ghcyjp5537r7qigmgl3dj62j01arlpddaq93a3i414v3iskz2aq";
1294         authors = [
1295           "Alex Crichton <alex@alexcrichton.com>"
1296         ];
1298       };
1299       "ppv-lite86" = rec {
1300         crateName = "ppv-lite86";
1301         version = "0.2.16";
1302         edition = "2018";
1303         sha256 = "0wkqwnvnfcgqlrahphl45vdlgi2f1bs7nqcsalsllp1y4dp9x7zb";
1304         authors = [
1305           "The CryptoCorrosion Contributors"
1306         ];
1307         features = {
1308           "default" = [ "std" ];
1309         };
1310         resolvedDefaultFeatures = [ "simd" "std" ];
1311       };
1312       "proc-macro2" = rec {
1313         crateName = "proc-macro2";
1314         version = "1.0.36";
1315         edition = "2018";
1316         sha256 = "0adh6gvs31x6pfwmygypmzrv1jc7kjq568vsqcfaxk7vhdc2sd67";
1317         authors = [
1318           "David Tolnay <dtolnay@gmail.com>"
1319           "Alex Crichton <alex@alexcrichton.com>"
1320         ];
1321         dependencies = [
1322           {
1323             name = "unicode-xid";
1324             packageId = "unicode-xid";
1325           }
1326         ];
1327         features = {
1328           "default" = [ "proc-macro" ];
1329         };
1330         resolvedDefaultFeatures = [ "default" "proc-macro" ];
1331       };
1332       "quote" = rec {
1333         crateName = "quote";
1334         version = "1.0.15";
1335         edition = "2018";
1336         sha256 = "0id1q0875pvhkg0mlb5z8gzdm2g2rbbz76bfzhv331lrm2b3wkc6";
1337         authors = [
1338           "David Tolnay <dtolnay@gmail.com>"
1339         ];
1340         dependencies = [
1341           {
1342             name = "proc-macro2";
1343             packageId = "proc-macro2";
1344             usesDefaultFeatures = false;
1345           }
1346         ];
1347         features = {
1348           "default" = [ "proc-macro" ];
1349           "proc-macro" = [ "proc-macro2/proc-macro" ];
1350         };
1351         resolvedDefaultFeatures = [ "default" "proc-macro" ];
1352       };
1353       "rand" = rec {
1354         crateName = "rand";
1355         version = "0.8.4";
1356         edition = "2018";
1357         sha256 = "1n5wska2fbfj4dsfz8mc0pd0dgjlrb6c9anpk5mwym345rip6x9f";
1358         authors = [
1359           "The Rand Project Developers"
1360           "The Rust Project Developers"
1361         ];
1362         dependencies = [
1363           {
1364             name = "libc";
1365             packageId = "libc";
1366             optional = true;
1367             usesDefaultFeatures = false;
1368             target = { target, features }: (target."unix" or false);
1369           }
1370           {
1371             name = "rand_chacha";
1372             packageId = "rand_chacha";
1373             optional = true;
1374             usesDefaultFeatures = false;
1375             target = { target, features }: (!(target."os" == "emscripten"));
1376           }
1377           {
1378             name = "rand_core";
1379             packageId = "rand_core";
1380           }
1381           {
1382             name = "rand_hc";
1383             packageId = "rand_hc";
1384             optional = true;
1385             target = { target, features }: (target."os" == "emscripten");
1386           }
1387         ];
1388         devDependencies = [
1389           {
1390             name = "rand_hc";
1391             packageId = "rand_hc";
1392           }
1393         ];
1394         features = {
1395           "alloc" = [ "rand_core/alloc" ];
1396           "default" = [ "std" "std_rng" ];
1397           "getrandom" = [ "rand_core/getrandom" ];
1398           "libc" = [ "dep:libc" ];
1399           "log" = [ "dep:log" ];
1400           "packed_simd" = [ "dep:packed_simd" ];
1401           "rand_chacha" = [ "dep:rand_chacha" ];
1402           "rand_hc" = [ "dep:rand_hc" ];
1403           "serde" = [ "dep:serde" ];
1404           "serde1" = [ "serde" "rand_core/serde1" ];
1405           "simd_support" = [ "packed_simd" ];
1406           "std" = [ "rand_core/std" "rand_chacha/std" "alloc" "getrandom" "libc" ];
1407           "std_rng" = [ "rand_chacha" "rand_hc" ];
1408         };
1409         resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "libc" "rand_chacha" "rand_hc" "std" "std_rng" ];
1410       };
1411       "rand_chacha" = rec {
1412         crateName = "rand_chacha";
1413         version = "0.3.1";
1414         edition = "2018";
1415         sha256 = "123x2adin558xbhvqb8w4f6syjsdkmqff8cxwhmjacpsl1ihmhg6";
1416         authors = [
1417           "The Rand Project Developers"
1418           "The Rust Project Developers"
1419           "The CryptoCorrosion Contributors"
1420         ];
1421         dependencies = [
1422           {
1423             name = "ppv-lite86";
1424             packageId = "ppv-lite86";
1425             usesDefaultFeatures = false;
1426             features = [ "simd" ];
1427           }
1428           {
1429             name = "rand_core";
1430             packageId = "rand_core";
1431           }
1432         ];
1433         features = {
1434           "default" = [ "std" ];
1435           "serde" = [ "dep:serde" ];
1436           "serde1" = [ "serde" ];
1437           "std" = [ "ppv-lite86/std" ];
1438         };
1439         resolvedDefaultFeatures = [ "std" ];
1440       };
1441       "rand_core" = rec {
1442         crateName = "rand_core";
1443         version = "0.6.3";
1444         edition = "2018";
1445         sha256 = "1rxlxc3bpzgwphcg9c9yasvv9idipcg2z2y4j0vlb52jyl418kyk";
1446         authors = [
1447           "The Rand Project Developers"
1448           "The Rust Project Developers"
1449         ];
1450         dependencies = [
1451           {
1452             name = "getrandom";
1453             packageId = "getrandom";
1454             optional = true;
1455           }
1456         ];
1457         features = {
1458           "getrandom" = [ "dep:getrandom" ];
1459           "serde" = [ "dep:serde" ];
1460           "serde1" = [ "serde" ];
1461           "std" = [ "alloc" "getrandom" "getrandom/std" ];
1462         };
1463         resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ];
1464       };
1465       "rand_hc" = rec {
1466         crateName = "rand_hc";
1467         version = "0.3.1";
1468         edition = "2018";
1469         sha256 = "1rwpykyvhkxs4jvqdja3mzp9dqaqamzn113cxaigs9z2dmcry7nm";
1470         authors = [
1471           "The Rand Project Developers"
1472         ];
1473         dependencies = [
1474           {
1475             name = "rand_core";
1476             packageId = "rand_core";
1477           }
1478         ];
1480       };
1481       "rcgen" = rec {
1482         crateName = "rcgen";
1483         version = "0.9.2";
1484         edition = "2018";
1485         crateBin = [
1486           { name = "rcgen"; path = "src/main.rs"; }
1487         ];
1488         sha256 = "0ppwfl9g504x2qwk7m7mag8c3l70w9mcfha93013nlzqdlw2vynp";
1489         authors = [
1490           "est31 <MTest31@outlook.com>"
1491         ];
1492         dependencies = [
1493           {
1494             name = "pem";
1495             packageId = "pem";
1496             optional = true;
1497           }
1498           {
1499             name = "ring";
1500             packageId = "ring";
1501           }
1502           {
1503             name = "time";
1504             packageId = "time";
1505             usesDefaultFeatures = false;
1506           }
1507           {
1508             name = "x509-parser";
1509             packageId = "x509-parser";
1510             optional = true;
1511             features = [ "verify" ];
1512           }
1513           {
1514             name = "yasna";
1515             packageId = "yasna";
1516             features = [ "time" "std" ];
1517           }
1518           {
1519             name = "zeroize";
1520             packageId = "zeroize";
1521             optional = true;
1522           }
1523         ];
1524         devDependencies = [
1525           {
1526             name = "botan";
1527             packageId = "botan";
1528             features = [ "vendored" ];
1529           }
1530           {
1531             name = "openssl";
1532             packageId = "openssl";
1533           }
1534           {
1535             name = "rand";
1536             packageId = "rand";
1537           }
1538           {
1539             name = "rsa";
1540             packageId = "rsa";
1541           }
1542           {
1543             name = "webpki";
1544             packageId = "webpki";
1545             features = [ "std" ];
1546           }
1547           {
1548             name = "x509-parser";
1549             packageId = "x509-parser";
1550             features = [ "verify" ];
1551           }
1552         ];
1553         features = {
1554           "default" = [ "pem" ];
1555           "pem" = [ "dep:pem" ];
1556           "x509-parser" = [ "dep:x509-parser" ];
1557           "zeroize" = [ "dep:zeroize" ];
1558         };
1559         resolvedDefaultFeatures = [ "default" "pem" "x509-parser" "zeroize" ];
1560       };
1561       "ring" = rec {
1562         crateName = "ring";
1563         version = "0.16.20";
1564         edition = "2018";
1565         sha256 = "1z682xp7v38ayq9g9nkbhhfpj6ygralmlx7wdmsfv8rnw99cylrh";
1566         authors = [
1567           "Brian Smith <brian@briansmith.org>"
1568         ];
1569         dependencies = [
1570           {
1571             name = "libc";
1572             packageId = "libc";
1573             usesDefaultFeatures = false;
1574             target = { target, features }: ((target."os" == "android") || (target."os" == "linux"));
1575           }
1576           {
1577             name = "once_cell";
1578             packageId = "once_cell";
1579             optional = true;
1580             usesDefaultFeatures = false;
1581             target = { target, features }: ((target."os" == "android") || (target."os" == "linux"));
1582             features = [ "std" ];
1583           }
1584           {
1585             name = "once_cell";
1586             packageId = "once_cell";
1587             usesDefaultFeatures = false;
1588             target = { target, features }: ((target."os" == "dragonfly") || (target."os" == "freebsd") || (target."os" == "illumos") || (target."os" == "netbsd") || (target."os" == "openbsd") || (target."os" == "solaris"));
1589             features = [ "std" ];
1590           }
1591           {
1592             name = "spin";
1593             packageId = "spin";
1594             usesDefaultFeatures = false;
1595             target = { target, features }: ((target."arch" == "x86") || (target."arch" == "x86_64") || (((target."arch" == "aarch64") || (target."arch" == "arm")) && ((target."os" == "android") || (target."os" == "fuchsia") || (target."os" == "linux"))));
1596           }
1597           {
1598             name = "untrusted";
1599             packageId = "untrusted";
1600           }
1601           {
1602             name = "web-sys";
1603             packageId = "web-sys";
1604             usesDefaultFeatures = false;
1605             target = { target, features }: ((target."arch" == "wasm32") && (target."vendor" == "unknown") && (target."os" == "unknown") && (target."env" == ""));
1606             features = [ "Crypto" "Window" ];
1607           }
1608           {
1609             name = "winapi";
1610             packageId = "winapi";
1611             usesDefaultFeatures = false;
1612             target = { target, features }: (target."os" == "windows");
1613             features = [ "ntsecapi" "wtypesbase" ];
1614           }
1615         ];
1616         buildDependencies = [
1617           {
1618             name = "cc";
1619             packageId = "cc";
1620             usesDefaultFeatures = false;
1621           }
1622         ];
1623         devDependencies = [
1624           {
1625             name = "libc";
1626             packageId = "libc";
1627             usesDefaultFeatures = false;
1628             target = {target, features}: ((target."unix" or false) || (target."windows" or false));
1629           }
1630         ];
1631         features = {
1632           "default" = [ "alloc" "dev_urandom_fallback" ];
1633           "dev_urandom_fallback" = [ "once_cell" ];
1634           "once_cell" = [ "dep:once_cell" ];
1635           "std" = [ "alloc" ];
1636         };
1637         resolvedDefaultFeatures = [ "alloc" "default" "dev_urandom_fallback" "once_cell" ];
1638       };
1639       "rsa" = rec {
1640         crateName = "rsa";
1641         version = "0.5.0";
1642         edition = "2018";
1643         sha256 = "039676a4mj0875phdi7vc0bd37hv84dh0dql6fmk8dl2w81jcp70";
1644         authors = [
1645           "RustCrypto Developers"
1646           "dignifiedquire <dignifiedquire@gmail.com>"
1647         ];
1648         dependencies = [
1649           {
1650             name = "byteorder";
1651             packageId = "byteorder";
1652             usesDefaultFeatures = false;
1653           }
1654           {
1655             name = "digest";
1656             packageId = "digest";
1657             usesDefaultFeatures = false;
1658           }
1659           {
1660             name = "lazy_static";
1661             packageId = "lazy_static";
1662             features = [ "spin_no_std" ];
1663           }
1664           {
1665             name = "num-bigint-dig";
1666             packageId = "num-bigint-dig";
1667             rename = "num-bigint";
1668             usesDefaultFeatures = false;
1669             features = [ "i128" "u64_digit" "prime" "zeroize" ];
1670           }
1671           {
1672             name = "num-integer";
1673             packageId = "num-integer";
1674             usesDefaultFeatures = false;
1675           }
1676           {
1677             name = "num-iter";
1678             packageId = "num-iter";
1679             usesDefaultFeatures = false;
1680           }
1681           {
1682             name = "num-traits";
1683             packageId = "num-traits";
1684             usesDefaultFeatures = false;
1685             features = [ "libm" ];
1686           }
1687           {
1688             name = "pkcs1";
1689             packageId = "pkcs1";
1690             usesDefaultFeatures = false;
1691           }
1692           {
1693             name = "pkcs8";
1694             packageId = "pkcs8";
1695             usesDefaultFeatures = false;
1696           }
1697           {
1698             name = "rand";
1699             packageId = "rand";
1700             usesDefaultFeatures = false;
1701             features = [ "std_rng" ];
1702           }
1703           {
1704             name = "subtle";
1705             packageId = "subtle";
1706             usesDefaultFeatures = false;
1707           }
1708           {
1709             name = "zeroize";
1710             packageId = "zeroize";
1711             features = [ "alloc" "zeroize_derive" ];
1712           }
1713         ];
1714         features = {
1715           "alloc" = [ "digest/alloc" "pkcs1/alloc" "pkcs8/alloc" "pkcs8/pkcs1" ];
1716           "default" = [ "std" "pem" ];
1717           "nightly" = [ "subtle/nightly" "num-bigint/nightly" ];
1718           "pem" = [ "alloc" "pkcs1/pem" "pkcs8/pem" ];
1719           "pkcs5" = [ "pkcs8/encryption" ];
1720           "serde" = [ "num-bigint/serde" "serde_crate" ];
1721           "serde_crate" = [ "dep:serde_crate" ];
1722           "std" = [ "alloc" "digest/std" "pkcs1/std" "pkcs8/std" "rand/std" ];
1723         };
1724         resolvedDefaultFeatures = [ "alloc" "default" "pem" "std" ];
1725       };
1726       "rusticata-macros" = rec {
1727         crateName = "rusticata-macros";
1728         version = "4.0.0";
1729         edition = "2018";
1730         sha256 = "03dmfxhgwzpm1360iwcpcg3y18ddgya0i0hc599am212pdvj7ib5";
1731         authors = [
1732           "Pierre Chifflier <chifflier@wzdftpd.net>"
1733         ];
1734         dependencies = [
1735           {
1736             name = "nom";
1737             packageId = "nom";
1738             usesDefaultFeatures = false;
1739             features = [ "std" ];
1740           }
1741         ];
1743       };
1744       "smallvec" = rec {
1745         crateName = "smallvec";
1746         version = "1.8.0";
1747         edition = "2018";
1748         sha256 = "10zf4fn63p2d6sx8qap3jvyarcfw563308x3431hd4c34r35gpgj";
1749         authors = [
1750           "The Servo Project Developers"
1751         ];
1752         features = {
1753           "arbitrary" = [ "dep:arbitrary" ];
1754           "const_new" = [ "const_generics" ];
1755           "serde" = [ "dep:serde" ];
1756         };
1757       };
1758       "spin" = rec {
1759         crateName = "spin";
1760         version = "0.5.2";
1761         edition = "2015";
1762         sha256 = "0b84m6dbzrwf2kxylnw82d3dr8w06av7rfkr8s85fb5f43rwyqvf";
1763         authors = [
1764           "Mathijs van de Nes <git@mathijs.vd-nes.nl>"
1765           "John Ericson <git@JohnEricson.me>"
1766         ];
1768       };
1769       "spki" = rec {
1770         crateName = "spki";
1771         version = "0.4.1";
1772         edition = "2018";
1773         sha256 = "0ckgkcg6db5y94dqhmyikgn8yrsah6pyf4j197hv1c51bp0s00aw";
1774         authors = [
1775           "RustCrypto Developers"
1776         ];
1777         dependencies = [
1778           {
1779             name = "der";
1780             packageId = "der";
1781             features = [ "oid" ];
1782           }
1783         ];
1784         features = {
1785           "std" = [ "der/std" ];
1786         };
1787       };
1788       "subtle" = rec {
1789         crateName = "subtle";
1790         version = "2.4.1";
1791         edition = "2015";
1792         sha256 = "00b6jzh9gzb0h9n25g06nqr90z3xzqppfhhb260s1hjhh4pg7pkb";
1793         authors = [
1794           "Isis Lovecruft <isis@patternsinthevoid.net>"
1795           "Henry de Valence <hdevalence@hdevalence.ca>"
1796         ];
1797         features = {
1798           "default" = [ "std" "i128" ];
1799         };
1800       };
1801       "syn" = rec {
1802         crateName = "syn";
1803         version = "1.0.86";
1804         edition = "2018";
1805         sha256 = "0sqwa4nqxzm89nj8xd8sk4iz0hbrw3mb17b6hyc2w2d0zzsb6rca";
1806         authors = [
1807           "David Tolnay <dtolnay@gmail.com>"
1808         ];
1809         dependencies = [
1810           {
1811             name = "proc-macro2";
1812             packageId = "proc-macro2";
1813             usesDefaultFeatures = false;
1814           }
1815           {
1816             name = "quote";
1817             packageId = "quote";
1818             optional = true;
1819             usesDefaultFeatures = false;
1820           }
1821           {
1822             name = "unicode-xid";
1823             packageId = "unicode-xid";
1824           }
1825         ];
1826         features = {
1827           "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
1828           "printing" = [ "quote" ];
1829           "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
1830           "quote" = [ "dep:quote" ];
1831           "test" = [ "syn-test-suite/all-features" ];
1832         };
1833         resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "full" "parsing" "printing" "proc-macro" "quote" "visit" ];
1834       };
1835       "synstructure" = rec {
1836         crateName = "synstructure";
1837         version = "0.12.6";
1838         edition = "2018";
1839         sha256 = "03r1lydbf3japnlpc4wka7y90pmz1i0danaj3f9a7b431akdlszk";
1840         authors = [
1841           "Nika Layzell <nika@thelayzells.com>"
1842         ];
1843         dependencies = [
1844           {
1845             name = "proc-macro2";
1846             packageId = "proc-macro2";
1847             usesDefaultFeatures = false;
1848           }
1849           {
1850             name = "quote";
1851             packageId = "quote";
1852             usesDefaultFeatures = false;
1853           }
1854           {
1855             name = "syn";
1856             packageId = "syn";
1857             usesDefaultFeatures = false;
1858             features = [ "derive" "parsing" "printing" "clone-impls" "visit" "extra-traits" ];
1859           }
1860           {
1861             name = "unicode-xid";
1862             packageId = "unicode-xid";
1863           }
1864         ];
1865         features = {
1866           "default" = [ "proc-macro" ];
1867           "proc-macro" = [ "proc-macro2/proc-macro" "syn/proc-macro" "quote/proc-macro" ];
1868         };
1869         resolvedDefaultFeatures = [ "default" "proc-macro" ];
1870       };
1871       "thiserror" = rec {
1872         crateName = "thiserror";
1873         version = "1.0.30";
1874         edition = "2018";
1875         sha256 = "05y4wm29ck8flwq5k1q6nhwh00a3b30cz3xr0qvnbwad5vjsnjw5";
1876         authors = [
1877           "David Tolnay <dtolnay@gmail.com>"
1878         ];
1879         dependencies = [
1880           {
1881             name = "thiserror-impl";
1882             packageId = "thiserror-impl";
1883           }
1884         ];
1886       };
1887       "thiserror-impl" = rec {
1888         crateName = "thiserror-impl";
1889         version = "1.0.30";
1890         edition = "2018";
1891         sha256 = "0jviwmvx6wzawsj6c9msic7h419wmsbjagl9dzhpydkzc8zzscma";
1892         procMacro = true;
1893         authors = [
1894           "David Tolnay <dtolnay@gmail.com>"
1895         ];
1896         dependencies = [
1897           {
1898             name = "proc-macro2";
1899             packageId = "proc-macro2";
1900           }
1901           {
1902             name = "quote";
1903             packageId = "quote";
1904           }
1905           {
1906             name = "syn";
1907             packageId = "syn";
1908           }
1909         ];
1911       };
1912       "time" = rec {
1913         crateName = "time";
1914         version = "0.3.7";
1915         edition = "2018";
1916         sha256 = "0gbmwlkj15dfhbqvxlzji1ffc1lidblpgg1q3b3378hgyfcbqk00";
1917         authors = [
1918           "Jacob Pratt <open-source@jhpratt.dev>"
1919           "Time contributors"
1920         ];
1921         dependencies = [
1922           {
1923             name = "itoa";
1924             packageId = "itoa";
1925             optional = true;
1926           }
1927           {
1928             name = "libc";
1929             packageId = "libc";
1930             target = { target, features }: (target."family" == "unix");
1931           }
1932           {
1933             name = "num_threads";
1934             packageId = "num_threads";
1935             target = { target, features }: (target."family" == "unix");
1936           }
1937           {
1938             name = "time-macros";
1939             packageId = "time-macros";
1940             optional = true;
1941           }
1942         ];
1943         features = {
1944           "default" = [ "std" ];
1945           "formatting" = [ "itoa" "std" ];
1946           "itoa" = [ "dep:itoa" ];
1947           "large-dates" = [ "time-macros/large-dates" ];
1948           "local-offset" = [ "std" ];
1949           "macros" = [ "time-macros" ];
1950           "quickcheck" = [ "quickcheck-dep" "alloc" ];
1951           "quickcheck-dep" = [ "dep:quickcheck-dep" ];
1952           "rand" = [ "dep:rand" ];
1953           "serde" = [ "dep:serde" ];
1954           "serde-human-readable" = [ "serde" "formatting" "parsing" ];
1955           "serde-well-known" = [ "serde/alloc" "formatting" "parsing" ];
1956           "std" = [ "alloc" ];
1957           "time-macros" = [ "dep:time-macros" ];
1958         };
1959         resolvedDefaultFeatures = [ "alloc" "default" "formatting" "itoa" "macros" "parsing" "std" "time-macros" ];
1960       };
1961       "time-macros" = rec {
1962         crateName = "time-macros";
1963         version = "0.2.3";
1964         edition = "2018";
1965         sha256 = "1mj7pv8y9j2csrh1l8aabras36pgysbnfy18330srh4g8sihrsr5";
1966         procMacro = true;
1967         authors = [
1968           "Jacob Pratt <open-source@jhpratt.dev>"
1969           "Time contributors"
1970         ];
1971         features = {
1972         };
1973       };
1974       "typenum" = rec {
1975         crateName = "typenum";
1976         version = "1.15.0";
1977         edition = "2018";
1978         sha256 = "11yrvz1vd43gqv738yw1v75rzngjbs7iwcgzjy3cq5ywkv2imy6w";
1979         build = "build/main.rs";
1980         authors = [
1981           "Paho Lurie-Gregg <paho@paholg.com>"
1982           "Andre Bogus <bogusandre@gmail.com>"
1983         ];
1984         features = {
1985           "scale-info" = [ "dep:scale-info" ];
1986           "scale_info" = [ "scale-info/derive" ];
1987         };
1988       };
1989       "unicode-xid" = rec {
1990         crateName = "unicode-xid";
1991         version = "0.2.2";
1992         edition = "2015";
1993         sha256 = "1wrkgcw557v311dkdb6n2hrix9dm2qdsb1zpw7pn79l03zb85jwc";
1994         authors = [
1995           "erick.tryzelaar <erick.tryzelaar@gmail.com>"
1996           "kwantam <kwantam@gmail.com>"
1997           "Manish Goregaokar <manishsmail@gmail.com>"
1998         ];
1999         features = {
2000         };
2001         resolvedDefaultFeatures = [ "default" ];
2002       };
2003       "untrusted" = rec {
2004         crateName = "untrusted";
2005         version = "0.7.1";
2006         edition = "2018";
2007         sha256 = "0jkbqaj9d3v5a91pp3wp9mffvng1nhycx6sh4qkdd9qyr62ccmm1";
2008         libPath = "src/untrusted.rs";
2009         authors = [
2010           "Brian Smith <brian@briansmith.org>"
2011         ];
2013       };
2014       "vcpkg" = rec {
2015         crateName = "vcpkg";
2016         version = "0.2.15";
2017         edition = "2015";
2018         sha256 = "09i4nf5y8lig6xgj3f7fyrvzd3nlaw4znrihw8psidvv5yk4xkdc";
2019         authors = [
2020           "Jim McGrath <jimmc2@gmail.com>"
2021         ];
2023       };
2024       "version_check" = rec {
2025         crateName = "version_check";
2026         version = "0.9.4";
2027         edition = "2015";
2028         sha256 = "0gs8grwdlgh0xq660d7wr80x14vxbizmd8dbp29p2pdncx8lp1s9";
2029         authors = [
2030           "Sergio Benitez <sb@sergio.bz>"
2031         ];
2033       };
2034       "wasi" = rec {
2035         crateName = "wasi";
2036         version = "0.10.2+wasi-snapshot-preview1";
2037         edition = "2018";
2038         sha256 = "1ii7nff4y1mpcrxzzvbpgxm7a1nn3szjf1n21jnx37c2g6dbsvzx";
2039         authors = [
2040           "The Cranelift Project Developers"
2041         ];
2042         features = {
2043           "compiler_builtins" = [ "dep:compiler_builtins" ];
2044           "core" = [ "dep:core" ];
2045           "default" = [ "std" ];
2046           "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ];
2047           "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ];
2048         };
2049         resolvedDefaultFeatures = [ "default" "std" ];
2050       };
2051       "wasm-bindgen" = rec {
2052         crateName = "wasm-bindgen";
2053         version = "0.2.79";
2054         edition = "2018";
2055         sha256 = "01kc4lj2vlf0ra2w63izrgdlv8p6f8p15086hhyqln6q4dsazw95";
2056         authors = [
2057           "The wasm-bindgen Developers"
2058         ];
2059         dependencies = [
2060           {
2061             name = "cfg-if";
2062             packageId = "cfg-if";
2063           }
2064           {
2065             name = "wasm-bindgen-macro";
2066             packageId = "wasm-bindgen-macro";
2067           }
2068         ];
2069         features = {
2070           "default" = [ "spans" "std" ];
2071           "enable-interning" = [ "std" ];
2072           "serde" = [ "dep:serde" ];
2073           "serde-serialize" = [ "serde" "serde_json" "std" ];
2074           "serde_json" = [ "dep:serde_json" ];
2075           "spans" = [ "wasm-bindgen-macro/spans" ];
2076           "strict-macro" = [ "wasm-bindgen-macro/strict-macro" ];
2077           "xxx_debug_only_print_generated_code" = [ "wasm-bindgen-macro/xxx_debug_only_print_generated_code" ];
2078         };
2079         resolvedDefaultFeatures = [ "default" "spans" "std" ];
2080       };
2081       "wasm-bindgen-backend" = rec {
2082         crateName = "wasm-bindgen-backend";
2083         version = "0.2.79";
2084         edition = "2018";
2085         sha256 = "1jpdrl5jj01961jxhmvj7v25ws928fyfj8ms7izifnhg0ggw08cb";
2086         authors = [
2087           "The wasm-bindgen Developers"
2088         ];
2089         dependencies = [
2090           {
2091             name = "bumpalo";
2092             packageId = "bumpalo";
2093           }
2094           {
2095             name = "lazy_static";
2096             packageId = "lazy_static";
2097           }
2098           {
2099             name = "log";
2100             packageId = "log";
2101           }
2102           {
2103             name = "proc-macro2";
2104             packageId = "proc-macro2";
2105           }
2106           {
2107             name = "quote";
2108             packageId = "quote";
2109           }
2110           {
2111             name = "syn";
2112             packageId = "syn";
2113             features = [ "full" ];
2114           }
2115           {
2116             name = "wasm-bindgen-shared";
2117             packageId = "wasm-bindgen-shared";
2118           }
2119         ];
2120         features = {
2121           "extra-traits" = [ "syn/extra-traits" ];
2122         };
2123         resolvedDefaultFeatures = [ "spans" ];
2124       };
2125       "wasm-bindgen-macro" = rec {
2126         crateName = "wasm-bindgen-macro";
2127         version = "0.2.79";
2128         edition = "2018";
2129         sha256 = "00gdh0dlf2r77mxwh08q0z01vz2z7mvrllmj4gjjx9a0kvb06hig";
2130         procMacro = true;
2131         authors = [
2132           "The wasm-bindgen Developers"
2133         ];
2134         dependencies = [
2135           {
2136             name = "quote";
2137             packageId = "quote";
2138           }
2139           {
2140             name = "wasm-bindgen-macro-support";
2141             packageId = "wasm-bindgen-macro-support";
2142           }
2143         ];
2144         features = {
2145           "spans" = [ "wasm-bindgen-macro-support/spans" ];
2146           "strict-macro" = [ "wasm-bindgen-macro-support/strict-macro" ];
2147         };
2148         resolvedDefaultFeatures = [ "spans" ];
2149       };
2150       "wasm-bindgen-macro-support" = rec {
2151         crateName = "wasm-bindgen-macro-support";
2152         version = "0.2.79";
2153         edition = "2018";
2154         sha256 = "1g1fjqvrkrf3j20z8nxsf60cypxg9dfvpbachl2b53908q6s7a5z";
2155         authors = [
2156           "The wasm-bindgen Developers"
2157         ];
2158         dependencies = [
2159           {
2160             name = "proc-macro2";
2161             packageId = "proc-macro2";
2162           }
2163           {
2164             name = "quote";
2165             packageId = "quote";
2166           }
2167           {
2168             name = "syn";
2169             packageId = "syn";
2170             features = [ "visit" "full" ];
2171           }
2172           {
2173             name = "wasm-bindgen-backend";
2174             packageId = "wasm-bindgen-backend";
2175           }
2176           {
2177             name = "wasm-bindgen-shared";
2178             packageId = "wasm-bindgen-shared";
2179           }
2180         ];
2181         features = {
2182           "extra-traits" = [ "syn/extra-traits" ];
2183           "spans" = [ "wasm-bindgen-backend/spans" ];
2184         };
2185         resolvedDefaultFeatures = [ "spans" ];
2186       };
2187       "wasm-bindgen-shared" = rec {
2188         crateName = "wasm-bindgen-shared";
2189         version = "0.2.79";
2190         edition = "2018";
2191         sha256 = "18h67l9b9jn06iw9r2p7bh9i0brh24lilcp4f26f4f24bh1qv59x";
2192         authors = [
2193           "The wasm-bindgen Developers"
2194         ];
2196       };
2197       "web-sys" = rec {
2198         crateName = "web-sys";
2199         version = "0.3.56";
2200         edition = "2018";
2201         sha256 = "1sxqmwq773ss5m6vz7z95fdm6bqlix0s2awsy0j5gllxy8cv6q60";
2202         authors = [
2203           "The wasm-bindgen Developers"
2204         ];
2205         dependencies = [
2206           {
2207             name = "js-sys";
2208             packageId = "js-sys";
2209           }
2210           {
2211             name = "wasm-bindgen";
2212             packageId = "wasm-bindgen";
2213           }
2214         ];
2215         features = {
2216           "AbortSignal" = [ "EventTarget" ];
2217           "AnalyserNode" = [ "AudioNode" "EventTarget" ];
2218           "Animation" = [ "EventTarget" ];
2219           "AnimationEvent" = [ "Event" ];
2220           "AnimationPlaybackEvent" = [ "Event" ];
2221           "Attr" = [ "EventTarget" "Node" ];
2222           "AudioBufferSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
2223           "AudioContext" = [ "BaseAudioContext" "EventTarget" ];
2224           "AudioDestinationNode" = [ "AudioNode" "EventTarget" ];
2225           "AudioNode" = [ "EventTarget" ];
2226           "AudioProcessingEvent" = [ "Event" ];
2227           "AudioScheduledSourceNode" = [ "AudioNode" "EventTarget" ];
2228           "AudioStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
2229           "AudioTrackList" = [ "EventTarget" ];
2230           "AudioWorklet" = [ "Worklet" ];
2231           "AudioWorkletGlobalScope" = [ "WorkletGlobalScope" ];
2232           "AudioWorkletNode" = [ "AudioNode" "EventTarget" ];
2233           "AuthenticatorAssertionResponse" = [ "AuthenticatorResponse" ];
2234           "AuthenticatorAttestationResponse" = [ "AuthenticatorResponse" ];
2235           "BaseAudioContext" = [ "EventTarget" ];
2236           "BatteryManager" = [ "EventTarget" ];
2237           "BeforeUnloadEvent" = [ "Event" ];
2238           "BiquadFilterNode" = [ "AudioNode" "EventTarget" ];
2239           "BlobEvent" = [ "Event" ];
2240           "Bluetooth" = [ "EventTarget" ];
2241           "BluetoothAdvertisingEvent" = [ "Event" ];
2242           "BluetoothDevice" = [ "EventTarget" ];
2243           "BluetoothPermissionResult" = [ "EventTarget" "PermissionStatus" ];
2244           "BluetoothRemoteGattCharacteristic" = [ "EventTarget" ];
2245           "BluetoothRemoteGattService" = [ "EventTarget" ];
2246           "BroadcastChannel" = [ "EventTarget" ];
2247           "CanvasCaptureMediaStream" = [ "EventTarget" "MediaStream" ];
2248           "CdataSection" = [ "CharacterData" "EventTarget" "Node" "Text" ];
2249           "ChannelMergerNode" = [ "AudioNode" "EventTarget" ];
2250           "ChannelSplitterNode" = [ "AudioNode" "EventTarget" ];
2251           "CharacterData" = [ "EventTarget" "Node" ];
2252           "ChromeWorker" = [ "EventTarget" "Worker" ];
2253           "Clipboard" = [ "EventTarget" ];
2254           "ClipboardEvent" = [ "Event" ];
2255           "CloseEvent" = [ "Event" ];
2256           "Comment" = [ "CharacterData" "EventTarget" "Node" ];
2257           "CompositionEvent" = [ "Event" "UiEvent" ];
2258           "ConstantSourceNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
2259           "ConvolverNode" = [ "AudioNode" "EventTarget" ];
2260           "CssAnimation" = [ "Animation" "EventTarget" ];
2261           "CssConditionRule" = [ "CssGroupingRule" "CssRule" ];
2262           "CssCounterStyleRule" = [ "CssRule" ];
2263           "CssFontFaceRule" = [ "CssRule" ];
2264           "CssFontFeatureValuesRule" = [ "CssRule" ];
2265           "CssGroupingRule" = [ "CssRule" ];
2266           "CssImportRule" = [ "CssRule" ];
2267           "CssKeyframeRule" = [ "CssRule" ];
2268           "CssKeyframesRule" = [ "CssRule" ];
2269           "CssMediaRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
2270           "CssNamespaceRule" = [ "CssRule" ];
2271           "CssPageRule" = [ "CssRule" ];
2272           "CssStyleRule" = [ "CssRule" ];
2273           "CssStyleSheet" = [ "StyleSheet" ];
2274           "CssSupportsRule" = [ "CssConditionRule" "CssGroupingRule" "CssRule" ];
2275           "CssTransition" = [ "Animation" "EventTarget" ];
2276           "CustomEvent" = [ "Event" ];
2277           "DedicatedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
2278           "DelayNode" = [ "AudioNode" "EventTarget" ];
2279           "DeviceLightEvent" = [ "Event" ];
2280           "DeviceMotionEvent" = [ "Event" ];
2281           "DeviceOrientationEvent" = [ "Event" ];
2282           "DeviceProximityEvent" = [ "Event" ];
2283           "Document" = [ "EventTarget" "Node" ];
2284           "DocumentFragment" = [ "EventTarget" "Node" ];
2285           "DocumentTimeline" = [ "AnimationTimeline" ];
2286           "DocumentType" = [ "EventTarget" "Node" ];
2287           "DomMatrix" = [ "DomMatrixReadOnly" ];
2288           "DomPoint" = [ "DomPointReadOnly" ];
2289           "DomRect" = [ "DomRectReadOnly" ];
2290           "DomRequest" = [ "EventTarget" ];
2291           "DragEvent" = [ "Event" "MouseEvent" "UiEvent" ];
2292           "DynamicsCompressorNode" = [ "AudioNode" "EventTarget" ];
2293           "Element" = [ "EventTarget" "Node" ];
2294           "ErrorEvent" = [ "Event" ];
2295           "EventSource" = [ "EventTarget" ];
2296           "ExtendableEvent" = [ "Event" ];
2297           "ExtendableMessageEvent" = [ "Event" "ExtendableEvent" ];
2298           "FetchEvent" = [ "Event" "ExtendableEvent" ];
2299           "FetchObserver" = [ "EventTarget" ];
2300           "File" = [ "Blob" ];
2301           "FileReader" = [ "EventTarget" ];
2302           "FileSystemDirectoryEntry" = [ "FileSystemEntry" ];
2303           "FileSystemFileEntry" = [ "FileSystemEntry" ];
2304           "FocusEvent" = [ "Event" "UiEvent" ];
2305           "FontFaceSet" = [ "EventTarget" ];
2306           "FontFaceSetLoadEvent" = [ "Event" ];
2307           "GainNode" = [ "AudioNode" "EventTarget" ];
2308           "GamepadAxisMoveEvent" = [ "Event" "GamepadEvent" ];
2309           "GamepadButtonEvent" = [ "Event" "GamepadEvent" ];
2310           "GamepadEvent" = [ "Event" ];
2311           "GpuDevice" = [ "EventTarget" ];
2312           "GpuUncapturedErrorEvent" = [ "Event" ];
2313           "HashChangeEvent" = [ "Event" ];
2314           "Hid" = [ "EventTarget" ];
2315           "HidConnectionEvent" = [ "Event" ];
2316           "HidDevice" = [ "EventTarget" ];
2317           "HidInputReportEvent" = [ "Event" ];
2318           "HtmlAnchorElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2319           "HtmlAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2320           "HtmlAudioElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
2321           "HtmlBaseElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2322           "HtmlBodyElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2323           "HtmlBrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2324           "HtmlButtonElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2325           "HtmlCanvasElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2326           "HtmlDListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2327           "HtmlDataElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2328           "HtmlDataListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2329           "HtmlDetailsElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2330           "HtmlDialogElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2331           "HtmlDirectoryElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2332           "HtmlDivElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2333           "HtmlDocument" = [ "Document" "EventTarget" "Node" ];
2334           "HtmlElement" = [ "Element" "EventTarget" "Node" ];
2335           "HtmlEmbedElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2336           "HtmlFieldSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2337           "HtmlFontElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2338           "HtmlFormControlsCollection" = [ "HtmlCollection" ];
2339           "HtmlFormElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2340           "HtmlFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2341           "HtmlFrameSetElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2342           "HtmlHeadElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2343           "HtmlHeadingElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2344           "HtmlHrElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2345           "HtmlHtmlElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2346           "HtmlIFrameElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2347           "HtmlImageElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2348           "HtmlInputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2349           "HtmlLabelElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2350           "HtmlLegendElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2351           "HtmlLiElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2352           "HtmlLinkElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2353           "HtmlMapElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2354           "HtmlMediaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2355           "HtmlMenuElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2356           "HtmlMenuItemElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2357           "HtmlMetaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2358           "HtmlMeterElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2359           "HtmlModElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2360           "HtmlOListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2361           "HtmlObjectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2362           "HtmlOptGroupElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2363           "HtmlOptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2364           "HtmlOptionsCollection" = [ "HtmlCollection" ];
2365           "HtmlOutputElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2366           "HtmlParagraphElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2367           "HtmlParamElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2368           "HtmlPictureElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2369           "HtmlPreElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2370           "HtmlProgressElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2371           "HtmlQuoteElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2372           "HtmlScriptElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2373           "HtmlSelectElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2374           "HtmlSlotElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2375           "HtmlSourceElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2376           "HtmlSpanElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2377           "HtmlStyleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2378           "HtmlTableCaptionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2379           "HtmlTableCellElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2380           "HtmlTableColElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2381           "HtmlTableElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2382           "HtmlTableRowElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2383           "HtmlTableSectionElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2384           "HtmlTemplateElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2385           "HtmlTextAreaElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2386           "HtmlTimeElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2387           "HtmlTitleElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2388           "HtmlTrackElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2389           "HtmlUListElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2390           "HtmlUnknownElement" = [ "Element" "EventTarget" "HtmlElement" "Node" ];
2391           "HtmlVideoElement" = [ "Element" "EventTarget" "HtmlElement" "HtmlMediaElement" "Node" ];
2392           "IdbCursorWithValue" = [ "IdbCursor" ];
2393           "IdbDatabase" = [ "EventTarget" ];
2394           "IdbFileHandle" = [ "EventTarget" ];
2395           "IdbFileRequest" = [ "DomRequest" "EventTarget" ];
2396           "IdbLocaleAwareKeyRange" = [ "IdbKeyRange" ];
2397           "IdbMutableFile" = [ "EventTarget" ];
2398           "IdbOpenDbRequest" = [ "EventTarget" "IdbRequest" ];
2399           "IdbRequest" = [ "EventTarget" ];
2400           "IdbTransaction" = [ "EventTarget" ];
2401           "IdbVersionChangeEvent" = [ "Event" ];
2402           "IirFilterNode" = [ "AudioNode" "EventTarget" ];
2403           "ImageCaptureErrorEvent" = [ "Event" ];
2404           "InputEvent" = [ "Event" "UiEvent" ];
2405           "KeyboardEvent" = [ "Event" "UiEvent" ];
2406           "KeyframeEffect" = [ "AnimationEffect" ];
2407           "LocalMediaStream" = [ "EventTarget" "MediaStream" ];
2408           "MediaDevices" = [ "EventTarget" ];
2409           "MediaElementAudioSourceNode" = [ "AudioNode" "EventTarget" ];
2410           "MediaEncryptedEvent" = [ "Event" ];
2411           "MediaKeyError" = [ "Event" ];
2412           "MediaKeyMessageEvent" = [ "Event" ];
2413           "MediaKeySession" = [ "EventTarget" ];
2414           "MediaQueryList" = [ "EventTarget" ];
2415           "MediaQueryListEvent" = [ "Event" ];
2416           "MediaRecorder" = [ "EventTarget" ];
2417           "MediaRecorderErrorEvent" = [ "Event" ];
2418           "MediaSource" = [ "EventTarget" ];
2419           "MediaStream" = [ "EventTarget" ];
2420           "MediaStreamAudioDestinationNode" = [ "AudioNode" "EventTarget" ];
2421           "MediaStreamAudioSourceNode" = [ "AudioNode" "EventTarget" ];
2422           "MediaStreamEvent" = [ "Event" ];
2423           "MediaStreamTrack" = [ "EventTarget" ];
2424           "MediaStreamTrackEvent" = [ "Event" ];
2425           "MessageEvent" = [ "Event" ];
2426           "MessagePort" = [ "EventTarget" ];
2427           "MidiAccess" = [ "EventTarget" ];
2428           "MidiConnectionEvent" = [ "Event" ];
2429           "MidiInput" = [ "EventTarget" "MidiPort" ];
2430           "MidiMessageEvent" = [ "Event" ];
2431           "MidiOutput" = [ "EventTarget" "MidiPort" ];
2432           "MidiPort" = [ "EventTarget" ];
2433           "MouseEvent" = [ "Event" "UiEvent" ];
2434           "MouseScrollEvent" = [ "Event" "MouseEvent" "UiEvent" ];
2435           "MutationEvent" = [ "Event" ];
2436           "NetworkInformation" = [ "EventTarget" ];
2437           "Node" = [ "EventTarget" ];
2438           "Notification" = [ "EventTarget" ];
2439           "NotificationEvent" = [ "Event" "ExtendableEvent" ];
2440           "OfflineAudioCompletionEvent" = [ "Event" ];
2441           "OfflineAudioContext" = [ "BaseAudioContext" "EventTarget" ];
2442           "OfflineResourceList" = [ "EventTarget" ];
2443           "OffscreenCanvas" = [ "EventTarget" ];
2444           "OscillatorNode" = [ "AudioNode" "AudioScheduledSourceNode" "EventTarget" ];
2445           "PageTransitionEvent" = [ "Event" ];
2446           "PaintWorkletGlobalScope" = [ "WorkletGlobalScope" ];
2447           "PannerNode" = [ "AudioNode" "EventTarget" ];
2448           "PaymentMethodChangeEvent" = [ "Event" "PaymentRequestUpdateEvent" ];
2449           "PaymentRequestUpdateEvent" = [ "Event" ];
2450           "Performance" = [ "EventTarget" ];
2451           "PerformanceMark" = [ "PerformanceEntry" ];
2452           "PerformanceMeasure" = [ "PerformanceEntry" ];
2453           "PerformanceNavigationTiming" = [ "PerformanceEntry" "PerformanceResourceTiming" ];
2454           "PerformanceResourceTiming" = [ "PerformanceEntry" ];
2455           "PermissionStatus" = [ "EventTarget" ];
2456           "PointerEvent" = [ "Event" "MouseEvent" "UiEvent" ];
2457           "PopStateEvent" = [ "Event" ];
2458           "PopupBlockedEvent" = [ "Event" ];
2459           "PresentationAvailability" = [ "EventTarget" ];
2460           "PresentationConnection" = [ "EventTarget" ];
2461           "PresentationConnectionAvailableEvent" = [ "Event" ];
2462           "PresentationConnectionCloseEvent" = [ "Event" ];
2463           "PresentationConnectionList" = [ "EventTarget" ];
2464           "PresentationRequest" = [ "EventTarget" ];
2465           "ProcessingInstruction" = [ "CharacterData" "EventTarget" "Node" ];
2466           "ProgressEvent" = [ "Event" ];
2467           "PromiseRejectionEvent" = [ "Event" ];
2468           "PublicKeyCredential" = [ "Credential" ];
2469           "PushEvent" = [ "Event" "ExtendableEvent" ];
2470           "RadioNodeList" = [ "NodeList" ];
2471           "RtcDataChannel" = [ "EventTarget" ];
2472           "RtcDataChannelEvent" = [ "Event" ];
2473           "RtcPeerConnection" = [ "EventTarget" ];
2474           "RtcPeerConnectionIceEvent" = [ "Event" ];
2475           "RtcTrackEvent" = [ "Event" ];
2476           "RtcdtmfSender" = [ "EventTarget" ];
2477           "RtcdtmfToneChangeEvent" = [ "Event" ];
2478           "Screen" = [ "EventTarget" ];
2479           "ScreenOrientation" = [ "EventTarget" ];
2480           "ScriptProcessorNode" = [ "AudioNode" "EventTarget" ];
2481           "ScrollAreaEvent" = [ "Event" "UiEvent" ];
2482           "SecurityPolicyViolationEvent" = [ "Event" ];
2483           "ServiceWorker" = [ "EventTarget" ];
2484           "ServiceWorkerContainer" = [ "EventTarget" ];
2485           "ServiceWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
2486           "ServiceWorkerRegistration" = [ "EventTarget" ];
2487           "ShadowRoot" = [ "DocumentFragment" "EventTarget" "Node" ];
2488           "SharedWorker" = [ "EventTarget" ];
2489           "SharedWorkerGlobalScope" = [ "EventTarget" "WorkerGlobalScope" ];
2490           "SourceBuffer" = [ "EventTarget" ];
2491           "SourceBufferList" = [ "EventTarget" ];
2492           "SpeechRecognition" = [ "EventTarget" ];
2493           "SpeechRecognitionError" = [ "Event" ];
2494           "SpeechRecognitionEvent" = [ "Event" ];
2495           "SpeechSynthesis" = [ "EventTarget" ];
2496           "SpeechSynthesisErrorEvent" = [ "Event" "SpeechSynthesisEvent" ];
2497           "SpeechSynthesisEvent" = [ "Event" ];
2498           "SpeechSynthesisUtterance" = [ "EventTarget" ];
2499           "StereoPannerNode" = [ "AudioNode" "EventTarget" ];
2500           "StorageEvent" = [ "Event" ];
2501           "SvgAnimateElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
2502           "SvgAnimateMotionElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
2503           "SvgAnimateTransformElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
2504           "SvgAnimationElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2505           "SvgCircleElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2506           "SvgClipPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2507           "SvgComponentTransferFunctionElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2508           "SvgDefsElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2509           "SvgDescElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2510           "SvgElement" = [ "Element" "EventTarget" "Node" ];
2511           "SvgEllipseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2512           "SvgFilterElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2513           "SvgForeignObjectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2514           "SvgGeometryElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2515           "SvgGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2516           "SvgGraphicsElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2517           "SvgImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2518           "SvgLineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2519           "SvgLinearGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
2520           "SvgMarkerElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2521           "SvgMaskElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2522           "SvgMetadataElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2523           "SvgPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2524           "SvgPathSegArcAbs" = [ "SvgPathSeg" ];
2525           "SvgPathSegArcRel" = [ "SvgPathSeg" ];
2526           "SvgPathSegClosePath" = [ "SvgPathSeg" ];
2527           "SvgPathSegCurvetoCubicAbs" = [ "SvgPathSeg" ];
2528           "SvgPathSegCurvetoCubicRel" = [ "SvgPathSeg" ];
2529           "SvgPathSegCurvetoCubicSmoothAbs" = [ "SvgPathSeg" ];
2530           "SvgPathSegCurvetoCubicSmoothRel" = [ "SvgPathSeg" ];
2531           "SvgPathSegCurvetoQuadraticAbs" = [ "SvgPathSeg" ];
2532           "SvgPathSegCurvetoQuadraticRel" = [ "SvgPathSeg" ];
2533           "SvgPathSegCurvetoQuadraticSmoothAbs" = [ "SvgPathSeg" ];
2534           "SvgPathSegCurvetoQuadraticSmoothRel" = [ "SvgPathSeg" ];
2535           "SvgPathSegLinetoAbs" = [ "SvgPathSeg" ];
2536           "SvgPathSegLinetoHorizontalAbs" = [ "SvgPathSeg" ];
2537           "SvgPathSegLinetoHorizontalRel" = [ "SvgPathSeg" ];
2538           "SvgPathSegLinetoRel" = [ "SvgPathSeg" ];
2539           "SvgPathSegLinetoVerticalAbs" = [ "SvgPathSeg" ];
2540           "SvgPathSegLinetoVerticalRel" = [ "SvgPathSeg" ];
2541           "SvgPathSegMovetoAbs" = [ "SvgPathSeg" ];
2542           "SvgPathSegMovetoRel" = [ "SvgPathSeg" ];
2543           "SvgPatternElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2544           "SvgPolygonElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2545           "SvgPolylineElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2546           "SvgRadialGradientElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGradientElement" ];
2547           "SvgRectElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGeometryElement" "SvgGraphicsElement" ];
2548           "SvgScriptElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2549           "SvgSetElement" = [ "Element" "EventTarget" "Node" "SvgAnimationElement" "SvgElement" ];
2550           "SvgStopElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2551           "SvgStyleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2552           "SvgSwitchElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2553           "SvgSymbolElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2554           "SvgTextContentElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2555           "SvgTextElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
2556           "SvgTextPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
2557           "SvgTextPositioningElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" ];
2558           "SvgTitleElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2559           "SvgUseElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2560           "SvgViewElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2561           "SvgaElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2562           "SvgfeBlendElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2563           "SvgfeColorMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2564           "SvgfeComponentTransferElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2565           "SvgfeCompositeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2566           "SvgfeConvolveMatrixElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2567           "SvgfeDiffuseLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2568           "SvgfeDisplacementMapElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2569           "SvgfeDistantLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2570           "SvgfeDropShadowElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2571           "SvgfeFloodElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2572           "SvgfeFuncAElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
2573           "SvgfeFuncBElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
2574           "SvgfeFuncGElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
2575           "SvgfeFuncRElement" = [ "Element" "EventTarget" "Node" "SvgComponentTransferFunctionElement" "SvgElement" ];
2576           "SvgfeGaussianBlurElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2577           "SvgfeImageElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2578           "SvgfeMergeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2579           "SvgfeMergeNodeElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2580           "SvgfeMorphologyElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2581           "SvgfeOffsetElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2582           "SvgfePointLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2583           "SvgfeSpecularLightingElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2584           "SvgfeSpotLightElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2585           "SvgfeTileElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2586           "SvgfeTurbulenceElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2587           "SvggElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2588           "SvgmPathElement" = [ "Element" "EventTarget" "Node" "SvgElement" ];
2589           "SvgsvgElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" ];
2590           "SvgtSpanElement" = [ "Element" "EventTarget" "Node" "SvgElement" "SvgGraphicsElement" "SvgTextContentElement" "SvgTextPositioningElement" ];
2591           "TcpServerSocket" = [ "EventTarget" ];
2592           "TcpServerSocketEvent" = [ "Event" ];
2593           "TcpSocket" = [ "EventTarget" ];
2594           "TcpSocketErrorEvent" = [ "Event" ];
2595           "TcpSocketEvent" = [ "Event" ];
2596           "Text" = [ "CharacterData" "EventTarget" "Node" ];
2597           "TextTrack" = [ "EventTarget" ];
2598           "TextTrackCue" = [ "EventTarget" ];
2599           "TextTrackList" = [ "EventTarget" ];
2600           "TimeEvent" = [ "Event" ];
2601           "TouchEvent" = [ "Event" "UiEvent" ];
2602           "TrackEvent" = [ "Event" ];
2603           "TransitionEvent" = [ "Event" ];
2604           "UiEvent" = [ "Event" ];
2605           "Usb" = [ "EventTarget" ];
2606           "UsbConnectionEvent" = [ "Event" ];
2607           "UsbPermissionResult" = [ "EventTarget" "PermissionStatus" ];
2608           "UserProximityEvent" = [ "Event" ];
2609           "ValueEvent" = [ "Event" ];
2610           "VideoStreamTrack" = [ "EventTarget" "MediaStreamTrack" ];
2611           "VideoTrackList" = [ "EventTarget" ];
2612           "VrDisplay" = [ "EventTarget" ];
2613           "VttCue" = [ "EventTarget" "TextTrackCue" ];
2614           "WakeLockSentinel" = [ "EventTarget" ];
2615           "WaveShaperNode" = [ "AudioNode" "EventTarget" ];
2616           "WebGlContextEvent" = [ "Event" ];
2617           "WebKitCssMatrix" = [ "DomMatrix" "DomMatrixReadOnly" ];
2618           "WebSocket" = [ "EventTarget" ];
2619           "WheelEvent" = [ "Event" "MouseEvent" "UiEvent" ];
2620           "Window" = [ "EventTarget" ];
2621           "WindowClient" = [ "Client" ];
2622           "Worker" = [ "EventTarget" ];
2623           "WorkerDebuggerGlobalScope" = [ "EventTarget" ];
2624           "WorkerGlobalScope" = [ "EventTarget" ];
2625           "XmlDocument" = [ "Document" "EventTarget" "Node" ];
2626           "XmlHttpRequest" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
2627           "XmlHttpRequestEventTarget" = [ "EventTarget" ];
2628           "XmlHttpRequestUpload" = [ "EventTarget" "XmlHttpRequestEventTarget" ];
2629           "Xr" = [ "EventTarget" ];
2630           "XrBoundedReferenceSpace" = [ "EventTarget" "XrReferenceSpace" "XrSpace" ];
2631           "XrInputSourceEvent" = [ "Event" ];
2632           "XrInputSourcesChangeEvent" = [ "Event" ];
2633           "XrReferenceSpace" = [ "EventTarget" "XrSpace" ];
2634           "XrReferenceSpaceEvent" = [ "Event" ];
2635           "XrSession" = [ "EventTarget" ];
2636           "XrSessionEvent" = [ "Event" ];
2637           "XrSpace" = [ "EventTarget" ];
2638           "XrViewerPose" = [ "XrPose" ];
2639         };
2640         resolvedDefaultFeatures = [ "Crypto" "EventTarget" "Window" ];
2641       };
2642       "webpki" = rec {
2643         crateName = "webpki";
2644         version = "0.22.0";
2645         edition = "2018";
2646         sha256 = "1gd1gxip5kgdwmrvhj5gjxij2mgg2mavq1ych4q1h272ja0xg5gh";
2647         authors = [
2648           "Brian Smith <brian@briansmith.org>"
2649         ];
2650         dependencies = [
2651           {
2652             name = "ring";
2653             packageId = "ring";
2654             usesDefaultFeatures = false;
2655           }
2656           {
2657             name = "untrusted";
2658             packageId = "untrusted";
2659           }
2660         ];
2661         features = {
2662           "alloc" = [ "ring/alloc" ];
2663           "std" = [ "alloc" ];
2664         };
2665         resolvedDefaultFeatures = [ "alloc" "std" ];
2666       };
2667       "winapi" = rec {
2668         crateName = "winapi";
2669         version = "0.3.9";
2670         edition = "2015";
2671         sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
2672         authors = [
2673           "Peter Atashian <retep998@gmail.com>"
2674         ];
2675         dependencies = [
2676           {
2677             name = "winapi-i686-pc-windows-gnu";
2678             packageId = "winapi-i686-pc-windows-gnu";
2679             target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu");
2680           }
2681           {
2682             name = "winapi-x86_64-pc-windows-gnu";
2683             packageId = "winapi-x86_64-pc-windows-gnu";
2684             target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu");
2685           }
2686         ];
2687         features = {
2688           "debug" = [ "impl-debug" ];
2689         };
2690         resolvedDefaultFeatures = [ "ntsecapi" "wtypesbase" ];
2691       };
2692       "winapi-i686-pc-windows-gnu" = rec {
2693         crateName = "winapi-i686-pc-windows-gnu";
2694         version = "0.4.0";
2695         edition = "2015";
2696         sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
2697         authors = [
2698           "Peter Atashian <retep998@gmail.com>"
2699         ];
2701       };
2702       "winapi-x86_64-pc-windows-gnu" = rec {
2703         crateName = "winapi-x86_64-pc-windows-gnu";
2704         version = "0.4.0";
2705         edition = "2015";
2706         sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki";
2707         authors = [
2708           "Peter Atashian <retep998@gmail.com>"
2709         ];
2711       };
2712       "x509-parser" = rec {
2713         crateName = "x509-parser";
2714         version = "0.13.0";
2715         edition = "2018";
2716         sha256 = "0f3fqbv92q3a3s51md94sw3vgzs934agl4ii5a6ym364mkdlpwg5";
2717         authors = [
2718           "Pierre Chifflier <chifflier@wzdftpd.net>"
2719         ];
2720         dependencies = [
2721           {
2722             name = "asn1-rs";
2723             packageId = "asn1-rs";
2724             features = [ "datetime" ];
2725           }
2726           {
2727             name = "base64";
2728             packageId = "base64";
2729           }
2730           {
2731             name = "data-encoding";
2732             packageId = "data-encoding";
2733           }
2734           {
2735             name = "der-parser";
2736             packageId = "der-parser";
2737             features = [ "bigint" ];
2738           }
2739           {
2740             name = "lazy_static";
2741             packageId = "lazy_static";
2742           }
2743           {
2744             name = "nom";
2745             packageId = "nom";
2746           }
2747           {
2748             name = "oid-registry";
2749             packageId = "oid-registry";
2750             features = [ "crypto" "x509" ];
2751           }
2752           {
2753             name = "ring";
2754             packageId = "ring";
2755             optional = true;
2756           }
2757           {
2758             name = "rusticata-macros";
2759             packageId = "rusticata-macros";
2760           }
2761           {
2762             name = "thiserror";
2763             packageId = "thiserror";
2764           }
2765           {
2766             name = "time";
2767             packageId = "time";
2768             features = [ "formatting" ];
2769           }
2770         ];
2771         features = {
2772           "ring" = [ "dep:ring" ];
2773           "verify" = [ "ring" ];
2774         };
2775         resolvedDefaultFeatures = [ "default" "ring" "verify" ];
2776       };
2777       "yasna" = rec {
2778         crateName = "yasna";
2779         version = "0.5.0";
2780         edition = "2018";
2781         sha256 = "0k1gk11hq4rwlppv9f50bz8bnmgr73r66idpp7rybly96si38v9l";
2782         authors = [
2783           "Masaki Hara <ackie.h.gmai@gmail.com>"
2784         ];
2785         dependencies = [
2786           {
2787             name = "time";
2788             packageId = "time";
2789             optional = true;
2790             usesDefaultFeatures = false;
2791             features = [ "std" ];
2792           }
2793         ];
2794         features = {
2795           "bit-vec" = [ "dep:bit-vec" ];
2796           "num-bigint" = [ "dep:num-bigint" ];
2797           "time" = [ "dep:time" ];
2798         };
2799         resolvedDefaultFeatures = [ "default" "std" "time" ];
2800       };
2801       "zeroize" = rec {
2802         crateName = "zeroize";
2803         version = "1.4.3";
2804         edition = "2018";
2805         sha256 = "068nvl3n5hk6lfn5y24grf2c7anzzqfzjjccscq3md7rqp79v3fn";
2806         authors = [
2807           "The RustCrypto Project Developers"
2808         ];
2809         dependencies = [
2810           {
2811             name = "zeroize_derive";
2812             packageId = "zeroize_derive";
2813             optional = true;
2814           }
2815         ];
2816         features = {
2817           "default" = [ "alloc" ];
2818           "zeroize_derive" = [ "dep:zeroize_derive" ];
2819         };
2820         resolvedDefaultFeatures = [ "alloc" "default" "zeroize_derive" ];
2821       };
2822       "zeroize_derive" = rec {
2823         crateName = "zeroize_derive";
2824         version = "1.3.1";
2825         edition = "2018";
2826         sha256 = "1nzdqyryjnqcrqz0vhddpkd8sybhn0bd8rbd6l33rdhhxwzz3s41";
2827         procMacro = true;
2828         authors = [
2829           "The RustCrypto Project Developers"
2830         ];
2831         dependencies = [
2832           {
2833             name = "proc-macro2";
2834             packageId = "proc-macro2";
2835           }
2836           {
2837             name = "quote";
2838             packageId = "quote";
2839           }
2840           {
2841             name = "syn";
2842             packageId = "syn";
2843           }
2844           {
2845             name = "synstructure";
2846             packageId = "synstructure";
2847           }
2848         ];
2850       };
2851     };
2853     #
2854 # crate2nix/default.nix (excerpt start)
2857   /* Target (platform) data for conditional dependencies.
2858     This corresponds roughly to what buildRustCrate is setting.
2859   */
2860   defaultTarget = {
2861     unix = true;
2862     windows = false;
2863     fuchsia = true;
2864     test = false;
2866     # This doesn't appear to be officially documented anywhere yet.
2867     # See https://github.com/rust-lang-nursery/rust-forge/issues/101.
2868     os =
2869       if stdenv.hostPlatform.isDarwin
2870       then "macos"
2871       else stdenv.hostPlatform.parsed.kernel.name;
2872     arch = stdenv.hostPlatform.parsed.cpu.name;
2873     family = "unix";
2874     env = "gnu";
2875     endian =
2876       if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian"
2877       then "little" else "big";
2878     pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits;
2879     vendor = stdenv.hostPlatform.parsed.vendor.name;
2880     debug_assertions = false;
2881   };
2883   /* Filters common temp files and build files. */
2884   # TODO(pkolloch): Substitute with gitignore filter
2885   sourceFilter = name: type:
2886     let
2887       baseName = builtins.baseNameOf (builtins.toString name);
2888     in
2889       ! (
2890         # Filter out git
2891         baseName == ".gitignore"
2892         || (type == "directory" && baseName == ".git")
2894         # Filter out build results
2895         || (
2896           type == "directory" && (
2897             baseName == "target"
2898             || baseName == "_site"
2899             || baseName == ".sass-cache"
2900             || baseName == ".jekyll-metadata"
2901             || baseName == "build-artifacts"
2902           )
2903         )
2905         # Filter out nix-build result symlinks
2906         || (
2907           type == "symlink" && lib.hasPrefix "result" baseName
2908         )
2910         # Filter out IDE config
2911         || (
2912           type == "directory" && (
2913             baseName == ".idea" || baseName == ".vscode"
2914           )
2915         ) || lib.hasSuffix ".iml" baseName
2917         # Filter out nix build files
2918         || baseName == "Cargo.nix"
2920         # Filter out editor backup / swap files.
2921         || lib.hasSuffix "~" baseName
2922         || builtins.match "^\\.sw[a-z]$$" baseName != null
2923         || builtins.match "^\\..*\\.sw[a-z]$$" baseName != null
2924         || lib.hasSuffix ".tmp" baseName
2925         || lib.hasSuffix ".bak" baseName
2926         || baseName == "tests.nix"
2927       );
2929   /* Returns a crate which depends on successful test execution
2930     of crate given as the second argument.
2932     testCrateFlags: list of flags to pass to the test executable
2933     testInputs: list of packages that should be available during test execution
2934   */
2935   crateWithTest = { crate, testCrate, testCrateFlags, testInputs, testPreRun, testPostRun }:
2936     assert builtins.typeOf testCrateFlags == "list";
2937     assert builtins.typeOf testInputs == "list";
2938     assert builtins.typeOf testPreRun == "string";
2939     assert builtins.typeOf testPostRun == "string";
2940     let
2941       # override the `crate` so that it will build and execute tests instead of
2942       # building the actual lib and bin targets We just have to pass `--test`
2943       # to rustc and it will do the right thing.  We execute the tests and copy
2944       # their log and the test executables to $out for later inspection.
2945       test =
2946         let
2947           drv = testCrate.override
2948             (
2949               _: {
2950                 buildTests = true;
2951               }
2952             );
2953           # If the user hasn't set any pre/post commands, we don't want to
2954           # insert empty lines. This means that any existing users of crate2nix
2955           # don't get a spurious rebuild unless they set these explicitly.
2956           testCommand = pkgs.lib.concatStringsSep "\n"
2957             (pkgs.lib.filter (s: s != "") [
2958               testPreRun
2959               "$f $testCrateFlags 2>&1 | tee -a $out"
2960               testPostRun
2961             ]);
2962         in
2963         pkgs.runCommand "run-tests-${testCrate.name}"
2964           {
2965             inherit testCrateFlags;
2966             buildInputs = testInputs;
2967           } ''
2968           set -ex
2970           export RUST_BACKTRACE=1
2972           # recreate a file hierarchy as when running tests with cargo
2974           # the source for test data
2975           ${pkgs.xorg.lndir}/bin/lndir ${crate.src}
2977           # build outputs
2978           testRoot=target/debug
2979           mkdir -p $testRoot
2981           # executables of the crate
2982           # we copy to prevent std::env::current_exe() to resolve to a store location
2983           for i in ${crate}/bin/*; do
2984             cp "$i" "$testRoot"
2985           done
2986           chmod +w -R .
2988           # test harness executables are suffixed with a hash, like cargo does
2989           # this allows to prevent name collision with the main
2990           # executables of the crate
2991           hash=$(basename $out)
2992           for file in ${drv}/tests/*; do
2993             f=$testRoot/$(basename $file)-$hash
2994             cp $file $f
2995             ${testCommand}
2996           done
2997         '';
2998     in
2999     pkgs.runCommand "${crate.name}-linked"
3000       {
3001         inherit (crate) outputs crateName;
3002         passthru = (crate.passthru or { }) // {
3003           inherit test;
3004         };
3005       } ''
3006       echo tested by ${test}
3007       ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs}
3008     '';
3010   /* A restricted overridable version of builtRustCratesWithFeatures. */
3011   buildRustCrateWithFeatures =
3012     { packageId
3013     , features ? rootFeatures
3014     , crateOverrides ? defaultCrateOverrides
3015     , buildRustCrateForPkgsFunc ? null
3016     , runTests ? false
3017     , testCrateFlags ? [ ]
3018     , testInputs ? [ ]
3019       # Any command to run immediatelly before a test is executed.
3020     , testPreRun ? ""
3021       # Any command run immediatelly after a test is executed.
3022     , testPostRun ? ""
3023     }:
3024     lib.makeOverridable
3025       (
3026         { features
3027         , crateOverrides
3028         , runTests
3029         , testCrateFlags
3030         , testInputs
3031         , testPreRun
3032         , testPostRun
3033         }:
3034         let
3035           buildRustCrateForPkgsFuncOverriden =
3036             if buildRustCrateForPkgsFunc != null
3037             then buildRustCrateForPkgsFunc
3038             else
3039               (
3040                 if crateOverrides == pkgs.defaultCrateOverrides
3041                 then buildRustCrateForPkgs
3042                 else
3043                   pkgs: (buildRustCrateForPkgs pkgs).override {
3044                     defaultCrateOverrides = crateOverrides;
3045                   }
3046               );
3047           builtRustCrates = builtRustCratesWithFeatures {
3048             inherit packageId features;
3049             buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
3050             runTests = false;
3051           };
3052           builtTestRustCrates = builtRustCratesWithFeatures {
3053             inherit packageId features;
3054             buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
3055             runTests = true;
3056           };
3057           drv = builtRustCrates.crates.${packageId};
3058           testDrv = builtTestRustCrates.crates.${packageId};
3059           derivation =
3060             if runTests then
3061               crateWithTest
3062                 {
3063                   crate = drv;
3064                   testCrate = testDrv;
3065                   inherit testCrateFlags testInputs testPreRun testPostRun;
3066                 }
3067             else drv;
3068         in
3069         derivation
3070       )
3071       { inherit features crateOverrides runTests testCrateFlags testInputs testPreRun testPostRun; };
3073   /* Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc
3074     for the corresponding crate.
3075   */
3076   builtRustCratesWithFeatures =
3077     { packageId
3078     , features
3079     , crateConfigs ? crates
3080     , buildRustCrateForPkgsFunc
3081     , runTests
3082     , target ? defaultTarget
3083     } @ args:
3084       assert (builtins.isAttrs crateConfigs);
3085       assert (builtins.isString packageId);
3086       assert (builtins.isList features);
3087       assert (builtins.isAttrs target);
3088       assert (builtins.isBool runTests);
3089       let
3090         rootPackageId = packageId;
3091         mergedFeatures = mergePackageFeatures
3092           (
3093             args // {
3094               inherit rootPackageId;
3095               target = target // { test = runTests; };
3096             }
3097           );
3098         # Memoize built packages so that reappearing packages are only built once.
3099         builtByPackageIdByPkgs = mkBuiltByPackageIdByPkgs pkgs;
3100         mkBuiltByPackageIdByPkgs = pkgs:
3101           let
3102             self = {
3103               crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;
3104               build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
3105             };
3106           in
3107           self;
3108         buildByPackageIdForPkgsImpl = self: pkgs: packageId:
3109           let
3110             features = mergedFeatures."${packageId}" or [ ];
3111             crateConfig' = crateConfigs."${packageId}";
3112             crateConfig =
3113               builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ];
3114             devDependencies =
3115               lib.optionals
3116                 (runTests && packageId == rootPackageId)
3117                 (crateConfig'.devDependencies or [ ]);
3118             dependencies =
3119               dependencyDerivations {
3120                 inherit features target;
3121                 buildByPackageId = depPackageId:
3122                   # proc_macro crates must be compiled for the build architecture
3123                   if crateConfigs.${depPackageId}.procMacro or false
3124                   then self.build.crates.${depPackageId}
3125                   else self.crates.${depPackageId};
3126                 dependencies =
3127                   (crateConfig.dependencies or [ ])
3128                   ++ devDependencies;
3129               };
3130             buildDependencies =
3131               dependencyDerivations {
3132                 inherit features target;
3133                 buildByPackageId = depPackageId:
3134                   self.build.crates.${depPackageId};
3135                 dependencies = crateConfig.buildDependencies or [ ];
3136               };
3137             filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies {
3138               inherit dependencies features target;
3139             };
3140             dependenciesWithRenames =
3141               lib.filter (d: d ? "rename")
3142                 (
3143                   filterEnabledDependenciesForThis
3144                     (
3145                       (crateConfig.buildDependencies or [ ])
3146                       ++ (crateConfig.dependencies or [ ])
3147                       ++ devDependencies
3148                     )
3149                 );
3150             # Crate renames have the form:
3151             #
3152             # {
3153             #    crate_name = [
3154             #       { version = "1.2.3"; rename = "crate_name01"; }
3155             #    ];
3156             #    # ...
3157             # }
3158             crateRenames =
3159               let
3160                 grouped =
3161                   lib.groupBy
3162                     (dependency: dependency.name)
3163                     dependenciesWithRenames;
3164                 versionAndRename = dep:
3165                   let
3166                     package = crateConfigs."${dep.packageId}";
3167                   in
3168                   { inherit (dep) rename; version = package.version; };
3169               in
3170               lib.mapAttrs (name: choices: builtins.map versionAndRename choices) grouped;
3171           in
3172           buildRustCrateForPkgsFunc pkgs
3173             (
3174               crateConfig // {
3175                 src = crateConfig.src or (
3176                   pkgs.fetchurl rec {
3177                     name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz";
3178                     # https://www.pietroalbini.org/blog/downloading-crates-io/
3179                     # Not rate-limited, CDN URL.
3180                     url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate";
3181                     sha256 =
3182                       assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}");
3183                       crateConfig.sha256;
3184                   }
3185                 );
3186                 extraRustcOpts = lib.lists.optional (targetFeatures != [ ]) "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}";
3187                 inherit features dependencies buildDependencies crateRenames release;
3188               }
3189             );
3190       in
3191       builtByPackageIdByPkgs;
3193   /* Returns the actual derivations for the given dependencies. */
3194   dependencyDerivations =
3195     { buildByPackageId
3196     , features
3197     , dependencies
3198     , target
3199     }:
3200       assert (builtins.isList features);
3201       assert (builtins.isList dependencies);
3202       assert (builtins.isAttrs target);
3203       let
3204         enabledDependencies = filterEnabledDependencies {
3205           inherit dependencies features target;
3206         };
3207         depDerivation = dependency: buildByPackageId dependency.packageId;
3208       in
3209       map depDerivation enabledDependencies;
3211   /* Returns a sanitized version of val with all values substituted that cannot
3212     be serialized as JSON.
3213   */
3214   sanitizeForJson = val:
3215     if builtins.isAttrs val
3216     then lib.mapAttrs (n: v: sanitizeForJson v) val
3217     else if builtins.isList val
3218     then builtins.map sanitizeForJson val
3219     else if builtins.isFunction val
3220     then "function"
3221     else val;
3223   /* Returns various tools to debug a crate. */
3224   debugCrate = { packageId, target ? defaultTarget }:
3225     assert (builtins.isString packageId);
3226     let
3227       debug = rec {
3228         # The built tree as passed to buildRustCrate.
3229         buildTree = buildRustCrateWithFeatures {
3230           buildRustCrateForPkgsFunc = _: lib.id;
3231           inherit packageId;
3232         };
3233         sanitizedBuildTree = sanitizeForJson buildTree;
3234         dependencyTree = sanitizeForJson
3235           (
3236             buildRustCrateWithFeatures {
3237               buildRustCrateForPkgsFunc = _: crate: {
3238                 "01_crateName" = crate.crateName or false;
3239                 "02_features" = crate.features or [ ];
3240                 "03_dependencies" = crate.dependencies or [ ];
3241               };
3242               inherit packageId;
3243             }
3244           );
3245         mergedPackageFeatures = mergePackageFeatures {
3246           features = rootFeatures;
3247           inherit packageId target;
3248         };
3249         diffedDefaultPackageFeatures = diffDefaultPackageFeatures {
3250           inherit packageId target;
3251         };
3252       };
3253     in
3254     { internal = debug; };
3256   /* Returns differences between cargo default features and crate2nix default
3257     features.
3259     This is useful for verifying the feature resolution in crate2nix.
3260   */
3261   diffDefaultPackageFeatures =
3262     { crateConfigs ? crates
3263     , packageId
3264     , target
3265     }:
3266       assert (builtins.isAttrs crateConfigs);
3267       let
3268         prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; });
3269         mergedFeatures =
3270           prefixValues
3271             "crate2nix"
3272             (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; });
3273         configs = prefixValues "cargo" crateConfigs;
3274         combined = lib.foldAttrs (a: b: a // b) { } [ mergedFeatures configs ];
3275         onlyInCargo =
3276           builtins.attrNames
3277             (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined);
3278         onlyInCrate2Nix =
3279           builtins.attrNames
3280             (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined);
3281         differentFeatures = lib.filterAttrs
3282           (
3283             n: v:
3284               (v ? "crate2nix")
3285               && (v ? "cargo")
3286               && (v.crate2nix.features or [ ]) != (v."cargo".resolved_default_features or [ ])
3287           )
3288           combined;
3289       in
3290       builtins.toJSON {
3291         inherit onlyInCargo onlyInCrate2Nix differentFeatures;
3292       };
3294   /* Returns an attrset mapping packageId to the list of enabled features.
3296     If multiple paths to a dependency enable different features, the
3297     corresponding feature sets are merged. Features in rust are additive.
3298   */
3299   mergePackageFeatures =
3300     { crateConfigs ? crates
3301     , packageId
3302     , rootPackageId ? packageId
3303     , features ? rootFeatures
3304     , dependencyPath ? [ crates.${packageId}.crateName ]
3305     , featuresByPackageId ? { }
3306     , target
3307       # Adds devDependencies to the crate with rootPackageId.
3308     , runTests ? false
3309     , ...
3310     } @ args:
3311       assert (builtins.isAttrs crateConfigs);
3312       assert (builtins.isString packageId);
3313       assert (builtins.isString rootPackageId);
3314       assert (builtins.isList features);
3315       assert (builtins.isList dependencyPath);
3316       assert (builtins.isAttrs featuresByPackageId);
3317       assert (builtins.isAttrs target);
3318       assert (builtins.isBool runTests);
3319       let
3320         crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}");
3321         expandedFeatures = expandFeatures (crateConfig.features or { }) features;
3322         enabledFeatures = enableFeatures (crateConfig.dependencies or [ ]) expandedFeatures;
3323         depWithResolvedFeatures = dependency:
3324           let
3325             packageId = dependency.packageId;
3326             features = dependencyFeatures enabledFeatures dependency;
3327           in
3328           { inherit packageId features; };
3329         resolveDependencies = cache: path: dependencies:
3330           assert (builtins.isAttrs cache);
3331           assert (builtins.isList dependencies);
3332           let
3333             enabledDependencies = filterEnabledDependencies {
3334               inherit dependencies target;
3335               features = enabledFeatures;
3336             };
3337             directDependencies = map depWithResolvedFeatures enabledDependencies;
3338             foldOverCache = op: lib.foldl op cache directDependencies;
3339           in
3340           foldOverCache
3341             (
3342               cache: { packageId, features }:
3343                 let
3344                   cacheFeatures = cache.${packageId} or [ ];
3345                   combinedFeatures = sortedUnique (cacheFeatures ++ features);
3346                 in
3347                 if cache ? ${packageId} && cache.${packageId} == combinedFeatures
3348                 then cache
3349                 else
3350                   mergePackageFeatures {
3351                     features = combinedFeatures;
3352                     featuresByPackageId = cache;
3353                     inherit crateConfigs packageId target runTests rootPackageId;
3354                   }
3355             );
3356         cacheWithSelf =
3357           let
3358             cacheFeatures = featuresByPackageId.${packageId} or [ ];
3359             combinedFeatures = sortedUnique (cacheFeatures ++ enabledFeatures);
3360           in
3361           featuresByPackageId // {
3362             "${packageId}" = combinedFeatures;
3363           };
3364         cacheWithDependencies =
3365           resolveDependencies cacheWithSelf "dep"
3366             (
3367               crateConfig.dependencies or [ ]
3368               ++ lib.optionals
3369                 (runTests && packageId == rootPackageId)
3370                 (crateConfig.devDependencies or [ ])
3371             );
3372         cacheWithAll =
3373           resolveDependencies
3374             cacheWithDependencies "build"
3375             (crateConfig.buildDependencies or [ ]);
3376       in
3377       cacheWithAll;
3379   /* Returns the enabled dependencies given the enabled features. */
3380   filterEnabledDependencies = { dependencies, features, target }:
3381     assert (builtins.isList dependencies);
3382     assert (builtins.isList features);
3383     assert (builtins.isAttrs target);
3385     lib.filter
3386       (
3387         dep:
3388         let
3389           targetFunc = dep.target or (features: true);
3390         in
3391         targetFunc { inherit features target; }
3392         && (
3393           !(dep.optional or false)
3394           || builtins.any (doesFeatureEnableDependency dep) features
3395         )
3396       )
3397       dependencies;
3399   /* Returns whether the given feature should enable the given dependency. */
3400   doesFeatureEnableDependency = dependency: feature:
3401     let
3402       name = dependency.rename or dependency.name;
3403       prefix = "${name}/";
3404       len = builtins.stringLength prefix;
3405       startsWithPrefix = builtins.substring 0 len feature == prefix;
3406     in
3407     feature == name || startsWithPrefix;
3409   /* Returns the expanded features for the given inputFeatures by applying the
3410     rules in featureMap.
3412     featureMap is an attribute set which maps feature names to lists of further
3413     feature names to enable in case this feature is selected.
3414   */
3415   expandFeatures = featureMap: inputFeatures:
3416     assert (builtins.isAttrs featureMap);
3417     assert (builtins.isList inputFeatures);
3418     let
3419       expandFeature = feature:
3420         assert (builtins.isString feature);
3421         [ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or [ ]));
3422       outFeatures = lib.concatMap expandFeature inputFeatures;
3423     in
3424     sortedUnique outFeatures;
3426   /* This function adds optional dependencies as features if they are enabled
3427     indirectly by dependency features. This function mimics Cargo's behavior
3428     described in a note at:
3429     https://doc.rust-lang.org/nightly/cargo/reference/features.html#dependency-features
3430   */
3431   enableFeatures = dependencies: features:
3432     assert (builtins.isList features);
3433     assert (builtins.isList dependencies);
3434     let
3435       additionalFeatures = lib.concatMap
3436         (
3437           dependency:
3438             assert (builtins.isAttrs dependency);
3439             let
3440               enabled = builtins.any (doesFeatureEnableDependency dependency) features;
3441             in
3442             if (dependency.optional or false) && enabled
3443             then [ (dependency.rename or dependency.name) ]
3444             else [ ]
3445         )
3446         dependencies;
3447     in
3448     sortedUnique (features ++ additionalFeatures);
3450   /*
3451     Returns the actual features for the given dependency.
3453     features: The features of the crate that refers this dependency.
3454   */
3455   dependencyFeatures = features: dependency:
3456     assert (builtins.isList features);
3457     assert (builtins.isAttrs dependency);
3458     let
3459       defaultOrNil =
3460         if dependency.usesDefaultFeatures or true
3461         then [ "default" ]
3462         else [ ];
3463       explicitFeatures = dependency.features or [ ];
3464       additionalDependencyFeatures =
3465         let
3466           dependencyPrefix = (dependency.rename or dependency.name) + "/";
3467           dependencyFeatures =
3468             builtins.filter (f: lib.hasPrefix dependencyPrefix f) features;
3469         in
3470         builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures;
3471     in
3472     defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures;
3474   /* Sorts and removes duplicates from a list of strings. */
3475   sortedUnique = features:
3476     assert (builtins.isList features);
3477     assert (builtins.all builtins.isString features);
3478     let
3479       outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) { } features;
3480       outFeaturesUnique = builtins.attrNames outFeaturesSet;
3481     in
3482     builtins.sort (a: b: a < b) outFeaturesUnique;
3484   deprecationWarning = message: value:
3485     if strictDeprecation
3486     then builtins.throw "strictDeprecation enabled, aborting: ${message}"
3487     else builtins.trace message value;
3489   #
3490   # crate2nix/default.nix (excerpt end)
3491   #
3492   };