Merge "Import 'kobject-uevent' crate" into main
diff --git a/crates/aarch64-paging/.android-checksum.json b/crates/aarch64-paging/.android-checksum.json
index 7ee9bd0..3d20ceb 100644
--- a/crates/aarch64-paging/.android-checksum.json
+++ b/crates/aarch64-paging/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"296ba1ee4922cb49720ce0f936ffef7b64b246034094d942a3d157e7d738840b","AUTHORS":"d968c99ec9adae50a68bd614f0a99dd5a16cf91903cc2704e414025cb5e8a0fc","Android.bp":"372b2cac9509ebb143bb13feedac4e193ebef700b3b9e295177299432ab6006e","CHANGELOG.md":"3b78703c2e9fcc8294e7d650ce0c9c0fc613be3eb27b0e63407fc2e2f1feea2f","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"1fe4e9cc926fdd4c5eee43f2c65cbd97d902c2aca1bc109b3205c6fecb62c1cc","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"8ca806caf86641bc8b033a0c22f0e07bb213cbf4db68f1f6f87b8b2a6d47cec9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"986573df506ded3c83ad62d6c0f5cc8f6d7b166b775230b71e1d8c80a2b0e8d5","TEST_MAPPING":"f9b9bdb2176aac2dd7a477f011266a0c900730dc16e34d30ef7af063c4b8634c","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo2android_module.bp.fragment":"ca7836d8921e914765d9f7deaa28b59410649c76d84ba02172db2dcf947da348","cargo_embargo.json":"d085f70fc5e411d367a84e2bd8bc8d19501b9bac8478b5a42cb857d8586c2560","rules.mk":"bec32613e0c9406511005dc2e983845cf30de77e2705765c3ba32e05abb3e102","src/idmap.rs":"0076c798504da62f88ddd4850d9a38aeec6f5e6ec29698b08df8ae273de8f21e","src/lib.rs":"4f115168bdd5490b4ab90a55c9f9d392f9ae1ab05be7f597c9664a4b20624471","src/linearmap.rs":"8fcb2c7ff94c8aa8a438ea959b40348c94b597c8e90df09bf9d15baff3a7009e","src/paging.rs":"7e5b36521c420125f937f1135bc8379b34bf486fa7cf6b0ea52aeb1c2177194f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"296ba1ee4922cb49720ce0f936ffef7b64b246034094d942a3d157e7d738840b","AUTHORS":"d968c99ec9adae50a68bd614f0a99dd5a16cf91903cc2704e414025cb5e8a0fc","Android.bp":"ee112bffe3f754992e0b782ff736197c66cdc054773499f5e64f0fcf17854344","CHANGELOG.md":"3b78703c2e9fcc8294e7d650ce0c9c0fc613be3eb27b0e63407fc2e2f1feea2f","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"1fe4e9cc926fdd4c5eee43f2c65cbd97d902c2aca1bc109b3205c6fecb62c1cc","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"8ca806caf86641bc8b033a0c22f0e07bb213cbf4db68f1f6f87b8b2a6d47cec9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"986573df506ded3c83ad62d6c0f5cc8f6d7b166b775230b71e1d8c80a2b0e8d5","TEST_MAPPING":"f9b9bdb2176aac2dd7a477f011266a0c900730dc16e34d30ef7af063c4b8634c","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo2android_module.bp.fragment":"ca7836d8921e914765d9f7deaa28b59410649c76d84ba02172db2dcf947da348","cargo_embargo.json":"1a6ec30fa90f3d9871879d4fc340953245f6efc53f64bec29668e1b05a11bd41","rules.mk":"bec32613e0c9406511005dc2e983845cf30de77e2705765c3ba32e05abb3e102","src/idmap.rs":"0076c798504da62f88ddd4850d9a38aeec6f5e6ec29698b08df8ae273de8f21e","src/lib.rs":"4f115168bdd5490b4ab90a55c9f9d392f9ae1ab05be7f597c9664a4b20624471","src/linearmap.rs":"8fcb2c7ff94c8aa8a438ea959b40348c94b597c8e90df09bf9d15baff3a7009e","src/paging.rs":"7e5b36521c420125f937f1135bc8379b34bf486fa7cf6b0ea52aeb1c2177194f"}}
\ No newline at end of file
diff --git a/crates/aarch64-paging/Android.bp b/crates/aarch64-paging/Android.bp
index 40b31be..7b3d596 100644
--- a/crates/aarch64-paging/Android.bp
+++ b/crates/aarch64-paging/Android.bp
@@ -65,6 +65,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
enabled: false,
arch: {
arm64: {
diff --git a/crates/aarch64-paging/cargo_embargo.json b/crates/aarch64-paging/cargo_embargo.json
index 29d04da..05afb50 100644
--- a/crates/aarch64-paging/cargo_embargo.json
+++ b/crates/aarch64-paging/cargo_embargo.json
@@ -10,9 +10,12 @@
"no_std": true,
"force_rlib": true,
"add_module_block": "cargo2android_module.bp.fragment",
- "license_text": ["LICENSE-APACHE"]
+ "license_text": [
+ "LICENSE-APACHE"
+ ]
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/acpi/.android-checksum.json b/crates/acpi/.android-checksum.json
index 868c6dc..88b8372 100644
--- a/crates/acpi/.android-checksum.json
+++ b/crates/acpi/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"415c1d290da5bb918b936fbbc77611f14b67bacfd027fbbd638c71925443aa5d","Android.bp":"3528479fb1409577e90023d96cb584d9edf312388f004bbafdb30eb90986d708","Cargo.toml":"ce168372af62f7539ee392c473d66e4393eb0ab4a4f42690aa2c90a8445f2202","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"76b94e337c27e4e4f37fa29a3ae8653633b73699851c66b6852fa0820f91ff32","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"de83d81ec416b3d3d72e673f5b6a07c8714edba394d59d2213351a861b643f5b","cargo_embargo.json":"8304cab094a903934194349f647e8051ea4c2751454088d07701788ce109196f","patches/license.patch":"496756ee7d9bacb5cae63069203db1bf43c4c272a0062c1e41d8da0d0739446c","patches/rules.mk.diff":"1e2e3756d212d80407e357e6de1ae7dc96a6bd59489e0a12285244881b9907ca","rules.mk":"0bfac700f7fbbb78a1e3de5b709f2ecc1ca7deacfcb086f5b06e21a88a2b3d6a","src/address.rs":"719c584cea511d4e9815e5e5209f204b910f3803023a1da974c90fc3e7d443d9","src/bgrt.rs":"662f2dd4c85a107300ee76f52990eefd4bb76793699b2e6f15d6c57f6c328be6","src/fadt.rs":"684ea434489548467f957d72ed88ac21855b1b7f0d2c1f67556a85349b137e65","src/handler.rs":"4a3eb554ac9088b43ef18292bcd1913d5571b7d58bd3b6dfa2946d67a236ff46","src/hpet.rs":"027e5539d0d39ba02ae8e4a6e03f76d75ed54f48c6bd85f55c8345910117a9be","src/lib.rs":"3fbab738b62696336715777968ee46242e8659c32bc8d47577891cc46311c03d","src/madt.rs":"86a57621354cac400e7d0105d74bf0e3a3a7f8e0f5784af2096e71d40be2f68b","src/managed_slice.rs":"7c4c447349551580c58850cd258c05a1cd3f001ebffa42a99dbb214ae0976697","src/mcfg.rs":"96ac50244703b91931d0e50f2cb8264bb72650f6a8b4b889bf026d9351771bf1","src/platform/interrupt.rs":"86b0bd70e913f728f81242b9fd24b00b274f3ceb7068dc09773afa9d978e652b","src/platform/mod.rs":"3ecb3b6377455837661e01c2405f622a5771a80653985a81a76534106269e6f6","src/rsdp.rs":"f15a5b865ed9503eece7c8db8dd27fd081c59dd3eadf5359310feece4d50e724","src/sdt.rs":"adaf723a53920fffcbc2065001fb9a3862caac6beb796dae479356f9be7721ad","src/spcr.rs":"5ac09d5bdafa92d0a22e4fb3ffd310aa55418389314f71a3a010f052444c021c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"415c1d290da5bb918b936fbbc77611f14b67bacfd027fbbd638c71925443aa5d","Android.bp":"3528479fb1409577e90023d96cb584d9edf312388f004bbafdb30eb90986d708","Cargo.toml":"ce168372af62f7539ee392c473d66e4393eb0ab4a4f42690aa2c90a8445f2202","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"76b94e337c27e4e4f37fa29a3ae8653633b73699851c66b6852fa0820f91ff32","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"de83d81ec416b3d3d72e673f5b6a07c8714edba394d59d2213351a861b643f5b","cargo_embargo.json":"81a95d9562e739c214488b6f0489977c53b45415a2aa9d33ee5bc120eaee45c5","patches/license.patch":"496756ee7d9bacb5cae63069203db1bf43c4c272a0062c1e41d8da0d0739446c","patches/rules.mk.diff":"1e2e3756d212d80407e357e6de1ae7dc96a6bd59489e0a12285244881b9907ca","rules.mk":"0bfac700f7fbbb78a1e3de5b709f2ecc1ca7deacfcb086f5b06e21a88a2b3d6a","src/address.rs":"719c584cea511d4e9815e5e5209f204b910f3803023a1da974c90fc3e7d443d9","src/bgrt.rs":"662f2dd4c85a107300ee76f52990eefd4bb76793699b2e6f15d6c57f6c328be6","src/fadt.rs":"684ea434489548467f957d72ed88ac21855b1b7f0d2c1f67556a85349b137e65","src/handler.rs":"4a3eb554ac9088b43ef18292bcd1913d5571b7d58bd3b6dfa2946d67a236ff46","src/hpet.rs":"027e5539d0d39ba02ae8e4a6e03f76d75ed54f48c6bd85f55c8345910117a9be","src/lib.rs":"3fbab738b62696336715777968ee46242e8659c32bc8d47577891cc46311c03d","src/madt.rs":"86a57621354cac400e7d0105d74bf0e3a3a7f8e0f5784af2096e71d40be2f68b","src/managed_slice.rs":"7c4c447349551580c58850cd258c05a1cd3f001ebffa42a99dbb214ae0976697","src/mcfg.rs":"96ac50244703b91931d0e50f2cb8264bb72650f6a8b4b889bf026d9351771bf1","src/platform/interrupt.rs":"86b0bd70e913f728f81242b9fd24b00b274f3ceb7068dc09773afa9d978e652b","src/platform/mod.rs":"3ecb3b6377455837661e01c2405f622a5771a80653985a81a76534106269e6f6","src/rsdp.rs":"f15a5b865ed9503eece7c8db8dd27fd081c59dd3eadf5359310feece4d50e724","src/sdt.rs":"adaf723a53920fffcbc2065001fb9a3862caac6beb796dae479356f9be7721ad","src/spcr.rs":"5ac09d5bdafa92d0a22e4fb3ffd310aa55418389314f71a3a010f052444c021c"}}
\ No newline at end of file
diff --git a/crates/acpi/cargo_embargo.json b/crates/acpi/cargo_embargo.json
index 760ca29..6331c79 100644
--- a/crates/acpi/cargo_embargo.json
+++ b/crates/acpi/cargo_embargo.json
@@ -11,5 +11,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
+ ],
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/android_bp/.android-checksum.json b/crates/android_bp/.android-checksum.json
index 3b5854c..1e9b399 100644
--- a/crates/android_bp/.android-checksum.json
+++ b/crates/android_bp/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2ae4cf705da6678c5cbfe15fd7d7d61c504f3316c57a46201d7703161dcebdc3","Android.bp":"52e88adbd944b4568dcba9ac143c0c379a88756222663b3367a490dd071f4ce4","Cargo.lock":"3f20ce94a0d202f4ba9b8f23201d77821ec5b81e41bd3c9ba453fa51e529ff8c","Cargo.toml":"6d596d5a713d2156e1a8b48c0f2d36bd419df3c9c017d1341a40e4ae177cca11","LICENSE":"7b364a931da0559e2f1dc81fee3747935fe5e6ce35d0ebd5e72211355fbfca76","METADATA":"e8f6766c93afec6eac6e8d07a665114beccd49d0739c3a09477ce8f7eb795370","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Readme.md":"a061e9095e337a5ffb3993ec2f94d7d09175499197cc709fa87add44e9ed60be","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/parse_all.py":"9fcfb435f2f053f0e3d8596bb39813234052584a0532a8cb05892df40164662f","examples/parse_all.rs":"ed8672a0f34c7d4b144de67644bd31f94a14dd1757e1eb6939b257c476208485","patches/remove-android-bp.patch":"7a42d447f8fa7a86f90c269363c87b727e9b5757e18bd75fc4b9fce628289760","src/lib.rs":"52b2735a5625753dc968af9b4be06888d98649d57bf61263710759605d87d48f","src/macros.rs":"4230962411072838571efd27f341e2437ce45d54653466e79fc6953b794d694f","src/parser.rs":"5ec43d1ce5f149e8fad6b560c3b77d7e418788e592564a198a1215f2e07f207e","src/string.rs":"7ec29b3403b5620d393f95989f4c7f6352211e29c8bcaddd238a1bfa149b9714","src/test_db.tar.xz":"f4e784bb3052ee48074d63f92055e84e4812c35b4b0630fa744972a5a63f34d4","src/tests.rs":"e91ebbfaea2e4dda2a85143864e4fce9e4c16d1f5bc03ddf68ac6188b4257816","src/utils.rs":"0ffba546b2de0a97b2a490be5a7ebd159305a272f6fb8d695dbdeb1143801c3b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2ae4cf705da6678c5cbfe15fd7d7d61c504f3316c57a46201d7703161dcebdc3","Android.bp":"2376478927f94a6ec0e4a27a5597d0c0da4ad4860aa03891affb5fac0b86e539","Cargo.lock":"3f20ce94a0d202f4ba9b8f23201d77821ec5b81e41bd3c9ba453fa51e529ff8c","Cargo.toml":"6d596d5a713d2156e1a8b48c0f2d36bd419df3c9c017d1341a40e4ae177cca11","LICENSE":"7b364a931da0559e2f1dc81fee3747935fe5e6ce35d0ebd5e72211355fbfca76","METADATA":"e8f6766c93afec6eac6e8d07a665114beccd49d0739c3a09477ce8f7eb795370","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Readme.md":"a061e9095e337a5ffb3993ec2f94d7d09175499197cc709fa87add44e9ed60be","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/parse_all.py":"9fcfb435f2f053f0e3d8596bb39813234052584a0532a8cb05892df40164662f","examples/parse_all.rs":"ed8672a0f34c7d4b144de67644bd31f94a14dd1757e1eb6939b257c476208485","patches/remove-android-bp.patch":"7a42d447f8fa7a86f90c269363c87b727e9b5757e18bd75fc4b9fce628289760","src/lib.rs":"52b2735a5625753dc968af9b4be06888d98649d57bf61263710759605d87d48f","src/macros.rs":"4230962411072838571efd27f341e2437ce45d54653466e79fc6953b794d694f","src/parser.rs":"5ec43d1ce5f149e8fad6b560c3b77d7e418788e592564a198a1215f2e07f207e","src/string.rs":"7ec29b3403b5620d393f95989f4c7f6352211e29c8bcaddd238a1bfa149b9714","src/test_db.tar.xz":"f4e784bb3052ee48074d63f92055e84e4812c35b4b0630fa744972a5a63f34d4","src/tests.rs":"e91ebbfaea2e4dda2a85143864e4fce9e4c16d1f5bc03ddf68ac6188b4257816","src/utils.rs":"0ffba546b2de0a97b2a490be5a7ebd159305a272f6fb8d695dbdeb1143801c3b"}}
\ No newline at end of file
diff --git a/crates/android_bp/Android.bp b/crates/android_bp/Android.bp
index afdba07..d1b014a 100644
--- a/crates/android_bp/Android.bp
+++ b/crates/android_bp/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/android_bp/cargo_embargo.json b/crates/android_bp/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/android_bp/cargo_embargo.json
+++ b/crates/android_bp/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/android_log-sys/.android-checksum.json b/crates/android_log-sys/.android-checksum.json
index de12e6f..5d5928c 100644
--- a/crates/android_log-sys/.android-checksum.json
+++ b/crates/android_log-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"23d9651d08754d80715ced517039bc08e9a9de8ea7ad5dc142e6015209c021d8","Android.bp":"2123484dc0d799143d235273aba4e3071ba3f0dcbfc2f80f274c06594c44ef39","Cargo.toml":"41398a0f3a3f5a381c36d1468056063f2550dd97cc9877831833e83f76bfc858","LICENSE":"730758829e5425aa6177990bd909e44b48d1c6dc0932bcc31cfbbb22d298780c","LICENSE-APACHE":"730758829e5425aa6177990bd909e44b48d1c6dc0932bcc31cfbbb22d298780c","METADATA":"692f34214a266871fbb947773c74dc1a1bb2c1a2bfe15b82fe1563d9b3e489af","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a7026f3ff833a406166380949b029e906337d35b45c4884b76469762eb13cfc3","TEST_MAPPING":"1bb72836365373d78a7239a896c316b9083316433d0549611ea8c0f2d50c253e","cargo2android_glibc.bp.fragment":"18671723599ae9bd4955513ca1c63c2b4ddef2b50feb6534350667662e4e031d","cargo_embargo.json":"3cd1b5d4e901e65243a24284c0073e0ad74bc3b7d59414dc209927ef394149ce","src/lib.rs":"ec9a7132933a453dbcc7029641f369a8be73a6f63ceb064b51d3bebadce6a3b9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ec80a0655af9e92b923401741ad483ccca07755258947f07f28cb934e0c6499a","Android.bp":"84d0ee207a7949c2a756785cf0230ae59f12b3a2c3865d09804873b1815b290e","Cargo.toml":"79b3de79cac6eec25714351c7c48315051b8a9b3dfca3ae5ab1b2a852a3d8396","LICENSE":"730758829e5425aa6177990bd909e44b48d1c6dc0932bcc31cfbbb22d298780c","LICENSE-APACHE":"730758829e5425aa6177990bd909e44b48d1c6dc0932bcc31cfbbb22d298780c","METADATA":"0c86cc4fb131806d584fd5be42cc638a5b04ee3112cbd361f696f6c1f87433e6","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a7026f3ff833a406166380949b029e906337d35b45c4884b76469762eb13cfc3","TEST_MAPPING":"1bb72836365373d78a7239a896c316b9083316433d0549611ea8c0f2d50c253e","cargo2android_glibc.bp.fragment":"18671723599ae9bd4955513ca1c63c2b4ddef2b50feb6534350667662e4e031d","cargo_embargo.json":"3cd1b5d4e901e65243a24284c0073e0ad74bc3b7d59414dc209927ef394149ce","src/lib.rs":"ad7c04474e807b927013af7c23101cdc1ea1901a04f2364b77b2cddb544de9f3"}}
\ No newline at end of file
diff --git a/crates/android_log-sys/.cargo-checksum.json b/crates/android_log-sys/.cargo-checksum.json
index 7a36c4b..b94376a 100644
--- a/crates/android_log-sys/.cargo-checksum.json
+++ b/crates/android_log-sys/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"631170581dce0db24845e2eba20e54d1b0b6e8f682b58b592fec99ebfd63e5a3","LICENSE-APACHE":"4d4c32b31308f5a992434c2cf948205852bb2c7bb85cea4c1ab051f41a3eefb3","LICENSE-MIT":"bb3c0c388d2e5efc777ee1a7bc4671188447d5fbbad130aecac9fd52e0010b76","README.md":"56808f9f272c6fad922f23033591464c1403bb5d1f716ee224b6933b90d62e86","src/lib.rs":"199a1a7bfbf7c129cf8220a5f989359c825e39c2cbaafac5eb6b53302499c269"},"package":"5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"}
\ No newline at end of file
+{"files":{"Cargo.toml":"cb873abad4ce86c1699354f2da0a560cb5181d2eb5dcbcf08140a5b6b41e8359","LICENSE-APACHE":"4d4c32b31308f5a992434c2cf948205852bb2c7bb85cea4c1ab051f41a3eefb3","LICENSE-MIT":"bb3c0c388d2e5efc777ee1a7bc4671188447d5fbbad130aecac9fd52e0010b76","README.md":"56808f9f272c6fad922f23033591464c1403bb5d1f716ee224b6933b90d62e86","src/lib.rs":"33f78fa8433d826aa65f31971c55d2ad85844ff7f762d7da1dc5c96e688de630"},"package":"84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d"}
\ No newline at end of file
diff --git a/crates/android_log-sys/Android.bp b/crates/android_log-sys/Android.bp
index 4210235..234dfa5 100644
--- a/crates/android_log-sys/Android.bp
+++ b/crates/android_log-sys/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "android_log_sys",
cargo_env_compat: true,
- cargo_pkg_version: "0.3.1",
+ cargo_pkg_version: "0.3.2",
crate_root: "src/lib.rs",
edition: "2015",
apex_available: [
diff --git a/crates/android_log-sys/Cargo.toml b/crates/android_log-sys/Cargo.toml
index 7a73f32..69f5106 100644
--- a/crates/android_log-sys/Cargo.toml
+++ b/crates/android_log-sys/Cargo.toml
@@ -11,8 +11,14 @@
[package]
name = "android_log-sys"
-version = "0.3.1"
+version = "0.3.2"
authors = ["The android_log_sys Developers"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
description = """
FFI bindings to Android log Library.
"""
@@ -29,3 +35,4 @@
[lib]
name = "android_log_sys"
+path = "src/lib.rs"
diff --git a/crates/android_log-sys/METADATA b/crates/android_log-sys/METADATA
index f090571..05a1e1d 100644
--- a/crates/android_log-sys/METADATA
+++ b/crates/android_log-sys/METADATA
@@ -1,17 +1,17 @@
name: "android_log-sys"
description: "FFI bindings to Android log Library."
third_party {
- version: "0.3.1"
+ version: "0.3.2"
license_type: NOTICE
last_upgrade_date {
- year: 2024
- month: 4
- day: 17
+ year: 2025
+ month: 3
+ day: 12
}
homepage: "https://crates.io/crates/android_log-sys"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/android_log-sys/android_log-sys-0.3.1.crate"
- version: "0.3.1"
+ value: "https://static.crates.io/crates/android_log-sys/android_log-sys-0.3.2.crate"
+ version: "0.3.2"
}
}
diff --git a/crates/android_log-sys/src/lib.rs b/crates/android_log-sys/src/lib.rs
index b648ed5..05edf83 100644
--- a/crates/android_log-sys/src/lib.rs
+++ b/crates/android_log-sys/src/lib.rs
@@ -13,6 +13,8 @@
pub type c_int = raw::c_int;
#[allow(non_camel_case_types)]
pub type c_char = raw::c_char;
+#[allow(non_camel_case_types)]
+pub type c_size_t = raw::c_ulong;
// automatically generated by rust-bindgen
@@ -89,5 +91,10 @@
tag: *const c_char,
default_prio: c_int)
-> c_int;
+ pub fn __android_log_is_loggable_len(prio: c_int,
+ tag: *const c_char,
+ size: c_size_t,
+ default_prio: c_int)
+ -> c_int;
pub fn __android_log_write_log_message(log_message: *mut __android_log_message);
}
diff --git a/crates/android_logger/.android-checksum.json b/crates/android_logger/.android-checksum.json
index 8f49eb3..8ef962b 100644
--- a/crates/android_logger/.android-checksum.json
+++ b/crates/android_logger/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ec52c3210d442d90c44dea8acd41f21a43c9a514bad4583ff132dd4b1bbe7c71","Android.bp":"53f180993114c1adac939c0178cab811fa421e2edd9701d2da108c54680a6260","CHANGELOG.md":"ab5ac93fc671de1301c568dab343d2011083b4d7f9548c08e1c746b4969131c6","Cargo.toml":"a56168967303aad80cda8f6bb59eab92c60edfdbc32a514ac67a20ceb4053b40","LICENSE":"9e94e8fa1a66063ba4a2fad43e53df8f02ccf2c3f00167753edfd1fd4d80a3a1","LICENSE-APACHE":"9e94e8fa1a66063ba4a2fad43e53df8f02ccf2c3f00167753edfd1fd4d80a3a1","METADATA":"0ea8b8109bc8272d6ab7195ba22db4c4a40e601cf202b91df63ca9aba8bb305a","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7bc051e1e5f0c5d1df9283fae43c033dd50158ccd92eca0aef725483efa3b144","TEST_MAPPING":"785ff94435a91e5ab242637b4cd1297f5ccd0f6a6f3b7f3da49018fc4a90ef43","cargo_embargo.json":"43485ecf999715aac110bea3a8ad0a995e6963adbc8e44a83df866a9a0f8597d","patches/0003-Enable-embedding-android_logger-in-liblog_rust.patch":"5397cea5026d0106921589caa1e169215907c244b6c304abc6383b5deab6b70f","src/lib.rs":"2947d40a5ba367f82d6d16134f6500b5a640ca54f35e2ea1132cd7e6aabe05c0","tests/config_log_level.rs":"bae8099d68b0af40be75cd94f08594858be226feb09052ac55750703736eecc7","tests/default_init.rs":"9bdbce19667b4fb9b816c78135161c6e9aa135de66a9158949f647acd9c9f84b","tests/multiple_init.rs":"57892c30b859874d8b818a872668e176b59ab8d570d2cc4e589d403413678229"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bb1282294f4a45733717195ea6317d186a5f08f64110d739d8071dc5788099c8","Android.bp":"c25d0aacdd3e0f90caa0781a510ddb4286e2d45c6db3e2431abf0a5054091032","CHANGELOG.md":"ab5ac93fc671de1301c568dab343d2011083b4d7f9548c08e1c746b4969131c6","Cargo.toml":"9210dde4a9c83dc7638a00507bf2042ed4ed42048ac101bba11c5f58f432107e","LICENSE":"9e94e8fa1a66063ba4a2fad43e53df8f02ccf2c3f00167753edfd1fd4d80a3a1","LICENSE-APACHE":"9e94e8fa1a66063ba4a2fad43e53df8f02ccf2c3f00167753edfd1fd4d80a3a1","METADATA":"dd42c22e95e847ce043545d097066e15cca5f58024f35ba769ec68ed374efe92","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2c8a88474c7be10d8392d0fdf5a1f560bb760cebd822af7b22cf7c7d754e08d3","TEST_MAPPING":"785ff94435a91e5ab242637b4cd1297f5ccd0f6a6f3b7f3da49018fc4a90ef43","cargo_embargo.json":"43485ecf999715aac110bea3a8ad0a995e6963adbc8e44a83df866a9a0f8597d","patches/0001-Enable-embedding-android_logger-in-liblog_rust.patch":"f8ee0d6719260d4c81482016ae65b095359ddea51f9a42dfa31776b02e888e71","patches/0002-Avoid-panic-on-buffers-with-embedded-nul-bytes.patch":"26b96b9072821c6aae858ef0800b44b2c3f1e176faf3492bbcd79b4d0885c21f","rustfmt.toml":"94a1759611ead56078e428dd775bcdcfa913ab913cbb95d197d5db6f735e88fe","src/arrays.rs":"59b11faca551cabb70d47444b4cb6027ff22352ad5ce0f5568b7e3e83df2c8ae","src/config.rs":"9d1eec9a2ad4df09781aa0da6f5bd383d6a4b3c4271805ad4705fb247f948640","src/id.rs":"62a1f10a3d62c242bbffec54a1875b0676c7e815551c93858766add577bcfd1e","src/lib.rs":"3950f3a4ace142098c2514ad35100640fd6a8081e165d2f30fbf9238415990c8","src/platform_log_writer.rs":"927af1a88d268a50562d5edde8b1bc139d387ad16be9e390c52e7f95cfe002fe","src/tests.rs":"0126ac58466c2ecf1664e71aeeaa837b08e029587a3d8aacea53ba384e9b0645","tests/config_log_level.rs":"bae8099d68b0af40be75cd94f08594858be226feb09052ac55750703736eecc7","tests/default_init.rs":"9bdbce19667b4fb9b816c78135161c6e9aa135de66a9158949f647acd9c9f84b","tests/multiple_init.rs":"57892c30b859874d8b818a872668e176b59ab8d570d2cc4e589d403413678229"}}
\ No newline at end of file
diff --git a/crates/android_logger/.cargo-checksum.json b/crates/android_logger/.cargo-checksum.json
index 85628ad..b3cea7e 100644
--- a/crates/android_logger/.cargo-checksum.json
+++ b/crates/android_logger/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"aaceaeb1478b5d67843401abccc1e8075ea0849d8386a666c952923315eb8313","Cargo.toml":"577aad1714cae2cf5c4e2bf2f7ea79a1697309b28f2011353d0a41cf1b1bb676","LICENSE-APACHE":"99938c5864dd33decb62ab20fd883a9b00181d768ae887a4f19b2d0015c41dc9","LICENSE-MIT":"35043211d1b7be8f7e3f9cad27d981f2189ba9a39d9527b275b3c9740298dfe2","README.md":"33a2f4adabb734bbeada75d88f4aab1e40a26a2538013a840fbce124e2bf703a","src/lib.rs":"03638eaaf9c81ec889843577108f6aa685178e1fee25256780983e9b88bd342e","tests/config_log_level.rs":"61f12ee69f0a7e0e6c2b224d4b678f384ca0ee75122e62c01a9f75dbd9ba4437","tests/default_init.rs":"e5c77dbcf3dc2d9e21e5c48c190e6cdcdea7d8eecea8c8ce513ca98223c46b49","tests/multiple_init.rs":"b5fa06a0b92843227ecbb6285bdf7ab826412fd2fe11fac8b1fd68a7354fd3ee"},"package":"c494134f746c14dc653a35a4ea5aca24ac368529da5370ecf41fe0341c35772f"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"aaceaeb1478b5d67843401abccc1e8075ea0849d8386a666c952923315eb8313","Cargo.toml":"7ba8e86a064d463bf10da4b7c0537d4aec175a344a561112c1e6d7c8fd0aca47","LICENSE-APACHE":"99938c5864dd33decb62ab20fd883a9b00181d768ae887a4f19b2d0015c41dc9","LICENSE-MIT":"35043211d1b7be8f7e3f9cad27d981f2189ba9a39d9527b275b3c9740298dfe2","README.md":"cae076bb011291e7ab5cdc98deecd314e3b7c52e01925c8c80c77ae128cd0f9e","rustfmt.toml":"997bea482c1060adcf604643eef4439bcdde480017b2db6317b8a278e5c2c69d","src/arrays.rs":"b8d71155369efcde8eabfbe7ee8d14ba1397eac85b53e755710c5c12b1d777dd","src/config.rs":"13711cf6d2d78818e9dd0340a83e13b8b5cd4663ea74265316083a002e8215ec","src/id.rs":"3b33784e3bb7598c582dc1c7c33032497e978bc5cd9a128b25aeabfe16893f5c","src/lib.rs":"60bbfb589e49dd5c069afb9c14b838150ce8eed6748e1a84bfbbea18f69a0df4","src/platform_log_writer.rs":"1a6350f78c588880118bbd319ff66ab1abb23354d30daf51092f59cf51847e97","src/tests.rs":"f7aa49c88f47eff8cc9ef30d987785f6354353cfc8421cf34a02f29a30a74ed5","tests/config_log_level.rs":"61f12ee69f0a7e0e6c2b224d4b678f384ca0ee75122e62c01a9f75dbd9ba4437","tests/default_init.rs":"e5c77dbcf3dc2d9e21e5c48c190e6cdcdea7d8eecea8c8ce513ca98223c46b49","tests/multiple_init.rs":"b5fa06a0b92843227ecbb6285bdf7ab826412fd2fe11fac8b1fd68a7354fd3ee"},"package":"f6f39be698127218cca460cb624878c9aa4e2b47dba3b277963d2bf00bad263b"}
\ No newline at end of file
diff --git a/crates/android_logger/Android.bp b/crates/android_logger/Android.bp
index fb879e4..8855da4 100644
--- a/crates/android_logger/Android.bp
+++ b/crates/android_logger/Android.bp
@@ -17,20 +17,19 @@
name: "android_logger_test_src_lib",
crate_name: "android_logger",
cargo_env_compat: true,
- cargo_pkg_version: "0.13.3",
+ cargo_pkg_version: "0.15.0",
crate_root: "src/lib.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
- edition: "2015",
+ edition: "2021",
features: [
"default",
"regex",
],
rustlibs: [
"libandroid_log_sys",
- "libenv_logger",
+ "libenv_filter",
"liblog_rust",
- "libonce_cell",
],
}
@@ -38,11 +37,11 @@
name: "android_logger_test_tests_config_log_level",
crate_name: "config_log_level",
cargo_env_compat: true,
- cargo_pkg_version: "0.13.3",
+ cargo_pkg_version: "0.15.0",
crate_root: "tests/config_log_level.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
- edition: "2015",
+ edition: "2021",
features: [
"default",
"regex",
@@ -50,9 +49,8 @@
rustlibs: [
"libandroid_log_sys",
"libandroid_logger",
- "libenv_logger",
+ "libenv_filter",
"liblog_rust",
- "libonce_cell",
],
}
@@ -60,11 +58,11 @@
name: "android_logger_test_tests_default_init",
crate_name: "default_init",
cargo_env_compat: true,
- cargo_pkg_version: "0.13.3",
+ cargo_pkg_version: "0.15.0",
crate_root: "tests/default_init.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
- edition: "2015",
+ edition: "2021",
features: [
"default",
"regex",
@@ -72,9 +70,8 @@
rustlibs: [
"libandroid_log_sys",
"libandroid_logger",
- "libenv_logger",
+ "libenv_filter",
"liblog_rust",
- "libonce_cell",
],
}
@@ -82,11 +79,11 @@
name: "android_logger_test_tests_multiple_init",
crate_name: "multiple_init",
cargo_env_compat: true,
- cargo_pkg_version: "0.13.3",
+ cargo_pkg_version: "0.15.0",
crate_root: "tests/multiple_init.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
- edition: "2015",
+ edition: "2021",
features: [
"default",
"regex",
@@ -94,9 +91,8 @@
rustlibs: [
"libandroid_log_sys",
"libandroid_logger",
- "libenv_logger",
+ "libenv_filter",
"liblog_rust",
- "libonce_cell",
],
}
@@ -104,18 +100,17 @@
name: "libandroid_logger",
crate_name: "android_logger",
cargo_env_compat: true,
- cargo_pkg_version: "0.13.3",
+ cargo_pkg_version: "0.15.0",
crate_root: "src/lib.rs",
- edition: "2015",
+ edition: "2021",
features: [
"default",
"regex",
],
rustlibs: [
"libandroid_log_sys",
- "libenv_logger",
+ "libenv_filter",
"liblog_rust",
- "libonce_cell",
],
apex_available: [
"//apex_available:platform",
diff --git a/crates/android_logger/Cargo.toml b/crates/android_logger/Cargo.toml
index 1a68abd..3fd3bf2 100644
--- a/crates/android_logger/Cargo.toml
+++ b/crates/android_logger/Cargo.toml
@@ -10,9 +10,16 @@
# See Cargo.toml.orig for the original contents.
[package]
+edition = "2021"
name = "android_logger"
-version = "0.13.3"
+version = "0.15.0"
authors = ["The android_logger Developers"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
description = """
A logging implementation for `log` which hooks to android log output.
"""
@@ -23,23 +30,50 @@
"log",
"logger",
]
-categories = ["api-bindings"]
+categories = [
+ "api-bindings",
+ "os::android-apis",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-mobile/android_logger-rs"
-[dependencies.android_log-sys]
-version = "0.3"
+[package.metadata.docs.rs]
+targets = [
+ "aarch64-linux-android",
+ "arm-linux-androideabi",
+ "armv7-linux-androideabi",
+ "i686-linux-android",
+ "thumbv7neon-linux-androideabi",
+ "x86_64-linux-android",
+]
-[dependencies.env_logger]
-version = "0.10"
+[lib]
+name = "android_logger"
+path = "src/lib.rs"
+
+[[test]]
+name = "config_log_level"
+path = "tests/config_log_level.rs"
+
+[[test]]
+name = "default_init"
+path = "tests/default_init.rs"
+
+[[test]]
+name = "multiple_init"
+path = "tests/multiple_init.rs"
+
+[dependencies.android_log-sys]
+version = "0.3.2"
+
+[dependencies.env_filter]
+version = "0.1"
default-features = false
[dependencies.log]
version = "0.4"
-[dependencies.once_cell]
-version = "1.9"
-
[features]
+android-api-30 = []
default = ["regex"]
-regex = ["env_logger/regex"]
+regex = ["env_filter/regex"]
diff --git a/crates/android_logger/METADATA b/crates/android_logger/METADATA
index 23c56dc..72b117b 100644
--- a/crates/android_logger/METADATA
+++ b/crates/android_logger/METADATA
@@ -1,17 +1,17 @@
name: "android_logger"
description: "A logging implementation for `log` which hooks to android log output."
third_party {
- version: "0.13.3"
+ version: "0.15.0"
license_type: NOTICE
last_upgrade_date {
- year: 2024
- month: 1
- day: 24
+ year: 2025
+ month: 3
+ day: 12
}
homepage: "https://crates.io/crates/android_logger"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/android_logger/android_logger-0.13.3.crate"
- version: "0.13.3"
+ value: "https://static.crates.io/crates/android_logger/android_logger-0.15.0.crate"
+ version: "0.15.0"
}
}
diff --git a/crates/android_logger/README.md b/crates/android_logger/README.md
index 0d97778..28a8bea 100644
--- a/crates/android_logger/README.md
+++ b/crates/android_logger/README.md
@@ -13,7 +13,7 @@
```toml
[target.'cfg(target_os = "android")'.dependencies]
-android_logger = "0.13"
+android_logger = "0.15"
```
Example of initialization on activity creation, with log configuration:
@@ -65,6 +65,48 @@
This library ensures that logged messages do not overflow Android log message limits
by efficiently splitting messages into chunks.
+## Consistent log filtering in mixed Rust/C/C++ apps
+
+Android's C logging API determines the effective log level based on [a
+combination](https://cs.android.com/android/platform/superproject/main/+/main:system/logging/liblog/properties.cpp;l=243;drc=b74a506c1b69f5b295a8cdfd7e2da3b16db15934)
+of a process-wide global variable, [system-wide
+properties](https://cs.android.com/android/platform/superproject/main/+/main:system/logging/logd/README.property;l=45;drc=99c545d3098018a544cb292e1501daca694bee0f),
+and call-specific default. `log` + `android_logger` crates add another layer of
+log filtering on top of that, independent from the C API.
+
+```
+ .-----.
+ | app |
+ '-----' Rust
+C/C++ | '--------------.
+ | v
+ | .-----------. filter by log::STATIC_MAX_LEVEL +
+ | | log crate | - log::MAX_LOG_LEVEL_FILTER,
+ | '-----------' overrideable via log::set_max_level
+ | |
+ | v
+ | .----------------------.
+ | | android_logger crate | - filter by Config::max_level
+ | '----------------------'
+ | |
+ | .------------'
+ v v
+ .--------.
+ | liblog | - filter by global state or system-wide properties
+ '--------'
+```
+
+`liblog` APIs introduced in Android API 30 let `android_logger` delegate log
+filtering decision to `liblog`, making the log level consistent across C, C++
+and Rust calls.
+
+If you build `android_logger` with `android-api-30` feature enabled, the logger
+will consider the process-wide global state (set via
+[`__android_log_set_minimum_priority`](https://cs.android.com/android/platform/superproject/main/+/main:prebuilts/runtime/mainline/runtime/sdk/common_os/include/system/logging/liblog/include/android/log.h;l=364;drc=4cf460634134d51dba174f8af60dffb10f703f51))
+and Android system properties when deciding if a message should be logged or
+not. In this case, the effective log level is the _least verbose_ of the levels
+set between those and Rust log facilities.
+
## License
Licensed under either of
diff --git a/crates/android_logger/patches/0001-Enable-embedding-android_logger-in-liblog_rust.patch b/crates/android_logger/patches/0001-Enable-embedding-android_logger-in-liblog_rust.patch
new file mode 100644
index 0000000..5594b01
--- /dev/null
+++ b/crates/android_logger/patches/0001-Enable-embedding-android_logger-in-liblog_rust.patch
@@ -0,0 +1,142 @@
+From ed09380b0bac10179dd69f4a4d4581e6c9e050b7 Mon Sep 17 00:00:00 2001
+From: Marcin Radomski <[email protected]>
+Date: Thu, 20 Mar 2025 13:58:18 +0000
+Subject: [PATCH] Enable embedding android_logger in liblog_rust
+
+Update of the patch file from aosp/2717316 compatible with
+android_logger 0.15.0.
+
+Replace crate:: imports with relative ones.
+
+Also, add default_log_impl cfg that, when enabled:
+* Removes the dependency on env_filter,
+* Imports all log crate symbols from current crate.
+
+This makes it possible to embed android_logger as mod inside liblog_rust
+crate, so that AndroidLogger can be used as default logger instead of a
+NopLogger.
+
+Changing that default prevents dropping logs when the logger is
+uninitialized. This can happen by accident when an application doesn't
+intialize the logger in all linker namespaces it pulls libraries from.
+See discussion at b/294216366#comment7.
+
+Bug: 275290559
+Test: compile test app from aosp/2717614
+Test: run it on a Cuttlefish device
+Test: observe logcat logs on all level from FFI call
+Test: observe all logs on non-FFI call without initializing the logger
+Test: observe set log filter applying only to non-FFI call
+Change-Id: I3f1bd7a34ebc8ead779ac028c66ac6c1e752fbe7
+---
+ src/arrays.rs | 2 +-
+ src/config.rs | 16 +++++++++++++++-
+ src/id.rs | 3 +++
+ src/lib.rs | 14 ++++++++++++--
+ src/platform_log_writer.rs | 10 ++++++++--
+ 5 files changed, 39 insertions(+), 6 deletions(-)
+
+diff --git a/src/arrays.rs b/src/arrays.rs
+index f67b8e58..94625a7a 100644
+--- a/src/arrays.rs
++++ b/src/arrays.rs
+@@ -1,4 +1,4 @@
+-use crate::LOGGING_TAG_MAX_LEN;
++use super::LOGGING_TAG_MAX_LEN;
+ use std::ffi::CStr;
+ use std::mem::MaybeUninit;
+
+diff --git a/src/config.rs b/src/config.rs
+index bd14f585..a8b8ce0b 100644
+--- a/src/config.rs
++++ b/src/config.rs
+@@ -1,4 +1,18 @@
+-use crate::{FormatFn, LogId};
++#[cfg(default_log_impl)]
++use {
++ crate as log,
++ super::log_ffi,
++};
++#[cfg(default_log_impl)]
++mod env_filter {
++ #[derive(Debug)]
++ pub struct Filter;
++ impl Filter {
++ pub fn matches(&self, _: &crate::Record) -> bool { true }
++ }
++}
++
++use super::{FormatFn, LogId};
+ use log::{Level, LevelFilter, Record};
+ use std::ffi::CString;
+ use std::fmt;
+diff --git a/src/id.rs b/src/id.rs
+index 0b6597bb..77c2b850 100644
+--- a/src/id.rs
++++ b/src/id.rs
+@@ -1,3 +1,6 @@
++#[cfg(default_log_impl)]
++use super::log_ffi;
++
+ /// Possible identifiers of a specific buffer of Android logging system for
+ /// logging a message.
+ #[derive(Clone, Copy, Debug, Eq, PartialEq)]
+diff --git a/src/lib.rs b/src/lib.rs
+index 9597ae8e..0b324b69 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -63,6 +63,9 @@
+ //! )
+ //! ```
+
++#[cfg(default_log_impl)]
++use crate as log;
++
+ #[cfg(target_os = "android")]
+ extern crate android_log_sys as log_ffi;
+
+@@ -72,9 +75,10 @@ use std::fmt;
+ use std::mem::MaybeUninit;
+ use std::sync::OnceLock;
+
+-use crate::arrays::{fill_tag_bytes, uninit_array};
+-use crate::platform_log_writer::PlatformLogWriter;
++use self::arrays::{fill_tag_bytes, uninit_array};
++use self::platform_log_writer::PlatformLogWriter;
+ pub use config::Config;
++#[cfg(not(default_log_impl))]
+ pub use env_filter::{Builder as FilterBuilder, Filter};
+ pub use id::LogId;
+
+@@ -236,4 +240,10 @@ pub fn init_once(config: Config) {
+ } else if let Some(level) = log_level {
+ log::set_max_level(level);
+ }
++ // On Android, log crate is patched to default to LevelFilter::Trace rather than Off. Preserve
++ // the existing "android_logger default level is Off" behavior by explicitly setting the level.
++ #[cfg(target_os = "android")]
++ if log_level.is_none() {
++ log::set_max_level(log::LevelFilter::Off);
++ }
+ }
+diff --git a/src/platform_log_writer.rs b/src/platform_log_writer.rs
+index 2a7b53a8..6a3da829 100644
+--- a/src/platform_log_writer.rs
++++ b/src/platform_log_writer.rs
+@@ -1,5 +1,11 @@
+-use crate::arrays::slice_assume_init_ref;
+-use crate::{LOGGING_MSG_MAX_LEN, LogId, android_log, uninit_array};
++#[cfg(default_log_impl)]
++use {
++ crate as log,
++ super::log_ffi,
++};
++
++use super::arrays::slice_assume_init_ref;
++use super::{LOGGING_MSG_MAX_LEN, LogId, android_log, uninit_array};
+ use log::Level;
+ #[cfg(target_os = "android")]
+ use log_ffi::LogPriority;
+--
+2.49.0.rc1.451.g8f38331e32-goog
+
diff --git a/crates/android_logger/patches/0002-Avoid-panic-on-buffers-with-embedded-nul-bytes.patch b/crates/android_logger/patches/0002-Avoid-panic-on-buffers-with-embedded-nul-bytes.patch
new file mode 100644
index 0000000..c074d40
--- /dev/null
+++ b/crates/android_logger/patches/0002-Avoid-panic-on-buffers-with-embedded-nul-bytes.patch
@@ -0,0 +1,70 @@
+From c8429943e1c53006652e8925d1d5e3728828c566 Mon Sep 17 00:00:00 2001
+From: Marcin Radomski <[email protected]>
+Date: Tue, 18 Mar 2025 13:31:21 +0000
+Subject: [PATCH] Avoid panic on buffers with embedded nul bytes
+
+Upstream PR: https://github.com/rust-mobile/android_logger-rs/pull/90
+
+Some crates use log crate with a message padded with a number of
+nullbytes [1]. This currently causes panics.
+
+Replace the nullbytes with spaces when printing the log message to
+prevent this crash.
+
+[1] https://github.com/cloudflare/quiche/blob/d0efd2c5278b9dbe8d6544c3015f8c772f3513b4/quiche/src/tls/mod.rs#L1040
+---
+ src/platform_log_writer.rs | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/src/platform_log_writer.rs b/src/platform_log_writer.rs
+index 85826ca..2a7b53a 100644
+--- a/src/platform_log_writer.rs
++++ b/src/platform_log_writer.rs
+@@ -113,7 +113,7 @@ impl PlatformLogWriter<'_> {
+ /// Output buffer up until the \0 which will be placed at `len` position.
+ ///
+ /// # Safety
+- /// The first `len` bytes of `self.buffer` must be initialized.
++ /// The first `len` bytes of `self.buffer` must be initialized and not contain nullbytes.
+ unsafe fn output_specified_len(&mut self, len: usize) {
+ let mut last_byte = MaybeUninit::new(b'\0');
+
+@@ -152,7 +152,13 @@ impl fmt::Write for PlatformLogWriter<'_> {
+ .zip(incoming_bytes)
+ .enumerate()
+ .fold(None, |acc, (i, (output, input))| {
+- output.write(*input);
++ if *input == b'\0' {
++ // Replace nullbytes with whitespace, so we can put the message in a CStr
++ // later to pass it through a const char*.
++ output.write(b' ');
++ } else {
++ output.write(*input);
++ }
+ if *input == b'\n' { Some(i) } else { acc }
+ });
+
+@@ -297,6 +303,20 @@ pub mod tests {
+ );
+ }
+
++ #[test]
++ fn writer_substitutes_nullbytes_with_spaces() {
++ let test_string = "Test_string_with\0\0\0\0nullbytes\0";
++ let mut writer = get_tag_writer();
++ writer
++ .write_str(test_string)
++ .expect("Unable to write to PlatformLogWriter");
++
++ assert_eq!(
++ unsafe { slice_assume_init_ref(&writer.buffer[..test_string.len()]) },
++ test_string.replace("\0", " ").as_bytes()
++ );
++ }
++
+ fn get_tag_writer() -> PlatformLogWriter<'static> {
+ PlatformLogWriter::new(
+ None,
+--
+2.49.0.rc1.451.g8f38331e32-goog
+
diff --git a/crates/android_logger/patches/0003-Enable-embedding-android_logger-in-liblog_rust.patch b/crates/android_logger/patches/0003-Enable-embedding-android_logger-in-liblog_rust.patch
deleted file mode 100644
index 7947e34..0000000
--- a/crates/android_logger/patches/0003-Enable-embedding-android_logger-in-liblog_rust.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From ff9b04d9a87d2bda1281cf31e9df32c60133ef42 Mon Sep 17 00:00:00 2001
-From: Marcin Radomski <[email protected]>
-Date: Thu, 17 Aug 2023 16:07:56 +0000
-Subject: [PATCH] Enable embedding android_logger in liblog_rust
-
-Add default_log_impl cfg that, when enabled:
-* Removes the dependency on env_logger,
-* Imports all log crate symbols from current crate.
-
-This makes it possible to embed android_logger as mod inside liblog_rust
-crate, so that AndroidLogger can be used as default logger instead of a
-NopLogger.
-
-Changing that default prevents dropping logs when the logger is
-uninitialized. This can happen by accident when an application doesn't
-intialize the logger in all linker namespaces it pulls libraries from.
-See discussion at b/294216366#comment7.
-
-Bug: 275290559
-Test: compile test app from aosp/2717614
-Test: run it on a Cuttlefish device
-Test: observe logcat logs on all level from FFI call
-Test: observe all logs on non-FFI call without initializing the logger
-Test: observe set log filter applying only to non-FFI call
-Change-Id: I324f77d840101391299e2693acc6f814d062c659
----
- src/lib.rs | 26 ++++++++++++++++++++++++--
- 1 file changed, 24 insertions(+), 2 deletions(-)
-
-diff --git b/src/lib.rs a/src/lib.rs
-index faf2779b..cfd2bb99 100644
---- b/src/lib.rs
-+++ a/src/lib.rs
-@@ -67,20 +67,35 @@
- extern crate android_log_sys as log_ffi;
- extern crate once_cell;
- use once_cell::sync::OnceCell;
-+#[cfg(default_log_impl)]
-+use crate as log;
-+#[cfg(not(default_log_impl))]
- #[macro_use]
- extern crate log;
-
-+#[cfg(not(default_log_impl))]
- extern crate env_logger;
-
--use log::{Level, LevelFilter, Log, Metadata, Record};
-+use self::log::{Level, LevelFilter, Log, Metadata, Record};
- #[cfg(target_os = "android")]
--use log_ffi::LogPriority;
-+use self::log_ffi::LogPriority;
- use std::ffi::{CStr, CString};
- use std::fmt;
- use std::mem::{self, MaybeUninit};
- use std::ptr;
-
-+#[cfg(default_log_impl)]
-+pub mod env_logger {
-+ pub mod filter {
-+ pub struct Filter;
-+ impl Filter {
-+ pub fn matches(&self, _: &crate::Record) -> bool { true }
-+ }
-+ }
-+}
-+#[cfg(not(default_log_impl))]
- pub use env_logger::filter::{Builder as FilterBuilder, Filter};
-+#[cfg(not(default_log_impl))]
- pub use env_logger::fmt::Formatter;
-
- pub(crate) type FormatFn = Box<dyn Fn(&mut dyn fmt::Write, &Record) -> fmt::Result + Sync + Send>;
-@@ -542,6 +557,12 @@ pub fn init_once(config: Config) {
- } else if let Some(level) = log_level {
- log::set_max_level(level);
- }
-+ // On Android, log crate is patched to default to LevelFilter::Trace rather than Off. Preserve
-+ // the existing "android_logger default level is Off" behavior by explicitly setting the level.
-+ #[cfg(target_os = "android")]
-+ if log_level.is_none() {
-+ log::set_max_level(LevelFilter::Off);
-+ }
- }
-
- // FIXME: When `maybe_uninit_uninit_array ` is stabilized, use it instead of this helper
-@@ -596,6 +617,7 @@ mod tests {
-
- // Test whether the filter gets called correctly. Not meant to be exhaustive for all filter
- // options, as these are handled directly by the filter itself.
-+ #[cfg(not(default_log_impl))]
- #[test]
- fn config_filter_match() {
- let info_record = Record::builder().level(Level::Info).build();
---
-2.42.0.rc1.204.g551eb34607-goog
-
diff --git a/crates/android_logger/src/arrays.rs b/crates/android_logger/src/arrays.rs
new file mode 100644
index 0000000..94625a7
--- /dev/null
+++ b/crates/android_logger/src/arrays.rs
@@ -0,0 +1,48 @@
+use super::LOGGING_TAG_MAX_LEN;
+use std::ffi::CStr;
+use std::mem::MaybeUninit;
+
+// FIXME: When `maybe_uninit_uninit_array` is stabilized, use it instead of this helper
+pub fn uninit_array<const N: usize, T>() -> [MaybeUninit<T>; N] {
+ // SAFETY: Array contains MaybeUninit, which is fine to be uninit
+ unsafe { MaybeUninit::uninit().assume_init() }
+}
+
+// FIXME: Remove when maybe_uninit_slice is stabilized to provide MaybeUninit::slice_assume_init_ref()
+pub unsafe fn slice_assume_init_ref<T>(slice: &[MaybeUninit<T>]) -> &[T] {
+ &*(slice as *const [MaybeUninit<T>] as *const [T])
+}
+
+/// Fills up `storage` with `tag` and a necessary NUL terminator, optionally ellipsizing the input
+/// `tag` if it's too large.
+///
+/// Returns a [`CStr`] containing the initialized portion of `storage`, including its NUL
+/// terminator.
+pub fn fill_tag_bytes<'a>(
+ storage: &'a mut [MaybeUninit<u8>; LOGGING_TAG_MAX_LEN + 1],
+ tag: &[u8],
+) -> &'a CStr {
+ // FIXME: Simplify when maybe_uninit_fill with MaybeUninit::fill_from() is stabilized
+ let initialized = if tag.len() > LOGGING_TAG_MAX_LEN {
+ for (input, output) in tag
+ .iter()
+ // Elipsize the last two characters (TODO: use special … character)?
+ .take(LOGGING_TAG_MAX_LEN - 2)
+ .chain(b"..\0")
+ .zip(storage.iter_mut())
+ {
+ output.write(*input);
+ }
+ storage.as_slice()
+ } else {
+ for (input, output) in tag.iter().chain(b"\0").zip(storage.iter_mut()) {
+ output.write(*input);
+ }
+ &storage[..tag.len() + 1]
+ };
+
+ // SAFETY: The above code ensures that `initialized` only refers to a portion of the `array`
+ // slice that was initialized, thus it is safe to cast those `MaybeUninit<u8>`s to `u8`:
+ let initialized = unsafe { slice_assume_init_ref(initialized) };
+ CStr::from_bytes_with_nul(initialized).expect("Unreachable: we wrote a nul terminator")
+}
diff --git a/crates/android_logger/src/config.rs b/crates/android_logger/src/config.rs
new file mode 100644
index 0000000..a8b8ce0
--- /dev/null
+++ b/crates/android_logger/src/config.rs
@@ -0,0 +1,166 @@
+#[cfg(default_log_impl)]
+use {
+ crate as log,
+ super::log_ffi,
+};
+#[cfg(default_log_impl)]
+mod env_filter {
+ #[derive(Debug)]
+ pub struct Filter;
+ impl Filter {
+ pub fn matches(&self, _: &crate::Record) -> bool { true }
+ }
+}
+
+use super::{FormatFn, LogId};
+use log::{Level, LevelFilter, Record};
+use std::ffi::CString;
+use std::fmt;
+
+/// Filter for android logger.
+#[derive(Default)]
+pub struct Config {
+ pub(crate) log_level: Option<LevelFilter>,
+ pub(crate) buf_id: Option<LogId>,
+ filter: Option<env_filter::Filter>,
+ pub(crate) tag: Option<CString>,
+ pub(crate) custom_format: Option<FormatFn>,
+}
+
+impl fmt::Debug for Config {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Config")
+ .field("log_level", &self.log_level)
+ .field("buf_id", &self.buf_id)
+ .field("filter", &self.filter)
+ .field("tag", &self.tag)
+ .field(
+ "custom_format",
+ match &self.custom_format {
+ Some(_) => &"Some(_)",
+ None => &"None",
+ },
+ )
+ .finish()
+ }
+}
+
+#[cfg(all(target_os = "android", feature = "android-api-30"))]
+fn android_log_priority_from_level(level: Level) -> android_log_sys::LogPriority {
+ match level {
+ Level::Warn => android_log_sys::LogPriority::WARN,
+ Level::Info => android_log_sys::LogPriority::INFO,
+ Level::Debug => android_log_sys::LogPriority::DEBUG,
+ Level::Error => android_log_sys::LogPriority::ERROR,
+ Level::Trace => android_log_sys::LogPriority::VERBOSE,
+ }
+}
+
+/// Asks Android liblog if a message with given `tag` and `priority` should be logged, using
+/// `default_prio` as the level filter in case no system- or process-wide overrides are set.
+#[cfg(all(target_os = "android", feature = "android-api-30"))]
+fn android_is_loggable_len(
+ prio: log_ffi::LogPriority,
+ tag: &str,
+ default_prio: log_ffi::LogPriority,
+) -> bool {
+ // SAFETY: tag points to a valid string tag.len() bytes long.
+ unsafe {
+ log_ffi::__android_log_is_loggable_len(
+ prio as log_ffi::c_int,
+ tag.as_ptr() as *const log_ffi::c_char,
+ tag.len() as log_ffi::c_size_t,
+ default_prio as log_ffi::c_int,
+ ) != 0
+ }
+}
+
+#[cfg(not(all(target_os = "android", feature = "android-api-30")))]
+fn default_is_loggable(_tag: &str, record_level: Level, config_level: Option<LevelFilter>) -> bool {
+ record_level <= config_level.unwrap_or_else(log::max_level)
+}
+
+#[cfg(all(target_os = "android", feature = "android-api-30"))]
+fn android_is_loggable(tag: &str, record_level: Level, config_level: Option<LevelFilter>) -> bool {
+ let prio = android_log_priority_from_level(record_level);
+ // Priority to use in case no system-wide or process-wide overrides are set.
+ let default_prio = match config_level {
+ Some(level_filter) => match level_filter.to_level() {
+ Some(level) => android_log_priority_from_level(level),
+ // LevelFilter::to_level() returns None only for LevelFilter::Off
+ None => android_log_sys::LogPriority::SILENT,
+ },
+ None => android_log_sys::LogPriority::INFO,
+ };
+ android_is_loggable_len(prio, tag, default_prio)
+}
+
+impl Config {
+ /// Changes the maximum log level.
+ ///
+ /// Note, that `Trace` is the maximum level, because it provides the
+ /// maximum amount of detail in the emitted logs.
+ ///
+ /// If `Off` level is provided, then nothing is logged at all.
+ ///
+ /// [`log::max_level()`] is considered as the default level.
+ pub fn with_max_level(mut self, level: LevelFilter) -> Self {
+ self.log_level = Some(level);
+ self
+ }
+
+ /// Changes the Android logging system buffer to be used.
+ ///
+ /// By default, logs are sent to the [`Main`] log. Other logging buffers may
+ /// only be accessible to certain processes.
+ ///
+ /// [`Main`]: LogId::Main
+ pub fn with_log_buffer(mut self, buf_id: LogId) -> Self {
+ self.buf_id = Some(buf_id);
+ self
+ }
+
+ pub(crate) fn filter_matches(&self, record: &Record) -> bool {
+ if let Some(ref filter) = self.filter {
+ filter.matches(record)
+ } else {
+ true
+ }
+ }
+
+ pub(crate) fn is_loggable(&self, tag: &str, level: Level) -> bool {
+ #[cfg(all(target_os = "android", feature = "android-api-30"))]
+ use android_is_loggable as is_loggable;
+ #[cfg(not(all(target_os = "android", feature = "android-api-30")))]
+ use default_is_loggable as is_loggable;
+
+ is_loggable(tag, level, self.log_level)
+ }
+
+ pub fn with_filter(mut self, filter: env_filter::Filter) -> Self {
+ self.filter = Some(filter);
+ self
+ }
+
+ pub fn with_tag<S: Into<Vec<u8>>>(mut self, tag: S) -> Self {
+ self.tag = Some(CString::new(tag).expect("Can't convert tag to CString"));
+ self
+ }
+
+ /// Sets the format function for formatting the log output.
+ /// ```
+ /// # use android_logger::Config;
+ /// android_logger::init_once(
+ /// Config::default()
+ /// .with_max_level(log::LevelFilter::Trace)
+ /// .format(|f, record| write!(f, "my_app: {}", record.args()))
+ /// )
+ /// ```
+ pub fn format<F>(mut self, format: F) -> Self
+ where
+ F: Fn(&mut dyn fmt::Write, &Record) -> fmt::Result + Sync + Send + 'static,
+ {
+ self.custom_format = Some(Box::new(format));
+ self
+ }
+}
diff --git a/crates/android_logger/src/id.rs b/crates/android_logger/src/id.rs
new file mode 100644
index 0000000..77c2b85
--- /dev/null
+++ b/crates/android_logger/src/id.rs
@@ -0,0 +1,50 @@
+#[cfg(default_log_impl)]
+use super::log_ffi;
+
+/// Possible identifiers of a specific buffer of Android logging system for
+/// logging a message.
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
+pub enum LogId {
+ /// Main log buffer.
+ ///
+ /// This is the only log buffer available to apps.
+ Main,
+
+ /// Radio log buffer.
+ Radio,
+
+ /// Event log buffer.
+ Events,
+
+ /// System log buffer.
+ System,
+
+ /// Crash log buffer.
+ Crash,
+
+ /// Kernel log buffer.
+ Kernel,
+
+ /// Security log buffer.
+ Security,
+
+ /// Statistics log buffer.
+ Stats,
+}
+
+#[cfg(target_os = "android")]
+impl LogId {
+ pub(crate) const fn to_native(log_id: Option<Self>) -> Option<log_ffi::log_id_t> {
+ match log_id {
+ Some(Self::Main) => Some(log_ffi::log_id_t::MAIN),
+ Some(Self::Radio) => Some(log_ffi::log_id_t::RADIO),
+ Some(Self::Events) => Some(log_ffi::log_id_t::EVENTS),
+ Some(Self::System) => Some(log_ffi::log_id_t::SYSTEM),
+ Some(Self::Crash) => Some(log_ffi::log_id_t::CRASH),
+ Some(Self::Kernel) => Some(log_ffi::log_id_t::KERNEL),
+ Some(Self::Security) => Some(log_ffi::log_id_t::SECURITY),
+ Some(Self::Stats) => Some(log_ffi::log_id_t::STATS),
+ None => None,
+ }
+ }
+}
diff --git a/crates/android_logger/src/lib.rs b/crates/android_logger/src/lib.rs
index cfd2bb9..0b324b6 100644
--- a/crates/android_logger/src/lib.rs
+++ b/crates/android_logger/src/lib.rs
@@ -63,90 +63,33 @@
//! )
//! ```
-#[cfg(target_os = "android")]
-extern crate android_log_sys as log_ffi;
-extern crate once_cell;
-use once_cell::sync::OnceCell;
#[cfg(default_log_impl)]
use crate as log;
-#[cfg(not(default_log_impl))]
-#[macro_use]
-extern crate log;
-#[cfg(not(default_log_impl))]
-extern crate env_logger;
-
-use self::log::{Level, LevelFilter, Log, Metadata, Record};
#[cfg(target_os = "android")]
-use self::log_ffi::LogPriority;
+extern crate android_log_sys as log_ffi;
+
+use log::{Log, Metadata, Record};
use std::ffi::{CStr, CString};
use std::fmt;
-use std::mem::{self, MaybeUninit};
-use std::ptr;
+use std::mem::MaybeUninit;
+use std::sync::OnceLock;
-#[cfg(default_log_impl)]
-pub mod env_logger {
- pub mod filter {
- pub struct Filter;
- impl Filter {
- pub fn matches(&self, _: &crate::Record) -> bool { true }
- }
- }
-}
+use self::arrays::{fill_tag_bytes, uninit_array};
+use self::platform_log_writer::PlatformLogWriter;
+pub use config::Config;
#[cfg(not(default_log_impl))]
-pub use env_logger::filter::{Builder as FilterBuilder, Filter};
-#[cfg(not(default_log_impl))]
-pub use env_logger::fmt::Formatter;
+pub use env_filter::{Builder as FilterBuilder, Filter};
+pub use id::LogId;
pub(crate) type FormatFn = Box<dyn Fn(&mut dyn fmt::Write, &Record) -> fmt::Result + Sync + Send>;
-/// Possible identifiers of a specific buffer of Android logging system for
-/// logging a message.
-#[derive(Clone, Copy, Debug, Eq, PartialEq)]
-pub enum LogId {
- /// Main log buffer.
- ///
- /// This is the only log buffer available to apps.
- Main,
-
- /// Radio log buffer.
- Radio,
-
- /// Event log buffer.
- Events,
-
- /// System log buffer.
- System,
-
- /// Crash log buffer.
- Crash,
-
- /// Kernel log buffer.
- Kernel,
-
- /// Security log buffer.
- Security,
-
- /// Statistics log buffer.
- Stats,
-}
-
-#[cfg(target_os = "android")]
-impl LogId {
- const fn to_native(log_id: Option<Self>) -> Option<log_ffi::log_id_t> {
- match log_id {
- Some(Self::Main) => Some(log_ffi::log_id_t::MAIN),
- Some(Self::Radio) => Some(log_ffi::log_id_t::RADIO),
- Some(Self::Events) => Some(log_ffi::log_id_t::EVENTS),
- Some(Self::System) => Some(log_ffi::log_id_t::SYSTEM),
- Some(Self::Crash) => Some(log_ffi::log_id_t::CRASH),
- Some(Self::Kernel) => Some(log_ffi::log_id_t::KERNEL),
- Some(Self::Security) => Some(log_ffi::log_id_t::SECURITY),
- Some(Self::Stats) => Some(log_ffi::log_id_t::STATS),
- None => None,
- }
- }
-}
+mod arrays;
+mod config;
+mod id;
+mod platform_log_writer;
+#[cfg(test)]
+mod tests;
/// Outputs log to Android system.
#[cfg(target_os = "android")]
@@ -178,18 +121,19 @@
/// Dummy output placeholder for tests.
#[cfg(not(target_os = "android"))]
-fn android_log(_buf_id: Option<LogId>, _priority: Level, _tag: &CStr, _msg: &CStr) {}
+fn android_log(_buf_id: Option<LogId>, _priority: log::Level, _tag: &CStr, _msg: &CStr) {}
/// Underlying android logger backend
+#[derive(Debug, Default)]
pub struct AndroidLogger {
- config: OnceCell<Config>,
+ config: OnceLock<Config>,
}
impl AndroidLogger {
/// Create new logger instance from config
pub fn new(config: Config) -> AndroidLogger {
AndroidLogger {
- config: OnceCell::from(config),
+ config: OnceLock::from(config),
}
}
@@ -198,25 +142,22 @@
}
}
-static ANDROID_LOGGER: OnceCell<AndroidLogger> = OnceCell::new();
+static ANDROID_LOGGER: OnceLock<AndroidLogger> = OnceLock::new();
-const LOGGING_TAG_MAX_LEN: usize = 23;
+/// Maximum length of a tag that does not require allocation.
+///
+/// Tags configured explicitly in [Config] will not cause an extra allocation. When the tag is
+/// derived from the module path, paths longer than this limit will trigger an allocation for each
+/// log statement.
+///
+/// The terminating nullbyte does not count towards this limit.
+const LOGGING_TAG_MAX_LEN: usize = 127;
const LOGGING_MSG_MAX_LEN: usize = 4000;
-impl Default for AndroidLogger {
- /// Create a new logger with default config
- fn default() -> AndroidLogger {
- AndroidLogger {
- config: OnceCell::from(Config::default()),
- }
- }
-}
-
impl Log for AndroidLogger {
fn enabled(&self, metadata: &Metadata) -> bool {
- let config = self.config();
- // todo: consider __android_log_is_loggable.
- metadata.level() <= config.log_level.unwrap_or_else(log::max_level)
+ self.config()
+ .is_loggable(metadata.target(), metadata.level())
}
fn log(&self, record: &Record) {
@@ -232,22 +173,24 @@
return;
}
- // tag must not exceed LOGGING_TAG_MAX_LEN
+ // Temporary storage for null-terminating record.module_path() if it's needed.
+ // Tags too long to fit here cause allocation.
let mut tag_bytes: [MaybeUninit<u8>; LOGGING_TAG_MAX_LEN + 1] = uninit_array();
+ // In case we end up allocating, keep the CString alive.
+ let _owned_tag;
- let module_path = record.module_path().unwrap_or_default().to_owned();
+ let module_path = record.module_path().unwrap_or_default();
- // If no tag was specified, use module name
- let custom_tag = &config.tag;
- let tag = custom_tag
- .as_ref()
- .map(|s| s.as_bytes())
- .unwrap_or_else(|| module_path.as_bytes());
-
- // truncate the tag here to fit into LOGGING_TAG_MAX_LEN
- self.fill_tag_bytes(&mut tag_bytes, tag);
- // use stack array as C string
- let tag: &CStr = unsafe { CStr::from_ptr(mem::transmute(tag_bytes.as_ptr())) };
+ let tag = if let Some(tag) = &config.tag {
+ tag
+ } else if module_path.len() < tag_bytes.len() {
+ fill_tag_bytes(&mut tag_bytes, module_path.as_bytes())
+ } else {
+ // Tag longer than available stack buffer; allocate.
+ _owned_tag = CString::new(module_path.as_bytes())
+ .expect("record.module_path() shouldn't contain nullbytes");
+ _owned_tag.as_ref()
+ };
// message must not exceed LOGGING_MSG_MAX_LEN
// therefore split log message into multiple log calls
@@ -255,7 +198,7 @@
// If a custom tag is used, add the module path to the message.
// Use PlatformLogWriter to output chunks if they exceed max size.
- let _ = match (custom_tag, &config.custom_format) {
+ let _ = match (&config.tag, &config.custom_format) {
(_, Some(format)) => format(&mut writer, record),
(Some(_), _) => fmt::write(
&mut writer,
@@ -271,266 +214,6 @@
fn flush(&self) {}
}
-impl AndroidLogger {
- fn fill_tag_bytes(&self, array: &mut [MaybeUninit<u8>], tag: &[u8]) {
- if tag.len() > LOGGING_TAG_MAX_LEN {
- for (input, output) in tag
- .iter()
- .take(LOGGING_TAG_MAX_LEN - 2)
- .chain(b"..\0".iter())
- .zip(array.iter_mut())
- {
- output.write(*input);
- }
- } else {
- for (input, output) in tag.iter().chain(b"\0".iter()).zip(array.iter_mut()) {
- output.write(*input);
- }
- }
- }
-}
-
-/// Filter for android logger.
-#[derive(Default)]
-pub struct Config {
- log_level: Option<LevelFilter>,
- buf_id: Option<LogId>,
- filter: Option<env_logger::filter::Filter>,
- tag: Option<CString>,
- custom_format: Option<FormatFn>,
-}
-
-impl Config {
- /// Changes the maximum log level.
- ///
- /// Note, that `Trace` is the maximum level, because it provides the
- /// maximum amount of detail in the emitted logs.
- ///
- /// If `Off` level is provided, then nothing is logged at all.
- ///
- /// [`log::max_level()`] is considered as the default level.
- pub fn with_max_level(mut self, level: LevelFilter) -> Self {
- self.log_level = Some(level);
- self
- }
-
- /// Changes the Android logging system buffer to be used.
- ///
- /// By default, logs are sent to the [`Main`] log. Other logging buffers may
- /// only be accessible to certain processes.
- ///
- /// [`Main`]: LogId::Main
- pub fn with_log_buffer(mut self, buf_id: LogId) -> Self {
- self.buf_id = Some(buf_id);
- self
- }
-
- fn filter_matches(&self, record: &Record) -> bool {
- if let Some(ref filter) = self.filter {
- filter.matches(record)
- } else {
- true
- }
- }
-
- pub fn with_filter(mut self, filter: env_logger::filter::Filter) -> Self {
- self.filter = Some(filter);
- self
- }
-
- pub fn with_tag<S: Into<Vec<u8>>>(mut self, tag: S) -> Self {
- self.tag = Some(CString::new(tag).expect("Can't convert tag to CString"));
- self
- }
-
- /// Sets the format function for formatting the log output.
- /// ```
- /// # use android_logger::Config;
- /// android_logger::init_once(
- /// Config::default()
- /// .with_max_level(log::LevelFilter::Trace)
- /// .format(|f, record| write!(f, "my_app: {}", record.args()))
- /// )
- /// ```
- pub fn format<F>(mut self, format: F) -> Self
- where
- F: Fn(&mut dyn fmt::Write, &Record) -> fmt::Result + Sync + Send + 'static,
- {
- self.custom_format = Some(Box::new(format));
- self
- }
-}
-
-pub struct PlatformLogWriter<'a> {
- #[cfg(target_os = "android")]
- priority: LogPriority,
- #[cfg(not(target_os = "android"))]
- priority: Level,
- #[cfg(target_os = "android")]
- buf_id: Option<log_ffi::log_id_t>,
- #[cfg(not(target_os = "android"))]
- buf_id: Option<LogId>,
- len: usize,
- last_newline_index: usize,
- tag: &'a CStr,
- buffer: [MaybeUninit<u8>; LOGGING_MSG_MAX_LEN + 1],
-}
-
-impl<'a> PlatformLogWriter<'a> {
- #[cfg(target_os = "android")]
- pub fn new_with_priority(
- buf_id: Option<LogId>,
- priority: log_ffi::LogPriority,
- tag: &CStr,
- ) -> PlatformLogWriter<'_> {
- #[allow(deprecated)] // created an issue #35 for this
- PlatformLogWriter {
- priority,
- buf_id: LogId::to_native(buf_id),
- len: 0,
- last_newline_index: 0,
- tag,
- buffer: uninit_array(),
- }
- }
-
- #[cfg(target_os = "android")]
- pub fn new(buf_id: Option<LogId>, level: Level, tag: &CStr) -> PlatformLogWriter<'_> {
- PlatformLogWriter::new_with_priority(
- buf_id,
- match level {
- Level::Warn => LogPriority::WARN,
- Level::Info => LogPriority::INFO,
- Level::Debug => LogPriority::DEBUG,
- Level::Error => LogPriority::ERROR,
- Level::Trace => LogPriority::VERBOSE,
- },
- tag,
- )
- }
-
- #[cfg(not(target_os = "android"))]
- pub fn new(buf_id: Option<LogId>, level: Level, tag: &CStr) -> PlatformLogWriter<'_> {
- #[allow(deprecated)] // created an issue #35 for this
- PlatformLogWriter {
- priority: level,
- buf_id,
- len: 0,
- last_newline_index: 0,
- tag,
- buffer: uninit_array(),
- }
- }
-
- /// Flush some bytes to android logger.
- ///
- /// If there is a newline, flush up to it.
- /// If ther was no newline, flush all.
- ///
- /// Not guaranteed to flush everything.
- fn temporal_flush(&mut self) {
- let total_len = self.len;
-
- if total_len == 0 {
- return;
- }
-
- if self.last_newline_index > 0 {
- let copy_from_index = self.last_newline_index;
- let remaining_chunk_len = total_len - copy_from_index;
-
- self.output_specified_len(copy_from_index);
- self.copy_bytes_to_start(copy_from_index, remaining_chunk_len);
- self.len = remaining_chunk_len;
- } else {
- self.output_specified_len(total_len);
- self.len = 0;
- }
- self.last_newline_index = 0;
- }
-
- /// Flush everything remaining to android logger.
- pub fn flush(&mut self) {
- let total_len = self.len;
-
- if total_len == 0 {
- return;
- }
-
- self.output_specified_len(total_len);
- self.len = 0;
- self.last_newline_index = 0;
- }
-
- /// Output buffer up until the \0 which will be placed at `len` position.
- fn output_specified_len(&mut self, len: usize) {
- let mut last_byte = MaybeUninit::new(b'\0');
-
- mem::swap(&mut last_byte, unsafe {
- self.buffer.get_unchecked_mut(len)
- });
-
- let msg: &CStr = unsafe { CStr::from_ptr(self.buffer.as_ptr().cast()) };
- android_log(self.buf_id, self.priority, self.tag, msg);
-
- unsafe { *self.buffer.get_unchecked_mut(len) = last_byte };
- }
-
- /// Copy `len` bytes from `index` position to starting position.
- fn copy_bytes_to_start(&mut self, index: usize, len: usize) {
- let dst = self.buffer.as_mut_ptr();
- let src = unsafe { self.buffer.as_ptr().add(index) };
- unsafe { ptr::copy(src, dst, len) };
- }
-}
-
-impl<'a> fmt::Write for PlatformLogWriter<'a> {
- fn write_str(&mut self, s: &str) -> fmt::Result {
- let mut incomming_bytes = s.as_bytes();
-
- while !incomming_bytes.is_empty() {
- let len = self.len;
-
- // write everything possible to buffer and mark last \n
- let new_len = len + incomming_bytes.len();
- let last_newline = self.buffer[len..LOGGING_MSG_MAX_LEN]
- .iter_mut()
- .zip(incomming_bytes)
- .enumerate()
- .fold(None, |acc, (i, (output, input))| {
- output.write(*input);
- if *input == b'\n' {
- Some(i)
- } else {
- acc
- }
- });
-
- // update last \n index
- if let Some(newline) = last_newline {
- self.last_newline_index = len + newline;
- }
-
- // calculate how many bytes were written
- let written_len = if new_len <= LOGGING_MSG_MAX_LEN {
- // if the len was not exceeded
- self.len = new_len;
- new_len - len // written len
- } else {
- // if new length was exceeded
- self.len = LOGGING_MSG_MAX_LEN;
- self.temporal_flush();
-
- LOGGING_MSG_MAX_LEN - len // written len
- };
-
- incomming_bytes = &incomming_bytes[written_len..];
- }
-
- Ok(())
- }
-}
-
/// Send a log record to Android logging backend.
///
/// This action does not require initialization. However, without initialization it
@@ -553,7 +236,7 @@
let logger = ANDROID_LOGGER.get_or_init(|| AndroidLogger::new(config));
if let Err(err) = log::set_logger(logger) {
- debug!("android_logger: log::set_logger failed: {}", err);
+ log::debug!("android_logger: log::set_logger failed: {}", err);
} else if let Some(level) = log_level {
log::set_max_level(level);
}
@@ -561,218 +244,6 @@
// the existing "android_logger default level is Off" behavior by explicitly setting the level.
#[cfg(target_os = "android")]
if log_level.is_none() {
- log::set_max_level(LevelFilter::Off);
- }
-}
-
-// FIXME: When `maybe_uninit_uninit_array ` is stabilized, use it instead of this helper
-fn uninit_array<const N: usize, T>() -> [MaybeUninit<T>; N] {
- // SAFETY: Array contains MaybeUninit, which is fine to be uninit
- unsafe { MaybeUninit::uninit().assume_init() }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use std::fmt::Write;
- use std::sync::atomic::{AtomicBool, Ordering};
-
- #[test]
- fn check_config_values() {
- // Filter is checked in config_filter_match below.
- let config = Config::default()
- .with_max_level(LevelFilter::Trace)
- .with_log_buffer(LogId::System)
- .with_tag("my_app");
-
- assert_eq!(config.log_level, Some(LevelFilter::Trace));
- assert_eq!(config.buf_id, Some(LogId::System));
- assert_eq!(config.tag, Some(CString::new("my_app").unwrap()));
- }
-
- #[test]
- fn log_calls_formatter() {
- static FORMAT_FN_WAS_CALLED: AtomicBool = AtomicBool::new(false);
- let config = Config::default()
- .with_max_level(LevelFilter::Info)
- .format(|_, _| {
- FORMAT_FN_WAS_CALLED.store(true, Ordering::SeqCst);
- Ok(())
- });
- let logger = AndroidLogger::new(config);
-
- logger.log(&Record::builder().level(Level::Info).build());
-
- assert!(FORMAT_FN_WAS_CALLED.load(Ordering::SeqCst));
- }
-
- #[test]
- fn logger_enabled_threshold() {
- let logger = AndroidLogger::new(Config::default().with_max_level(LevelFilter::Info));
-
- assert!(logger.enabled(&log::MetadataBuilder::new().level(Level::Warn).build()));
- assert!(logger.enabled(&log::MetadataBuilder::new().level(Level::Info).build()));
- assert!(!logger.enabled(&log::MetadataBuilder::new().level(Level::Debug).build()));
- }
-
- // Test whether the filter gets called correctly. Not meant to be exhaustive for all filter
- // options, as these are handled directly by the filter itself.
- #[cfg(not(default_log_impl))]
- #[test]
- fn config_filter_match() {
- let info_record = Record::builder().level(Level::Info).build();
- let debug_record = Record::builder().level(Level::Debug).build();
-
- let info_all_filter = env_logger::filter::Builder::new().parse("info").build();
- let info_all_config = Config::default().with_filter(info_all_filter);
-
- assert!(info_all_config.filter_matches(&info_record));
- assert!(!info_all_config.filter_matches(&debug_record));
- }
-
- #[test]
- fn fill_tag_bytes_truncates_long_tag() {
- let logger = AndroidLogger::new(Config::default());
- let too_long_tag: [u8; LOGGING_TAG_MAX_LEN + 20] = [b'a'; LOGGING_TAG_MAX_LEN + 20];
-
- let mut result: [MaybeUninit<u8>; LOGGING_TAG_MAX_LEN + 1] = uninit_array();
- logger.fill_tag_bytes(&mut result, &too_long_tag);
-
- let mut expected_result = [b'a'; LOGGING_TAG_MAX_LEN - 2].to_vec();
- expected_result.extend("..\0".as_bytes());
- assert_eq!(unsafe { assume_init_slice(&result) }, expected_result);
- }
-
- #[test]
- fn fill_tag_bytes_keeps_short_tag() {
- let logger = AndroidLogger::new(Config::default());
- let short_tag: [u8; 3] = [b'a'; 3];
-
- let mut result: [MaybeUninit<u8>; LOGGING_TAG_MAX_LEN + 1] = uninit_array();
- logger.fill_tag_bytes(&mut result, &short_tag);
-
- let mut expected_result = short_tag.to_vec();
- expected_result.push(0);
- assert_eq!(unsafe { assume_init_slice(&result[..4]) }, expected_result);
- }
-
- #[test]
- fn platform_log_writer_init_values() {
- let tag = CStr::from_bytes_with_nul(b"tag\0").unwrap();
-
- let writer = PlatformLogWriter::new(None, Level::Warn, tag);
-
- assert_eq!(writer.tag, tag);
- // Android uses LogPriority instead, which doesn't implement equality checks
- #[cfg(not(target_os = "android"))]
- assert_eq!(writer.priority, Level::Warn);
- }
-
- #[test]
- fn temporal_flush() {
- let mut writer = get_tag_writer();
-
- writer
- .write_str("12\n\n567\n90")
- .expect("Unable to write to PlatformLogWriter");
-
- assert_eq!(writer.len, 10);
- writer.temporal_flush();
- // Should have flushed up until the last newline.
- assert_eq!(writer.len, 3);
- assert_eq!(writer.last_newline_index, 0);
- assert_eq!(
- unsafe { assume_init_slice(&writer.buffer[..writer.len]) },
- "\n90".as_bytes()
- );
-
- writer.temporal_flush();
- // Should have flushed all remaining bytes.
- assert_eq!(writer.len, 0);
- assert_eq!(writer.last_newline_index, 0);
- }
-
- #[test]
- fn flush() {
- let mut writer = get_tag_writer();
- writer
- .write_str("abcdefghij\n\nklm\nnopqr\nstuvwxyz")
- .expect("Unable to write to PlatformLogWriter");
-
- writer.flush();
-
- assert_eq!(writer.last_newline_index, 0);
- assert_eq!(writer.len, 0);
- }
-
- #[test]
- fn last_newline_index() {
- let mut writer = get_tag_writer();
-
- writer
- .write_str("12\n\n567\n90")
- .expect("Unable to write to PlatformLogWriter");
-
- assert_eq!(writer.last_newline_index, 7);
- }
-
- #[test]
- fn output_specified_len_leaves_buffer_unchanged() {
- let mut writer = get_tag_writer();
- let log_string = "abcdefghij\n\nklm\nnopqr\nstuvwxyz";
- writer
- .write_str(log_string)
- .expect("Unable to write to PlatformLogWriter");
-
- writer.output_specified_len(5);
-
- assert_eq!(
- unsafe { assume_init_slice(&writer.buffer[..log_string.len()]) },
- log_string.as_bytes()
- );
- }
-
- #[test]
- fn copy_bytes_to_start() {
- let mut writer = get_tag_writer();
- writer
- .write_str("0123456789")
- .expect("Unable to write to PlatformLogWriter");
-
- writer.copy_bytes_to_start(3, 2);
-
- assert_eq!(
- unsafe { assume_init_slice(&writer.buffer[..10]) },
- "3423456789".as_bytes()
- );
- }
-
- #[test]
- fn copy_bytes_to_start_nop() {
- let test_string = "Test_string_with\n\n\n\nnewlines\n";
- let mut writer = get_tag_writer();
- writer
- .write_str(test_string)
- .expect("Unable to write to PlatformLogWriter");
-
- writer.copy_bytes_to_start(0, 20);
- writer.copy_bytes_to_start(10, 0);
-
- assert_eq!(
- unsafe { assume_init_slice(&writer.buffer[..test_string.len()]) },
- test_string.as_bytes()
- );
- }
-
- fn get_tag_writer() -> PlatformLogWriter<'static> {
- PlatformLogWriter::new(
- None,
- Level::Warn,
- CStr::from_bytes_with_nul(b"tag\0").unwrap(),
- )
- }
-
- unsafe fn assume_init_slice<T>(slice: &[MaybeUninit<T>]) -> &[T] {
- &*(slice as *const [MaybeUninit<T>] as *const [T])
+ log::set_max_level(log::LevelFilter::Off);
}
}
diff --git a/crates/android_logger/src/platform_log_writer.rs b/crates/android_logger/src/platform_log_writer.rs
new file mode 100644
index 0000000..6a3da82
--- /dev/null
+++ b/crates/android_logger/src/platform_log_writer.rs
@@ -0,0 +1,333 @@
+#[cfg(default_log_impl)]
+use {
+ crate as log,
+ super::log_ffi,
+};
+
+use super::arrays::slice_assume_init_ref;
+use super::{LOGGING_MSG_MAX_LEN, LogId, android_log, uninit_array};
+use log::Level;
+#[cfg(target_os = "android")]
+use log_ffi::LogPriority;
+use std::ffi::CStr;
+use std::mem::MaybeUninit;
+use std::{fmt, mem, ptr};
+
+/// The purpose of this "writer" is to split logged messages on whitespace when the log message
+/// length exceeds the maximum. Without allocations.
+pub struct PlatformLogWriter<'a> {
+ #[cfg(target_os = "android")]
+ priority: LogPriority,
+ #[cfg(not(target_os = "android"))]
+ priority: Level,
+ #[cfg(target_os = "android")]
+ buf_id: Option<log_ffi::log_id_t>,
+ #[cfg(not(target_os = "android"))]
+ buf_id: Option<LogId>,
+ len: usize,
+ last_newline_index: usize,
+ tag: &'a CStr,
+ buffer: [MaybeUninit<u8>; LOGGING_MSG_MAX_LEN + 1],
+}
+
+impl PlatformLogWriter<'_> {
+ #[cfg(target_os = "android")]
+ pub fn new_with_priority(
+ buf_id: Option<LogId>,
+ priority: log_ffi::LogPriority,
+ tag: &CStr,
+ ) -> PlatformLogWriter<'_> {
+ #[allow(deprecated)] // created an issue #35 for this
+ PlatformLogWriter {
+ priority,
+ buf_id: LogId::to_native(buf_id),
+ len: 0,
+ last_newline_index: 0,
+ tag,
+ buffer: uninit_array(),
+ }
+ }
+
+ #[cfg(target_os = "android")]
+ pub fn new(buf_id: Option<LogId>, level: Level, tag: &CStr) -> PlatformLogWriter<'_> {
+ PlatformLogWriter::new_with_priority(
+ buf_id,
+ match level {
+ Level::Warn => LogPriority::WARN,
+ Level::Info => LogPriority::INFO,
+ Level::Debug => LogPriority::DEBUG,
+ Level::Error => LogPriority::ERROR,
+ Level::Trace => LogPriority::VERBOSE,
+ },
+ tag,
+ )
+ }
+
+ #[cfg(not(target_os = "android"))]
+ pub fn new(buf_id: Option<LogId>, level: Level, tag: &CStr) -> PlatformLogWriter<'_> {
+ #[allow(deprecated)] // created an issue #35 for this
+ PlatformLogWriter {
+ priority: level,
+ buf_id,
+ len: 0,
+ last_newline_index: 0,
+ tag,
+ buffer: uninit_array(),
+ }
+ }
+
+ /// Flush some bytes to android logger.
+ ///
+ /// If there is a newline, flush up to it.
+ /// If there was no newline, flush all.
+ ///
+ /// Not guaranteed to flush everything.
+ fn temporal_flush(&mut self) {
+ let total_len = self.len;
+
+ if total_len == 0 {
+ return;
+ }
+
+ if self.last_newline_index > 0 {
+ let copy_from_index = self.last_newline_index;
+ let remaining_chunk_len = total_len - copy_from_index;
+
+ unsafe { self.output_specified_len(copy_from_index) };
+ self.copy_bytes_to_start(copy_from_index, remaining_chunk_len);
+ self.len = remaining_chunk_len;
+ } else {
+ unsafe { self.output_specified_len(total_len) };
+ self.len = 0;
+ }
+ self.last_newline_index = 0;
+ }
+
+ /// Flush everything remaining to android logger.
+ pub fn flush(&mut self) {
+ let total_len = self.len;
+
+ if total_len == 0 {
+ return;
+ }
+
+ unsafe { self.output_specified_len(total_len) };
+ self.len = 0;
+ self.last_newline_index = 0;
+ }
+
+ /// Output buffer up until the \0 which will be placed at `len` position.
+ ///
+ /// # Safety
+ /// The first `len` bytes of `self.buffer` must be initialized and not contain nullbytes.
+ unsafe fn output_specified_len(&mut self, len: usize) {
+ let mut last_byte = MaybeUninit::new(b'\0');
+
+ mem::swap(
+ &mut last_byte,
+ self.buffer.get_mut(len).expect("`len` is out of bounds"),
+ );
+
+ let initialized = unsafe { slice_assume_init_ref(&self.buffer[..len + 1]) };
+ let msg = CStr::from_bytes_with_nul(initialized)
+ .expect("Unreachable: nul terminator was placed at `len`");
+ android_log(self.buf_id, self.priority, self.tag, msg);
+
+ unsafe { *self.buffer.get_unchecked_mut(len) = last_byte };
+ }
+
+ /// Copy `len` bytes from `index` position to starting position.
+ fn copy_bytes_to_start(&mut self, index: usize, len: usize) {
+ let dst = self.buffer.as_mut_ptr();
+ let src = unsafe { self.buffer.as_ptr().add(index) };
+ unsafe { ptr::copy(src, dst, len) };
+ }
+}
+
+impl fmt::Write for PlatformLogWriter<'_> {
+ fn write_str(&mut self, s: &str) -> fmt::Result {
+ let mut incoming_bytes = s.as_bytes();
+
+ while !incoming_bytes.is_empty() {
+ let len = self.len;
+
+ // write everything possible to buffer and mark last \n
+ let new_len = len + incoming_bytes.len();
+ let last_newline = self.buffer[len..LOGGING_MSG_MAX_LEN]
+ .iter_mut()
+ .zip(incoming_bytes)
+ .enumerate()
+ .fold(None, |acc, (i, (output, input))| {
+ if *input == b'\0' {
+ // Replace nullbytes with whitespace, so we can put the message in a CStr
+ // later to pass it through a const char*.
+ output.write(b' ');
+ } else {
+ output.write(*input);
+ }
+ if *input == b'\n' { Some(i) } else { acc }
+ });
+
+ // update last \n index
+ if let Some(newline) = last_newline {
+ self.last_newline_index = len + newline;
+ }
+
+ // calculate how many bytes were written
+ let written_len = if new_len <= LOGGING_MSG_MAX_LEN {
+ // if the len was not exceeded
+ self.len = new_len;
+ new_len - len // written len
+ } else {
+ // if new length was exceeded
+ self.len = LOGGING_MSG_MAX_LEN;
+ self.temporal_flush();
+
+ LOGGING_MSG_MAX_LEN - len // written len
+ };
+
+ incoming_bytes = &incoming_bytes[written_len..];
+ }
+
+ Ok(())
+ }
+}
+
+#[cfg(test)]
+pub mod tests {
+ use crate::arrays::slice_assume_init_ref;
+ use crate::platform_log_writer::PlatformLogWriter;
+ use log::Level;
+ use std::ffi::CStr;
+ use std::fmt::Write;
+
+ #[test]
+ fn platform_log_writer_init_values() {
+ let tag = CStr::from_bytes_with_nul(b"tag\0").unwrap();
+
+ let writer = PlatformLogWriter::new(None, Level::Warn, tag);
+
+ assert_eq!(writer.tag, tag);
+ // Android uses LogPriority instead, which doesn't implement equality checks
+ #[cfg(not(target_os = "android"))]
+ assert_eq!(writer.priority, Level::Warn);
+ }
+
+ #[test]
+ fn temporal_flush() {
+ let mut writer = get_tag_writer();
+
+ writer
+ .write_str("12\n\n567\n90")
+ .expect("Unable to write to PlatformLogWriter");
+
+ assert_eq!(writer.len, 10);
+ writer.temporal_flush();
+ // Should have flushed up until the last newline.
+ assert_eq!(writer.len, 3);
+ assert_eq!(writer.last_newline_index, 0);
+ assert_eq!(
+ unsafe { slice_assume_init_ref(&writer.buffer[..writer.len]) },
+ "\n90".as_bytes()
+ );
+
+ writer.temporal_flush();
+ // Should have flushed all remaining bytes.
+ assert_eq!(writer.len, 0);
+ assert_eq!(writer.last_newline_index, 0);
+ }
+
+ #[test]
+ fn flush() {
+ let mut writer = get_tag_writer();
+ writer
+ .write_str("abcdefghij\n\nklm\nnopqr\nstuvwxyz")
+ .expect("Unable to write to PlatformLogWriter");
+
+ writer.flush();
+
+ assert_eq!(writer.last_newline_index, 0);
+ assert_eq!(writer.len, 0);
+ }
+
+ #[test]
+ fn last_newline_index() {
+ let mut writer = get_tag_writer();
+
+ writer
+ .write_str("12\n\n567\n90")
+ .expect("Unable to write to PlatformLogWriter");
+
+ assert_eq!(writer.last_newline_index, 7);
+ }
+
+ #[test]
+ fn output_specified_len_leaves_buffer_unchanged() {
+ let mut writer = get_tag_writer();
+ let log_string = "abcdefghij\n\nklm\nnopqr\nstuvwxyz";
+ writer
+ .write_str(log_string)
+ .expect("Unable to write to PlatformLogWriter");
+
+ unsafe { writer.output_specified_len(5) };
+
+ assert_eq!(
+ unsafe { slice_assume_init_ref(&writer.buffer[..log_string.len()]) },
+ log_string.as_bytes()
+ );
+ }
+
+ #[test]
+ fn copy_bytes_to_start() {
+ let mut writer = get_tag_writer();
+ writer
+ .write_str("0123456789")
+ .expect("Unable to write to PlatformLogWriter");
+
+ writer.copy_bytes_to_start(3, 2);
+
+ assert_eq!(
+ unsafe { slice_assume_init_ref(&writer.buffer[..10]) },
+ "3423456789".as_bytes()
+ );
+ }
+
+ #[test]
+ fn copy_bytes_to_start_nop() {
+ let test_string = "Test_string_with\n\n\n\nnewlines\n";
+ let mut writer = get_tag_writer();
+ writer
+ .write_str(test_string)
+ .expect("Unable to write to PlatformLogWriter");
+
+ writer.copy_bytes_to_start(0, 20);
+ writer.copy_bytes_to_start(10, 0);
+
+ assert_eq!(
+ unsafe { slice_assume_init_ref(&writer.buffer[..test_string.len()]) },
+ test_string.as_bytes()
+ );
+ }
+
+ #[test]
+ fn writer_substitutes_nullbytes_with_spaces() {
+ let test_string = "Test_string_with\0\0\0\0nullbytes\0";
+ let mut writer = get_tag_writer();
+ writer
+ .write_str(test_string)
+ .expect("Unable to write to PlatformLogWriter");
+
+ assert_eq!(
+ unsafe { slice_assume_init_ref(&writer.buffer[..test_string.len()]) },
+ test_string.replace("\0", " ").as_bytes()
+ );
+ }
+
+ fn get_tag_writer() -> PlatformLogWriter<'static> {
+ PlatformLogWriter::new(
+ None,
+ Level::Warn,
+ CStr::from_bytes_with_nul(b"tag\0").unwrap(),
+ )
+ }
+}
diff --git a/crates/android_logger/src/tests.rs b/crates/android_logger/src/tests.rs
new file mode 100644
index 0000000..562a12f
--- /dev/null
+++ b/crates/android_logger/src/tests.rs
@@ -0,0 +1,79 @@
+use super::*;
+use log::LevelFilter;
+use std::sync::atomic::{AtomicBool, Ordering};
+
+#[test]
+fn check_config_values() {
+ // Filter is checked in config_filter_match below.
+ let config = Config::default()
+ .with_max_level(LevelFilter::Trace)
+ .with_log_buffer(LogId::System)
+ .with_tag("my_app");
+
+ assert_eq!(config.log_level, Some(LevelFilter::Trace));
+ assert_eq!(config.buf_id, Some(LogId::System));
+ assert_eq!(config.tag, Some(CString::new("my_app").unwrap()));
+}
+
+#[test]
+fn log_calls_formatter() {
+ static FORMAT_FN_WAS_CALLED: AtomicBool = AtomicBool::new(false);
+ let config = Config::default()
+ .with_max_level(LevelFilter::Info)
+ .format(|_, _| {
+ FORMAT_FN_WAS_CALLED.store(true, Ordering::SeqCst);
+ Ok(())
+ });
+ let logger = AndroidLogger::new(config);
+
+ logger.log(&Record::builder().level(log::Level::Info).build());
+
+ assert!(FORMAT_FN_WAS_CALLED.load(Ordering::SeqCst));
+}
+
+#[test]
+fn logger_enabled_threshold() {
+ let logger = AndroidLogger::new(Config::default().with_max_level(LevelFilter::Info));
+
+ assert!(logger.enabled(&log::MetadataBuilder::new().level(log::Level::Warn).build()));
+ assert!(logger.enabled(&log::MetadataBuilder::new().level(log::Level::Info).build()));
+ assert!(!logger.enabled(&log::MetadataBuilder::new().level(log::Level::Debug).build()));
+}
+
+// Test whether the filter gets called correctly. Not meant to be exhaustive for all filter
+// options, as these are handled directly by the filter itself.
+#[test]
+fn config_filter_match() {
+ let info_record = Record::builder().level(log::Level::Info).build();
+ let debug_record = Record::builder().level(log::Level::Debug).build();
+
+ let info_all_filter = env_filter::Builder::new().parse("info").build();
+ let info_all_config = Config::default().with_filter(info_all_filter);
+
+ assert!(info_all_config.filter_matches(&info_record));
+ assert!(!info_all_config.filter_matches(&debug_record));
+}
+
+#[test]
+fn fill_tag_bytes_truncates_long_tag() {
+ let too_long_tag = [b'a'; LOGGING_TAG_MAX_LEN + 20];
+
+ let mut result = uninit_array();
+ let tag = fill_tag_bytes(&mut result, &too_long_tag);
+
+ let mut expected_result = vec![b'a'; LOGGING_TAG_MAX_LEN - 2];
+ expected_result.extend("..\0".as_bytes());
+ assert_eq!(tag.to_bytes_with_nul(), expected_result);
+}
+
+#[test]
+fn fill_tag_bytes_keeps_short_tag() {
+ let short_tag = [b'a'; 3];
+
+ let mut result = uninit_array();
+ let tag = fill_tag_bytes(&mut result, &short_tag);
+
+ let mut expected_result = short_tag.to_vec();
+ expected_result.push(0);
+ assert_eq!(tag.to_bytes_with_nul(), expected_result);
+}
diff --git a/crates/anes/.android-checksum.json b/crates/anes/.android-checksum.json
index 1ec229a..fefb0d4 100644
--- a/crates/anes/.android-checksum.json
+++ b/crates/anes/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"10bbf7750855ddae5dee1dc563f0e42b36194b5d941baa1bdd73b8d823e29e79","Android.bp":"27be583dee57fd40c6335597a99ea8adae6e8929799983bec191ea213048b042","Cargo.lock":"f74a02800bea2ffd3e027597196794c1ddd6e79357bba7db185f890c6c623252","Cargo.toml":"66c8d6725c993e8ed780731a2c72f8190dbb4c7ba1ad685afd555ef2be320742","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"228513ad54e20fe5d87b1a433148d76778a3b921b4c75ba70c1c69e6ae47bd22","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6e7e3f6d692279a5d64d2782f781996617800698586b2d7e30138ceaab7ceaef","TEST_MAPPING":"8cf33be15e99806da9950ec4a01b4f5c28dc583fc07e18ac54059dd12ed82b78","benches/bench_main.rs":"03284414e31771a942614d70c858c419dd672e94abcc224c16b5ff6395c854ba","benches/benchmarks/mod.rs":"b464a12c0699b60eee7b6fa3610c33afcac3897a8d12f9ae7fcd1ed0929b767a","benches/benchmarks/parser.rs":"cb44c163e7875ad35f4659153978151e9cc77afe21dfdcde7c01552c2e53053b","cargo_embargo.json":"3ffe6838906fceceea2f52760d513de6991ac55ce3ce386f00d510baec068aed","examples/execute.rs":"80eabd1198076ac1f991a264970a649f49f5673834858a00b5b62ee03eb337b9","examples/parser.rs":"50cb9c4dc19dd9396a8ee4db5e3169c124c5c68b7afa4bddf9deedb5ee6f0885","examples/queue.rs":"6752ab46ce005fe03de47111f39bcab174c554456adb69775ffec986a750318f","examples/sequence.rs":"8e1aa33479200f1b5d7413b650cbe7ed00f438e502af3fbe611b26f3ba1ee3e5","examples/stdout.rs":"4ffc36d8d73715456af4da5aa200c08979214986d6dbd138267cbf316b1b925f","examples/string.rs":"1ec0cf7a8088322f3bd8f4788668b7739ad5886ba21aa0958feb847a55503765","src/lib.rs":"f01d52547705d6239f29ebd91df4fef3e3fbecfcf085a09e0267239c921dc402","src/macros.rs":"d6c7c0f85e6ef819503d41afcc42484f197c58eb54b73d18f275b36969235f91","src/parser.rs":"e271020f8e99d31eec2eb07e69e3cfaf11092344bf331e320a2d20bed9522661","src/parser/engine.rs":"aeb69a390288aee60adee9007aa37d102973073a85461dae9caa0ebde1bb42c7","src/parser/parsers.rs":"6dc66f47b2a58d4371268679930a0f3f1d0655f85abca6cde3d3944fac6407ca","src/parser/types.rs":"3f839bb87f91f9b9fc184374929bd1dc6b043a7f93c8ea99b4b996268c72a9f6","src/sequences.rs":"1d67563b5f443cca60eaa72aa771115fdef53055bef174097bc8da7d672994ad","src/sequences/attribute.rs":"b401ba014e641d9b9170b943a00af7d49f01c599cd1b43e1ce372e0b1bb60c00","src/sequences/buffer.rs":"7972697126bde33834c8818a929b7dc370b62a1f9bd3327fa90a571ea5a3642e","src/sequences/color.rs":"a3ce0f51d56ee86e399fc9f6b5f7a8a1ad65f7aa0fe696c4dc088f1009d08ea0","src/sequences/cursor.rs":"fbebb72e3b4db95df4cc090b0f81eaabe5e25ef0e44a30ca8fc69f9c5c662f8e","src/sequences/terminal.rs":"6b8b226dbc3c91d53cbd8045ca453e60134f9221212325e33608d023229b12e9","tests/parser/cursor.rs":"df76e7cd2e6c6bea4a1d7244f272424c52dc2a7ffdfd2fb43d014a58d4e014ff","tests/parser/key.rs":"f53126afa0269fbb6d7260e1e10fb04d0090c65b7b68f33cac3340e0cf0352aa","tests/parser/mod.rs":"01d8475f26bec8da1874cf76b31255e38609c6e6a6bf4e60570d3c627edc0015","tests/parser/mouse/mod.rs":"63cd9ec8417bd0a64013137215a78ec4e063f3568db0976a7ce2b3ba5664ce92","tests/parser/mouse/rxvt.rs":"22c167e19456cb109b7c15b78ce61ac539dbbb54edf53554490f890fa605ee56","tests/parser/mouse/xterm.rs":"722cab4c7a90ac42489889f2570ece44749f9bd91d55e39c0b851038bcdb435d","tests/tests.rs":"c849103ea68eac0eae537cac252326917021c51d9279ede5bb429cdab719a0f6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"10bbf7750855ddae5dee1dc563f0e42b36194b5d941baa1bdd73b8d823e29e79","Android.bp":"69c98ed94fe681b108558179089f0a86dffe15cbfe7f6cfa92161b1908b9bde3","Cargo.lock":"f74a02800bea2ffd3e027597196794c1ddd6e79357bba7db185f890c6c623252","Cargo.toml":"66c8d6725c993e8ed780731a2c72f8190dbb4c7ba1ad685afd555ef2be320742","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"228513ad54e20fe5d87b1a433148d76778a3b921b4c75ba70c1c69e6ae47bd22","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6e7e3f6d692279a5d64d2782f781996617800698586b2d7e30138ceaab7ceaef","TEST_MAPPING":"8cf33be15e99806da9950ec4a01b4f5c28dc583fc07e18ac54059dd12ed82b78","benches/bench_main.rs":"03284414e31771a942614d70c858c419dd672e94abcc224c16b5ff6395c854ba","benches/benchmarks/mod.rs":"b464a12c0699b60eee7b6fa3610c33afcac3897a8d12f9ae7fcd1ed0929b767a","benches/benchmarks/parser.rs":"cb44c163e7875ad35f4659153978151e9cc77afe21dfdcde7c01552c2e53053b","cargo_embargo.json":"6e4b447256f51506f0cdaad7d80a0ab261b555f4f709a1a79d0704366a115f3f","examples/execute.rs":"80eabd1198076ac1f991a264970a649f49f5673834858a00b5b62ee03eb337b9","examples/parser.rs":"50cb9c4dc19dd9396a8ee4db5e3169c124c5c68b7afa4bddf9deedb5ee6f0885","examples/queue.rs":"6752ab46ce005fe03de47111f39bcab174c554456adb69775ffec986a750318f","examples/sequence.rs":"8e1aa33479200f1b5d7413b650cbe7ed00f438e502af3fbe611b26f3ba1ee3e5","examples/stdout.rs":"4ffc36d8d73715456af4da5aa200c08979214986d6dbd138267cbf316b1b925f","examples/string.rs":"1ec0cf7a8088322f3bd8f4788668b7739ad5886ba21aa0958feb847a55503765","src/lib.rs":"f01d52547705d6239f29ebd91df4fef3e3fbecfcf085a09e0267239c921dc402","src/macros.rs":"d6c7c0f85e6ef819503d41afcc42484f197c58eb54b73d18f275b36969235f91","src/parser.rs":"e271020f8e99d31eec2eb07e69e3cfaf11092344bf331e320a2d20bed9522661","src/parser/engine.rs":"aeb69a390288aee60adee9007aa37d102973073a85461dae9caa0ebde1bb42c7","src/parser/parsers.rs":"6dc66f47b2a58d4371268679930a0f3f1d0655f85abca6cde3d3944fac6407ca","src/parser/types.rs":"3f839bb87f91f9b9fc184374929bd1dc6b043a7f93c8ea99b4b996268c72a9f6","src/sequences.rs":"1d67563b5f443cca60eaa72aa771115fdef53055bef174097bc8da7d672994ad","src/sequences/attribute.rs":"b401ba014e641d9b9170b943a00af7d49f01c599cd1b43e1ce372e0b1bb60c00","src/sequences/buffer.rs":"7972697126bde33834c8818a929b7dc370b62a1f9bd3327fa90a571ea5a3642e","src/sequences/color.rs":"a3ce0f51d56ee86e399fc9f6b5f7a8a1ad65f7aa0fe696c4dc088f1009d08ea0","src/sequences/cursor.rs":"fbebb72e3b4db95df4cc090b0f81eaabe5e25ef0e44a30ca8fc69f9c5c662f8e","src/sequences/terminal.rs":"6b8b226dbc3c91d53cbd8045ca453e60134f9221212325e33608d023229b12e9","tests/parser/cursor.rs":"df76e7cd2e6c6bea4a1d7244f272424c52dc2a7ffdfd2fb43d014a58d4e014ff","tests/parser/key.rs":"f53126afa0269fbb6d7260e1e10fb04d0090c65b7b68f33cac3340e0cf0352aa","tests/parser/mod.rs":"01d8475f26bec8da1874cf76b31255e38609c6e6a6bf4e60570d3c627edc0015","tests/parser/mouse/mod.rs":"63cd9ec8417bd0a64013137215a78ec4e063f3568db0976a7ce2b3ba5664ce92","tests/parser/mouse/rxvt.rs":"22c167e19456cb109b7c15b78ce61ac539dbbb54edf53554490f890fa605ee56","tests/parser/mouse/xterm.rs":"722cab4c7a90ac42489889f2570ece44749f9bd91d55e39c0b851038bcdb435d","tests/tests.rs":"c849103ea68eac0eae537cac252326917021c51d9279ede5bb429cdab719a0f6"}}
\ No newline at end of file
diff --git a/crates/anes/Android.bp b/crates/anes/Android.bp
index 3e33171..5bf1b80 100644
--- a/crates/anes/Android.bp
+++ b/crates/anes/Android.bp
@@ -81,4 +81,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/anes/cargo_embargo.json b/crates/anes/cargo_embargo.json
index 6261ca4..53a53b2 100644
--- a/crates/anes/cargo_embargo.json
+++ b/crates/anes/cargo_embargo.json
@@ -3,5 +3,6 @@
"features": [
"parser"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/annotate-snippets/.android-checksum.json b/crates/annotate-snippets/.android-checksum.json
index b7570a4..78d08a1 100644
--- a/crates/annotate-snippets/.android-checksum.json
+++ b/crates/annotate-snippets/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e68d2773518234d8c8a8ec89a1665586c3366890420c0d6529bc07643dad1046","Android.bp":"61f955506b4405c8256d03c7231a56b5976b29677f141c635161fd9b903b4eff","CHANGELOG.md":"b0d3ab8d104259030a9f43563b93b7bbc43ef2111c8e95088eabbd5917cfab06","Cargo.lock":"85822f769e2bcea81ed8bffa5abda3e1642d2beb418c46faa990da12af1b821a","Cargo.toml":"5439ca3c3ad501b88227d08b16482874c6f9fb478cd9226991573e2abad06d78","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"31088c68c0eb3c018aaa790bea4670e49e6678d17458ce7429a057d9edbec727","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cd6d7b5e2f8ba0516f09ba989cda20eebd2386aaa4dd31466ed486628a221ca3","benches/simple.rs":"f73e20630969923610a47f8f3221b008d30efe0f84bc1ba40e88e83cfd5fecd5","cargo_embargo.json":"1839c3c323342cc7d33a11a7c64b2abc8862fe84746531995a313e64b2d12404","examples/expected_type.rs":"cbc6f148855b9b65e6178aad5580dec6c9c035147c3c84c7f9aa39d3379296f6","examples/footer.rs":"8da06bb474017981cfecb895ebe41905c1127a43309f456444eab75e02792ad2","examples/format.rs":"a5e277228ce437a8b14da26e30c07bf898609fb251a019a5724fa800bbed8d5b","examples/multislice.rs":"c4df8ea49d9e6c50e6e8b8e6266b41d6bbc0d77163bc0f1292a79f731e750eab","src/display_list/from_snippet.rs":"17d34f2142b0ade2f79614a03665431a2c71bba66e198e96703f3072d2bf6d32","src/display_list/mod.rs":"7117c0024a70036ab3db229aba0f3318eba89f0cb23191cff1bf701c76a6f8d2","src/display_list/structs.rs":"251a06a91593d10a6da5f496051c505dd65ee8c4d57cb3d038a65a7cb4ef3d47","src/formatter/mod.rs":"11230403a29133ce0c960002d67cedf84b724f2e5e02865132d4b0b170ab2105","src/formatter/style.rs":"fe80bea66b759595d7551089071c03af7b1411e8876d89e349cbde5950e5f2c8","src/lib.rs":"7996d53cb7940c7afea209cb43b34ebf3bb0cbef8d971352dd8ebeb22842de1b","src/snippet.rs":"cf513952764722a468493048fd8535e930193f9455d6b331d3cb92e1c798057e","src/stylesheets/color.rs":"ba0f1913c21947503155ebe1fe002bd1d976d833f4d8e1dd1ebc18a3f8211158","src/stylesheets/mod.rs":"40e2fd6660f517550fc27fced3c298b8d78f6b58912f792ebafc334bd4c6f816","src/stylesheets/no_color.rs":"e5f080cf8bbf972420dfba149dc7343ba17bc5c15ee1060ca0acff7d9899a93d","tests/diff/mod.rs":"bf162e5da7ddf3b5ebc1eed6cc6d0ec93028fd29a6e8d3e0a846980a9b10c291","tests/dl_from_snippet.rs":"afa957d2a764a395f5451c8ae46e4510fbb58cc84675970cf06cdb06fd384133","tests/fixtures/no-color/issue_52.toml":"224df4fc27dfcc3e42cdc9fee14b48e95c06077583e66f32952a672bab314405","tests/fixtures/no-color/issue_52.txt":"6e202e236b25be677983b5c9a8131d32db1166d507a25c1388a2952ced081158","tests/fixtures/no-color/issue_9.toml":"2057bb907054650b7dfa1d89f766ce711a9506e0b933c4e4b8a9c5820610063d","tests/fixtures/no-color/issue_9.txt":"9eea3ad6b2ed83bce4654faa271c81581cafd1256049f4ab6243b124c44da1e5","tests/fixtures/no-color/multiline_annotation.toml":"d4d7b218ceae2e9468444132f8436871557872efb496e8e0af9085165e41c73c","tests/fixtures/no-color/multiline_annotation.txt":"8eddf457578fa2316b116a9cb74cd3c5f5c44751c8c581a091b7faf2a903e5b8","tests/fixtures/no-color/multiline_annotation2.toml":"0be89714842bb1d55a465ff23660e4fe7270bf8e430d0328e88bea85f43b7110","tests/fixtures/no-color/multiline_annotation2.txt":"cc668492c6be5668a062a0bc5ddee5be76c4782d83e19fd44d4852b653adebbb","tests/fixtures/no-color/multiline_annotation3.toml":"da7c8700d93b98f9a89834fffed8838bd3252af4f50ab17a20c77922ab609545","tests/fixtures/no-color/multiline_annotation3.txt":"7a3e928caa88aa57e26ab6eebba3cd856f7dbef477beb487d7f3f1115a5fc841","tests/fixtures/no-color/multiple_annotations.toml":"31bd9214b437ad32346c00cbbad93631d09e3b6d902ab02de07312750464cf06","tests/fixtures/no-color/multiple_annotations.txt":"0d1a589df13759c2c048a98014f66c8c08ff5413028c51b95ef10c50475fefb1","tests/fixtures/no-color/simple.toml":"963a1db7338d52904b210c91cd6ae11d57ca7c75f6cc69d063ba87e97d0efc94","tests/fixtures/no-color/simple.txt":"50d323cec438a3015c69376744aa2347bdadce67a4a925dbaa0710cbd9446fc5","tests/fixtures/no-color/strip_line.toml":"c57c5768582258689b6d6a3a564d2d46f3cb315d9607ea027577a9d96c847ae3","tests/fixtures/no-color/strip_line.txt":"5ec085559b9e2f6de1554c73a3c252e604798b437114122421b97a4631aefece","tests/fixtures/no-color/strip_line_char.toml":"d77ef024a07149d8cc5fe7915c379bd8d67ca71d72d0bcf80994b9c67e1d0372","tests/fixtures/no-color/strip_line_char.txt":"19ff5bc044346c26527fb25df8fb5a235b7b1a9f0b9f7020034fd2d0c1b5dd51","tests/fixtures/no-color/strip_line_non_ws.toml":"e370ce699bab476128fc9fbff20c863be54f2881b87a25e70d219fa1c982a290","tests/fixtures/no-color/strip_line_non_ws.txt":"5b561725eb823bac8980d82597e178d372c01d6076562930644d358c622c42e9","tests/fixtures_test.rs":"53b2daa0371c19f7696ca636bbf1a8ae375453399370006ad9e73e497c02cea8","tests/formatter.rs":"e7c11ff53cdf9ac6e2baedc04a4e60b5dfebe0f8c7e0a91b38a8e5c2fd337ba0","tests/snippet/mod.rs":"cc0a0f79e9961985d7c75b92927048df9a2269400ded2ac686d99cce316603f6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e68d2773518234d8c8a8ec89a1665586c3366890420c0d6529bc07643dad1046","Android.bp":"61f955506b4405c8256d03c7231a56b5976b29677f141c635161fd9b903b4eff","CHANGELOG.md":"b0d3ab8d104259030a9f43563b93b7bbc43ef2111c8e95088eabbd5917cfab06","Cargo.lock":"85822f769e2bcea81ed8bffa5abda3e1642d2beb418c46faa990da12af1b821a","Cargo.toml":"5439ca3c3ad501b88227d08b16482874c6f9fb478cd9226991573e2abad06d78","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"31088c68c0eb3c018aaa790bea4670e49e6678d17458ce7429a057d9edbec727","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cd6d7b5e2f8ba0516f09ba989cda20eebd2386aaa4dd31466ed486628a221ca3","benches/simple.rs":"f73e20630969923610a47f8f3221b008d30efe0f84bc1ba40e88e83cfd5fecd5","cargo_embargo.json":"cf85545480adedccde24dffb565efe14fd02a6b3b21af90e2d85c6086fba55b5","examples/expected_type.rs":"cbc6f148855b9b65e6178aad5580dec6c9c035147c3c84c7f9aa39d3379296f6","examples/footer.rs":"8da06bb474017981cfecb895ebe41905c1127a43309f456444eab75e02792ad2","examples/format.rs":"a5e277228ce437a8b14da26e30c07bf898609fb251a019a5724fa800bbed8d5b","examples/multislice.rs":"c4df8ea49d9e6c50e6e8b8e6266b41d6bbc0d77163bc0f1292a79f731e750eab","src/display_list/from_snippet.rs":"17d34f2142b0ade2f79614a03665431a2c71bba66e198e96703f3072d2bf6d32","src/display_list/mod.rs":"7117c0024a70036ab3db229aba0f3318eba89f0cb23191cff1bf701c76a6f8d2","src/display_list/structs.rs":"251a06a91593d10a6da5f496051c505dd65ee8c4d57cb3d038a65a7cb4ef3d47","src/formatter/mod.rs":"11230403a29133ce0c960002d67cedf84b724f2e5e02865132d4b0b170ab2105","src/formatter/style.rs":"fe80bea66b759595d7551089071c03af7b1411e8876d89e349cbde5950e5f2c8","src/lib.rs":"7996d53cb7940c7afea209cb43b34ebf3bb0cbef8d971352dd8ebeb22842de1b","src/snippet.rs":"cf513952764722a468493048fd8535e930193f9455d6b331d3cb92e1c798057e","src/stylesheets/color.rs":"ba0f1913c21947503155ebe1fe002bd1d976d833f4d8e1dd1ebc18a3f8211158","src/stylesheets/mod.rs":"40e2fd6660f517550fc27fced3c298b8d78f6b58912f792ebafc334bd4c6f816","src/stylesheets/no_color.rs":"e5f080cf8bbf972420dfba149dc7343ba17bc5c15ee1060ca0acff7d9899a93d","tests/diff/mod.rs":"bf162e5da7ddf3b5ebc1eed6cc6d0ec93028fd29a6e8d3e0a846980a9b10c291","tests/dl_from_snippet.rs":"afa957d2a764a395f5451c8ae46e4510fbb58cc84675970cf06cdb06fd384133","tests/fixtures/no-color/issue_52.toml":"224df4fc27dfcc3e42cdc9fee14b48e95c06077583e66f32952a672bab314405","tests/fixtures/no-color/issue_52.txt":"6e202e236b25be677983b5c9a8131d32db1166d507a25c1388a2952ced081158","tests/fixtures/no-color/issue_9.toml":"2057bb907054650b7dfa1d89f766ce711a9506e0b933c4e4b8a9c5820610063d","tests/fixtures/no-color/issue_9.txt":"9eea3ad6b2ed83bce4654faa271c81581cafd1256049f4ab6243b124c44da1e5","tests/fixtures/no-color/multiline_annotation.toml":"d4d7b218ceae2e9468444132f8436871557872efb496e8e0af9085165e41c73c","tests/fixtures/no-color/multiline_annotation.txt":"8eddf457578fa2316b116a9cb74cd3c5f5c44751c8c581a091b7faf2a903e5b8","tests/fixtures/no-color/multiline_annotation2.toml":"0be89714842bb1d55a465ff23660e4fe7270bf8e430d0328e88bea85f43b7110","tests/fixtures/no-color/multiline_annotation2.txt":"cc668492c6be5668a062a0bc5ddee5be76c4782d83e19fd44d4852b653adebbb","tests/fixtures/no-color/multiline_annotation3.toml":"da7c8700d93b98f9a89834fffed8838bd3252af4f50ab17a20c77922ab609545","tests/fixtures/no-color/multiline_annotation3.txt":"7a3e928caa88aa57e26ab6eebba3cd856f7dbef477beb487d7f3f1115a5fc841","tests/fixtures/no-color/multiple_annotations.toml":"31bd9214b437ad32346c00cbbad93631d09e3b6d902ab02de07312750464cf06","tests/fixtures/no-color/multiple_annotations.txt":"0d1a589df13759c2c048a98014f66c8c08ff5413028c51b95ef10c50475fefb1","tests/fixtures/no-color/simple.toml":"963a1db7338d52904b210c91cd6ae11d57ca7c75f6cc69d063ba87e97d0efc94","tests/fixtures/no-color/simple.txt":"50d323cec438a3015c69376744aa2347bdadce67a4a925dbaa0710cbd9446fc5","tests/fixtures/no-color/strip_line.toml":"c57c5768582258689b6d6a3a564d2d46f3cb315d9607ea027577a9d96c847ae3","tests/fixtures/no-color/strip_line.txt":"5ec085559b9e2f6de1554c73a3c252e604798b437114122421b97a4631aefece","tests/fixtures/no-color/strip_line_char.toml":"d77ef024a07149d8cc5fe7915c379bd8d67ca71d72d0bcf80994b9c67e1d0372","tests/fixtures/no-color/strip_line_char.txt":"19ff5bc044346c26527fb25df8fb5a235b7b1a9f0b9f7020034fd2d0c1b5dd51","tests/fixtures/no-color/strip_line_non_ws.toml":"e370ce699bab476128fc9fbff20c863be54f2881b87a25e70d219fa1c982a290","tests/fixtures/no-color/strip_line_non_ws.txt":"5b561725eb823bac8980d82597e178d372c01d6076562930644d358c622c42e9","tests/fixtures_test.rs":"53b2daa0371c19f7696ca636bbf1a8ae375453399370006ad9e73e497c02cea8","tests/formatter.rs":"e7c11ff53cdf9ac6e2baedc04a4e60b5dfebe0f8c7e0a91b38a8e5c2fd337ba0","tests/snippet/mod.rs":"cc0a0f79e9961985d7c75b92927048df9a2269400ded2ac686d99cce316603f6"}}
\ No newline at end of file
diff --git a/crates/annotate-snippets/cargo_embargo.json b/crates/annotate-snippets/cargo_embargo.json
index f702d39..5a2ba02 100644
--- a/crates/annotate-snippets/cargo_embargo.json
+++ b/crates/annotate-snippets/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/arc-swap/.android-checksum.json b/crates/arc-swap/.android-checksum.json
index 225b83e..fe5f1aa 100644
--- a/crates/arc-swap/.android-checksum.json
+++ b/crates/arc-swap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1f77e2ff50b6abf9e191ae4dbbc89d4461a7e33891c3d4d4a8da5f53b4b9df3c","Android.bp":"684309c50491f12d9dc30375e1240a1e6d55b83f81d82e5ad9546f7f8e9e8f83","CHANGELOG.md":"f0cc165f981c1f2d8b84057458a4e2c44bf6b62b46b5616dc03fd1c98e389800","Cargo.toml":"f296f19801736e57d8a73470e308e1ed05158e1967c63e15e72cc0e3e196e7dc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"c55ca98a38b572823041bbb234de6892ab11c3cd0351361fa9154eb75ec39a25","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a14adb79b6c6a9b2bb5d801ce65c7aaa7bd3326deb29ba4b45d50b330004ef22","TODO":"58b54cad867be9fc8b74dc425a0415b7e177dd9c94d6135c7e6fd1878b8c588f","benches/background.rs":"bb9b03fc72115e08a321186aed7a516ef3e16ef58c3f7c24347571b2dc009caf","benches/int-access.rs":"2a2861a8956895a19ca33c885f57cd919219c40c84c5fb5a0eed52699ae9d576","benches/track.rs":"4d35b368a6549230412c25b679f489b4ec7e6c32c363e87ea962a06613b229e4","cargo_embargo.json":"34a38800daaacbb1d2303eab49dac9441925e5e94581dd6f80146c04d23232c7","ci-check.sh":"38516ebf9ff3ac9eaebccf0b7130fda1d7e2ba84273f28d76a497a7bfb91866b","rules.mk":"459d67f36a19a2d0938c3592887457a2f49fe92e0eb727f82846f3dce35d0be5","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/access.rs":"8345a68e98b3cfa72d8cc81a0647825d14e4eebe7c22d5b06ab7890edc1528f2","src/as_raw.rs":"6e5e805439f668f188b1ee71934bb1d110f7ad7adc0aefb15794d2f017120ad0","src/cache.rs":"f856792073cbd8955531a7139d469a013c61d5e6eb7effbec607c258f2f22142","src/compile_fail_tests.rs":"1308a8839a790a7eb8ba169975382a7bd507b6ee4fcad2ce6e3e6dd4397a3fcd","src/debt/fast.rs":"6a2afeb67342216b6a4999c7a25667c8a1691c907bc831f6150d3c82ea4734d0","src/debt/helping.rs":"d0a86f0eaf2854dcd44c748b874342d2706ee93f2530b585fe9cfe37ce141334","src/debt/list.rs":"5f5c387b417a8608144f03f58d4578967a823e768a998abf93c6b63d75bb00b3","src/debt/mod.rs":"9ae15e360c4ddd0b8c0a9e930527faf75b50dab52583f8e22a90da3d68fbb8a1","src/docs/internal.rs":"c33cc1b92bb8ea238751db22ea5cc83f8ec005f20cec97174e33d01a01237d03","src/docs/limitations.rs":"3695fd64dd80a907c62523fa4e754b2b6459acf8a5e0963c17ee456daa3b09a7","src/docs/mod.rs":"90908a7c807986c37777876cfb2178b20b5543bec5767c25b5553534f6ecb6ec","src/docs/patterns.rs":"1ee4bf2027d3e0285c3442e97e2419dd59a050774ae977d2a8a1e168e27839f8","src/docs/performance.rs":"1db5c53c3d7f563629faf542793cb407f7c17c8c5af6e4f876d557ee6d7a353f","src/lib.rs":"6730278c0d3b2dab85f362bcf27b46dadf6ebe1276747ada699e5d91c0e169c4","src/ref_cnt.rs":"384b03f7d019ed36970cb3b310d2bc9cc220673aa217d391d5fa57971a27f756","src/serde.rs":"68a47160f2dcd31b44e7f124a0c3708a119e8dd72ac0e1dc1e6f2ca2e92127ae","src/strategy/hybrid.rs":"ea2f9d601f144d37243136f593980df556822d3d29924dcda9e4685b1a88617f","src/strategy/mod.rs":"45efb74c193c9d6e91ed0afa50b20ab2b8c4a001eadb6ee0a772d93323ad9964","src/strategy/rw_lock.rs":"4169a6be9833af4d04fa6cd112463a4816a4e11c63b8568e991285dcf735be83","src/strategy/test_strategies.rs":"66c0d67adb7cc3c3ddd20286e48fe02e1cbe769e0512bed090e8ec661d038124","src/weak.rs":"613bea19013332eb5aab42fae3cf18b29c11ff338c2def57cf7ed14059fc1d2e","tests/random.rs":"70bace249ebce82cf41581aeabaa9f8e9bed476422f19e9099f070badd838b63","tests/stress.rs":"7ef7d49e821ce5b0834c805bed0928d43b28f5674aeb653e3e097026a0a0de4f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1f77e2ff50b6abf9e191ae4dbbc89d4461a7e33891c3d4d4a8da5f53b4b9df3c","Android.bp":"684309c50491f12d9dc30375e1240a1e6d55b83f81d82e5ad9546f7f8e9e8f83","CHANGELOG.md":"f0cc165f981c1f2d8b84057458a4e2c44bf6b62b46b5616dc03fd1c98e389800","Cargo.toml":"f296f19801736e57d8a73470e308e1ed05158e1967c63e15e72cc0e3e196e7dc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"c55ca98a38b572823041bbb234de6892ab11c3cd0351361fa9154eb75ec39a25","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a14adb79b6c6a9b2bb5d801ce65c7aaa7bd3326deb29ba4b45d50b330004ef22","TODO":"58b54cad867be9fc8b74dc425a0415b7e177dd9c94d6135c7e6fd1878b8c588f","benches/background.rs":"bb9b03fc72115e08a321186aed7a516ef3e16ef58c3f7c24347571b2dc009caf","benches/int-access.rs":"2a2861a8956895a19ca33c885f57cd919219c40c84c5fb5a0eed52699ae9d576","benches/track.rs":"4d35b368a6549230412c25b679f489b4ec7e6c32c363e87ea962a06613b229e4","cargo_embargo.json":"8a2b318f3f58548f24da44c436780db009b471d502a4329c692abe8b3d66da2d","ci-check.sh":"38516ebf9ff3ac9eaebccf0b7130fda1d7e2ba84273f28d76a497a7bfb91866b","rules.mk":"459d67f36a19a2d0938c3592887457a2f49fe92e0eb727f82846f3dce35d0be5","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/access.rs":"8345a68e98b3cfa72d8cc81a0647825d14e4eebe7c22d5b06ab7890edc1528f2","src/as_raw.rs":"6e5e805439f668f188b1ee71934bb1d110f7ad7adc0aefb15794d2f017120ad0","src/cache.rs":"f856792073cbd8955531a7139d469a013c61d5e6eb7effbec607c258f2f22142","src/compile_fail_tests.rs":"1308a8839a790a7eb8ba169975382a7bd507b6ee4fcad2ce6e3e6dd4397a3fcd","src/debt/fast.rs":"6a2afeb67342216b6a4999c7a25667c8a1691c907bc831f6150d3c82ea4734d0","src/debt/helping.rs":"d0a86f0eaf2854dcd44c748b874342d2706ee93f2530b585fe9cfe37ce141334","src/debt/list.rs":"5f5c387b417a8608144f03f58d4578967a823e768a998abf93c6b63d75bb00b3","src/debt/mod.rs":"9ae15e360c4ddd0b8c0a9e930527faf75b50dab52583f8e22a90da3d68fbb8a1","src/docs/internal.rs":"c33cc1b92bb8ea238751db22ea5cc83f8ec005f20cec97174e33d01a01237d03","src/docs/limitations.rs":"3695fd64dd80a907c62523fa4e754b2b6459acf8a5e0963c17ee456daa3b09a7","src/docs/mod.rs":"90908a7c807986c37777876cfb2178b20b5543bec5767c25b5553534f6ecb6ec","src/docs/patterns.rs":"1ee4bf2027d3e0285c3442e97e2419dd59a050774ae977d2a8a1e168e27839f8","src/docs/performance.rs":"1db5c53c3d7f563629faf542793cb407f7c17c8c5af6e4f876d557ee6d7a353f","src/lib.rs":"6730278c0d3b2dab85f362bcf27b46dadf6ebe1276747ada699e5d91c0e169c4","src/ref_cnt.rs":"384b03f7d019ed36970cb3b310d2bc9cc220673aa217d391d5fa57971a27f756","src/serde.rs":"68a47160f2dcd31b44e7f124a0c3708a119e8dd72ac0e1dc1e6f2ca2e92127ae","src/strategy/hybrid.rs":"ea2f9d601f144d37243136f593980df556822d3d29924dcda9e4685b1a88617f","src/strategy/mod.rs":"45efb74c193c9d6e91ed0afa50b20ab2b8c4a001eadb6ee0a772d93323ad9964","src/strategy/rw_lock.rs":"4169a6be9833af4d04fa6cd112463a4816a4e11c63b8568e991285dcf735be83","src/strategy/test_strategies.rs":"66c0d67adb7cc3c3ddd20286e48fe02e1cbe769e0512bed090e8ec661d038124","src/weak.rs":"613bea19013332eb5aab42fae3cf18b29c11ff338c2def57cf7ed14059fc1d2e","tests/random.rs":"70bace249ebce82cf41581aeabaa9f8e9bed476422f19e9099f070badd838b63","tests/stress.rs":"7ef7d49e821ce5b0834c805bed0928d43b28f5674aeb653e3e097026a0a0de4f"}}
\ No newline at end of file
diff --git a/crates/arc-swap/cargo_embargo.json b/crates/arc-swap/cargo_embargo.json
index 384a23d..fd6e20b 100644
--- a/crates/arc-swap/cargo_embargo.json
+++ b/crates/arc-swap/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/argh/.android-checksum.json b/crates/argh/.android-checksum.json
index 5a7ca13..88b8b29 100644
--- a/crates/argh/.android-checksum.json
+++ b/crates/argh/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"579ef543b420b02f0c3534b66104036b725cbd7577d43170f4ec761be580b492","Android.bp":"1506a29b2f01df3007e0b80f0a69c96cfcbd100f18a31007966941f952cd8eeb","Cargo.lock":"0c6a9e1fcd7aa9ba796990c7b979a24f78c9759496926bf4297179afa9d0232c","Cargo.toml":"9b0b9c4cfaa13a44282c673041727d8929c75a45340c9ca416f82e5620320e5b","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"9eb600ed4c8c335eebe13ac9a622ee5b2084906d5495b957a8a20af63d6b168d","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"aae203330dcae6321e20e651bf256dcbda6ef30c082189625c089b5a323555f9","TEST_MAPPING":"72efd8f534ced64ff35bb1695685a491ac348dfe37b56126f1b29672b1115f8f","android_config.toml":"74c39aafdea5d51fd7242df5f67a664f0ea054506b3a7b455ed13968f6123d92","cargo_embargo.json":"3ab685b5fda57c87d0f0b8fa156cc8cf2a9074ca956cd03ef4a5747c15b09d58","examples/simple_example.rs":"22e1cdcf7d3bf8c07aeff94a3d9358317ff9971bbecf217c6e0e45ab7d859462","src/lib.rs":"1e0dbd71d26711989a06084f983f5fc7fa45494563504f9fd5fbf699f9c904d6","tests/args_info_tests.rs":"c127eb3c036c846dc150128b340c45064417cdf7a08ccbcb55b4419caf7eee89","tests/compiletest.rs":"df1dfbdc39fda700100bfb3a733b73037addbfad714faced854b695fb3aef43d","tests/lib.rs":"32cf6ddce8405ef289128a82eed74c3d329c59b5b94c3c035d53e5938de9c2b8","tests/ui/bad-long-names/bad-long-names.rs":"18c9d5c97acdf68ddbf980046aa62f40fc0529ab706fd7fed11e810efd731401","tests/ui/bad-long-names/bad-long-names.stderr":"dd945601f5316edc0d5c5d30c4c0e86e3dd5bcb37bdc1f6ef323ea5e1639264c","tests/ui/conflicting-tails/positional-and-greedy.rs":"8b47879afcd4cec292156c41fd2cf2ddc1d78e8b12daf472237361fd3b49a455","tests/ui/conflicting-tails/positional-and-greedy.stderr":"85046eaa1f22311e05f365faefc46a14b7c88b5b20485bba6bd9ad3fd4ed6019","tests/ui/duplicate-name/duplicate-long-name.rs":"e69498c81f3601dd137ff6ec23bac6ea74507a46043401757477abc6be43a992","tests/ui/duplicate-name/duplicate-long-name.stderr":"a83d17db62d79bdfa4e89e8099271f5494eed29d0916a5e816e487033eba142d","tests/ui/duplicate-name/duplicate-short-name.rs":"48bc5000187d0777e3519187ce2fb3105599e4aafa35922adaca5226c6ca9221","tests/ui/duplicate-name/duplicate-short-name.stderr":"e4e5355fe3c955737bfa2d68d22cef635b1301531c51b428c4922a2b2e522af5"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"579ef543b420b02f0c3534b66104036b725cbd7577d43170f4ec761be580b492","Android.bp":"9880ad8b9b8ad9cd3a9fa48d6d3b1c74ed2ff7473bff2094f5d87b2b6c564e47","Cargo.lock":"0c6a9e1fcd7aa9ba796990c7b979a24f78c9759496926bf4297179afa9d0232c","Cargo.toml":"9b0b9c4cfaa13a44282c673041727d8929c75a45340c9ca416f82e5620320e5b","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"9eb600ed4c8c335eebe13ac9a622ee5b2084906d5495b957a8a20af63d6b168d","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"aae203330dcae6321e20e651bf256dcbda6ef30c082189625c089b5a323555f9","TEST_MAPPING":"72efd8f534ced64ff35bb1695685a491ac348dfe37b56126f1b29672b1115f8f","android_config.toml":"74c39aafdea5d51fd7242df5f67a664f0ea054506b3a7b455ed13968f6123d92","cargo_embargo.json":"c0ce30e195fda7c6830075cc46e0ca7a256a09567dccf1c1710782e30b6a1a0c","examples/simple_example.rs":"22e1cdcf7d3bf8c07aeff94a3d9358317ff9971bbecf217c6e0e45ab7d859462","src/lib.rs":"1e0dbd71d26711989a06084f983f5fc7fa45494563504f9fd5fbf699f9c904d6","tests/args_info_tests.rs":"c127eb3c036c846dc150128b340c45064417cdf7a08ccbcb55b4419caf7eee89","tests/compiletest.rs":"df1dfbdc39fda700100bfb3a733b73037addbfad714faced854b695fb3aef43d","tests/lib.rs":"32cf6ddce8405ef289128a82eed74c3d329c59b5b94c3c035d53e5938de9c2b8","tests/ui/bad-long-names/bad-long-names.rs":"18c9d5c97acdf68ddbf980046aa62f40fc0529ab706fd7fed11e810efd731401","tests/ui/bad-long-names/bad-long-names.stderr":"dd945601f5316edc0d5c5d30c4c0e86e3dd5bcb37bdc1f6ef323ea5e1639264c","tests/ui/conflicting-tails/positional-and-greedy.rs":"8b47879afcd4cec292156c41fd2cf2ddc1d78e8b12daf472237361fd3b49a455","tests/ui/conflicting-tails/positional-and-greedy.stderr":"85046eaa1f22311e05f365faefc46a14b7c88b5b20485bba6bd9ad3fd4ed6019","tests/ui/duplicate-name/duplicate-long-name.rs":"e69498c81f3601dd137ff6ec23bac6ea74507a46043401757477abc6be43a992","tests/ui/duplicate-name/duplicate-long-name.stderr":"a83d17db62d79bdfa4e89e8099271f5494eed29d0916a5e816e487033eba142d","tests/ui/duplicate-name/duplicate-short-name.rs":"48bc5000187d0777e3519187ce2fb3105599e4aafa35922adaca5226c6ca9221","tests/ui/duplicate-name/duplicate-short-name.stderr":"e4e5355fe3c955737bfa2d68d22cef635b1301531c51b428c4922a2b2e522af5"}}
\ No newline at end of file
diff --git a/crates/argh/Android.bp b/crates/argh/Android.bp
index 44fe712..bd5419e 100644
--- a/crates/argh/Android.bp
+++ b/crates/argh/Android.bp
@@ -91,4 +91,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/argh/cargo_embargo.json b/crates/argh/cargo_embargo.json
index 5f4a428..990aada 100644
--- a/crates/argh/cargo_embargo.json
+++ b/crates/argh/cargo_embargo.json
@@ -14,5 +14,6 @@
},
"module_blocklist": [
"argh_test_tests_compiletest"
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/argh_derive/.android-checksum.json b/crates/argh_derive/.android-checksum.json
index 3648194..c2ea717 100644
--- a/crates/argh_derive/.android-checksum.json
+++ b/crates/argh_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"580e9ac68caf3ccf5d408d5d73ad42bec0eedfadc68e1dba62332854da60ed27","Android.bp":"6c0d2597013eca207f71751e46d2d19cffb03ce3d4c3c573e7f5295870bd22ba","Cargo.toml":"e6da0f8f2af4902974d6db59afaf77fddafef78d498efd821feea1911fa3b688","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"951af1779bce344a172de7bab9c2b9e2d2737a4f99769e6046522d89ced5df0f","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"aae203330dcae6321e20e651bf256dcbda6ef30c082189625c089b5a323555f9","TEST_MAPPING":"c05e28a9bd796694b7b14a5bee1fc17b976d36cba94f87f4c3a325ad61cfe8cc","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/args_info.rs":"3ffb0f7e6fe46eb94d21e037c95cd9843ed4847f929a25381b5cd8e6a7754120","src/errors.rs":"6f0c037ff14fc0554ef2d5f2707b9f111bbfb1d0bf42e88c2439df5dd36079f7","src/help.rs":"f20584668a6c1f8e5dcb3b2927da6ee283b77793f468b36ab28f963e1f659067","src/lib.rs":"607db94e1617fccf52eb4a0f5f08f071f01238234318a8d592c4c0be44a0d767","src/parse_attrs.rs":"140dcda775c385bf2eadd8650af6af5f49d74cd86e988511ecb704f133ce4eda"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"580e9ac68caf3ccf5d408d5d73ad42bec0eedfadc68e1dba62332854da60ed27","Android.bp":"d5a71bef7b0838909d89afbd2d998c38e80f58eec620d0673e02d3f25d531cfd","Cargo.toml":"e6da0f8f2af4902974d6db59afaf77fddafef78d498efd821feea1911fa3b688","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"951af1779bce344a172de7bab9c2b9e2d2737a4f99769e6046522d89ced5df0f","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"aae203330dcae6321e20e651bf256dcbda6ef30c082189625c089b5a323555f9","TEST_MAPPING":"c05e28a9bd796694b7b14a5bee1fc17b976d36cba94f87f4c3a325ad61cfe8cc","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/args_info.rs":"3ffb0f7e6fe46eb94d21e037c95cd9843ed4847f929a25381b5cd8e6a7754120","src/errors.rs":"6f0c037ff14fc0554ef2d5f2707b9f111bbfb1d0bf42e88c2439df5dd36079f7","src/help.rs":"f20584668a6c1f8e5dcb3b2927da6ee283b77793f468b36ab28f963e1f659067","src/lib.rs":"607db94e1617fccf52eb4a0f5f08f071f01238234318a8d592c4c0be44a0d767","src/parse_attrs.rs":"140dcda775c385bf2eadd8650af6af5f49d74cd86e988511ecb704f133ce4eda"}}
\ No newline at end of file
diff --git a/crates/argh_derive/Android.bp b/crates/argh_derive/Android.bp
index 985ec11..a2f0664 100644
--- a/crates/argh_derive/Android.bp
+++ b/crates/argh_derive/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/argh_derive/cargo_embargo.json b/crates/argh_derive/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/argh_derive/cargo_embargo.json
+++ b/crates/argh_derive/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/argh_shared/.android-checksum.json b/crates/argh_shared/.android-checksum.json
index a89e96e..226022f 100644
--- a/crates/argh_shared/.android-checksum.json
+++ b/crates/argh_shared/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"62f3f1ae9f1076a7170cd38d6a7079447827e207620b18f19f0f557620b0a333","Android.bp":"99750ef9f6ece7fa1151f444852713aee41e79fd228c2710e46a7592e965e140","Cargo.toml":"76cbcd80fcaaaa4e08253f3658f00eb0db5cbff022c4b78a40be178d953039fc","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"358da0fc84355223f0ea89cead375fbda71df23fb873758d0fe19a02ce5432cf","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f3766c596e66441272fcf1e0fe590ada79e5c9f8cfe7d0bcdf94f2699760a45b","TEST_MAPPING":"c05e28a9bd796694b7b14a5bee1fc17b976d36cba94f87f4c3a325ad61cfe8cc","cargo_embargo.json":"4534efdc4dd17000b31998823b78b690b19ae79fabf7419df626a79ba7141890","src/lib.rs":"bc9b694adf11a6afeefc167e22e42d720a933277a96f65caf9c818189f974b03"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"62f3f1ae9f1076a7170cd38d6a7079447827e207620b18f19f0f557620b0a333","Android.bp":"fcdf8490f47a12fe693242f66341738620010507507d81037df9614ff7451ab9","Cargo.toml":"76cbcd80fcaaaa4e08253f3658f00eb0db5cbff022c4b78a40be178d953039fc","LICENSE":"2d317525712f72bc5bd06a826df2bb2a6de216a9b1dcc8a423e7432c9b92c4a3","METADATA":"358da0fc84355223f0ea89cead375fbda71df23fb873758d0fe19a02ce5432cf","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f3766c596e66441272fcf1e0fe590ada79e5c9f8cfe7d0bcdf94f2699760a45b","TEST_MAPPING":"c05e28a9bd796694b7b14a5bee1fc17b976d36cba94f87f4c3a325ad61cfe8cc","cargo_embargo.json":"408bf0d3feb625e9a288be39defe67a982a5cf2eecc5d196937f627711825d11","src/lib.rs":"bc9b694adf11a6afeefc167e22e42d720a933277a96f65caf9c818189f974b03"}}
\ No newline at end of file
diff --git a/crates/argh_shared/Android.bp b/crates/argh_shared/Android.bp
index 663343f..8edaeb5 100644
--- a/crates/argh_shared/Android.bp
+++ b/crates/argh_shared/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/argh_shared/cargo_embargo.json b/crates/argh_shared/cargo_embargo.json
index d5ca5d9..76b6c0b 100644
--- a/crates/argh_shared/cargo_embargo.json
+++ b/crates/argh_shared/cargo_embargo.json
@@ -7,5 +7,6 @@
"module_blocklist": [
"argh_shared_test_src_lib"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/arrayvec/.android-checksum.json b/crates/arrayvec/.android-checksum.json
index 05edcfe..71ba161 100644
--- a/crates/arrayvec/.android-checksum.json
+++ b/crates/arrayvec/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"820102a46c51dbd89830a43d35cbc2eb8e750a1d28475f12b5627cb6ddeb0789","Android.bp":"c306bd5983cca363ba06304f14f7657d06202e7aa3b91e3beebc5952945ab989","CHANGELOG.md":"9f8b3e99a1a897d2525a548c2b365144a36b43df445106558df04910bf467ed7","Cargo.toml":"15f184d0ad137b194f8055c2e1b5984d76652a441660f63aa0f311ec427d4845","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"013e37b82c387300b2b6ab999c22adb1308d7b57767ea63c7a81355d8d921884","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"12742e9bd6091fb9cd91861e95d9ae1ce6aed676af1025021babfd162a190f6c","TEST_MAPPING":"19d438099ee93793eeb9c11c0ed38c065eea7cd07214a981c0627aa6da59e451","benches/arraystring.rs":"05f4a551a39d5235fb5c89fb78f9052537d5d79b51d896a258c1224968ec5943","benches/extend.rs":"4c095be6baf657069045a45cb6b04a280196addf9cffa0ade25824cc0806b6bc","cargo_embargo.json":"dadc9f7ba1154c97ba014eef28cf595185c3a741cedb43b09507beb05c246196","rules.mk":"7394f83fc908c70319ef4e466252f99ed036077f050f305eefc0847337dd6f9a","src/array_string.rs":"90c49666df21ce374013b625a1791665b870301650912665f67b07ab5c2f2279","src/arrayvec.rs":"bb4fb7fac8a20365cbafcce2aadc8daf2e96800ad42d0ae54803f10f96a5998f","src/arrayvec_impl.rs":"b7c619999bdc3c6290cbcd3b455c22840ba55234eae41ab95ef3d85820683c9c","src/char.rs":"e635888def66ff98b38d3a65e44e55e931c18818c47ee4f28114b9a180854ae6","src/errors.rs":"fff16590ff1960308d2696bf076ef70d6363f6bc87b34d632d13c235c51e409a","src/lib.rs":"d7b52d89b7d6013e6e883170b60436afc1a4fca36b81174694a383a0b2754298","src/utils.rs":"44d31e90258649eb309144f9712184b332bbc71ce0de2ea7519135ebdf21ddd5","tests/borsh.rs":"881499eed1936f914b6a74444f8e5817af7018c50ee8ed04df08146e98ed3b01","tests/serde.rs":"377b05cf120a2ada63f7c20b934bd30db97e4ade8426514a31ce9fe215cd9fd0","tests/tests.rs":"f7f590c1d1a86df4d3b227adfd1f158589d65651abd2d6a9d8f9feeaafcb924c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"820102a46c51dbd89830a43d35cbc2eb8e750a1d28475f12b5627cb6ddeb0789","Android.bp":"e021a1a6e2b9db82b68aaa44a5e7036f5ad20a13dd5a0da6942b67ed6c9a470d","CHANGELOG.md":"9f8b3e99a1a897d2525a548c2b365144a36b43df445106558df04910bf467ed7","Cargo.toml":"15f184d0ad137b194f8055c2e1b5984d76652a441660f63aa0f311ec427d4845","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"013e37b82c387300b2b6ab999c22adb1308d7b57767ea63c7a81355d8d921884","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"12742e9bd6091fb9cd91861e95d9ae1ce6aed676af1025021babfd162a190f6c","TEST_MAPPING":"19d438099ee93793eeb9c11c0ed38c065eea7cd07214a981c0627aa6da59e451","benches/arraystring.rs":"05f4a551a39d5235fb5c89fb78f9052537d5d79b51d896a258c1224968ec5943","benches/extend.rs":"4c095be6baf657069045a45cb6b04a280196addf9cffa0ade25824cc0806b6bc","cargo_embargo.json":"52b8d1588c874e06ee8261a9c1aed5a7ff3d8263a0b3565d69c10e87d87a496f","rules.mk":"7394f83fc908c70319ef4e466252f99ed036077f050f305eefc0847337dd6f9a","src/array_string.rs":"90c49666df21ce374013b625a1791665b870301650912665f67b07ab5c2f2279","src/arrayvec.rs":"bb4fb7fac8a20365cbafcce2aadc8daf2e96800ad42d0ae54803f10f96a5998f","src/arrayvec_impl.rs":"b7c619999bdc3c6290cbcd3b455c22840ba55234eae41ab95ef3d85820683c9c","src/char.rs":"e635888def66ff98b38d3a65e44e55e931c18818c47ee4f28114b9a180854ae6","src/errors.rs":"fff16590ff1960308d2696bf076ef70d6363f6bc87b34d632d13c235c51e409a","src/lib.rs":"d7b52d89b7d6013e6e883170b60436afc1a4fca36b81174694a383a0b2754298","src/utils.rs":"44d31e90258649eb309144f9712184b332bbc71ce0de2ea7519135ebdf21ddd5","tests/borsh.rs":"881499eed1936f914b6a74444f8e5817af7018c50ee8ed04df08146e98ed3b01","tests/serde.rs":"377b05cf120a2ada63f7c20b934bd30db97e4ade8426514a31ce9fe215cd9fd0","tests/tests.rs":"f7f590c1d1a86df4d3b227adfd1f158589d65651abd2d6a9d8f9feeaafcb924c"}}
\ No newline at end of file
diff --git a/crates/arrayvec/Android.bp b/crates/arrayvec/Android.bp
index e74ad2b..ad67978 100644
--- a/crates/arrayvec/Android.bp
+++ b/crates/arrayvec/Android.bp
@@ -80,6 +80,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/arrayvec/cargo_embargo.json b/crates/arrayvec/cargo_embargo.json
index 94dd56c..55c31e6 100644
--- a/crates/arrayvec/cargo_embargo.json
+++ b/crates/arrayvec/cargo_embargo.json
@@ -8,5 +8,6 @@
"generate_rulesmk": true,
"tests": false
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ash/.android-checksum.json b/crates/ash/.android-checksum.json
index dffdf44..eed502f 100644
--- a/crates/ash/.android-checksum.json
+++ b/crates/ash/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"85f9d66ab4b11b3a14a6de8bf04e041ce157ab97056bd37d0ac959ee8254860d","Android.bp":"95e8abc2da6e107267cc7c7c653251cb33af2c22044b1acbb2a9342a4ab97f35","Cargo.toml":"ee782057419b5accaf69533914e42125ffab81a1d8702d807dbbe03d7cc25822","LICENSE":"859c9dd124858abab7d036b02ba4693754008033755c52449e79ea97f831df43","LICENSE-APACHE":"859c9dd124858abab7d036b02ba4693754008033755c52449e79ea97f831df43","METADATA":"4111697087ea5406c5ba603681f456e448aef266237070a938f9cde58f76e572","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"edd1a5bbbbbec96d7887e7550430316a8a9f883834c40f201b4ce47300ba6273","TEST_MAPPING":"701afc6a0d203bdc17c0ac7361ff825166362269f65e4fa8431bad97a71cc1e6","build.rs":"5c93143ed05695e6deac22fbc4edf9f5983a543523fdab5c3efe76f5c87415dd","cargo_embargo.json":"c113704981e46212fdcfd6b143da6839daaccbe2098722f18de19a7d9946d5cb","src/device.rs":"c00ef8ad6bb07cf28df0e8c1b7845a52f7b5578f9a23561df7f0e8f8a26ebc01","src/entry.rs":"61517d6c7436b9c0f1fa8fcf3161cded0e01d4863f0b525a3449aa7475e9e2c8","src/extensions/experimental/amd.rs":"535546a08e455dc35b70ec9123cecce71cff2e6250e7ba20de92f315e8a0d820","src/extensions/experimental/mod.rs":"163de39c1477c0a7583abc8f82c5058586285fda72f6e673887e3e2f3f694933","src/extensions/ext/acquire_drm_display.rs":"842058e5cf671f8f2c6979076fd5ea961acd5c0710e42dd1863bca1eb70dea71","src/extensions/ext/buffer_device_address.rs":"662ba941394b5337650f4b889f7e3ab316b6fbfdd4244c785681f795e163b77e","src/extensions/ext/calibrated_timestamps.rs":"902c05a37a20719851f604b62f33f36700069eda013afa9f5a0b486b5aa7647e","src/extensions/ext/debug_marker.rs":"782c42c1da8d6a1533c17f0685394c5ab3f9eb0f8f63eddc43212832f55af023","src/extensions/ext/debug_report.rs":"031c87ed2a3efe94a3d3c037d38fb9e5d1713d22eeccaee5eaae14f55d560416","src/extensions/ext/debug_utils.rs":"d9510a6bffdafc3c1acb53e08d65d7e23da877c256138d958c42f9e024e6cc45","src/extensions/ext/descriptor_buffer.rs":"17f16614b6a4ed2b4844c9233b1885d652fb0d8c96c290381bb0d1408d87eabe","src/extensions/ext/extended_dynamic_state.rs":"4698a11d309ce0d71fea7b3242b9bcc78016b3e8b5602d256815a3d44c7fed83","src/extensions/ext/extended_dynamic_state2.rs":"2146e2507615e128ae7e8c0bdc5afea5f2a5981e338625d952326ba001e0cb1c","src/extensions/ext/extended_dynamic_state3.rs":"4133c78b68ec28669ae0d702d3559946539577b4f4e42deba5080d290285a848","src/extensions/ext/full_screen_exclusive.rs":"4dba86f41d14d7a25195b9264415773646698ffc2825b0f1947bf8035ac813b8","src/extensions/ext/headless_surface.rs":"3509b6f2283f57dd81066b01ee4747371013778b4140b4696ceba1b4884e57e0","src/extensions/ext/image_compression_control.rs":"c034cf3eb76782a0672a21297fd6ed9766a05957750c358437d603f1b8ab4931","src/extensions/ext/image_drm_format_modifier.rs":"a73c743262b058f0267b2f8ce302531b88862a35c6cc80fefdb36b1b18536b5f","src/extensions/ext/mesh_shader.rs":"3ac8ac859dc31ec22fd15844dcb6166acd90150f7936f68cf333dea4012c2dfa","src/extensions/ext/metal_surface.rs":"0e20e388bfe3ca63793a1ed1f4e0e7f5137b521ad58dc9179249b08c0470fb34","src/extensions/ext/mod.rs":"c3425006b56142b0134865f2149bc0aca700bc2ab953cba3d01bff7017c1f464","src/extensions/ext/physical_device_drm.rs":"5b9a08f79a849db36e96b89831aae6447ae629559bbfaa251dc2e61e9195c2e0","src/extensions/ext/pipeline_properties.rs":"ee37c4d5cb8707ad1ca7e6294289b962689901066be80f20df7d2ad8fb9e65f9","src/extensions/ext/private_data.rs":"8820b37d30de6a53a1bd369e2b74c5761005582bc4aded8a2a8ed204e8b43545","src/extensions/ext/sample_locations.rs":"a3e1b4599af43ea9278bbce39fe3133c656d1d8427fdfaf198d7d0a2110f8a32","src/extensions/ext/shader_object.rs":"b99b9719064ebf016a43c03d2bd5c397845efa8ed435c6289afb6e18dd13957d","src/extensions/ext/tooling_info.rs":"7083371e0f90c7f7be3e9a54ba4df1e0a42175a7ff581e2d29c709432cae48f1","src/extensions/khr/acceleration_structure.rs":"07ac4feefbf126a1e549d2da066f72e9f3dd05925ef4b230ea4cf2a6058858bf","src/extensions/khr/android_surface.rs":"5c2164445058e68d1afdb61fa6e093891cf960e9435d81ecc42dc89dd94b5852","src/extensions/khr/buffer_device_address.rs":"95560b48c172548dfd8e5948afd4de9b075c78e0e6851878c6aab2a4578e8a22","src/extensions/khr/copy_commands2.rs":"a0f5149e27469c704e25c0a0ee8cfcfa9e29bd6eec3df2cb2525bd0a4fa883ea","src/extensions/khr/create_render_pass2.rs":"9cdf36d6130de96f9f6699d0480b7faf3278c23c07e36deb87a6867f8a25281e","src/extensions/khr/deferred_host_operations.rs":"aa569ae27a0f89d15db84d828df2349ffaf3599f9873359992c974598964f2a1","src/extensions/khr/device_group.rs":"de66b24a8735100c8d8a1b45cb0f1273b3bf95f83912986112751ab720db3780","src/extensions/khr/device_group_creation.rs":"d3e6006e73bd6eeb905a89449fdb6620dee96e3ce59e93e80ff5a652165729a1","src/extensions/khr/display.rs":"28ac1d406f64bc1ccc17888d227d9c213992bc1e403303e5f1073bdf048b575f","src/extensions/khr/display_swapchain.rs":"adb52398845bab7b2c3ece6ad0cb09b65aee922d035aa91474c8b5eb8574eefa","src/extensions/khr/draw_indirect_count.rs":"bcef49723601d79452d77bd2f54e36ccb573b6fc0ae825e14bd7ba92a4ba8eb4","src/extensions/khr/dynamic_rendering.rs":"b65fff04f0e736f123ceb0b3dbe5913fbbb05da1587e0eebdd6d0d1f5b9b73f0","src/extensions/khr/external_fence_fd.rs":"6ae837e6d61e62d5495c7215a44b2d64ece1e9c6d9a76fe6b0011c8ad47807b1","src/extensions/khr/external_fence_win32.rs":"67ae43cf136883a4db7e2b49500895f511051d1adbf33898f7d09dd20bff147e","src/extensions/khr/external_memory_fd.rs":"6266df14ac9c9471d885920e197503df5b6d223520147ef65e122603c0c7d7e4","src/extensions/khr/external_memory_win32.rs":"68d29f1a3f887783fd67913951a7f87de464ab2aded27b9a2e99d3e7cc8c2573","src/extensions/khr/external_semaphore_fd.rs":"9437a86a62666d41f7a224f2d18089e453b5392995c63190c4b3f4039c417ff0","src/extensions/khr/external_semaphore_win32.rs":"b70554511e93f472232921bc6024024b4ed8d510d0ef50052fb27b95a81cb09a","src/extensions/khr/get_memory_requirements2.rs":"fdfd5142834222adaa25e22097425dcaacdba2490ccbf957c03d509b6a3e55ce","src/extensions/khr/get_physical_device_properties2.rs":"512549d96ac3dcffdaa415e6dd5694219c1219752b56e23d7b877ae87b114d90","src/extensions/khr/get_surface_capabilities2.rs":"0455534591975602eff25bf9532fae308d2494f2cdfc5d91944de41feb12c2f0","src/extensions/khr/maintenance1.rs":"2a37914db00b01ecb93098ddc0df1d1defa4e3f3575b66950692e642e16c3cd7","src/extensions/khr/maintenance3.rs":"9c7f6ad7028677ea22728c2e3b92c932649dea9ec7164b063023e88dd6d444e4","src/extensions/khr/maintenance4.rs":"5db50bb1e7460663e8a6425646d8ee95cfa5f96cd71f6e2603a04d231b9df7d8","src/extensions/khr/mod.rs":"8963a2e840b92a633f76d065bca9452e50070cb33333f303193a5ef9c4703e1a","src/extensions/khr/performance_query.rs":"f3ace06b72af6dd2851829fba3a5c13df3cb35dc5778848062df34bbba6eb773","src/extensions/khr/pipeline_executable_properties.rs":"0e486fd22c0402c93d2ae1cf5d1c4efd40f2a917d534fcb94c45d4c3c97f2aee","src/extensions/khr/present_wait.rs":"76d16dfefe7e0c12c0602132bd47a2baf34dbecbef0ac2f5e7c2e6ca16aa51f1","src/extensions/khr/push_descriptor.rs":"80825fa091355f2004753667afc0a82b5c77a9a2ea714ada786a8a3fddf92b00","src/extensions/khr/ray_tracing_maintenance1.rs":"7ad94abeaf2a82b2c8b8f082f9b808b72a3c9a61be57b96826550329349f9da7","src/extensions/khr/ray_tracing_pipeline.rs":"26f3be0ab5d6fab24797cf1ee1377410dd16a4582b417313196915d479ee8847","src/extensions/khr/surface.rs":"4c30576177525fa4a360d5567a4e38f14d971cb7c0e02e1d2cc2920e4ea1c0db","src/extensions/khr/swapchain.rs":"dcbd59fb8b26bd961a90d61b9678f1a02fad3810c2533ab9944bc571dbe06553","src/extensions/khr/synchronization2.rs":"7a91cdfccd68905ef6deec1f05d8885ed2198c7d6e707b26345b5d13ac987ed2","src/extensions/khr/timeline_semaphore.rs":"c805db394dc184c6304aeea9130cb25035f99fc0f82571a76502a87b337c7eb6","src/extensions/khr/wayland_surface.rs":"73d4f38c818ad30c7d036365f939c58851a21d041875f37db7dadc80b92f2afd","src/extensions/khr/win32_surface.rs":"0e1edc167b297dcd3cfaecb87cb8093fc2f967ddd8182c17b4a79fe4a7fba142","src/extensions/khr/xcb_surface.rs":"2a5453afa2109d7d443ee9cb35c2046d64b9effc46f87ce39339e9285a40f4ff","src/extensions/khr/xlib_surface.rs":"f105f9e62932df5c4865897c6ff18079a21d0b74b27ab284b3274d37405161a0","src/extensions/mod.rs":"c474cc180756677350747cbaac7854c5d6180e2c2d9a0fbd1170d853d4b9eaf8","src/extensions/mvk/ios_surface.rs":"156909656ef09da2e93ea953b4c89ce29f6bb43f86f8d5e532b1149314b7b8bf","src/extensions/mvk/macos_surface.rs":"a55f201281105b354c60f0c479eed63a432345e158d7d888422ba075f9e721bc","src/extensions/mvk/mod.rs":"0156c8ae2c5c45d7f16b84da18d10f948494730dce60343738ab67f326b24a4a","src/extensions/nn/mod.rs":"aed576277c9374734c18bf8b92f26a767219ea71ad305b1d9b85922577582ee3","src/extensions/nn/vi_surface.rs":"b9c38ad2583726f9708b92ada60b246d04d99a95036c2dedd802fadac15f52ae","src/extensions/nv/coverage_reduction_mode.rs":"1017baf97d8a53501dd8f8ec3525150c8f2d2db87e6da16cc371ae992e895ff3","src/extensions/nv/device_diagnostic_checkpoints.rs":"2e8ac71dae96bdf30fad828ee1be2671912e2be1186f8d07c931969969d2a2bc","src/extensions/nv/mesh_shader.rs":"b3f3912e3ecd8a485b77e0473504ffb16b8f064c18a7370efac3503b32bd17a0","src/extensions/nv/mod.rs":"5e13f2988de72f709096cb887aeaa9087441f2f093418c5c8a8cca51ee0f985c","src/extensions/nv/ray_tracing.rs":"5f61ce910bde4032f6a9dfe8334956272ab6220872b1df22dfc2b63903a4adf1","src/instance.rs":"3ed53bba3beb09ecb8e974152c7edcce5f6c1f8ce1c88f5f6d4407ca7f3c9ca8","src/lib.rs":"c570c88d1ef6d69fe3182dbe27a341dd2c63b6893f6ddbc286aa446dd4c2fc83","src/prelude.rs":"76e041010dda9e6f67f2f4e9e72626bfe3ad368c02fd3700f97149bcee0fbd46","src/util.rs":"2b1395b7a68810d8e4eae48685744d25ab48534cbac3bb7885580315c4591fa8","src/vk.rs":"8adc4af50d13561133cc3bb37bd06cf62360a7f40293ea8da312fd94ed661b08","src/vk/aliases.rs":"be5d1dcd580c853d5340f25ff074c1e09edaca2ee654c4a88168576b8d5ae36c","src/vk/bitflags.rs":"1fda2a0bbaedf66fe85de87838e021c5883b5d4cbe720f35a75c3f499ee39d06","src/vk/const_debugs.rs":"922e41f2f5ef2fd1b163039a465b4d4cb15b65923b1e0dc15948077788fc792d","src/vk/constants.rs":"7331f1e0e9192ffd690225740cd67301ff05c92c527a2349f6061d9cd5b22d9a","src/vk/definitions.rs":"2276eb266d6d13ede38787dc472695ef10f6fdf5f657f96277887ba0e4b7fd80","src/vk/enums.rs":"a154a2d48b24252cb3bd377cf0dc6598e7a5d94b984ef453ae6af17b318d9566","src/vk/extensions.rs":"a41d6c1bb62c2747448a01c1f7ca62607c2063fd45886a4637fd21fbca82da82","src/vk/feature_extensions.rs":"50798e64809035a70c490a0cbfd987873e22def6bfdeeca8413764328b658542","src/vk/features.rs":"bb74a2bcca71c1b5f8683f13e25e7d324cd3879304ae1d70d873075b6424cba9","src/vk/macros.rs":"572ac9d1156ba6d50d77909e861d4d7906f9ab2bb26387d9c354317f1b3b91a9","src/vk/native.rs":"70d9c1c5e650de7604c3b1b8afdf311ee81d154271a9c127ceda652d6edf5094","src/vk/platform_types.rs":"6060a612329dd013b488178fc457f14127d94dcddb06abbbe2162805ab268263","src/vk/prelude.rs":"938afabf3233d4c48e77bc3cc28a90edb7c1aef0a2568bafb4347023095b7133","tests/constant_size_arrays.rs":"38f9bed3b59e7b51733ba0b103f2f5bd02bcd5e009c0ad3664883f2e1abc80ba","tests/display.rs":"bae8a46f07dbe4b95380c6f904a377ae556a6357c6d606f12cefd8df9af46846"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"85f9d66ab4b11b3a14a6de8bf04e041ce157ab97056bd37d0ac959ee8254860d","Android.bp":"4d20af11c16746d771ca8dfb1a290f37d54560f021b6f0a6ca4a7512d6b6cd29","Cargo.toml":"ee782057419b5accaf69533914e42125ffab81a1d8702d807dbbe03d7cc25822","LICENSE":"859c9dd124858abab7d036b02ba4693754008033755c52449e79ea97f831df43","LICENSE-APACHE":"859c9dd124858abab7d036b02ba4693754008033755c52449e79ea97f831df43","METADATA":"4111697087ea5406c5ba603681f456e448aef266237070a938f9cde58f76e572","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"edd1a5bbbbbec96d7887e7550430316a8a9f883834c40f201b4ce47300ba6273","TEST_MAPPING":"701afc6a0d203bdc17c0ac7361ff825166362269f65e4fa8431bad97a71cc1e6","build.rs":"5c93143ed05695e6deac22fbc4edf9f5983a543523fdab5c3efe76f5c87415dd","cargo_embargo.json":"2fe114682bbec4a7e8bedd7e9f73cfec4483b285940552d1b79b7d934e147e33","src/device.rs":"c00ef8ad6bb07cf28df0e8c1b7845a52f7b5578f9a23561df7f0e8f8a26ebc01","src/entry.rs":"61517d6c7436b9c0f1fa8fcf3161cded0e01d4863f0b525a3449aa7475e9e2c8","src/extensions/experimental/amd.rs":"535546a08e455dc35b70ec9123cecce71cff2e6250e7ba20de92f315e8a0d820","src/extensions/experimental/mod.rs":"163de39c1477c0a7583abc8f82c5058586285fda72f6e673887e3e2f3f694933","src/extensions/ext/acquire_drm_display.rs":"842058e5cf671f8f2c6979076fd5ea961acd5c0710e42dd1863bca1eb70dea71","src/extensions/ext/buffer_device_address.rs":"662ba941394b5337650f4b889f7e3ab316b6fbfdd4244c785681f795e163b77e","src/extensions/ext/calibrated_timestamps.rs":"902c05a37a20719851f604b62f33f36700069eda013afa9f5a0b486b5aa7647e","src/extensions/ext/debug_marker.rs":"782c42c1da8d6a1533c17f0685394c5ab3f9eb0f8f63eddc43212832f55af023","src/extensions/ext/debug_report.rs":"031c87ed2a3efe94a3d3c037d38fb9e5d1713d22eeccaee5eaae14f55d560416","src/extensions/ext/debug_utils.rs":"d9510a6bffdafc3c1acb53e08d65d7e23da877c256138d958c42f9e024e6cc45","src/extensions/ext/descriptor_buffer.rs":"17f16614b6a4ed2b4844c9233b1885d652fb0d8c96c290381bb0d1408d87eabe","src/extensions/ext/extended_dynamic_state.rs":"4698a11d309ce0d71fea7b3242b9bcc78016b3e8b5602d256815a3d44c7fed83","src/extensions/ext/extended_dynamic_state2.rs":"2146e2507615e128ae7e8c0bdc5afea5f2a5981e338625d952326ba001e0cb1c","src/extensions/ext/extended_dynamic_state3.rs":"4133c78b68ec28669ae0d702d3559946539577b4f4e42deba5080d290285a848","src/extensions/ext/full_screen_exclusive.rs":"4dba86f41d14d7a25195b9264415773646698ffc2825b0f1947bf8035ac813b8","src/extensions/ext/headless_surface.rs":"3509b6f2283f57dd81066b01ee4747371013778b4140b4696ceba1b4884e57e0","src/extensions/ext/image_compression_control.rs":"c034cf3eb76782a0672a21297fd6ed9766a05957750c358437d603f1b8ab4931","src/extensions/ext/image_drm_format_modifier.rs":"a73c743262b058f0267b2f8ce302531b88862a35c6cc80fefdb36b1b18536b5f","src/extensions/ext/mesh_shader.rs":"3ac8ac859dc31ec22fd15844dcb6166acd90150f7936f68cf333dea4012c2dfa","src/extensions/ext/metal_surface.rs":"0e20e388bfe3ca63793a1ed1f4e0e7f5137b521ad58dc9179249b08c0470fb34","src/extensions/ext/mod.rs":"c3425006b56142b0134865f2149bc0aca700bc2ab953cba3d01bff7017c1f464","src/extensions/ext/physical_device_drm.rs":"5b9a08f79a849db36e96b89831aae6447ae629559bbfaa251dc2e61e9195c2e0","src/extensions/ext/pipeline_properties.rs":"ee37c4d5cb8707ad1ca7e6294289b962689901066be80f20df7d2ad8fb9e65f9","src/extensions/ext/private_data.rs":"8820b37d30de6a53a1bd369e2b74c5761005582bc4aded8a2a8ed204e8b43545","src/extensions/ext/sample_locations.rs":"a3e1b4599af43ea9278bbce39fe3133c656d1d8427fdfaf198d7d0a2110f8a32","src/extensions/ext/shader_object.rs":"b99b9719064ebf016a43c03d2bd5c397845efa8ed435c6289afb6e18dd13957d","src/extensions/ext/tooling_info.rs":"7083371e0f90c7f7be3e9a54ba4df1e0a42175a7ff581e2d29c709432cae48f1","src/extensions/khr/acceleration_structure.rs":"07ac4feefbf126a1e549d2da066f72e9f3dd05925ef4b230ea4cf2a6058858bf","src/extensions/khr/android_surface.rs":"5c2164445058e68d1afdb61fa6e093891cf960e9435d81ecc42dc89dd94b5852","src/extensions/khr/buffer_device_address.rs":"95560b48c172548dfd8e5948afd4de9b075c78e0e6851878c6aab2a4578e8a22","src/extensions/khr/copy_commands2.rs":"a0f5149e27469c704e25c0a0ee8cfcfa9e29bd6eec3df2cb2525bd0a4fa883ea","src/extensions/khr/create_render_pass2.rs":"9cdf36d6130de96f9f6699d0480b7faf3278c23c07e36deb87a6867f8a25281e","src/extensions/khr/deferred_host_operations.rs":"aa569ae27a0f89d15db84d828df2349ffaf3599f9873359992c974598964f2a1","src/extensions/khr/device_group.rs":"de66b24a8735100c8d8a1b45cb0f1273b3bf95f83912986112751ab720db3780","src/extensions/khr/device_group_creation.rs":"d3e6006e73bd6eeb905a89449fdb6620dee96e3ce59e93e80ff5a652165729a1","src/extensions/khr/display.rs":"28ac1d406f64bc1ccc17888d227d9c213992bc1e403303e5f1073bdf048b575f","src/extensions/khr/display_swapchain.rs":"adb52398845bab7b2c3ece6ad0cb09b65aee922d035aa91474c8b5eb8574eefa","src/extensions/khr/draw_indirect_count.rs":"bcef49723601d79452d77bd2f54e36ccb573b6fc0ae825e14bd7ba92a4ba8eb4","src/extensions/khr/dynamic_rendering.rs":"b65fff04f0e736f123ceb0b3dbe5913fbbb05da1587e0eebdd6d0d1f5b9b73f0","src/extensions/khr/external_fence_fd.rs":"6ae837e6d61e62d5495c7215a44b2d64ece1e9c6d9a76fe6b0011c8ad47807b1","src/extensions/khr/external_fence_win32.rs":"67ae43cf136883a4db7e2b49500895f511051d1adbf33898f7d09dd20bff147e","src/extensions/khr/external_memory_fd.rs":"6266df14ac9c9471d885920e197503df5b6d223520147ef65e122603c0c7d7e4","src/extensions/khr/external_memory_win32.rs":"68d29f1a3f887783fd67913951a7f87de464ab2aded27b9a2e99d3e7cc8c2573","src/extensions/khr/external_semaphore_fd.rs":"9437a86a62666d41f7a224f2d18089e453b5392995c63190c4b3f4039c417ff0","src/extensions/khr/external_semaphore_win32.rs":"b70554511e93f472232921bc6024024b4ed8d510d0ef50052fb27b95a81cb09a","src/extensions/khr/get_memory_requirements2.rs":"fdfd5142834222adaa25e22097425dcaacdba2490ccbf957c03d509b6a3e55ce","src/extensions/khr/get_physical_device_properties2.rs":"512549d96ac3dcffdaa415e6dd5694219c1219752b56e23d7b877ae87b114d90","src/extensions/khr/get_surface_capabilities2.rs":"0455534591975602eff25bf9532fae308d2494f2cdfc5d91944de41feb12c2f0","src/extensions/khr/maintenance1.rs":"2a37914db00b01ecb93098ddc0df1d1defa4e3f3575b66950692e642e16c3cd7","src/extensions/khr/maintenance3.rs":"9c7f6ad7028677ea22728c2e3b92c932649dea9ec7164b063023e88dd6d444e4","src/extensions/khr/maintenance4.rs":"5db50bb1e7460663e8a6425646d8ee95cfa5f96cd71f6e2603a04d231b9df7d8","src/extensions/khr/mod.rs":"8963a2e840b92a633f76d065bca9452e50070cb33333f303193a5ef9c4703e1a","src/extensions/khr/performance_query.rs":"f3ace06b72af6dd2851829fba3a5c13df3cb35dc5778848062df34bbba6eb773","src/extensions/khr/pipeline_executable_properties.rs":"0e486fd22c0402c93d2ae1cf5d1c4efd40f2a917d534fcb94c45d4c3c97f2aee","src/extensions/khr/present_wait.rs":"76d16dfefe7e0c12c0602132bd47a2baf34dbecbef0ac2f5e7c2e6ca16aa51f1","src/extensions/khr/push_descriptor.rs":"80825fa091355f2004753667afc0a82b5c77a9a2ea714ada786a8a3fddf92b00","src/extensions/khr/ray_tracing_maintenance1.rs":"7ad94abeaf2a82b2c8b8f082f9b808b72a3c9a61be57b96826550329349f9da7","src/extensions/khr/ray_tracing_pipeline.rs":"26f3be0ab5d6fab24797cf1ee1377410dd16a4582b417313196915d479ee8847","src/extensions/khr/surface.rs":"4c30576177525fa4a360d5567a4e38f14d971cb7c0e02e1d2cc2920e4ea1c0db","src/extensions/khr/swapchain.rs":"dcbd59fb8b26bd961a90d61b9678f1a02fad3810c2533ab9944bc571dbe06553","src/extensions/khr/synchronization2.rs":"7a91cdfccd68905ef6deec1f05d8885ed2198c7d6e707b26345b5d13ac987ed2","src/extensions/khr/timeline_semaphore.rs":"c805db394dc184c6304aeea9130cb25035f99fc0f82571a76502a87b337c7eb6","src/extensions/khr/wayland_surface.rs":"73d4f38c818ad30c7d036365f939c58851a21d041875f37db7dadc80b92f2afd","src/extensions/khr/win32_surface.rs":"0e1edc167b297dcd3cfaecb87cb8093fc2f967ddd8182c17b4a79fe4a7fba142","src/extensions/khr/xcb_surface.rs":"2a5453afa2109d7d443ee9cb35c2046d64b9effc46f87ce39339e9285a40f4ff","src/extensions/khr/xlib_surface.rs":"f105f9e62932df5c4865897c6ff18079a21d0b74b27ab284b3274d37405161a0","src/extensions/mod.rs":"c474cc180756677350747cbaac7854c5d6180e2c2d9a0fbd1170d853d4b9eaf8","src/extensions/mvk/ios_surface.rs":"156909656ef09da2e93ea953b4c89ce29f6bb43f86f8d5e532b1149314b7b8bf","src/extensions/mvk/macos_surface.rs":"a55f201281105b354c60f0c479eed63a432345e158d7d888422ba075f9e721bc","src/extensions/mvk/mod.rs":"0156c8ae2c5c45d7f16b84da18d10f948494730dce60343738ab67f326b24a4a","src/extensions/nn/mod.rs":"aed576277c9374734c18bf8b92f26a767219ea71ad305b1d9b85922577582ee3","src/extensions/nn/vi_surface.rs":"b9c38ad2583726f9708b92ada60b246d04d99a95036c2dedd802fadac15f52ae","src/extensions/nv/coverage_reduction_mode.rs":"1017baf97d8a53501dd8f8ec3525150c8f2d2db87e6da16cc371ae992e895ff3","src/extensions/nv/device_diagnostic_checkpoints.rs":"2e8ac71dae96bdf30fad828ee1be2671912e2be1186f8d07c931969969d2a2bc","src/extensions/nv/mesh_shader.rs":"b3f3912e3ecd8a485b77e0473504ffb16b8f064c18a7370efac3503b32bd17a0","src/extensions/nv/mod.rs":"5e13f2988de72f709096cb887aeaa9087441f2f093418c5c8a8cca51ee0f985c","src/extensions/nv/ray_tracing.rs":"5f61ce910bde4032f6a9dfe8334956272ab6220872b1df22dfc2b63903a4adf1","src/instance.rs":"3ed53bba3beb09ecb8e974152c7edcce5f6c1f8ce1c88f5f6d4407ca7f3c9ca8","src/lib.rs":"c570c88d1ef6d69fe3182dbe27a341dd2c63b6893f6ddbc286aa446dd4c2fc83","src/prelude.rs":"76e041010dda9e6f67f2f4e9e72626bfe3ad368c02fd3700f97149bcee0fbd46","src/util.rs":"2b1395b7a68810d8e4eae48685744d25ab48534cbac3bb7885580315c4591fa8","src/vk.rs":"8adc4af50d13561133cc3bb37bd06cf62360a7f40293ea8da312fd94ed661b08","src/vk/aliases.rs":"be5d1dcd580c853d5340f25ff074c1e09edaca2ee654c4a88168576b8d5ae36c","src/vk/bitflags.rs":"1fda2a0bbaedf66fe85de87838e021c5883b5d4cbe720f35a75c3f499ee39d06","src/vk/const_debugs.rs":"922e41f2f5ef2fd1b163039a465b4d4cb15b65923b1e0dc15948077788fc792d","src/vk/constants.rs":"7331f1e0e9192ffd690225740cd67301ff05c92c527a2349f6061d9cd5b22d9a","src/vk/definitions.rs":"2276eb266d6d13ede38787dc472695ef10f6fdf5f657f96277887ba0e4b7fd80","src/vk/enums.rs":"a154a2d48b24252cb3bd377cf0dc6598e7a5d94b984ef453ae6af17b318d9566","src/vk/extensions.rs":"a41d6c1bb62c2747448a01c1f7ca62607c2063fd45886a4637fd21fbca82da82","src/vk/feature_extensions.rs":"50798e64809035a70c490a0cbfd987873e22def6bfdeeca8413764328b658542","src/vk/features.rs":"bb74a2bcca71c1b5f8683f13e25e7d324cd3879304ae1d70d873075b6424cba9","src/vk/macros.rs":"572ac9d1156ba6d50d77909e861d4d7906f9ab2bb26387d9c354317f1b3b91a9","src/vk/native.rs":"70d9c1c5e650de7604c3b1b8afdf311ee81d154271a9c127ceda652d6edf5094","src/vk/platform_types.rs":"6060a612329dd013b488178fc457f14127d94dcddb06abbbe2162805ab268263","src/vk/prelude.rs":"938afabf3233d4c48e77bc3cc28a90edb7c1aef0a2568bafb4347023095b7133","tests/constant_size_arrays.rs":"38f9bed3b59e7b51733ba0b103f2f5bd02bcd5e009c0ad3664883f2e1abc80ba","tests/display.rs":"bae8a46f07dbe4b95380c6f904a377ae556a6357c6d606f12cefd8df9af46846"}}
\ No newline at end of file
diff --git a/crates/ash/Android.bp b/crates/ash/Android.bp
index c5b3dac..4514051 100644
--- a/crates/ash/Android.bp
+++ b/crates/ash/Android.bp
@@ -106,4 +106,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ash/cargo_embargo.json b/crates/ash/cargo_embargo.json
index 15db1a5..ff26150 100644
--- a/crates/ash/cargo_embargo.json
+++ b/crates/ash/cargo_embargo.json
@@ -4,5 +4,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/async-stream-impl/.android-checksum.json b/crates/async-stream-impl/.android-checksum.json
index 3f90593..538293b 100644
--- a/crates/async-stream-impl/.android-checksum.json
+++ b/crates/async-stream-impl/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"de9810e9d94e3c96c800c147eaeab1e9fd92c3f5a9ca9fc0bb369995ee9f5bfc","Android.bp":"866e609b1d497338d016e8994a8e4e720907852851c74a8aac54e0ae0e9c2b9c","Cargo.toml":"df0e3db7d5e0fd74076a14468cf98241d8714bc679c3629d66b55084c5ec32ea","LICENSE":"91082263680ee4bff8afdf40be03814231c4372e71daac0260a975337400b98b","METADATA":"82347b33bf6149dfa0883b742eb58f3abe1f34628e0e59dc2e3e5cd96c7a2c62","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"43e2cf8ae35c5ef457ca9c08ad1d0ba2d47f7b7aade538d11115f9aafd40cc80","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/lib.diff":"fe0c7dacbe88947e17b84340ff9a1ff798aa6477a6444c8cf5bb26bfa2f1bcb7","src/lib.rs":"8f5283ccfb0a058b1a09b6749d25f736e9f1d9d4341fe5f69395ecf7bebb454e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"de9810e9d94e3c96c800c147eaeab1e9fd92c3f5a9ca9fc0bb369995ee9f5bfc","Android.bp":"078a0c8adf668f421696d1b5202f0769b9bd9f202e60b1e90dfc4a9030eb8e53","Cargo.toml":"df0e3db7d5e0fd74076a14468cf98241d8714bc679c3629d66b55084c5ec32ea","LICENSE":"91082263680ee4bff8afdf40be03814231c4372e71daac0260a975337400b98b","METADATA":"82347b33bf6149dfa0883b742eb58f3abe1f34628e0e59dc2e3e5cd96c7a2c62","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"43e2cf8ae35c5ef457ca9c08ad1d0ba2d47f7b7aade538d11115f9aafd40cc80","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/lib.diff":"fe0c7dacbe88947e17b84340ff9a1ff798aa6477a6444c8cf5bb26bfa2f1bcb7","src/lib.rs":"8f5283ccfb0a058b1a09b6749d25f736e9f1d9d4341fe5f69395ecf7bebb454e"}}
\ No newline at end of file
diff --git a/crates/async-stream-impl/Android.bp b/crates/async-stream-impl/Android.bp
index 397bb6c..553b1a6 100644
--- a/crates/async-stream-impl/Android.bp
+++ b/crates/async-stream-impl/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/async-stream-impl/cargo_embargo.json b/crates/async-stream-impl/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/async-stream-impl/cargo_embargo.json
+++ b/crates/async-stream-impl/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/async-task/.android-checksum.json b/crates/async-task/.android-checksum.json
index 2242fb3..807f7cb 100644
--- a/crates/async-task/.android-checksum.json
+++ b/crates/async-task/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"85805c6204e719c1a00b652c71f777b7cde2594b4d8c10b727a5d55a2f10dba7","Android.bp":"797a3845485d68993e6bee1f365ec2918d11cad9924e0a65ab6b9c99c82507f1","CHANGELOG.md":"454d12f564840e8c1cc06b4fffd5401c4962875081fdeb0d7da75ed9ca27a8b4","Cargo.lock":"3ef022a1c7b5fc471151a4f33da4164744911984e1e0d5ce8c4d34a4ebdde19f","Cargo.toml":"383c04226f74fcb682fa99d67f11c78d2f4f9f2e4f2d0f8e5bf4ddaaf5ab394d","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"4114f8e0cc85ad88368b526cca3b2e6702cc85fd81e5b7b733aad00e22e6193b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"efebf6f007e64f7b2a054cd8ebf6368529c8e1929c3ff496ab744efd7c07435b","TEST_MAPPING":"1a1458459b18016ed8a1661f3645520444a1f087cc619dbbee9442c759e97091","benches/spawn.rs":"7c58bc35f27c59e666d92ef4405f719753ecb9f345445574d5f090a28a107465","cargo_embargo.json":"906b0459617002fe5fd6917e1de04a3870578eef2145167feb102cad79b84212","examples/spawn-local.rs":"33b6f8324f83abbd2f543d090cdb13e0353ec039e192e4ab81d76489977432fa","examples/spawn-on-thread.rs":"352f3041551c43db48683c023d0160ddc9539132ce1c65a0e0275b1a0cdfadd8","examples/spawn.rs":"40c0d5573995161537e01f889948933c73ea5cb998014e4fa052886679f66c76","examples/with-metadata.rs":"cba4834f539fbe95c60dc2ffe62738c0dc0282688c62fa9b9376ec954e6bc3c4","src/header.rs":"78a61f35d56360006a351d1dbbc1a8167bcee9d250840b1d8edcff034449783c","src/lib.rs":"1c7f8e5ba2b8a074c55c9c12364c612d4dae9fa389a2153123c4242aacf3cbe3","src/raw.rs":"e47ae3d11a32fb2e6b4db3b85a6f913b20ff35834503a60a37a43ca699df953e","src/runnable.rs":"1f9a6cff1778d5cfae008bbac2c9484fe7c56ba57852701d20cf8d7a7d181cee","src/state.rs":"cb8c42860c68eef92b5267ae216e6a7f464b44c5af75f59f666e4e86188e4bdd","src/task.rs":"638d5b02f9bb0090998717737cc2f5b89dd0565b447825394841016832d28438","src/utils.rs":"47f0556e2860d9b477f0123f88831a1caed2e862252532588ad23915561ef25c","tests/basic.rs":"f4b7099954bb2b7db771a3693b4f8f607aea7dfdd182799bbdc7eebf132ec9b7","tests/cancel.rs":"387f737101cf7c28ecc85c84a69c7e3ebdd28d4e0cfeb105b8645c368a014c40","tests/join.rs":"8f8747c119abe77cae95a774034994012fba837b85e944337430b0378e106b07","tests/metadata.rs":"21b032e3f1690dbb67aa855a4f024e4d20be6beb53d2623b5cbe9f14fbb7e0c5","tests/panic.rs":"bae5def82f079141f836feb4e92619286ec541993a6a0fef06a29f0522849c80","tests/ready.rs":"daf9c97cf64c88749dbb242eccc4a1cab1817ffe9985e6e2c9d2b39afd03c63d","tests/waker_panic.rs":"b70a1477251e14f39c4b9b7601a67bbd8f1e4aed973c2e63f08bf8dc44cd740c","tests/waker_pending.rs":"87e97c4365f2c1ac1aaef0da93cdcd9182f5a71ee4983e924c17ae7cbeb36a7c","tests/waker_ready.rs":"7cac14873f50cdfbc2fc490a478c048b2ca6ea9cd096c642742f9193bca6d500"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"85805c6204e719c1a00b652c71f777b7cde2594b4d8c10b727a5d55a2f10dba7","Android.bp":"0d6f062e320c2eb1c4b1ba9b6a9045baa448e8b2b501252bbaee96cc4a2edd8c","CHANGELOG.md":"454d12f564840e8c1cc06b4fffd5401c4962875081fdeb0d7da75ed9ca27a8b4","Cargo.lock":"3ef022a1c7b5fc471151a4f33da4164744911984e1e0d5ce8c4d34a4ebdde19f","Cargo.toml":"383c04226f74fcb682fa99d67f11c78d2f4f9f2e4f2d0f8e5bf4ddaaf5ab394d","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"4114f8e0cc85ad88368b526cca3b2e6702cc85fd81e5b7b733aad00e22e6193b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"efebf6f007e64f7b2a054cd8ebf6368529c8e1929c3ff496ab744efd7c07435b","TEST_MAPPING":"1a1458459b18016ed8a1661f3645520444a1f087cc619dbbee9442c759e97091","benches/spawn.rs":"7c58bc35f27c59e666d92ef4405f719753ecb9f345445574d5f090a28a107465","cargo_embargo.json":"eda680b31f50ed39bbe4eb98da4d2f7c7651fb7ee1e29c7d233205aa67b03c96","examples/spawn-local.rs":"33b6f8324f83abbd2f543d090cdb13e0353ec039e192e4ab81d76489977432fa","examples/spawn-on-thread.rs":"352f3041551c43db48683c023d0160ddc9539132ce1c65a0e0275b1a0cdfadd8","examples/spawn.rs":"40c0d5573995161537e01f889948933c73ea5cb998014e4fa052886679f66c76","examples/with-metadata.rs":"cba4834f539fbe95c60dc2ffe62738c0dc0282688c62fa9b9376ec954e6bc3c4","src/header.rs":"78a61f35d56360006a351d1dbbc1a8167bcee9d250840b1d8edcff034449783c","src/lib.rs":"1c7f8e5ba2b8a074c55c9c12364c612d4dae9fa389a2153123c4242aacf3cbe3","src/raw.rs":"e47ae3d11a32fb2e6b4db3b85a6f913b20ff35834503a60a37a43ca699df953e","src/runnable.rs":"1f9a6cff1778d5cfae008bbac2c9484fe7c56ba57852701d20cf8d7a7d181cee","src/state.rs":"cb8c42860c68eef92b5267ae216e6a7f464b44c5af75f59f666e4e86188e4bdd","src/task.rs":"638d5b02f9bb0090998717737cc2f5b89dd0565b447825394841016832d28438","src/utils.rs":"47f0556e2860d9b477f0123f88831a1caed2e862252532588ad23915561ef25c","tests/basic.rs":"f4b7099954bb2b7db771a3693b4f8f607aea7dfdd182799bbdc7eebf132ec9b7","tests/cancel.rs":"387f737101cf7c28ecc85c84a69c7e3ebdd28d4e0cfeb105b8645c368a014c40","tests/join.rs":"8f8747c119abe77cae95a774034994012fba837b85e944337430b0378e106b07","tests/metadata.rs":"21b032e3f1690dbb67aa855a4f024e4d20be6beb53d2623b5cbe9f14fbb7e0c5","tests/panic.rs":"bae5def82f079141f836feb4e92619286ec541993a6a0fef06a29f0522849c80","tests/ready.rs":"daf9c97cf64c88749dbb242eccc4a1cab1817ffe9985e6e2c9d2b39afd03c63d","tests/waker_panic.rs":"b70a1477251e14f39c4b9b7601a67bbd8f1e4aed973c2e63f08bf8dc44cd740c","tests/waker_pending.rs":"87e97c4365f2c1ac1aaef0da93cdcd9182f5a71ee4983e924c17ae7cbeb36a7c","tests/waker_ready.rs":"7cac14873f50cdfbc2fc490a478c048b2ca6ea9cd096c642742f9193bca6d500"}}
\ No newline at end of file
diff --git a/crates/async-task/Android.bp b/crates/async-task/Android.bp
index 19bf04a..8963fac 100644
--- a/crates/async-task/Android.bp
+++ b/crates/async-task/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/async-task/cargo_embargo.json b/crates/async-task/cargo_embargo.json
index fbb9fcd..1d9bb64 100644
--- a/crates/async-task/cargo_embargo.json
+++ b/crates/async-task/cargo_embargo.json
@@ -3,5 +3,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/async-trait/.android-checksum.json b/crates/async-trait/.android-checksum.json
index e1210a1..3f4718b 100644
--- a/crates/async-trait/.android-checksum.json
+++ b/crates/async-trait/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"5150442002507e4d57524fad17ee2f728babb1f5c0d9e1f7dfce7c7b7211f743","Android.bp":"a3fe84edbe2f3af9479ff495c78fcf794f1349b3bb8f0a0f873f63257862f6f8","Cargo.toml":"c43f37c8f4e3d372272f74b5c7267e7efe6e67edd83884e836a91b12a620ab9b","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"afb553c4b2f15b4e78e58de25ba178e3e5b39eb0d03251d27ab51eeb5dd7cc1a","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dbc68843f522032244365b9b02cf6fb93c669885fcacb6b0cad92bf78245129c","TEST_MAPPING":"2e81a9050d3821ee5fc50e6211fcb26a5ca292d88b88037eca8d81d5cef4e938","cargo_embargo.json":"2cfc52f9eb76af7f4e8556acf0400fb847df8011aaed77c31aaa5e81cb45d4df","rules.mk":"a371fe9a6ca99aecace3a68a4499eebd30f40c36f0126a75fd86198d1be604a3","src/args.rs":"b2169135c2ed614621d1690401047e964c86dff9abf2b5135e52770cfa87b875","src/bound.rs":"69106cece0988872dd9611f3ac7cb9e40a9ff4beb9946fb7551db5ded2109e78","src/expand.rs":"dc0232ffe2de36386c31aae83fd244de754080bb62b3b8e871442d88572a5b95","src/lib.rs":"0dfb77ff9fa1376983a5bca3b28b6d6b2d109dbb7788b5d8a75c5e6f6c6d40ee","src/lifetime.rs":"c4d5cb4a23de7954cf3dacc537bc0ea4769fed9b9dc258e1924a21b60d40aa4a","src/parse.rs":"ae82fe264367fa7d6db71b0d601356e3abdd0073905521a4a9b59181c67371aa","src/receiver.rs":"a40271ec21710841b54b3fcac9f0a66b4515af65002b8ae604048bf6a67a422c","src/verbatim.rs":"fae34d3d1e5f78fb01a9e6549cc55da81fdec472b87276c21fddc5fd151c0324","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/executor/mod.rs":"e79b44bc4a3a93c068b65599fceb73f984757fe57e428eb3805bf4b619134a49","tests/test.rs":"c98c02c16d57c4846b631fa00ac02c0c7b38d008a62130f628246daba1f0d621","tests/ui/arg-implementation-detail.rs":"9ed7a4197585adcf0e2ccb37f62c6f98751c1e5acfb4376d293fe50049dad306","tests/ui/arg-implementation-detail.stderr":"7f000e03abae8081ba6ecd7609030d3f06222f44be596a57be8c34c8c95057f4","tests/ui/bare-trait-object.rs":"a86f231e27a7c9137bf67409186507f7dc15963b82776eb376ef20f511668594","tests/ui/bare-trait-object.stderr":"37bf6caf93c920670dc9cc5d4a1fa4cf57a84f1155f96e9324b189dbc6705b5a","tests/ui/consider-restricting.rs":"30e97d37fffca6ed9df95d4df2be849a14e991a7a601da101b40f7b34c620ffa","tests/ui/consider-restricting.stderr":"7ef96529863647af41a90a5019946001d3bbfd6ddcf57857aa26818ab20faceb","tests/ui/delimiter-span.rs":"67fa15c46638fc2a2ab20b0e42b7868a4eaefeb107509dae3557ec0ae7a25b2c","tests/ui/delimiter-span.stderr":"3ddc16c0f08622e5285535730c1ba7171b4d5941c9a648b2781c39a0f8ac1f1d","tests/ui/lifetime-defined-here.rs":"aa054f33436981cf50a4f8e8e8e268083e823da509d3c7c97f93f957fbd1100a","tests/ui/lifetime-defined-here.stderr":"da13f0fdba729d52a918e37ece95c310ac696575d1c4792cfd768ed01adf57a1","tests/ui/lifetime-span.rs":"2c12a63fc3fc697cd58ac3e2912918bb6b473dfeb0ecc434ab275742c3dd49c7","tests/ui/lifetime-span.stderr":"9a2b44067ebfb965d98fd74635532a80b9c7677eb91fa98fdc8cde702d98ad97","tests/ui/missing-async-in-impl.rs":"0f1af74f662fdbe29387b5bd6ac3f3909cd0299286f41f6771ab596638fa8e32","tests/ui/missing-async-in-impl.stderr":"13602ca46492ecab9663eda6bff4e7b18356bc651decff2a9d6f4f60d4624420","tests/ui/missing-async-in-trait.rs":"b50d27cc368e843a7d451c9d72a8807e75cd1cadcc008888f35ee7e517a8756f","tests/ui/missing-async-in-trait.stderr":"3d55e4004aee62527958e5c62b085781db120d8054b70a05090488d9e69d7427","tests/ui/missing-body.rs":"a2a213d372be2341c8fcd4208b9da4ac756c8091503beb74fa3abfd8088aa661","tests/ui/missing-body.stderr":"75cc103f5ac29c872ddd4367d68200b17aa4d819decd3f0f409841b4dfa9e45f","tests/ui/must-use.rs":"e666aa122d6b72b3642baa3c69673694eb372ecfe4ea90fc4e65cb3acab813f0","tests/ui/must-use.stderr":"bf25811bf2d8bfa6e4d6464b0fd472bece5c0d3f406d42a6be2037f94a7efc15","tests/ui/no-attribute-macro.rs":"4a7880bb9bcfc3b069fa1f75e08cc6769c9dc014aa1ea492047764e39df4d1af","tests/ui/no-attribute-macro.stderr":"ebcd45d7fa59dfc9fcdfb55e72cc8f14c7f10ed2e24c9df1ee56fd2b19345a9e","tests/ui/self-span.rs":"9817c1aa81a5c2bd3f3da46b303f140faf0d513693dcb932eca8e59fc41513c3","tests/ui/self-span.stderr":"14fa64b77ccbe1f2252bfc0f65ea5abab4740861e089c057b2bef6a03f84a176","tests/ui/send-not-implemented.rs":"3da028348398609731b00f8b1a15e0090357fe6bfa6137318675d31c66f551ff","tests/ui/send-not-implemented.stderr":"df395ef23cf056cc2678efef20b7b0ed3d9c3b65bbfb69ea0e176964958ccfdd","tests/ui/unreachable.rs":"3e52390a9b39639950f924a6cae1ce8a1908c8088d763c454d884e25cce4e832","tests/ui/unreachable.stderr":"d8b4d8a851898497ad5f5c4958a261f5982a7794f43bf250f46e6d746c39822a","tests/ui/unsupported-self.rs":"20d087011aeac8a17e5de90bac2913a9f827f4430d20330bef36c32fed245b74","tests/ui/unsupported-self.stderr":"74ec72d8a2c5fe72af40283ed89cecac44237212db01a0e3b39b5bd659205cea"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bed7206ba533d029f12470edaa95c112def71d4b6e11d32bee04dc15018235fd","Android.bp":"925e3f888c34edb688ce098ba37689f9a4e65e2aeb92d144cddf559fc25074eb","Cargo.toml":"d93086da1f96021193a7a5c2e34dfd548d747f552071da1594738a2afa4e8c69","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5389f3b0e6d2136d4b5056b8c1b2c86f29c40b3dc40714c29165f2137b574dc4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dbc68843f522032244365b9b02cf6fb93c669885fcacb6b0cad92bf78245129c","TEST_MAPPING":"2e81a9050d3821ee5fc50e6211fcb26a5ca292d88b88037eca8d81d5cef4e938","cargo_embargo.json":"22a28d55056a760b416b8c6cbe7d150324cb1f078b6813860c8f372de3a22c1a","rules.mk":"a371fe9a6ca99aecace3a68a4499eebd30f40c36f0126a75fd86198d1be604a3","src/args.rs":"b2169135c2ed614621d1690401047e964c86dff9abf2b5135e52770cfa87b875","src/bound.rs":"69106cece0988872dd9611f3ac7cb9e40a9ff4beb9946fb7551db5ded2109e78","src/expand.rs":"6950b402ae79f9e74a5ee26dea492b450abf4d2db94d23285a81b083ad38305c","src/lib.rs":"4a6f195b1eb8acc9189da40d905b79456c6fbeac1edda291634442f58895f5d4","src/lifetime.rs":"c4d5cb4a23de7954cf3dacc537bc0ea4769fed9b9dc258e1924a21b60d40aa4a","src/parse.rs":"ae82fe264367fa7d6db71b0d601356e3abdd0073905521a4a9b59181c67371aa","src/receiver.rs":"a40271ec21710841b54b3fcac9f0a66b4515af65002b8ae604048bf6a67a422c","src/verbatim.rs":"fae34d3d1e5f78fb01a9e6549cc55da81fdec472b87276c21fddc5fd151c0324","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/executor/mod.rs":"e79b44bc4a3a93c068b65599fceb73f984757fe57e428eb3805bf4b619134a49","tests/test.rs":"0d335308b0b595484390c0b88675964f74e73f19650c60ed49edceb47c09903b","tests/ui/arg-implementation-detail.rs":"9ed7a4197585adcf0e2ccb37f62c6f98751c1e5acfb4376d293fe50049dad306","tests/ui/arg-implementation-detail.stderr":"7f000e03abae8081ba6ecd7609030d3f06222f44be596a57be8c34c8c95057f4","tests/ui/bare-trait-object.rs":"a86f231e27a7c9137bf67409186507f7dc15963b82776eb376ef20f511668594","tests/ui/bare-trait-object.stderr":"37bf6caf93c920670dc9cc5d4a1fa4cf57a84f1155f96e9324b189dbc6705b5a","tests/ui/consider-restricting.rs":"30e97d37fffca6ed9df95d4df2be849a14e991a7a601da101b40f7b34c620ffa","tests/ui/consider-restricting.stderr":"7ef96529863647af41a90a5019946001d3bbfd6ddcf57857aa26818ab20faceb","tests/ui/delimiter-span.rs":"67fa15c46638fc2a2ab20b0e42b7868a4eaefeb107509dae3557ec0ae7a25b2c","tests/ui/delimiter-span.stderr":"3ddc16c0f08622e5285535730c1ba7171b4d5941c9a648b2781c39a0f8ac1f1d","tests/ui/lifetime-defined-here.rs":"aa054f33436981cf50a4f8e8e8e268083e823da509d3c7c97f93f957fbd1100a","tests/ui/lifetime-defined-here.stderr":"da13f0fdba729d52a918e37ece95c310ac696575d1c4792cfd768ed01adf57a1","tests/ui/lifetime-span.rs":"2c12a63fc3fc697cd58ac3e2912918bb6b473dfeb0ecc434ab275742c3dd49c7","tests/ui/lifetime-span.stderr":"9a2b44067ebfb965d98fd74635532a80b9c7677eb91fa98fdc8cde702d98ad97","tests/ui/missing-async-in-impl.rs":"0f1af74f662fdbe29387b5bd6ac3f3909cd0299286f41f6771ab596638fa8e32","tests/ui/missing-async-in-impl.stderr":"13602ca46492ecab9663eda6bff4e7b18356bc651decff2a9d6f4f60d4624420","tests/ui/missing-async-in-trait.rs":"b50d27cc368e843a7d451c9d72a8807e75cd1cadcc008888f35ee7e517a8756f","tests/ui/missing-async-in-trait.stderr":"3d55e4004aee62527958e5c62b085781db120d8054b70a05090488d9e69d7427","tests/ui/missing-body.rs":"a2a213d372be2341c8fcd4208b9da4ac756c8091503beb74fa3abfd8088aa661","tests/ui/missing-body.stderr":"75cc103f5ac29c872ddd4367d68200b17aa4d819decd3f0f409841b4dfa9e45f","tests/ui/must-use.rs":"e666aa122d6b72b3642baa3c69673694eb372ecfe4ea90fc4e65cb3acab813f0","tests/ui/must-use.stderr":"bf25811bf2d8bfa6e4d6464b0fd472bece5c0d3f406d42a6be2037f94a7efc15","tests/ui/no-attribute-macro.rs":"4a7880bb9bcfc3b069fa1f75e08cc6769c9dc014aa1ea492047764e39df4d1af","tests/ui/no-attribute-macro.stderr":"ebcd45d7fa59dfc9fcdfb55e72cc8f14c7f10ed2e24c9df1ee56fd2b19345a9e","tests/ui/self-span.rs":"9817c1aa81a5c2bd3f3da46b303f140faf0d513693dcb932eca8e59fc41513c3","tests/ui/self-span.stderr":"14fa64b77ccbe1f2252bfc0f65ea5abab4740861e089c057b2bef6a03f84a176","tests/ui/send-not-implemented.rs":"3da028348398609731b00f8b1a15e0090357fe6bfa6137318675d31c66f551ff","tests/ui/send-not-implemented.stderr":"df395ef23cf056cc2678efef20b7b0ed3d9c3b65bbfb69ea0e176964958ccfdd","tests/ui/unreachable.rs":"3e52390a9b39639950f924a6cae1ce8a1908c8088d763c454d884e25cce4e832","tests/ui/unreachable.stderr":"d8b4d8a851898497ad5f5c4958a261f5982a7794f43bf250f46e6d746c39822a","tests/ui/unsupported-self.rs":"20d087011aeac8a17e5de90bac2913a9f827f4430d20330bef36c32fed245b74","tests/ui/unsupported-self.stderr":"74ec72d8a2c5fe72af40283ed89cecac44237212db01a0e3b39b5bd659205cea"}}
\ No newline at end of file
diff --git a/crates/async-trait/.cargo-checksum.json b/crates/async-trait/.cargo-checksum.json
index ad7fcd1..ade9ad2 100644
--- a/crates/async-trait/.cargo-checksum.json
+++ b/crates/async-trait/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"e9e89b0e69eadef72ae7a7b48fe6f488e87b8056e26e73e042467293de2878e0","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"14f782ff6a20c3eae705b59f8c04f0e9a5d2e096ab47d20b28b315d7cbbbcd3b","src/args.rs":"6eed5497db91752b3aae597943c39e769f60406b37055304e69e4699f1f87b15","src/bound.rs":"90e3075543faca8a88eedca185f0999cc7b5a57a015142fa0464df8023733c27","src/expand.rs":"4fce996f44501f51e71c01e0f285bb95715fcb662650e43e59485068a5fe6824","src/lib.rs":"95cc01062b6d7912d161f6cc6c0c517da4a6683d89ba445d4c9e9d795733ee6c","src/lifetime.rs":"cfa429d66627720557a00a0bc5cfaffd6d50e350d5db3eab955c5c4f6300f82d","src/parse.rs":"cd9032fe2c6dcf41050b3a59b9fb98eb9700a29bbe2fa011ee2854014c1666b7","src/receiver.rs":"9d4c3decf31d3b8e33c5473e05e977cf0424920b47a9b636854c0e053a21306d","src/verbatim.rs":"45d0b691fab21f20d3414733f00d82845442d23b6f2547f8d6880a709d0d3b2a","tests/compiletest.rs":"4e381aa8ca3eabb7ac14d1e0c3700b3223e47640547a6988cfa13ad68255f60f","tests/executor/mod.rs":"3cf48614288715f625514a73ae642f649c2635a402a3ad90278bbee116a7234c","tests/test.rs":"c33705c0073dfaf1f475924e5f265361bfa14f1f31b55d0ac2858564817a69f3","tests/ui/arg-implementation-detail.rs":"7199aba887dd0a8a14c86ec16542a73a70244930f8202940f43e40a62f72d200","tests/ui/arg-implementation-detail.stderr":"c3ff1a2a9a9ca4368cb8719e2a035a6d2d45b367212bec2b1fe2712fcfbbbe5d","tests/ui/bare-trait-object.rs":"4546e8bd6682de11920fa4c768295fed61954484ef0550dfadbc5677b77f29a5","tests/ui/bare-trait-object.stderr":"c2917683f37e46bed7575742d0fc099af40a1c2c92110e467675ec62dad4819b","tests/ui/consider-restricting.rs":"bff794222d9324241155568d541e7beac0238b66ce14039b242d4392f4e531b6","tests/ui/consider-restricting.stderr":"980e099b235b310d1a059343c0c530cef0308dc7bd66a27ee192e7837df9012e","tests/ui/delimiter-span.rs":"f4fd804223ce3be0d4eecdfd222afdd835c5393e2473ff4932116163943c0bc9","tests/ui/delimiter-span.stderr":"e3bcbf24ada024a98b768a08768b110a5b53a45f4a10bb3cc2cb35e5faedfa73","tests/ui/lifetime-defined-here.rs":"3139a3d92cf787c43afd93da2d967ee80d114ee3a0b9c924da9601b5c6614ef5","tests/ui/lifetime-defined-here.stderr":"0d4236821e0f43e5ae38a99319a64020576e78a49a71d8c94eb8a486d384308c","tests/ui/lifetime-span.rs":"bbcaa92c2bc08e18cf0c7e9ca1f0bd8080772ebde8b067d819eb2fd662e47b3b","tests/ui/lifetime-span.stderr":"6896c95b0196ddd6a6aa6aa35f676684300eee7c252c1d8e4748710200e374c1","tests/ui/missing-async-in-impl.rs":"5a5538d08d11c145211a92af0d8973eee8b21f33b90adda85430805bd3dbbc83","tests/ui/missing-async-in-impl.stderr":"9beb93fec2cd94394cc772dd6003e1f9893976f49f6ae306c1a5867c139dd2ec","tests/ui/missing-async-in-trait.rs":"dc67241593f270233ba885df92e59164126416e68d49d8d62edc251666b5db6e","tests/ui/missing-async-in-trait.stderr":"7ce3b5bfe202829a33fb9fed2c566ab0f11c44a965a0bfc09449207717e70ab2","tests/ui/missing-body.rs":"d06c0da8c6044e7c790b924136f167e2edc0d0d3fa01f23521f3f08ca605929b","tests/ui/missing-body.stderr":"e5ee994398bf8294324d61df02467a4229f68f4113bf5acc004851c03d66ec6a","tests/ui/must-use.rs":"75090c7df984df0996464337f60371d198bd0caf3f9f44b10d1e131f15fd4fca","tests/ui/must-use.stderr":"3f4c30eb0234da366b6dc360b0ff85ef5f621003055fb64a0e1fc18d4a0e244f","tests/ui/no-attribute-macro.rs":"99aaad298a8ef366029e53b6d320b14f18e04057a117ff58a0aebad65f01e22f","tests/ui/no-attribute-macro.stderr":"8e4541661679e38fd1f288a5aea9bd8a3f0cabbc5a53f4e39d663b63d79396f4","tests/ui/self-span.rs":"67ddde05907d7014bfb3f2c63d427b1d72d6c4369a9108a4335dac6bee5832b2","tests/ui/self-span.stderr":"3d932050d36b4fa4b2ce9a9b9f96417f8cbd8924f845a035192fd01b05f6fe21","tests/ui/send-not-implemented.rs":"affbbe8bc9c3501d3db3a024e06daa9d076f1d142dba290c7aa1ea119daebd19","tests/ui/send-not-implemented.stderr":"b2cd38ce3cadda8f9e641b98e37db51afba47eab21d29cbfc47a90c8a444aa27","tests/ui/unreachable.rs":"be0aa7cc129fe42a1fbd85e36b3f08c6a2bd16c90ed2e33fc4c50e40ce085bcd","tests/ui/unreachable.stderr":"73beb71cb74076f2cb45485271de31658cf59f4143e62daa34b9f2a8980ddfcd","tests/ui/unsupported-self.rs":"f7855bc39dab1fd2f533fb2e873a27c3757dcb9fb57001e4b19f58d3dda36d01","tests/ui/unsupported-self.stderr":"64fc5d45cb51330f0a1e85e69a28b69ddda12a109aa6a8ba3eaee1ac58d93b5f"},"package":"d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97"}
\ No newline at end of file
+{"files":{"Cargo.toml":"9fdccdf36c727499262a06a64e5528a968a7b263bc30f66fe515f80fdc6a7c29","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"14f782ff6a20c3eae705b59f8c04f0e9a5d2e096ab47d20b28b315d7cbbbcd3b","src/args.rs":"6eed5497db91752b3aae597943c39e769f60406b37055304e69e4699f1f87b15","src/bound.rs":"90e3075543faca8a88eedca185f0999cc7b5a57a015142fa0464df8023733c27","src/expand.rs":"c12b03b2a8fb0cab36d87ac986f80428f686f3e12c5263f42d55353e2a10392c","src/lib.rs":"4d89bb3358b404998f2882ba4e5a05ddad996f44c1e874d306e91279ce374b16","src/lifetime.rs":"cfa429d66627720557a00a0bc5cfaffd6d50e350d5db3eab955c5c4f6300f82d","src/parse.rs":"cd9032fe2c6dcf41050b3a59b9fb98eb9700a29bbe2fa011ee2854014c1666b7","src/receiver.rs":"9d4c3decf31d3b8e33c5473e05e977cf0424920b47a9b636854c0e053a21306d","src/verbatim.rs":"45d0b691fab21f20d3414733f00d82845442d23b6f2547f8d6880a709d0d3b2a","tests/compiletest.rs":"4e381aa8ca3eabb7ac14d1e0c3700b3223e47640547a6988cfa13ad68255f60f","tests/executor/mod.rs":"3cf48614288715f625514a73ae642f649c2635a402a3ad90278bbee116a7234c","tests/test.rs":"4d1158948e9a5ea25f50edf05283b7d3e45df96735101bf7dbca18974338ebeb","tests/ui/arg-implementation-detail.rs":"7199aba887dd0a8a14c86ec16542a73a70244930f8202940f43e40a62f72d200","tests/ui/arg-implementation-detail.stderr":"c3ff1a2a9a9ca4368cb8719e2a035a6d2d45b367212bec2b1fe2712fcfbbbe5d","tests/ui/bare-trait-object.rs":"4546e8bd6682de11920fa4c768295fed61954484ef0550dfadbc5677b77f29a5","tests/ui/bare-trait-object.stderr":"c2917683f37e46bed7575742d0fc099af40a1c2c92110e467675ec62dad4819b","tests/ui/consider-restricting.rs":"bff794222d9324241155568d541e7beac0238b66ce14039b242d4392f4e531b6","tests/ui/consider-restricting.stderr":"980e099b235b310d1a059343c0c530cef0308dc7bd66a27ee192e7837df9012e","tests/ui/delimiter-span.rs":"f4fd804223ce3be0d4eecdfd222afdd835c5393e2473ff4932116163943c0bc9","tests/ui/delimiter-span.stderr":"e3bcbf24ada024a98b768a08768b110a5b53a45f4a10bb3cc2cb35e5faedfa73","tests/ui/lifetime-defined-here.rs":"3139a3d92cf787c43afd93da2d967ee80d114ee3a0b9c924da9601b5c6614ef5","tests/ui/lifetime-defined-here.stderr":"0d4236821e0f43e5ae38a99319a64020576e78a49a71d8c94eb8a486d384308c","tests/ui/lifetime-span.rs":"bbcaa92c2bc08e18cf0c7e9ca1f0bd8080772ebde8b067d819eb2fd662e47b3b","tests/ui/lifetime-span.stderr":"6896c95b0196ddd6a6aa6aa35f676684300eee7c252c1d8e4748710200e374c1","tests/ui/missing-async-in-impl.rs":"5a5538d08d11c145211a92af0d8973eee8b21f33b90adda85430805bd3dbbc83","tests/ui/missing-async-in-impl.stderr":"9beb93fec2cd94394cc772dd6003e1f9893976f49f6ae306c1a5867c139dd2ec","tests/ui/missing-async-in-trait.rs":"dc67241593f270233ba885df92e59164126416e68d49d8d62edc251666b5db6e","tests/ui/missing-async-in-trait.stderr":"7ce3b5bfe202829a33fb9fed2c566ab0f11c44a965a0bfc09449207717e70ab2","tests/ui/missing-body.rs":"d06c0da8c6044e7c790b924136f167e2edc0d0d3fa01f23521f3f08ca605929b","tests/ui/missing-body.stderr":"e5ee994398bf8294324d61df02467a4229f68f4113bf5acc004851c03d66ec6a","tests/ui/must-use.rs":"75090c7df984df0996464337f60371d198bd0caf3f9f44b10d1e131f15fd4fca","tests/ui/must-use.stderr":"3f4c30eb0234da366b6dc360b0ff85ef5f621003055fb64a0e1fc18d4a0e244f","tests/ui/no-attribute-macro.rs":"99aaad298a8ef366029e53b6d320b14f18e04057a117ff58a0aebad65f01e22f","tests/ui/no-attribute-macro.stderr":"8e4541661679e38fd1f288a5aea9bd8a3f0cabbc5a53f4e39d663b63d79396f4","tests/ui/self-span.rs":"67ddde05907d7014bfb3f2c63d427b1d72d6c4369a9108a4335dac6bee5832b2","tests/ui/self-span.stderr":"3d932050d36b4fa4b2ce9a9b9f96417f8cbd8924f845a035192fd01b05f6fe21","tests/ui/send-not-implemented.rs":"affbbe8bc9c3501d3db3a024e06daa9d076f1d142dba290c7aa1ea119daebd19","tests/ui/send-not-implemented.stderr":"b2cd38ce3cadda8f9e641b98e37db51afba47eab21d29cbfc47a90c8a444aa27","tests/ui/unreachable.rs":"be0aa7cc129fe42a1fbd85e36b3f08c6a2bd16c90ed2e33fc4c50e40ce085bcd","tests/ui/unreachable.stderr":"73beb71cb74076f2cb45485271de31658cf59f4143e62daa34b9f2a8980ddfcd","tests/ui/unsupported-self.rs":"f7855bc39dab1fd2f533fb2e873a27c3757dcb9fb57001e4b19f58d3dda36d01","tests/ui/unsupported-self.stderr":"64fc5d45cb51330f0a1e85e69a28b69ddda12a109aa6a8ba3eaee1ac58d93b5f"},"package":"e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"}
\ No newline at end of file
diff --git a/crates/async-trait/Android.bp b/crates/async-trait/Android.bp
index bc22bec..e7672c5 100644
--- a/crates/async-trait/Android.bp
+++ b/crates/async-trait/Android.bp
@@ -17,7 +17,7 @@
name: "libasync_trait",
crate_name: "async_trait",
cargo_env_compat: true,
- cargo_pkg_version: "0.1.87",
+ cargo_pkg_version: "0.1.88",
crate_root: "src/lib.rs",
edition: "2021",
rustlibs: [
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/async-trait/Cargo.toml b/crates/async-trait/Cargo.toml
index 803f6cb..4d44bb1 100644
--- a/crates/async-trait/Cargo.toml
+++ b/crates/async-trait/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "async-trait"
-version = "0.1.87"
+version = "0.1.88"
authors = ["David Tolnay <[email protected]>"]
build = false
exclude = ["build.rs"]
diff --git a/crates/async-trait/METADATA b/crates/async-trait/METADATA
index 04b34cc..94b4683 100644
--- a/crates/async-trait/METADATA
+++ b/crates/async-trait/METADATA
@@ -1,17 +1,17 @@
name: "async-trait"
description: "Type erasure for async trait methods"
third_party {
- version: "0.1.87"
+ version: "0.1.88"
license_type: NOTICE
last_upgrade_date {
year: 2025
month: 3
- day: 5
+ day: 19
}
homepage: "https://crates.io/crates/async-trait"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/async-trait/async-trait-0.1.87.crate"
- version: "0.1.87"
+ value: "https://static.crates.io/crates/async-trait/async-trait-0.1.88.crate"
+ version: "0.1.88"
}
}
diff --git a/crates/async-trait/cargo_embargo.json b/crates/async-trait/cargo_embargo.json
index 1dc3922..5238984 100644
--- a/crates/async-trait/cargo_embargo.json
+++ b/crates/async-trait/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/async-trait/src/expand.rs b/crates/async-trait/src/expand.rs
index cfaa11c..573ad1d 100644
--- a/crates/async-trait/src/expand.rs
+++ b/crates/async-trait/src/expand.rs
@@ -192,10 +192,14 @@
Some(colon_token) => colon_token.span,
None => param_name.span(),
};
- let bounds = mem::take(&mut param.bounds);
- where_clause_or_default(&mut sig.generics.where_clause)
- .predicates
- .push(parse_quote_spanned!(span=> #param_name: 'async_trait + #bounds));
+ if param.attrs.is_empty() {
+ let bounds = mem::take(&mut param.bounds);
+ where_clause_or_default(&mut sig.generics.where_clause)
+ .predicates
+ .push(parse_quote_spanned!(span=> #param_name: 'async_trait + #bounds));
+ } else {
+ param.bounds.push(parse_quote!('async_trait));
+ }
}
GenericParam::Lifetime(param) => {
let param_name = ¶m.lifetime;
@@ -203,10 +207,14 @@
Some(colon_token) => colon_token.span,
None => param_name.span(),
};
- let bounds = mem::take(&mut param.bounds);
- where_clause_or_default(&mut sig.generics.where_clause)
- .predicates
- .push(parse_quote_spanned!(span=> #param: 'async_trait + #bounds));
+ if param.attrs.is_empty() {
+ let bounds = mem::take(&mut param.bounds);
+ where_clause_or_default(&mut sig.generics.where_clause)
+ .predicates
+ .push(parse_quote_spanned!(span=> #param: 'async_trait + #bounds));
+ } else {
+ param.bounds.push(parse_quote!('async_trait));
+ }
}
GenericParam::Const(_) => {}
}
diff --git a/crates/async-trait/src/lib.rs b/crates/async-trait/src/lib.rs
index 1a6f97a..bc9bd92 100644
--- a/crates/async-trait/src/lib.rs
+++ b/crates/async-trait/src/lib.rs
@@ -214,7 +214,7 @@
//! }
//! ```
-#![doc(html_root_url = "https://docs.rs/async-trait/0.1.87")]
+#![doc(html_root_url = "https://docs.rs/async-trait/0.1.88")]
#![allow(
clippy::default_trait_access,
clippy::doc_markdown,
diff --git a/crates/async-trait/tests/test.rs b/crates/async-trait/tests/test.rs
index 7050260..0b6a322 100644
--- a/crates/async-trait/tests/test.rs
+++ b/crates/async-trait/tests/test.rs
@@ -1685,6 +1685,7 @@
}
}
+// https://github.com/dtolnay/async-trait/issues/283
pub mod issue283 {
use async_trait::async_trait;
@@ -1704,3 +1705,24 @@
}
}
}
+
+// https://github.com/dtolnay/async-trait/issues/288
+pub mod issue288 {
+ use async_trait::async_trait;
+
+ #[async_trait]
+ pub trait Trait {
+ async fn f<#[cfg(any())] T: Send>(#[cfg(any())] t: T);
+ async fn g<#[cfg(all())] T: Send>(#[cfg(all())] t: T);
+ }
+
+ pub struct Struct;
+
+ #[async_trait]
+ impl Trait for Struct {
+ async fn f<#[cfg(any())] T: Send>(#[cfg(any())] t: T) {}
+ async fn g<#[cfg(all())] T: Send>(#[cfg(all())] t: T) {
+ let _ = t;
+ }
+ }
+}
diff --git a/crates/atty/.android-checksum.json b/crates/atty/.android-checksum.json
index e41dc25..a61f954 100644
--- a/crates/atty/.android-checksum.json
+++ b/crates/atty/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7e5aff145900365501cd84ab47dabab33496ade4eeb2eabedcfd1fc2a1ef945c","Android.bp":"3f1154fe13748df21c54e966cdddacce4dd073b8c4709a96b41fa1b678c9e3f4","CHANGELOG.md":"a7d7532b4fb001c4fc21e661896c694102d4ae6a51538d1b5939d7b77383fc08","Cargo.lock":"2b76a414469add7778f3fe83a1bc1297ba9eb111635b8f045844f63632765ac6","Cargo.toml":"54e94d013a48d400e430a7a5ddaa065457a46dcdbfb66413aab12a6d79910376","LICENSE":"3c86974ea07358c633f2083889d07ae322442b0ab291b1a1f22e6a386fac6890","METADATA":"ab978ee29db5c2083aec1757d145ba7f8c88b88f87b0d9c17aad977c6389a501","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b02157cdaf7de5a3da2a3fac1b81df347427fa42e9effe9647953ad4d616c323","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/atty.rs":"e042b260fc49183eaa05b4bbfadb90bf4487cd7641fb3f5824199b1dab3f3e3d","rustfmt.toml":"3dfaa70f081d001e7046bcb3cd5e1f379eaa9a2e4688afe9a1c931bbf43ead26","src/lib.rs":"b495484991ddb2c4869931ddb99cf6a9c7ea8a8987f07ebe9114ec5fb722ef8c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7e5aff145900365501cd84ab47dabab33496ade4eeb2eabedcfd1fc2a1ef945c","Android.bp":"a78b012e30bf598eef0f2c2c068d5b893ec75fbe7c51ffbac47cd1156aabf2fd","CHANGELOG.md":"a7d7532b4fb001c4fc21e661896c694102d4ae6a51538d1b5939d7b77383fc08","Cargo.lock":"2b76a414469add7778f3fe83a1bc1297ba9eb111635b8f045844f63632765ac6","Cargo.toml":"54e94d013a48d400e430a7a5ddaa065457a46dcdbfb66413aab12a6d79910376","LICENSE":"3c86974ea07358c633f2083889d07ae322442b0ab291b1a1f22e6a386fac6890","METADATA":"ab978ee29db5c2083aec1757d145ba7f8c88b88f87b0d9c17aad977c6389a501","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b02157cdaf7de5a3da2a3fac1b81df347427fa42e9effe9647953ad4d616c323","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/atty.rs":"e042b260fc49183eaa05b4bbfadb90bf4487cd7641fb3f5824199b1dab3f3e3d","rustfmt.toml":"3dfaa70f081d001e7046bcb3cd5e1f379eaa9a2e4688afe9a1c931bbf43ead26","src/lib.rs":"b495484991ddb2c4869931ddb99cf6a9c7ea8a8987f07ebe9114ec5fb722ef8c"}}
\ No newline at end of file
diff --git a/crates/atty/Android.bp b/crates/atty/Android.bp
index 7992eba..e890e47 100644
--- a/crates/atty/Android.bp
+++ b/crates/atty/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/atty/cargo_embargo.json b/crates/atty/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/atty/cargo_embargo.json
+++ b/crates/atty/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bencher/.android-checksum.json b/crates/bencher/.android-checksum.json
index 380b310..9ff51cf 100644
--- a/crates/bencher/.android-checksum.json
+++ b/crates/bencher/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6c1504c5d793ab320cb42e78b886a4a816e9ab85c406d2eaf68b68733accd063","Android.bp":"f71595b1f7883e9458e034a69f399f997238814f27e2a57e350a3d9d1cce3109","Cargo.toml":"dee0da3c1dff13a22f8abf0fff0593d9437cb8ffe71ac6131a1f51dbb111f6dc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"aa47da99ece075e2f60f3bb4794ff1d66d098d8b21b18820cbd6593bb066fe39","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.rst":"50e9322d625c45a60b30412a95c29bc01179f401340d1bd02f95f946c755a62a","TEST_MAPPING":"87175f7f2440378e5b75d7c0ce8d62a2207814f4d9842a675a88979f8a70a13b","benches/example.rs":"c12fabd8037052951316e81349a98e81587ae21848507235a364f340294259f2","cargo_embargo.json":"3c1e1d20399b03bdf55f18d6015a4094345e1520ee0c54e21b2c4c0f8cbb7536","lib.rs":"ccb77ccc247e68fd694e81060773bcb0ca197c26b300b580b2a76a7b11a43fd9","macros.rs":"4956c5b0bdcf970c6898812ef5082339ce9ef85111d22cc2b62f5e4ddc66bf34","stats.rs":"8cdb2675a5857e02d63ebacc3d40aaf5bc4552baed42ee25e5fa1e5c226b3b25"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6c1504c5d793ab320cb42e78b886a4a816e9ab85c406d2eaf68b68733accd063","Android.bp":"8876a20336bad4cc298559a9bf125081cb852d67a0c5b1cdbb999d19e366a7f2","Cargo.toml":"dee0da3c1dff13a22f8abf0fff0593d9437cb8ffe71ac6131a1f51dbb111f6dc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"aa47da99ece075e2f60f3bb4794ff1d66d098d8b21b18820cbd6593bb066fe39","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.rst":"50e9322d625c45a60b30412a95c29bc01179f401340d1bd02f95f946c755a62a","TEST_MAPPING":"87175f7f2440378e5b75d7c0ce8d62a2207814f4d9842a675a88979f8a70a13b","benches/example.rs":"c12fabd8037052951316e81349a98e81587ae21848507235a364f340294259f2","cargo_embargo.json":"50e8e8ab3603fba8f92d10fef7134328fbcff2eb41ec44050567f63bcbd82c49","lib.rs":"ccb77ccc247e68fd694e81060773bcb0ca197c26b300b580b2a76a7b11a43fd9","macros.rs":"4956c5b0bdcf970c6898812ef5082339ce9ef85111d22cc2b62f5e4ddc66bf34","stats.rs":"8cdb2675a5857e02d63ebacc3d40aaf5bc4552baed42ee25e5fa1e5c226b3b25"}}
\ No newline at end of file
diff --git a/crates/bencher/Android.bp b/crates/bencher/Android.bp
index 11b2d65..717ebed 100644
--- a/crates/bencher/Android.bp
+++ b/crates/bencher/Android.bp
@@ -42,4 +42,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/bencher/cargo_embargo.json b/crates/bencher/cargo_embargo.json
index 246281d..1498c29 100644
--- a/crates/bencher/cargo_embargo.json
+++ b/crates/bencher/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"tests": true,
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bincode/.android-checksum.json b/crates/bincode/.android-checksum.json
index a6c83a3..0bfb716 100644
--- a/crates/bincode/.android-checksum.json
+++ b/crates/bincode/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a8b17aafa31948cdefbc8f705b2206aec31984bda517ef0f8edb65648615cd46","Android.bp":"ca9617414fe479529e2a5e318ad60ccaeac68440a6ca48c985e0574cae9a894e","Cargo.toml":"306565d05f646e077d06c0699ed092b0414c6136459f18a21dddc7cc9ed7ba0f","LICENSE":"fb4eccc0ebb659a36a0a963f0b18b56be79c7b04657e4546d4efbbf5cd209693","LICENSE.md":"fb4eccc0ebb659a36a0a963f0b18b56be79c7b04657e4546d4efbbf5cd209693","METADATA":"a7c05f1589f34f1258449952884ad7ae6b805dd74e12b3b906e043b03203a0ef","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","readme.md":"d23dbc9ecf4389484177a9d50f9c4cde9c12b5f4afc4dd5cb86305669fed0a78","src/byteorder.rs":"e94f1318a3e8aec968f636fe3a8eece7cf1cb17edc56fc133d83eda4f435f506","src/config/endian.rs":"b8994ee83f425a212f11ac2686bd92fbdce3292356ca379d72beaa63ed0f9cf6","src/config/int.rs":"b3b99198c9f576c8b5448348c9c73a0c556ba5b9fdd569bc6c825f7def3ac230","src/config/legacy.rs":"a58d89f6b454a99d91901b4f7438e8c2dc7d1da5f293f81d5a0e4600a14c45f7","src/config/limit.rs":"b82408eea54c59447e2295edce63f626bf3d16f813612e261cc5bf372e6b0155","src/config/mod.rs":"46787b8b37f54c3ebcd94f4c53f002d9556866e8cf2c0cf003767b58081c977a","src/config/trailing.rs":"9eb55933930b54b51cafa52cef0024ef85d210a6147a21db119b0dd3b143b676","src/de/mod.rs":"20d53b1809082931208c8545884826049fb000f7efc9acd83457379a305a280d","src/de/read.rs":"5795906e78703d6943e0f0c691c45a6fdbd0375ef542044272c5692ce76d551c","src/error.rs":"8f85982f0346f197d5914e018708ef777a0c472e0c29943ffa62ab07b04a0f40","src/internal.rs":"731e882d3fc9a2c9abf1ea3c4dbc71f697ea4434163061b4bf2af3c8a9d1400c","src/lib.rs":"2e810a46cb8e80ea6671201a0101e9da7259d0c88010ba6251cd0118022008a1","src/ser/mod.rs":"c4c82f4859f129f73cb1f7fe590ff6343db937a23a727302daa4f598ff194ae7","tests/test.rs":"b631940c09fdbde379df3250e85d1e9b4a62d5df461c23a623c9ffcbd1474e7a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a8b17aafa31948cdefbc8f705b2206aec31984bda517ef0f8edb65648615cd46","Android.bp":"526eb71f6c5443b1852b830850a16b7d299489fe429d84baf158daecc72ed199","Cargo.toml":"306565d05f646e077d06c0699ed092b0414c6136459f18a21dddc7cc9ed7ba0f","LICENSE":"fb4eccc0ebb659a36a0a963f0b18b56be79c7b04657e4546d4efbbf5cd209693","LICENSE.md":"fb4eccc0ebb659a36a0a963f0b18b56be79c7b04657e4546d4efbbf5cd209693","METADATA":"a7c05f1589f34f1258449952884ad7ae6b805dd74e12b3b906e043b03203a0ef","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","readme.md":"d23dbc9ecf4389484177a9d50f9c4cde9c12b5f4afc4dd5cb86305669fed0a78","src/byteorder.rs":"e94f1318a3e8aec968f636fe3a8eece7cf1cb17edc56fc133d83eda4f435f506","src/config/endian.rs":"b8994ee83f425a212f11ac2686bd92fbdce3292356ca379d72beaa63ed0f9cf6","src/config/int.rs":"b3b99198c9f576c8b5448348c9c73a0c556ba5b9fdd569bc6c825f7def3ac230","src/config/legacy.rs":"a58d89f6b454a99d91901b4f7438e8c2dc7d1da5f293f81d5a0e4600a14c45f7","src/config/limit.rs":"b82408eea54c59447e2295edce63f626bf3d16f813612e261cc5bf372e6b0155","src/config/mod.rs":"46787b8b37f54c3ebcd94f4c53f002d9556866e8cf2c0cf003767b58081c977a","src/config/trailing.rs":"9eb55933930b54b51cafa52cef0024ef85d210a6147a21db119b0dd3b143b676","src/de/mod.rs":"20d53b1809082931208c8545884826049fb000f7efc9acd83457379a305a280d","src/de/read.rs":"5795906e78703d6943e0f0c691c45a6fdbd0375ef542044272c5692ce76d551c","src/error.rs":"8f85982f0346f197d5914e018708ef777a0c472e0c29943ffa62ab07b04a0f40","src/internal.rs":"731e882d3fc9a2c9abf1ea3c4dbc71f697ea4434163061b4bf2af3c8a9d1400c","src/lib.rs":"2e810a46cb8e80ea6671201a0101e9da7259d0c88010ba6251cd0118022008a1","src/ser/mod.rs":"c4c82f4859f129f73cb1f7fe590ff6343db937a23a727302daa4f598ff194ae7","tests/test.rs":"b631940c09fdbde379df3250e85d1e9b4a62d5df461c23a623c9ffcbd1474e7a"}}
\ No newline at end of file
diff --git a/crates/bincode/Android.bp b/crates/bincode/Android.bp
index f2b3985..4adb423 100644
--- a/crates/bincode/Android.bp
+++ b/crates/bincode/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/bincode/cargo_embargo.json b/crates/bincode/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/bincode/cargo_embargo.json
+++ b/crates/bincode/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bindgen-cli/.android-checksum.json b/crates/bindgen-cli/.android-checksum.json
index a2e2e0f..a1c9977 100644
--- a/crates/bindgen-cli/.android-checksum.json
+++ b/crates/bindgen-cli/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"86b06d18aa652bea54f9a9a04ce8a135a7864d000962f27f9f328c809c1bc2ad","Android.bp":"f55d29114f1c45a31727eccbede9402d02d846e7559abfc88cd2721141860bf5","Cargo.lock":"2042c9a86624a27b7b60701b6a6c3e41bad8771ce2bc459844cefa0076f41193","Cargo.toml":"5f4545ea78bd4ef16f6ff6824e6fb3a47658c0dabd6d30a2299bf37101672498","LICENSE":"6668e6934a6fe45aff7bb31f37510c18c7c0b52d68044aa4ae6cf98afdc5b737","METADATA":"f702354ee19ea01f0801f459ae476795e77cc891df4a281974cc3a3b59d718cd","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"455a16d950ecd6071efcc3f28f1554563eafe7d7efcdf73538423c1f53322e09","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo2android-extra-module.bp.fragment":"b2b4ee9d6a116fe917f5bddb66e3d334d570b459511befe3ea3af48031507234","cargo_embargo.json":"17efa3fa9212225ce1175e2f4bcc8a194b37ca370a3331e6dd891e4d4bf07cbd","main.rs":"57d5de25f1f76554f396af1b6c79b537a4dcb195e621e9cce8b322d21c6cecf6","options.rs":"ebedbf7a37526e2f2c07ad7414fa0c49834443356de3a8d57e7596cb7fda5ea9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"86b06d18aa652bea54f9a9a04ce8a135a7864d000962f27f9f328c809c1bc2ad","Android.bp":"f55d29114f1c45a31727eccbede9402d02d846e7559abfc88cd2721141860bf5","Cargo.lock":"2042c9a86624a27b7b60701b6a6c3e41bad8771ce2bc459844cefa0076f41193","Cargo.toml":"5f4545ea78bd4ef16f6ff6824e6fb3a47658c0dabd6d30a2299bf37101672498","LICENSE":"6668e6934a6fe45aff7bb31f37510c18c7c0b52d68044aa4ae6cf98afdc5b737","METADATA":"f702354ee19ea01f0801f459ae476795e77cc891df4a281974cc3a3b59d718cd","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"455a16d950ecd6071efcc3f28f1554563eafe7d7efcdf73538423c1f53322e09","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo2android-extra-module.bp.fragment":"b2b4ee9d6a116fe917f5bddb66e3d334d570b459511befe3ea3af48031507234","cargo_embargo.json":"3da937ca5b78181039ccdaffd688d1eee2586dc83ca1fb094243c747aa31b287","main.rs":"57d5de25f1f76554f396af1b6c79b537a4dcb195e621e9cce8b322d21c6cecf6","options.rs":"ebedbf7a37526e2f2c07ad7414fa0c49834443356de3a8d57e7596cb7fda5ea9"}}
\ No newline at end of file
diff --git a/crates/bindgen-cli/cargo_embargo.json b/crates/bindgen-cli/cargo_embargo.json
index 4978cfd..7fbb3bd 100644
--- a/crates/bindgen-cli/cargo_embargo.json
+++ b/crates/bindgen-cli/cargo_embargo.json
@@ -7,5 +7,6 @@
"add_toplevel_block": "cargo2android-extra-module.bp.fragment"
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bindgen/.android-checksum.json b/crates/bindgen/.android-checksum.json
index 368c310..fafee29 100644
--- a/crates/bindgen/.android-checksum.json
+++ b/crates/bindgen/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f17cb164631ebac6082e1c923f4d2d4e1ef4c3167d157c0402cb421375a86597","Android.bp":"f1aedae67c920f8169aec3ec7149fa1d1e0cf28b8201e5003019452872e1bcbd","Cargo.toml":"30a453a136f9ce68538e64bd0510a41eb62ac97a1860ac4cc4acecd786fdf35a","LICENSE":"6668e6934a6fe45aff7bb31f37510c18c7c0b52d68044aa4ae6cf98afdc5b737","METADATA":"f0056f9a45ac050381279cb361dac9dc4847b8c354016f09c3e563d92b8f8526","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"455a16d950ecd6071efcc3f28f1554563eafe7d7efcdf73538423c1f53322e09","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","android/bindgen_cmd/Android.bp":"cef9e0b99c72e81f2946f701c44217b7dd03cff50bb55253e3b618351ce70571","android/bindgen_cmd/src/lib.rs":"d360c9dff04445c309289e0cd2ff9d874382daa4f8cc21d6b9819b9052c8fc66","build.rs":"df8e9a46ee9b3d9ba043a6ea2e831657648e1c90a116139d910d4906df1e1126","callbacks.rs":"3c85ade4815aaad2034d48459a5a444f618af296d3209c6d1ce9526eaa4c5258","cargo_embargo.json":"0f061ec1516f3c548406aa7f0ab33b08007b61c58a7490f080ac9c5176aeef38","clang.rs":"775ea917a9c877d99489f213d730f00e86c5fa551b695ef844294304cad2cff7","codegen/bitfield_unit.rs":"ed1416566e973d5a342b6ab14c0191fa04ba4af761b661288bb0eea206a41c3d","codegen/bitfield_unit_tests.rs":"4b04f2da4a80c85ab130098037ad84dace5b3f27cdbbb2a99c3d509c36c29770","codegen/dyngen.rs":"8b6a8fe71184cfc29e8087c133696eafb8e129ce16abc81ed2c8c14e68b718c5","codegen/error.rs":"15f06ad2c326006d0b7d6077bf47c2926fe47bfd71f49aff5fea52a68f77f322","codegen/helpers.rs":"a013d897dd9d9992ff33c8054ecb7eefdb077fa05bb0b26e371c52179b20954f","codegen/impl_debug.rs":"0171c70c1c312157af2e0c17343490b41f57bc2e614e23fa3eb29d45b44295d5","codegen/impl_partialeq.rs":"f77c8213040eee25c5339b3a7eec666ad49d5fd2ed2b9fa4817b3dd359c9c6d1","codegen/mod.rs":"78a27020d31586f9066bcaa8b3eb1ef6097bbd51b8ea3095f74f8e6d3eb6e34b","codegen/postprocessing/merge_extern_blocks.rs":"2cf64f959ed6643f4083163555e55437d8ab43565a9473953577509d82cb6d5c","codegen/postprocessing/mod.rs":"0db93eb4eaddc4ae925427800424964a803273aa70ed9c7dcab7b477ea03fadc","codegen/postprocessing/sort_semantically.rs":"5684c91a6191d945580a06e723d7dd1c98ceb74a64c643919dc7da33d905ab6f","codegen/serialize.rs":"42ff922af670413551513fd9490acc4233be285c1fb21af93957cfb0b6051b49","codegen/struct_layout.rs":"e38b39de5ff8fab96b920690537880efaf5fefd8f56fbaec0934c473175d1536","deps.rs":"66de4a375626cc18cc7926f51555a12edb3a06fe898593c078057cab3d630bbf","diagnostics.rs":"1eb03f08c24f4b76b0f7c04df8a6933c565a001f27f168d194fdcb7bcbd9e4de","extra_assertions.rs":"3b9c0fd823b66d2bcdc481305130425b2cfad701c8989b0b81b86b22dd9ea56e","features.rs":"bd49f9e8d953d73b8e6067fca2df11cbc8ac594a1303de49dd1f4ef9af904af4","ir/analysis/derive.rs":"4f80906340761577ab84519c873a9484cc5ebdd4ce6999c918eec006840bc412","ir/analysis/has_destructor.rs":"c46764878b56d77c121b6a9b8ad1797049874d7490e3e938be444f5da8d460e3","ir/analysis/has_float.rs":"259d18a477c52c18b4c87676e25516649950eb8b54b24d3157fc3fb1a3622eb1","ir/analysis/has_type_param_in_array.rs":"670c75e79eacc762eea7fc6433590b4ec7a0f24119e9d49d97b3d86ecb73aba3","ir/analysis/has_vtable.rs":"ed998700cc6b3a44d5ea5ab0549fa285e03eed212da83759dd2f6e4f1b55a484","ir/analysis/mod.rs":"6d03a46b06f361aca4ed7cd77a1760d0e49978e98c7aeb998bd8776e95e7eb65","ir/analysis/sizedness.rs":"3f109d2aa8d1ac29ca1c523fb2c4baab50bcf38df7125bcaf1962c6b6b9bdac8","ir/analysis/template_params.rs":"846abcdf683433f829793ab7501adf58f15d515cf57eb382d75d70acecf40709","ir/annotations.rs":"99f001c0985a6c1661ac4628c4f6ee96b3ce6f8e9af711a453b9e90b5bafd32f","ir/comment.rs":"ffdbd70a4a93546b2bac35fe309df7f5edabf156bc98fd2f83f18417a0872f1d","ir/comp.rs":"a02d82176ba3d4cf493218d5d0ce0a77c7ca2e56a819e317ffd9319f1f2971a5","ir/context.rs":"2a0ced09bf7139cacb4e7b31489ea9ec9371882b41b1e89ac82e0aafd9a2583c","ir/derive.rs":"1ca7f5391e21eb13270fc627fac551ee1575231994e9f234dc307035a564e8d2","ir/dot.rs":"f4e8e9fb884f9014bea78004dc4f2acd7eb2f79c1fce197edb10482a146e8533","ir/enum_ty.rs":"df90d1b00ff74a19be2a0238bafc427c1becfd3f914c50d222620b3d48965960","ir/function.rs":"9f9d8f605695171c438862b0ce848e11a0271125f72438eda10d6a3cc9a27e4e","ir/int.rs":"1908793d74260137df3c34d5295d30444ee79ef19945e483cadb1685facd9841","ir/item.rs":"1a5339af13be77a61bb69dfa87fb29473924ac21bd76e5f3a53ebef37643e316","ir/item_kind.rs":"242d7377d8e1d6f64736dbdabff7065479cb324523cd0e8ad1e4549546cee4a2","ir/layout.rs":"31e3c71c81d608b0012a4c3a348dfe8bd0e0552aa46de4bd4b6f313d016cd37d","ir/mod.rs":"a0e895a430bf0325ff269583e78a4abaea8b45eaf60b4a9e8ad062833dcb7d1d","ir/module.rs":"a1949354d0c72cc9daa39c0c823645d80a6c52d9ebbbc07654db31434a3e35ee","ir/objc.rs":"13391a5e2ce4aba04738db2356c1902e2c9b78a8a365b92db928c02b2ca86745","ir/template.rs":"7c94e900a411bdbfee1420812b821b855c8fc569aea7dc7200be10f0ceb3bf0f","ir/traversal.rs":"ddafd9b0d8b26efbc18b49f45de57c4f3eba84aa3f527a1e7b7602e21a3cf7d7","ir/ty.rs":"2a367b93bba1b8f6fb2d1e0b329722b841932fb0261bbaeebe565bde2315f5bc","ir/var.rs":"50f863078fc6945223b4a02991ab86519ead38716ab8c29c2161533e3d2d0d69","lib.rs":"47367edc7a6140faf3241df63844b7fa877f495a26e58863bce5295186307c7f","log_stubs.rs":"ae3fc6b3f524088f668e425de69e5a88f2815adb3882cd520a9c18fbe1de2c63","options/as_args.rs":"9940194ada3c0c4f6551eed5051e3b08bfccbb86789d93f16b7b611cda894e48","options/helpers.rs":"9350dc873937f6db479fd12cd90740eab9ee3a5a91ae18929e6aa710abf22948","options/mod.rs":"5dee009896b18106dfda4107e2dee31c3dd432b00b436158213793e8802bfd22","out/host-target.txt":"9a787308afa8a505340c3e44238d5d2e43468641be1c1b9717c124abb26d882f","parse.rs":"a59da81c285c69d6f53c05d93d52d865aa1b2d98fcf8616676ab3e50fd22e945","regex_set.rs":"6858d2ce280814c63405f45ffca95562c2b7245e749d6b961f3c3549db627251","time.rs":"41f4e0604e016d0677bead2ef11094ff6e09b6fb172d0023bb62fa8e3e313eaf"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f17cb164631ebac6082e1c923f4d2d4e1ef4c3167d157c0402cb421375a86597","Android.bp":"f1aedae67c920f8169aec3ec7149fa1d1e0cf28b8201e5003019452872e1bcbd","Cargo.toml":"30a453a136f9ce68538e64bd0510a41eb62ac97a1860ac4cc4acecd786fdf35a","LICENSE":"6668e6934a6fe45aff7bb31f37510c18c7c0b52d68044aa4ae6cf98afdc5b737","METADATA":"f0056f9a45ac050381279cb361dac9dc4847b8c354016f09c3e563d92b8f8526","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"455a16d950ecd6071efcc3f28f1554563eafe7d7efcdf73538423c1f53322e09","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","android/bindgen_cmd/Android.bp":"cef9e0b99c72e81f2946f701c44217b7dd03cff50bb55253e3b618351ce70571","android/bindgen_cmd/src/lib.rs":"d360c9dff04445c309289e0cd2ff9d874382daa4f8cc21d6b9819b9052c8fc66","build.rs":"df8e9a46ee9b3d9ba043a6ea2e831657648e1c90a116139d910d4906df1e1126","callbacks.rs":"3c85ade4815aaad2034d48459a5a444f618af296d3209c6d1ce9526eaa4c5258","cargo_embargo.json":"6cdd24f956f6f0aab43a07ff7812236f30a617111ac36cee41abf5ca3490a53e","clang.rs":"775ea917a9c877d99489f213d730f00e86c5fa551b695ef844294304cad2cff7","codegen/bitfield_unit.rs":"ed1416566e973d5a342b6ab14c0191fa04ba4af761b661288bb0eea206a41c3d","codegen/bitfield_unit_tests.rs":"4b04f2da4a80c85ab130098037ad84dace5b3f27cdbbb2a99c3d509c36c29770","codegen/dyngen.rs":"8b6a8fe71184cfc29e8087c133696eafb8e129ce16abc81ed2c8c14e68b718c5","codegen/error.rs":"15f06ad2c326006d0b7d6077bf47c2926fe47bfd71f49aff5fea52a68f77f322","codegen/helpers.rs":"a013d897dd9d9992ff33c8054ecb7eefdb077fa05bb0b26e371c52179b20954f","codegen/impl_debug.rs":"0171c70c1c312157af2e0c17343490b41f57bc2e614e23fa3eb29d45b44295d5","codegen/impl_partialeq.rs":"f77c8213040eee25c5339b3a7eec666ad49d5fd2ed2b9fa4817b3dd359c9c6d1","codegen/mod.rs":"78a27020d31586f9066bcaa8b3eb1ef6097bbd51b8ea3095f74f8e6d3eb6e34b","codegen/postprocessing/merge_extern_blocks.rs":"2cf64f959ed6643f4083163555e55437d8ab43565a9473953577509d82cb6d5c","codegen/postprocessing/mod.rs":"0db93eb4eaddc4ae925427800424964a803273aa70ed9c7dcab7b477ea03fadc","codegen/postprocessing/sort_semantically.rs":"5684c91a6191d945580a06e723d7dd1c98ceb74a64c643919dc7da33d905ab6f","codegen/serialize.rs":"42ff922af670413551513fd9490acc4233be285c1fb21af93957cfb0b6051b49","codegen/struct_layout.rs":"e38b39de5ff8fab96b920690537880efaf5fefd8f56fbaec0934c473175d1536","deps.rs":"66de4a375626cc18cc7926f51555a12edb3a06fe898593c078057cab3d630bbf","diagnostics.rs":"1eb03f08c24f4b76b0f7c04df8a6933c565a001f27f168d194fdcb7bcbd9e4de","extra_assertions.rs":"3b9c0fd823b66d2bcdc481305130425b2cfad701c8989b0b81b86b22dd9ea56e","features.rs":"bd49f9e8d953d73b8e6067fca2df11cbc8ac594a1303de49dd1f4ef9af904af4","ir/analysis/derive.rs":"4f80906340761577ab84519c873a9484cc5ebdd4ce6999c918eec006840bc412","ir/analysis/has_destructor.rs":"c46764878b56d77c121b6a9b8ad1797049874d7490e3e938be444f5da8d460e3","ir/analysis/has_float.rs":"259d18a477c52c18b4c87676e25516649950eb8b54b24d3157fc3fb1a3622eb1","ir/analysis/has_type_param_in_array.rs":"670c75e79eacc762eea7fc6433590b4ec7a0f24119e9d49d97b3d86ecb73aba3","ir/analysis/has_vtable.rs":"ed998700cc6b3a44d5ea5ab0549fa285e03eed212da83759dd2f6e4f1b55a484","ir/analysis/mod.rs":"6d03a46b06f361aca4ed7cd77a1760d0e49978e98c7aeb998bd8776e95e7eb65","ir/analysis/sizedness.rs":"3f109d2aa8d1ac29ca1c523fb2c4baab50bcf38df7125bcaf1962c6b6b9bdac8","ir/analysis/template_params.rs":"846abcdf683433f829793ab7501adf58f15d515cf57eb382d75d70acecf40709","ir/annotations.rs":"99f001c0985a6c1661ac4628c4f6ee96b3ce6f8e9af711a453b9e90b5bafd32f","ir/comment.rs":"ffdbd70a4a93546b2bac35fe309df7f5edabf156bc98fd2f83f18417a0872f1d","ir/comp.rs":"a02d82176ba3d4cf493218d5d0ce0a77c7ca2e56a819e317ffd9319f1f2971a5","ir/context.rs":"2a0ced09bf7139cacb4e7b31489ea9ec9371882b41b1e89ac82e0aafd9a2583c","ir/derive.rs":"1ca7f5391e21eb13270fc627fac551ee1575231994e9f234dc307035a564e8d2","ir/dot.rs":"f4e8e9fb884f9014bea78004dc4f2acd7eb2f79c1fce197edb10482a146e8533","ir/enum_ty.rs":"df90d1b00ff74a19be2a0238bafc427c1becfd3f914c50d222620b3d48965960","ir/function.rs":"9f9d8f605695171c438862b0ce848e11a0271125f72438eda10d6a3cc9a27e4e","ir/int.rs":"1908793d74260137df3c34d5295d30444ee79ef19945e483cadb1685facd9841","ir/item.rs":"1a5339af13be77a61bb69dfa87fb29473924ac21bd76e5f3a53ebef37643e316","ir/item_kind.rs":"242d7377d8e1d6f64736dbdabff7065479cb324523cd0e8ad1e4549546cee4a2","ir/layout.rs":"31e3c71c81d608b0012a4c3a348dfe8bd0e0552aa46de4bd4b6f313d016cd37d","ir/mod.rs":"a0e895a430bf0325ff269583e78a4abaea8b45eaf60b4a9e8ad062833dcb7d1d","ir/module.rs":"a1949354d0c72cc9daa39c0c823645d80a6c52d9ebbbc07654db31434a3e35ee","ir/objc.rs":"13391a5e2ce4aba04738db2356c1902e2c9b78a8a365b92db928c02b2ca86745","ir/template.rs":"7c94e900a411bdbfee1420812b821b855c8fc569aea7dc7200be10f0ceb3bf0f","ir/traversal.rs":"ddafd9b0d8b26efbc18b49f45de57c4f3eba84aa3f527a1e7b7602e21a3cf7d7","ir/ty.rs":"2a367b93bba1b8f6fb2d1e0b329722b841932fb0261bbaeebe565bde2315f5bc","ir/var.rs":"50f863078fc6945223b4a02991ab86519ead38716ab8c29c2161533e3d2d0d69","lib.rs":"47367edc7a6140faf3241df63844b7fa877f495a26e58863bce5295186307c7f","log_stubs.rs":"ae3fc6b3f524088f668e425de69e5a88f2815adb3882cd520a9c18fbe1de2c63","options/as_args.rs":"9940194ada3c0c4f6551eed5051e3b08bfccbb86789d93f16b7b611cda894e48","options/helpers.rs":"9350dc873937f6db479fd12cd90740eab9ee3a5a91ae18929e6aa710abf22948","options/mod.rs":"5dee009896b18106dfda4107e2dee31c3dd432b00b436158213793e8802bfd22","out/host-target.txt":"9a787308afa8a505340c3e44238d5d2e43468641be1c1b9717c124abb26d882f","parse.rs":"a59da81c285c69d6f53c05d93d52d865aa1b2d98fcf8616676ab3e50fd22e945","regex_set.rs":"6858d2ce280814c63405f45ffca95562c2b7245e749d6b961f3c3549db627251","time.rs":"41f4e0604e016d0677bead2ef11094ff6e09b6fb172d0023bb62fa8e3e313eaf"}}
\ No newline at end of file
diff --git a/crates/bindgen/cargo_embargo.json b/crates/bindgen/cargo_embargo.json
index 3ffb84d..902194b 100644
--- a/crates/bindgen/cargo_embargo.json
+++ b/crates/bindgen/cargo_embargo.json
@@ -11,5 +11,6 @@
"device_supported": false,
"host_first_multilib": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bit_field/.android-checksum.json b/crates/bit_field/.android-checksum.json
index 077b460..e24e205 100644
--- a/crates/bit_field/.android-checksum.json
+++ b/crates/bit_field/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b9bd09c5d9b8440d72a541d79feab41ce3e19f4a2059d3cedc0d79fae5d3db09","Android.bp":"0676639e4d070725a1b39a81e515eb14f7232b81028ddb0c53edf12b7748e2be","Cargo.toml":"6b7a73463983c39781d99ac93960981b516da2e6217259adf62d4a51858349ce","Changelog.md":"60fdf275592249167be12ef868603b4ed9bf7eb34324e5f74d2231282d2d910b","LICENSE":"90364369fcd32608226545dbeeff4401827c7305eabe4a022046cc03d078c9e9","LICENSE-APACHE":"90364369fcd32608226545dbeeff4401827c7305eabe4a022046cc03d078c9e9","METADATA":"975838a4758d5b0235526e9637daf53db61393cd1f471a5cc0ce497ceaf4cb43","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5aa0fd32e05f9082fed6afd9b863d0d8027f40f9eacb3ad35e27d5da1d01e8b1","benches/bench.rs":"d0517748a1d4b24bb5e9a188660e5c3bb14637b9c983e009a63f589fa0bb5b40","cargo_embargo.json":"d73c7e61cf4866ee9ea44e38e613f627b7385ae22d559ebc1a167dbb56320ce0","rules.mk":"dc25c30668980cd583b6ac7221b2b5ceee99ac7a9bfb53bdf8327ab01591b09f","src/lib.rs":"37cc314bb5e3f75d1a8185236dab35b15806d823aea5ac5448d524cc8fec5970","src/tests.rs":"9325a02be44164d6c91059a50fe724d91711d619d0169712a3ef829ce5883cba"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b9bd09c5d9b8440d72a541d79feab41ce3e19f4a2059d3cedc0d79fae5d3db09","Android.bp":"546bb5c7dbf8b3a7f5c455a25d2103e92e8fc242f314664f5c72140d7994d884","Cargo.toml":"6b7a73463983c39781d99ac93960981b516da2e6217259adf62d4a51858349ce","Changelog.md":"60fdf275592249167be12ef868603b4ed9bf7eb34324e5f74d2231282d2d910b","LICENSE":"90364369fcd32608226545dbeeff4401827c7305eabe4a022046cc03d078c9e9","LICENSE-APACHE":"90364369fcd32608226545dbeeff4401827c7305eabe4a022046cc03d078c9e9","METADATA":"975838a4758d5b0235526e9637daf53db61393cd1f471a5cc0ce497ceaf4cb43","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5aa0fd32e05f9082fed6afd9b863d0d8027f40f9eacb3ad35e27d5da1d01e8b1","benches/bench.rs":"d0517748a1d4b24bb5e9a188660e5c3bb14637b9c983e009a63f589fa0bb5b40","cargo_embargo.json":"967a5565240a73340be05c09931a97b66029637701048037068ee589149ff19a","rules.mk":"dc25c30668980cd583b6ac7221b2b5ceee99ac7a9bfb53bdf8327ab01591b09f","src/lib.rs":"37cc314bb5e3f75d1a8185236dab35b15806d823aea5ac5448d524cc8fec5970","src/tests.rs":"9325a02be44164d6c91059a50fe724d91711d619d0169712a3ef829ce5883cba"}}
\ No newline at end of file
diff --git a/crates/bit_field/Android.bp b/crates/bit_field/Android.bp
index a260e10..f2bda8a 100644
--- a/crates/bit_field/Android.bp
+++ b/crates/bit_field/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/bit_field/cargo_embargo.json b/crates/bit_field/cargo_embargo.json
index e4548ae..1a5061c 100644
--- a/crates/bit_field/cargo_embargo.json
+++ b/crates/bit_field/cargo_embargo.json
@@ -10,5 +10,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bitreader/.android-checksum.json b/crates/bitreader/.android-checksum.json
index f98db65..654368a 100644
--- a/crates/bitreader/.android-checksum.json
+++ b/crates/bitreader/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9d95f2aed716565044671ef2db63fa12c51d32f4d0156ef58faaa3f7770b7194","Android.bp":"34976e79cf0d246007cdbf8989410e3c8e670ca77e1eeae7592bbc60e22c67f2","Cargo.toml":"59b7e6dd12af6553ba2c00aabf8445e85e2c5f8c2d0c59b8dfb5e5369c9bccbc","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"01a3ad363201e8d50ee5922931c233fb848e6c1ca8096f94a7250e48e8b947dd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4132390002eceea3f7ae494d5f6b5ebb735e8e50ac6b2a84c8c8dac736f09101","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"1b55a3c80386a7615377dd4e8946c09a8c4d83692d4b43f180eb918d1ac81480","src/tests.rs":"04a24ba11b6bd459ffa3952b92d39a82e7bae9696eb5aa882f8b0884faa0cdf0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9d95f2aed716565044671ef2db63fa12c51d32f4d0156ef58faaa3f7770b7194","Android.bp":"99c69564d642781c0f92b850305430ecb98ef3ebc51aa58b1e6ba6fa80581077","Cargo.toml":"59b7e6dd12af6553ba2c00aabf8445e85e2c5f8c2d0c59b8dfb5e5369c9bccbc","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"01a3ad363201e8d50ee5922931c233fb848e6c1ca8096f94a7250e48e8b947dd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4132390002eceea3f7ae494d5f6b5ebb735e8e50ac6b2a84c8c8dac736f09101","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"1b55a3c80386a7615377dd4e8946c09a8c4d83692d4b43f180eb918d1ac81480","src/tests.rs":"04a24ba11b6bd459ffa3952b92d39a82e7bae9696eb5aa882f8b0884faa0cdf0"}}
\ No newline at end of file
diff --git a/crates/bitreader/Android.bp b/crates/bitreader/Android.bp
index 32b2614..6ebe106 100644
--- a/crates/bitreader/Android.bp
+++ b/crates/bitreader/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/bitreader/cargo_embargo.json b/crates/bitreader/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/bitreader/cargo_embargo.json
+++ b/crates/bitreader/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bstr/.android-checksum.json b/crates/bstr/.android-checksum.json
index 27c5f95..9873f8c 100644
--- a/crates/bstr/.android-checksum.json
+++ b/crates/bstr/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d72c4360ca47214be4e6679fe3ce54fb47c85bd4494290461476721a15ae583c","Android.bp":"13d82eab3863549fd9e5ffcc045f5cc9d8db4481cb6e56612c6700720039c0e2","COPYING":"126d9f307af9e1efce29c620e7fb08e79dc3b859d3042ae7217f0ab85e7ef63d","Cargo.lock":"9f86c79d3b91e9c40fd780b332b3c055617e3036179b661c0ad3f971b3c79346","Cargo.toml":"d9863671f5081c6588c18bf5e4f07b101a30deb9917fc4d25c868b99f47bd23b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f798519eb89a0ea570390127f7d858f65fa05821438078dd22a41fa2912efd28","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ba127a245624adebdd0aec24e15c632aa2c67f326a020fa431871f5c9adf36f6","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/graphemes-std.rs":"6082aa27ed51df8c80f7b5100c14784a6bf2128ee585bdfc398e7dc72fc110c2","examples/graphemes.rs":"40a50ed69494bd0eb3b55758d557a5f43a6b7a523d16b16d694233cbe00ab765","examples/lines-std.rs":"1571a922a55d82863ad5ab241e685b10974d4cd78e79d403da890a047cfd9a52","examples/lines.rs":"df2a8a351e2303d3d743a32a24fb67ac708fae1cd04dc828f4a755d0a0fe65b8","examples/uppercase-std.rs":"d8075fbd5ca3c50a3dc27947c3f8924aebaf47140eb0864872d058fea19d82e0","examples/uppercase.rs":"bf2f737466992ef757f63b98a15fff1a0e3467efab73d64a35b49627d13b24d9","examples/words-std.rs":"e623bc45a55f0a5a3470e2d8f04853bcd76c3282683112200dc342fffec53d47","examples/words.rs":"9dec3a8df6f637bb9a1c8fed2d95293d819978aa1b546fa7c7e0f8981da248db","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","scripts/generate-unicode-data":"73d8b54cede185d707a0b7df244264b236ded8999d033fed004b8e3cb6fbf597","scripts/regex/grapheme.sh":"278e4c6c6a6c4f3324ad7d53b5fca8448a5bd79ba22e0e90ca81d743ec3bc49e","scripts/regex/sentence.sh":"6d6568deeb6c352484b684226c6e5b7a0d91aa9c338934f0cc3b383036957484","scripts/regex/word.sh":"d03b86736c7c88bd4cfd01be201801a88f88dbfb1fbff62e2813f8d7fdec8c59","src/ascii.rs":"d9e304ea35c0447f3709773f6c0bc9299d895ff4b68e10500c880250de4b387c","src/bstr.rs":"96e1e2dd5de1e2a9572a58bfb8e19ae95353309287bb6ba885be2be352c9badc","src/bstring.rs":"0220d09c76dc8b8e9a4ebb966a2e9d17d2d6d576d99aa94987e1c35737ccf526","src/byteset/mod.rs":"ecdf4375eecb6dc29dadb043fe0768bc6dfb3ac8203c2f81bd824132207e053d","src/byteset/scalar.rs":"9efdfbf3d11f2ab182c0a26b014b2e9077b62d63a2816f5ac37e14ab9ca49a01","src/escape_bytes.rs":"e9ec43d7140d4a08fac12b077730f7b8534f21b5a66e8d52a20dba80bf935113","src/ext_slice.rs":"6b2cc2f4be9633d488c8deaaacd7876c49ab47b10e662fb9652696ae87d38add","src/ext_vec.rs":"515e635127dbc4d8c3e008ae8f03ba2e2c60cddfc7586ee8ebf39e214dc558d9","src/impls.rs":"f144bb0b8637b783e2fb3bb8e1a4c0762b05a719d343a8ac9f32c89b900be2e6","src/io.rs":"4550fac4a912a303fcab14bee07cc327b0106b92f40181d922f33ec7dbb55f50","src/lib.rs":"e96862e4844b79a2e9646bb9f1e8eae3f145939d25da70480272991eb1e0b18b","src/tests.rs":"4f6364e2f86500a118608834b7b569c63657c18d08724cab1a526f3d1f12174a","src/unicode/data/GraphemeBreakTest.txt":"fd8463bb0bb528fdefb3bc4c60d894020e9eead63eef6ace0e629993d3c3a9b2","src/unicode/data/LICENSE-UNICODE":"671b8ab036dfc8558d17e837c79964e2054291b28c967bf7a44dc34413603fba","src/unicode/data/SentenceBreakTest.txt":"35c1b6ab07c487ec44b21314bb60f49c50e1844c7e06c9d338781263bd9e3264","src/unicode/data/WordBreakTest.txt":"bdb0c9f6c8d7d19597066262c424e1c84d1e97219f1cd291a07301e5954d545f","src/unicode/fsm/grapheme_break_fwd.bigendian.dfa":"f3c9e65a66c0b66016c81ce090af267a2954cacacc5f931b185be34fb9c1aa23","src/unicode/fsm/grapheme_break_fwd.littleendian.dfa":"8e6c3e4d24b9f5a9179b3c051473fe2935dda463c56a33652cddba32ad89f939","src/unicode/fsm/grapheme_break_fwd.rs":"13360c25390bdcaffca0e26f65695a6d5085f07a552b710f434f97fbff73404e","src/unicode/fsm/grapheme_break_rev.bigendian.dfa":"efdb5a0462cf23193b75bfbb484078aa871f010b42a6289b8bc36dc2da59d188","src/unicode/fsm/grapheme_break_rev.littleendian.dfa":"76b6f98f82f32a6a93a9ef3e5ceb65eba0cad16c9426d21f152db1326214a1bf","src/unicode/fsm/grapheme_break_rev.rs":"a5a85127b2d98d8a9828443dd4cf80a5cdb7c255f825f7e77a8ca09cf9f46e69","src/unicode/fsm/mod.rs":"2e61bc8d5c2eb1adbe228dd082ccd4bc21b2031212d362bcb0500b27218bc4ba","src/unicode/fsm/regional_indicator_rev.bigendian.dfa":"ad118ba6c7ca0b4e328b344e582933d460c2152c746d211d30424a4ad3b3631b","src/unicode/fsm/regional_indicator_rev.littleendian.dfa":"81024d1c8ffeeb01a29f1fe9fb3eab01509e24f1eae62b64f4195955b9a147a8","src/unicode/fsm/regional_indicator_rev.rs":"9eafcf01abed8a48c5214818d842eea8e04020ca9b9b117728baf8c780d29618","src/unicode/fsm/sentence_break_fwd.bigendian.dfa":"b852531df62685e167c5299d37b682df66f25836548da559f10a3d63ffcab6f6","src/unicode/fsm/sentence_break_fwd.littleendian.dfa":"e21cb0c1297db2fd7c4264a5506eb3900b438f1a6cca8496f626eb3bf3193cdc","src/unicode/fsm/sentence_break_fwd.rs":"5795b30619a328391156fb2064d390c27ec8d7f4cffbb81baee9efb4511a96a3","src/unicode/fsm/simple_word_fwd.bigendian.dfa":"c088ecb34b21ead70e103bc8ce670e83a85188f50c895bee5dcdeba68809d05e","src/unicode/fsm/simple_word_fwd.littleendian.dfa":"3d4b7795db0c386eb82a6ccc1d4877a7fd2db8f183b1b32270314a9ad2db7b92","src/unicode/fsm/simple_word_fwd.rs":"ec5f742f6a9a7aa34f64a4491920b559941bce2acbde8413356f59d8bb39b43a","src/unicode/fsm/whitespace_anchored_fwd.bigendian.dfa":"3bc887113ebf269597778dc60727a81e8c9ffb569229d1e590e1fa0aa975b897","src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa":"e83da84c36dc72d4d3bb60efa82f886e148615a614688b359c63fa5b51b0e53d","src/unicode/fsm/whitespace_anchored_fwd.rs":"f4d31c19ef6d1c08217150a348d64ff5c0a17f8361795ad3858e700776fedabe","src/unicode/fsm/whitespace_anchored_rev.bigendian.dfa":"0b308669bf86cefd91257dfc74b989fca0c56347188dce2151883f644aa5f26e","src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa":"8c3d5ea91654441bc262176283cb60a59ac9114303bab8f29ed65972bd8912e0","src/unicode/fsm/whitespace_anchored_rev.rs":"d06151f51a96146e1b2cb3545c4e56fcbf45304da38b11f4779ee4dab7bb35ee","src/unicode/fsm/word_break_fwd.bigendian.dfa":"2bb66584a91468778d6e777b330f443fc127b5e3d735e43eb32039d1662cba1d","src/unicode/fsm/word_break_fwd.littleendian.dfa":"850989f1889580f9981ae2618b8278c495a4886a46b4491bce132ac8c173522f","src/unicode/fsm/word_break_fwd.rs":"34be1f7f17c25eb3351bf068a42d639659d8936e680482784089bb098637ec71","src/unicode/grapheme.rs":"2feb3d196c6b35857ee0afdac571f5b7a5a4643d0c9fcdd5ea0857f64db12b29","src/unicode/mod.rs":"8e76ab2da34e6083d3dd053df0c6b02d9a791fff9a819639dfe7db3151e84c81","src/unicode/sentence.rs":"8a7d09358ba13ed81c07e540199c6de27eb66c4a327e37eb6b29588168306c24","src/unicode/whitespace.rs":"1b26838234480f48f8431df1ec2d4444187c09f68aef79e1ea2dfae52d9374b1","src/unicode/word.rs":"9c0cc4e9702e9712937c2f81b862e489481caf288249f91f17c144ffc55fbf18","src/utf8.rs":"527a90b5189c126dd66308c615fbf78764f6d570322733f3d5082e3d17b2b216"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d72c4360ca47214be4e6679fe3ce54fb47c85bd4494290461476721a15ae583c","Android.bp":"171ed734715996bbe8cde22dbf0674d4e1f17efc99d96b9e8ffbd472be76cb4c","COPYING":"126d9f307af9e1efce29c620e7fb08e79dc3b859d3042ae7217f0ab85e7ef63d","Cargo.lock":"9f86c79d3b91e9c40fd780b332b3c055617e3036179b661c0ad3f971b3c79346","Cargo.toml":"d9863671f5081c6588c18bf5e4f07b101a30deb9917fc4d25c868b99f47bd23b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f798519eb89a0ea570390127f7d858f65fa05821438078dd22a41fa2912efd28","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ba127a245624adebdd0aec24e15c632aa2c67f326a020fa431871f5c9adf36f6","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/graphemes-std.rs":"6082aa27ed51df8c80f7b5100c14784a6bf2128ee585bdfc398e7dc72fc110c2","examples/graphemes.rs":"40a50ed69494bd0eb3b55758d557a5f43a6b7a523d16b16d694233cbe00ab765","examples/lines-std.rs":"1571a922a55d82863ad5ab241e685b10974d4cd78e79d403da890a047cfd9a52","examples/lines.rs":"df2a8a351e2303d3d743a32a24fb67ac708fae1cd04dc828f4a755d0a0fe65b8","examples/uppercase-std.rs":"d8075fbd5ca3c50a3dc27947c3f8924aebaf47140eb0864872d058fea19d82e0","examples/uppercase.rs":"bf2f737466992ef757f63b98a15fff1a0e3467efab73d64a35b49627d13b24d9","examples/words-std.rs":"e623bc45a55f0a5a3470e2d8f04853bcd76c3282683112200dc342fffec53d47","examples/words.rs":"9dec3a8df6f637bb9a1c8fed2d95293d819978aa1b546fa7c7e0f8981da248db","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","scripts/generate-unicode-data":"73d8b54cede185d707a0b7df244264b236ded8999d033fed004b8e3cb6fbf597","scripts/regex/grapheme.sh":"278e4c6c6a6c4f3324ad7d53b5fca8448a5bd79ba22e0e90ca81d743ec3bc49e","scripts/regex/sentence.sh":"6d6568deeb6c352484b684226c6e5b7a0d91aa9c338934f0cc3b383036957484","scripts/regex/word.sh":"d03b86736c7c88bd4cfd01be201801a88f88dbfb1fbff62e2813f8d7fdec8c59","src/ascii.rs":"d9e304ea35c0447f3709773f6c0bc9299d895ff4b68e10500c880250de4b387c","src/bstr.rs":"96e1e2dd5de1e2a9572a58bfb8e19ae95353309287bb6ba885be2be352c9badc","src/bstring.rs":"0220d09c76dc8b8e9a4ebb966a2e9d17d2d6d576d99aa94987e1c35737ccf526","src/byteset/mod.rs":"ecdf4375eecb6dc29dadb043fe0768bc6dfb3ac8203c2f81bd824132207e053d","src/byteset/scalar.rs":"9efdfbf3d11f2ab182c0a26b014b2e9077b62d63a2816f5ac37e14ab9ca49a01","src/escape_bytes.rs":"e9ec43d7140d4a08fac12b077730f7b8534f21b5a66e8d52a20dba80bf935113","src/ext_slice.rs":"6b2cc2f4be9633d488c8deaaacd7876c49ab47b10e662fb9652696ae87d38add","src/ext_vec.rs":"515e635127dbc4d8c3e008ae8f03ba2e2c60cddfc7586ee8ebf39e214dc558d9","src/impls.rs":"f144bb0b8637b783e2fb3bb8e1a4c0762b05a719d343a8ac9f32c89b900be2e6","src/io.rs":"4550fac4a912a303fcab14bee07cc327b0106b92f40181d922f33ec7dbb55f50","src/lib.rs":"e96862e4844b79a2e9646bb9f1e8eae3f145939d25da70480272991eb1e0b18b","src/tests.rs":"4f6364e2f86500a118608834b7b569c63657c18d08724cab1a526f3d1f12174a","src/unicode/data/GraphemeBreakTest.txt":"fd8463bb0bb528fdefb3bc4c60d894020e9eead63eef6ace0e629993d3c3a9b2","src/unicode/data/LICENSE-UNICODE":"671b8ab036dfc8558d17e837c79964e2054291b28c967bf7a44dc34413603fba","src/unicode/data/SentenceBreakTest.txt":"35c1b6ab07c487ec44b21314bb60f49c50e1844c7e06c9d338781263bd9e3264","src/unicode/data/WordBreakTest.txt":"bdb0c9f6c8d7d19597066262c424e1c84d1e97219f1cd291a07301e5954d545f","src/unicode/fsm/grapheme_break_fwd.bigendian.dfa":"f3c9e65a66c0b66016c81ce090af267a2954cacacc5f931b185be34fb9c1aa23","src/unicode/fsm/grapheme_break_fwd.littleendian.dfa":"8e6c3e4d24b9f5a9179b3c051473fe2935dda463c56a33652cddba32ad89f939","src/unicode/fsm/grapheme_break_fwd.rs":"13360c25390bdcaffca0e26f65695a6d5085f07a552b710f434f97fbff73404e","src/unicode/fsm/grapheme_break_rev.bigendian.dfa":"efdb5a0462cf23193b75bfbb484078aa871f010b42a6289b8bc36dc2da59d188","src/unicode/fsm/grapheme_break_rev.littleendian.dfa":"76b6f98f82f32a6a93a9ef3e5ceb65eba0cad16c9426d21f152db1326214a1bf","src/unicode/fsm/grapheme_break_rev.rs":"a5a85127b2d98d8a9828443dd4cf80a5cdb7c255f825f7e77a8ca09cf9f46e69","src/unicode/fsm/mod.rs":"2e61bc8d5c2eb1adbe228dd082ccd4bc21b2031212d362bcb0500b27218bc4ba","src/unicode/fsm/regional_indicator_rev.bigendian.dfa":"ad118ba6c7ca0b4e328b344e582933d460c2152c746d211d30424a4ad3b3631b","src/unicode/fsm/regional_indicator_rev.littleendian.dfa":"81024d1c8ffeeb01a29f1fe9fb3eab01509e24f1eae62b64f4195955b9a147a8","src/unicode/fsm/regional_indicator_rev.rs":"9eafcf01abed8a48c5214818d842eea8e04020ca9b9b117728baf8c780d29618","src/unicode/fsm/sentence_break_fwd.bigendian.dfa":"b852531df62685e167c5299d37b682df66f25836548da559f10a3d63ffcab6f6","src/unicode/fsm/sentence_break_fwd.littleendian.dfa":"e21cb0c1297db2fd7c4264a5506eb3900b438f1a6cca8496f626eb3bf3193cdc","src/unicode/fsm/sentence_break_fwd.rs":"5795b30619a328391156fb2064d390c27ec8d7f4cffbb81baee9efb4511a96a3","src/unicode/fsm/simple_word_fwd.bigendian.dfa":"c088ecb34b21ead70e103bc8ce670e83a85188f50c895bee5dcdeba68809d05e","src/unicode/fsm/simple_word_fwd.littleendian.dfa":"3d4b7795db0c386eb82a6ccc1d4877a7fd2db8f183b1b32270314a9ad2db7b92","src/unicode/fsm/simple_word_fwd.rs":"ec5f742f6a9a7aa34f64a4491920b559941bce2acbde8413356f59d8bb39b43a","src/unicode/fsm/whitespace_anchored_fwd.bigendian.dfa":"3bc887113ebf269597778dc60727a81e8c9ffb569229d1e590e1fa0aa975b897","src/unicode/fsm/whitespace_anchored_fwd.littleendian.dfa":"e83da84c36dc72d4d3bb60efa82f886e148615a614688b359c63fa5b51b0e53d","src/unicode/fsm/whitespace_anchored_fwd.rs":"f4d31c19ef6d1c08217150a348d64ff5c0a17f8361795ad3858e700776fedabe","src/unicode/fsm/whitespace_anchored_rev.bigendian.dfa":"0b308669bf86cefd91257dfc74b989fca0c56347188dce2151883f644aa5f26e","src/unicode/fsm/whitespace_anchored_rev.littleendian.dfa":"8c3d5ea91654441bc262176283cb60a59ac9114303bab8f29ed65972bd8912e0","src/unicode/fsm/whitespace_anchored_rev.rs":"d06151f51a96146e1b2cb3545c4e56fcbf45304da38b11f4779ee4dab7bb35ee","src/unicode/fsm/word_break_fwd.bigendian.dfa":"2bb66584a91468778d6e777b330f443fc127b5e3d735e43eb32039d1662cba1d","src/unicode/fsm/word_break_fwd.littleendian.dfa":"850989f1889580f9981ae2618b8278c495a4886a46b4491bce132ac8c173522f","src/unicode/fsm/word_break_fwd.rs":"34be1f7f17c25eb3351bf068a42d639659d8936e680482784089bb098637ec71","src/unicode/grapheme.rs":"2feb3d196c6b35857ee0afdac571f5b7a5a4643d0c9fcdd5ea0857f64db12b29","src/unicode/mod.rs":"8e76ab2da34e6083d3dd053df0c6b02d9a791fff9a819639dfe7db3151e84c81","src/unicode/sentence.rs":"8a7d09358ba13ed81c07e540199c6de27eb66c4a327e37eb6b29588168306c24","src/unicode/whitespace.rs":"1b26838234480f48f8431df1ec2d4444187c09f68aef79e1ea2dfae52d9374b1","src/unicode/word.rs":"9c0cc4e9702e9712937c2f81b862e489481caf288249f91f17c144ffc55fbf18","src/utf8.rs":"527a90b5189c126dd66308c615fbf78764f6d570322733f3d5082e3d17b2b216"}}
\ No newline at end of file
diff --git a/crates/bstr/Android.bp b/crates/bstr/Android.bp
index 29a7d03..892c164 100644
--- a/crates/bstr/Android.bp
+++ b/crates/bstr/Android.bp
@@ -38,4 +38,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/bstr/cargo_embargo.json b/crates/bstr/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/bstr/cargo_embargo.json
+++ b/crates/bstr/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/buddy_system_allocator/.android-checksum.json b/crates/buddy_system_allocator/.android-checksum.json
index 85c7070..952be32 100644
--- a/crates/buddy_system_allocator/.android-checksum.json
+++ b/crates/buddy_system_allocator/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6601fbcddb420001659ae06f17cdfb7d95f96edd838c55254f2c52656a76067f","Android.bp":"30e29582e85743d56cc18b1d3aa8bb1f5219a2cb6772ab74f3ed78c3989126fc","Cargo.toml":"4061e1b1bc06e92cb54ddd8168409d0cf1b71c5a4c2364446d1640015230d938","LICENSE":"a94ff77b0738f0ab4989d73c90f62a96f95627e21bba44060d80678d6c76cf8a","METADATA":"8340eee13f1f1374dbb4ed60d2cbd22c1b1e5d10284f8cd877e4f95c3f88c3ba","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b1d91673911bc08a28afa320acb7859d74fadf600abad1df38228ba45186598c","benches/memory_allocator_benchmark.rs":"d8680cb35dcc2f5ed2f1ef22bb36c89fd4d4e2da3fcf362414319d2bdd088b1c","cargo_embargo.json":"3b665ba09fa0a2c58a5102833e16a4ed4d0cb3849567ccff472a5c7fcddb57ec","rules.mk":"058e963b9a5fa8016bb3c724a76871d5f72b3217185e84b5548b029114f6a138","src/frame.rs":"ed200c3cff76f97714c032e841b131fee83f436255f2d887f6c154b38db7d90c","src/lib.rs":"07d4869354efefbc6346829179c54612d297c927c7190063c8db5fe31d0eadbb","src/linked_list.rs":"d79f2f9eb1091f16d21d3eae8033c2a32d035e47d846be713738ffe9345a61d5","src/test.rs":"ca601b44b36334dc2b5b71f944f7b4823a71ffa34a4bf1f74c41cf5cc8dd8ec3"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6601fbcddb420001659ae06f17cdfb7d95f96edd838c55254f2c52656a76067f","Android.bp":"e51a34638db3511264650edb0dc280a3924a51e77e105a1387664b5e0c66265d","Cargo.toml":"4061e1b1bc06e92cb54ddd8168409d0cf1b71c5a4c2364446d1640015230d938","LICENSE":"a94ff77b0738f0ab4989d73c90f62a96f95627e21bba44060d80678d6c76cf8a","METADATA":"8340eee13f1f1374dbb4ed60d2cbd22c1b1e5d10284f8cd877e4f95c3f88c3ba","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b1d91673911bc08a28afa320acb7859d74fadf600abad1df38228ba45186598c","benches/memory_allocator_benchmark.rs":"d8680cb35dcc2f5ed2f1ef22bb36c89fd4d4e2da3fcf362414319d2bdd088b1c","cargo_embargo.json":"cf79873063bb248828b4685044807e98bad7d851fadede4987a5ac1f6110d687","rules.mk":"058e963b9a5fa8016bb3c724a76871d5f72b3217185e84b5548b029114f6a138","src/frame.rs":"ed200c3cff76f97714c032e841b131fee83f436255f2d887f6c154b38db7d90c","src/lib.rs":"07d4869354efefbc6346829179c54612d297c927c7190063c8db5fe31d0eadbb","src/linked_list.rs":"d79f2f9eb1091f16d21d3eae8033c2a32d035e47d846be713738ffe9345a61d5","src/test.rs":"ca601b44b36334dc2b5b71f944f7b4823a71ffa34a4bf1f74c41cf5cc8dd8ec3"}}
\ No newline at end of file
diff --git a/crates/buddy_system_allocator/Android.bp b/crates/buddy_system_allocator/Android.bp
index b329f9c..c0fb464 100644
--- a/crates/buddy_system_allocator/Android.bp
+++ b/crates/buddy_system_allocator/Android.bp
@@ -40,6 +40,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/buddy_system_allocator/cargo_embargo.json b/crates/buddy_system_allocator/cargo_embargo.json
index 4c9c960..874c3d0 100644
--- a/crates/buddy_system_allocator/cargo_embargo.json
+++ b/crates/buddy_system_allocator/cargo_embargo.json
@@ -19,5 +19,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/bytemuck_derive/.android-checksum.json b/crates/bytemuck_derive/.android-checksum.json
index 235bcba..e244849 100644
--- a/crates/bytemuck_derive/.android-checksum.json
+++ b/crates/bytemuck_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e4ee0b1bd553e570de5db41cda3940c9b07af519c2fb0f2ab378f342f0e4a92f","Android.bp":"e8a1e96f7f7f63ad89977ad59ebd4ec6c9e64de2342eeeff780074b923c0bff4","Cargo.toml":"374db6c8a35d1ce7fa5bac692aa25b958d300143db568f28b89636fb5d57b46f","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","METADATA":"e0a212a08f51629c9cdd4bcec9b7a32caf9b37d0a17b5e9ea3bf7321787efe4c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ad55c0eb37f7af0fb65cdc127877160ea0f80c5e603baeec8e0d56a5b5561cc","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","changelog.md":"1909a39ed7dfcc2f070340f6814d8b3b32acf0bc17b90bc65b051a074a038816","src/lib.rs":"7457a7a522cd9e3df11e6a19c45430ba75a7a18f4068c682ce916b3d9aa5c3b8","src/traits.rs":"5ac4b210e85fef6de818909063df8dd663c371d4ba6a66de7ba3e0119fc263d8","tests/basic.rs":"efee0fe9c11ecddce8fad32a543fa55a8a567a2bac95cd0814bf4087ba617980"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e4ee0b1bd553e570de5db41cda3940c9b07af519c2fb0f2ab378f342f0e4a92f","Android.bp":"ddf51b02e24015d835c8c4dd728808aa3d6739a828c638404cb78296b78f7ec2","Cargo.toml":"374db6c8a35d1ce7fa5bac692aa25b958d300143db568f28b89636fb5d57b46f","LICENSE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","LICENSE-APACHE":"26c86e25199583069f0f8205e7a76be5bc10af20d9204df80f281a2ea9520941","METADATA":"e0a212a08f51629c9cdd4bcec9b7a32caf9b37d0a17b5e9ea3bf7321787efe4c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ad55c0eb37f7af0fb65cdc127877160ea0f80c5e603baeec8e0d56a5b5561cc","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","changelog.md":"1909a39ed7dfcc2f070340f6814d8b3b32acf0bc17b90bc65b051a074a038816","src/lib.rs":"7457a7a522cd9e3df11e6a19c45430ba75a7a18f4068c682ce916b3d9aa5c3b8","src/traits.rs":"5ac4b210e85fef6de818909063df8dd663c371d4ba6a66de7ba3e0119fc263d8","tests/basic.rs":"efee0fe9c11ecddce8fad32a543fa55a8a567a2bac95cd0814bf4087ba617980"}}
\ No newline at end of file
diff --git a/crates/bytemuck_derive/Android.bp b/crates/bytemuck_derive/Android.bp
index 039132b..67aeea8 100644
--- a/crates/bytemuck_derive/Android.bp
+++ b/crates/bytemuck_derive/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/bytemuck_derive/cargo_embargo.json b/crates/bytemuck_derive/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/bytemuck_derive/cargo_embargo.json
+++ b/crates/bytemuck_derive/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/camino/.android-checksum.json b/crates/camino/.android-checksum.json
index 34c2513..67ce3e0 100644
--- a/crates/camino/.android-checksum.json
+++ b/crates/camino/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e5b13c58d1b4b96f16ee830a935ec83baf77ffe244f63620b6817e5053e900ec","Android.bp":"8c20e8b4bac3edb5c98a5b1363f4b73b0745aa4eee9de95b1802bf71d71263f3","CHANGELOG.md":"2a976fa975588338a61f18bb45c78bf3bbd2d2f617f0b65843f1cb632df9b3b5","Cargo.lock.rust134":"0b4dd748f6f3f8208a284d28827d85d96a9f89c3493efcb3fabec1f153d2ef2e","Cargo.toml":"87df14ab090b6e73561087afba99a8286af3ad66a11a514ff16bf6a75ed76977","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"31759a9525a776c516f4804a79519b213f27bc27e4e6d1c2c391676828138fc1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c4904547309052006f5acf1c4c0385150eda310e6b997412d914a76af0f9e386","build.rs":"4a6f4e8c1363a32441e5bec2d490794ec7c0f003d37ed5792eba2a2d0fe21174","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","clippy.toml":"8acded2cc7f513425f5a8f894669622c7b9b69dbbfff1da3261632734d658639","release.toml":"206befd32d962d2f250f02ae3856cc6a01210b4fb32cf755603af99f6da9b3ff","rustfmt.toml":"2b511f15a07ddd2a9f406663393a250c97501c9a25effb880f54459c31d7a5da","src/lib.rs":"adaa06bc4da3b5513a0c52e041edde53198b5b568379180f55b7335cc8a98043","src/proptest_impls.rs":"59ff9d78672558380bb4da4d247d9e4c09548a75a1953c516a934ebd1517ed3e","src/serde_impls.rs":"2c586a8e6d35aebd645b6a4990736979c97c5b3006da6ff909fbc661eae19c27","src/tests.rs":"d7e04ec8a7ede3dca99f8204235f11b1c9d0603aea793467b12f083689906240","tests/integration_tests.rs":"d9e72ed5e1f7f1e9b69cb44d8aa62a8ec0366a4e49c742d0347e1f12a2ae9acc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e5b13c58d1b4b96f16ee830a935ec83baf77ffe244f63620b6817e5053e900ec","Android.bp":"0608dcd78026e233d28bff1d3e91a0b14101eb954bc551bf4794a6685a8471c4","CHANGELOG.md":"2a976fa975588338a61f18bb45c78bf3bbd2d2f617f0b65843f1cb632df9b3b5","Cargo.lock.rust134":"0b4dd748f6f3f8208a284d28827d85d96a9f89c3493efcb3fabec1f153d2ef2e","Cargo.toml":"87df14ab090b6e73561087afba99a8286af3ad66a11a514ff16bf6a75ed76977","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"31759a9525a776c516f4804a79519b213f27bc27e4e6d1c2c391676828138fc1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c4904547309052006f5acf1c4c0385150eda310e6b997412d914a76af0f9e386","build.rs":"4a6f4e8c1363a32441e5bec2d490794ec7c0f003d37ed5792eba2a2d0fe21174","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","clippy.toml":"8acded2cc7f513425f5a8f894669622c7b9b69dbbfff1da3261632734d658639","release.toml":"206befd32d962d2f250f02ae3856cc6a01210b4fb32cf755603af99f6da9b3ff","rustfmt.toml":"2b511f15a07ddd2a9f406663393a250c97501c9a25effb880f54459c31d7a5da","src/lib.rs":"adaa06bc4da3b5513a0c52e041edde53198b5b568379180f55b7335cc8a98043","src/proptest_impls.rs":"59ff9d78672558380bb4da4d247d9e4c09548a75a1953c516a934ebd1517ed3e","src/serde_impls.rs":"2c586a8e6d35aebd645b6a4990736979c97c5b3006da6ff909fbc661eae19c27","src/tests.rs":"d7e04ec8a7ede3dca99f8204235f11b1c9d0603aea793467b12f083689906240","tests/integration_tests.rs":"d9e72ed5e1f7f1e9b69cb44d8aa62a8ec0366a4e49c742d0347e1f12a2ae9acc"}}
\ No newline at end of file
diff --git a/crates/camino/Android.bp b/crates/camino/Android.bp
index a8c76f8..c476022 100644
--- a/crates/camino/Android.bp
+++ b/crates/camino/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/camino/cargo_embargo.json b/crates/camino/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/camino/cargo_embargo.json
+++ b/crates/camino/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/cargo-platform/.android-checksum.json b/crates/cargo-platform/.android-checksum.json
new file mode 100644
index 0000000..1bb10d5
--- /dev/null
+++ b/crates/cargo-platform/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"eb9b11d3950b29cbf1b7f65db7a2b53b3227963fc8f731c72d537abbcb628118","Android.bp":"2686548c859e4c51cc9701330c2ef4cad70ccd567d2407775258c6d458797a5b","Cargo.lock":"063b4573957feaa1ed99b1897ee93d7910242a2a169525796d65459f1fdd7ab5","Cargo.toml":"a5e28050123d566c17e17dddada306884cada6e22cf3f2be8a0065158d132680","LICENSE":"73e842a46e7a5996ac314beb59dfe0ab84424a632a6772406eda5175bcce7bdd","LICENSE-APACHE":"73e842a46e7a5996ac314beb59dfe0ab84424a632a6772406eda5175bcce7bdd","METADATA":"c0996bdf1739f7e43a5e81b019a395a5ae2cab7128eaedd882d9fd878812b076","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6cab7cf8eff067381fc81d28f0a9c937a98074063f7d86077ba7a620d1abf5bf","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/matches.rs":"eaabf36b9f98c41f90dee75e2dd104cdd9fd49787fdfb40f32e001fdc4211c5a","src/cfg.rs":"1cb570f0d61d637cd78995ec3333b93d6337d19df8a4aa84c713f492c53e2b8f","src/error.rs":"d33b6bc89eb42d22fbf6b73b5733b29ca6ea2ba5bd66889a57451e5c3ead5e58","src/lib.rs":"2e163c95885bd3da1f862dc524b8eec9d3f76889fa2bf4c59ece97181943328f","tests/test_cfg.rs":"761c28f31c67766c68a60ceca4ecd64e5f9157d93a5058a580d0c7b09371e36f"}}
\ No newline at end of file
diff --git a/crates/cargo-platform/.cargo-checksum.json b/crates/cargo-platform/.cargo-checksum.json
new file mode 100644
index 0000000..b4026ce
--- /dev/null
+++ b/crates/cargo-platform/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"81e17b38551b55a249eba158bd6bbaf3d43db8b49700cb801e6b808793ab9f16","Cargo.toml":"487e38835c445664eac2bf0d70b4171b2b3ed4f1f82ee076b4489095ebe04fb2","LICENSE-APACHE":"8ada45cd9f843acf64e4722ae262c622a2b3b3007c7310ef36ac1061a30f6adb","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"23bb153e6c8585dfac13913a49606eacbb54a44afec4db95b6aafee9f51449dc","examples/matches.rs":"760a95d8b32b7c9d1413e3317e6401c3190c5f42e6fe67790de471abf62f46af","src/cfg.rs":"2a5943f53d364c12edc0279db9f4c623add6d65b1a7b70843d8786e5d93d90ba","src/error.rs":"1229940c1cd6dde6f56363f787c27007ba62135371bd3c2a3b671172cf0b6d6b","src/lib.rs":"a01432c5f8d150c549f735cc982f5b0dbe015037ae60cc8c53d0729c3352d03c","tests/test_cfg.rs":"d97202ea588e86b4c5603f199afbd7715852ddd8ddad772217a0826c9afd7304"},"package":"e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"}
\ No newline at end of file
diff --git a/crates/cargo-platform/Android.bp b/crates/cargo-platform/Android.bp
new file mode 100644
index 0000000..4cbcbe7
--- /dev/null
+++ b/crates/cargo-platform/Android.bp
@@ -0,0 +1,32 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_cargo-platform_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_cargo-platform_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libcargo_platform",
+ host_supported: true,
+ crate_name: "cargo_platform",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.1.9",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ rustlibs: ["libserde"],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/cargo-platform/Cargo.lock b/crates/cargo-platform/Cargo.lock
new file mode 100644
index 0000000..bdde401
--- /dev/null
+++ b/crates/cargo-platform/Cargo.lock
@@ -0,0 +1,65 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.9"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
diff --git a/crates/cargo-platform/Cargo.toml b/crates/cargo-platform/Cargo.toml
new file mode 100644
index 0000000..f045405
--- /dev/null
+++ b/crates/cargo-platform/Cargo.toml
@@ -0,0 +1,59 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.78"
+name = "cargo-platform"
+version = "0.1.9"
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Cargo's representation of a target platform."
+homepage = "https://github.com/rust-lang/cargo"
+documentation = "https://docs.rs/cargo-platform"
+readme = "README.md"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/rust-lang/cargo"
+
+[lib]
+name = "cargo_platform"
+path = "src/lib.rs"
+
+[[example]]
+name = "matches"
+path = "examples/matches.rs"
+
+[[test]]
+name = "test_cfg"
+path = "tests/test_cfg.rs"
+
+[dependencies.serde]
+version = "1.0.204"
+
+[lints.clippy]
+dbg_macro = "warn"
+disallowed_methods = "warn"
+print_stderr = "warn"
+print_stdout = "warn"
+self_named_module_files = "warn"
+
+[lints.clippy.all]
+level = "allow"
+priority = -1
+
+[lints.rust]
+rust_2018_idioms = "warn"
+
+[lints.rustdoc]
+private_intra_doc_links = "allow"
diff --git a/crates/cargo-platform/LICENSE b/crates/cargo-platform/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/cargo-platform/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/cargo-platform/LICENSE-APACHE b/crates/cargo-platform/LICENSE-APACHE
new file mode 100644
index 0000000..c98d27d
--- /dev/null
+++ b/crates/cargo-platform/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ https://www.apache.org/licenses/LICENSE-2.0
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/crates/cargo-platform/METADATA b/crates/cargo-platform/METADATA
new file mode 100644
index 0000000..dd3dabe
--- /dev/null
+++ b/crates/cargo-platform/METADATA
@@ -0,0 +1,17 @@
+name: "cargo-platform"
+description: "Cargo\'s representation of a target platform."
+third_party {
+ version: "0.1.9"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 19
+ }
+ homepage: "https://crates.io/crates/cargo-platform"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/cargo-platform/cargo-platform-0.1.9.crate"
+ version: "0.1.9"
+ }
+}
diff --git a/crates/cargo-platform/MODULE_LICENSE_APACHE2 b/crates/cargo-platform/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/cargo-platform/MODULE_LICENSE_APACHE2
diff --git a/crates/cargo-platform/README.md b/crates/cargo-platform/README.md
new file mode 100644
index 0000000..844bc08
--- /dev/null
+++ b/crates/cargo-platform/README.md
@@ -0,0 +1,2 @@
+> This crate is maintained by the Cargo team for use by the wider
+> ecosystem. This crate follows semver compatibility for its APIs.
diff --git a/crates/cargo-platform/cargo_embargo.json b/crates/cargo-platform/cargo_embargo.json
new file mode 100644
index 0000000..b6c35c7
--- /dev/null
+++ b/crates/cargo-platform/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/cargo-platform/examples/matches.rs b/crates/cargo-platform/examples/matches.rs
new file mode 100644
index 0000000..11318a7
--- /dev/null
+++ b/crates/cargo-platform/examples/matches.rs
@@ -0,0 +1,57 @@
+//! This example demonstrates how to filter a Platform based on the current
+//! host target.
+
+#![allow(clippy::print_stdout)]
+
+use cargo_platform::{Cfg, Platform};
+use std::process::Command;
+use std::str::FromStr;
+
+static EXAMPLES: &[&str] = &[
+ "cfg(windows)",
+ "cfg(unix)",
+ "cfg(target_os=\"macos\")",
+ "cfg(target_os=\"linux\")",
+ "cfg(any(target_arch=\"x86\", target_arch=\"x86_64\"))",
+];
+
+fn main() {
+ let target = get_target();
+ let cfgs = get_cfgs();
+ println!("host target={} cfgs:", target);
+ for cfg in &cfgs {
+ println!(" {}", cfg);
+ }
+ let mut examples: Vec<&str> = EXAMPLES.iter().copied().collect();
+ examples.push(target.as_str());
+ for example in examples {
+ let p = Platform::from_str(example).unwrap();
+ println!("{:?} matches: {:?}", example, p.matches(&target, &cfgs));
+ }
+}
+
+fn get_target() -> String {
+ let output = Command::new("rustc")
+ .arg("-Vv")
+ .output()
+ .expect("rustc failed to run");
+ let stdout = String::from_utf8(output.stdout).unwrap();
+ for line in stdout.lines() {
+ if let Some(line) = line.strip_prefix("host: ") {
+ return String::from(line);
+ }
+ }
+ panic!("Failed to find host: {}", stdout);
+}
+
+fn get_cfgs() -> Vec<Cfg> {
+ let output = Command::new("rustc")
+ .arg("--print=cfg")
+ .output()
+ .expect("rustc failed to run");
+ let stdout = String::from_utf8(output.stdout).unwrap();
+ stdout
+ .lines()
+ .map(|line| Cfg::from_str(line).unwrap())
+ .collect()
+}
diff --git a/crates/cargo-platform/src/cfg.rs b/crates/cargo-platform/src/cfg.rs
new file mode 100644
index 0000000..c3ddb69
--- /dev/null
+++ b/crates/cargo-platform/src/cfg.rs
@@ -0,0 +1,319 @@
+use crate::error::{ParseError, ParseErrorKind::*};
+use std::fmt;
+use std::iter;
+use std::str::{self, FromStr};
+
+/// A cfg expression.
+#[derive(Eq, PartialEq, Hash, Ord, PartialOrd, Clone, Debug)]
+pub enum CfgExpr {
+ Not(Box<CfgExpr>),
+ All(Vec<CfgExpr>),
+ Any(Vec<CfgExpr>),
+ Value(Cfg),
+}
+
+/// A cfg value.
+#[derive(Eq, PartialEq, Hash, Ord, PartialOrd, Clone, Debug)]
+pub enum Cfg {
+ /// A named cfg value, like `unix`.
+ Name(String),
+ /// A key/value cfg pair, like `target_os = "linux"`.
+ KeyPair(String, String),
+}
+
+#[derive(PartialEq)]
+enum Token<'a> {
+ LeftParen,
+ RightParen,
+ Ident(&'a str),
+ Comma,
+ Equals,
+ String(&'a str),
+}
+
+#[derive(Clone)]
+struct Tokenizer<'a> {
+ s: iter::Peekable<str::CharIndices<'a>>,
+ orig: &'a str,
+}
+
+struct Parser<'a> {
+ t: Tokenizer<'a>,
+}
+
+impl FromStr for Cfg {
+ type Err = ParseError;
+
+ fn from_str(s: &str) -> Result<Cfg, Self::Err> {
+ let mut p = Parser::new(s);
+ let e = p.cfg()?;
+ if let Some(rest) = p.rest() {
+ return Err(ParseError::new(
+ p.t.orig,
+ UnterminatedExpression(rest.to_string()),
+ ));
+ }
+ Ok(e)
+ }
+}
+
+impl fmt::Display for Cfg {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match *self {
+ Cfg::Name(ref s) => s.fmt(f),
+ Cfg::KeyPair(ref k, ref v) => write!(f, "{} = \"{}\"", k, v),
+ }
+ }
+}
+
+impl CfgExpr {
+ /// Utility function to check if the key, "cfg(..)" matches the `target_cfg`
+ pub fn matches_key(key: &str, target_cfg: &[Cfg]) -> bool {
+ if key.starts_with("cfg(") && key.ends_with(')') {
+ let cfg = &key[4..key.len() - 1];
+
+ CfgExpr::from_str(cfg)
+ .ok()
+ .map(|ce| ce.matches(target_cfg))
+ .unwrap_or(false)
+ } else {
+ false
+ }
+ }
+
+ pub fn matches(&self, cfg: &[Cfg]) -> bool {
+ match *self {
+ CfgExpr::Not(ref e) => !e.matches(cfg),
+ CfgExpr::All(ref e) => e.iter().all(|e| e.matches(cfg)),
+ CfgExpr::Any(ref e) => e.iter().any(|e| e.matches(cfg)),
+ CfgExpr::Value(ref e) => cfg.contains(e),
+ }
+ }
+}
+
+impl FromStr for CfgExpr {
+ type Err = ParseError;
+
+ fn from_str(s: &str) -> Result<CfgExpr, Self::Err> {
+ let mut p = Parser::new(s);
+ let e = p.expr()?;
+ if let Some(rest) = p.rest() {
+ return Err(ParseError::new(
+ p.t.orig,
+ UnterminatedExpression(rest.to_string()),
+ ));
+ }
+ Ok(e)
+ }
+}
+
+impl fmt::Display for CfgExpr {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match *self {
+ CfgExpr::Not(ref e) => write!(f, "not({})", e),
+ CfgExpr::All(ref e) => write!(f, "all({})", CommaSep(e)),
+ CfgExpr::Any(ref e) => write!(f, "any({})", CommaSep(e)),
+ CfgExpr::Value(ref e) => write!(f, "{}", e),
+ }
+ }
+}
+
+struct CommaSep<'a, T>(&'a [T]);
+
+impl<'a, T: fmt::Display> fmt::Display for CommaSep<'a, T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ for (i, v) in self.0.iter().enumerate() {
+ if i > 0 {
+ write!(f, ", ")?;
+ }
+ write!(f, "{}", v)?;
+ }
+ Ok(())
+ }
+}
+
+impl<'a> Parser<'a> {
+ fn new(s: &'a str) -> Parser<'a> {
+ Parser {
+ t: Tokenizer {
+ s: s.char_indices().peekable(),
+ orig: s,
+ },
+ }
+ }
+
+ fn expr(&mut self) -> Result<CfgExpr, ParseError> {
+ match self.peek() {
+ Some(Ok(Token::Ident(op @ "all"))) | Some(Ok(Token::Ident(op @ "any"))) => {
+ self.t.next();
+ let mut e = Vec::new();
+ self.eat(&Token::LeftParen)?;
+ while !self.r#try(&Token::RightParen) {
+ e.push(self.expr()?);
+ if !self.r#try(&Token::Comma) {
+ self.eat(&Token::RightParen)?;
+ break;
+ }
+ }
+ if op == "all" {
+ Ok(CfgExpr::All(e))
+ } else {
+ Ok(CfgExpr::Any(e))
+ }
+ }
+ Some(Ok(Token::Ident("not"))) => {
+ self.t.next();
+ self.eat(&Token::LeftParen)?;
+ let e = self.expr()?;
+ self.eat(&Token::RightParen)?;
+ Ok(CfgExpr::Not(Box::new(e)))
+ }
+ Some(Ok(..)) => self.cfg().map(CfgExpr::Value),
+ Some(Err(..)) => Err(self.t.next().unwrap().err().unwrap()),
+ None => Err(ParseError::new(
+ self.t.orig,
+ IncompleteExpr("start of a cfg expression"),
+ )),
+ }
+ }
+
+ fn cfg(&mut self) -> Result<Cfg, ParseError> {
+ match self.t.next() {
+ Some(Ok(Token::Ident(name))) => {
+ let e = if self.r#try(&Token::Equals) {
+ let val = match self.t.next() {
+ Some(Ok(Token::String(s))) => s,
+ Some(Ok(t)) => {
+ return Err(ParseError::new(
+ self.t.orig,
+ UnexpectedToken {
+ expected: "a string",
+ found: t.classify(),
+ },
+ ))
+ }
+ Some(Err(e)) => return Err(e),
+ None => {
+ return Err(ParseError::new(self.t.orig, IncompleteExpr("a string")))
+ }
+ };
+ Cfg::KeyPair(name.to_string(), val.to_string())
+ } else {
+ Cfg::Name(name.to_string())
+ };
+ Ok(e)
+ }
+ Some(Ok(t)) => Err(ParseError::new(
+ self.t.orig,
+ UnexpectedToken {
+ expected: "identifier",
+ found: t.classify(),
+ },
+ )),
+ Some(Err(e)) => Err(e),
+ None => Err(ParseError::new(self.t.orig, IncompleteExpr("identifier"))),
+ }
+ }
+
+ fn peek(&mut self) -> Option<Result<Token<'a>, ParseError>> {
+ self.t.clone().next()
+ }
+
+ fn r#try(&mut self, token: &Token<'a>) -> bool {
+ match self.peek() {
+ Some(Ok(ref t)) if token == t => {}
+ _ => return false,
+ }
+ self.t.next();
+ true
+ }
+
+ fn eat(&mut self, token: &Token<'a>) -> Result<(), ParseError> {
+ match self.t.next() {
+ Some(Ok(ref t)) if token == t => Ok(()),
+ Some(Ok(t)) => Err(ParseError::new(
+ self.t.orig,
+ UnexpectedToken {
+ expected: token.classify(),
+ found: t.classify(),
+ },
+ )),
+ Some(Err(e)) => Err(e),
+ None => Err(ParseError::new(
+ self.t.orig,
+ IncompleteExpr(token.classify()),
+ )),
+ }
+ }
+
+ /// Returns the rest of the input from the current location.
+ fn rest(&self) -> Option<&str> {
+ let mut s = self.t.s.clone();
+ loop {
+ match s.next() {
+ Some((_, ' ')) => {}
+ Some((start, _ch)) => return Some(&self.t.orig[start..]),
+ None => return None,
+ }
+ }
+ }
+}
+
+impl<'a> Iterator for Tokenizer<'a> {
+ type Item = Result<Token<'a>, ParseError>;
+
+ fn next(&mut self) -> Option<Result<Token<'a>, ParseError>> {
+ loop {
+ match self.s.next() {
+ Some((_, ' ')) => {}
+ Some((_, '(')) => return Some(Ok(Token::LeftParen)),
+ Some((_, ')')) => return Some(Ok(Token::RightParen)),
+ Some((_, ',')) => return Some(Ok(Token::Comma)),
+ Some((_, '=')) => return Some(Ok(Token::Equals)),
+ Some((start, '"')) => {
+ while let Some((end, ch)) = self.s.next() {
+ if ch == '"' {
+ return Some(Ok(Token::String(&self.orig[start + 1..end])));
+ }
+ }
+ return Some(Err(ParseError::new(self.orig, UnterminatedString)));
+ }
+ Some((start, ch)) if is_ident_start(ch) => {
+ while let Some(&(end, ch)) = self.s.peek() {
+ if !is_ident_rest(ch) {
+ return Some(Ok(Token::Ident(&self.orig[start..end])));
+ } else {
+ self.s.next();
+ }
+ }
+ return Some(Ok(Token::Ident(&self.orig[start..])));
+ }
+ Some((_, ch)) => {
+ return Some(Err(ParseError::new(self.orig, UnexpectedChar(ch))));
+ }
+ None => return None,
+ }
+ }
+ }
+}
+
+fn is_ident_start(ch: char) -> bool {
+ ch == '_' || ch.is_ascii_alphabetic()
+}
+
+fn is_ident_rest(ch: char) -> bool {
+ is_ident_start(ch) || ch.is_ascii_digit()
+}
+
+impl<'a> Token<'a> {
+ fn classify(&self) -> &'static str {
+ match *self {
+ Token::LeftParen => "`(`",
+ Token::RightParen => "`)`",
+ Token::Ident(..) => "an identifier",
+ Token::Comma => "`,`",
+ Token::Equals => "`=`",
+ Token::String(..) => "a string",
+ }
+ }
+}
diff --git a/crates/cargo-platform/src/error.rs b/crates/cargo-platform/src/error.rs
new file mode 100644
index 0000000..2d5b315
--- /dev/null
+++ b/crates/cargo-platform/src/error.rs
@@ -0,0 +1,67 @@
+use std::fmt;
+
+#[derive(Debug)]
+pub struct ParseError {
+ kind: ParseErrorKind,
+ orig: String,
+}
+
+#[non_exhaustive]
+#[derive(Debug)]
+pub enum ParseErrorKind {
+ UnterminatedString,
+ UnexpectedChar(char),
+ UnexpectedToken {
+ expected: &'static str,
+ found: &'static str,
+ },
+ IncompleteExpr(&'static str),
+ UnterminatedExpression(String),
+ InvalidTarget(String),
+}
+
+impl fmt::Display for ParseError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(
+ f,
+ "failed to parse `{}` as a cfg expression: {}",
+ self.orig, self.kind
+ )
+ }
+}
+
+impl fmt::Display for ParseErrorKind {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ use ParseErrorKind::*;
+ match self {
+ UnterminatedString => write!(f, "unterminated string in cfg"),
+ UnexpectedChar(ch) => write!(
+ f,
+ "unexpected character `{}` in cfg, expected parens, a comma, \
+ an identifier, or a string",
+ ch
+ ),
+ UnexpectedToken { expected, found } => {
+ write!(f, "expected {}, found {}", expected, found)
+ }
+ IncompleteExpr(expected) => {
+ write!(f, "expected {}, but cfg expression ended", expected)
+ }
+ UnterminatedExpression(s) => {
+ write!(f, "unexpected content `{}` found after cfg expression", s)
+ }
+ InvalidTarget(s) => write!(f, "invalid target specifier: {}", s),
+ }
+ }
+}
+
+impl std::error::Error for ParseError {}
+
+impl ParseError {
+ pub fn new(orig: &str, kind: ParseErrorKind) -> ParseError {
+ ParseError {
+ kind,
+ orig: orig.to_string(),
+ }
+ }
+}
diff --git a/crates/cargo-platform/src/lib.rs b/crates/cargo-platform/src/lib.rs
new file mode 100644
index 0000000..71e9140
--- /dev/null
+++ b/crates/cargo-platform/src/lib.rs
@@ -0,0 +1,148 @@
+//! Platform definition used by Cargo.
+//!
+//! This defines a [`Platform`] type which is used in Cargo to specify a target platform.
+//! There are two kinds, a named target like `x86_64-apple-darwin`, and a "cfg expression"
+//! like `cfg(any(target_os = "macos", target_os = "ios"))`.
+//!
+//! See `examples/matches.rs` for an example of how to match against a `Platform`.
+//!
+//! > This crate is maintained by the Cargo team for use by the wider
+//! > ecosystem. This crate follows semver compatibility for its APIs.
+//!
+//! [`Platform`]: enum.Platform.html
+
+use std::fmt;
+use std::str::FromStr;
+
+mod cfg;
+mod error;
+
+pub use cfg::{Cfg, CfgExpr};
+pub use error::{ParseError, ParseErrorKind};
+
+/// Platform definition.
+#[derive(Eq, PartialEq, Hash, Ord, PartialOrd, Clone, Debug)]
+pub enum Platform {
+ /// A named platform, like `x86_64-apple-darwin`.
+ Name(String),
+ /// A cfg expression, like `cfg(windows)`.
+ Cfg(CfgExpr),
+}
+
+impl Platform {
+ /// Returns whether the Platform matches the given target and cfg.
+ ///
+ /// The named target and cfg values should be obtained from `rustc`.
+ pub fn matches(&self, name: &str, cfg: &[Cfg]) -> bool {
+ match *self {
+ Platform::Name(ref p) => p == name,
+ Platform::Cfg(ref p) => p.matches(cfg),
+ }
+ }
+
+ fn validate_named_platform(name: &str) -> Result<(), ParseError> {
+ if let Some(ch) = name
+ .chars()
+ .find(|&c| !(c.is_alphanumeric() || c == '_' || c == '-' || c == '.'))
+ {
+ if name.chars().any(|c| c == '(') {
+ return Err(ParseError::new(
+ name,
+ ParseErrorKind::InvalidTarget(
+ "unexpected `(` character, cfg expressions must start with `cfg(`"
+ .to_string(),
+ ),
+ ));
+ }
+ return Err(ParseError::new(
+ name,
+ ParseErrorKind::InvalidTarget(format!(
+ "unexpected character {} in target name",
+ ch
+ )),
+ ));
+ }
+ Ok(())
+ }
+
+ pub fn check_cfg_attributes(&self, warnings: &mut Vec<String>) {
+ fn check_cfg_expr(expr: &CfgExpr, warnings: &mut Vec<String>) {
+ match *expr {
+ CfgExpr::Not(ref e) => check_cfg_expr(e, warnings),
+ CfgExpr::All(ref e) | CfgExpr::Any(ref e) => {
+ for e in e {
+ check_cfg_expr(e, warnings);
+ }
+ }
+ CfgExpr::Value(ref e) => match e {
+ Cfg::Name(name) => match name.as_str() {
+ "test" | "debug_assertions" | "proc_macro" =>
+ warnings.push(format!(
+ "Found `{}` in `target.'cfg(...)'.dependencies`. \
+ This value is not supported for selecting dependencies \
+ and will not work as expected. \
+ To learn more visit \
+ https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#platform-specific-dependencies",
+ name
+ )),
+ _ => (),
+ },
+ Cfg::KeyPair(name, _) => if name.as_str() == "feature" {
+ warnings.push(String::from(
+ "Found `feature = ...` in `target.'cfg(...)'.dependencies`. \
+ This key is not supported for selecting dependencies \
+ and will not work as expected. \
+ Use the [features] section instead: \
+ https://doc.rust-lang.org/cargo/reference/features.html"
+ ))
+ },
+ }
+ }
+ }
+
+ if let Platform::Cfg(cfg) = self {
+ check_cfg_expr(cfg, warnings);
+ }
+ }
+}
+
+impl serde::Serialize for Platform {
+ fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ self.to_string().serialize(s)
+ }
+}
+
+impl<'de> serde::Deserialize<'de> for Platform {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ let s = String::deserialize(deserializer)?;
+ FromStr::from_str(&s).map_err(serde::de::Error::custom)
+ }
+}
+
+impl FromStr for Platform {
+ type Err = ParseError;
+
+ fn from_str(s: &str) -> Result<Platform, ParseError> {
+ if let Some(s) = s.strip_prefix("cfg(").and_then(|s| s.strip_suffix(')')) {
+ s.parse().map(Platform::Cfg)
+ } else {
+ Platform::validate_named_platform(s)?;
+ Ok(Platform::Name(s.to_string()))
+ }
+ }
+}
+
+impl fmt::Display for Platform {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match *self {
+ Platform::Name(ref n) => n.fmt(f),
+ Platform::Cfg(ref e) => write!(f, "cfg({})", e),
+ }
+ }
+}
diff --git a/crates/cargo-platform/tests/test_cfg.rs b/crates/cargo-platform/tests/test_cfg.rs
new file mode 100644
index 0000000..dd99d9a
--- /dev/null
+++ b/crates/cargo-platform/tests/test_cfg.rs
@@ -0,0 +1,251 @@
+use cargo_platform::{Cfg, CfgExpr, Platform};
+use std::fmt;
+use std::str::FromStr;
+
+macro_rules! c {
+ ($a:ident) => {
+ Cfg::Name(stringify!($a).to_string())
+ };
+ ($a:ident = $e:expr) => {
+ Cfg::KeyPair(stringify!($a).to_string(), $e.to_string())
+ };
+}
+
+macro_rules! e {
+ (any($($t:tt),*)) => (CfgExpr::Any(vec![$(e!($t)),*]));
+ (all($($t:tt),*)) => (CfgExpr::All(vec![$(e!($t)),*]));
+ (not($($t:tt)*)) => (CfgExpr::Not(Box::new(e!($($t)*))));
+ (($($t:tt)*)) => (e!($($t)*));
+ ($($t:tt)*) => (CfgExpr::Value(c!($($t)*)));
+}
+
+fn good<T>(s: &str, expected: T)
+where
+ T: FromStr + PartialEq + fmt::Debug,
+ T::Err: fmt::Display,
+{
+ let c = match T::from_str(s) {
+ Ok(c) => c,
+ Err(e) => panic!("failed to parse `{}`: {}", s, e),
+ };
+ assert_eq!(c, expected);
+}
+
+fn bad<T>(s: &str, err: &str)
+where
+ T: FromStr + fmt::Display,
+ T::Err: fmt::Display,
+{
+ let e = match T::from_str(s) {
+ Ok(cfg) => panic!("expected `{}` to not parse but got {}", s, cfg),
+ Err(e) => e.to_string(),
+ };
+ assert!(
+ e.contains(err),
+ "when parsing `{}`,\n\"{}\" not contained \
+ inside: {}",
+ s,
+ err,
+ e
+ );
+}
+
+#[test]
+fn cfg_syntax() {
+ good("foo", c!(foo));
+ good("_bar", c!(_bar));
+ good(" foo", c!(foo));
+ good(" foo ", c!(foo));
+ good(" foo = \"bar\"", c!(foo = "bar"));
+ good("foo=\"\"", c!(foo = ""));
+ good(" foo=\"3\" ", c!(foo = "3"));
+ good("foo = \"3 e\"", c!(foo = "3 e"));
+}
+
+#[test]
+fn cfg_syntax_bad() {
+ bad::<Cfg>("", "but cfg expression ended");
+ bad::<Cfg>(" ", "but cfg expression ended");
+ bad::<Cfg>("\t", "unexpected character");
+ bad::<Cfg>("7", "unexpected character");
+ bad::<Cfg>("=", "expected identifier");
+ bad::<Cfg>(",", "expected identifier");
+ bad::<Cfg>("(", "expected identifier");
+ bad::<Cfg>("foo (", "unexpected content `(` found after cfg expression");
+ bad::<Cfg>("bar =", "expected a string");
+ bad::<Cfg>("bar = \"", "unterminated string");
+ bad::<Cfg>(
+ "foo, bar",
+ "unexpected content `, bar` found after cfg expression",
+ );
+}
+
+#[test]
+fn cfg_expr() {
+ good("foo", e!(foo));
+ good("_bar", e!(_bar));
+ good(" foo", e!(foo));
+ good(" foo ", e!(foo));
+ good(" foo = \"bar\"", e!(foo = "bar"));
+ good("foo=\"\"", e!(foo = ""));
+ good(" foo=\"3\" ", e!(foo = "3"));
+ good("foo = \"3 e\"", e!(foo = "3 e"));
+
+ good("all()", e!(all()));
+ good("all(a)", e!(all(a)));
+ good("all(a, b)", e!(all(a, b)));
+ good("all(a, )", e!(all(a)));
+ good("not(a = \"b\")", e!(not(a = "b")));
+ good("not(all(a))", e!(not(all(a))));
+}
+
+#[test]
+fn cfg_expr_bad() {
+ bad::<CfgExpr>(" ", "but cfg expression ended");
+ bad::<CfgExpr>(" all", "expected `(`");
+ bad::<CfgExpr>("all(a", "expected `)`");
+ bad::<CfgExpr>("not", "expected `(`");
+ bad::<CfgExpr>("not(a", "expected `)`");
+ bad::<CfgExpr>("a = ", "expected a string");
+ bad::<CfgExpr>("all(not())", "expected identifier");
+ bad::<CfgExpr>(
+ "foo(a)",
+ "unexpected content `(a)` found after cfg expression",
+ );
+}
+
+#[test]
+fn cfg_matches() {
+ assert!(e!(foo).matches(&[c!(bar), c!(foo), c!(baz)]));
+ assert!(e!(any(foo)).matches(&[c!(bar), c!(foo), c!(baz)]));
+ assert!(e!(any(foo, bar)).matches(&[c!(bar)]));
+ assert!(e!(any(foo, bar)).matches(&[c!(foo)]));
+ assert!(e!(all(foo, bar)).matches(&[c!(foo), c!(bar)]));
+ assert!(e!(all(foo, bar)).matches(&[c!(foo), c!(bar)]));
+ assert!(e!(not(foo)).matches(&[c!(bar)]));
+ assert!(e!(not(foo)).matches(&[]));
+ assert!(e!(any((not(foo)), (all(foo, bar)))).matches(&[c!(bar)]));
+ assert!(e!(any((not(foo)), (all(foo, bar)))).matches(&[c!(foo), c!(bar)]));
+
+ assert!(!e!(foo).matches(&[]));
+ assert!(!e!(foo).matches(&[c!(bar)]));
+ assert!(!e!(foo).matches(&[c!(fo)]));
+ assert!(!e!(any(foo)).matches(&[]));
+ assert!(!e!(any(foo)).matches(&[c!(bar)]));
+ assert!(!e!(any(foo)).matches(&[c!(bar), c!(baz)]));
+ assert!(!e!(all(foo)).matches(&[c!(bar), c!(baz)]));
+ assert!(!e!(all(foo, bar)).matches(&[c!(bar)]));
+ assert!(!e!(all(foo, bar)).matches(&[c!(foo)]));
+ assert!(!e!(all(foo, bar)).matches(&[]));
+ assert!(!e!(not(bar)).matches(&[c!(bar)]));
+ assert!(!e!(not(bar)).matches(&[c!(baz), c!(bar)]));
+ assert!(!e!(any((not(foo)), (all(foo, bar)))).matches(&[c!(foo)]));
+}
+
+#[test]
+fn bad_target_name() {
+ bad::<Platform>(
+ "any(cfg(unix), cfg(windows))",
+ "failed to parse `any(cfg(unix), cfg(windows))` as a cfg expression: \
+ invalid target specifier: unexpected `(` character, \
+ cfg expressions must start with `cfg(`",
+ );
+ bad::<Platform>(
+ "!foo",
+ "failed to parse `!foo` as a cfg expression: \
+ invalid target specifier: unexpected character ! in target name",
+ );
+}
+
+#[test]
+fn round_trip_platform() {
+ fn rt(s: &str) {
+ let p = Platform::from_str(s).unwrap();
+ let s2 = p.to_string();
+ let p2 = Platform::from_str(&s2).unwrap();
+ assert_eq!(p, p2);
+ }
+ rt("x86_64-apple-darwin");
+ rt("foo");
+ rt("cfg(windows)");
+ rt("cfg(target_os = \"windows\")");
+ rt(
+ "cfg(any(all(any(target_os = \"android\", target_os = \"linux\"), \
+ any(target_arch = \"aarch64\", target_arch = \"arm\", target_arch = \"powerpc64\", \
+ target_arch = \"x86\", target_arch = \"x86_64\")), \
+ all(target_os = \"freebsd\", target_arch = \"x86_64\")))",
+ );
+}
+
+#[test]
+fn check_cfg_attributes() {
+ fn ok(s: &str) {
+ let p = Platform::Cfg(s.parse().unwrap());
+ let mut warnings = Vec::new();
+ p.check_cfg_attributes(&mut warnings);
+ assert!(
+ warnings.is_empty(),
+ "Expected no warnings but got: {:?}",
+ warnings,
+ );
+ }
+
+ fn warn(s: &str, names: &[&str]) {
+ let p = Platform::Cfg(s.parse().unwrap());
+ let mut warnings = Vec::new();
+ p.check_cfg_attributes(&mut warnings);
+ assert_eq!(
+ warnings.len(),
+ names.len(),
+ "Expecter warnings about {:?} but got {:?}",
+ names,
+ warnings,
+ );
+ for (name, warning) in names.iter().zip(warnings.iter()) {
+ assert!(
+ warning.contains(name),
+ "Expected warning about '{}' but got: {}",
+ name,
+ warning,
+ );
+ }
+ }
+
+ ok("unix");
+ ok("windows");
+ ok("any(not(unix), windows)");
+ ok("foo");
+
+ ok("target_arch = \"abc\"");
+ ok("target_feature = \"abc\"");
+ ok("target_os = \"abc\"");
+ ok("target_family = \"abc\"");
+ ok("target_env = \"abc\"");
+ ok("target_endian = \"abc\"");
+ ok("target_pointer_width = \"abc\"");
+ ok("target_vendor = \"abc\"");
+ ok("bar = \"def\"");
+
+ warn("test", &["test"]);
+ warn("debug_assertions", &["debug_assertions"]);
+ warn("proc_macro", &["proc_macro"]);
+ warn("feature = \"abc\"", &["feature"]);
+
+ warn("any(not(debug_assertions), windows)", &["debug_assertions"]);
+ warn(
+ "any(not(feature = \"def\"), target_arch = \"abc\")",
+ &["feature"],
+ );
+ warn(
+ "any(not(target_os = \"windows\"), proc_macro)",
+ &["proc_macro"],
+ );
+ warn(
+ "any(not(feature = \"windows\"), proc_macro)",
+ &["feature", "proc_macro"],
+ );
+ warn(
+ "all(not(debug_assertions), any(windows, proc_macro))",
+ &["debug_assertions", "proc_macro"],
+ );
+}
diff --git a/crates/cast/.android-checksum.json b/crates/cast/.android-checksum.json
index 8951918..7b43238 100644
--- a/crates/cast/.android-checksum.json
+++ b/crates/cast/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6d7dbd1eb6458195e79632e7c3872c45fe13845f26e8be9dd0b2f048406d77a6","Android.bp":"75859006846b7ac3222203d36bbe2157bbd3bd5e5b3fb10dd48faec63ce2a2a0","CHANGELOG.md":"3b12e1fe94f2ebf92f575e3d4c98f1991c7aeed42501a146f1b561d662a1281b","Cargo.toml":"5ed18d0e1036a25f891062ee70d67cbb62c8eb851e764dbb336bfb575737345f","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f7823dcc865cae3296ed701768fc15db467bac674e0dad899022b1e38b02dc79","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8f40606e8fb2ae3057c98bf4310dab329b92c05c53c9572415ac039e572245a6","TEST_MAPPING":"733590456cc3266eaeac41342ab73b3bdfed2cd1cf2eacc180f89114afd9e8ea","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","src/lib.rs":"8947614a38ae9bf68eba0d606d75a4cff5784bf97fa30e1f9cf1b95ac107f718","src/test.rs":"58d8467715474e4ba34fdb411efb7634469a15da3b9a89326549fd91c264cd33"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6d7dbd1eb6458195e79632e7c3872c45fe13845f26e8be9dd0b2f048406d77a6","Android.bp":"8af19fe78ed6662045caaa669b9ae4ac6b242dc236b7146dec133e10e9ec5343","CHANGELOG.md":"3b12e1fe94f2ebf92f575e3d4c98f1991c7aeed42501a146f1b561d662a1281b","Cargo.toml":"5ed18d0e1036a25f891062ee70d67cbb62c8eb851e764dbb336bfb575737345f","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f7823dcc865cae3296ed701768fc15db467bac674e0dad899022b1e38b02dc79","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8f40606e8fb2ae3057c98bf4310dab329b92c05c53c9572415ac039e572245a6","TEST_MAPPING":"733590456cc3266eaeac41342ab73b3bdfed2cd1cf2eacc180f89114afd9e8ea","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","src/lib.rs":"8947614a38ae9bf68eba0d606d75a4cff5784bf97fa30e1f9cf1b95ac107f718","src/test.rs":"58d8467715474e4ba34fdb411efb7634469a15da3b9a89326549fd91c264cd33"}}
\ No newline at end of file
diff --git a/crates/cast/Android.bp b/crates/cast/Android.bp
index 90e484f..d2f5e0e 100644
--- a/crates/cast/Android.bp
+++ b/crates/cast/Android.bp
@@ -43,4 +43,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/cast/cargo_embargo.json b/crates/cast/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/cast/cargo_embargo.json
+++ b/crates/cast/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/cexpr/.android-checksum.json b/crates/cexpr/.android-checksum.json
index 883c596..a68e930 100644
--- a/crates/cexpr/.android-checksum.json
+++ b/crates/cexpr/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f89023a52c6017cba13121fa877cadccd849e9bf7373184c77be1b08625842fb","Android.bp":"e0aa9c96197f29d28f7efb6485110802f5bc77edd836d83faa1040f4eea4a640","Cargo.toml":"0f97b60750224578ae87829c17db619d312c2b91f5a698c71cbc914a132dc2d3","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"fba8e644392b6b9936657adfd9b52b011fa42d783cd3419fd701dd3473374454","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","bors.toml":"2206a18030afdfda8c8d63ed8a3f6fad283521f8457e94ae1f0449c6b6a66569","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","rustfmt.toml":"2f13419ba8172e6e39da6f289d981f3cdeac3e9d01fd8192605bcc126481b716","src/expr.rs":"b08d5b6fce73fab8ec5d064a3bee9367ccc0d59491ecef3451d7e7b14e379dcd","src/lib.rs":"01e1dd263b2e4e2753ee3efcd2bc485fb8f50e0d06c69fa5314b2272d6199b67","src/literal.rs":"cec9e634d462390e642fb3b5d9b40f600632e69cbad82b57d2300a08811d228c","src/token.rs":"5e3c27310b17eea6dfa94557493953c00f03a3e1fa9430da1d040340bad72d03","tests/clang.rs":"180a8b8fc3ac92a12c051d1a2c599db7b4d700bd6e406f5304caf3d9bdb85a0f","tests/input/chars.h":"f366753792276d9b30b44efb43eec7d2d073db00466ec3a6c55610680b7925f2","tests/input/fail.h":"c7141bc4cb9bec2471690f79d7d012dcdbdde97e92c0e3334dcddf4362d4ebe3","tests/input/floats.h":"8cfb6255a0b1b4789d026cb3f96c68820739026a52a2e2f947e8ad96305bb9dc","tests/input/int_signed.h":"68c573c05decbbb416d92cb31e74e56c822ff69557ce3b3d012a003d3dfeee84","tests/input/int_unsigned.h":"a2721e4d0c854c9dd3fd7eacb4418560d18292c1556e73eb0c2b91f3c95b68ab","tests/input/strings.h":"0871f8adb36b6b1c35ced904a837430b6cf2a56a96be7d7b87c13d52a58f9eb0","tests/input/test_llvm_bug_9069.h":"4606842cec0e9da91114590703c06e0a6a996c7d0cd0f65ce0151300c83cf791"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f89023a52c6017cba13121fa877cadccd849e9bf7373184c77be1b08625842fb","Android.bp":"e425ba241ae8726015d23be6e5a73dd913cd1f36021dfd443db1c882d2b4382d","Cargo.toml":"0f97b60750224578ae87829c17db619d312c2b91f5a698c71cbc914a132dc2d3","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"fba8e644392b6b9936657adfd9b52b011fa42d783cd3419fd701dd3473374454","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","bors.toml":"2206a18030afdfda8c8d63ed8a3f6fad283521f8457e94ae1f0449c6b6a66569","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","rustfmt.toml":"2f13419ba8172e6e39da6f289d981f3cdeac3e9d01fd8192605bcc126481b716","src/expr.rs":"b08d5b6fce73fab8ec5d064a3bee9367ccc0d59491ecef3451d7e7b14e379dcd","src/lib.rs":"01e1dd263b2e4e2753ee3efcd2bc485fb8f50e0d06c69fa5314b2272d6199b67","src/literal.rs":"cec9e634d462390e642fb3b5d9b40f600632e69cbad82b57d2300a08811d228c","src/token.rs":"5e3c27310b17eea6dfa94557493953c00f03a3e1fa9430da1d040340bad72d03","tests/clang.rs":"180a8b8fc3ac92a12c051d1a2c599db7b4d700bd6e406f5304caf3d9bdb85a0f","tests/input/chars.h":"f366753792276d9b30b44efb43eec7d2d073db00466ec3a6c55610680b7925f2","tests/input/fail.h":"c7141bc4cb9bec2471690f79d7d012dcdbdde97e92c0e3334dcddf4362d4ebe3","tests/input/floats.h":"8cfb6255a0b1b4789d026cb3f96c68820739026a52a2e2f947e8ad96305bb9dc","tests/input/int_signed.h":"68c573c05decbbb416d92cb31e74e56c822ff69557ce3b3d012a003d3dfeee84","tests/input/int_unsigned.h":"a2721e4d0c854c9dd3fd7eacb4418560d18292c1556e73eb0c2b91f3c95b68ab","tests/input/strings.h":"0871f8adb36b6b1c35ced904a837430b6cf2a56a96be7d7b87c13d52a58f9eb0","tests/input/test_llvm_bug_9069.h":"4606842cec0e9da91114590703c06e0a6a996c7d0cd0f65ce0151300c83cf791"}}
\ No newline at end of file
diff --git a/crates/cexpr/Android.bp b/crates/cexpr/Android.bp
index 76db2d0..ca4e71f 100644
--- a/crates/cexpr/Android.bp
+++ b/crates/cexpr/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/cexpr/cargo_embargo.json b/crates/cexpr/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/cexpr/cargo_embargo.json
+++ b/crates/cexpr/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/cfg-expr/.android-checksum.json b/crates/cfg-expr/.android-checksum.json
new file mode 100644
index 0000000..36ef4f5
--- /dev/null
+++ b/crates/cfg-expr/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"11148557dc8156477063442dc3e6503cecac8c91e287792b3e78023e15864592","Android.bp":"f33375f9af055a750480226efd1b0f7fda36e21726f51019a577184f31263a19","CHANGELOG.md":"84052200e936d66631baa52d6b76934739f1083c67813873ab5717fee68ac6bf","CODE_OF_CONDUCT.md":"0f727876648403a585c7d0ce804c33a0c2438a8ae9c9dd96dc24ce6da400e38e","CONTRIBUTING.md":"fd47205599c4407e80e72d55b9ec2d4b5375e678e99d7de4eb1d3d5a2b56e118","Cargo.lock":"51755e359ae4c8be7a2378c8ba9d756c287c79440227536cc664a316f91e9f90","Cargo.toml":"277c2ee008564ca284629987b4749fcbf70a4b1b7da52e91a0d6254564a54b3c","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"59ee649ae0a564e16c99a1e41808449fbce88dc89520e24e3973c56309ec2713","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"89f263b0e651edbdba2d0fea8fb23512b9e4d1767e5a5cb4a869ebc42d6f277f","cargo_embargo.json":"9a4b9e47683e1a6fc764b578f222c6271932aeb74af7bf217d239d47d3908f30","clippy.toml":"97fe73f35df134c39d3d3136d22c5fe9ff0b9025258d416ed905d21eb85cca34","deny.toml":"4f33b8f9462e77671142dd088bf5ef50b49bc5a4b7a34c728dc57e162d87135b","examples/eval.rs":"8529c6f78483e9174cf8683b4b019f2950942ed8c9d0171dcc543efbac5de773","release.toml":"85196414b9c7094d51e0d754da6231d64040be7ebe29293c318f4ef96fd9c253","src/error.rs":"1cd6a5e311f4ccfab8551e8695a0a7f592ff58878dda144cdf4d3e4a0a4743ee","src/expr.rs":"d2c8ad81f7fb519c4abbdc017b84785487b1c1079c21e3346cf287fccf5d1e25","src/expr/lexer.rs":"c2b8a8936c4e8d89959971c78521b9d91107b5e66e31982a7b99ae6be511cc76","src/expr/parser.rs":"3aca903e80d43bdbedde2f237810959d4a996e98c3871c9c817d186880837015","src/lib.rs":"f98a70502fd290cdc5101f0bba088a049a15f3896c569ac7e088a335e3a5fa6f","src/targets.rs":"c0defb8a02fa11777b8bf5fd2b7a102d09452f6f9257b88084dad075a7121b0c","src/targets/builtins.rs":"85d6a0c30549d65e32d9e6aeba118e98c3cae139153fe4755c0372188cb65597","tests/eval.rs":"ef8e1d3e9466866bdf5ab1e762422efe3c5a465970dcb520ef5b6c7a8728867b","tests/lexer.rs":"f83300910bec46002b424c063b03cdafb37796baa57d82717631484f3c2ba00f","tests/parser.rs":"06b22472b9a843d632dced49fb678610359a30a8b5eeb4c42f8e7380edd8caa1"}}
\ No newline at end of file
diff --git a/crates/cfg-expr/.cargo-checksum.json b/crates/cfg-expr/.cargo-checksum.json
new file mode 100644
index 0000000..3e8a19d
--- /dev/null
+++ b/crates/cfg-expr/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"a42325ebe05fe5abf3fc55145926ce5b1a1c0478700ea728ba00e37b05648d42","CODE_OF_CONDUCT.md":"ff8e424cc9ba55e10c0f83cda8bbd9034ffa6a299d589804292837aa7d50e098","CONTRIBUTING.md":"d6e246265d4ada5659a30e7c15969e65d740584b468327af3e8fec54b7206fb6","Cargo.lock":"ad4d04c203e435d9d65e0230c49387c919f679519163334bb92945d3c68cb424","Cargo.toml":"ec962f07fdf55f2d8f4201a885bea8832f37d750d807dcc409c0e5bb504f1554","LICENSE-APACHE":"8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90","LICENSE-MIT":"090a294a492ab2f41388252312a65cf2f0e423330b721a68c6665ac64766753b","README.md":"34214928b9314f1f49be335d827508e50bbc3c13da30cd8f34dcef3b3fb80e47","clippy.toml":"8d3aafbcf358ccf45cc148cd705f5fe71e777dabc391ed9a2bae32af73291fe8","deny.toml":"b7e686ed2f16b1c84a183dcc4fa9795c67be96a9f8e54db73b95ae58d4b76479","examples/eval.rs":"e50e4f4e6d9d0a774acde0b8dff8e2959f521091ba2d7429bab9dc81c1a5fd0a","release.toml":"42df748d28abd726fa155a29102da0c7ac006dfb601f6bdebfc169049b0ca535","src/error.rs":"84a7e090516840559289a458ff5152bc97c9ee4c75830ceaec89c158e5e2a17b","src/expr.rs":"e9f18e10acd0091e3c19576911c6288f956957e8e7da0d019cc28d25d278749f","src/expr/lexer.rs":"940031cc16cfe3c27cdac7fe3fb5401b35c19945907bfce538075a4ec56c9677","src/expr/parser.rs":"0f883167f8926b178538d745deee9e123da55d11fbd44293036ee0d042b5cf44","src/lib.rs":"402bafa0ad10fb53869dfbe7e5dab9fc9e4883587ccb3d37f7682301958df89c","src/targets.rs":"2118f166f08b6789031f503a3430e7f31eed6c1105ac3188751eae214c85fe86","src/targets/builtins.rs":"79c7af3e9892db0c98cc92ecea158da8081a3c4b6ee124f36ffd62b742c61bf5","tests/eval.rs":"b88e11a3f1f8b1dbad0dd1013177607a1f8cae656e36763e831953d861a289a6","tests/lexer.rs":"55109f29f4f3e257e969b53ee7823aeb50212abebbc55d1a67d7393ea42ce80b","tests/parser.rs":"466f77b150fe39eb89db3a157f26431b9367e872630fe213be75f9ffd8177e03"},"package":"1a2b34126159980f92da2a08bdec0694fd80fb5eb9e48aff25d20a0d8dfa710d"}
\ No newline at end of file
diff --git a/crates/cfg-expr/Android.bp b/crates/cfg-expr/Android.bp
new file mode 100644
index 0000000..d7937ee
--- /dev/null
+++ b/crates/cfg-expr/Android.bp
@@ -0,0 +1,33 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_cfg-expr_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_cfg-expr_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libcfg_expr",
+ host_supported: true,
+ crate_name: "cfg_expr",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.18.0",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ features: ["default"],
+ rustlibs: ["libsmallvec"],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/cfg-expr/CHANGELOG.md b/crates/cfg-expr/CHANGELOG.md
new file mode 100644
index 0000000..08dbd5b
--- /dev/null
+++ b/crates/cfg-expr/CHANGELOG.md
@@ -0,0 +1,233 @@
+<!-- markdownlint-disable blanks-around-headings blanks-around-lists no-duplicate-heading -->
+
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+## [0.18.0] - 2025-02-20
+### Changed
+- [PR#77](https://github.com/EmbarkStudios/cfg-expr/pull/77) updated the builtin target list to 1.84.1 and 1.85.0.
+
+## [0.17.2] - 2024-11-29
+### Changed
+- [PR#76](https://github.com/EmbarkStudios/cfg-expr/pull/76) updated the builtin target list to 1.83.0.
+
+## [0.17.1] - 2024-11-15
+### Changed
+- [PR#75](https://github.com/EmbarkStudios/cfg-expr/pull/75) updated the builtin target list to 1.82.0.
+
+## [0.17.0] - 2024-09-05
+### Changed
+- [PR#74](https://github.com/EmbarkStudios/cfg-expr/pull/74) updated the builtin target list to 1.81.0.
+
+## [0.16.0] - 2024-07-29
+### Changed
+- [PR#70](https://github.com/EmbarkStudios/cfg-expr/pull/70) updated the builtin target list to 1.80.0. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.15.8] - 2024-04-10
+### Changed
+- [PR#69](https://github.com/EmbarkStudios/cfg-expr/pull/69) updated the builtin target list to 1.77.2.
+
+## [0.15.7] - 2024-02-09
+### Changed
+- [PR#67](https://github.com/EmbarkStudios/cfg-expr/pull/67) updated the builtin target list to 1.76.0.
+
+## [0.15.6] - 2024-01-02
+### Changed
+- [PR#66](https://github.com/EmbarkStudios/cfg-expr/pull/66) updated the builtin target list to 1.75.0.
+
+## [0.15.5] - 2023-09-08
+### Changed
+- [PR#64](https://github.com/EmbarkStudios/cfg-expr/pull/64) updated the builtin target list to 1.72.0. It also changed the MSRV to 1.70.0.
+
+## [0.15.4] - 2023-07-28
+### Changed
+- [PR#62](https://github.com/EmbarkStudios/cfg-expr/pull/62) updated the builtin target list to 1.71.0.
+
+## [0.15.3] - 2023-06-19
+### Fixed
+- [PR#61](https://github.com/EmbarkStudios/cfg-expr/pull/61) fixed an issue where `target_os = "none"` was not matching target triplets where `os = None`. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.15.2] - 2023-06-02
+### Changed
+- [PR#59](https://github.com/EmbarkStudios/cfg-expr/pull/60) updated the builtin target list to 1.70.0.
+
+## [0.15.1] - 2023-04-20
+### Changed
+- [PR#59](https://github.com/EmbarkStudios/cfg-expr/pull/59) updated the builtin target list to 1.69.0.
+
+## [0.15.0] - 2023-04-04
+### Changed
+- [PR#58](https://github.com/EmbarkStudios/cfg-expr/pull/58) updated the builtin target list to 1.68.2.
+
+## [0.14.0] - 2023-01-27
+### Changed
+- [PR#57](https://github.com/EmbarkStudios/cfg-expr/pull/57) updated the builtin target list to 1.67.0.
+
+## [0.13.0] - 2022-12-19
+### Changed
+- [PR#56](https://github.com/EmbarkStudios/cfg-expr/pull/56) updated the builtin target list to 1.66.0. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.12.0] - 2022-11-07
+### Changed
+- [PR#53](https://github.com/EmbarkStudios/cfg-expr/pull/53) updated the builtin target list to 1.65.0. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+### Added
+- [PR#54](https://github.com/EmbarkStudios/cfg-expr/pull/54) added support for `abi`, which is currently nightly only, but should have no affect on stable. Thanks [@carols10cents](https://github.com/carols10cents)!
+
+## [0.11.0] - 2022-09-27
+### Changed
+- [PR#51](https://github.com/EmbarkStudios/cfg-expr/pull/51) updated the builtin target list to 1.64.0. Thanks [@sunshowers](https://github.com/sunshowers)!
+- [PR#51](https://github.com/EmbarkStudios/cfg-expr/pull/51) bumped the MSRV to 1.58.0.
+
+## [0.10.3] - 2022-05-19
+### Added
+- [PR#49](https://github.com/EmbarkStudios/cfg-expr/pull/49) added support for the `has_target_atomic = "<ptr | integer>"` and `panic = "<strategy>"` predicates. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.10.2] - 2022-02-25
+### Changed
+- [PR#48](https://github.com/EmbarkStudios/cfg-expr/pull/48) updated the builtin target list to 1.59.0.
+
+## [0.10.1] - 2022-02-07
+### Fixed
+- [PR#46](https://github.com/EmbarkStudios/cfg-expr/pull/46) fixed comparison of dynamic target families.
+
+## [0.10.0] - 2022-02-04
+### Changed
+- [PR#44](https://github.com/EmbarkStudios/cfg-expr/pull/44) added support for multiple target families that are available from Rust 1.58.0+. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.9.1] - 2022-02-01
+### Changed
+- [PR#42](https://github.com/EmbarkStudios/cfg-expr/pull/42) updated the builtin target list to 1.58.0. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.9.0] - 2021-08-31
+### Changed
+- [PR#35](https://github.com/EmbarkStudios/cfg-expr/pull/35) changed `TargetInfo`, `Os`, `Arch`, `Env`, and `Vendor` to use a `Cow<'static, str>` to avoid the need for lifetime parameters for the common case of statically known target information, but still support arbitrary/future variants. Thanks [@sunshowers](https://github.com/sunshowers)!
+- [PR#38](https://github.com/EmbarkStudios/cfg-expr/pull/38) updated the built-in target list to `1.54.0`, which notably includes the addition of the new `wasm` variant to `target_family`. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+### Fixed
+- [PR#33](https://github.com/EmbarkStudios/cfg-expr/pull/33) added clippy.toml with an `msrv` so clippy lints are consistent across environments. Thanks [@remilauzier](https://github.com/remilauzier)!
+
+## [0.8.1] - 2021-08-05
+### Changed
+- [PR#31](https://github.com/EmbarkStudios/cfg-expr/pull/31) reverted the usage of "or patterns" that were only added in 1.53.0. We now state the MSRV as 1.52.0. Thanks [@cgwalters](https://github.com/cgwalters)!
+
+## [0.8.0] - 2021-07-16
+### Changed
+- [PR#28](https://github.com/EmbarkStudios/cfg-expr/pull/28) updated target-lexicon to 0.12. Thanks [@remilauzier](https://github.com/remilauzier)!
+- [PR#29](https://github.com/EmbarkStudios/cfg-expr/pull/29) updated the built-in target list to 1.53.0.
+
+## [0.7.4] - 2021-03-16
+### Added
+- [PR#26](https://github.com/EmbarkStudios/cfg-expr/pull/26) added `Expression::original` to get the original string the expression was parsed from. Thanks [@gdesmott](https://github.com/gdesmott)!
+
+## [0.7.3] - 2021-03-16
+### Added
+- [PR#25](https://github.com/EmbarkStudios/cfg-expr/pull/25) added `Clone` for `Expression`. Thanks [@gdesmott](https://github.com/gdesmott)!
+
+## [0.7.2] - 2021-03-16
+### Added
+- [PR#23](https://github.com/EmbarkStudios/cfg-expr/pull/23) added a `PartialEq` implementation for `Expression`, primarily for cases where an `Expression` is stored in a type that itself requires `PartialEq`. This is only a simple syntactical equality check. Thanks [@gdesmott](https://github.com/gdesmott)!
+
+## [0.7.1] - 2021-02-17
+### Fixed
+- Fixed support for the `uclibceabi` environment added for one target in rust 1.50.0.
+
+## [0.7.0] - 2021-02-12
+### Changed
+- Updated the builtin target list to Rust 1.50.0. Again, somewhat of a breaking change as many targets were removed or changed.
+
+### Fixed
+- Update smallvec to fix an [advisory](https://rustsec.org/advisories/RUSTSEC-2021-0003)
+
+## [0.6.0] - 2021-01-04
+### Changed
+- Updated the builtin target list to Rust 1.49.0, this is somewhat of a breaking change, as rustc now considers all `android` targets to have the `gnu` environment, where previously, it was unspecified.
+
+## [0.5.1] - 2020-12-15
+### Changed
+- Updated the builtin target list to Rust 1.48.0
+
+## [0.5.0] - 2020-10-20
+### Changed
+- Updated the builtin target list to Rust 1.47.0
+
+## [0.4.1] - 2020-06-04
+### Fixed
+- Removed `dbg!` prints accidentally left in.
+
+## [0.4.0] - 2020-06-04
+### Added
+- [PR#9](https://github.com/EmbarkStudios/cfg-expr/pull/9) added the optional `targets` feature, which allows matching the various `target_` predicates against a [`target_lexicon::Triple`](https://docs.rs/target-lexicon/0.11.0/target_lexicon/struct.Triple.html).
+
+### Changed
+- [PR#9](https://github.com/EmbarkStudios/cfg-expr/pull/9) changed the `Arch`, `Vendor`, `Os`, and `Env` types to not be longer enums, and are instead thin wrappers around strings. This allows for custom targets where one or more components of the target triple are not built-in to rustc. Resolved [#8](https://github.com/EmbarkStudios/cfg-expr/issues/8).
+- Changed `ParseError` to remove the lifetime and just keep an owned string of the expression that failed to parse.
+- Updated the list of built-in rustc targets to 1.43.1.
+
+## [0.3.0] - 2020-04-05
+### Changed
+- [PR#7](https://github.com/EmbarkStudios/cfg-expr/pull/7) changed `Expression::eval` to take a `Logic` trait, to enable evaluation of 'unknown' predicates. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.2.1] - 2020-03-30
+### Fixed
+- [PR#6](https://github.com/EmbarkStudios/cfg-expr/pull/6) fixed nested predicate evaluation. Thanks [@sunshowers](https://github.com/sunshowers)!
+
+## [0.2.0] - 2020-02-05
+### Added
+- Added `targets::rustc_version` which can be used to retrieve the version string of the rustc used to generate the list of targets.
+
+### Changed
+- `targets::ALL` now uses the built-in targets for rustc 1.41.0
+
+## [0.1.0] - 2020-01-09
+### Added
+- Initial add of all the things
+
+<!-- next-url -->
+[Unreleased]: https://github.com/EmbarkStudios/cfg-expr/compare/0.18.0...HEAD
+[0.18.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.17.2...0.18.0
+[0.17.2]: https://github.com/EmbarkStudios/cfg-expr/compare/0.17.1...0.17.2
+[0.17.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.17.0...0.17.1
+[0.17.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.16.0...0.17.0
+[0.16.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.8...0.16.0
+[0.15.8]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.7...0.15.8
+[0.15.7]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.6...0.15.7
+[0.15.6]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.5...0.15.6
+[0.15.5]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.4...0.15.5
+[0.15.4]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.3...0.15.4
+[0.15.3]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.2...0.15.3
+[0.15.2]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.1...0.15.2
+[0.15.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.15.0...0.15.1
+[0.15.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.14.0...0.15.0
+[0.14.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.13.0...0.14.0
+[0.13.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.12.0...0.13.0
+[0.12.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.11.0...0.12.0
+[0.11.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.10.3...0.11.0
+[0.10.3]: https://github.com/EmbarkStudios/cfg-expr/compare/0.10.2...0.10.3
+[0.10.2]: https://github.com/EmbarkStudios/cfg-expr/compare/0.10.1...0.10.2
+[0.10.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.10.0...0.10.1
+[0.10.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.9.1...0.10.0
+[0.9.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.9.0...0.9.1
+[0.9.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.8.1...0.9.0
+[0.8.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.8.0...0.8.1
+[0.8.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.7.4...0.8.0
+[0.7.4]: https://github.com/EmbarkStudios/cfg-expr/compare/0.7.3...0.7.4
+[0.7.3]: https://github.com/EmbarkStudios/cfg-expr/compare/0.7.2...0.7.3
+[0.7.2]: https://github.com/EmbarkStudios/cfg-expr/compare/0.7.1...0.7.2
+[0.7.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.7.0...0.7.1
+[0.7.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.6.0...0.7.0
+[0.6.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.5.1...0.6.0
+[0.5.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.5.0...0.5.1
+[0.5.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.4.1...0.5.0
+[0.4.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.4.0...0.4.1
+[0.4.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.3.0...0.4.0
+[0.3.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.2.1...0.3.0
+[0.2.1]: https://github.com/EmbarkStudios/cfg-expr/compare/0.2.0...0.2.1
+[0.2.0]: https://github.com/EmbarkStudios/cfg-expr/compare/0.1.0...0.2.0
+[0.1.0]: https://github.com/EmbarkStudios/cfg-expr/releases/tag/0.1.0
diff --git a/crates/cfg-expr/CODE_OF_CONDUCT.md b/crates/cfg-expr/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..7c5c859
--- /dev/null
+++ b/crates/cfg-expr/CODE_OF_CONDUCT.md
@@ -0,0 +1,132 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
[email protected].
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
+at [https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
+[Mozilla CoC]: https://github.com/mozilla/diversity
+[FAQ]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
diff --git a/crates/cfg-expr/CONTRIBUTING.md b/crates/cfg-expr/CONTRIBUTING.md
new file mode 100644
index 0000000..a68b5c7
--- /dev/null
+++ b/crates/cfg-expr/CONTRIBUTING.md
@@ -0,0 +1,69 @@
+# Embark Contributor Guidelines
+
+Welcome! This project is created by the team at [Embark Studios](https://embark.games). We're glad you're interested in contributing! We welcome contributions from people of all backgrounds who are interested in making great software with us.
+
+At Embark, we aspire to empower everyone to create interactive experiences. To do this, we're exploring and pushing the boundaries of new technologies, and sharing our learnings with the open source community.
+
+If you have ideas for collaboration, email us at [email protected].
+
+We're also hiring full-time engineers to work with us in Stockholm! Check out our current job postings [here](https://embark.games/careers).
+
+## Issues
+
+### Feature Requests
+
+If you have ideas or how to improve our projects, you can suggest features by opening a GitHub issue. Make sure to include details about the feature or change, and describe any uses cases it would enable.
+
+Feature requests will be tagged as `enhancement` and their status will be updated in the comments of the issue.
+
+### Bugs
+
+When reporting a bug or unexpected behaviour in a project, make sure your issue describes steps to reproduce the behaviour, including the platform you were using, what steps you took, and any error messages.
+
+Reproducible bugs will be tagged as `bug` and their status will be updated in the comments of the issue.
+
+### Wontfix
+
+Issues will be closed and tagged as `wontfix` if we decide that we do not wish to implement it, usually due to being misaligned with the project vision or out of scope. We will comment on the issue with more detailed reasoning.
+
+## Contribution Workflow
+
+### Open Issues
+
+If you're ready to contribute, start by looking at our open issues tagged as [`help wanted`](../../issues?q=is%3Aopen+is%3Aissue+label%3A"help+wanted") or [`good first issue`](../../issues?q=is%3Aopen+is%3Aissue+label%3A"good+first+issue").
+
+You can comment on the issue to let others know you're interested in working on it or to ask questions.
+
+### Making Changes
+
+1. Fork the repository.
+
+2. Create a new feature branch.
+
+3. Make your changes. Ensure that there are no build errors by running the project with your changes locally.
+
+4. Open a pull request with a name and description of what you did. You can read more about working with pull requests on GitHub [here](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork).
+
+5. A maintainer will review your pull request and may ask you to make changes.
+
+## Code Guidelines
+
+### Rust
+
+You can read about our standards and recommendations for working with Rust [here](https://github.com/EmbarkStudios/rust-ecosystem/blob/master/guidelines.md).
+
+### Python
+
+We recommend following [PEP8 conventions](https://www.python.org/dev/peps/pep-0008/) when working with Python modules.
+
+### JavaScript
+
+We follow the [AirBnB JavaScript style guide](https://github.com/airbnb/javascript). You can find the ESLint configuration in relevant repositories.
+
+## Licensing
+
+Unless otherwise specified, all Embark open source projects are licensed under a dual MIT OR Apache-2.0 license, allowing licensees to choose either at their option. You can read more in each project's respective README.
+
+## Code of Conduct
+
+Please note that our projects are released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md) to ensure that they are welcoming places for everyone to contribute. By participating in any Embark open source project, you agree to abide by these terms.
diff --git a/crates/cfg-expr/Cargo.lock b/crates/cfg-expr/Cargo.lock
new file mode 100644
index 0000000..6ef46ce
--- /dev/null
+++ b/crates/cfg-expr/Cargo.lock
@@ -0,0 +1,231 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "bstr"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.18.0"
+dependencies = [
+ "similar-asserts",
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "libc"
+version = "0.2.158"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+
+[[package]]
+name = "serde"
+version = "1.0.209"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.209"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "similar"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
+dependencies = [
+ "bstr",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "similar-asserts"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e"
+dependencies = [
+ "console",
+ "similar",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "syn"
+version = "2.0.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
diff --git a/crates/cfg-expr/Cargo.toml b/crates/cfg-expr/Cargo.toml
new file mode 100644
index 0000000..ccc7bfc
--- /dev/null
+++ b/crates/cfg-expr/Cargo.toml
@@ -0,0 +1,72 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.70.0"
+name = "cfg-expr"
+version = "0.18.0"
+authors = [
+ "Embark <[email protected]>",
+ "Jake Shadle <[email protected]>",
+]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A parser and evaluator for Rust `cfg()` expressions."
+homepage = "https://github.com/EmbarkStudios/cfg-expr"
+documentation = "https://docs.rs/cfg-expr"
+readme = "README.md"
+keywords = [
+ "cargo",
+ "rustc",
+ "cfg",
+]
+categories = ["parser-implementations"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/EmbarkStudios/cfg-expr"
+
+[features]
+default = []
+targets = ["target-lexicon"]
+
+[lib]
+name = "cfg_expr"
+path = "src/lib.rs"
+
+[[example]]
+name = "eval"
+path = "examples/eval.rs"
+
+[[test]]
+name = "eval"
+path = "tests/eval.rs"
+
+[[test]]
+name = "lexer"
+path = "tests/lexer.rs"
+
+[[test]]
+name = "parser"
+path = "tests/parser.rs"
+
+[dependencies.smallvec]
+version = "1.8"
+
+[dependencies.target-lexicon]
+version = "=0.13.2"
+optional = true
+
+[dev-dependencies.similar-asserts]
+version = "1.1"
diff --git a/crates/cfg-expr/LICENSE b/crates/cfg-expr/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/cfg-expr/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/cfg-expr/LICENSE-APACHE b/crates/cfg-expr/LICENSE-APACHE
new file mode 100644
index 0000000..11069ed
--- /dev/null
+++ b/crates/cfg-expr/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/crates/cfg-expr/METADATA b/crates/cfg-expr/METADATA
new file mode 100644
index 0000000..e77cd9b
--- /dev/null
+++ b/crates/cfg-expr/METADATA
@@ -0,0 +1,17 @@
+name: "cfg-expr"
+description: "A parser and evaluator for Rust `cfg()` expressions."
+third_party {
+ version: "0.18.0"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 19
+ }
+ homepage: "https://crates.io/crates/cfg-expr"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/cfg-expr/cfg-expr-0.18.0.crate"
+ version: "0.18.0"
+ }
+}
diff --git a/crates/cfg-expr/MODULE_LICENSE_APACHE2 b/crates/cfg-expr/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/cfg-expr/MODULE_LICENSE_APACHE2
diff --git a/crates/cfg-expr/README.md b/crates/cfg-expr/README.md
new file mode 100644
index 0000000..ee4c548
--- /dev/null
+++ b/crates/cfg-expr/README.md
@@ -0,0 +1,113 @@
+<!-- markdownlint-disable no-inline-html first-line-heading -->
+
+<div align="center">
+
+# `⚙️ cfg-expr`
+
+**A parser and evaluator for Rust `cfg()` expressions. Builtin targets as of [1.85.0] are supported.**
+
+[](https://github.com/EmbarkStudios/cfg-expr/actions?workflow=CI)
+[](https://crates.io/crates/cfg-expr)
+[](https://docs.rs/cfg-expr)
+[](https://blog.rust-lang.org/2023/06/01/Rust-1.70.0.html)
+[](https://forge.rust-lang.org/release/platform-support.html)
+[](CODE_OF_CONDUCT.md)
+[](https://embark.dev)
+</div>
+
+## Alternatives
+
+- [cargo-platform](https://crates.io/crates/cargo-platform)
+- [parse_cfg](https://crates.io/crates/parse_cfg)
+
+## Usage
+
+`cfg-expr` is a crate that can be used to parse and evaluate Rust `cfg()` expressions, both as declarable in Rust code itself, as well in cargo manifests' `[target.'cfg()'.dependencies]` sections.
+
+It contains a list of all builtin targets known to rustc as of [1.85.0] that can be used to determine if a particular cfg expression is satisfiable.
+
+```rust
+use cfg_expr::{targets::get_builtin_target_by_triple, Expression, Predicate};
+
+let specific = Expression::parse(
+ r#"all(
+ target_os = "windows",
+ target_arch = "x86",
+ windows,
+ target_env = "msvc",
+ target_feature = "fxsr",
+ target_feature = "sse",
+ target_feature = "sse2",
+ target_pointer_width = "32",
+ target_endian = "little",
+ not(target_vendor = "uwp"),
+ feature = "cool_thing",
+ )"#,
+).unwrap();
+
+// cfg_expr includes a list of every builtin target in rustc
+let x86_win = get_builtin_target_by_triple("i686-pc-windows-msvc").unwrap();
+let x86_pentium_win = get_builtin_target_by_triple("i586-pc-windows-msvc").unwrap();
+let uwp_win = get_builtin_target_by_triple("i686-uwp-windows-msvc").unwrap();
+let mac = get_builtin_target_by_triple("x86_64-apple-darwin").unwrap();
+
+let avail_target_feats = ["fxsr", "sse", "sse2"];
+
+// This will satisfy all requirements
+assert!(specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(x86_win),
+ Predicate::TargetFeature(feat) => avail_target_feats.contains(feat),
+ Predicate::Feature(feat) => *feat == "cool_thing",
+ _ => false,
+ }
+}));
+
+// This won't, it doesn't have the cool_thing feature!
+assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(x86_pentium_win),
+ Predicate::TargetFeature(feat) => avail_target_feats.contains(feat),
+ _ => false,
+ }
+}));
+
+// This will *not* satisfy the vendor predicate
+assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(uwp_win),
+ Predicate::TargetFeature(feat) => avail_target_feats.contains(feat),
+ _ => false,
+ }
+}));
+
+// This will *not* satisfy the vendor, os, or env predicates
+assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(mac),
+ Predicate::TargetFeature(feat) => avail_target_feats.contains(feat),
+ _ => false,
+ }
+}));
+```
+
+## Contributing
+
+We welcome community contributions to this project.
+
+Please read our [Contributor Guide](CONTRIBUTING.md) for more information on how to get started.
+
+## License
+
+Licensed under either of
+
+- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
+- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
+
+[1.85.0]: (https://forge.rust-lang.org/release/platform-support.html)
diff --git a/crates/cfg-expr/cargo_embargo.json b/crates/cfg-expr/cargo_embargo.json
new file mode 100644
index 0000000..8f777be
--- /dev/null
+++ b/crates/cfg-expr/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
diff --git a/crates/cfg-expr/clippy.toml b/crates/cfg-expr/clippy.toml
new file mode 100644
index 0000000..cda8d17
--- /dev/null
+++ b/crates/cfg-expr/clippy.toml
@@ -0,0 +1 @@
+avoid-breaking-exported-api = false
diff --git a/crates/cfg-expr/deny.toml b/crates/cfg-expr/deny.toml
new file mode 100644
index 0000000..3228869
--- /dev/null
+++ b/crates/cfg-expr/deny.toml
@@ -0,0 +1,25 @@
+[advisories]
+vulnerability = "deny"
+unmaintained = "deny"
+notice = "deny"
+ignore = [
+]
+
+[bans]
+multiple-versions = "deny"
+
+[sources]
+unknown-registry = "deny"
+unknown-git = "deny"
+
+[licenses]
+unlicensed = "deny"
+allow-osi-fsf-free = "neither"
+copyleft = "deny"
+# We want really high confidence when inferring licenses from text
+confidence-threshold = 0.93
+allow = [
+ "Apache-2.0",
+ "Apache-2.0 WITH LLVM-exception",
+ "MIT",
+]
diff --git a/crates/cfg-expr/examples/eval.rs b/crates/cfg-expr/examples/eval.rs
new file mode 100644
index 0000000..a3f17b8
--- /dev/null
+++ b/crates/cfg-expr/examples/eval.rs
@@ -0,0 +1,65 @@
+use cfg_expr::{targets::get_builtin_target_by_triple, Expression, Predicate};
+
+fn main() {
+ let specific = Expression::parse(
+ r#"all(
+ target_os = "windows",
+ target_arch = "x86",
+ windows,
+ target_env = "msvc",
+ target_feature = "fxsr",
+ target_feature = "sse",
+ target_feature = "sse2",
+ target_pointer_width = "32",
+ target_endian = "little",
+ not(target_vendor = "uwp"),
+ feature = "cool_thing",
+ )"#,
+ )
+ .unwrap();
+
+ // cfg_expr includes a list of every builtin target in rustc
+ let x86_win = get_builtin_target_by_triple("i686-pc-windows-msvc").unwrap();
+ let x86_pentium_win = get_builtin_target_by_triple("i586-pc-windows-msvc").unwrap();
+ let uwp_win = get_builtin_target_by_triple("i686-uwp-windows-msvc").unwrap();
+ let mac = get_builtin_target_by_triple("x86_64-apple-darwin").unwrap();
+
+ let avail_targ_feats = ["fxsr", "sse", "sse2"];
+
+ // This will satisfy all requirements
+ assert!(specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(x86_win),
+ Predicate::TargetFeature(feat) => avail_targ_feats.contains(feat),
+ Predicate::Feature(feat) => *feat == "cool_thing",
+ _ => false,
+ }
+ }));
+
+ // This won't, it doesnt' have the cool_thing feature!
+ assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(x86_pentium_win),
+ Predicate::TargetFeature(feat) => avail_targ_feats.contains(feat),
+ _ => false,
+ }
+ }));
+
+ // This will *not* satisfy the vendor predicate
+ assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(uwp_win),
+ Predicate::TargetFeature(feat) => avail_targ_feats.contains(feat),
+ _ => false,
+ }
+ }));
+
+ // This will *not* satisfy the vendor, os, or env predicates
+ assert!(!specific.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(mac),
+ Predicate::TargetFeature(feat) => avail_targ_feats.contains(feat),
+ _ => false,
+ }
+ }));
+}
diff --git a/crates/cfg-expr/release.toml b/crates/cfg-expr/release.toml
new file mode 100644
index 0000000..c018831
--- /dev/null
+++ b/crates/cfg-expr/release.toml
@@ -0,0 +1,10 @@
+pre-release-commit-message = "Release {{version}}"
+tag-message = "Release {{version}}"
+tag-name = "{{version}}"
+pre-release-replacements = [
+ { file = "CHANGELOG.md", search = "Unreleased", replace = "{{version}}" },
+ { file = "CHANGELOG.md", search = "\\.\\.\\.HEAD", replace = "...{{tag_name}}" },
+ { file = "CHANGELOG.md", search = "ReleaseDate", replace = "{{date}}" },
+ { file = "CHANGELOG.md", search = "<!-- next-header -->", replace = "<!-- next-header -->\n## [Unreleased] - ReleaseDate" },
+ { file = "CHANGELOG.md", search = "<!-- next-url -->", replace = "<!-- next-url -->\n[Unreleased]: https://github.com/EmbarkStudios/cfg-expr/compare/{{tag_name}}...HEAD" },
+]
diff --git a/crates/cfg-expr/src/error.rs b/crates/cfg-expr/src/error.rs
new file mode 100644
index 0000000..87cd11d
--- /dev/null
+++ b/crates/cfg-expr/src/error.rs
@@ -0,0 +1,149 @@
+use std::{error::Error, fmt};
+
+/// An error related to parsing of a cfg expression
+#[derive(Debug, PartialEq, Eq)]
+pub struct ParseError {
+ /// The string that was parsed
+ pub original: String,
+ /// The range of characters in the original string that result
+ /// in this error
+ pub span: std::ops::Range<usize>,
+ /// The specific reason for the error
+ pub reason: Reason,
+}
+
+/// The particular reason for a `ParseError`
+#[derive(Debug, PartialEq, Eq)]
+pub enum Reason {
+ /// `not()` takes exactly 1 predicate, unlike `all()` and `any()`
+ InvalidNot(usize),
+ /// The characters are not valid in an cfg expression
+ InvalidCharacters,
+ /// An opening parens was unmatched with a closing parens
+ UnclosedParens,
+ /// A closing parens was unmatched with an opening parens
+ UnopenedParens,
+ /// An opening quotes was unmatched with a closing quotes
+ UnclosedQuotes,
+ /// A closing quotes was unmatched with an opening quotes
+ UnopenedQuotes,
+ /// The expression does not contain any valid terms
+ Empty,
+ /// Found an unexpected term, which wasn't one of the expected terms that
+ /// is listed
+ Unexpected(&'static [&'static str]),
+ /// Failed to parse an integer value
+ InvalidInteger,
+ /// The root `cfg()` may only contain a single predicate
+ MultipleRootPredicates,
+ /// A `target_has_atomic` predicate didn't correctly parse.
+ InvalidHasAtomic,
+ /// An element was not part of the builtin information in rustc
+ UnknownBuiltin,
+}
+
+impl fmt::Display for ParseError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(&self.original)?;
+ f.write_str("\n")?;
+
+ for _ in 0..self.span.start {
+ f.write_str(" ")?;
+ }
+
+ // Mismatched parens/quotes have a slightly different output
+ // than the other errors
+ match &self.reason {
+ r @ (Reason::UnclosedParens | Reason::UnclosedQuotes) => {
+ f.write_fmt(format_args!("- {r}"))
+ }
+ r @ (Reason::UnopenedParens | Reason::UnopenedQuotes) => {
+ f.write_fmt(format_args!("^ {r}"))
+ }
+ other => {
+ for _ in self.span.start..self.span.end {
+ f.write_str("^")?;
+ }
+
+ f.write_fmt(format_args!(" {other}"))
+ }
+ }
+ }
+}
+
+impl fmt::Display for Reason {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ use Reason::{
+ Empty, InvalidCharacters, InvalidHasAtomic, InvalidInteger, InvalidNot,
+ MultipleRootPredicates, UnclosedParens, UnclosedQuotes, Unexpected, UnknownBuiltin,
+ UnopenedParens, UnopenedQuotes,
+ };
+
+ match self {
+ InvalidCharacters => f.write_str("invalid character(s)"),
+ UnclosedParens => f.write_str("unclosed parens"),
+ UnopenedParens => f.write_str("unopened parens"),
+ UnclosedQuotes => f.write_str("unclosed quotes"),
+ UnopenedQuotes => f.write_str("unopened quotes"),
+ Empty => f.write_str("empty expression"),
+ Unexpected(expected) => {
+ if expected.len() > 1 {
+ f.write_str("expected one of ")?;
+
+ for (i, exp) in expected.iter().enumerate() {
+ f.write_fmt(format_args!("{}`{exp}`", if i > 0 { ", " } else { "" }))?;
+ }
+ f.write_str(" here")
+ } else if !expected.is_empty() {
+ f.write_fmt(format_args!("expected a `{}` here", expected[0]))
+ } else {
+ f.write_str("the term was not expected here")
+ }
+ }
+ InvalidNot(np) => f.write_fmt(format_args!("not() takes 1 predicate, found {np}")),
+ InvalidInteger => f.write_str("invalid integer"),
+ MultipleRootPredicates => f.write_str("multiple root predicates"),
+ InvalidHasAtomic => f.write_str("expected integer or \"ptr\""),
+ UnknownBuiltin => f.write_str("unknown built-in"),
+ }
+ }
+}
+
+impl Error for ParseError {
+ fn description(&self) -> &str {
+ use Reason::{
+ Empty, InvalidCharacters, InvalidHasAtomic, InvalidInteger, InvalidNot,
+ MultipleRootPredicates, UnclosedParens, UnclosedQuotes, Unexpected, UnknownBuiltin,
+ UnopenedParens, UnopenedQuotes,
+ };
+
+ match self.reason {
+ InvalidCharacters => "invalid character(s)",
+ UnclosedParens => "unclosed parens",
+ UnopenedParens => "unopened parens",
+ UnclosedQuotes => "unclosed quotes",
+ UnopenedQuotes => "unopened quotes",
+ Empty => "empty expression",
+ Unexpected(_) => "unexpected term",
+ InvalidNot(_) => "not() takes 1 predicate",
+ InvalidInteger => "invalid integer",
+ MultipleRootPredicates => "multiple root predicates",
+ InvalidHasAtomic => "expected integer or \"ptr\"",
+ UnknownBuiltin => "unknown built-in",
+ }
+ }
+}
+
+/// Error parsing a `target_has_atomic` predicate.
+#[derive(Clone, Debug, Eq, PartialEq)]
+pub struct HasAtomicParseError {
+ pub(crate) input: String,
+}
+
+impl fmt::Display for HasAtomicParseError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "expected integer or \"ptr\", found {}", self.input)
+ }
+}
+
+impl Error for HasAtomicParseError {}
diff --git a/crates/cfg-expr/src/expr.rs b/crates/cfg-expr/src/expr.rs
new file mode 100644
index 0000000..b60ef74
--- /dev/null
+++ b/crates/cfg-expr/src/expr.rs
@@ -0,0 +1,805 @@
+pub mod lexer;
+mod parser;
+
+use smallvec::SmallVec;
+use std::ops::Range;
+
+/// A predicate function, used to combine 1 or more predicates
+/// into a single value
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone)]
+pub enum Func {
+ /// `not()` with a configuration predicate. It is true if its predicate
+ /// is false and false if its predicate is true.
+ Not,
+ /// `all()` with a comma separated list of configuration predicates. It
+ /// is false if at least one predicate is false. If there are no predicates,
+ /// it is true.
+ ///
+ /// The associated `usize` is the number of predicates inside the `all()`.
+ All(usize),
+ /// `any()` with a comma separated list of configuration predicates. It
+ /// is true if at least one predicate is true. If there are no predicates,
+ /// it is false.
+ ///
+ /// The associated `usize` is the number of predicates inside the `any()`.
+ Any(usize),
+}
+
+use crate::targets as targ;
+
+/// All predicates that pertains to a target, except for `target_feature`
+#[derive(Clone, PartialEq, Eq, Debug)]
+pub enum TargetPredicate {
+ /// [target_abi](https://github.com/rust-lang/rust/issues/80970)
+ Abi(targ::Abi),
+ /// [target_arch](https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch)
+ Arch(targ::Arch),
+ /// [target_endian](https://doc.rust-lang.org/reference/conditional-compilation.html#target_endian)
+ Endian(targ::Endian),
+ /// [target_env](https://doc.rust-lang.org/reference/conditional-compilation.html#target_env)
+ Env(targ::Env),
+ /// [target_family](https://doc.rust-lang.org/reference/conditional-compilation.html#target_family)
+ /// This also applies to the bare [`unix` and `windows`](https://doc.rust-lang.org/reference/conditional-compilation.html#unix-and-windows)
+ /// predicates.
+ Family(targ::Family),
+ /// [target_has_atomic](https://doc.rust-lang.org/reference/conditional-compilation.html#target_has_atomic).
+ HasAtomic(targ::HasAtomic),
+ /// [target_os](https://doc.rust-lang.org/reference/conditional-compilation.html#target_os)
+ Os(targ::Os),
+ /// [panic](https://doc.rust-lang.org/reference/conditional-compilation.html#panic)
+ Panic(targ::Panic),
+ /// [target_pointer_width](https://doc.rust-lang.org/reference/conditional-compilation.html#target_pointer_width)
+ PointerWidth(u8),
+ /// [target_vendor](https://doc.rust-lang.org/reference/conditional-compilation.html#target_vendor)
+ Vendor(targ::Vendor),
+}
+
+pub trait TargetMatcher {
+ fn matches(&self, tp: &TargetPredicate) -> bool;
+}
+
+impl TargetMatcher for targ::TargetInfo {
+ fn matches(&self, tp: &TargetPredicate) -> bool {
+ use TargetPredicate::{
+ Abi, Arch, Endian, Env, Family, HasAtomic, Os, Panic, PointerWidth, Vendor,
+ };
+
+ match tp {
+ // The ABI is allowed to be an empty string
+ Abi(abi) => match &self.abi {
+ Some(a) => abi == a,
+ None => abi.0.is_empty(),
+ },
+ Arch(a) => a == &self.arch,
+ Endian(end) => *end == self.endian,
+ // The environment is allowed to be an empty string
+ Env(env) => match &self.env {
+ Some(e) => env == e,
+ None => env.0.is_empty(),
+ },
+ Family(fam) => self.families.contains(fam),
+ HasAtomic(has_atomic) => self.has_atomics.contains(*has_atomic),
+ Os(os) => match &self.os {
+ Some(self_os) => os == self_os,
+ // os = "none" means it should be matched against None. Note that this is different
+ // from "env" above.
+ None => os.as_str() == "none",
+ },
+ PointerWidth(w) => *w == self.pointer_width,
+ Vendor(ven) => match &self.vendor {
+ Some(v) => ven == v,
+ None => ven == &targ::Vendor::unknown,
+ },
+ Panic(panic) => &self.panic == panic,
+ }
+ }
+}
+
+#[cfg(feature = "targets")]
+impl TargetMatcher for target_lexicon::Triple {
+ #[allow(clippy::cognitive_complexity)]
+ #[allow(clippy::match_same_arms)]
+ fn matches(&self, tp: &TargetPredicate) -> bool {
+ use target_lexicon::*;
+ use TargetPredicate::{
+ Abi, Arch, Endian, Env, Family, HasAtomic, Os, Panic, PointerWidth, Vendor,
+ };
+
+ const NUTTX: target_lexicon::Vendor =
+ target_lexicon::Vendor::Custom(target_lexicon::CustomVendor::Static("nuttx"));
+ const RTEMS: target_lexicon::Vendor =
+ target_lexicon::Vendor::Custom(target_lexicon::CustomVendor::Static("rtems"));
+
+ match tp {
+ Abi(_) => {
+ // `target_abi` is unstable. Assume false for this.
+ false
+ }
+ Arch(arch) => {
+ if arch == &targ::Arch::x86 {
+ matches!(self.architecture, Architecture::X86_32(_))
+ } else if arch == &targ::Arch::wasm32 {
+ self.architecture == Architecture::Wasm32
+ || self.architecture == Architecture::Asmjs
+ } else if arch == &targ::Arch::arm {
+ matches!(self.architecture, Architecture::Arm(_))
+ } else if arch == &targ::Arch::bpf {
+ self.architecture == Architecture::Bpfeb
+ || self.architecture == Architecture::Bpfel
+ } else if arch == &targ::Arch::x86_64 {
+ self.architecture == Architecture::X86_64
+ || self.architecture == Architecture::X86_64h
+ } else if arch == &targ::Arch::mips32r6 {
+ matches!(
+ self.architecture,
+ Architecture::Mips32(
+ Mips32Architecture::Mipsisa32r6 | Mips32Architecture::Mipsisa32r6el
+ )
+ )
+ } else if arch == &targ::Arch::mips64r6 {
+ matches!(
+ self.architecture,
+ Architecture::Mips64(
+ Mips64Architecture::Mipsisa64r6 | Mips64Architecture::Mipsisa64r6el
+ )
+ )
+ } else {
+ match arch.0.parse::<Architecture>() {
+ Ok(a) => match (self.architecture, a) {
+ (Architecture::Aarch64(_), Architecture::Aarch64(_))
+ | (Architecture::Mips32(_), Architecture::Mips32(_))
+ | (Architecture::Mips64(_), Architecture::Mips64(_))
+ | (Architecture::Powerpc64le, Architecture::Powerpc64)
+ | (Architecture::Riscv32(_), Architecture::Riscv32(_))
+ | (Architecture::Riscv64(_), Architecture::Riscv64(_))
+ | (Architecture::Sparcv9, Architecture::Sparc64) => true,
+ (a, b) => a == b,
+ },
+ Err(_) => false,
+ }
+ }
+ }
+ Endian(end) => match self.architecture.endianness() {
+ Ok(endian) => matches!(
+ (end, endian),
+ (crate::targets::Endian::little, Endianness::Little)
+ | (crate::targets::Endian::big, Endianness::Big)
+ ),
+
+ Err(_) => false,
+ },
+ Env(env) => {
+ // The environment is implied by some operating systems
+ match self.operating_system {
+ OperatingSystem::Redox => env == &targ::Env::relibc,
+ OperatingSystem::VxWorks => env == &targ::Env::gnu,
+ OperatingSystem::Freebsd => env.0.is_empty(),
+ OperatingSystem::Netbsd => match self.architecture {
+ Architecture::Arm(ArmArchitecture::Armv6 | ArmArchitecture::Armv7) => {
+ env.0.is_empty()
+ }
+ _ => env.0.is_empty(),
+ },
+ OperatingSystem::None_
+ | OperatingSystem::Cloudabi
+ | OperatingSystem::Hermit
+ | OperatingSystem::IOS(_) => match self.environment {
+ Environment::LinuxKernel => env == &targ::Env::gnu,
+ _ => env.0.is_empty(),
+ },
+ OperatingSystem::WasiP1 => env == &targ::Env::p1,
+ OperatingSystem::WasiP2 => env == &targ::Env::p2,
+ OperatingSystem::Wasi => env.0.is_empty() || env == &targ::Env::p1,
+ _ => {
+ if env.0.is_empty() {
+ matches!(
+ self.environment,
+ Environment::Unknown
+ | Environment::Android
+ | Environment::Softfloat
+ | Environment::Androideabi
+ | Environment::Eabi
+ | Environment::Eabihf
+ | Environment::Sim
+ | Environment::None
+ )
+ } else {
+ match env.0.parse::<Environment>() {
+ Ok(e) => {
+ // Rustc shortens multiple "gnu*" environments to just "gnu"
+ if env == &targ::Env::gnu {
+ match self.environment {
+ Environment::Gnu
+ | Environment::Gnuabi64
+ | Environment::Gnueabi
+ | Environment::Gnuspe
+ | Environment::Gnux32
+ | Environment::GnuIlp32
+ | Environment::Gnueabihf
+ | Environment::GnuLlvm => true,
+ // Rust 1.49.0 changed all android targets to have the
+ // gnu environment
+ Environment::Android | Environment::Androideabi
+ if self.operating_system
+ == OperatingSystem::Linux =>
+ {
+ true
+ }
+ Environment::Kernel => {
+ self.operating_system == OperatingSystem::Linux
+ }
+ _ => self.architecture == Architecture::Avr,
+ }
+ } else if env == &targ::Env::musl {
+ matches!(
+ self.environment,
+ Environment::Musl
+ | Environment::Musleabi
+ | Environment::Musleabihf
+ | Environment::Muslabi64
+ )
+ } else if env == &targ::Env::uclibc {
+ matches!(
+ self.environment,
+ Environment::Uclibc
+ | Environment::Uclibceabi
+ | Environment::Uclibceabihf
+ )
+ } else if env == &targ::Env::newlib {
+ matches!(
+ self.operating_system,
+ OperatingSystem::Horizon | OperatingSystem::Espidf
+ ) || self.vendor == RTEMS
+ } else {
+ self.environment == e
+ }
+ }
+ Err(_) => false,
+ }
+ }
+ }
+ }
+ }
+ Family(fam) => {
+ use OperatingSystem::{
+ Aix, AmdHsa, Bitrig, Cloudabi, Cuda, Darwin, Dragonfly, Emscripten, Espidf,
+ Freebsd, Fuchsia, Haiku, Hermit, Horizon, Hurd, Illumos, L4re, Linux, MacOSX,
+ Nebulet, Netbsd, None_, Openbsd, Redox, Solaris, TvOS, Uefi, Unknown, VisionOS,
+ VxWorks, Wasi, WasiP1, WasiP2, WatchOS, Windows, IOS,
+ };
+
+ match self.operating_system {
+ AmdHsa | Bitrig | Cloudabi | Cuda | Hermit | Nebulet | None_ | Uefi => false,
+ Aix
+ | Darwin(_)
+ | Dragonfly
+ | Espidf
+ | Freebsd
+ | Fuchsia
+ | Haiku
+ | Hurd
+ | Illumos
+ | IOS(_)
+ | L4re
+ | MacOSX { .. }
+ | Horizon
+ | Netbsd
+ | Openbsd
+ | Redox
+ | Solaris
+ | TvOS(_)
+ | VisionOS(_)
+ | VxWorks
+ | WatchOS(_) => fam == &crate::targets::Family::unix,
+ Emscripten => {
+ match self.architecture {
+ // asmjs, wasm32 and wasm64 are part of both the wasm and unix families
+ Architecture::Asmjs | Architecture::Wasm32 => {
+ fam == &crate::targets::Family::wasm
+ || fam == &crate::targets::Family::unix
+ }
+ _ => false,
+ }
+ }
+ Unknown if self.vendor == NUTTX || self.vendor == RTEMS => {
+ fam == &crate::targets::Family::unix
+ }
+ Unknown => {
+ // asmjs, wasm32 and wasm64 are part of the wasm family.
+ match self.architecture {
+ Architecture::Asmjs | Architecture::Wasm32 | Architecture::Wasm64 => {
+ fam == &crate::targets::Family::wasm
+ }
+ _ => false,
+ }
+ }
+ Linux => {
+ // The 'kernel' environment is treated specially as not-unix
+ if self.environment != Environment::Kernel {
+ fam == &crate::targets::Family::unix
+ } else {
+ false
+ }
+ }
+ Wasi | WasiP1 | WasiP2 => fam == &crate::targets::Family::wasm,
+ Windows => fam == &crate::targets::Family::windows,
+ // I really dislike non-exhaustive :(
+ _ => false,
+ }
+ }
+ HasAtomic(_) => {
+ // atomic support depends on both the architecture and the OS. Assume false for
+ // this.
+ false
+ }
+ Os(os) => {
+ if os == &targ::Os::wasi
+ && matches!(
+ self.operating_system,
+ OperatingSystem::WasiP1 | OperatingSystem::WasiP2
+ )
+ || (os == &targ::Os::nuttx && self.vendor == NUTTX)
+ || (os == &targ::Os::rtems && self.vendor == RTEMS)
+ {
+ return true;
+ }
+
+ match os.0.parse::<OperatingSystem>() {
+ Ok(o) => match self.environment {
+ Environment::HermitKernel => os == &targ::Os::hermit,
+ _ => self.operating_system == o,
+ },
+ Err(_) => {
+ // Handle special case for darwin/macos, where the triple is
+ // "darwin", but rustc identifies the OS as "macos"
+ if os == &targ::Os::macos
+ && matches!(self.operating_system, OperatingSystem::Darwin(_))
+ {
+ true
+ } else {
+ // For android, the os is still linux, but the environment is android
+ os == &targ::Os::android
+ && self.operating_system == OperatingSystem::Linux
+ && (self.environment == Environment::Android
+ || self.environment == Environment::Androideabi)
+ }
+ }
+ }
+ }
+ Panic(_) => {
+ // panic support depends on the OS. Assume false for this.
+ false
+ }
+ Vendor(ven) => match ven.0.parse::<target_lexicon::Vendor>() {
+ Ok(v) => {
+ if self.vendor == v
+ || ((self.vendor == NUTTX || self.vendor == RTEMS)
+ && ven == &targ::Vendor::unknown)
+ {
+ true
+ } else if let target_lexicon::Vendor::Custom(custom) = &self.vendor {
+ matches!(custom.as_str(), "esp" | "esp32" | "esp32s2" | "esp32s3")
+ && (v == target_lexicon::Vendor::Espressif
+ || v == target_lexicon::Vendor::Unknown)
+ } else {
+ false
+ }
+ }
+ Err(_) => false,
+ },
+ PointerWidth(pw) => {
+ // The gnux32 environment is a special case, where it has an
+ // x86_64 architecture, but a 32-bit pointer width
+ if !matches!(
+ self.environment,
+ Environment::Gnux32 | Environment::GnuIlp32
+ ) {
+ *pw == match self.pointer_width() {
+ Ok(pw) => pw.bits(),
+ Err(_) => return false,
+ }
+ } else {
+ *pw == 32
+ }
+ }
+ }
+ }
+}
+
+impl TargetPredicate {
+ /// Returns true of the predicate matches the specified target
+ ///
+ /// Note that when matching against a [`target_lexicon::Triple`], the
+ /// `has_target_atomic` and `panic` predicates will _always_ return `false`.
+ ///
+ /// ```
+ /// use cfg_expr::{targets::*, expr::TargetPredicate as tp};
+ /// let win = get_builtin_target_by_triple("x86_64-pc-windows-msvc").unwrap();
+ ///
+ /// assert!(
+ /// tp::Arch(Arch::x86_64).matches(win) &&
+ /// tp::Endian(Endian::little).matches(win) &&
+ /// tp::Env(Env::msvc).matches(win) &&
+ /// tp::Family(Family::windows).matches(win) &&
+ /// tp::Os(Os::windows).matches(win) &&
+ /// tp::PointerWidth(64).matches(win) &&
+ /// tp::Vendor(Vendor::pc).matches(win)
+ /// );
+ /// ```
+ pub fn matches<T>(&self, target: &T) -> bool
+ where
+ T: TargetMatcher,
+ {
+ target.matches(self)
+ }
+}
+
+#[derive(Clone, Debug)]
+pub(crate) enum Which {
+ Abi,
+ Arch,
+ Endian(targ::Endian),
+ Env,
+ Family,
+ Os,
+ HasAtomic(targ::HasAtomic),
+ Panic,
+ PointerWidth(u8),
+ Vendor,
+}
+
+#[derive(Clone, Debug)]
+pub(crate) struct InnerTarget {
+ which: Which,
+ span: Option<Range<usize>>,
+}
+
+/// A single predicate in a `cfg()` expression
+#[derive(Debug, PartialEq, Eq)]
+pub enum Predicate<'a> {
+ /// A target predicate, with the `target_` prefix
+ Target(TargetPredicate),
+ /// Whether rustc's test harness is [enabled](https://doc.rust-lang.org/reference/conditional-compilation.html#test)
+ Test,
+ /// [Enabled](https://doc.rust-lang.org/reference/conditional-compilation.html#debug_assertions)
+ /// when compiling without optimizations.
+ DebugAssertions,
+ /// [Enabled](https://doc.rust-lang.org/reference/conditional-compilation.html#proc_macro) for
+ /// crates of the `proc_macro` type.
+ ProcMacro,
+ /// A [`feature = "<name>"`](https://doc.rust-lang.org/nightly/cargo/reference/features.html)
+ Feature(&'a str),
+ /// [target_feature](https://doc.rust-lang.org/reference/conditional-compilation.html#target_feature)
+ TargetFeature(&'a str),
+ /// A generic bare predicate key that doesn't match one of the known options, eg `cfg(bare)`
+ Flag(&'a str),
+ /// A generic key = "value" predicate that doesn't match one of the known options, eg `cfg(foo = "bar")`
+ KeyValue { key: &'a str, val: &'a str },
+}
+
+#[derive(Clone, Debug)]
+pub(crate) enum InnerPredicate {
+ Target(InnerTarget),
+ Test,
+ DebugAssertions,
+ ProcMacro,
+ Feature(Range<usize>),
+ TargetFeature(Range<usize>),
+ Other {
+ identifier: Range<usize>,
+ value: Option<Range<usize>>,
+ },
+}
+
+impl InnerPredicate {
+ fn to_pred<'a>(&self, s: &'a str) -> Predicate<'a> {
+ use InnerPredicate as IP;
+ use Predicate::{
+ DebugAssertions, Feature, Flag, KeyValue, ProcMacro, Target, TargetFeature, Test,
+ };
+
+ match self {
+ IP::Target(it) => match &it.which {
+ Which::Abi => Target(TargetPredicate::Abi(targ::Abi::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Arch => Target(TargetPredicate::Arch(targ::Arch::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Os => Target(TargetPredicate::Os(targ::Os::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Vendor => Target(TargetPredicate::Vendor(targ::Vendor::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Env => Target(TargetPredicate::Env(targ::Env::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Family => Target(TargetPredicate::Family(targ::Family::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::Endian(end) => Target(TargetPredicate::Endian(*end)),
+ Which::HasAtomic(has_atomic) => Target(TargetPredicate::HasAtomic(*has_atomic)),
+ Which::Panic => Target(TargetPredicate::Panic(targ::Panic::new(
+ s[it.span.clone().unwrap()].to_owned(),
+ ))),
+ Which::PointerWidth(pw) => Target(TargetPredicate::PointerWidth(*pw)),
+ },
+ IP::Test => Test,
+ IP::DebugAssertions => DebugAssertions,
+ IP::ProcMacro => ProcMacro,
+ IP::Feature(rng) => Feature(&s[rng.clone()]),
+ IP::TargetFeature(rng) => TargetFeature(&s[rng.clone()]),
+ IP::Other { identifier, value } => match value {
+ Some(vs) => KeyValue {
+ key: &s[identifier.clone()],
+ val: &s[vs.clone()],
+ },
+ None => Flag(&s[identifier.clone()]),
+ },
+ }
+ }
+}
+
+#[derive(Clone, Debug)]
+pub(crate) enum ExprNode {
+ Fn(Func),
+ Predicate(InnerPredicate),
+}
+
+/// A parsed `cfg()` expression that can evaluated
+#[derive(Clone, Debug)]
+pub struct Expression {
+ pub(crate) expr: SmallVec<[ExprNode; 5]>,
+ // We keep the original string around for providing the arbitrary
+ // strings that can make up an expression
+ pub(crate) original: String,
+}
+
+impl Expression {
+ /// An iterator over each predicate in the expression
+ pub fn predicates(&self) -> impl Iterator<Item = Predicate<'_>> {
+ self.expr.iter().filter_map(move |item| match item {
+ ExprNode::Predicate(pred) => {
+ let pred = pred.clone().to_pred(&self.original);
+ Some(pred)
+ }
+ ExprNode::Fn(_) => None,
+ })
+ }
+
+ /// Evaluates the expression, using the provided closure to determine the value of
+ /// each predicate, which are then combined into a final result depending on the
+ /// functions `not()`, `all()`, or `any()` in the expression.
+ ///
+ /// `eval_predicate` typically returns `bool`, but may return any type that implements
+ /// the `Logic` trait.
+ ///
+ /// ## Examples
+ ///
+ /// ```
+ /// use cfg_expr::{targets::*, Expression, Predicate};
+ ///
+ /// let linux_musl = get_builtin_target_by_triple("x86_64-unknown-linux-musl").unwrap();
+ ///
+ /// let expr = Expression::parse(r#"all(not(windows), target_env = "musl", any(target_arch = "x86", target_arch = "x86_64"))"#).unwrap();
+ ///
+ /// assert!(expr.eval(|pred| {
+ /// match pred {
+ /// Predicate::Target(tp) => tp.matches(linux_musl),
+ /// _ => false,
+ /// }
+ /// }));
+ /// ```
+ ///
+ /// Returning `Option<bool>`, where `None` indicates the result is unknown:
+ ///
+ /// ```
+ /// use cfg_expr::{targets::*, Expression, Predicate};
+ ///
+ /// let expr = Expression::parse(r#"any(target_feature = "sse2", target_env = "musl")"#).unwrap();
+ ///
+ /// let linux_gnu = get_builtin_target_by_triple("x86_64-unknown-linux-gnu").unwrap();
+ /// let linux_musl = get_builtin_target_by_triple("x86_64-unknown-linux-musl").unwrap();
+ ///
+ /// fn eval(expr: &Expression, target: &TargetInfo) -> Option<bool> {
+ /// expr.eval(|pred| {
+ /// match pred {
+ /// Predicate::Target(tp) => Some(tp.matches(target)),
+ /// Predicate::TargetFeature(_) => None,
+ /// _ => panic!("unexpected predicate"),
+ /// }
+ /// })
+ /// }
+ ///
+ /// // Whether the target feature is present is unknown, so the whole expression evaluates to
+ /// // None (unknown).
+ /// assert_eq!(eval(&expr, linux_gnu), None);
+ ///
+ /// // Whether the target feature is present is irrelevant for musl, since the any() always
+ /// // evaluates to true.
+ /// assert_eq!(eval(&expr, linux_musl), Some(true));
+ /// ```
+ pub fn eval<EP, T>(&self, mut eval_predicate: EP) -> T
+ where
+ EP: FnMut(&Predicate<'_>) -> T,
+ T: Logic + std::fmt::Debug,
+ {
+ let mut result_stack = SmallVec::<[T; 8]>::new();
+
+ // We store the expression as postfix, so just evaluate each component
+ // requirement in the order it comes, and then combining the previous
+ // results according to each operator as it comes
+ for node in self.expr.iter() {
+ match node {
+ ExprNode::Predicate(pred) => {
+ let pred = pred.to_pred(&self.original);
+
+ result_stack.push(eval_predicate(&pred));
+ }
+ ExprNode::Fn(Func::All(count)) => {
+ // all() with a comma separated list of configuration predicates.
+ let mut result = T::top();
+
+ for _ in 0..*count {
+ let r = result_stack.pop().unwrap();
+ result = result.and(r);
+ }
+
+ result_stack.push(result);
+ }
+ ExprNode::Fn(Func::Any(count)) => {
+ // any() with a comma separated list of configuration predicates.
+ let mut result = T::bottom();
+
+ for _ in 0..*count {
+ let r = result_stack.pop().unwrap();
+ result = result.or(r);
+ }
+
+ result_stack.push(result);
+ }
+ ExprNode::Fn(Func::Not) => {
+ // not() with a configuration predicate.
+ // It is true if its predicate is false
+ // and false if its predicate is true.
+ let r = result_stack.pop().unwrap();
+ result_stack.push(r.not());
+ }
+ }
+ }
+
+ result_stack.pop().unwrap()
+ }
+
+ /// The original string which has been parsed to produce this [`Expression`].
+ ///
+ /// ```
+ /// use cfg_expr::Expression;
+ ///
+ /// assert_eq!(
+ /// Expression::parse("any()").unwrap().original(),
+ /// "any()"
+ /// );
+ /// ```
+ #[inline]
+ pub fn original(&self) -> &str {
+ &self.original
+ }
+}
+
+/// [`PartialEq`] will do a **syntactical** comparison, so will just check if both
+/// expressions have been parsed from the same string, **not** if they are semantically
+/// equivalent.
+///
+/// ```
+/// use cfg_expr::Expression;
+///
+/// assert_eq!(
+/// Expression::parse("any()").unwrap(),
+/// Expression::parse("any()").unwrap()
+/// );
+/// assert_ne!(
+/// Expression::parse("any()").unwrap(),
+/// Expression::parse("unix").unwrap()
+/// );
+/// ```
+impl PartialEq for Expression {
+ fn eq(&self, other: &Self) -> bool {
+ self.original.eq(&other.original)
+ }
+}
+
+/// A propositional logic used to evaluate `Expression` instances.
+///
+/// An `Expression` consists of some predicates and the `any`, `all` and `not` operators. An
+/// implementation of `Logic` defines how the `any`, `all` and `not` operators should be evaluated.
+pub trait Logic {
+ /// The result of an `all` operation with no operands, akin to Boolean `true`.
+ fn top() -> Self;
+
+ /// The result of an `any` operation with no operands, akin to Boolean `false`.
+ fn bottom() -> Self;
+
+ /// `AND`, which corresponds to the `all` operator.
+ fn and(self, other: Self) -> Self;
+
+ /// `OR`, which corresponds to the `any` operator.
+ fn or(self, other: Self) -> Self;
+
+ /// `NOT`, which corresponds to the `not` operator.
+ fn not(self) -> Self;
+}
+
+/// A boolean logic.
+impl Logic for bool {
+ #[inline]
+ fn top() -> Self {
+ true
+ }
+
+ #[inline]
+ fn bottom() -> Self {
+ false
+ }
+
+ #[inline]
+ fn and(self, other: Self) -> Self {
+ self && other
+ }
+
+ #[inline]
+ fn or(self, other: Self) -> Self {
+ self || other
+ }
+
+ #[inline]
+ fn not(self) -> Self {
+ !self
+ }
+}
+
+/// A three-valued logic -- `None` stands for the value being unknown.
+///
+/// The truth tables for this logic are described on
+/// [Wikipedia](https://en.wikipedia.org/wiki/Three-valued_logic#Kleene_and_Priest_logics).
+impl Logic for Option<bool> {
+ #[inline]
+ fn top() -> Self {
+ Some(true)
+ }
+
+ #[inline]
+ fn bottom() -> Self {
+ Some(false)
+ }
+
+ #[inline]
+ fn and(self, other: Self) -> Self {
+ match (self, other) {
+ // If either is false, the expression is false.
+ (Some(false), _) | (_, Some(false)) => Some(false),
+ // If both are true, the expression is true.
+ (Some(true), Some(true)) => Some(true),
+ // One or both are unknown -- the result is unknown.
+ _ => None,
+ }
+ }
+
+ #[inline]
+ fn or(self, other: Self) -> Self {
+ match (self, other) {
+ // If either is true, the expression is true.
+ (Some(true), _) | (_, Some(true)) => Some(true),
+ // If both are false, the expression is false.
+ (Some(false), Some(false)) => Some(false),
+ // One or both are unknown -- the result is unknown.
+ _ => None,
+ }
+ }
+
+ #[inline]
+ fn not(self) -> Self {
+ self.map(|v| !v)
+ }
+}
diff --git a/crates/cfg-expr/src/expr/lexer.rs b/crates/cfg-expr/src/expr/lexer.rs
new file mode 100644
index 0000000..60abc6b
--- /dev/null
+++ b/crates/cfg-expr/src/expr/lexer.rs
@@ -0,0 +1,162 @@
+use crate::error::{ParseError, Reason};
+
+/// A single token in a cfg expression
+/// <https://doc.rust-lang.org/reference/conditional-compilation.html>
+#[derive(Clone, Debug, PartialEq, Eq)]
+pub enum Token<'a> {
+ /// A single contiguous term
+ Key(&'a str),
+ /// A single contiguous value, without its surrounding quotes
+ Value(&'a str),
+ /// A '=', joining a key and a value
+ Equals,
+ /// Beginning of an `all()` predicate list
+ All,
+ /// Beginning of an `any()` predicate list
+ Any,
+ /// Beginning of a `not()` predicate
+ Not,
+ /// A `(` for starting a predicate list
+ OpenParen,
+ /// A `)` for ending a predicate list
+ CloseParen,
+ /// A `,` for separating predicates in a predicate list
+ Comma,
+}
+
+impl std::fmt::Display for Token<'_> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Debug::fmt(self, f)
+ }
+}
+
+impl Token<'_> {
+ #[inline]
+ fn len(&self) -> usize {
+ match self {
+ Token::Key(s) => s.len(),
+ Token::Value(s) => s.len() + 2,
+ Token::Equals | Token::OpenParen | Token::CloseParen | Token::Comma => 1,
+ Token::All | Token::Any | Token::Not => 3,
+ }
+ }
+}
+
+/// Allows iteration through a cfg expression, yielding
+/// a token or a `ParseError`.
+///
+/// Prefer to use `Expression::parse` rather than directly
+/// using the lexer
+pub struct Lexer<'a> {
+ pub(super) inner: &'a str,
+ original: &'a str,
+ offset: usize,
+}
+
+impl<'a> Lexer<'a> {
+ /// Creates a Lexer over a cfg expression, it can either be
+ /// a raw expression eg `key` or in attribute form, eg `cfg(key)`
+ pub fn new(text: &'a str) -> Self {
+ let text = if text.starts_with("cfg(") && text.ends_with(')') {
+ &text[4..text.len() - 1]
+ } else {
+ text
+ };
+
+ Self {
+ inner: text,
+ original: text,
+ offset: 0,
+ }
+ }
+}
+
+/// A wrapper around a particular token that includes the span of the characters
+/// in the original string, for diagnostic purposes
+#[derive(Debug)]
+pub struct LexerToken<'a> {
+ /// The token that was lexed
+ pub token: Token<'a>,
+ /// The range of the token characters in the original license expression
+ pub span: std::ops::Range<usize>,
+}
+
+impl<'a> Iterator for Lexer<'a> {
+ type Item = Result<LexerToken<'a>, ParseError>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ // Jump over any whitespace, updating `self.inner` and `self.offset` appropriately
+ let non_whitespace_index = match self.inner.find(|c: char| !c.is_whitespace()) {
+ Some(idx) => idx,
+ None => self.inner.len(),
+ };
+
+ self.inner = &self.inner[non_whitespace_index..];
+ self.offset += non_whitespace_index;
+
+ #[inline]
+ fn is_ident_start(ch: char) -> bool {
+ ch == '_' || ch.is_ascii_lowercase() || ch.is_ascii_uppercase()
+ }
+
+ #[inline]
+ fn is_ident_rest(ch: char) -> bool {
+ is_ident_start(ch) || ch.is_ascii_digit()
+ }
+
+ match self.inner.chars().next() {
+ None => None,
+ Some('=') => Some(Ok(Token::Equals)),
+ Some('(') => Some(Ok(Token::OpenParen)),
+ Some(')') => Some(Ok(Token::CloseParen)),
+ Some(',') => Some(Ok(Token::Comma)),
+ Some(c) => {
+ if c == '"' {
+ match self.inner[1..].find('"') {
+ Some(ind) => Some(Ok(Token::Value(&self.inner[1..=ind]))),
+ None => Some(Err(ParseError {
+ original: self.original.to_owned(),
+ span: self.offset..self.original.len(),
+ reason: Reason::UnclosedQuotes,
+ })),
+ }
+ } else if is_ident_start(c) {
+ let substr = match self.inner[1..].find(|c: char| !is_ident_rest(c)) {
+ Some(ind) => &self.inner[..=ind],
+ None => self.inner,
+ };
+
+ match substr {
+ "all" => Some(Ok(Token::All)),
+ "any" => Some(Ok(Token::Any)),
+ "not" => Some(Ok(Token::Not)),
+ other => Some(Ok(Token::Key(other))),
+ }
+ } else {
+ // clippy tries to help here, but we need
+ // a Range here, not a RangeInclusive<>
+ #[allow(clippy::range_plus_one)]
+ Some(Err(ParseError {
+ original: self.original.to_owned(),
+ span: self.offset..self.offset + 1,
+ reason: Reason::Unexpected(&["<key>", "all", "any", "not"]),
+ }))
+ }
+ }
+ }
+ .map(|tok| {
+ tok.map(|tok| {
+ let len = tok.len();
+
+ let start = self.offset;
+ self.inner = &self.inner[len..];
+ self.offset += len;
+
+ LexerToken {
+ token: tok,
+ span: start..self.offset,
+ }
+ })
+ })
+ }
+}
diff --git a/crates/cfg-expr/src/expr/parser.rs b/crates/cfg-expr/src/expr/parser.rs
new file mode 100644
index 0000000..0f663a0
--- /dev/null
+++ b/crates/cfg-expr/src/expr/parser.rs
@@ -0,0 +1,449 @@
+use crate::{
+ error::{ParseError, Reason},
+ expr::{
+ lexer::{Lexer, Token},
+ ExprNode, Expression, Func, InnerPredicate,
+ },
+};
+use smallvec::SmallVec;
+
+impl Expression {
+ /// Given a `cfg()` expression (the cfg( and ) are optional), attempts to
+ /// parse it into a form where it can be evaluated
+ ///
+ /// ```
+ /// assert!(cfg_expr::Expression::parse(r#"cfg(all(unix, target_arch = "x86_64"))"#).is_ok());
+ /// ```
+ pub fn parse(original: &str) -> Result<Self, ParseError> {
+ let lexer = Lexer::new(original);
+
+ // The lexer automatically trims any cfg( ), so reacquire
+ // the string before we start walking tokens
+ let original = lexer.inner;
+
+ #[derive(Debug)]
+ struct FuncAndSpan {
+ func: Func,
+ parens_index: usize,
+ span: std::ops::Range<usize>,
+ predicates: SmallVec<[InnerPredicate; 5]>,
+ nest_level: u8,
+ }
+
+ let mut func_stack = SmallVec::<[FuncAndSpan; 5]>::new();
+ let mut expr_queue = SmallVec::<[ExprNode; 5]>::new();
+
+ // Keep track of the last token to simplify validation of the token stream
+ let mut last_token: Option<Token<'_>> = None;
+
+ let parse_predicate = |key: (&str, std::ops::Range<usize>),
+ val: Option<(&str, std::ops::Range<usize>)>|
+ -> Result<InnerPredicate, ParseError> {
+ // Warning: It is possible for arbitrarily-set configuration
+ // options to have the same value as compiler-set configuration
+ // options. For example, it is possible to do rustc --cfg "unix" program.rs
+ // while compiling to a Windows target, and have both unix and windows
+ // configuration options set at the same time. It is unwise to actually
+ // do this.
+ //
+ // rustc is very permissive in this regard, but I'd rather be really
+ // strict, as it's much easier to loosen restrictions over time than add
+ // new ones
+ macro_rules! err_if_val {
+ () => {
+ if let Some((_, vspan)) = val {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: vspan,
+ reason: Reason::Unexpected(&[]),
+ });
+ }
+ };
+ }
+
+ let span = key.1;
+ let key = key.0;
+
+ use super::{InnerTarget, Which};
+
+ Ok(match key {
+ // These are special cases in the cfg language that are
+ // semantically the same as `target_family = "<family>"`,
+ // so we just make them not special
+ // NOTE: other target families like "wasm" are NOT allowed
+ // as naked predicates; they must be specified through
+ // `target_family`
+ "unix" | "windows" => {
+ err_if_val!();
+
+ InnerPredicate::Target(InnerTarget {
+ which: Which::Family,
+ span: Some(span),
+ })
+ }
+ "test" => {
+ err_if_val!();
+ InnerPredicate::Test
+ }
+ "debug_assertions" => {
+ err_if_val!();
+ InnerPredicate::DebugAssertions
+ }
+ "proc_macro" => {
+ err_if_val!();
+ InnerPredicate::ProcMacro
+ }
+ "feature" => {
+ // rustc allows bare feature without a value, but the only way
+ // such a predicate would ever evaluate to true would be if they
+ // explicitly set --cfg feature, which would be terrible, so we
+ // just error instead
+ match val {
+ Some((_, span)) => InnerPredicate::Feature(span),
+ None => {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span,
+ reason: Reason::Unexpected(&["= \"<feature_name>\""]),
+ });
+ }
+ }
+ }
+ "panic" => match val {
+ Some((_, vspan)) => InnerPredicate::Target(InnerTarget {
+ which: Which::Panic,
+ span: Some(vspan),
+ }),
+ None => {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span,
+ reason: Reason::Unexpected(&["= \"<panic_strategy>\""]),
+ });
+ }
+ },
+ target_key if key.starts_with("target_") => {
+ let (val, vspan) = match val {
+ None => {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span,
+ reason: Reason::Unexpected(&["= \"<target_cfg_value>\""]),
+ });
+ }
+ Some((val, vspan)) => (val, vspan),
+ };
+
+ macro_rules! tp {
+ ($which:ident) => {
+ InnerTarget {
+ which: Which::$which,
+ span: Some(vspan),
+ }
+ };
+ }
+
+ let tp = match &target_key[7..] {
+ "abi" => tp!(Abi),
+ "arch" => tp!(Arch),
+ "feature" => {
+ if val.is_empty() {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: vspan,
+ reason: Reason::Unexpected(&["<feature>"]),
+ });
+ }
+
+ return Ok(InnerPredicate::TargetFeature(vspan));
+ }
+ "os" => tp!(Os),
+ "family" => tp!(Family),
+ "env" => tp!(Env),
+ "endian" => InnerTarget {
+ which: Which::Endian(val.parse().map_err(|_err| ParseError {
+ original: original.to_owned(),
+ span: vspan,
+ reason: Reason::InvalidInteger,
+ })?),
+ span: None,
+ },
+ "has_atomic" => InnerTarget {
+ which: Which::HasAtomic(val.parse().map_err(|_err| ParseError {
+ original: original.to_owned(),
+ span: vspan,
+ reason: Reason::InvalidHasAtomic,
+ })?),
+ span: None,
+ },
+ "pointer_width" => InnerTarget {
+ which: Which::PointerWidth(val.parse().map_err(|_err| ParseError {
+ original: original.to_owned(),
+ span: vspan,
+ reason: Reason::InvalidInteger,
+ })?),
+ span: None,
+ },
+ "vendor" => tp!(Vendor),
+ _ => {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span,
+ reason: Reason::Unexpected(&[
+ "target_arch",
+ "target_feature",
+ "target_os",
+ "target_family",
+ "target_env",
+ "target_endian",
+ "target_has_atomic",
+ "target_pointer_width",
+ "target_vendor",
+ ]),
+ })
+ }
+ };
+
+ InnerPredicate::Target(tp)
+ }
+ _other => InnerPredicate::Other {
+ identifier: span,
+ value: val.map(|(_, span)| span),
+ },
+ })
+ };
+
+ macro_rules! token_err {
+ ($span:expr) => {{
+ let expected: &[&str] = match last_token {
+ None => &["<key>", "all", "any", "not"],
+ Some(Token::All | Token::Any | Token::Not) => &["("],
+ Some(Token::CloseParen) => &[")", ","],
+ Some(Token::Comma) => &[")", "<key>"],
+ Some(Token::Equals) => &["\""],
+ Some(Token::Key(_)) => &["=", ",", ")"],
+ Some(Token::Value(_)) => &[",", ")"],
+ Some(Token::OpenParen) => &["<key>", ")", "all", "any", "not"],
+ };
+
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: $span,
+ reason: Reason::Unexpected(&expected),
+ });
+ }};
+ }
+
+ let mut pred_key: Option<(&str, _)> = None;
+ let mut pred_val: Option<(&str, _)> = None;
+
+ let mut root_predicate_count = 0;
+
+ // Basic implementation of the https://en.wikipedia.org/wiki/Shunting-yard_algorithm
+ 'outer: for lt in lexer {
+ let lt = lt?;
+ match <.token {
+ Token::Key(k) => {
+ if matches!(last_token, None | Some(Token::OpenParen | Token::Comma)) {
+ pred_key = Some((k, lt.span.clone()));
+ } else {
+ token_err!(lt.span)
+ }
+ }
+ Token::Value(v) => {
+ if matches!(last_token, Some(Token::Equals)) {
+ // We only record the span for keys and values
+ // so that the expression doesn't need a lifetime
+ // but in the value case we need to strip off
+ // the quotes so that the proper raw string is
+ // provided to callers when evaluating the expression
+ pred_val = Some((v, lt.span.start + 1..lt.span.end - 1));
+ } else {
+ token_err!(lt.span)
+ }
+ }
+ Token::Equals => {
+ if !matches!(last_token, Some(Token::Key(_))) {
+ token_err!(lt.span)
+ }
+ }
+ Token::All | Token::Any | Token::Not => {
+ if matches!(last_token, None | Some(Token::OpenParen | Token::Comma)) {
+ let new_fn = match lt.token {
+ // the 0 is a dummy value -- it will be substituted for the real
+ // number of predicates in the `CloseParen` branch below.
+ Token::All => Func::All(0),
+ Token::Any => Func::Any(0),
+ Token::Not => Func::Not,
+ _ => unreachable!(),
+ };
+
+ if let Some(fs) = func_stack.last_mut() {
+ fs.nest_level += 1;
+ }
+
+ func_stack.push(FuncAndSpan {
+ func: new_fn,
+ span: lt.span,
+ parens_index: 0,
+ predicates: SmallVec::new(),
+ nest_level: 0,
+ });
+ } else {
+ token_err!(lt.span)
+ }
+ }
+ Token::OpenParen => {
+ if matches!(last_token, Some(Token::All | Token::Any | Token::Not)) {
+ if let Some(ref mut fs) = func_stack.last_mut() {
+ fs.parens_index = lt.span.start;
+ }
+ } else {
+ token_err!(lt.span)
+ }
+ }
+ Token::CloseParen => {
+ if matches!(
+ last_token,
+ None | Some(Token::All | Token::Any | Token::Not | Token::Equals)
+ ) {
+ token_err!(lt.span)
+ } else {
+ if let Some(top) = func_stack.pop() {
+ let key = pred_key.take();
+ let val = pred_val.take();
+
+ // In this context, the boolean to int conversion is confusing.
+ #[allow(clippy::bool_to_int_with_if)]
+ let num_predicates = top.predicates.len()
+ + if key.is_some() { 1 } else { 0 }
+ + top.nest_level as usize;
+
+ let func = match top.func {
+ Func::All(_) => Func::All(num_predicates),
+ Func::Any(_) => Func::Any(num_predicates),
+ Func::Not => {
+ // not() doesn't take a predicate list, but only a single predicate,
+ // so ensure we have exactly 1
+ if num_predicates != 1 {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: top.span.start..lt.span.end,
+ reason: Reason::InvalidNot(num_predicates),
+ });
+ }
+
+ Func::Not
+ }
+ };
+
+ for pred in top.predicates {
+ expr_queue.push(ExprNode::Predicate(pred));
+ }
+
+ if let Some(key) = key {
+ let inner_pred = parse_predicate(key, val)?;
+ expr_queue.push(ExprNode::Predicate(inner_pred));
+ }
+
+ expr_queue.push(ExprNode::Fn(func));
+
+ // This is the only place we go back to the top of the outer loop,
+ // so make sure we correctly record this token
+ last_token = Some(Token::CloseParen);
+ continue 'outer;
+ }
+
+ // We didn't have an opening parentheses if we get here
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: lt.span,
+ reason: Reason::UnopenedParens,
+ });
+ }
+ }
+ Token::Comma => {
+ if matches!(
+ last_token,
+ None | Some(
+ Token::OpenParen | Token::All | Token::Any | Token::Not | Token::Equals
+ )
+ ) {
+ token_err!(lt.span)
+ } else {
+ let key = pred_key.take();
+ let val = pred_val.take();
+
+ let inner_pred = key.map(|key| parse_predicate(key, val)).transpose()?;
+
+ match (inner_pred, func_stack.last_mut()) {
+ (Some(pred), Some(func)) => {
+ func.predicates.push(pred);
+ }
+ (Some(pred), None) => {
+ root_predicate_count += 1;
+
+ expr_queue.push(ExprNode::Predicate(pred));
+ }
+ _ => {}
+ }
+ }
+ }
+ }
+
+ last_token = Some(lt.token);
+ }
+
+ if let Some(Token::Equals) = last_token {
+ return Err(ParseError {
+ original: original.to_owned(),
+ span: original.len()..original.len(),
+ reason: Reason::Unexpected(&["\"<value>\""]),
+ });
+ }
+
+ // If we still have functions on the stack, it means we have an unclosed parens
+ if let Some(top) = func_stack.pop() {
+ if top.parens_index != 0 {
+ Err(ParseError {
+ original: original.to_owned(),
+ span: top.parens_index..original.len(),
+ reason: Reason::UnclosedParens,
+ })
+ } else {
+ Err(ParseError {
+ original: original.to_owned(),
+ span: top.span,
+ reason: Reason::Unexpected(&["("]),
+ })
+ }
+ } else {
+ let key = pred_key.take();
+ let val = pred_val.take();
+
+ if let Some(key) = key {
+ root_predicate_count += 1;
+ expr_queue.push(ExprNode::Predicate(parse_predicate(key, val)?));
+ }
+
+ if expr_queue.is_empty() {
+ Err(ParseError {
+ original: original.to_owned(),
+ span: 0..original.len(),
+ reason: Reason::Empty,
+ })
+ } else if root_predicate_count > 1 {
+ Err(ParseError {
+ original: original.to_owned(),
+ span: 0..original.len(),
+ reason: Reason::MultipleRootPredicates,
+ })
+ } else {
+ Ok(Expression {
+ original: original.to_owned(),
+ expr: expr_queue,
+ })
+ }
+ }
+ }
+}
diff --git a/crates/cfg-expr/src/lib.rs b/crates/cfg-expr/src/lib.rs
new file mode 100644
index 0000000..30cb38c
--- /dev/null
+++ b/crates/cfg-expr/src/lib.rs
@@ -0,0 +1,14 @@
+#![doc = include_str!("../README.md")]
+
+/// Types related to parse errors
+pub mod error;
+/// Types related to cfg expressions
+pub mod expr;
+/// Types related to rustc targets
+pub mod targets;
+
+pub use error::ParseError;
+pub use expr::{Expression, Predicate, TargetPredicate};
+
+#[cfg(feature = "targets")]
+pub use target_lexicon;
diff --git a/crates/cfg-expr/src/targets.rs b/crates/cfg-expr/src/targets.rs
new file mode 100644
index 0000000..d107965
--- /dev/null
+++ b/crates/cfg-expr/src/targets.rs
@@ -0,0 +1,425 @@
+use crate::error::{HasAtomicParseError, Reason};
+use std::{borrow::Cow, ops::Deref};
+
+mod builtins;
+
+/// A list of all of the [builtin](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_target/spec/index.html#modules)
+/// targets known to rustc, as of 1.54.0
+pub use builtins::ALL_BUILTINS;
+
+/// The unique identifier for a target.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Triple(pub Cow<'static, str>);
+
+/// The "abi" field
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Abi(pub Cow<'static, str>);
+
+/// The "architecture" field
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Arch(pub Cow<'static, str>);
+
+/// The "vendor" field, which in practice is little more than an arbitrary modifier.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Vendor(pub Cow<'static, str>);
+
+/// The "operating system" field, which sometimes implies an environment, and
+/// sometimes isn't an actual operating system.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Os(pub Cow<'static, str>);
+
+/// Individual target families, which describe a set of targets grouped in some logical manner,
+/// typically by operating system. This includes values like `unix` and `windows`.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Family(pub Cow<'static, str>);
+
+/// The "environment" field, which specifies an ABI environment on top of the
+/// operating system. In many configurations, this field is omitted, and the
+/// environment is implied by the operating system.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Env(pub Cow<'static, str>);
+
+/// The panic strategy used on this target by default.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Panic(pub Cow<'static, str>);
+
+macro_rules! field_impls {
+ ($kind:ident) => {
+ impl $kind {
+ /// Constructs a new instance of this field.
+ ///
+ /// This method accepts both owned `String`s and `&'static str`s.
+ #[inline]
+ pub fn new(val: impl Into<Cow<'static, str>>) -> Self {
+ Self(val.into())
+ }
+
+ /// Constructs a new instance of this field from a `&'static str`.
+ #[inline]
+ pub const fn new_const(val: &'static str) -> Self {
+ Self(Cow::Borrowed(val))
+ }
+
+ /// Returns the string for the field.
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ &*self.0
+ }
+ }
+
+ impl AsRef<str> for $kind {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ &*self.0
+ }
+ }
+
+ impl std::fmt::Display for $kind {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.write_str(self.as_str())
+ }
+ }
+ };
+}
+
+field_impls!(Triple);
+field_impls!(Abi);
+field_impls!(Arch);
+field_impls!(Vendor);
+field_impls!(Os);
+field_impls!(Family);
+field_impls!(Env);
+field_impls!(Panic);
+
+/// Integer size and pointers for which there's support for atomic functions.
+#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+#[non_exhaustive]
+pub enum HasAtomic {
+ /// The platform supports atomics for the given integer size in bits (e.g. `AtomicU8` if
+ /// `HasAtomic::IntegerSize(8)`).
+ IntegerSize(u16),
+
+ /// The platform supports atomics for pointers (`AtomicPtr`).
+ Pointer,
+}
+
+impl std::str::FromStr for HasAtomic {
+ type Err = HasAtomicParseError;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ if let Ok(size) = s.parse::<u16>() {
+ Ok(Self::IntegerSize(size))
+ } else if s == "ptr" {
+ Ok(HasAtomic::Pointer)
+ } else {
+ Err(HasAtomicParseError {
+ input: s.to_owned(),
+ })
+ }
+ }
+}
+
+impl std::fmt::Display for HasAtomic {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ Self::IntegerSize(size) => write!(f, "{size}"),
+ Self::Pointer => write!(f, "ptr"),
+ }
+ }
+}
+
+/// A set of families for a target.
+///
+/// Each target can be part of one or more families. This struct represents them.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct Families(Cow<'static, [Family]>);
+
+impl Families {
+ /// Constructs a new instance.
+ ///
+ /// This method accepts both owned `String`s and `&'static str`s.
+ ///
+ /// If you have a `&'static [&'static str]`, prefer [`Self::new_const`].
+ #[inline]
+ pub fn new(val: impl IntoIterator<Item = Family>) -> Self {
+ let mut fams: Vec<_> = val.into_iter().collect();
+ fams.sort_unstable();
+ Self(Cow::Owned(fams))
+ }
+
+ /// Constructs a new instance of this field from a static slice of `&'static str`.
+ ///
+ /// `val` must be in sorted order: this constructor cannot check for that due to
+ /// limitations in current versions of Rust.
+ #[inline]
+ pub const fn new_const(val: &'static [Family]) -> Self {
+ // TODO: Check that val is sorted.
+ Self(Cow::Borrowed(val))
+ }
+
+ /// Returns true if this list of families contains a given family.
+ #[inline]
+ pub fn contains(&self, val: &Family) -> bool {
+ self.0.contains(val)
+ }
+}
+
+impl Deref for Families {
+ type Target = [Family];
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
+impl AsRef<[Family]> for Families {
+ #[inline]
+ fn as_ref(&self) -> &[Family] {
+ &self.0
+ }
+}
+
+impl std::fmt::Display for Families {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{{")?;
+ let len = self.0.len();
+ for (idx, family) in self.0.iter().enumerate() {
+ write!(f, "{family}")?;
+ if idx + 1 < len {
+ write!(f, ", ")?;
+ }
+ }
+ write!(f, "}}")
+ }
+}
+
+/// A set of [`HasAtomic`] instances a target.
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct HasAtomics(Cow<'static, [HasAtomic]>);
+
+impl HasAtomics {
+ /// Constructs a new instance.
+ ///
+ /// If you have a `&'static [HasAtomic]`, prefer [`Self::new_const`].
+ #[inline]
+ pub fn new(val: impl IntoIterator<Item = HasAtomic>) -> Self {
+ let mut has_atomics: Vec<_> = val.into_iter().collect();
+ has_atomics.sort_unstable();
+ Self(Cow::Owned(has_atomics))
+ }
+
+ /// Constructs a new instance of this struct from a static slice of [`HasAtomic`].
+ ///
+ /// `val` must be in sorted order: this constructor cannot check for that due to
+ /// limitations in current versions of Rust.
+ #[inline]
+ pub const fn new_const(val: &'static [HasAtomic]) -> Self {
+ // TODO: Check that val is sorted.
+ Self(Cow::Borrowed(val))
+ }
+
+ /// Returns true if this list of families contains a given family.
+ #[inline]
+ pub fn contains(&self, val: HasAtomic) -> bool {
+ self.0.contains(&val)
+ }
+}
+
+impl Deref for HasAtomics {
+ type Target = [HasAtomic];
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
+impl AsRef<[HasAtomic]> for HasAtomics {
+ #[inline]
+ fn as_ref(&self) -> &[HasAtomic] {
+ &self.0
+ }
+}
+
+impl std::fmt::Display for HasAtomics {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{{")?;
+ let len = self.0.len();
+ for (idx, has_atomic) in self.0.iter().enumerate() {
+ write!(f, "{has_atomic}")?;
+ if idx + 1 < len {
+ write!(f, ", ")?;
+ }
+ }
+ write!(f, "}}")
+ }
+}
+
+macro_rules! target_enum {
+ (
+ $(#[$outer:meta])*
+ pub enum $kind:ident {
+ $(
+ $(#[$inner:ident $($args:tt)*])*
+ $name:ident $(= $value:expr)?,
+ )+
+ }
+ ) => {
+ $(#[$outer])*
+ #[allow(non_camel_case_types)]
+ pub enum $kind {
+ $(
+ $(#[$inner $($args)*])*
+ $name $(= $value)?,
+ )+
+ }
+
+ impl_from_str! {
+ $kind {
+ $(
+ $(#[$inner $($args)*])*
+ $name $(= $value)?,
+ )+
+ }
+ }
+ };
+}
+
+macro_rules! impl_from_str {
+ (
+ $kind:ident {
+ $(
+ $(#[$attr:ident $($args:tt)*])*
+ $name:ident $(= $value:expr)?,
+ )+
+ }
+ ) => {
+ impl std::str::FromStr for $kind {
+ type Err = Reason;
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ match s {
+ $(stringify!($name) => Ok(Self::$name),)+
+ _ => Err(Reason::Unexpected(&[$(stringify!($name),)+])),
+ }
+ }
+ }
+ };
+}
+
+target_enum! {
+ /// The endian types known to rustc
+ #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+ pub enum Endian {
+ big,
+ little,
+ }
+}
+
+/// Contains information regarding a particular target known to rustc
+#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct TargetInfo {
+ /// The target's unique identifier
+ pub triple: Triple,
+ /// The target's operating system, if any. Used by the
+ /// [target_os](https://doc.rust-lang.org/reference/conditional-compilation.html#target_os)
+ /// predicate.
+ pub os: Option<Os>,
+ /// The target's ABI, if any. Used by the
+ /// [target_abi](https://github.com/rust-lang/rust/issues/80970) predicate.
+ pub abi: Option<Abi>,
+ /// The target's CPU architecture. Used by the
+ /// [target_arch](https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch)
+ /// predicate.
+ pub arch: Arch,
+ /// The target's ABI/libc used, if any. Used by the
+ /// [target_env](https://doc.rust-lang.org/reference/conditional-compilation.html#target_env)
+ /// predicate.
+ pub env: Option<Env>,
+ /// The target's vendor, if any. Used by the
+ /// [target_vendor](https://doc.rust-lang.org/reference/conditional-compilation.html#target_vendor)
+ /// predicate.
+ pub vendor: Option<Vendor>,
+ /// The target's families, if any. Used by the
+ /// [target_family](https://doc.rust-lang.org/reference/conditional-compilation.html#target_family)
+ /// predicate.
+ pub families: Families,
+ /// The size of the target's pointer type. Used by the
+ /// [target_pointer_width](https://doc.rust-lang.org/reference/conditional-compilation.html#target_pointer_width)
+ /// predicate.
+ pub pointer_width: u8,
+ /// The target's endianness. Used by the
+ /// [target_endian](https://doc.rust-lang.org/reference/conditional-compilation.html#target_endian)
+ /// predicate.
+ pub endian: Endian,
+ /// The target's support for atomics. Used by the `has_target_atomics` predicate.
+ pub has_atomics: HasAtomics,
+ /// The panic strategy used on this target by default. Used by the
+ /// [panic](https://doc.rust-lang.org/beta/reference/conditional-compilation.html#panic) predicate.
+ pub panic: Panic,
+}
+
+/// Attempts to find the `TargetInfo` for the specified target triple
+///
+/// ```
+/// assert!(cfg_expr::targets::get_builtin_target_by_triple("x86_64-unknown-linux-musl").is_some());
+/// ```
+pub fn get_builtin_target_by_triple(triple: &str) -> Option<&'static TargetInfo> {
+ ALL_BUILTINS
+ .binary_search_by(|ti| ti.triple.as_ref().cmp(triple))
+ .map(|i| &ALL_BUILTINS[i])
+ .ok()
+}
+
+/// Retrieves the version of rustc for which the built-in targets were
+/// retrieved from.
+///
+/// Targets may be added and removed between different rustc versions.
+pub fn rustc_version() -> &'static str {
+ builtins::RUSTC_VERSION
+}
+
+#[cfg(test)]
+mod test {
+ use crate::targets::get_builtin_target_by_triple;
+ use std::collections::{BTreeSet, HashSet};
+
+ // rustc's target-list is currently sorted lexicographically
+ // by the target-triple, so ensure that stays the case
+ #[test]
+ fn targets_are_sorted() {
+ for window in super::ALL_BUILTINS.windows(2) {
+ assert!(window[0].triple < window[1].triple);
+ }
+ }
+
+ // Ensure our workaround for https://github.com/rust-lang/rust/issues/36156
+ // still functions
+ #[test]
+ fn has_ios() {
+ assert_eq!(
+ 8,
+ super::ALL_BUILTINS
+ .iter()
+ .filter(|ti| ti.os == Some(super::Os::ios))
+ .count()
+ );
+ }
+
+ // Ensure that TargetInfo can be used as keys for btree and hash-based data structures.
+ #[test]
+ fn set_map_key() {
+ let target_info =
+ get_builtin_target_by_triple("x86_64-unknown-linux-gnu").expect("known target");
+
+ let mut btree_set = BTreeSet::new();
+ btree_set.insert(target_info);
+
+ let mut hash_set = HashSet::new();
+ hash_set.insert(target_info);
+ }
+
+ #[test]
+ fn family_comp() {
+ let a = super::Families::new([super::Family::unix, super::Family::wasm]);
+ let b = super::Families::new([super::Family::wasm, super::Family::unix]);
+
+ assert_eq!(a, b);
+ }
+}
diff --git a/crates/cfg-expr/src/targets/builtins.rs b/crates/cfg-expr/src/targets/builtins.rs
new file mode 100644
index 0000000..00335d9
--- /dev/null
+++ b/crates/cfg-expr/src/targets/builtins.rs
@@ -0,0 +1,3717 @@
+/*
+ *
+ * AUTO-GENERATED BY ./update
+ * DO NOT MODIFY
+ *
+ * cargo run --manifest-path update/Cargo.toml
+ */
+
+#![allow(non_upper_case_globals, non_camel_case_types)]
+
+use super::*;
+
+pub(crate) const RUSTC_VERSION: &str = "1.85.0";
+
+pub const ALL_BUILTINS: &[TargetInfo] = &[
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-darwin"),
+ os: Some(Os::macos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-ios"),
+ os: Some(Os::ios),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-ios-macabi"),
+ os: Some(Os::ios),
+ abi: Some(Abi::macabi),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-ios-sim"),
+ os: Some(Os::ios),
+ abi: Some(Abi::sim),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-tvos"),
+ os: Some(Os::tvos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-tvos-sim"),
+ os: Some(Os::tvos),
+ abi: Some(Abi::sim),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-visionos"),
+ os: Some(Os::visionos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-visionos-sim"),
+ os: Some(Os::visionos),
+ abi: Some(Abi::sim),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-watchos"),
+ os: Some(Os::watchos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-apple-watchos-sim"),
+ os: Some(Os::watchos),
+ abi: Some(Abi::sim),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-kmc-solid_asp3"),
+ os: Some(Os::solid_asp3),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::kmc),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-linux-android"),
+ os: Some(Os::android),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-nintendo-switch-freestanding"),
+ os: Some(Os::horizon),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::nintendo),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-pc-windows-gnullvm"),
+ os: Some(Os::windows),
+ abi: Some(Abi::llvm),
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-fuchsia"),
+ os: Some(Os::fuchsia),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-hermit"),
+ os: Some(Os::hermit),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-illumos"),
+ os: Some(Os::illumos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-linux-gnu_ilp32"),
+ os: Some(Os::linux),
+ abi: Some(Abi::ilp32),
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-linux-ohos"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::ohos),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-none-softfloat"),
+ os: None,
+ abi: Some(Abi::softfloat),
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-nto-qnx700"),
+ os: Some(Os::nto),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::nto70),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-nto-qnx710"),
+ os: Some(Os::nto),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::nto71),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-redox"),
+ os: Some(Os::redox),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::relibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-teeos"),
+ os: Some(Os::teeos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-trusty"),
+ os: Some(Os::trusty),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-unknown-uefi"),
+ os: Some(Os::uefi),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-uwp-windows-msvc"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::aarch64,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64_be-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64_be-unknown-linux-gnu_ilp32"),
+ os: Some(Os::linux),
+ abi: Some(Abi::ilp32),
+ arch: Arch::aarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("aarch64_be-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm-linux-androideabi"),
+ os: Some(Os::android),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm-unknown-linux-gnueabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm-unknown-linux-gnueabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm-unknown-linux-musleabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm-unknown-linux-musleabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm64_32-apple-watchos"),
+ os: Some(Os::watchos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm64e-apple-darwin"),
+ os: Some(Os::macos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm64e-apple-ios"),
+ os: Some(Os::ios),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm64e-apple-tvos"),
+ os: Some(Os::tvos),
+ abi: None,
+ arch: Arch::aarch64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("arm64ec-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::arm64ec,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armeb-unknown-linux-gnueabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armebv7r-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armebv7r-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv4t-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv4t-unknown-linux-gnueabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv5te-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv5te-unknown-linux-gnueabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv5te-unknown-linux-musleabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv5te-unknown-linux-uclibceabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv6-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv6-unknown-netbsd-eabihf"),
+ os: Some(Os::netbsd),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv6k-nintendo-3ds"),
+ os: Some(Os::horizon),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::nintendo),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-linux-androideabi"),
+ os: Some(Os::android),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-rtems-eabihf"),
+ os: Some(Os::rtems),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-sony-vita-newlibeabihf"),
+ os: Some(Os::vita),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::sony),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-gnueabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-gnueabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-musleabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-musleabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-ohos"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::ohos),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-uclibceabi"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-linux-uclibceabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-netbsd-eabihf"),
+ os: Some(Os::netbsd),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-unknown-trusty"),
+ os: Some(Os::trusty),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7-wrs-vxworks-eabihf"),
+ os: Some(Os::vxworks),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7a-kmc-solid_asp3-eabi"),
+ os: Some(Os::solid_asp3),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::kmc),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7a-kmc-solid_asp3-eabihf"),
+ os: Some(Os::solid_asp3),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::kmc),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7a-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7a-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7k-apple-watchos"),
+ os: Some(Os::watchos),
+ abi: None,
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7r-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7r-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv7s-apple-ios"),
+ os: Some(Os::ios),
+ abi: None,
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("armv8r-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("avr-unknown-gnu-atmega328"),
+ os: None,
+ abi: None,
+ arch: Arch::avr,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 16,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("bpfeb-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::bpf,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("bpfel-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::bpf,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("csky-unknown-linux-gnuabiv2"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abiv2),
+ arch: Arch::csky,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("csky-unknown-linux-gnuabiv2hf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abiv2hf),
+ arch: Arch::csky,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("hexagon-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::hexagon,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("hexagon-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::hexagon,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i386-apple-ios"),
+ os: Some(Os::ios),
+ abi: Some(Abi::sim),
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i586-pc-nto-qnx700"),
+ os: Some(Os::nto),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::nto70),
+ vendor: Some(Vendor::pc),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i586-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i586-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i586-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i586-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-apple-darwin"),
+ os: Some(Os::macos),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-linux-android"),
+ os: Some(Os::android),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-pc-windows-gnu"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-pc-windows-gnullvm"),
+ os: Some(Os::windows),
+ abi: Some(Abi::llvm),
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-haiku"),
+ os: Some(Os::haiku),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-hurd-gnu"),
+ os: Some(Os::hurd),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-redox"),
+ os: Some(Os::redox),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::relibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-unknown-uefi"),
+ os: Some(Os::uefi),
+ abi: None,
+ arch: Arch::x86,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-uwp-windows-gnu"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-uwp-windows-msvc"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::x86,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-win7-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::win7),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("i686-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::x86,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("loongarch64-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::loongarch64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("loongarch64-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::loongarch64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("loongarch64-unknown-linux-ohos"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::loongarch64,
+ env: Some(Env::ohos),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("loongarch64-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::loongarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("loongarch64-unknown-none-softfloat"),
+ os: None,
+ abi: Some(Abi::softfloat),
+ arch: Arch::loongarch64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("m68k-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::m68k,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips-unknown-linux-uclibc"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips64-openwrt-linux-musl"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips64-unknown-linux-gnuabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips64-unknown-linux-muslabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips64el-unknown-linux-gnuabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mips64el-unknown-linux-muslabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-sony-psp"),
+ os: Some(Os::psp),
+ abi: None,
+ arch: Arch::mips,
+ env: None,
+ vendor: Some(Vendor::sony),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-sony-psx"),
+ os: Some(Os::psx),
+ abi: None,
+ arch: Arch::mips,
+ env: None,
+ vendor: Some(Vendor::sony),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-unknown-linux-uclibc"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::mips,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsel-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::mips,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsisa32r6-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips32r6,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsisa32r6el-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::mips32r6,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsisa64r6-unknown-linux-gnuabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64r6,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("mipsisa64r6el-unknown-linux-gnuabi64"),
+ os: Some(Os::linux),
+ abi: Some(Abi::abi64),
+ arch: Arch::mips64r6,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("msp430-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::msp430,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 16,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("nvptx64-nvidia-cuda"),
+ os: Some(Os::cuda),
+ abi: None,
+ arch: Arch::nvptx64,
+ env: None,
+ vendor: Some(Vendor::nvidia),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::powerpc,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-linux-gnuspe"),
+ os: Some(Os::linux),
+ abi: Some(Abi::spe),
+ arch: Arch::powerpc,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-linux-muslspe"),
+ os: Some(Os::linux),
+ abi: Some(Abi::spe),
+ arch: Arch::powerpc,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::powerpc,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::powerpc,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::powerpc,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc-wrs-vxworks-spe"),
+ os: Some(Os::vxworks),
+ abi: Some(Abi::spe),
+ arch: Arch::powerpc,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-ibm-aix"),
+ os: Some(Os::aix),
+ abi: Some(Abi::vec_extabi),
+ arch: Arch::powerpc64,
+ env: None,
+ vendor: Some(Vendor::ibm),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64le-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64le-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("powerpc64le-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::powerpc64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32e-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32em-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32emc-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32gc-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32gc-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32i-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32im-risc0-zkvm-elf"),
+ os: Some(Os::zkvm),
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::risc0),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32im-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32ima-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imac-esp-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imac-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imac-unknown-nuttx-elf"),
+ os: Some(Os::nuttx),
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imac-unknown-xous-elf"),
+ os: Some(Os::xous),
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imafc-esp-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imafc-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imafc-unknown-nuttx-elf"),
+ os: Some(Os::nuttx),
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imc-esp-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::riscv32,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imc-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv32imc-unknown-nuttx-elf"),
+ os: Some(Os::nuttx),
+ abi: None,
+ arch: Arch::riscv32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64-linux-android"),
+ os: Some(Os::android),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::riscv64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-fuchsia"),
+ os: Some(Os::fuchsia),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-hermit"),
+ os: Some(Os::hermit),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::riscv64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::riscv64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-nuttx-elf"),
+ os: Some(Os::nuttx),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64gc-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64imac-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("riscv64imac-unknown-nuttx-elf"),
+ os: Some(Os::nuttx),
+ abi: None,
+ arch: Arch::riscv64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("s390x-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::s390x,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("s390x-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::s390x,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparc-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::sparc,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparc-unknown-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::sparc,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparc64-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::sparc64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparc64-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::sparc64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparc64-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::sparc64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("sparcv9-sun-solaris"),
+ os: Some(Os::solaris),
+ abi: None,
+ arch: Arch::sparc64,
+ env: None,
+ vendor: Some(Vendor::sun),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::big,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv4t-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv5te-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv6m-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv6m-nuttx-eabi"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7a-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::arm,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7a-uwp-windows-msvc"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::arm,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7em-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7em-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7em-nuttx-eabi"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7em-nuttx-eabihf"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7m-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7m-nuttx-eabi"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7neon-linux-androideabi"),
+ os: Some(Os::android),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7neon-unknown-linux-gnueabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv7neon-unknown-linux-musleabihf"),
+ os: Some(Os::linux),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.base-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.base-nuttx-eabi"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.main-none-eabi"),
+ os: None,
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.main-none-eabihf"),
+ os: None,
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.main-nuttx-eabi"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabi),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("thumbv8m.main-nuttx-eabihf"),
+ os: Some(Os::nuttx),
+ abi: Some(Abi::eabihf),
+ arch: Arch::arm,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32-unknown-emscripten"),
+ os: Some(Os::emscripten),
+ abi: None,
+ arch: Arch::wasm32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix_wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32-unknown-unknown"),
+ os: Some(Os::unknown),
+ abi: None,
+ arch: Arch::wasm32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32-wasip1"),
+ os: Some(Os::wasi),
+ abi: None,
+ arch: Arch::wasm32,
+ env: Some(Env::p1),
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32-wasip1-threads"),
+ os: Some(Os::wasi),
+ abi: None,
+ arch: Arch::wasm32,
+ env: Some(Env::p1),
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32-wasip2"),
+ os: Some(Os::wasi),
+ abi: None,
+ arch: Arch::wasm32,
+ env: Some(Env::p2),
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm32v1-none"),
+ os: None,
+ abi: None,
+ arch: Arch::wasm32,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("wasm64-unknown-unknown"),
+ os: Some(Os::unknown),
+ abi: None,
+ arch: Arch::wasm64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::wasm,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-apple-darwin"),
+ os: Some(Os::macos),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-apple-ios"),
+ os: Some(Os::ios),
+ abi: Some(Abi::sim),
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-apple-ios-macabi"),
+ os: Some(Os::ios),
+ abi: Some(Abi::macabi),
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-apple-tvos"),
+ os: Some(Os::tvos),
+ abi: Some(Abi::sim),
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-apple-watchos-sim"),
+ os: Some(Os::watchos),
+ abi: Some(Abi::sim),
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-fortanix-unknown-sgx"),
+ os: Some(Os::unknown),
+ abi: Some(Abi::fortanix),
+ arch: Arch::x86_64,
+ env: Some(Env::sgx),
+ vendor: Some(Vendor::fortanix),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-linux-android"),
+ os: Some(Os::android),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-pc-nto-qnx710"),
+ os: Some(Os::nto),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::nto71),
+ vendor: Some(Vendor::pc),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-pc-solaris"),
+ os: Some(Os::solaris),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::pc),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-pc-windows-gnu"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-pc-windows-gnullvm"),
+ os: Some(Os::windows),
+ abi: Some(Abi::llvm),
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-pc-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::pc),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unikraft-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unikraft),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-dragonfly"),
+ os: Some(Os::dragonfly),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-freebsd"),
+ os: Some(Os::freebsd),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-fuchsia"),
+ os: Some(Os::fuchsia),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-haiku"),
+ os: Some(Os::haiku),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-hermit"),
+ os: Some(Os::hermit),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-hurd-gnu"),
+ os: Some(Os::hurd),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-illumos"),
+ os: Some(Os::illumos),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-l4re-uclibc"),
+ os: Some(Os::l4re),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::uclibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-linux-gnu"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-linux-gnux32"),
+ os: Some(Os::linux),
+ abi: Some(Abi::x32),
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-linux-musl"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::musl),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-linux-none"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-linux-ohos"),
+ os: Some(Os::linux),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::ohos),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-netbsd"),
+ os: Some(Os::netbsd),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-none"),
+ os: None,
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-openbsd"),
+ os: Some(Os::openbsd),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-redox"),
+ os: Some(Os::redox),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::relibc),
+ vendor: Some(Vendor::unknown),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-trusty"),
+ os: Some(Os::trusty),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-unknown-uefi"),
+ os: Some(Os::uefi),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::unknown),
+ families: Families::new_const(&[]),
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-uwp-windows-gnu"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-uwp-windows-msvc"),
+ os: Some(Os::windows),
+ abi: Some(Abi::uwp),
+ arch: Arch::x86_64,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::uwp),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-win7-windows-msvc"),
+ os: Some(Os::windows),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::msvc),
+ vendor: Some(Vendor::win7),
+ families: Families::windows,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64-wrs-vxworks"),
+ os: Some(Os::vxworks),
+ abi: None,
+ arch: Arch::x86_64,
+ env: Some(Env::gnu),
+ vendor: Some(Vendor::wrs),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("x86_64h-apple-darwin"),
+ os: Some(Os::macos),
+ abi: None,
+ arch: Arch::x86_64,
+ env: None,
+ vendor: Some(Vendor::apple),
+ families: Families::unix,
+ pointer_width: 64,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: Panic::unwind,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::xtensa,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::xtensa,
+ env: None,
+ vendor: Some(Vendor::espressif),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32s2-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::xtensa,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32s2-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::xtensa,
+ env: None,
+ vendor: Some(Vendor::espressif),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::new_const(&[]),
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32s3-espidf"),
+ os: Some(Os::espidf),
+ abi: None,
+ arch: Arch::xtensa,
+ env: Some(Env::newlib),
+ vendor: Some(Vendor::espressif),
+ families: Families::unix,
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+ TargetInfo {
+ triple: Triple::new_const("xtensa-esp32s3-none-elf"),
+ os: None,
+ abi: None,
+ arch: Arch::xtensa,
+ env: None,
+ vendor: Some(Vendor::espressif),
+ families: Families::new_const(&[]),
+ pointer_width: 32,
+ endian: Endian::little,
+ has_atomics: HasAtomics::atomic_8_16_32_ptr,
+ panic: Panic::abort,
+ },
+];
+
+impl super::Abi {
+ pub const abi64: Abi = Abi::new_const("abi64");
+ pub const abiv2: Abi = Abi::new_const("abiv2");
+ pub const abiv2hf: Abi = Abi::new_const("abiv2hf");
+ pub const eabi: Abi = Abi::new_const("eabi");
+ pub const eabihf: Abi = Abi::new_const("eabihf");
+ pub const fortanix: Abi = Abi::new_const("fortanix");
+ pub const ilp32: Abi = Abi::new_const("ilp32");
+ pub const llvm: Abi = Abi::new_const("llvm");
+ pub const macabi: Abi = Abi::new_const("macabi");
+ pub const sim: Abi = Abi::new_const("sim");
+ pub const softfloat: Abi = Abi::new_const("softfloat");
+ pub const spe: Abi = Abi::new_const("spe");
+ pub const uwp: Abi = Abi::new_const("uwp");
+ pub const vec_extabi: Abi = Abi::new_const("vec-extabi");
+ pub const x32: Abi = Abi::new_const("x32");
+}
+
+impl super::Arch {
+ pub const aarch64: Arch = Arch::new_const("aarch64");
+ pub const arm: Arch = Arch::new_const("arm");
+ pub const arm64ec: Arch = Arch::new_const("arm64ec");
+ pub const avr: Arch = Arch::new_const("avr");
+ pub const bpf: Arch = Arch::new_const("bpf");
+ pub const csky: Arch = Arch::new_const("csky");
+ pub const hexagon: Arch = Arch::new_const("hexagon");
+ pub const loongarch64: Arch = Arch::new_const("loongarch64");
+ pub const m68k: Arch = Arch::new_const("m68k");
+ pub const mips: Arch = Arch::new_const("mips");
+ pub const mips32r6: Arch = Arch::new_const("mips32r6");
+ pub const mips64: Arch = Arch::new_const("mips64");
+ pub const mips64r6: Arch = Arch::new_const("mips64r6");
+ pub const msp430: Arch = Arch::new_const("msp430");
+ pub const nvptx64: Arch = Arch::new_const("nvptx64");
+ pub const powerpc: Arch = Arch::new_const("powerpc");
+ pub const powerpc64: Arch = Arch::new_const("powerpc64");
+ pub const riscv32: Arch = Arch::new_const("riscv32");
+ pub const riscv64: Arch = Arch::new_const("riscv64");
+ pub const s390x: Arch = Arch::new_const("s390x");
+ pub const sparc: Arch = Arch::new_const("sparc");
+ pub const sparc64: Arch = Arch::new_const("sparc64");
+ pub const wasm32: Arch = Arch::new_const("wasm32");
+ pub const wasm64: Arch = Arch::new_const("wasm64");
+ pub const x86: Arch = Arch::new_const("x86");
+ pub const x86_64: Arch = Arch::new_const("x86_64");
+ pub const xtensa: Arch = Arch::new_const("xtensa");
+}
+
+impl super::Vendor {
+ pub const apple: Vendor = Vendor::new_const("apple");
+ pub const espressif: Vendor = Vendor::new_const("espressif");
+ pub const fortanix: Vendor = Vendor::new_const("fortanix");
+ pub const ibm: Vendor = Vendor::new_const("ibm");
+ pub const kmc: Vendor = Vendor::new_const("kmc");
+ pub const nintendo: Vendor = Vendor::new_const("nintendo");
+ pub const nvidia: Vendor = Vendor::new_const("nvidia");
+ pub const pc: Vendor = Vendor::new_const("pc");
+ pub const risc0: Vendor = Vendor::new_const("risc0");
+ pub const sony: Vendor = Vendor::new_const("sony");
+ pub const sun: Vendor = Vendor::new_const("sun");
+ pub const unikraft: Vendor = Vendor::new_const("unikraft");
+ pub const unknown: Vendor = Vendor::new_const("unknown");
+ pub const uwp: Vendor = Vendor::new_const("uwp");
+ pub const win7: Vendor = Vendor::new_const("win7");
+ pub const wrs: Vendor = Vendor::new_const("wrs");
+}
+
+impl super::Os {
+ pub const aix: Os = Os::new_const("aix");
+ pub const android: Os = Os::new_const("android");
+ pub const cuda: Os = Os::new_const("cuda");
+ pub const dragonfly: Os = Os::new_const("dragonfly");
+ pub const emscripten: Os = Os::new_const("emscripten");
+ pub const espidf: Os = Os::new_const("espidf");
+ pub const freebsd: Os = Os::new_const("freebsd");
+ pub const fuchsia: Os = Os::new_const("fuchsia");
+ pub const haiku: Os = Os::new_const("haiku");
+ pub const hermit: Os = Os::new_const("hermit");
+ pub const horizon: Os = Os::new_const("horizon");
+ pub const hurd: Os = Os::new_const("hurd");
+ pub const illumos: Os = Os::new_const("illumos");
+ pub const ios: Os = Os::new_const("ios");
+ pub const l4re: Os = Os::new_const("l4re");
+ pub const linux: Os = Os::new_const("linux");
+ pub const macos: Os = Os::new_const("macos");
+ pub const netbsd: Os = Os::new_const("netbsd");
+ pub const nto: Os = Os::new_const("nto");
+ pub const nuttx: Os = Os::new_const("nuttx");
+ pub const openbsd: Os = Os::new_const("openbsd");
+ pub const psp: Os = Os::new_const("psp");
+ pub const psx: Os = Os::new_const("psx");
+ pub const redox: Os = Os::new_const("redox");
+ pub const rtems: Os = Os::new_const("rtems");
+ pub const solaris: Os = Os::new_const("solaris");
+ pub const solid_asp3: Os = Os::new_const("solid_asp3");
+ pub const teeos: Os = Os::new_const("teeos");
+ pub const trusty: Os = Os::new_const("trusty");
+ pub const tvos: Os = Os::new_const("tvos");
+ pub const uefi: Os = Os::new_const("uefi");
+ pub const unknown: Os = Os::new_const("unknown");
+ pub const visionos: Os = Os::new_const("visionos");
+ pub const vita: Os = Os::new_const("vita");
+ pub const vxworks: Os = Os::new_const("vxworks");
+ pub const wasi: Os = Os::new_const("wasi");
+ pub const watchos: Os = Os::new_const("watchos");
+ pub const windows: Os = Os::new_const("windows");
+ pub const xous: Os = Os::new_const("xous");
+ pub const zkvm: Os = Os::new_const("zkvm");
+}
+
+impl super::Family {
+ pub const unix: Family = Family::new_const("unix");
+ pub const wasm: Family = Family::new_const("wasm");
+ pub const windows: Family = Family::new_const("windows");
+}
+
+const __families_unix: &[Family] = &[Family::unix];
+const __families_unix_wasm: &[Family] = &[Family::unix, Family::wasm];
+const __families_wasm: &[Family] = &[Family::wasm];
+const __families_windows: &[Family] = &[Family::windows];
+
+impl super::Families {
+ pub const unix: Families = Families::new_const(__families_unix);
+ pub const unix_wasm: Families = Families::new_const(__families_unix_wasm);
+ pub const wasm: Families = Families::new_const(__families_wasm);
+ pub const windows: Families = Families::new_const(__families_windows);
+}
+
+impl super::Env {
+ pub const gnu: Env = Env::new_const("gnu");
+ pub const msvc: Env = Env::new_const("msvc");
+ pub const musl: Env = Env::new_const("musl");
+ pub const newlib: Env = Env::new_const("newlib");
+ pub const nto70: Env = Env::new_const("nto70");
+ pub const nto71: Env = Env::new_const("nto71");
+ pub const ohos: Env = Env::new_const("ohos");
+ pub const p1: Env = Env::new_const("p1");
+ pub const p2: Env = Env::new_const("p2");
+ pub const relibc: Env = Env::new_const("relibc");
+ pub const sgx: Env = Env::new_const("sgx");
+ pub const uclibc: Env = Env::new_const("uclibc");
+}
+
+const __has_atomics_8_16_32_64_128_ptr: &[HasAtomic] = &[
+ HasAtomic::IntegerSize(8),
+ HasAtomic::IntegerSize(16),
+ HasAtomic::IntegerSize(32),
+ HasAtomic::IntegerSize(64),
+ HasAtomic::IntegerSize(128),
+ HasAtomic::Pointer,
+];
+const __has_atomics_8_16_32_64_ptr: &[HasAtomic] = &[
+ HasAtomic::IntegerSize(8),
+ HasAtomic::IntegerSize(16),
+ HasAtomic::IntegerSize(32),
+ HasAtomic::IntegerSize(64),
+ HasAtomic::Pointer,
+];
+const __has_atomics_8_16_32_ptr: &[HasAtomic] = &[
+ HasAtomic::IntegerSize(8),
+ HasAtomic::IntegerSize(16),
+ HasAtomic::IntegerSize(32),
+ HasAtomic::Pointer,
+];
+
+impl super::HasAtomics {
+ pub const atomic_8_16_32_64_128_ptr: HasAtomics =
+ HasAtomics::new_const(__has_atomics_8_16_32_64_128_ptr);
+ pub const atomic_8_16_32_64_ptr: HasAtomics =
+ HasAtomics::new_const(__has_atomics_8_16_32_64_ptr);
+ pub const atomic_8_16_32_ptr: HasAtomics = HasAtomics::new_const(__has_atomics_8_16_32_ptr);
+}
+
+impl super::Panic {
+ pub const abort: Panic = Panic::new_const("abort");
+ pub const unwind: Panic = Panic::new_const("unwind");
+}
diff --git a/crates/cfg-expr/tests/eval.rs b/crates/cfg-expr/tests/eval.rs
new file mode 100644
index 0000000..c418389
--- /dev/null
+++ b/crates/cfg-expr/tests/eval.rs
@@ -0,0 +1,390 @@
+use cfg_expr::{
+ expr::{Predicate, TargetMatcher},
+ targets::{get_builtin_target_by_triple, ALL_BUILTINS as all},
+ Expression, TargetPredicate,
+};
+
+struct Target {
+ builtin: &'static cfg_expr::targets::TargetInfo,
+ #[cfg(feature = "targets")]
+ lexicon: Option<target_lexicon::Triple>,
+}
+
+impl Target {
+ fn make(s: &str) -> Self {
+ Self {
+ builtin: get_builtin_target_by_triple(s).unwrap(),
+ #[cfg(feature = "targets")]
+ lexicon: {
+ // Hack to workaround the addition in 1.48.0 of this weird, non-conformant
+ // target triple, until https://github.com/bytecodealliance/target-lexicon/issues/63 is
+ // resolved in a satisfactory manner, not really concerned about
+ // the presence of this triple in most normal cases
+ use target_lexicon as tl;
+ match s {
+ "avr-unknown-gnu-atmega328" => Some(tl::Triple {
+ architecture: tl::Architecture::Avr,
+ vendor: tl::Vendor::Unknown,
+ operating_system: tl::OperatingSystem::Unknown,
+ environment: tl::Environment::Unknown,
+ binary_format: tl::BinaryFormat::Unknown,
+ }),
+ triple => match triple.parse::<tl::Triple>() {
+ Ok(l) => Some(l),
+ Err(e) => {
+ // There are enough new weird architectures added in each version of
+ // Rust that it is difficult to keep target-lexicon aware of all of
+ // them. So try parsing this triple, but don't fail if it doesn't work.
+ eprintln!("failed to parse '{triple}': {e:?}");
+ None
+ }
+ },
+ }
+ },
+ }
+ }
+}
+
+macro_rules! tg_match {
+ ($pred:expr, $target:expr) => {
+ match $pred {
+ Predicate::Target(tg) => {
+ let tinfo = tg.matches($target.builtin);
+
+ #[cfg(feature = "targets")]
+ if !matches!(tg, TargetPredicate::HasAtomic(_))
+ && !matches!(tg, TargetPredicate::Panic(_))
+ {
+ if let Some(l) = &$target.lexicon {
+ let linfo = tg.matches(l);
+ assert_eq!(
+ tinfo, linfo,
+ "{:#?} builtin didn't match lexicon {:#?} for predicate {tg:#?}",
+ $target.builtin, $target.lexicon,
+ );
+
+ return linfo;
+ }
+ }
+
+ tinfo
+ }
+ _ => panic!("not a target predicate"),
+ }
+ };
+
+ ($pred:expr, $target:expr, $feats:expr) => {
+ match $pred {
+ Predicate::Target(tg) => {
+ let tinfo = tg.matches($target.builtin);
+
+ #[cfg(feature = "targets")]
+ if !matches!(tg, TargetPredicate::HasAtomic(_))
+ && !matches!(tg, TargetPredicate::Panic(_))
+ {
+ if let Some(l) = &$target.lexicon {
+ let linfo = tg.matches(l);
+ assert_eq!(
+ tinfo, linfo,
+ "{:#?} builtin didn't match lexicon {:#?} for predicate {tg:#?}",
+ $target.builtin, $target.lexicon,
+ );
+
+ return linfo;
+ }
+ }
+
+ tinfo
+ }
+ Predicate::TargetFeature(feat) => $feats.iter().find(|f| *f == feat).is_some(),
+ _ => panic!("not a target predicate"),
+ }
+ };
+}
+
+#[test]
+fn target_family() {
+ let matches_any_family =
+ Expression::parse("any(unix, target_family = \"windows\", target_family = \"wasm\")")
+ .unwrap();
+ let impossible = Expression::parse("all(windows, target_family = \"unix\")").unwrap();
+
+ for target in all {
+ let target = Target::make(target.triple.as_str());
+ if target.builtin.families.is_empty() {
+ assert!(!matches_any_family.eval(|pred| { tg_match!(pred, target) }));
+ } else {
+ assert!(matches_any_family.eval(|pred| { tg_match!(pred, target) }));
+ }
+ assert!(!impossible.eval(|pred| { tg_match!(pred, target) }));
+ }
+}
+
+#[test]
+fn tiny() {
+ assert!(Expression::parse("all()").unwrap().eval(|_| false));
+ assert!(!Expression::parse("any()").unwrap().eval(|_| true));
+ assert!(!Expression::parse("not(all())").unwrap().eval(|_| false));
+ assert!(Expression::parse("not(any())").unwrap().eval(|_| true));
+ assert!(Expression::parse("all(not(blah))").unwrap().eval(|_| false));
+ assert!(!Expression::parse("any(not(blah))").unwrap().eval(|_| true));
+}
+
+#[test]
+fn very_specific() {
+ let specific = Expression::parse(
+ r#"all(
+ target_os = "windows",
+ target_arch = "x86",
+ windows,
+ target_env = "msvc",
+ target_feature = "fxsr",
+ target_feature = "sse",
+ target_feature = "sse2",
+ target_pointer_width = "32",
+ target_endian = "little",
+ not(target_vendor = "uwp"),
+ target_has_atomic = "8",
+ target_has_atomic = "16",
+ target_has_atomic = "32",
+ target_has_atomic = "64",
+ not(target_has_atomic = "128"),
+ target_has_atomic = "ptr",
+ panic = "unwind",
+ not(panic = "abort"),
+ )"#,
+ )
+ .unwrap();
+
+ for target in all {
+ let t = Target::make(target.triple.as_str());
+ assert_eq!(
+ matches!(
+ target.triple.as_str(),
+ "i686-pc-windows-msvc" | "i586-pc-windows-msvc" | "i686-win7-windows-msvc"
+ ),
+ specific.eval(|pred| { tg_match!(pred, t, &["fxsr", "sse", "sse2"]) }),
+ "expected true for i686-pc-windows-msvc, but got true for {}",
+ target.triple,
+ );
+ }
+
+ for target in all {
+ let expr = format!(
+ r#"cfg(
+ all(
+ target_arch = "{}",
+ {}
+ {}
+ target_env = "{}"
+ )
+ )"#,
+ target.arch.0,
+ if let Some(v) = &target.vendor {
+ format!(r#"target_vendor = "{}","#, v.0)
+ } else {
+ "".to_owned()
+ },
+ if let Some(v) = &target.os {
+ format!(r#"target_os = "{}","#, v.0)
+ } else {
+ "".to_owned()
+ },
+ target.env.as_ref().map_or("", |e| e.as_str()),
+ );
+
+ let specific = Expression::parse(&expr).unwrap();
+
+ let t = Target::make(target.triple.as_str());
+ assert!(
+ specific.eval(|pred| {
+ if target.triple.as_str() == "mips64-openwrt-linux-musl" {
+ if let Predicate::Target(TargetPredicate::Vendor(vendor)) = pred {
+ // This is a special predicate that doesn't follow the usual rules for
+ // target-lexicon.
+ return t.builtin.matches(&TargetPredicate::Vendor(vendor.clone()));
+ }
+ }
+ tg_match!(pred, t)
+ }),
+ "failed expression '{}' for {:#?}",
+ expr,
+ t.builtin,
+ );
+ }
+}
+
+#[test]
+fn complex() {
+ let complex = Expression::parse(r#"cfg(all(unix, not(any(target_os="macos", target_os="android", target_os="emscripten"))))"#).unwrap();
+
+ // Should match linuxes
+ let linux_gnu = Target::make("x86_64-unknown-linux-gnu");
+ let linux_musl = Target::make("x86_64-unknown-linux-musl");
+
+ assert!(complex.eval(|pred| tg_match!(pred, linux_gnu)));
+ assert!(complex.eval(|pred| tg_match!(pred, linux_musl)));
+
+ // Should *not* match windows or mac or android
+ let windows_msvc = Target::make("x86_64-pc-windows-msvc");
+ let mac = Target::make("x86_64-apple-darwin");
+ let android = Target::make("aarch64-linux-android");
+
+ assert!(!complex.eval(|pred| tg_match!(pred, windows_msvc)));
+ assert!(!complex.eval(|pred| tg_match!(pred, mac)));
+ assert!(!complex.eval(|pred| tg_match!(pred, android)));
+
+ let complex =
+ Expression::parse(r#"all(not(target_os = "ios"), not(target_os = "android"))"#).unwrap();
+
+ assert!(complex.eval(|pred| tg_match!(pred, linux_gnu)));
+ assert!(complex.eval(|pred| tg_match!(pred, linux_musl)));
+ assert!(complex.eval(|pred| tg_match!(pred, windows_msvc)));
+ assert!(complex.eval(|pred| tg_match!(pred, mac)));
+ assert!(!complex.eval(|pred| tg_match!(pred, android)));
+
+ let complex = Expression::parse(r#"all(any(unix, target_arch="x86"), not(any(target_os="android", target_os="emscripten")))"#).unwrap();
+
+ // Should match linuxes and mac
+ assert!(complex.eval(|pred| tg_match!(pred, linux_gnu)));
+ assert!(complex.eval(|pred| tg_match!(pred, linux_musl)));
+ assert!(complex.eval(|pred| tg_match!(pred, mac)));
+
+ // Should *not* match x86_64 windows or android
+ assert!(!complex.eval(|pred| tg_match!(pred, windows_msvc)));
+ assert!(!complex.eval(|pred| tg_match!(pred, android)));
+
+ // Ensure that target_os = "none" matches against Os == None.
+ let complex = Expression::parse(r#"all(target_os="none")"#).unwrap();
+ let armebv7r_none_eabi = Target::make("armebv7r-none-eabi");
+ assert!(!complex.eval(|pred| tg_match!(pred, linux_gnu)));
+ assert!(complex.eval(|pred| tg_match!(pred, armebv7r_none_eabi)));
+}
+
+#[test]
+fn unstable_target_abi() {
+ let linux_gnu = Target::make("x86_64-unknown-linux-gnu");
+ let linux_musl = Target::make("x86_64-unknown-linux-musl");
+ let windows_msvc = Target::make("x86_64-pc-windows-msvc");
+ let mac = Target::make("x86_64-apple-darwin");
+ let android = Target::make("aarch64-linux-android");
+
+ let target_with_abi_that_matches = cfg_expr::targets::TargetInfo {
+ triple: cfg_expr::targets::Triple::new_const("aarch64-apple-darwin"),
+ os: None,
+ abi: Some(cfg_expr::targets::Abi::new_const("eabihf")),
+ arch: cfg_expr::targets::Arch::aarch64,
+ env: None,
+ vendor: None,
+ families: cfg_expr::targets::Families::unix,
+ pointer_width: 64,
+ endian: cfg_expr::targets::Endian::little,
+ has_atomics: cfg_expr::targets::HasAtomics::atomic_8_16_32_64_128_ptr,
+ panic: cfg_expr::targets::Panic::unwind,
+ };
+
+ let target_with_abi_that_doesnt_match = cfg_expr::targets::TargetInfo {
+ abi: Some(cfg_expr::targets::Abi::new_const("ilp32")),
+ ..target_with_abi_that_matches.clone()
+ };
+
+ let abi_pred =
+ Expression::parse(r#"cfg(any(target_arch = "wasm32", target_abi = "eabihf"))"#).unwrap();
+
+ // Should match a specified target_abi that's the same
+ assert!(abi_pred.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(&target_with_abi_that_matches),
+ _ => false,
+ }
+ }));
+
+ // Should *not* match a specified target_abi that isn't the same
+ assert!(!abi_pred.eval(|pred| {
+ match pred {
+ Predicate::Target(tp) => tp.matches(&target_with_abi_that_doesnt_match),
+ _ => false,
+ }
+ }));
+
+ // Should *not* match any builtins at this point because target_abi isn't stable
+ assert!(!abi_pred.eval(|pred| tg_match!(pred, linux_gnu)));
+ assert!(!abi_pred.eval(|pred| tg_match!(pred, linux_musl)));
+ assert!(!abi_pred.eval(|pred| tg_match!(pred, mac)));
+ assert!(!abi_pred.eval(|pred| tg_match!(pred, windows_msvc)));
+ assert!(!abi_pred.eval(|pred| tg_match!(pred, android)));
+}
+
+#[test]
+fn wasm_family() {
+ let wasm = Expression::parse(r#"cfg(target_family = "wasm")"#).unwrap();
+
+ let wasm32_unknown = Target::make("wasm32-unknown-unknown");
+ let wasm32_emscripten = Target::make("wasm32-unknown-emscripten");
+ let wasm32_wasip1 = Target::make("wasm32-wasip1");
+ let wasm32_wasip1_threads = Target::make("wasm32-wasip1-threads");
+ let wasm32_wasip2 = Target::make("wasm32-wasip2");
+ let wasm32v1_none = Target::make("wasm32v1-none");
+ let wasm64_unknown = Target::make("wasm64-unknown-unknown");
+
+ // All of the above targets match.
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32_unknown)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32_emscripten)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32_wasip1)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32_wasip1_threads)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32_wasip2)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm32v1_none)));
+ assert!(wasm.eval(|pred| tg_match!(pred, wasm64_unknown)));
+}
+
+#[test]
+fn features() {
+ let enabled = ["good", "bad", "ugly"];
+
+ let many_features = Expression::parse(
+ r#"all(feature = "good", feature = "bad", feature = "ugly", not(feature = "nope"))"#,
+ )
+ .unwrap();
+
+ assert!(many_features.eval(|pred| {
+ match pred {
+ Predicate::Feature(name) => enabled.contains(name),
+ _ => false,
+ }
+ }));
+
+ let feature_and_target_feature =
+ Expression::parse(r#"all(feature = "make_fast", target_feature = "sse4.2")"#).unwrap();
+
+ assert!(feature_and_target_feature.eval(|pred| {
+ match pred {
+ Predicate::Feature(name) => *name == "make_fast",
+ Predicate::TargetFeature(feat) => *feat == "sse4.2",
+ _ => false,
+ }
+ }));
+
+ assert_eq!(
+ feature_and_target_feature.eval(|pred| {
+ match pred {
+ Predicate::Feature(_) => Some(false),
+ Predicate::TargetFeature(_) => None,
+ _ => panic!("unexpected predicate"),
+ }
+ }),
+ Some(false),
+ "all() with Some(false) and None evaluates to Some(false)"
+ );
+
+ assert_eq!(
+ feature_and_target_feature.eval(|pred| {
+ match pred {
+ Predicate::Feature(_) => Some(true),
+ Predicate::TargetFeature(_) => None,
+ _ => panic!("unexpected predicate"),
+ }
+ }),
+ None,
+ "all() with Some(true) and None evaluates to None"
+ );
+}
diff --git a/crates/cfg-expr/tests/lexer.rs b/crates/cfg-expr/tests/lexer.rs
new file mode 100644
index 0000000..f0c5765
--- /dev/null
+++ b/crates/cfg-expr/tests/lexer.rs
@@ -0,0 +1,64 @@
+use cfg_expr::expr::lexer::{Lexer, Token};
+
+macro_rules! test_lex {
+ ($text:expr, [$($token:expr),+$(,)?]) => {
+ let lexed: Vec<_> = Lexer::new($text).map(|lt| lt.unwrap().token).collect();
+ let expected = vec![$($token),+];
+
+ assert_eq!(lexed, expected);
+ }
+}
+
+#[test]
+fn handles_raw() {
+ test_lex!("key", [Token::Key("key")]);
+}
+
+#[test]
+fn strips_attribute() {
+ test_lex!("cfg(key)", [Token::Key("key")]);
+}
+
+#[test]
+fn handle_key_value() {
+ test_lex!(
+ "key = \"value\"",
+ [Token::Key("key"), Token::Equals, Token::Value("value"),]
+ );
+}
+
+#[test]
+fn handle_empty_value() {
+ test_lex!(
+ "key = \"\"",
+ [Token::Key("key"), Token::Equals, Token::Value(""),]
+ );
+}
+
+#[test]
+fn handle_short_key() {
+ test_lex!("k", [Token::Key("k"),]);
+}
+
+#[test]
+fn handle_cfg_keywords() {
+ test_lex!(
+ "all(any(not(anyblah,allnope,notany)))",
+ [
+ Token::All,
+ Token::OpenParen,
+ Token::Any,
+ Token::OpenParen,
+ Token::Not,
+ Token::OpenParen,
+ Token::Key("anyblah"),
+ Token::Comma,
+ Token::Key("allnope"),
+ Token::Comma,
+ Token::Key("notany"),
+ Token::CloseParen,
+ Token::CloseParen,
+ Token::CloseParen,
+ ]
+ );
+}
diff --git a/crates/cfg-expr/tests/parser.rs b/crates/cfg-expr/tests/parser.rs
new file mode 100644
index 0000000..d2cb873
--- /dev/null
+++ b/crates/cfg-expr/tests/parser.rs
@@ -0,0 +1,166 @@
+use cfg_expr::{
+ error::Reason,
+ expr::{Predicate as P, TargetPredicate as TP},
+ targets::*,
+ Expression, ParseError,
+};
+
+macro_rules! test_validate {
+ (ok [$($text:expr => [$($expected:expr),*$(,)?]),+$(,)?]) => {
+ $(
+ let val_expr = Expression::parse($text).unwrap();
+ let mut preds = val_expr.predicates().enumerate();
+
+ $(
+ let actual = preds.next().unwrap();
+
+ similar_asserts::assert_eq!($expected, actual.1, "failed @ index {}", actual.0);
+ )*
+
+ if let Some((_, additional)) = preds.next() {
+ assert!(false, "found additional requirement {:?}", additional);
+ }
+ )+
+ };
+}
+
+macro_rules! err {
+ ($text:expr => $reason:ident @ $range:expr) => {
+ let act_err = Expression::parse($text).unwrap_err();
+
+ let expected = ParseError {
+ original: $text.to_owned(),
+ span: $range,
+ reason: Reason::$reason,
+ };
+
+ similar_asserts::assert_eq!(expected, act_err);
+ };
+
+ ($text:expr => $unexpected:expr; $range:expr) => {
+ let act_err = Expression::parse($text).unwrap_err();
+
+ let expected = ParseError {
+ original: $text.to_owned(),
+ span: $range,
+ reason: Reason::Unexpected($unexpected),
+ };
+
+ similar_asserts::assert_eq!(expected, act_err);
+ };
+}
+
+#[test]
+fn fails_empty() {
+ err!("" => Empty @ 0..0);
+ err!(" " => Empty @ 0..1);
+ err!("\n\t\n" => Empty @ 0..3);
+}
+
+#[test]
+fn fails_malformed() {
+ err!("," => &["<key>", "all", "any", "not"]; 0..1);
+ // Keys can't begin with a number
+ err!("8" => &["<key>", "all", "any", "not"]; 0..1);
+ err!("=" => &["<key>", "all", "any", "not"]; 0..1);
+ err!("(" => &["<key>", "all", "any", "not"]; 0..1);
+ err!("key =" => &["\"<value>\""]; 5..5);
+ err!("key1, key2" => MultipleRootPredicates @ 0..10);
+ err!("key1, key2, " => MultipleRootPredicates @ 0..16);
+ err!("key1 = \"v\", key2" => MultipleRootPredicates @ 0..16);
+}
+
+#[test]
+fn fails_unbalanced_parens() {
+ err!("not(key" => UnclosedParens @ 3..7);
+ err!("key)" => UnopenedParens @ 3..4);
+ err!("foo (" => &["=", ",", ")"]; 4..5);
+}
+
+#[test]
+fn fails_unbalanced_quotes() {
+ err!("key = \"value" => UnclosedQuotes @ 6..12);
+ err!("key = \"" => UnclosedQuotes @ 6..7);
+ err!("key = \"value, key = \"value\"" => &[",", ")"]; 21..26);
+ err!("all(key = \"value), key = \"value\"" => &[",", ")"]; 26..31);
+ err!("not(key = \"value)" => UnclosedQuotes @ 10..17);
+}
+
+#[test]
+#[allow(clippy::cognitive_complexity)]
+fn handles_single_predicate() {
+ test_validate!(ok [
+ "cfg(key)" => [P::Flag("key")],
+ "unix" => [P::Target(TP::Family(Family::unix))],
+ "target_arch = \"mips\"" => [P::Target(TP::Arch(Arch::mips))],
+ "feature = \"awesome\"" => [P::Feature("awesome")],
+ "_key" => [P::Flag("_key")],
+ " key" => [P::Flag("key")],
+ " key " => [P::Flag("key")],
+ " key = \"val\"" => [P::KeyValue{ key: "key", val: "val" }],
+ "key=\"\"" => [P::KeyValue{ key: "key", val: "" }],
+ " key=\"7\" " => [P::KeyValue{ key: "key", val: "7" }],
+ "key = \"7 q\" " => [P::KeyValue{ key: "key", val: "7 q" }],
+ "target_has_atomic = \"ptr\"" => [P::Target(TP::HasAtomic(HasAtomic::Pointer))],
+ "target_has_atomic = \"4\"" => [P::Target(TP::HasAtomic(HasAtomic::IntegerSize(4)))],
+ "target_has_atomic = \"64\"" => [P::Target(TP::HasAtomic(HasAtomic::IntegerSize(64)))],
+ "target_has_atomic = \"128\" " => [P::Target(TP::HasAtomic(HasAtomic::IntegerSize(128)))],
+ "panic = \"unwind\"" => [P::Target(TP::Panic(Panic("unwind".into())))],
+ "panic = \"abort\"" => [P::Target(TP::Panic(Panic("abort".into())))],
+ ]);
+}
+
+#[test]
+fn handles_simple_funcs() {
+ test_validate!(ok [
+ "any()" => [],
+ "all()" => [],
+ "not(key = \"value\")" => [P::KeyValue { key: "key", val: "value" }],
+ ]);
+}
+
+#[test]
+fn fails_invalid_funcs() {
+ err!("nope()" => &["=", ",", ")"]; 4..5);
+ err!("all(nope())" => &["=", ",", ")"]; 8..9);
+ err!("any(,)" => &["<key>", ")", "all", "any", "not"]; 4..5);
+ err!("blah(key)" => &["=", ",", ")"]; 4..5);
+}
+
+#[test]
+fn ensures_not_has_one_predicate() {
+ assert_eq!(
+ Expression::parse("not()").unwrap_err(),
+ ParseError {
+ original: "not()".to_owned(),
+ span: 0..5,
+ reason: Reason::InvalidNot(0),
+ }
+ );
+
+ assert_eq!(
+ Expression::parse("not(key_one, key_two)").unwrap_err(),
+ ParseError {
+ original: "not(key_one, key_two)".to_owned(),
+ span: 0..21,
+ reason: Reason::InvalidNot(2),
+ }
+ );
+
+ assert_eq!(
+ Expression::parse("any(not(not(key_one, key_two)))").unwrap_err(),
+ ParseError {
+ original: "any(not(not(key_one, key_two)))".to_owned(),
+ span: 8..29,
+ reason: Reason::InvalidNot(2),
+ }
+ );
+
+ test_validate!(ok [
+ "not(key)" => [P::Flag("key")],
+ "not(key,)" => [P::Flag("key")],
+ "not(key = \"value\")" => [P::KeyValue { key: "key", val: "value" }],
+ "not(key = \"value\",)" => [P::KeyValue { key: "key", val: "value" }],
+ "not(not(not(key = \"value\",)))" => [P::KeyValue { key: "key", val: "value" }],
+ ]);
+}
diff --git a/crates/clang-sys/.android-checksum.json b/crates/clang-sys/.android-checksum.json
index 1f05a14..954c184 100644
--- a/crates/clang-sys/.android-checksum.json
+++ b/crates/clang-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"24ae29c3b1856b7dce1de80bf3af2141d3c016ecae06fc3846c96e5327c645bb","Android.bp":"4a37f23e5a3bcc7d24a4a5a26ea4c0bf28662d342510eb3809850459033d2469","CHANGELOG.md":"190149c2c882dae2926e9cb336f48f93de3a7e4601c97a8079799b50ebb4a877","Cargo.toml":"dcd6596094be5c921657f1570e3809fc4408a7f3f201109e63106a955d52373b","LICENSE":"2f4da1447e6b4f297a48ccf0fb9c9a35ee94529f7dc180c9fc0b89c6acd715a8","LICENSE.txt":"2f4da1447e6b4f297a48ccf0fb9c9a35ee94529f7dc180c9fc0b89c6acd715a8","METADATA":"62ec7848da678aca11a13e9822097039ac945ff8cfb56b28e0e65df30c9e1e30","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"de20090adfb8a70ce818d9c6cff7f23a4f71f451e87c377eac39a76a78b31ec2","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","build.rs":"ba2d4635dda64e35e8f1c9853d420ac6745d568777efc00b5be5077df2855a2f","build/common.rs":"6c8a561ac7d9b585c8d73fbe62d18c05bc0d8657f6367d97161e891db44d9d70","build/dynamic.rs":"bd7ecca72b095ef57193b5b1382cc4d2094879f5e3526c5ad289122191ed03dd","build/macros.rs":"164c5d99befb840e60b4580709e8603d8e6daf7aa205906a6addeacbca1ceaaa","build/static.rs":"fe42463af1069acb5f3b4ef5c6e6dbbbd8bbc4fd381619fc957b0f664f2de6ac","cargo_embargo.json":"369c4bf0abc3367f14bb9b167e349ab0b911497c2a02b4e1c2a27150f7811209","clippy.toml":"653f7a5160598173cf214209159c862dc2984437cb17dc35524dc948e1855a2d","out/common.rs":"6c8a561ac7d9b585c8d73fbe62d18c05bc0d8657f6367d97161e891db44d9d70","out/dynamic.rs":"bd7ecca72b095ef57193b5b1382cc4d2094879f5e3526c5ad289122191ed03dd","out/macros.rs":"164c5d99befb840e60b4580709e8603d8e6daf7aa205906a6addeacbca1ceaaa","src/lib.rs":"b9fe1ff5cd85a876251183d8e6b191c1214ba129e607fedad27d29bea71345ba","src/link.rs":"cc08dae19e7b63a2bc7162f3c93c6690741333e466b7a88e1cee60f0facaf72a","src/support.rs":"b7f04d3b8fde7828f24bf4492f0050c14bef1256438b38216e07fb9090d3d311","tests/build.rs":"98de73996c255035be111ade2b5176b0e5569f8969f59ce0c417ffb297a9cb81","tests/header.h":"89d66e5a42d84035b38fdb26085c916537a52a1be291eac1fdae7a94257cf476","tests/lib.rs":"941b104a3ef009307b43318850d36ed2cb86f6e0db20ab1700ae941a11e90a97"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"24ae29c3b1856b7dce1de80bf3af2141d3c016ecae06fc3846c96e5327c645bb","Android.bp":"4a37f23e5a3bcc7d24a4a5a26ea4c0bf28662d342510eb3809850459033d2469","CHANGELOG.md":"190149c2c882dae2926e9cb336f48f93de3a7e4601c97a8079799b50ebb4a877","Cargo.toml":"dcd6596094be5c921657f1570e3809fc4408a7f3f201109e63106a955d52373b","LICENSE":"2f4da1447e6b4f297a48ccf0fb9c9a35ee94529f7dc180c9fc0b89c6acd715a8","LICENSE.txt":"2f4da1447e6b4f297a48ccf0fb9c9a35ee94529f7dc180c9fc0b89c6acd715a8","METADATA":"62ec7848da678aca11a13e9822097039ac945ff8cfb56b28e0e65df30c9e1e30","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"de20090adfb8a70ce818d9c6cff7f23a4f71f451e87c377eac39a76a78b31ec2","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","build.rs":"ba2d4635dda64e35e8f1c9853d420ac6745d568777efc00b5be5077df2855a2f","build/common.rs":"6c8a561ac7d9b585c8d73fbe62d18c05bc0d8657f6367d97161e891db44d9d70","build/dynamic.rs":"bd7ecca72b095ef57193b5b1382cc4d2094879f5e3526c5ad289122191ed03dd","build/macros.rs":"164c5d99befb840e60b4580709e8603d8e6daf7aa205906a6addeacbca1ceaaa","build/static.rs":"fe42463af1069acb5f3b4ef5c6e6dbbbd8bbc4fd381619fc957b0f664f2de6ac","cargo_embargo.json":"a64b5abb983f96f822700433fba9536840c530cb68f57528b2e1e94e458a11f1","clippy.toml":"653f7a5160598173cf214209159c862dc2984437cb17dc35524dc948e1855a2d","out/common.rs":"6c8a561ac7d9b585c8d73fbe62d18c05bc0d8657f6367d97161e891db44d9d70","out/dynamic.rs":"bd7ecca72b095ef57193b5b1382cc4d2094879f5e3526c5ad289122191ed03dd","out/macros.rs":"164c5d99befb840e60b4580709e8603d8e6daf7aa205906a6addeacbca1ceaaa","src/lib.rs":"b9fe1ff5cd85a876251183d8e6b191c1214ba129e607fedad27d29bea71345ba","src/link.rs":"cc08dae19e7b63a2bc7162f3c93c6690741333e466b7a88e1cee60f0facaf72a","src/support.rs":"b7f04d3b8fde7828f24bf4492f0050c14bef1256438b38216e07fb9090d3d311","tests/build.rs":"98de73996c255035be111ade2b5176b0e5569f8969f59ce0c417ffb297a9cb81","tests/header.h":"89d66e5a42d84035b38fdb26085c916537a52a1be291eac1fdae7a94257cf476","tests/lib.rs":"941b104a3ef009307b43318850d36ed2cb86f6e0db20ab1700ae941a11e90a97"}}
\ No newline at end of file
diff --git a/crates/clang-sys/cargo_embargo.json b/crates/clang-sys/cargo_embargo.json
index 9f9a4e9..23ac431 100644
--- a/crates/clang-sys/cargo_embargo.json
+++ b/crates/clang-sys/cargo_embargo.json
@@ -8,5 +8,6 @@
"copy_out": true,
"device_supported": false
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/clap_complete/.android-checksum.json b/crates/clap_complete/.android-checksum.json
index 3298856..dbb4e9e 100644
--- a/crates/clap_complete/.android-checksum.json
+++ b/crates/clap_complete/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"026a9fee979d752fc03ddc71812424346ce0d86011ef6867127c2e854ab6a2b8","Android.bp":"7c76a6cb525834ce8f043229daaa342de8e8e693c09c6c0166826936e990262c","Cargo.lock":"3e5fa64390fb98fc03a7ea2529707150f438c3ac1e8c2bd0c5aa7712c1234b56","Cargo.toml":"c2daa9a3edaa91bd1cd7d6e8646fd18e9426e5c32d8a62dc4b699c55d5e23171","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"ab3cca729dd1f51c066dfbd52109a06ff3adc2156e089954e054fb97227c31f5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"eb6e0e0a95d43aa5c25c289958d5b6efc224866f331a87b0f34bb223ef677f92","cargo_embargo.json":"c96dee9f52d6efd20fe199ed37352f4717188454f95bc1532710a71833d6bbc2","examples/completion-derive.rs":"f57a61366c50b80d789044ee7b5151064c9b4eddec9b7e7830d5ba83e77db061","examples/completion.rs":"80fa364d7334878c4de62a5ee034577d0ed752fe05863e455a93f009c4129c5e","examples/dynamic.rs":"5a7d448f5113cd5c61173201d42cacbe01b473abcdf8b3a9e28a3342d4a7117d","examples/exhaustive.rs":"bae23f296612af49e2e40c9a079c0ffd1b29cca9e0ba10cf5451c83b6c6f5194","src/dynamic/completer.rs":"05c62b8476d9442bcdaef9371855e7adb26da7537bcffac1e3b16073ef2391dd","src/dynamic/mod.rs":"538f35566eb2e939c3d379b705c40942ebf295f27227dd33635c164b26d5afbe","src/dynamic/shells/bash.rs":"7be21adef1c61cfa986b54f2c385249eea95b3d7d07862d7b2172d282bcdccea","src/dynamic/shells/fish.rs":"6a7e8fec5443e4f562af06fe637d7ac9f726cbeed75cc099fbd5d9694e98bce2","src/dynamic/shells/mod.rs":"b824367ce23f11bb10bdc8b8913d837bafc8ae25c9028d656f754a7fc9c8c046","src/dynamic/shells/shell.rs":"9904c65ef18693f435991acde268c84ebe7358a25ba8c2625c7b968a1d3cd25c","src/generator/mod.rs":"a86c8524abd491a5ed3f531992e3374949f3beb87e8c2027b675a4ead8273046","src/generator/utils.rs":"d743ceda38e101cd76a5d8b88b09b0c5509149c86ab8b4a0f7c01e66f6623529","src/lib.rs":"e48b27cf5191915d1e842bbe992e74c518ff2def220cdd7bab1fb897164ff5e1","src/macros.rs":"1805e5b9fa9a869141b87c8e772b38987beabae40ce29a51ca6bbfbcdb79ff83","src/shells/bash.rs":"0487dbb20398eed59f60f84f5eb13e66ac926f224f8251c8340059cb7e4bd81e","src/shells/elvish.rs":"a09759da7e982e86a8c369e01dd5aed09fb1fdb683712ea9e661155ac1cf022d","src/shells/fish.rs":"1bee69888152ac6c56ea04fff9fe3022b3f7c9716e2b40a108aa1f1868f15e47","src/shells/mod.rs":"23ccc31a3a2aa8ce4da232362d51dbe58a606ae08ebeb207d49efce2ace6bdfd","src/shells/powershell.rs":"81a982aab2560b1294d8ffeee7b2de7a5653d0fd58a8b2e54598e284376a96ef","src/shells/shell.rs":"af08d8dce0630791c0fc1d47fafb38e46bb67fa2e0f9beb4da332de8b3887ef5","src/shells/zsh.rs":"782c0962543e13333fc5e64fa651fa0fbd28690618d1478150c891dfa4244606"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"026a9fee979d752fc03ddc71812424346ce0d86011ef6867127c2e854ab6a2b8","Android.bp":"5705f79ba4f07c26b891b4754b1da0dfa77cabb428fb771e1c5fc2a146285ea7","Cargo.lock":"3e5fa64390fb98fc03a7ea2529707150f438c3ac1e8c2bd0c5aa7712c1234b56","Cargo.toml":"c2daa9a3edaa91bd1cd7d6e8646fd18e9426e5c32d8a62dc4b699c55d5e23171","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"ab3cca729dd1f51c066dfbd52109a06ff3adc2156e089954e054fb97227c31f5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"eb6e0e0a95d43aa5c25c289958d5b6efc224866f331a87b0f34bb223ef677f92","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/completion-derive.rs":"f57a61366c50b80d789044ee7b5151064c9b4eddec9b7e7830d5ba83e77db061","examples/completion.rs":"80fa364d7334878c4de62a5ee034577d0ed752fe05863e455a93f009c4129c5e","examples/dynamic.rs":"5a7d448f5113cd5c61173201d42cacbe01b473abcdf8b3a9e28a3342d4a7117d","examples/exhaustive.rs":"bae23f296612af49e2e40c9a079c0ffd1b29cca9e0ba10cf5451c83b6c6f5194","src/dynamic/completer.rs":"05c62b8476d9442bcdaef9371855e7adb26da7537bcffac1e3b16073ef2391dd","src/dynamic/mod.rs":"538f35566eb2e939c3d379b705c40942ebf295f27227dd33635c164b26d5afbe","src/dynamic/shells/bash.rs":"7be21adef1c61cfa986b54f2c385249eea95b3d7d07862d7b2172d282bcdccea","src/dynamic/shells/fish.rs":"6a7e8fec5443e4f562af06fe637d7ac9f726cbeed75cc099fbd5d9694e98bce2","src/dynamic/shells/mod.rs":"b824367ce23f11bb10bdc8b8913d837bafc8ae25c9028d656f754a7fc9c8c046","src/dynamic/shells/shell.rs":"9904c65ef18693f435991acde268c84ebe7358a25ba8c2625c7b968a1d3cd25c","src/generator/mod.rs":"a86c8524abd491a5ed3f531992e3374949f3beb87e8c2027b675a4ead8273046","src/generator/utils.rs":"d743ceda38e101cd76a5d8b88b09b0c5509149c86ab8b4a0f7c01e66f6623529","src/lib.rs":"e48b27cf5191915d1e842bbe992e74c518ff2def220cdd7bab1fb897164ff5e1","src/macros.rs":"1805e5b9fa9a869141b87c8e772b38987beabae40ce29a51ca6bbfbcdb79ff83","src/shells/bash.rs":"0487dbb20398eed59f60f84f5eb13e66ac926f224f8251c8340059cb7e4bd81e","src/shells/elvish.rs":"a09759da7e982e86a8c369e01dd5aed09fb1fdb683712ea9e661155ac1cf022d","src/shells/fish.rs":"1bee69888152ac6c56ea04fff9fe3022b3f7c9716e2b40a108aa1f1868f15e47","src/shells/mod.rs":"23ccc31a3a2aa8ce4da232362d51dbe58a606ae08ebeb207d49efce2ace6bdfd","src/shells/powershell.rs":"81a982aab2560b1294d8ffeee7b2de7a5653d0fd58a8b2e54598e284376a96ef","src/shells/shell.rs":"af08d8dce0630791c0fc1d47fafb38e46bb67fa2e0f9beb4da332de8b3887ef5","src/shells/zsh.rs":"782c0962543e13333fc5e64fa651fa0fbd28690618d1478150c891dfa4244606"}}
\ No newline at end of file
diff --git a/crates/clap_complete/Android.bp b/crates/clap_complete/Android.bp
index 6f018e6..1c7437c 100644
--- a/crates/clap_complete/Android.bp
+++ b/crates/clap_complete/Android.bp
@@ -29,4 +29,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/clap_complete/cargo_embargo.json b/crates/clap_complete/cargo_embargo.json
index fca634f..b6c35c7 100644
--- a/crates/clap_complete/cargo_embargo.json
+++ b/crates/clap_complete/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/clap_derive/.android-checksum.json b/crates/clap_derive/.android-checksum.json
index 1036f40..1d7b1af 100644
--- a/crates/clap_derive/.android-checksum.json
+++ b/crates/clap_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"12bd372c9a00176c8550ed56d66e9cf1103bd0d90500ebaec2b666c3b424cb42","Android.bp":"f0b03c9f2f66c6cbee0436b8926a49f04d87d021bc52abad244341e639d1c853","Cargo.toml":"308330ae32d2ce0910ee16e1d7d1f4f5ac02d3136d9d4dc8047f64c1ce353ea3","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"f5a10c9003772a968fd67f66f1c15973b97190613e86e4fbf193ad33fbcfa374","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"09129bd4c3fc6a864746429f54bd4ca0484168c9ccba31b26206701077008b27","TEST_MAPPING":"9afa0fcb0c5b9419dccde50ceefae38ebd3d98161aea3ef387862652e9223d9d","cargo_embargo.json":"708e290a98d700be06b5df3f6cbb91fce7d7f950f53ac4b0d767118526d73030","src/attr.rs":"83b81bf66416313fdb44c92599d23300ce12ac0600e3960006f2fbf2026fbe7f","src/derives/args.rs":"0806d4a222614ff9c77eca3bdb803e251218dc55e200959eaff3074cde80cdb4","src/derives/into_app.rs":"861cd388352bce4a10f155b770fb308042917b32bdf8818ccca3952ee79663e2","src/derives/mod.rs":"f7eea86d231d2475311c7b03bc3a63c9d7ad44a902a096534d71de6b5dc00e62","src/derives/parser.rs":"02a67669c7b031a0e9c46ead0e1c18754ddca069f2de73ebee45a0821f15376b","src/derives/subcommand.rs":"b81b69290553c0e1c044650a09db799e4ffd3a5abd7e8d992bfc6359747f8ced","src/derives/value_enum.rs":"f189af3df1e4284e76163e9ce9af67518de3a40089dd2c0d653956190cf2dcb8","src/dummies.rs":"84c4bb4800e30f1a9b1e169c2233139e6f9502be30fa02270732ee56d2ad16b7","src/item.rs":"5758a883d968a8d647b69e57376ac59f4ffc60e3a64dffab99561892804a8a00","src/lib.rs":"35712f5da733a96d21721f4f6d122fa1c68071dc83aef095f8b5e686d17b03b4","src/macros.rs":"25280fff84d1e79fcded8a9d04046bd6d4d66fcb00783574782a0214824b4a3c","src/utils/doc_comments.rs":"fbbed01bf8ffe7f8b354e42f4cf975aeb35a519f8fae7f294a219eb79f34a111","src/utils/error.rs":"cdde4f01939fd9c2e6dd60734e7fc8cbe3b19b4c73613d9123ed1ba47cc8f2f9","src/utils/mod.rs":"42112706df70a0785c22bea7558b102c7e079c26c8c743e65cc9c7fed934a43f","src/utils/spanned.rs":"85684081d67cf7568f888a825bcf93b429796b9ac82f316a9ff929eaa35ad38a","src/utils/ty.rs":"8e9d18124eb5252f1585dac624d061987f92cc9929a45fd8f787345b7b3cafa6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"12bd372c9a00176c8550ed56d66e9cf1103bd0d90500ebaec2b666c3b424cb42","Android.bp":"f0b03c9f2f66c6cbee0436b8926a49f04d87d021bc52abad244341e639d1c853","Cargo.toml":"308330ae32d2ce0910ee16e1d7d1f4f5ac02d3136d9d4dc8047f64c1ce353ea3","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"f5a10c9003772a968fd67f66f1c15973b97190613e86e4fbf193ad33fbcfa374","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"09129bd4c3fc6a864746429f54bd4ca0484168c9ccba31b26206701077008b27","TEST_MAPPING":"9afa0fcb0c5b9419dccde50ceefae38ebd3d98161aea3ef387862652e9223d9d","cargo_embargo.json":"3b0870fe7fb073668db9d75588c7b980cc32f6e53e086f235a994d7cd655ff0d","src/attr.rs":"83b81bf66416313fdb44c92599d23300ce12ac0600e3960006f2fbf2026fbe7f","src/derives/args.rs":"0806d4a222614ff9c77eca3bdb803e251218dc55e200959eaff3074cde80cdb4","src/derives/into_app.rs":"861cd388352bce4a10f155b770fb308042917b32bdf8818ccca3952ee79663e2","src/derives/mod.rs":"f7eea86d231d2475311c7b03bc3a63c9d7ad44a902a096534d71de6b5dc00e62","src/derives/parser.rs":"02a67669c7b031a0e9c46ead0e1c18754ddca069f2de73ebee45a0821f15376b","src/derives/subcommand.rs":"b81b69290553c0e1c044650a09db799e4ffd3a5abd7e8d992bfc6359747f8ced","src/derives/value_enum.rs":"f189af3df1e4284e76163e9ce9af67518de3a40089dd2c0d653956190cf2dcb8","src/dummies.rs":"84c4bb4800e30f1a9b1e169c2233139e6f9502be30fa02270732ee56d2ad16b7","src/item.rs":"5758a883d968a8d647b69e57376ac59f4ffc60e3a64dffab99561892804a8a00","src/lib.rs":"35712f5da733a96d21721f4f6d122fa1c68071dc83aef095f8b5e686d17b03b4","src/macros.rs":"25280fff84d1e79fcded8a9d04046bd6d4d66fcb00783574782a0214824b4a3c","src/utils/doc_comments.rs":"fbbed01bf8ffe7f8b354e42f4cf975aeb35a519f8fae7f294a219eb79f34a111","src/utils/error.rs":"cdde4f01939fd9c2e6dd60734e7fc8cbe3b19b4c73613d9123ed1ba47cc8f2f9","src/utils/mod.rs":"42112706df70a0785c22bea7558b102c7e079c26c8c743e65cc9c7fed934a43f","src/utils/spanned.rs":"85684081d67cf7568f888a825bcf93b429796b9ac82f316a9ff929eaa35ad38a","src/utils/ty.rs":"8e9d18124eb5252f1585dac624d061987f92cc9929a45fd8f787345b7b3cafa6"}}
\ No newline at end of file
diff --git a/crates/clap_derive/cargo_embargo.json b/crates/clap_derive/cargo_embargo.json
index a96c2ab..4675cc3 100644
--- a/crates/clap_derive/cargo_embargo.json
+++ b/crates/clap_derive/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/codespan-reporting/.android-checksum.json b/crates/codespan-reporting/.android-checksum.json
index dbf1393..8c6ea7c 100644
--- a/crates/codespan-reporting/.android-checksum.json
+++ b/crates/codespan-reporting/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c777c735dee1bb821f33ecddc0870756c0dc1308e85bfb561fb0f01636707e89","Android.bp":"1bdac69a1318ed3efcc60cca272c3b82ee8116ec64d8fb7ba4fb40860995c211","CHANGELOG.md":"f28cdbfc1dfc1948135d6bf615f5e708327d71cd02f62e37ae5c8efa8739aacf","Cargo.lock":"a883550dc8a4ac61629ec8066b20e04378decc48b89938705d2fe294386c0554","Cargo.toml":"8f7b3219bc775a019750ee7709ad8e4546dcc88ba9e84573ce3b0c9c8f3df4fa","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f9b66feb6c0155f0973b72a4138d3e5808196a10c3538366d4f89aa17fd7636e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"1c1939d7e03837f7c5fa8df1d0ed836d5f528f3897b8c4aca768e2ae3f3c14e4","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/custom_files.rs":"2deb03e4c988257bf095d3a556dd27cce77c19826a5ce3524ac4c44ccba8dce3","examples/peg_calculator.rs":"cbb9f16b6552fa2da7fd5898183016dd44735fe757ba1d5921e839baa7fd5416","examples/readme_preview.rs":"3510c58b965db26be51767a2755067b16458f47060363fe4c0f55a4cb1386285","examples/reusable_diagnostic.rs":"7082af833af9ab2371760a3f347dac2181fa91a11422519d2879268226ce03ec","examples/term.rs":"fb3da19ca05a7c0c41dda5726621a78343c7bd4381826db4f83c6780cd74bd00","patches/LICENSE.patch":"ff283fd5a3029c8391318629bd16704b04fb7271eeee2b46e1b6572a4f0ff4f3","src/diagnostic.rs":"9c6c24874b8e6eb1127660eaf57b2127bb490c61bb064edf987215bd9d9bf733","src/files.rs":"4568501e6f118156344088857b9a611f1f590c4b2b25df354f9f977b8ec9d0e8","src/lib.rs":"a0471f4d4df3f40a28bcd042c2d6d14785753c395c6fde45745a2ae81e05962e","src/term.rs":"8c5614cff21f9c885bf84cc1e5c56d1d654028d9c2229a22a885a06e1c669fd6","src/term/config.rs":"00c8ef2670834f970f9b20746c6d896d01e1c063de81f50fdd3be797ed7bea71","src/term/renderer.rs":"7052b66b91bf9eab39d071355ea394a528056e140670d95cb654f00231961ae5","src/term/views.rs":"ba754678aa1bb2ce633fffdb91e93a9b65f41bfada7995c1587edaa7bec156d4","tests/snapshots/term__empty__medium_color.snap":"ed2f51a236f3287a807ee6e04f020f7d27b07e28b5aa9c60ac52a6c7d9366315","tests/snapshots/term__empty__medium_no_color.snap":"9dea3c17a4eafa7c763def3c65f77d6e6fd2a78bd840009022d26b2e3c6d21dd","tests/snapshots/term__empty__rich_ascii_no_color.snap":"b06a2395d7a3688b2442a9f473cbab5c4e2bb16cfd2fc50369d0227d62ac424b","tests/snapshots/term__empty__rich_color.snap":"6b286433e55d1108074f4ba4599feb70c2ac9a275e9e1094ff64802883d8a15b","tests/snapshots/term__empty__rich_no_color.snap":"b06a2395d7a3688b2442a9f473cbab5c4e2bb16cfd2fc50369d0227d62ac424b","tests/snapshots/term__empty__short_color.snap":"ed2f51a236f3287a807ee6e04f020f7d27b07e28b5aa9c60ac52a6c7d9366315","tests/snapshots/term__empty__short_no_color.snap":"9dea3c17a4eafa7c763def3c65f77d6e6fd2a78bd840009022d26b2e3c6d21dd","tests/snapshots/term__empty_ranges__medium_color.snap":"77264f140267eab2a887b9d2d4f595efc092755aaac82304b278a3f0e70cf8c6","tests/snapshots/term__empty_ranges__medium_no_color.snap":"c075cc4b8b7f0308a685321639baaa903a685e6a02b3b0aad20e9028c4897b65","tests/snapshots/term__empty_ranges__rich_ascii_no_color.snap":"fe411fec19d5017dd543606c783e0f7eecfb779492b6965d60232c5dc42f85d0","tests/snapshots/term__empty_ranges__rich_color.snap":"862c7f25c57003104a608aa965211dbd73d024d68a6cd51752a2d02528723307","tests/snapshots/term__empty_ranges__rich_no_color.snap":"8deb4794d4bd1b80b23252b27cccbe1d50e2667298704444ce3f644e16560098","tests/snapshots/term__empty_ranges__short_color.snap":"77264f140267eab2a887b9d2d4f595efc092755aaac82304b278a3f0e70cf8c6","tests/snapshots/term__empty_ranges__short_no_color.snap":"c075cc4b8b7f0308a685321639baaa903a685e6a02b3b0aad20e9028c4897b65","tests/snapshots/term__fizz_buzz__medium_color.snap":"19ea87a1cb161f25931f96bc7357fe21bb753c817ee9d144cd4e0e198e58017d","tests/snapshots/term__fizz_buzz__medium_no_color.snap":"f22a1fc14040e9daf874cde0df6be00fbaf6c36f820c0e745398a9568dc97958","tests/snapshots/term__fizz_buzz__rich_ascii_no_color.snap":"b4ab1fb9799f0755a2cfc53fb8d98d9d6567f2c1a5573b05cc70c6934c90ce04","tests/snapshots/term__fizz_buzz__rich_color.snap":"b7482343f3b54cd3f78b4f87ba222433260db355701a218dea51eb834d1004af","tests/snapshots/term__fizz_buzz__rich_no_color.snap":"6275c6f07119bc872b996258c40892dde185726b4134686ecdcbc4bc14573f47","tests/snapshots/term__fizz_buzz__short_color.snap":"7e4e3ce81d72ed585ce14009ce10a1fbe9eda925b509521c53dff9a4e9f7f1a0","tests/snapshots/term__fizz_buzz__short_no_color.snap":"3093b9bc8df4f9781a585f2f577f81a4f7b4d9333493f9c27e7528d971a0201c","tests/snapshots/term__message__medium_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message__medium_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message__rich_ascii_no_color.snap":"17be7ff3ea3744c895158ad8682dd7a783b88ce5a3ad95172d88f88918cadb86","tests/snapshots/term__message__rich_color.snap":"7cbb72c474822f11940b35f19eebd675c622b184c2721dc6b91ee9759d9cd177","tests/snapshots/term__message__rich_no_color.snap":"17be7ff3ea3744c895158ad8682dd7a783b88ce5a3ad95172d88f88918cadb86","tests/snapshots/term__message__short_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message__short_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message_and_notes__medium_color.snap":"bfe889cd6b8b5bf5e8ea7a226b46cf75e74d38b01f95d2e9ce59ddae12f286ca","tests/snapshots/term__message_and_notes__medium_no_color.snap":"a0384616c174b5050d6f5316e4ab7c56d695650bc04bd4fd17aee654b0effdfb","tests/snapshots/term__message_and_notes__rich_ascii_no_color.snap":"4e15614ff139063b6ae2e6234d0b8a6ffd11e5672d2edf72d946060faa031631","tests/snapshots/term__message_and_notes__rich_color.snap":"9b23a8d26014f4712b3665f746c0c7f2dfda70d68be231fdd257157aede276d5","tests/snapshots/term__message_and_notes__rich_no_color.snap":"4e15614ff139063b6ae2e6234d0b8a6ffd11e5672d2edf72d946060faa031631","tests/snapshots/term__message_and_notes__short_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message_and_notes__short_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message_errorcode__rich_ascii_no_color.snap":"1263c2e011346b2021ad7835497cff62f328a753425356cf5373d09392609dc7","tests/snapshots/term__message_errorcode__rich_no_color.snap":"1263c2e011346b2021ad7835497cff62f328a753425356cf5373d09392609dc7","tests/snapshots/term__message_errorcode__short_no_color.snap":"364f7505708cd251678036a6b9eaef3bbde3df14f2af2203cf3ea24ef1555789","tests/snapshots/term__multifile__medium_color.snap":"8a870bb370165628d3ea6f85c6b5f8d30585f9c60b23576edb027c13dc20d88b","tests/snapshots/term__multifile__medium_no_color.snap":"c147509658fad081781fc958a5834e289c933a46f28fb81c4773d408eade2ac7","tests/snapshots/term__multifile__rich_ascii_no_color.snap":"d5a909906149cea82df89b5abbc0ffc7be9eb8397c74d4bf4ef0eebedd3844a6","tests/snapshots/term__multifile__rich_color.snap":"a473f94e4fc44f539dd23a9f3adc425ee34a1149bc597282a5412292318139e6","tests/snapshots/term__multifile__rich_no_color.snap":"9bc4972495bd02ece4f6206a8e9b6f4d46108624f85bb3167359f787b7f3d41f","tests/snapshots/term__multifile__short_color.snap":"947addc9ea7f632c585151a91f75e2323f3efde0093332051eade3df9d2478da","tests/snapshots/term__multifile__short_no_color.snap":"47faac5dbba569facf9f842a04cf225a64df6ba36fd31338fb25994562d5694a","tests/snapshots/term__multiline_omit__rich_no_color.snap":"46ff088f71f6c67b44d930a06b13a394f62ae2e441b2c0598f421b11253cd430","tests/snapshots/term__multiline_overlapping__medium_color.snap":"b977bae1102c183d16b8eb2344a30dd32d342f9c71eca30572033de5eadeffa3","tests/snapshots/term__multiline_overlapping__medium_no_color.snap":"63dad0615884f5b029426c7df33a15aaeafd170337d56c978bf2d8860dc786a2","tests/snapshots/term__multiline_overlapping__rich_ascii_no_color.snap":"78cec72db130edeaab729169af6441b55866eb23df6d520104caa4edc7c49108","tests/snapshots/term__multiline_overlapping__rich_color.snap":"db7206e1d1a3d1ca843bd10f75c7658c48927a20a2915993ec9f4f89ec52d6ad","tests/snapshots/term__multiline_overlapping__rich_no_color.snap":"9db07a7fdb03a159fbd43d166193a37ea114553679196d667bbc4897d4c108ce","tests/snapshots/term__multiline_overlapping__short_color.snap":"eca05cb48a22e565e5683c72874f8ac3c8c445d24c09911771c2275628659c70","tests/snapshots/term__multiline_overlapping__short_no_color.snap":"aa08d501e158c34391ecf2b14a1569a9460c015ed55612fdd0652a84fa59e3d7","tests/snapshots/term__overlapping__medium_color.snap":"b1f388e9c12d225627cf2ae352769e2e4b70881bda39344835cf6773d003d5a4","tests/snapshots/term__overlapping__medium_no_color.snap":"7277959e103cfca61507bc94a970678824cb0da9d327f3d25e64128d67f51bcd","tests/snapshots/term__overlapping__rich_ascii_no_color.snap":"7f51d1abfc2b5b559334c5b1ed30131b702b2f763994142a5209d51ed14cd634","tests/snapshots/term__overlapping__rich_color.snap":"482d8e5437fe98b316234d1c37b891985f18e859c6c0ff823967546746ccb41a","tests/snapshots/term__overlapping__rich_no_color.snap":"f302e66f86aa7eea0e8c2609d738d264fe83c9fe21816b67fb9ab89eec343b2d","tests/snapshots/term__overlapping__short_color.snap":"a75fe8001293ffa4f96bd67937a0e6c81b16f21ea1635a80689b8c18a0d15e3a","tests/snapshots/term__overlapping__short_no_color.snap":"5645e37c2ee5c9e097234fba0ca1f074056588e822380f88447900ed44a310e8","tests/snapshots/term__position_indicator__medium_no_color.snap":"bfa1184fdea0176a7a5f9eb75331755575db3cd4902b8d8ba9fa3eed2de02bc8","tests/snapshots/term__position_indicator__rich_ascii_no_color.snap":"5e03bbc46e05a5658ed9ef881a449fa34d2d27582dcc21ee6f679788eb41b2bc","tests/snapshots/term__position_indicator__rich_no_color.snap":"17ce6e58eedff468a0cbf2e6171aa0e4b692d9f7d6b89bff52d96cbcac99aa80","tests/snapshots/term__position_indicator__short_no_color.snap":"8aa2727e4a4ee8906c345f29dfca57f0ffc68f3531a50469400e62a38926a7f3","tests/snapshots/term__same_line__medium_color.snap":"f679489e90afd4256f454c6fba46cf19869d230cd61863952d7c83e4461a740b","tests/snapshots/term__same_line__medium_no_color.snap":"73b7e1107a8a4bcc52592fa134204b719552fd8d9fa61b637a2c18c6478c44af","tests/snapshots/term__same_line__rich_ascii_no_color.snap":"ecec6954a54a6e687b13a31a181db52dba4fbf01fb0498df3cf3e83da991a619","tests/snapshots/term__same_line__rich_color.snap":"bcfdf37e9c6c6dfb000bc9585ee16584bbb24298b09d60f78bb96f30d8fece89","tests/snapshots/term__same_line__rich_no_color.snap":"c2370aec80fa97502bc7df252a5a1f93901a73936f1f2eb8731f7609af2ecebc","tests/snapshots/term__same_line__short_color.snap":"a76f70ecaae055652194da04c7fc6ca40babf9a89a8c80b0e6797c7254950250","tests/snapshots/term__same_line__short_no_color.snap":"a38de5d5092d2379bbd2d324dd4da2b864ee1454f6263130b3edb613acfaf1b6","tests/snapshots/term__same_ranges__medium_color.snap":"c5067c57942ac7f91593fbfdbd431fdbe3573350843f6b0f185d1a53172c9d0e","tests/snapshots/term__same_ranges__medium_no_color.snap":"5a9cd1c9573f7a6bd8e668d34f577a896cd90532431145c50850cbf032a8eff9","tests/snapshots/term__same_ranges__rich_ascii_no_color.snap":"7c256412e80febdd338d12503693b7a746699995c5540210780f9957e2ea8db4","tests/snapshots/term__same_ranges__rich_color.snap":"b5d0a91034fef2a006dc2cae5df548efb313b781a23310c9ba1d00f5dc62653c","tests/snapshots/term__same_ranges__rich_no_color.snap":"ee1e95308f7cd7c3ca7c649a4080865284be47efb935e887c797f11c5c16637d","tests/snapshots/term__same_ranges__short_color.snap":"4ebc154a9c34e76880cf238b4bf73657973b4572cb2e8328b3821874306ba238","tests/snapshots/term__same_ranges__short_no_color.snap":"70d9dbbb1521a19d0db0fadec9fac0d468d256602ad5c0c782a1ab4790d8bd18","tests/snapshots/term__tab_columns__tab_width_2_no_color.snap":"1d1221a842132be56265b998867d00fcedb0e292325f879c7e36d51f9616944e","tests/snapshots/term__tab_columns__tab_width_3_no_color.snap":"b3031a1c3d37cf72f55a96080691b7c4381955b3c17c7b26df493aeee1938dc7","tests/snapshots/term__tab_columns__tab_width_6_no_color.snap":"ddff5cde774d6adeb7f7f67fa410c1e70e56d8a8f4023fcd646879ed60cd9cc3","tests/snapshots/term__tab_columns__tab_width_default_no_color.snap":"9ea5c80df62c7b4a395b50fc9e4ceff487a0655c1aa63a4dccb5aea80eae32fe","tests/snapshots/term__tabbed__tab_width_3_no_color.snap":"ce46f062f314ec386de74776be0e67d8c5b964efbbe92b74d65203dec1475273","tests/snapshots/term__tabbed__tab_width_6_no_color.snap":"a414a40333c7a0f61fd4b0d9292bbc5177f09a47a881431644e84997d2c3b08f","tests/snapshots/term__tabbed__tab_width_default_no_color.snap":"896fb40a790d034d4b1cb1b3dc50a55339c230e01bedf5c89a7ca9f238763b30","tests/snapshots/term__unicode__medium_no_color.snap":"3b1392157bcbceacfcdab98cf3ab3547343977e051d308342c5148d8f748be32","tests/snapshots/term__unicode__rich_no_color.snap":"36f8be75f61c0c2d744d364c8f28302ca6c81e5f1409e32790b069a1b95b6d4b","tests/snapshots/term__unicode__short_no_color.snap":"45c7c7b0d0ac0e0b40ef720a7bd08464c4cb7b6177e3449672e34abd5bf08759","tests/snapshots/term__unicode_spans__medium_no_color.snap":"e17306cb9ae43f9c6a8e40f8b5834a31ab76143b7524f232dd8be44dc5a542e6","tests/snapshots/term__unicode_spans__rich_no_color.snap":"539673b3ca63a9780725e1b66180558e2522226d058c78c72e290a0aa25e31a5","tests/snapshots/term__unicode_spans__short_no_color.snap":"e17306cb9ae43f9c6a8e40f8b5834a31ab76143b7524f232dd8be44dc5a542e6","tests/support/color_buffer.rs":"305c4b2ef13d8a2e6ba2c74fec06c1eeefc893135bd53a1865d009046944b4bb","tests/support/mod.rs":"397edf84e7084f5c7b218411eee2f17379f77760b4698b1ae16625f54a0c454b","tests/term.rs":"58c1aed45a21360ff0f2a10a00b06102f138d2546696da1184626fad90e192d2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c777c735dee1bb821f33ecddc0870756c0dc1308e85bfb561fb0f01636707e89","Android.bp":"aead3b64703021b348ce54e0046c038bcba5e95135c545211896bc8f4d58d0e4","CHANGELOG.md":"f28cdbfc1dfc1948135d6bf615f5e708327d71cd02f62e37ae5c8efa8739aacf","Cargo.lock":"a883550dc8a4ac61629ec8066b20e04378decc48b89938705d2fe294386c0554","Cargo.toml":"8f7b3219bc775a019750ee7709ad8e4546dcc88ba9e84573ce3b0c9c8f3df4fa","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"f9b66feb6c0155f0973b72a4138d3e5808196a10c3538366d4f89aa17fd7636e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"1c1939d7e03837f7c5fa8df1d0ed836d5f528f3897b8c4aca768e2ae3f3c14e4","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/custom_files.rs":"2deb03e4c988257bf095d3a556dd27cce77c19826a5ce3524ac4c44ccba8dce3","examples/peg_calculator.rs":"cbb9f16b6552fa2da7fd5898183016dd44735fe757ba1d5921e839baa7fd5416","examples/readme_preview.rs":"3510c58b965db26be51767a2755067b16458f47060363fe4c0f55a4cb1386285","examples/reusable_diagnostic.rs":"7082af833af9ab2371760a3f347dac2181fa91a11422519d2879268226ce03ec","examples/term.rs":"fb3da19ca05a7c0c41dda5726621a78343c7bd4381826db4f83c6780cd74bd00","patches/LICENSE.patch":"ff283fd5a3029c8391318629bd16704b04fb7271eeee2b46e1b6572a4f0ff4f3","src/diagnostic.rs":"9c6c24874b8e6eb1127660eaf57b2127bb490c61bb064edf987215bd9d9bf733","src/files.rs":"4568501e6f118156344088857b9a611f1f590c4b2b25df354f9f977b8ec9d0e8","src/lib.rs":"a0471f4d4df3f40a28bcd042c2d6d14785753c395c6fde45745a2ae81e05962e","src/term.rs":"8c5614cff21f9c885bf84cc1e5c56d1d654028d9c2229a22a885a06e1c669fd6","src/term/config.rs":"00c8ef2670834f970f9b20746c6d896d01e1c063de81f50fdd3be797ed7bea71","src/term/renderer.rs":"7052b66b91bf9eab39d071355ea394a528056e140670d95cb654f00231961ae5","src/term/views.rs":"ba754678aa1bb2ce633fffdb91e93a9b65f41bfada7995c1587edaa7bec156d4","tests/snapshots/term__empty__medium_color.snap":"ed2f51a236f3287a807ee6e04f020f7d27b07e28b5aa9c60ac52a6c7d9366315","tests/snapshots/term__empty__medium_no_color.snap":"9dea3c17a4eafa7c763def3c65f77d6e6fd2a78bd840009022d26b2e3c6d21dd","tests/snapshots/term__empty__rich_ascii_no_color.snap":"b06a2395d7a3688b2442a9f473cbab5c4e2bb16cfd2fc50369d0227d62ac424b","tests/snapshots/term__empty__rich_color.snap":"6b286433e55d1108074f4ba4599feb70c2ac9a275e9e1094ff64802883d8a15b","tests/snapshots/term__empty__rich_no_color.snap":"b06a2395d7a3688b2442a9f473cbab5c4e2bb16cfd2fc50369d0227d62ac424b","tests/snapshots/term__empty__short_color.snap":"ed2f51a236f3287a807ee6e04f020f7d27b07e28b5aa9c60ac52a6c7d9366315","tests/snapshots/term__empty__short_no_color.snap":"9dea3c17a4eafa7c763def3c65f77d6e6fd2a78bd840009022d26b2e3c6d21dd","tests/snapshots/term__empty_ranges__medium_color.snap":"77264f140267eab2a887b9d2d4f595efc092755aaac82304b278a3f0e70cf8c6","tests/snapshots/term__empty_ranges__medium_no_color.snap":"c075cc4b8b7f0308a685321639baaa903a685e6a02b3b0aad20e9028c4897b65","tests/snapshots/term__empty_ranges__rich_ascii_no_color.snap":"fe411fec19d5017dd543606c783e0f7eecfb779492b6965d60232c5dc42f85d0","tests/snapshots/term__empty_ranges__rich_color.snap":"862c7f25c57003104a608aa965211dbd73d024d68a6cd51752a2d02528723307","tests/snapshots/term__empty_ranges__rich_no_color.snap":"8deb4794d4bd1b80b23252b27cccbe1d50e2667298704444ce3f644e16560098","tests/snapshots/term__empty_ranges__short_color.snap":"77264f140267eab2a887b9d2d4f595efc092755aaac82304b278a3f0e70cf8c6","tests/snapshots/term__empty_ranges__short_no_color.snap":"c075cc4b8b7f0308a685321639baaa903a685e6a02b3b0aad20e9028c4897b65","tests/snapshots/term__fizz_buzz__medium_color.snap":"19ea87a1cb161f25931f96bc7357fe21bb753c817ee9d144cd4e0e198e58017d","tests/snapshots/term__fizz_buzz__medium_no_color.snap":"f22a1fc14040e9daf874cde0df6be00fbaf6c36f820c0e745398a9568dc97958","tests/snapshots/term__fizz_buzz__rich_ascii_no_color.snap":"b4ab1fb9799f0755a2cfc53fb8d98d9d6567f2c1a5573b05cc70c6934c90ce04","tests/snapshots/term__fizz_buzz__rich_color.snap":"b7482343f3b54cd3f78b4f87ba222433260db355701a218dea51eb834d1004af","tests/snapshots/term__fizz_buzz__rich_no_color.snap":"6275c6f07119bc872b996258c40892dde185726b4134686ecdcbc4bc14573f47","tests/snapshots/term__fizz_buzz__short_color.snap":"7e4e3ce81d72ed585ce14009ce10a1fbe9eda925b509521c53dff9a4e9f7f1a0","tests/snapshots/term__fizz_buzz__short_no_color.snap":"3093b9bc8df4f9781a585f2f577f81a4f7b4d9333493f9c27e7528d971a0201c","tests/snapshots/term__message__medium_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message__medium_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message__rich_ascii_no_color.snap":"17be7ff3ea3744c895158ad8682dd7a783b88ce5a3ad95172d88f88918cadb86","tests/snapshots/term__message__rich_color.snap":"7cbb72c474822f11940b35f19eebd675c622b184c2721dc6b91ee9759d9cd177","tests/snapshots/term__message__rich_no_color.snap":"17be7ff3ea3744c895158ad8682dd7a783b88ce5a3ad95172d88f88918cadb86","tests/snapshots/term__message__short_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message__short_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message_and_notes__medium_color.snap":"bfe889cd6b8b5bf5e8ea7a226b46cf75e74d38b01f95d2e9ce59ddae12f286ca","tests/snapshots/term__message_and_notes__medium_no_color.snap":"a0384616c174b5050d6f5316e4ab7c56d695650bc04bd4fd17aee654b0effdfb","tests/snapshots/term__message_and_notes__rich_ascii_no_color.snap":"4e15614ff139063b6ae2e6234d0b8a6ffd11e5672d2edf72d946060faa031631","tests/snapshots/term__message_and_notes__rich_color.snap":"9b23a8d26014f4712b3665f746c0c7f2dfda70d68be231fdd257157aede276d5","tests/snapshots/term__message_and_notes__rich_no_color.snap":"4e15614ff139063b6ae2e6234d0b8a6ffd11e5672d2edf72d946060faa031631","tests/snapshots/term__message_and_notes__short_color.snap":"1e3e99be0cd3ac3cb9c6b81f9303b5495869cb5b7eff4d72fa2792a39c66f092","tests/snapshots/term__message_and_notes__short_no_color.snap":"4d7215a68225c348b508cf4c8cd55eba7ca5e3d8cd9ce9f3185dc8481242fa56","tests/snapshots/term__message_errorcode__rich_ascii_no_color.snap":"1263c2e011346b2021ad7835497cff62f328a753425356cf5373d09392609dc7","tests/snapshots/term__message_errorcode__rich_no_color.snap":"1263c2e011346b2021ad7835497cff62f328a753425356cf5373d09392609dc7","tests/snapshots/term__message_errorcode__short_no_color.snap":"364f7505708cd251678036a6b9eaef3bbde3df14f2af2203cf3ea24ef1555789","tests/snapshots/term__multifile__medium_color.snap":"8a870bb370165628d3ea6f85c6b5f8d30585f9c60b23576edb027c13dc20d88b","tests/snapshots/term__multifile__medium_no_color.snap":"c147509658fad081781fc958a5834e289c933a46f28fb81c4773d408eade2ac7","tests/snapshots/term__multifile__rich_ascii_no_color.snap":"d5a909906149cea82df89b5abbc0ffc7be9eb8397c74d4bf4ef0eebedd3844a6","tests/snapshots/term__multifile__rich_color.snap":"a473f94e4fc44f539dd23a9f3adc425ee34a1149bc597282a5412292318139e6","tests/snapshots/term__multifile__rich_no_color.snap":"9bc4972495bd02ece4f6206a8e9b6f4d46108624f85bb3167359f787b7f3d41f","tests/snapshots/term__multifile__short_color.snap":"947addc9ea7f632c585151a91f75e2323f3efde0093332051eade3df9d2478da","tests/snapshots/term__multifile__short_no_color.snap":"47faac5dbba569facf9f842a04cf225a64df6ba36fd31338fb25994562d5694a","tests/snapshots/term__multiline_omit__rich_no_color.snap":"46ff088f71f6c67b44d930a06b13a394f62ae2e441b2c0598f421b11253cd430","tests/snapshots/term__multiline_overlapping__medium_color.snap":"b977bae1102c183d16b8eb2344a30dd32d342f9c71eca30572033de5eadeffa3","tests/snapshots/term__multiline_overlapping__medium_no_color.snap":"63dad0615884f5b029426c7df33a15aaeafd170337d56c978bf2d8860dc786a2","tests/snapshots/term__multiline_overlapping__rich_ascii_no_color.snap":"78cec72db130edeaab729169af6441b55866eb23df6d520104caa4edc7c49108","tests/snapshots/term__multiline_overlapping__rich_color.snap":"db7206e1d1a3d1ca843bd10f75c7658c48927a20a2915993ec9f4f89ec52d6ad","tests/snapshots/term__multiline_overlapping__rich_no_color.snap":"9db07a7fdb03a159fbd43d166193a37ea114553679196d667bbc4897d4c108ce","tests/snapshots/term__multiline_overlapping__short_color.snap":"eca05cb48a22e565e5683c72874f8ac3c8c445d24c09911771c2275628659c70","tests/snapshots/term__multiline_overlapping__short_no_color.snap":"aa08d501e158c34391ecf2b14a1569a9460c015ed55612fdd0652a84fa59e3d7","tests/snapshots/term__overlapping__medium_color.snap":"b1f388e9c12d225627cf2ae352769e2e4b70881bda39344835cf6773d003d5a4","tests/snapshots/term__overlapping__medium_no_color.snap":"7277959e103cfca61507bc94a970678824cb0da9d327f3d25e64128d67f51bcd","tests/snapshots/term__overlapping__rich_ascii_no_color.snap":"7f51d1abfc2b5b559334c5b1ed30131b702b2f763994142a5209d51ed14cd634","tests/snapshots/term__overlapping__rich_color.snap":"482d8e5437fe98b316234d1c37b891985f18e859c6c0ff823967546746ccb41a","tests/snapshots/term__overlapping__rich_no_color.snap":"f302e66f86aa7eea0e8c2609d738d264fe83c9fe21816b67fb9ab89eec343b2d","tests/snapshots/term__overlapping__short_color.snap":"a75fe8001293ffa4f96bd67937a0e6c81b16f21ea1635a80689b8c18a0d15e3a","tests/snapshots/term__overlapping__short_no_color.snap":"5645e37c2ee5c9e097234fba0ca1f074056588e822380f88447900ed44a310e8","tests/snapshots/term__position_indicator__medium_no_color.snap":"bfa1184fdea0176a7a5f9eb75331755575db3cd4902b8d8ba9fa3eed2de02bc8","tests/snapshots/term__position_indicator__rich_ascii_no_color.snap":"5e03bbc46e05a5658ed9ef881a449fa34d2d27582dcc21ee6f679788eb41b2bc","tests/snapshots/term__position_indicator__rich_no_color.snap":"17ce6e58eedff468a0cbf2e6171aa0e4b692d9f7d6b89bff52d96cbcac99aa80","tests/snapshots/term__position_indicator__short_no_color.snap":"8aa2727e4a4ee8906c345f29dfca57f0ffc68f3531a50469400e62a38926a7f3","tests/snapshots/term__same_line__medium_color.snap":"f679489e90afd4256f454c6fba46cf19869d230cd61863952d7c83e4461a740b","tests/snapshots/term__same_line__medium_no_color.snap":"73b7e1107a8a4bcc52592fa134204b719552fd8d9fa61b637a2c18c6478c44af","tests/snapshots/term__same_line__rich_ascii_no_color.snap":"ecec6954a54a6e687b13a31a181db52dba4fbf01fb0498df3cf3e83da991a619","tests/snapshots/term__same_line__rich_color.snap":"bcfdf37e9c6c6dfb000bc9585ee16584bbb24298b09d60f78bb96f30d8fece89","tests/snapshots/term__same_line__rich_no_color.snap":"c2370aec80fa97502bc7df252a5a1f93901a73936f1f2eb8731f7609af2ecebc","tests/snapshots/term__same_line__short_color.snap":"a76f70ecaae055652194da04c7fc6ca40babf9a89a8c80b0e6797c7254950250","tests/snapshots/term__same_line__short_no_color.snap":"a38de5d5092d2379bbd2d324dd4da2b864ee1454f6263130b3edb613acfaf1b6","tests/snapshots/term__same_ranges__medium_color.snap":"c5067c57942ac7f91593fbfdbd431fdbe3573350843f6b0f185d1a53172c9d0e","tests/snapshots/term__same_ranges__medium_no_color.snap":"5a9cd1c9573f7a6bd8e668d34f577a896cd90532431145c50850cbf032a8eff9","tests/snapshots/term__same_ranges__rich_ascii_no_color.snap":"7c256412e80febdd338d12503693b7a746699995c5540210780f9957e2ea8db4","tests/snapshots/term__same_ranges__rich_color.snap":"b5d0a91034fef2a006dc2cae5df548efb313b781a23310c9ba1d00f5dc62653c","tests/snapshots/term__same_ranges__rich_no_color.snap":"ee1e95308f7cd7c3ca7c649a4080865284be47efb935e887c797f11c5c16637d","tests/snapshots/term__same_ranges__short_color.snap":"4ebc154a9c34e76880cf238b4bf73657973b4572cb2e8328b3821874306ba238","tests/snapshots/term__same_ranges__short_no_color.snap":"70d9dbbb1521a19d0db0fadec9fac0d468d256602ad5c0c782a1ab4790d8bd18","tests/snapshots/term__tab_columns__tab_width_2_no_color.snap":"1d1221a842132be56265b998867d00fcedb0e292325f879c7e36d51f9616944e","tests/snapshots/term__tab_columns__tab_width_3_no_color.snap":"b3031a1c3d37cf72f55a96080691b7c4381955b3c17c7b26df493aeee1938dc7","tests/snapshots/term__tab_columns__tab_width_6_no_color.snap":"ddff5cde774d6adeb7f7f67fa410c1e70e56d8a8f4023fcd646879ed60cd9cc3","tests/snapshots/term__tab_columns__tab_width_default_no_color.snap":"9ea5c80df62c7b4a395b50fc9e4ceff487a0655c1aa63a4dccb5aea80eae32fe","tests/snapshots/term__tabbed__tab_width_3_no_color.snap":"ce46f062f314ec386de74776be0e67d8c5b964efbbe92b74d65203dec1475273","tests/snapshots/term__tabbed__tab_width_6_no_color.snap":"a414a40333c7a0f61fd4b0d9292bbc5177f09a47a881431644e84997d2c3b08f","tests/snapshots/term__tabbed__tab_width_default_no_color.snap":"896fb40a790d034d4b1cb1b3dc50a55339c230e01bedf5c89a7ca9f238763b30","tests/snapshots/term__unicode__medium_no_color.snap":"3b1392157bcbceacfcdab98cf3ab3547343977e051d308342c5148d8f748be32","tests/snapshots/term__unicode__rich_no_color.snap":"36f8be75f61c0c2d744d364c8f28302ca6c81e5f1409e32790b069a1b95b6d4b","tests/snapshots/term__unicode__short_no_color.snap":"45c7c7b0d0ac0e0b40ef720a7bd08464c4cb7b6177e3449672e34abd5bf08759","tests/snapshots/term__unicode_spans__medium_no_color.snap":"e17306cb9ae43f9c6a8e40f8b5834a31ab76143b7524f232dd8be44dc5a542e6","tests/snapshots/term__unicode_spans__rich_no_color.snap":"539673b3ca63a9780725e1b66180558e2522226d058c78c72e290a0aa25e31a5","tests/snapshots/term__unicode_spans__short_no_color.snap":"e17306cb9ae43f9c6a8e40f8b5834a31ab76143b7524f232dd8be44dc5a542e6","tests/support/color_buffer.rs":"305c4b2ef13d8a2e6ba2c74fec06c1eeefc893135bd53a1865d009046944b4bb","tests/support/mod.rs":"397edf84e7084f5c7b218411eee2f17379f77760b4698b1ae16625f54a0c454b","tests/term.rs":"58c1aed45a21360ff0f2a10a00b06102f138d2546696da1184626fad90e192d2"}}
\ No newline at end of file
diff --git a/crates/codespan-reporting/Android.bp b/crates/codespan-reporting/Android.bp
index 18e26ca..5eecbb0 100644
--- a/crates/codespan-reporting/Android.bp
+++ b/crates/codespan-reporting/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/codespan-reporting/cargo_embargo.json b/crates/codespan-reporting/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/codespan-reporting/cargo_embargo.json
+++ b/crates/codespan-reporting/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/command-fds/.android-checksum.json b/crates/command-fds/.android-checksum.json
index 2256879..26f0783 100644
--- a/crates/command-fds/.android-checksum.json
+++ b/crates/command-fds/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"50910ae7c4bf679de4c87a71ef1231c4f67752d8b0d718bea4eabc3539630a88","Android.bp":"3cf93cbd2154fb205d5e4330e7180e1248991b07914c7e2bfacf09e9bb338dac","CONTRIBUTING.md":"7fc44c4d7c12b6f8912007f74695b727b9a052e9aa0047ba4f4f336734dfec09","Cargo.lock":"f02a6961a7c601fa29e8ae2fe8b2513598780e010dfedd4996ef5462d0315c2c","Cargo.toml":"be25e71ff6bbdd628468b8dd162ab657296ddc8c4ceb3f469af8d578e9fd7c7a","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"fd2bcdeebd70d10659a78a463bc796ab6c1b2515a72add85fbbbe3269034b737","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"914610af12b048ecb31d28ad260284bfda14c6150cedd1b8d3c029e408241612","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/spawn.rs":"c1bdf8034118e671daf7c4890f3f92dfc384f1fafaeece7799b29f78646ea044","src/lib.rs":"e42b952b925d0c3c1f9d9332f240d342592f8de0c53a4fb435ea38fcd6cadd8f","src/tokio.rs":"e993a7b5c7a2d87d0e50843b4ef8449e654c3f7e7f3b23d5d67867d37716d4e1","testdata/file1.txt":"b2c5321cb5f2c141496449460088e49cccef88d25b3bdd5ca41bf0cc633b6d39","testdata/file2.txt":"e4ac4021b8e64845ffec80667cbab7b323cc799c0ed5639ecc214691152fd3f8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"50910ae7c4bf679de4c87a71ef1231c4f67752d8b0d718bea4eabc3539630a88","Android.bp":"0d783746d2c94cb85b6345467a70443375805c912d7dba1ab3f3eee21feafabb","CONTRIBUTING.md":"7fc44c4d7c12b6f8912007f74695b727b9a052e9aa0047ba4f4f336734dfec09","Cargo.lock":"f02a6961a7c601fa29e8ae2fe8b2513598780e010dfedd4996ef5462d0315c2c","Cargo.toml":"be25e71ff6bbdd628468b8dd162ab657296ddc8c4ceb3f469af8d578e9fd7c7a","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"fd2bcdeebd70d10659a78a463bc796ab6c1b2515a72add85fbbbe3269034b737","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"914610af12b048ecb31d28ad260284bfda14c6150cedd1b8d3c029e408241612","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/spawn.rs":"c1bdf8034118e671daf7c4890f3f92dfc384f1fafaeece7799b29f78646ea044","src/lib.rs":"e42b952b925d0c3c1f9d9332f240d342592f8de0c53a4fb435ea38fcd6cadd8f","src/tokio.rs":"e993a7b5c7a2d87d0e50843b4ef8449e654c3f7e7f3b23d5d67867d37716d4e1","testdata/file1.txt":"b2c5321cb5f2c141496449460088e49cccef88d25b3bdd5ca41bf0cc633b6d39","testdata/file2.txt":"e4ac4021b8e64845ffec80667cbab7b323cc799c0ed5639ecc214691152fd3f8"}}
\ No newline at end of file
diff --git a/crates/command-fds/Android.bp b/crates/command-fds/Android.bp
index e42d2d3..7f9ad8a 100644
--- a/crates/command-fds/Android.bp
+++ b/crates/command-fds/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/command-fds/cargo_embargo.json b/crates/command-fds/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/command-fds/cargo_embargo.json
+++ b/crates/command-fds/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/config/.android-checksum.json b/crates/config/.android-checksum.json
index b60d6af..b3bb4ab 100644
--- a/crates/config/.android-checksum.json
+++ b/crates/config/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"09d6d6857c51f16f50164fecc6c4646d268595578dbffb0d3a9ef0016c442e8b","Android.bp":"23768ccf391234daee40f84708729834ea6563e2d67637d736f0897567db7ba8","CHANGELOG.md":"c79ee40c91906e5ddfd8a97961c35cb705f9113d758c129972f60960b5753f9a","Cargo.lock":"e87430478c2404c5a842dd83dc8ccfa0794f29b717c00df5412fc2009fd4c761","Cargo.lock.msrv":"b65d2f08f5b5d0e954bd4b84128523d655ff2968ebff76240ecbb3448717aed4","Cargo.toml":"60b83148c95879a3d17e7986ef4d76e13196eada421c8c6cc889e6829f3d9936","LICENSE":"d01d074a85950c0d9e20668ff9f62a7d15727d175655a2b122dc887fcd247783","LICENSE-APACHE":"d01d074a85950c0d9e20668ff9f62a7d15727d175655a2b122dc887fcd247783","METADATA":"ed532f14b150a694a712c1753705b978b944d76ac1d4c8c3a4cb9eeaa8a17495","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"da4ae5524fdd53383b5106f20d86b46958316655142f3f2e24503ed19e0bb734","cargo_embargo.json":"99fd532f84f9502c73551cb2240457ef8e7580b8de57f5aaf4c22fec3372de62","examples/async_source/main.rs":"458653ba31887fd7f79d68742c37ea72a9f0276f465a1cee0936861bb96e719e","examples/custom_format/main.rs":"bfa996ee52798682ef443d46ce0aee385f333f7f13071365d6cbdd3d0e7ca93a","examples/env-list/main.rs":"6091f79fd97f13004c85fe47421742fe04bd33985b69f75924cfc772e842f8cd","examples/glob/conf/00-default.toml":"82b834cf45cde9085c49316a1bd35c4d3f425b42377dc41e737ce103ac4bb194","examples/glob/conf/05-some.yml":"df4bd6211bddd68665bb0a6cc7c79bddfbb67e1dd0ff67d41ce12cb4fdf834a9","examples/glob/conf/99-extra.json":"d4d6a5f720f809bdb3f4cebe5695708498ee70789419a00e4bcf6544884415ad","examples/glob/main.rs":"a34c0a3ea2832c58a00f4aea97d5fd0258ae400e761999d90827d8ad29619005","examples/global/main.rs":"a2702e3691bf1f714e4513e094944d80e8368dcd459e52c5097ca387284db565","examples/hierarchical-env/config/default.toml":"a6191c9beebd7d27ecb8ffdbb57f1e9e7961cbb5fa374dc3b338acf0a3d71413","examples/hierarchical-env/config/development.toml":"f3c589739c3e5e298ec7c85236190cd4a28227da19e246b1b2a93a6a1bfc2258","examples/hierarchical-env/config/production.toml":"32a0076fe6818a9a9c2da57a359e7da5c7c23535aee8370b56ea0f52b13b91b2","examples/hierarchical-env/main.rs":"e3610d5a346010d07855ad2878e8f3316a0de5fd1ce33ea3b746d29e2293728b","examples/hierarchical-env/settings.rs":"1dcb8845cfc574b1ac4afea7f4960b9efc5bb3ad55027782cf15c550e9318517","examples/simple/Settings.toml":"0addf6d8c127c3966c2c402cfd8566d88023242c9a7310cfc27b7f49e947863c","examples/simple/main.rs":"2e35dbd6249508feaa11af0e7d25523400445fa346102a25bc3e2870ecf9e7eb","examples/watch/Settings.toml":"3dbb0f565565b23ee5ea4c43b885195a874e27688a69f0e4dd02a5deb5be57fe","examples/watch/main.rs":"60e4a06c17889e2261b83c4069f0491882816e474fe6a3114ea48f9287406f23","src/builder.rs":"9406ef407ec8af810ea52ea1ce8096d4a555997e4032e7c9e4944bb7ac15737b","src/config.rs":"59af124b14476bf18cd491cb27583dbad7af3022302859bfcfef6c42f15c45e8","src/de.rs":"300e70505634a3bd1b19e20f9d16360ca2244c755031f8ee8f8b63ba468c8595","src/env.rs":"e7c8a8094670d3176a3ee7ae9f02b8075e055d378b94f7f834796743cca91720","src/error.rs":"d98852c70635d0ee5c82e1ac81fd48daf300daa63645fdfd1a2e454a25bbce6b","src/file/format/ini.rs":"3e97b55d6e50542efd434fc5b3634e1d3846ac864594d5684c448cee91787cf5","src/file/format/json.rs":"89772338b7d00b2d743f13e04c481f9853695b98ffa9c7c7f378ec11ff4a0019","src/file/format/json5.rs":"0e1d13de79495b5ec589050740a206f8cb216b2917fbe260c453a14a323f47c9","src/file/format/mod.rs":"4ca3b7f59defa9910d3390a93aabeb83710482bfbbfe7182f6a71162dff651ae","src/file/format/ron.rs":"0fba9fa17a03b41b16c8f86ed98e1c69424c5746fc7d80dee4ee45d4da33740f","src/file/format/toml.rs":"020c7a0a069d091652af39336cf9dc04af8a0de5a4a4cf7f6d62ff81c891cb1e","src/file/format/yaml.rs":"6a91051695ac537a001fa372d7a6be69eefde86b3cdef2f7ccc667fd455836d4","src/file/mod.rs":"323aa5d4374fc898480fc8ded2bf3143cb3ecaaf1ef3b6ad867c3f97441b8aa6","src/file/source/file.rs":"3367a9ef8e4e06362083788bfcb26d19f7e486929cc7d3f1711a80ec5b8c2113","src/file/source/mod.rs":"b157fc86e71cb240767c2964d7e96f4c8632f6e8ae046bbb15babb9ac0aed3e2","src/file/source/string.rs":"4f27234a5434a142db2abff2b19ba6687bcf7ce5c3869fb230f93102734e4bde","src/format.rs":"d661c43f707f68279e7cf3f6347ed0a339d11ee29f6af3dd6430b7c8628f79ef","src/lib.rs":"ac719fa5867a83754c826e90c635dcaa0c1716618df5e929c2ae3e2abf3f69b3","src/map.rs":"427867e8c9158fd8b00fe085f1dd64088ebb1c8846b87f9703a0137dc8b438af","src/path/mod.rs":"1c7fd28ff6a64ce773dd0f3cc2e2638d9a75e64f4cc81761766de959cf226fef","src/path/parser.rs":"23c22ab13daabc4aa93d1f55a2114afe49d38cb6d7df20e618b19314ab3ee6c5","src/ser.rs":"45e433d0611246a7b68afa58e63faf9503a34b3649c44f38f42d2306f371a753","src/source.rs":"d0bf1aa78bde0efc378e981d969163145a44adce9029693190e1ff5426b3e519","src/value.rs":"b9a5dea8c0e5667b8e96dc6ca02c44be130c9a0cfe41df09db048ff527a85209","tests/Settings-invalid.hjson":"bff13eecd1c360c1840dd5a670bf9f78b5cf24416307e9cfe397d5260bd4200e","tests/Settings-invalid.ini":"921ba85bf9d296f6e5a87765d1bce5930a983f4ed2b27f23724680e90e3f0217","tests/Settings-invalid.json":"6fdbb04cf9701a23ffefd2246a6215582a632b20c2cf5f8ba4ed4c15355beb9e","tests/Settings-invalid.json5":"bcdadaf41ae5b0108aac102a981e1a5571bf3e20b2ae3309fb72722d6071bb69","tests/Settings-invalid.ron":"b1803f44e10b2e1767e4b0c1000fdcecd6e04f2a4695360edd79ad434bcf28bb","tests/Settings-invalid.toml":"4bf9ec74e8605bf6c85c043fa9a06b6a8d466343e4703820c60fa033623d72b0","tests/Settings-invalid.yaml":"c426db48f0175f6270202b13e6fafc1a7d86569043b0c8f664d024a1a7c727ed","tests/Settings-production.toml":"10cde147c2c0e5e7697fbd5ca210d9bf2532e3de308e9316b0d245c0a3868961","tests/Settings.hjson":"6ba20131c29435ff252567ea7bb25046675f1f6a701e7faa661cd94d2a009022","tests/Settings.ini":"0c5c0481bd4d67aec4fe4b70a0daa5e33636ad7323a2610e5c5b21c86c676247","tests/Settings.json":"0b507c75f67c86d75f45c33bc29eac004cca77a50f5b987b839ab40e9dbf611a","tests/Settings.json5":"0c283bd70334cd7bb64617577e0c523530aae4ed2eebd5c90a929b8ea8e2dd80","tests/Settings.ron":"6a89ddd071b51ca5de2b9ae80b2c8a00df2ce95686595b0d1f9880fa537b8778","tests/Settings.toml":"1ac3c605024c7ad4a71cfdb72229a8fd1ce1a934e62c75c51dd5167a9bae26c2","tests/Settings.yaml":"ef449e81353e1ab418ed0e667942708cb4883ffb01dd2cbb78a7f442e85c7044","tests/Settings2.default.ini":"0c5c0481bd4d67aec4fe4b70a0daa5e33636ad7323a2610e5c5b21c86c676247","tests/async_builder.rs":"dc02851082631fcd46b5355b5e75d7fd31d3abf58f85335507a8712c1654dd36","tests/datetime.rs":"86ffba9694918abae7acff34c5e15aed32040444c3b6fe9e2f51e6b55b10a52f","tests/defaults.rs":"1c51654979ccc8cf0e51b8e71f9e7ebccb92e68092f5e7a2533f6f87f2cc7140","tests/empty.rs":"2e91e64f8fb7ee1595ec5a637e9c86dcd6cb8816d93251b522d9b8ea078a1578","tests/env.rs":"2cebb08d06bfa88a34cfb0143eb7cc31905f30967796d84fb437352764792329","tests/errors.rs":"8b743281b5a2595f4c658e3eec0700a7523e9430cfc1238f14741d20eb73ffe2","tests/file.rs":"cf955bedf05406960aa68db67778506235ff761df60fc08e26d16e66dcc1c6cd","tests/file_ini.rs":"84a84b86d510547c12654e8844433ea93e04d2e8f531b086b6f833af72ad0af7","tests/file_json.rs":"58d27646a47f58eba7fde291b8ba1c4dd4ff345c29de8248562f5316e10e7cd7","tests/file_json5.rs":"3c0b34b1797d2accb29cd4679c4b2ec9d9f8ac0537d2d543f13b9f3985ae17fb","tests/file_ron.rs":"3e6f174d176b3d5ab2d0e9fd2cc6e0ffd7cbf592389abc2fbc3634614d9c96f1","tests/file_toml.rs":"ad7b7b15dc9aca0663033347fbed7eb3f1fbca4c39a1b88287b1b99b29904415","tests/file_yaml.rs":"29846b5ae8a4e81130bb78f35ca356c6c6340907d144c45168be7ed53b8838c2","tests/get.rs":"6e4fd640ab171cbee7c27f13e1a0495127cdf99c3ffb001c5d117e4477e4dff8","tests/integer_range.rs":"4d82881ef7c9834be3bb4e9bd49abc83db21c8e8ad6aa99478177753df4ab2b0","tests/legacy/datetime.rs":"8a878a7a298d5d166d9536301991a8f993d1bf643b4e1fc696d5e285a5ba062d","tests/legacy/env.rs":"32228e01b77fea85966ef2ae6be6d0146a66c0f76b8d4358ff192a23de88c852","tests/legacy/errors.rs":"db02efc18dbcbaf8e871f6158298bfc4b09ba2f9af9bd23bd1bf2f38ca6624a1","tests/legacy/file.rs":"c5dd9cb493be4d0fb5d70d7123917327246f4949ea41f525cc82259f51ffa502","tests/legacy/file_ini.rs":"796d2ba6fa56ed8fffea994c0929760bb6585e7b21ffb650db4d30b9137f9c1c","tests/legacy/file_json.rs":"3abda17361d8016b7ca579c049845fae6afd46605d3045db13767efb0ed15497","tests/legacy/file_ron.rs":"14c187864fe49364daf343dbf8f79de5eb43c0e42f022c11b75f760741f91622","tests/legacy/file_toml.rs":"4a8fbe2620775ddd5e1bcca6f11cfbaffe818a2cb596a87feae07ac2d1df7428","tests/legacy/file_yaml.rs":"df4b78d011b78fb5a6dc27ae22589610f23b62d045f30723c9b01a87cc1e896a","tests/legacy/get.rs":"ee9fb2a0144ef07810cca4234f4c2ee35dd216836a77203650b91d8402426e30","tests/legacy/merge.rs":"ec1385fcceac5e3054636bb5a031ee23da7252cc962a43c20992eb5fc591f8b3","tests/legacy/mod.rs":"3daec829662c46cd00d659b7b41aa0daf93be65633b9e10c5411111f29839ce3","tests/legacy/set.rs":"8902ff88af8d03819d3d03eaa1c169d0845f6178f13c33f729ba73d34a93485c","tests/legacy_tests.rs":"48f5f9b3cabf53e2f60743c038cfc033235499bd16720bedc3cbd30338dc0970","tests/merge.rs":"ef91054c73396199852a0c1bb9a216a7b6b52dfeb51360c141c346e376a2f826","tests/set.rs":"6614df7472666c141bd5698278fab76cf4849dcc429aec31a9429148d30c0810","tests/types/i64.toml":"cb61e885e4c4f3629db7285d012ac9f3185f98fd1da29989eea543dc47976b19","tests/weird_keys.rs":"c1cfec891b8da7edd45e386270fffb3933893d0c88041c2d27000afdcd071380"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"09d6d6857c51f16f50164fecc6c4646d268595578dbffb0d3a9ef0016c442e8b","Android.bp":"23768ccf391234daee40f84708729834ea6563e2d67637d736f0897567db7ba8","CHANGELOG.md":"c79ee40c91906e5ddfd8a97961c35cb705f9113d758c129972f60960b5753f9a","Cargo.lock":"e87430478c2404c5a842dd83dc8ccfa0794f29b717c00df5412fc2009fd4c761","Cargo.lock.msrv":"b65d2f08f5b5d0e954bd4b84128523d655ff2968ebff76240ecbb3448717aed4","Cargo.toml":"60b83148c95879a3d17e7986ef4d76e13196eada421c8c6cc889e6829f3d9936","LICENSE":"d01d074a85950c0d9e20668ff9f62a7d15727d175655a2b122dc887fcd247783","LICENSE-APACHE":"d01d074a85950c0d9e20668ff9f62a7d15727d175655a2b122dc887fcd247783","METADATA":"ed532f14b150a694a712c1753705b978b944d76ac1d4c8c3a4cb9eeaa8a17495","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"da4ae5524fdd53383b5106f20d86b46958316655142f3f2e24503ed19e0bb734","cargo_embargo.json":"55dc863122d60ed2cce308cdd4b0551d679714a65679a1d3e101addb7d829020","examples/async_source/main.rs":"458653ba31887fd7f79d68742c37ea72a9f0276f465a1cee0936861bb96e719e","examples/custom_format/main.rs":"bfa996ee52798682ef443d46ce0aee385f333f7f13071365d6cbdd3d0e7ca93a","examples/env-list/main.rs":"6091f79fd97f13004c85fe47421742fe04bd33985b69f75924cfc772e842f8cd","examples/glob/conf/00-default.toml":"82b834cf45cde9085c49316a1bd35c4d3f425b42377dc41e737ce103ac4bb194","examples/glob/conf/05-some.yml":"df4bd6211bddd68665bb0a6cc7c79bddfbb67e1dd0ff67d41ce12cb4fdf834a9","examples/glob/conf/99-extra.json":"d4d6a5f720f809bdb3f4cebe5695708498ee70789419a00e4bcf6544884415ad","examples/glob/main.rs":"a34c0a3ea2832c58a00f4aea97d5fd0258ae400e761999d90827d8ad29619005","examples/global/main.rs":"a2702e3691bf1f714e4513e094944d80e8368dcd459e52c5097ca387284db565","examples/hierarchical-env/config/default.toml":"a6191c9beebd7d27ecb8ffdbb57f1e9e7961cbb5fa374dc3b338acf0a3d71413","examples/hierarchical-env/config/development.toml":"f3c589739c3e5e298ec7c85236190cd4a28227da19e246b1b2a93a6a1bfc2258","examples/hierarchical-env/config/production.toml":"32a0076fe6818a9a9c2da57a359e7da5c7c23535aee8370b56ea0f52b13b91b2","examples/hierarchical-env/main.rs":"e3610d5a346010d07855ad2878e8f3316a0de5fd1ce33ea3b746d29e2293728b","examples/hierarchical-env/settings.rs":"1dcb8845cfc574b1ac4afea7f4960b9efc5bb3ad55027782cf15c550e9318517","examples/simple/Settings.toml":"0addf6d8c127c3966c2c402cfd8566d88023242c9a7310cfc27b7f49e947863c","examples/simple/main.rs":"2e35dbd6249508feaa11af0e7d25523400445fa346102a25bc3e2870ecf9e7eb","examples/watch/Settings.toml":"3dbb0f565565b23ee5ea4c43b885195a874e27688a69f0e4dd02a5deb5be57fe","examples/watch/main.rs":"60e4a06c17889e2261b83c4069f0491882816e474fe6a3114ea48f9287406f23","src/builder.rs":"9406ef407ec8af810ea52ea1ce8096d4a555997e4032e7c9e4944bb7ac15737b","src/config.rs":"59af124b14476bf18cd491cb27583dbad7af3022302859bfcfef6c42f15c45e8","src/de.rs":"300e70505634a3bd1b19e20f9d16360ca2244c755031f8ee8f8b63ba468c8595","src/env.rs":"e7c8a8094670d3176a3ee7ae9f02b8075e055d378b94f7f834796743cca91720","src/error.rs":"d98852c70635d0ee5c82e1ac81fd48daf300daa63645fdfd1a2e454a25bbce6b","src/file/format/ini.rs":"3e97b55d6e50542efd434fc5b3634e1d3846ac864594d5684c448cee91787cf5","src/file/format/json.rs":"89772338b7d00b2d743f13e04c481f9853695b98ffa9c7c7f378ec11ff4a0019","src/file/format/json5.rs":"0e1d13de79495b5ec589050740a206f8cb216b2917fbe260c453a14a323f47c9","src/file/format/mod.rs":"4ca3b7f59defa9910d3390a93aabeb83710482bfbbfe7182f6a71162dff651ae","src/file/format/ron.rs":"0fba9fa17a03b41b16c8f86ed98e1c69424c5746fc7d80dee4ee45d4da33740f","src/file/format/toml.rs":"020c7a0a069d091652af39336cf9dc04af8a0de5a4a4cf7f6d62ff81c891cb1e","src/file/format/yaml.rs":"6a91051695ac537a001fa372d7a6be69eefde86b3cdef2f7ccc667fd455836d4","src/file/mod.rs":"323aa5d4374fc898480fc8ded2bf3143cb3ecaaf1ef3b6ad867c3f97441b8aa6","src/file/source/file.rs":"3367a9ef8e4e06362083788bfcb26d19f7e486929cc7d3f1711a80ec5b8c2113","src/file/source/mod.rs":"b157fc86e71cb240767c2964d7e96f4c8632f6e8ae046bbb15babb9ac0aed3e2","src/file/source/string.rs":"4f27234a5434a142db2abff2b19ba6687bcf7ce5c3869fb230f93102734e4bde","src/format.rs":"d661c43f707f68279e7cf3f6347ed0a339d11ee29f6af3dd6430b7c8628f79ef","src/lib.rs":"ac719fa5867a83754c826e90c635dcaa0c1716618df5e929c2ae3e2abf3f69b3","src/map.rs":"427867e8c9158fd8b00fe085f1dd64088ebb1c8846b87f9703a0137dc8b438af","src/path/mod.rs":"1c7fd28ff6a64ce773dd0f3cc2e2638d9a75e64f4cc81761766de959cf226fef","src/path/parser.rs":"23c22ab13daabc4aa93d1f55a2114afe49d38cb6d7df20e618b19314ab3ee6c5","src/ser.rs":"45e433d0611246a7b68afa58e63faf9503a34b3649c44f38f42d2306f371a753","src/source.rs":"d0bf1aa78bde0efc378e981d969163145a44adce9029693190e1ff5426b3e519","src/value.rs":"b9a5dea8c0e5667b8e96dc6ca02c44be130c9a0cfe41df09db048ff527a85209","tests/Settings-invalid.hjson":"bff13eecd1c360c1840dd5a670bf9f78b5cf24416307e9cfe397d5260bd4200e","tests/Settings-invalid.ini":"921ba85bf9d296f6e5a87765d1bce5930a983f4ed2b27f23724680e90e3f0217","tests/Settings-invalid.json":"6fdbb04cf9701a23ffefd2246a6215582a632b20c2cf5f8ba4ed4c15355beb9e","tests/Settings-invalid.json5":"bcdadaf41ae5b0108aac102a981e1a5571bf3e20b2ae3309fb72722d6071bb69","tests/Settings-invalid.ron":"b1803f44e10b2e1767e4b0c1000fdcecd6e04f2a4695360edd79ad434bcf28bb","tests/Settings-invalid.toml":"4bf9ec74e8605bf6c85c043fa9a06b6a8d466343e4703820c60fa033623d72b0","tests/Settings-invalid.yaml":"c426db48f0175f6270202b13e6fafc1a7d86569043b0c8f664d024a1a7c727ed","tests/Settings-production.toml":"10cde147c2c0e5e7697fbd5ca210d9bf2532e3de308e9316b0d245c0a3868961","tests/Settings.hjson":"6ba20131c29435ff252567ea7bb25046675f1f6a701e7faa661cd94d2a009022","tests/Settings.ini":"0c5c0481bd4d67aec4fe4b70a0daa5e33636ad7323a2610e5c5b21c86c676247","tests/Settings.json":"0b507c75f67c86d75f45c33bc29eac004cca77a50f5b987b839ab40e9dbf611a","tests/Settings.json5":"0c283bd70334cd7bb64617577e0c523530aae4ed2eebd5c90a929b8ea8e2dd80","tests/Settings.ron":"6a89ddd071b51ca5de2b9ae80b2c8a00df2ce95686595b0d1f9880fa537b8778","tests/Settings.toml":"1ac3c605024c7ad4a71cfdb72229a8fd1ce1a934e62c75c51dd5167a9bae26c2","tests/Settings.yaml":"ef449e81353e1ab418ed0e667942708cb4883ffb01dd2cbb78a7f442e85c7044","tests/Settings2.default.ini":"0c5c0481bd4d67aec4fe4b70a0daa5e33636ad7323a2610e5c5b21c86c676247","tests/async_builder.rs":"dc02851082631fcd46b5355b5e75d7fd31d3abf58f85335507a8712c1654dd36","tests/datetime.rs":"86ffba9694918abae7acff34c5e15aed32040444c3b6fe9e2f51e6b55b10a52f","tests/defaults.rs":"1c51654979ccc8cf0e51b8e71f9e7ebccb92e68092f5e7a2533f6f87f2cc7140","tests/empty.rs":"2e91e64f8fb7ee1595ec5a637e9c86dcd6cb8816d93251b522d9b8ea078a1578","tests/env.rs":"2cebb08d06bfa88a34cfb0143eb7cc31905f30967796d84fb437352764792329","tests/errors.rs":"8b743281b5a2595f4c658e3eec0700a7523e9430cfc1238f14741d20eb73ffe2","tests/file.rs":"cf955bedf05406960aa68db67778506235ff761df60fc08e26d16e66dcc1c6cd","tests/file_ini.rs":"84a84b86d510547c12654e8844433ea93e04d2e8f531b086b6f833af72ad0af7","tests/file_json.rs":"58d27646a47f58eba7fde291b8ba1c4dd4ff345c29de8248562f5316e10e7cd7","tests/file_json5.rs":"3c0b34b1797d2accb29cd4679c4b2ec9d9f8ac0537d2d543f13b9f3985ae17fb","tests/file_ron.rs":"3e6f174d176b3d5ab2d0e9fd2cc6e0ffd7cbf592389abc2fbc3634614d9c96f1","tests/file_toml.rs":"ad7b7b15dc9aca0663033347fbed7eb3f1fbca4c39a1b88287b1b99b29904415","tests/file_yaml.rs":"29846b5ae8a4e81130bb78f35ca356c6c6340907d144c45168be7ed53b8838c2","tests/get.rs":"6e4fd640ab171cbee7c27f13e1a0495127cdf99c3ffb001c5d117e4477e4dff8","tests/integer_range.rs":"4d82881ef7c9834be3bb4e9bd49abc83db21c8e8ad6aa99478177753df4ab2b0","tests/legacy/datetime.rs":"8a878a7a298d5d166d9536301991a8f993d1bf643b4e1fc696d5e285a5ba062d","tests/legacy/env.rs":"32228e01b77fea85966ef2ae6be6d0146a66c0f76b8d4358ff192a23de88c852","tests/legacy/errors.rs":"db02efc18dbcbaf8e871f6158298bfc4b09ba2f9af9bd23bd1bf2f38ca6624a1","tests/legacy/file.rs":"c5dd9cb493be4d0fb5d70d7123917327246f4949ea41f525cc82259f51ffa502","tests/legacy/file_ini.rs":"796d2ba6fa56ed8fffea994c0929760bb6585e7b21ffb650db4d30b9137f9c1c","tests/legacy/file_json.rs":"3abda17361d8016b7ca579c049845fae6afd46605d3045db13767efb0ed15497","tests/legacy/file_ron.rs":"14c187864fe49364daf343dbf8f79de5eb43c0e42f022c11b75f760741f91622","tests/legacy/file_toml.rs":"4a8fbe2620775ddd5e1bcca6f11cfbaffe818a2cb596a87feae07ac2d1df7428","tests/legacy/file_yaml.rs":"df4b78d011b78fb5a6dc27ae22589610f23b62d045f30723c9b01a87cc1e896a","tests/legacy/get.rs":"ee9fb2a0144ef07810cca4234f4c2ee35dd216836a77203650b91d8402426e30","tests/legacy/merge.rs":"ec1385fcceac5e3054636bb5a031ee23da7252cc962a43c20992eb5fc591f8b3","tests/legacy/mod.rs":"3daec829662c46cd00d659b7b41aa0daf93be65633b9e10c5411111f29839ce3","tests/legacy/set.rs":"8902ff88af8d03819d3d03eaa1c169d0845f6178f13c33f729ba73d34a93485c","tests/legacy_tests.rs":"48f5f9b3cabf53e2f60743c038cfc033235499bd16720bedc3cbd30338dc0970","tests/merge.rs":"ef91054c73396199852a0c1bb9a216a7b6b52dfeb51360c141c346e376a2f826","tests/set.rs":"6614df7472666c141bd5698278fab76cf4849dcc429aec31a9429148d30c0810","tests/types/i64.toml":"cb61e885e4c4f3629db7285d012ac9f3185f98fd1da29989eea543dc47976b19","tests/weird_keys.rs":"c1cfec891b8da7edd45e386270fffb3933893d0c88041c2d27000afdcd071380"}}
\ No newline at end of file
diff --git a/crates/config/cargo_embargo.json b/crates/config/cargo_embargo.json
index 85ca64d..3f795d7 100644
--- a/crates/config/cargo_embargo.json
+++ b/crates/config/cargo_embargo.json
@@ -12,5 +12,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/configparser/.android-checksum.json b/crates/configparser/.android-checksum.json
index beadaf1..2f7caec 100644
--- a/crates/configparser/.android-checksum.json
+++ b/crates/configparser/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b9783d41ffb1e015d69f07f26ab94f5240aefd023ff8b52afc2471cd52454076","Android.bp":"344ee75472d5f0c9355c7cd8d72cfde4a8f9babd84be04ce583c36fb9fef8a6a","CHANGELOG.md":"6a8512faeb2f73798883ec2a39e1cece19cea0a862173b18727782f708e987c0","CODE_OF_CONDUCT.md":"ce2dc1da3a9500e37b6bd5b600db8c8fe84ac439616d7d069e7f201bd765f6e1","Cargo.toml":"d4b76e68134c7d9887596cd604619a79effa04a6c620c109b295dd8ae3d2e980","LICENSE":"0b5600ba9a07cd4f7bb7838c8f44b9fefe1978a5b53f4e59e06342e956a8e41e","LICENSE-LGPL":"910a9eaf6735439ad0858a31b8b132c521c1f11fcb61294f054e738983ecd851","LICENSE-MIT":"0b5600ba9a07cd4f7bb7838c8f44b9fefe1978a5b53f4e59e06342e956a8e41e","METADATA":"e7495452598b6b0709317c7eac4564579b7f2b41aa377911f4ccc71a30fe79e1","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"03b63936ddd92f3c8bce3c4e61fd0f8d0c4c4f71717e32910a314eabee246cc5","cargo_embargo.json":"6a7eba5b0b4d71dc2d2d378ec4ec3dc8069bbdf360968f5b01a6241b0499eaf7","src/ini.rs":"db8484aff1503daf48d0a328ad199336cb4d71bcf4196c02ea776d60d7b3bacd","src/lib.rs":"8500f7f2fbc2d8c448a9228fe1a6b06f9071b396ed42339f5dd156d6b9bfdb5e","tests/test.ini":"50471894658b32bae93fefc94ba35620754acb845210065e66c1831737bd8a20","tests/test.rs":"40435c678acb07c19ad161e725bb0eb8ef70ada8e692d99951cecddf02fa22db","tests/test_more.ini":"b515402d65250ba37dbe74c3f151c07519b4d003bedcc5f33b1d9c619f402f83","tests/test_multiline.ini":"18959588a69f69afce0db5d0baa3bf404ea345ad5d9d4b2325651f80274e78c8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b9783d41ffb1e015d69f07f26ab94f5240aefd023ff8b52afc2471cd52454076","Android.bp":"122898bfba34a60cd9800c9116357474723712d38077c8324152f78d4e640969","CHANGELOG.md":"6a8512faeb2f73798883ec2a39e1cece19cea0a862173b18727782f708e987c0","CODE_OF_CONDUCT.md":"ce2dc1da3a9500e37b6bd5b600db8c8fe84ac439616d7d069e7f201bd765f6e1","Cargo.toml":"d4b76e68134c7d9887596cd604619a79effa04a6c620c109b295dd8ae3d2e980","LICENSE":"0b5600ba9a07cd4f7bb7838c8f44b9fefe1978a5b53f4e59e06342e956a8e41e","LICENSE-LGPL":"910a9eaf6735439ad0858a31b8b132c521c1f11fcb61294f054e738983ecd851","LICENSE-MIT":"0b5600ba9a07cd4f7bb7838c8f44b9fefe1978a5b53f4e59e06342e956a8e41e","METADATA":"e7495452598b6b0709317c7eac4564579b7f2b41aa377911f4ccc71a30fe79e1","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"03b63936ddd92f3c8bce3c4e61fd0f8d0c4c4f71717e32910a314eabee246cc5","cargo_embargo.json":"52782284f299e4be314fb650a05d58f8d51ff2301c6adea3aeeba435a11ec7c9","src/ini.rs":"db8484aff1503daf48d0a328ad199336cb4d71bcf4196c02ea776d60d7b3bacd","src/lib.rs":"8500f7f2fbc2d8c448a9228fe1a6b06f9071b396ed42339f5dd156d6b9bfdb5e","tests/test.ini":"50471894658b32bae93fefc94ba35620754acb845210065e66c1831737bd8a20","tests/test.rs":"40435c678acb07c19ad161e725bb0eb8ef70ada8e692d99951cecddf02fa22db","tests/test_more.ini":"b515402d65250ba37dbe74c3f151c07519b4d003bedcc5f33b1d9c619f402f83","tests/test_multiline.ini":"18959588a69f69afce0db5d0baa3bf404ea345ad5d9d4b2325651f80274e78c8"}}
\ No newline at end of file
diff --git a/crates/configparser/Android.bp b/crates/configparser/Android.bp
index 75b6980..6e87f03 100644
--- a/crates/configparser/Android.bp
+++ b/crates/configparser/Android.bp
@@ -27,5 +27,6 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: ["//vendor:__subpackages__"],
}
diff --git a/crates/configparser/cargo_embargo.json b/crates/configparser/cargo_embargo.json
index 04a46f6..11f0b29 100644
--- a/crates/configparser/cargo_embargo.json
+++ b/crates/configparser/cargo_embargo.json
@@ -4,5 +4,6 @@
"//vendor:__subpackages__"
]
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/cov-mark/.android-checksum.json b/crates/cov-mark/.android-checksum.json
index 16697a3..821ef0b 100644
--- a/crates/cov-mark/.android-checksum.json
+++ b/crates/cov-mark/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9c6a3d18f8b4f110de64a2450da600ff35faef60775d89e68e559618c08dcde9","Android.bp":"6adb0bc038139fb30e07c6b33946d73f23b7793b2467d11302c9a96f436c4d1d","Cargo.toml":"fbca3e4496587084b9436587f7f5dc7806b35011f2a8bd75344add357bd42867","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"cb185d9310fd9b4d6ad5ba7c5b3964f554cb046af54a1f7857142ba2c615ded1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"626ced7d42093fe39d9283900bee7b4a3b916b785d9a5c63e4ab575558f58e96","TEST_MAPPING":"1eaa62ccc0dd2d6cce86e389c8acc462e831f6bec461fd0f65488dfd8fb32479","cargo_embargo.json":"b613c802b205da2fb25a2185782b6254db468173a140ec61b16499e4522fa3ce","src/lib.rs":"0559d58bb9c4358a971a9e8434d6aad36c8b81a0f3759c0c5b7d91ba2dffff5e","tests/smoke.rs":"bb2da3619d815c5aa6d9116e870b3a7741b730183ceed295ed4a66b6c945d761"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9c6a3d18f8b4f110de64a2450da600ff35faef60775d89e68e559618c08dcde9","Android.bp":"8ae274fe983178838a390332d30b35b28ed02376f582d579ba23af2562200fcc","Cargo.toml":"fbca3e4496587084b9436587f7f5dc7806b35011f2a8bd75344add357bd42867","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"cb185d9310fd9b4d6ad5ba7c5b3964f554cb046af54a1f7857142ba2c615ded1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"626ced7d42093fe39d9283900bee7b4a3b916b785d9a5c63e4ab575558f58e96","TEST_MAPPING":"1eaa62ccc0dd2d6cce86e389c8acc462e831f6bec461fd0f65488dfd8fb32479","cargo_embargo.json":"aa791ddfec23919ab98ae301a752055e3cfc1ddabba072c6d9e9e3f50c785ef0","src/lib.rs":"0559d58bb9c4358a971a9e8434d6aad36c8b81a0f3759c0c5b7d91ba2dffff5e","tests/smoke.rs":"bb2da3619d815c5aa6d9116e870b3a7741b730183ceed295ed4a66b6c945d761"}}
\ No newline at end of file
diff --git a/crates/cov-mark/Android.bp b/crates/cov-mark/Android.bp
index 53fc2cc..5425711 100644
--- a/crates/cov-mark/Android.bp
+++ b/crates/cov-mark/Android.bp
@@ -51,6 +51,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
@@ -83,4 +84,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/cov-mark/cargo_embargo.json b/crates/cov-mark/cargo_embargo.json
index 0bc260a..6b7ada3 100644
--- a/crates/cov-mark/cargo_embargo.json
+++ b/crates/cov-mark/cargo_embargo.json
@@ -9,5 +9,6 @@
"cov-mark_test_tests_smoke": "cov-mark_disabled_test_tests_smoke"
}
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crc-catalog/.android-checksum.json b/crates/crc-catalog/.android-checksum.json
index 45a7a3b..3b53e90 100644
--- a/crates/crc-catalog/.android-checksum.json
+++ b/crates/crc-catalog/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a49b961c1cc34b0a826c017b2369c7d2c27543ceed2e55ccbba7994e0d09d28b","Android.bp":"850e7b3968aee5c875dbb878a2f2eb3f9e79d2fa633ccefb32fb7b9ac5fd913f","Cargo.toml":"bfbf091e7306f0ba037ab407d89f41b2c897a46bde2fba34fa89b75ec04f72d9","LICENSE":"5f002efdab7b7556910f32fca0679f2d122cd9f582539149c9bc9377a0830552","LICENSES/Apache-2.0.txt":"5f002efdab7b7556910f32fca0679f2d122cd9f582539149c9bc9377a0830552","METADATA":"a2ca5958d14f4fd1029ddf3aedf84d76bf7fbc31626ded51603c2483a4d23ae7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8c1bfb5f5a4bf64d0ed3686bb847b79dd21daf2cb0ebeb94f41ec07de7edbbe5","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/algorithm.rs":"e7900389d8727a72708b665cd5080a5faaf900b626808fd77100812e6e6b2eac","src/lib.rs":"332e69799028a61d2ebf565ec051ef8f5692c24fea800db26ea8265eda43ade8","src/poly.rs":"d49c6d8c9bc7d65af6d7c73c89f96fa0ed4b31f98bb7886414b0a402c3493307"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a49b961c1cc34b0a826c017b2369c7d2c27543ceed2e55ccbba7994e0d09d28b","Android.bp":"8051bd1032c08844464baf4ee20b49beca844b669180d94b264858b1ae50c309","Cargo.toml":"bfbf091e7306f0ba037ab407d89f41b2c897a46bde2fba34fa89b75ec04f72d9","LICENSE":"5f002efdab7b7556910f32fca0679f2d122cd9f582539149c9bc9377a0830552","LICENSES/Apache-2.0.txt":"5f002efdab7b7556910f32fca0679f2d122cd9f582539149c9bc9377a0830552","METADATA":"a2ca5958d14f4fd1029ddf3aedf84d76bf7fbc31626ded51603c2483a4d23ae7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8c1bfb5f5a4bf64d0ed3686bb847b79dd21daf2cb0ebeb94f41ec07de7edbbe5","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/algorithm.rs":"e7900389d8727a72708b665cd5080a5faaf900b626808fd77100812e6e6b2eac","src/lib.rs":"332e69799028a61d2ebf565ec051ef8f5692c24fea800db26ea8265eda43ade8","src/poly.rs":"d49c6d8c9bc7d65af6d7c73c89f96fa0ed4b31f98bb7886414b0a402c3493307"}}
\ No newline at end of file
diff --git a/crates/crc-catalog/Android.bp b/crates/crc-catalog/Android.bp
index 9baa375..7f4ac60 100644
--- a/crates/crc-catalog/Android.bp
+++ b/crates/crc-catalog/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crc-catalog/cargo_embargo.json b/crates/crc-catalog/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/crc-catalog/cargo_embargo.json
+++ b/crates/crc-catalog/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crc/.android-checksum.json b/crates/crc/.android-checksum.json
index 476e4ec..a64265a 100644
--- a/crates/crc/.android-checksum.json
+++ b/crates/crc/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"34754db4a1e9a71da55a0cfdc60f5d4a1109a58157b4469441978532d0e3badc","Android.bp":"485309730ede32e05351473019a671eb3d9d76737b84dcc4adab585aa46110f2","Cargo.toml":"766ae37532e9cf2729a780c6167ae55996ef95fd1f2399d497d140290281030e","LICENSE":"03d8bea055b5de52fdc7b49feecd19d820250671b5526dd77aa6d393cf63e5af","LICENSE-APACHE":"03d8bea055b5de52fdc7b49feecd19d820250671b5526dd77aa6d393cf63e5af","METADATA":"a58cf1cf91f0a6bca21a4ac90bc5e5c1324e0bcdc42d8d803d74ef3d1f6df866","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b3b5012e4f3d89f8099b2e799ee5cadc5ed1368149219b96aa6aadd3e7d49068","TEST_MAPPING":"ac1199d0718cb5f802d7f640615fd0f2d1571881b85884a3634e240b110755df","benches/bench.rs":"8c27513c47ed0c24d3c7883889f0947c76709607d3c9f805f5c94dba36323985","cargo_embargo.json":"18444b71500bbccebbbe2c077def84dbfad06f825b0a95f582b61598286793ad","src/crc128.rs":"b17786c4cb9edfeb9aa90c25bc9a83cab7a4a3879beab961fe3cf0356eb86bca","src/crc128/bytewise.rs":"041505c8dd2d34043c2141e55a7f4ecbb226b8c547b80f4f7694f0d5ad6951c3","src/crc128/nolookup.rs":"eb1a8ee460ae7b9800ad3aec78885cbe8dc9d903df2879845abeeb52165d7967","src/crc128/slice16.rs":"100f284ee6bd35dc52307e44a1d4b96b608cacea7f344f296cd8ec0317fc0997","src/crc16.rs":"05ffb51fb5b6a3a4c0d4ecfb7ce40dec73bbdbbb9d3297cf612aa830333b3dbc","src/crc16/bytewise.rs":"56bdf53aa655ec930c3152bc31980ecf49a045b87af1cd805f6369851e8df8df","src/crc16/nolookup.rs":"ae70db1273339f6b377d37e60ba8bc1d3162e367dcdb478f6d47bb4283c0c600","src/crc16/slice16.rs":"9c9d9a96ceaddd1d48b4ee664c66b74c6bfa1c7a2d5b761ba8253fd218ace19e","src/crc32.rs":"7dda84145e34ef8f4cf4ea8fd22a75b5fae8393324e4f674e73e00a3bd11aaa5","src/crc32/bytewise.rs":"505cd110b23276d8a055e2663fdb7c7d56fc920161aa0c797545409d93eaa601","src/crc32/nolookup.rs":"2dffec522a5ff5a48ff333d8eeece604b9ee34cf123cae3be3f29f9305534281","src/crc32/slice16.rs":"4c9e961fca36e5829368cfd03c4dc9c33ab538bd9a89a8d53701f466852b5d3b","src/crc64.rs":"28d7157cce954d63193559652b934ed20ef011aeb85b32deaba8dd5e9bf511e9","src/crc64/bytewise.rs":"8a8289624559bc93fedc8252623052bcd0ebb8b377bfa145ee4a54a6003e8e43","src/crc64/nolookup.rs":"47ee39b4f4dc5c55d88910b5598560c8fd9ffab23f9acd4bffadb431dd1aef1f","src/crc64/slice16.rs":"cf286de0f2b02f1381d1a2cda2078fc5b1ae9402d0fc7307532c94cbc889e6ca","src/crc8.rs":"d67d3e7dd3e884feaaf05bbac2c3d6de758b019a976aedce002e092d671cf66e","src/crc8/bytewise.rs":"c71f292fb0c76472e4ded786bb47abd6340036efa95de53d3e68872f5eb8d740","src/crc8/nolookup.rs":"fdcdc83b90494ee35b660a5b555819dcb67bfa999a50e8f3efece1e239ddb71f","src/crc8/slice16.rs":"a9baa6721cfe81a1907168b85c994f3ea1da6da642aa5893edfd71fe819d5112","src/lib.rs":"48a733529096ac5e710ff90f337e1e60c6596adb3c5cf209cd86436ce28f7bf3","src/table.rs":"d890d7fe93fa511c199c3a4a2f7e75f4ab9504bc0e61b14e550acca931d84fb8","src/util.rs":"ae932e730a5aa0c9b35f30d1cd7d5ece1dd94115311156d0c0b75d04c492b515","tests/crc.rs":"d60e42679687f821204122ad35777b7ac9b899ee6a4bde510f9a6e4a0ee8656c","tests/test_under_all_feature_combinations.sh":"e279cbf5949c07d8516d7a4655596a4d0cf1af59a191da01aa777f7939c37b50"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"34754db4a1e9a71da55a0cfdc60f5d4a1109a58157b4469441978532d0e3badc","Android.bp":"29a1a126063204b1a98b90e5051f422643ee04a3c4b34cac6251a3a973882090","Cargo.toml":"766ae37532e9cf2729a780c6167ae55996ef95fd1f2399d497d140290281030e","LICENSE":"03d8bea055b5de52fdc7b49feecd19d820250671b5526dd77aa6d393cf63e5af","LICENSE-APACHE":"03d8bea055b5de52fdc7b49feecd19d820250671b5526dd77aa6d393cf63e5af","METADATA":"a58cf1cf91f0a6bca21a4ac90bc5e5c1324e0bcdc42d8d803d74ef3d1f6df866","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b3b5012e4f3d89f8099b2e799ee5cadc5ed1368149219b96aa6aadd3e7d49068","TEST_MAPPING":"ac1199d0718cb5f802d7f640615fd0f2d1571881b85884a3634e240b110755df","benches/bench.rs":"8c27513c47ed0c24d3c7883889f0947c76709607d3c9f805f5c94dba36323985","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/crc128.rs":"b17786c4cb9edfeb9aa90c25bc9a83cab7a4a3879beab961fe3cf0356eb86bca","src/crc128/bytewise.rs":"041505c8dd2d34043c2141e55a7f4ecbb226b8c547b80f4f7694f0d5ad6951c3","src/crc128/nolookup.rs":"eb1a8ee460ae7b9800ad3aec78885cbe8dc9d903df2879845abeeb52165d7967","src/crc128/slice16.rs":"100f284ee6bd35dc52307e44a1d4b96b608cacea7f344f296cd8ec0317fc0997","src/crc16.rs":"05ffb51fb5b6a3a4c0d4ecfb7ce40dec73bbdbbb9d3297cf612aa830333b3dbc","src/crc16/bytewise.rs":"56bdf53aa655ec930c3152bc31980ecf49a045b87af1cd805f6369851e8df8df","src/crc16/nolookup.rs":"ae70db1273339f6b377d37e60ba8bc1d3162e367dcdb478f6d47bb4283c0c600","src/crc16/slice16.rs":"9c9d9a96ceaddd1d48b4ee664c66b74c6bfa1c7a2d5b761ba8253fd218ace19e","src/crc32.rs":"7dda84145e34ef8f4cf4ea8fd22a75b5fae8393324e4f674e73e00a3bd11aaa5","src/crc32/bytewise.rs":"505cd110b23276d8a055e2663fdb7c7d56fc920161aa0c797545409d93eaa601","src/crc32/nolookup.rs":"2dffec522a5ff5a48ff333d8eeece604b9ee34cf123cae3be3f29f9305534281","src/crc32/slice16.rs":"4c9e961fca36e5829368cfd03c4dc9c33ab538bd9a89a8d53701f466852b5d3b","src/crc64.rs":"28d7157cce954d63193559652b934ed20ef011aeb85b32deaba8dd5e9bf511e9","src/crc64/bytewise.rs":"8a8289624559bc93fedc8252623052bcd0ebb8b377bfa145ee4a54a6003e8e43","src/crc64/nolookup.rs":"47ee39b4f4dc5c55d88910b5598560c8fd9ffab23f9acd4bffadb431dd1aef1f","src/crc64/slice16.rs":"cf286de0f2b02f1381d1a2cda2078fc5b1ae9402d0fc7307532c94cbc889e6ca","src/crc8.rs":"d67d3e7dd3e884feaaf05bbac2c3d6de758b019a976aedce002e092d671cf66e","src/crc8/bytewise.rs":"c71f292fb0c76472e4ded786bb47abd6340036efa95de53d3e68872f5eb8d740","src/crc8/nolookup.rs":"fdcdc83b90494ee35b660a5b555819dcb67bfa999a50e8f3efece1e239ddb71f","src/crc8/slice16.rs":"a9baa6721cfe81a1907168b85c994f3ea1da6da642aa5893edfd71fe819d5112","src/lib.rs":"48a733529096ac5e710ff90f337e1e60c6596adb3c5cf209cd86436ce28f7bf3","src/table.rs":"d890d7fe93fa511c199c3a4a2f7e75f4ab9504bc0e61b14e550acca931d84fb8","src/util.rs":"ae932e730a5aa0c9b35f30d1cd7d5ece1dd94115311156d0c0b75d04c492b515","tests/crc.rs":"d60e42679687f821204122ad35777b7ac9b899ee6a4bde510f9a6e4a0ee8656c","tests/test_under_all_feature_combinations.sh":"e279cbf5949c07d8516d7a4655596a4d0cf1af59a191da01aa777f7939c37b50"}}
\ No newline at end of file
diff --git a/crates/crc/Android.bp b/crates/crc/Android.bp
index 9bbee27..fdbd8f5 100644
--- a/crates/crc/Android.bp
+++ b/crates/crc/Android.bp
@@ -67,4 +67,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crc/cargo_embargo.json b/crates/crc/cargo_embargo.json
index a0e3518..d238ed2 100644
--- a/crates/crc/cargo_embargo.json
+++ b/crates/crc/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crc32fast/.android-checksum.json b/crates/crc32fast/.android-checksum.json
index 1fa01be..01c3501 100644
--- a/crates/crc32fast/.android-checksum.json
+++ b/crates/crc32fast/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8f6db78fd1fb5568993a8e9b20a0d0f3ee045697d9894213d86cbdb2ae8fa60d","Android.bp":"d66816367220b74e39e2f2ac81c47ae0abff1ef5a548014cb91171cef7a74676","Cargo.toml":"2e146feab2ceebff4da47761ee01a98aa1d5e7a3f8688f3b0819352e21a6cf1f","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"f8ab4107b7fa3c19ae89e939c0b480744ed61273fd4b7b8ffe50e4b6505b641f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ff5ad5d9646322af9e911352d28d5568fedd9ab82b909041e2b8575779222baf","TEST_MAPPING":"4f2550a96043b3307244ca87e15bfc4ea44d88940dfa4bf7ea5fb986e4839485","benches/bench.rs":"602212098fbe550a098e5abe7648a781a7d35403481782de2a27af62a90a7e7d","cargo_embargo.json":"3e0825a4fa8104b9682d90fefe160bcaa994f25ee0acceb6a8b2c66a3f6cd92b","src/baseline.rs":"41868d6ac161eefaceae7a56d065bb6c29a0955ebac578d82f1cc7c65ccca86d","src/combine.rs":"8d3ae5a91463071623c36f17b648d8d7b1c2af24b7b7f45f4407c2f05e43fb77","src/lib.rs":"a7aca9ee38f48dbf713a5b81a34f53ea1b1a398438b0826b693b7d3928fbdeb4","src/specialized/aarch64.rs":"6b6297e0a93dc58da77edff5c5dbaeab8e4086992dc258118eb545fa372b221c","src/specialized/mod.rs":"ec7dda745491d9a3e19c79b57858fc2b6d50c1dead0f95191e7df7530a44ebd9","src/specialized/pclmulqdq.rs":"e1f374c4041e472572b7afa7e8924c5d014940232b86437cca1a58635f77834c","src/table.rs":"cce839e493abb172f9259f68b80bb5f90b2c811b020b873b9f73f2262bed1c2c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8f6db78fd1fb5568993a8e9b20a0d0f3ee045697d9894213d86cbdb2ae8fa60d","Android.bp":"41afd55d9e3cbc6d4bec1497e025cdd0e801d0f332241f2fe038de422ba3f2f7","Cargo.toml":"2e146feab2ceebff4da47761ee01a98aa1d5e7a3f8688f3b0819352e21a6cf1f","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"f8ab4107b7fa3c19ae89e939c0b480744ed61273fd4b7b8ffe50e4b6505b641f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ff5ad5d9646322af9e911352d28d5568fedd9ab82b909041e2b8575779222baf","TEST_MAPPING":"4f2550a96043b3307244ca87e15bfc4ea44d88940dfa4bf7ea5fb986e4839485","benches/bench.rs":"602212098fbe550a098e5abe7648a781a7d35403481782de2a27af62a90a7e7d","cargo_embargo.json":"7d5bcb7262d1cafc3d8d1625b253db6a0e77cd1cd2bb8291db553ad5396da84f","src/baseline.rs":"41868d6ac161eefaceae7a56d065bb6c29a0955ebac578d82f1cc7c65ccca86d","src/combine.rs":"8d3ae5a91463071623c36f17b648d8d7b1c2af24b7b7f45f4407c2f05e43fb77","src/lib.rs":"a7aca9ee38f48dbf713a5b81a34f53ea1b1a398438b0826b693b7d3928fbdeb4","src/specialized/aarch64.rs":"6b6297e0a93dc58da77edff5c5dbaeab8e4086992dc258118eb545fa372b221c","src/specialized/mod.rs":"ec7dda745491d9a3e19c79b57858fc2b6d50c1dead0f95191e7df7530a44ebd9","src/specialized/pclmulqdq.rs":"e1f374c4041e472572b7afa7e8924c5d014940232b86437cca1a58635f77834c","src/table.rs":"cce839e493abb172f9259f68b80bb5f90b2c811b020b873b9f73f2262bed1c2c"}}
\ No newline at end of file
diff --git a/crates/crc32fast/Android.bp b/crates/crc32fast/Android.bp
index 193cccf..7f83afc 100644
--- a/crates/crc32fast/Android.bp
+++ b/crates/crc32fast/Android.bp
@@ -57,4 +57,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crc32fast/cargo_embargo.json b/crates/crc32fast/cargo_embargo.json
index 5a2f0b7..0be7752 100644
--- a/crates/crc32fast/cargo_embargo.json
+++ b/crates/crc32fast/cargo_embargo.json
@@ -4,5 +4,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/criterion-plot/.android-checksum.json b/crates/criterion-plot/.android-checksum.json
index f73d6ba..70c6d47 100644
--- a/crates/criterion-plot/.android-checksum.json
+++ b/crates/criterion-plot/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f0ea22113844492b2642ae6ea7dc44fd406baebd99652837a626420156a1d774","Android.bp":"045f08b3cd89adade391f707e41d03a893e06efc45e15a83923190dac4fd7be4","CONTRIBUTING.md":"85b3182b9bcae335f69cee16f1981cefd65c3afb14591f7fcca1ddf46c8b65c3","Cargo.toml":"34319949f3c060bb9a7e864c54e70cc0aa31d2620cf798c957facee515e26183","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7a5f98bc4040e4ef8f0ac21abf03a038017c1def07d99e8e70967db05ad2054e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7eac3b0f9ebbd082e8af3f010c080948a5d3721c18d19a8e78be01f0333c8bc6","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/axis.rs":"f498e130c5ece6f9d4346cb35a74c47cc8ea0b3e528e41bcc1e3aae0bf47021c","src/candlestick.rs":"9da052436750809459352b139b26be8312ce6eb5f336cc9e0748b2248d598270","src/curve.rs":"053edd26e253c4ef73b1044f7fd0b1be720e596f93dea80f8aecd2f5345077da","src/data.rs":"33ce7d1d127579188ba3e3522c96a7a7a8f94c85c6d5cbd766274aea18914c53","src/display.rs":"88c80aacf628cad2cfa144a113e2be75bdbe0e082779586c6890573fc93c5fa1","src/errorbar.rs":"d3358f5e23021d337dc1ca6d7ce45bbbc718e567cb96ae882cecd94cf7e15be5","src/filledcurve.rs":"9d686e7c79298a55dab47a9d0c7f5392e65d8a45ce85f36276f444d16662fec7","src/grid.rs":"3853fbcae78baf4f97e950a81d850ffb85f90f0b568ae45b245c5e975bdc2cda","src/key.rs":"0f3ca7eaf8d74c265a272d2b3246a372a5d7d346975d9c4e6cd9ac60f9a27076","src/lib.rs":"9df5062852bbd26df815359d2212f5f1794cd14b1174fd7eaf9087d05f0641d2","src/map.rs":"75906e96ac604d73fdd8cc386ae905ff7865e0b9a98aa5a78f1092aee08bf831","src/prelude.rs":"f22fae0edefe780476f86955d76d819cfabda2dc2bba433e30586748053b0ac8","src/proxy.rs":"60a2864ec3db846bd7b3e9a8b35bab1d5cceeadabce8a7c0fd3c80b1c09b069a","src/traits.rs":"c90c16c95b143424ca29f1fcd07f9c2ff2ed8224a65c6d445f84f0b61680a8bc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f0ea22113844492b2642ae6ea7dc44fd406baebd99652837a626420156a1d774","Android.bp":"152e22a038bd7b81463dab089287c29c5ebfec05fe8bdb32856a35a26d3dcf20","CONTRIBUTING.md":"85b3182b9bcae335f69cee16f1981cefd65c3afb14591f7fcca1ddf46c8b65c3","Cargo.toml":"34319949f3c060bb9a7e864c54e70cc0aa31d2620cf798c957facee515e26183","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7a5f98bc4040e4ef8f0ac21abf03a038017c1def07d99e8e70967db05ad2054e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7eac3b0f9ebbd082e8af3f010c080948a5d3721c18d19a8e78be01f0333c8bc6","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/axis.rs":"f498e130c5ece6f9d4346cb35a74c47cc8ea0b3e528e41bcc1e3aae0bf47021c","src/candlestick.rs":"9da052436750809459352b139b26be8312ce6eb5f336cc9e0748b2248d598270","src/curve.rs":"053edd26e253c4ef73b1044f7fd0b1be720e596f93dea80f8aecd2f5345077da","src/data.rs":"33ce7d1d127579188ba3e3522c96a7a7a8f94c85c6d5cbd766274aea18914c53","src/display.rs":"88c80aacf628cad2cfa144a113e2be75bdbe0e082779586c6890573fc93c5fa1","src/errorbar.rs":"d3358f5e23021d337dc1ca6d7ce45bbbc718e567cb96ae882cecd94cf7e15be5","src/filledcurve.rs":"9d686e7c79298a55dab47a9d0c7f5392e65d8a45ce85f36276f444d16662fec7","src/grid.rs":"3853fbcae78baf4f97e950a81d850ffb85f90f0b568ae45b245c5e975bdc2cda","src/key.rs":"0f3ca7eaf8d74c265a272d2b3246a372a5d7d346975d9c4e6cd9ac60f9a27076","src/lib.rs":"9df5062852bbd26df815359d2212f5f1794cd14b1174fd7eaf9087d05f0641d2","src/map.rs":"75906e96ac604d73fdd8cc386ae905ff7865e0b9a98aa5a78f1092aee08bf831","src/prelude.rs":"f22fae0edefe780476f86955d76d819cfabda2dc2bba433e30586748053b0ac8","src/proxy.rs":"60a2864ec3db846bd7b3e9a8b35bab1d5cceeadabce8a7c0fd3c80b1c09b069a","src/traits.rs":"c90c16c95b143424ca29f1fcd07f9c2ff2ed8224a65c6d445f84f0b61680a8bc"}}
\ No newline at end of file
diff --git a/crates/criterion-plot/Android.bp b/crates/criterion-plot/Android.bp
index e8c175d..fc29f09 100644
--- a/crates/criterion-plot/Android.bp
+++ b/crates/criterion-plot/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/criterion-plot/cargo_embargo.json b/crates/criterion-plot/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/criterion-plot/cargo_embargo.json
+++ b/crates/criterion-plot/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/critical-section/.android-checksum.json b/crates/critical-section/.android-checksum.json
index d31e7ba..7d7b045 100644
--- a/crates/critical-section/.android-checksum.json
+++ b/crates/critical-section/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d71b85c3626e7d4583e388459e391ebc7544ba828a12d781adc2e4fc0d1fa8fe","Android.bp":"c6b9f0ab03975162788a158ed3cbdbf387be098b9012caaf84467787c075b225","CHANGELOG.md":"c812478d5b8521257acb0fdb21ac5eec3f70690ef7489486ad8728b460f77c55","CODE_OF_CONDUCT.md":"c35405ced179de9ad9a6b80ba8969771248b3c162ec31295f18a66248b267779","Cargo.toml":"00c9695dcca6c21099a869f8d14330c2c17e3ff93e7c34f645713b61ba9e51dd","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"24ff5da4f0e2656b3d2b1851e6a4e4c6d89acc57cb371dea039f3e598dd59675","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5b9e5ab8fac502a70aec952dee96796b0c3fc388d0d42c842c5e293babdbd9de","TEST_MAPPING":"fd2afbf78985f9b317bfe31712d5ec8743abb2daddacf6488eeea1bf1e6fc6c8","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","docs/msrv.md":"0234968af279b49b7999d07243b5d4f8cfe2a09d120d880af6333c90af7bde39","src/lib.rs":"d82bed32d3cc5ea7bd6dc59f722248f0d20a585a61e50d1de54eb9c9feb40fce","src/mutex.rs":"fe9e770e4e678243e2a057c8ca100c154713a317ad149adaad5d0130927b3a24","src/std.rs":"ac2e8ba8b7d30bd8bf55a726094c1684bf924ccbba006dc4177eadc373b8c854"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d71b85c3626e7d4583e388459e391ebc7544ba828a12d781adc2e4fc0d1fa8fe","Android.bp":"5cc28318b644deba84940d36108052e7318cdc183614ccc204cd56b3a35ed77a","CHANGELOG.md":"c812478d5b8521257acb0fdb21ac5eec3f70690ef7489486ad8728b460f77c55","CODE_OF_CONDUCT.md":"c35405ced179de9ad9a6b80ba8969771248b3c162ec31295f18a66248b267779","Cargo.toml":"00c9695dcca6c21099a869f8d14330c2c17e3ff93e7c34f645713b61ba9e51dd","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"24ff5da4f0e2656b3d2b1851e6a4e4c6d89acc57cb371dea039f3e598dd59675","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5b9e5ab8fac502a70aec952dee96796b0c3fc388d0d42c842c5e293babdbd9de","TEST_MAPPING":"fd2afbf78985f9b317bfe31712d5ec8743abb2daddacf6488eeea1bf1e6fc6c8","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","docs/msrv.md":"0234968af279b49b7999d07243b5d4f8cfe2a09d120d880af6333c90af7bde39","src/lib.rs":"d82bed32d3cc5ea7bd6dc59f722248f0d20a585a61e50d1de54eb9c9feb40fce","src/mutex.rs":"fe9e770e4e678243e2a057c8ca100c154713a317ad149adaad5d0130927b3a24","src/std.rs":"ac2e8ba8b7d30bd8bf55a726094c1684bf924ccbba006dc4177eadc373b8c854"}}
\ No newline at end of file
diff --git a/crates/critical-section/Android.bp b/crates/critical-section/Android.bp
index ea69e9e..04d47b7 100644
--- a/crates/critical-section/Android.bp
+++ b/crates/critical-section/Android.bp
@@ -42,4 +42,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/critical-section/cargo_embargo.json b/crates/critical-section/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/critical-section/cargo_embargo.json
+++ b/crates/critical-section/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crossbeam-channel/.android-checksum.json b/crates/crossbeam-channel/.android-checksum.json
index 13b7b5d..280dd06 100644
--- a/crates/crossbeam-channel/.android-checksum.json
+++ b/crates/crossbeam-channel/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e20e00ff147e4c895eb0fa9f3970be50447b53081b09f555282fe2d5ff309e2e","Android.bp":"0f1a385f95a26496766d9975e0a8fcc60e8d39ac7b6a2fbf4063f506d1037fe3","CHANGELOG.md":"6e77c8a5f22074904178d0a64a74f6e87222dfa9f56b807beb0bb361e6951dcf","Cargo.lock":"0c59409e3be1bf6539cdab03f894b7a240352cc4967e0759c401add377445e09","Cargo.toml":"84590608c11a7909dff396dde9a0871ebdfc57f67868719588313846bf270fa7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-THIRD-PARTY":"6514fe4bb820d46aa9d0c9665bcb590fe63ee56f7f4d1456cb962759f3671c6c","METADATA":"3309fc3da69124cff14db032b25ac599c1fbffc032d172af1fedf75ffb36b79f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"979417de4cebc4c455c03dbf9f827d34f20c2e45f0b1b0d34e940126ae192f9e","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","benches/crossbeam.rs":"be0d9ada9a36023c7394d8949e3f57c9c1fd298f7c4402dd0bcdbb402780267a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/fibonacci.rs":"d3bec7355e6bb67d406d66a6adbf1e82b3f62938a28b8afb51043305418935e2","examples/matching.rs":"84daebdf99c6674a6926346d3df30ce1cd5e9b9e47786bf71a870e0f21539431","examples/stopwatch.rs":"456cae25471bd57f4ee9df52738d380d75d200dd3cbda1bb75b965fb51ea1c0e","src/channel.rs":"7f1f0dfa3988f8d905459d302dcf957ff3b29046b9307bc62f1f80c1503248c1","src/context.rs":"1574f1e1de73150b3ae9db066cdd4a15a9d774108e3621eef6e01734bee756ce","src/counter.rs":"b134b8d423ad877ae9270884fd1401619d9da3e7fec33317367e70b83199438f","src/err.rs":"af5f575b751105369be3d62cb44de90d32f814483ba9aeef4c69394328c4d28e","src/flavors/array.rs":"728a54c01fb09d684c8734c299f7232279007279a389fb98ca4c26c677e2d769","src/flavors/at.rs":"9815ee409ab2069c5989089ef9b3857019bb7719fd8c4bff752637dcce0933a0","src/flavors/list.rs":"71f27ab8c048611e9ab46ba7fb53d79b9f7b437b7812bb1df5bc8acf261215c7","src/flavors/mod.rs":"73e845106cb07033e54bc7a700122de2728e8b1d2943f426e323fa4a39473dfe","src/flavors/never.rs":"e1add67d5e644c7a91188316cb04f87eed59132731a2f60ae98ac339688ab526","src/flavors/tick.rs":"c664d46c480d64224e169d89eea9015b45d0ef9bda6dbe995b15b98775d4cdc5","src/flavors/zero.rs":"f3f6887ded550ff19ef3211f5b6fc24054984b5ee9f48a02a93e011b5716eda4","src/lib.rs":"0e1a313ec6ecc9f4a62f787f9ed54bc36303330bc6c49a78182cba632defead8","src/select.rs":"b0277ef25000a7b641f5e7d0fad5f30769ca732176b6837b8b9068786aa86d96","src/select_macro.rs":"a2f3486573df5479c8599528f9aad482c6b3b248cb13e1a85b704fbadf878ddb","src/utils.rs":"af6478ee9e98f09fa7510c3d8abd46f6386c3d9ef2af9d81d89ff2f1433c2797","src/waker.rs":"5c7c41f92da081c0304fa40f1cc46621bf960b3e422db379949e1dcebd65fdd3","tests/after.rs":"4f3ef451c1182f0ee06e54e1acdae84eba8210d4d9fb9d806860cd50b3de5f06","tests/array.rs":"a7dfe71e2844662a60eb7450f8dd055bca05bbba204169aa0506eee7610f2cce","tests/golang.rs":"01bad2e51360d57a78b15d281b5b6d5607c6bef8f356efea1d6bdcf656c47cae","tests/iter.rs":"a8afc4ba9ae6593def8a590321ee3de3585e97299f56f84a5d1e92f95bb480df","tests/list.rs":"c599f6c82d40dfcac5cfc1b767768affed3c3e7139154180279851606aaac766","tests/mpsc.rs":"71fd11d83f5eb56ca494d1ac19004ae351a07f0b1543a8f6b30ce08ab16aeae6","tests/never.rs":"9bfcd05648a722310d33d3aab6442697f20a4cabf0a49e85e240196e9e7b2b42","tests/ready.rs":"0b6fdc95307434b04c7513fa3a62b5a5c0e3c4ab3890b19635f7b19da9cea702","tests/same_channel.rs":"9dbde7203a4f50cfc8414a4cc2323411b7ef5ce22efcf6fb84fe3d9b9763ec0c","tests/select.rs":"6daa0e5d5ebac76e7f3d18cce7fc8f22b855c2adcc63ca1872c7e4922b53d172","tests/select_macro.rs":"e6b5a9228a5b2f04fd55bef2961de3510961a1da8cbcecb9cf7f566f79422ef4","tests/thread_locals.rs":"fdf7ecbc8a05a861dde702524521877196a00c6d65bcaa814b129f44f297a264","tests/tick.rs":"5ea9e59fd697863db698c737f399bf9d137a9e2e5b5664a647bc529b78b50015","tests/zero.rs":"c5967415e8d0a635c9d74ef8af9f139c2af9bc0bcf46042a85b6be0ba18d339a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e20e00ff147e4c895eb0fa9f3970be50447b53081b09f555282fe2d5ff309e2e","Android.bp":"e8b93847af76c7ff4225ed536f2b4170a959eabd07715ab95ef2b206221fa36c","CHANGELOG.md":"6e77c8a5f22074904178d0a64a74f6e87222dfa9f56b807beb0bb361e6951dcf","Cargo.lock":"0c59409e3be1bf6539cdab03f894b7a240352cc4967e0759c401add377445e09","Cargo.toml":"84590608c11a7909dff396dde9a0871ebdfc57f67868719588313846bf270fa7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-THIRD-PARTY":"6514fe4bb820d46aa9d0c9665bcb590fe63ee56f7f4d1456cb962759f3671c6c","METADATA":"3309fc3da69124cff14db032b25ac599c1fbffc032d172af1fedf75ffb36b79f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"979417de4cebc4c455c03dbf9f827d34f20c2e45f0b1b0d34e940126ae192f9e","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","benches/crossbeam.rs":"be0d9ada9a36023c7394d8949e3f57c9c1fd298f7c4402dd0bcdbb402780267a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/fibonacci.rs":"d3bec7355e6bb67d406d66a6adbf1e82b3f62938a28b8afb51043305418935e2","examples/matching.rs":"84daebdf99c6674a6926346d3df30ce1cd5e9b9e47786bf71a870e0f21539431","examples/stopwatch.rs":"456cae25471bd57f4ee9df52738d380d75d200dd3cbda1bb75b965fb51ea1c0e","src/channel.rs":"7f1f0dfa3988f8d905459d302dcf957ff3b29046b9307bc62f1f80c1503248c1","src/context.rs":"1574f1e1de73150b3ae9db066cdd4a15a9d774108e3621eef6e01734bee756ce","src/counter.rs":"b134b8d423ad877ae9270884fd1401619d9da3e7fec33317367e70b83199438f","src/err.rs":"af5f575b751105369be3d62cb44de90d32f814483ba9aeef4c69394328c4d28e","src/flavors/array.rs":"728a54c01fb09d684c8734c299f7232279007279a389fb98ca4c26c677e2d769","src/flavors/at.rs":"9815ee409ab2069c5989089ef9b3857019bb7719fd8c4bff752637dcce0933a0","src/flavors/list.rs":"71f27ab8c048611e9ab46ba7fb53d79b9f7b437b7812bb1df5bc8acf261215c7","src/flavors/mod.rs":"73e845106cb07033e54bc7a700122de2728e8b1d2943f426e323fa4a39473dfe","src/flavors/never.rs":"e1add67d5e644c7a91188316cb04f87eed59132731a2f60ae98ac339688ab526","src/flavors/tick.rs":"c664d46c480d64224e169d89eea9015b45d0ef9bda6dbe995b15b98775d4cdc5","src/flavors/zero.rs":"f3f6887ded550ff19ef3211f5b6fc24054984b5ee9f48a02a93e011b5716eda4","src/lib.rs":"0e1a313ec6ecc9f4a62f787f9ed54bc36303330bc6c49a78182cba632defead8","src/select.rs":"b0277ef25000a7b641f5e7d0fad5f30769ca732176b6837b8b9068786aa86d96","src/select_macro.rs":"a2f3486573df5479c8599528f9aad482c6b3b248cb13e1a85b704fbadf878ddb","src/utils.rs":"af6478ee9e98f09fa7510c3d8abd46f6386c3d9ef2af9d81d89ff2f1433c2797","src/waker.rs":"5c7c41f92da081c0304fa40f1cc46621bf960b3e422db379949e1dcebd65fdd3","tests/after.rs":"4f3ef451c1182f0ee06e54e1acdae84eba8210d4d9fb9d806860cd50b3de5f06","tests/array.rs":"a7dfe71e2844662a60eb7450f8dd055bca05bbba204169aa0506eee7610f2cce","tests/golang.rs":"01bad2e51360d57a78b15d281b5b6d5607c6bef8f356efea1d6bdcf656c47cae","tests/iter.rs":"a8afc4ba9ae6593def8a590321ee3de3585e97299f56f84a5d1e92f95bb480df","tests/list.rs":"c599f6c82d40dfcac5cfc1b767768affed3c3e7139154180279851606aaac766","tests/mpsc.rs":"71fd11d83f5eb56ca494d1ac19004ae351a07f0b1543a8f6b30ce08ab16aeae6","tests/never.rs":"9bfcd05648a722310d33d3aab6442697f20a4cabf0a49e85e240196e9e7b2b42","tests/ready.rs":"0b6fdc95307434b04c7513fa3a62b5a5c0e3c4ab3890b19635f7b19da9cea702","tests/same_channel.rs":"9dbde7203a4f50cfc8414a4cc2323411b7ef5ce22efcf6fb84fe3d9b9763ec0c","tests/select.rs":"6daa0e5d5ebac76e7f3d18cce7fc8f22b855c2adcc63ca1872c7e4922b53d172","tests/select_macro.rs":"e6b5a9228a5b2f04fd55bef2961de3510961a1da8cbcecb9cf7f566f79422ef4","tests/thread_locals.rs":"fdf7ecbc8a05a861dde702524521877196a00c6d65bcaa814b129f44f297a264","tests/tick.rs":"5ea9e59fd697863db698c737f399bf9d137a9e2e5b5664a647bc529b78b50015","tests/zero.rs":"c5967415e8d0a635c9d74ef8af9f139c2af9bc0bcf46042a85b6be0ba18d339a"}}
\ No newline at end of file
diff --git a/crates/crossbeam-channel/Android.bp b/crates/crossbeam-channel/Android.bp
index ea57442..5ebc68f 100644
--- a/crates/crossbeam-channel/Android.bp
+++ b/crates/crossbeam-channel/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crossbeam-channel/cargo_embargo.json b/crates/crossbeam-channel/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/crossbeam-channel/cargo_embargo.json
+++ b/crates/crossbeam-channel/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crossbeam-deque/.android-checksum.json b/crates/crossbeam-deque/.android-checksum.json
index 75fc0da..c19592a 100644
--- a/crates/crossbeam-deque/.android-checksum.json
+++ b/crates/crossbeam-deque/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"31902df00e7f72dac70168fd1be5dc40665251e41e1defd8229c269c55194f98","Android.bp":"1e15a9508550aa0bd420f3e832c3ab8eacbd5dd276c9d82b00c202d232c2c11b","CHANGELOG.md":"a257b0a98e3c24dfc7a4ba928026321018c0aa53f70be7ab274ccd401e8e7e90","Cargo.toml":"52bc995d3c7403af80db33465a721af144a3ea7bc816f49fa3bdcf301e9ef2da","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"df742191e1062e8632b7973f61211cb236ee6e484b74a3b44dbc7fd02c1f5d6f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4bae2ca11d6d819ac72e491737cbf7d5e84902f3176e0a9febeb9c042132b813","TEST_MAPPING":"0b001ab9a9238a17b3d1f4e9529547bed46a90a1f34acfd3104c37ba63722792","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","src/deque.rs":"934a04b17f76d96c3722cc1847c14812cbe3b5cde41b1453bc29b5f1e68e04ab","src/lib.rs":"f4eaa578661cabfa6b41e933849765e2bfb430abb46708f093e035296d849788","tests/fifo.rs":"a3756acfcd71dc45062b5b7eb17b35a1246c3d2799e9fa2a0e22574eaf81a454","tests/injector.rs":"8167b82dc4c39ea1617b4eff36322165dad8724be504e0ff2aadfbb60745392e","tests/lifo.rs":"f26b50d7d4b2d6eb3869571751ffae5382517573b1a14dce2a86ae20c3b5fb56","tests/steal.rs":"af81e50839024663b715313e2c323ed74af189305c1a3664f573b842d22940d2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"31902df00e7f72dac70168fd1be5dc40665251e41e1defd8229c269c55194f98","Android.bp":"a2ac01c7a8f35b48e6f29c8dc17b3a044a7b4c93e1f99d852a94ce73e3a5a82a","CHANGELOG.md":"a257b0a98e3c24dfc7a4ba928026321018c0aa53f70be7ab274ccd401e8e7e90","Cargo.toml":"52bc995d3c7403af80db33465a721af144a3ea7bc816f49fa3bdcf301e9ef2da","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"df742191e1062e8632b7973f61211cb236ee6e484b74a3b44dbc7fd02c1f5d6f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4bae2ca11d6d819ac72e491737cbf7d5e84902f3176e0a9febeb9c042132b813","TEST_MAPPING":"0b001ab9a9238a17b3d1f4e9529547bed46a90a1f34acfd3104c37ba63722792","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/deque.rs":"934a04b17f76d96c3722cc1847c14812cbe3b5cde41b1453bc29b5f1e68e04ab","src/lib.rs":"f4eaa578661cabfa6b41e933849765e2bfb430abb46708f093e035296d849788","tests/fifo.rs":"a3756acfcd71dc45062b5b7eb17b35a1246c3d2799e9fa2a0e22574eaf81a454","tests/injector.rs":"8167b82dc4c39ea1617b4eff36322165dad8724be504e0ff2aadfbb60745392e","tests/lifo.rs":"f26b50d7d4b2d6eb3869571751ffae5382517573b1a14dce2a86ae20c3b5fb56","tests/steal.rs":"af81e50839024663b715313e2c323ed74af189305c1a3664f573b842d22940d2"}}
\ No newline at end of file
diff --git a/crates/crossbeam-deque/Android.bp b/crates/crossbeam-deque/Android.bp
index 56158f3..8e403f8 100644
--- a/crates/crossbeam-deque/Android.bp
+++ b/crates/crossbeam-deque/Android.bp
@@ -135,4 +135,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crossbeam-deque/cargo_embargo.json b/crates/crossbeam-deque/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/crossbeam-deque/cargo_embargo.json
+++ b/crates/crossbeam-deque/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crossbeam-epoch/.android-checksum.json b/crates/crossbeam-epoch/.android-checksum.json
index f3199c6..bd6efed 100644
--- a/crates/crossbeam-epoch/.android-checksum.json
+++ b/crates/crossbeam-epoch/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"bc6eeb009c35415e3e3585794dac90fd0d9f2d1092bf4077882a1853c3bd1d94","Android.bp":"4b4a281e8b5ced261c7904ff670affcc257f8ecb7e825a1c62e056afce940e5e","CHANGELOG.md":"570ec70bb354d186e2a71cb1eb718cbcae3a351a50acec91a12315b38cc3f543","Cargo.lock":"dfaebd555e2aae5d59141fdced3f221d1e37d43a9f6dc5edf3f067baace40bed","Cargo.toml":"8947e88b4ffb4183cd77a5903b5fdbab19d388cedb57ab6cda4ef3af5c39d985","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"02fad5ca1899dd9dcc9a593c95657fc101ed635674f316740dd5f1efdf957a32","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c4821b1b57ec6851c3ea425240c37c62f34d55348b738f9261217b173ac9a3fc","TEST_MAPPING":"097e07ee4c2062d07b8b828f2c596f57416a7a00ed7851179a825ffe127ed34d","benches/defer.rs":"dc3bef95e17cfe242de3284c92b4c84716b72789bd3de0b56cb36360f8dffa51","benches/flush.rs":"4642837f28048d84cd06b60380bb0c65c3083e38cd85ac2fba8848560666df6b","benches/pin.rs":"40e68719ff4a4f3921d9921bc36fce13a05001ca3900fd16e0d04c5de5b5d0e6","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","examples/sanitize.rs":"941eb9c3e018ca140cf1a9bc0d6f7555e6cff058fc4aefa2f1bd76d9f8dc1acd","src/atomic.rs":"607990f62c670ce39a16757661494bdabdaf2c1fbf2ebfd6c71d13c8f753c63e","src/collector.rs":"30426ff9f691a6125fb9a20c1bb52653e1e25b9be195c73be5c31986e95df276","src/default.rs":"9f3d66189a19182cdc50da02ed9de784440ba6531bc985e8e7768680b002eff9","src/deferred.rs":"83c9c6c3593fb9969f6bfc0e431569a740b6e56485bc7d6735ee66aca42e992b","src/epoch.rs":"1112793fcfa3201c4b5373fb7e5707cda6eef093f7cec332e524a3909afd0581","src/guard.rs":"890888f4e34360e1bac4d358bdd1904fec627337cf50485574e473d889f59bf5","src/internal.rs":"efdcf171e33cdc3fd00fe3eb0be6671aff7bc90144f17e5254da4db1bfb3db37","src/lib.rs":"5b9aa847b6ad803e094b0c56e1d4806f1bf3d822469f54c6a50aaf9bff5fa960","src/sync/list.rs":"f4dfa96543a9aa5645d421ed0b0e6d5b4d6ef40da962e30f89be5f15c25b6be7","src/sync/mod.rs":"1c01a45a684130f62fd28cf1ca3ff1928825ed691be72b8949b627f51404ccf3","src/sync/once_lock.rs":"08a4108bd35c6b2bd5bb114cd21057955594651d8cfc711037751af0fd86c130","src/sync/queue.rs":"462d85c68ad1d5db216fd64de2528777938526c291d38daf730fa779754ff16b","tests/loom.rs":"cdd9c2937e95f7b64ef8ac4d6300fbc321ab87cb20a6ab287595d672992bce70"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bc6eeb009c35415e3e3585794dac90fd0d9f2d1092bf4077882a1853c3bd1d94","Android.bp":"10e2ee20ece43796dbe5e59a692635208c205c7f30b882655fe8ec6cf227d3d1","CHANGELOG.md":"570ec70bb354d186e2a71cb1eb718cbcae3a351a50acec91a12315b38cc3f543","Cargo.lock":"dfaebd555e2aae5d59141fdced3f221d1e37d43a9f6dc5edf3f067baace40bed","Cargo.toml":"8947e88b4ffb4183cd77a5903b5fdbab19d388cedb57ab6cda4ef3af5c39d985","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"02fad5ca1899dd9dcc9a593c95657fc101ed635674f316740dd5f1efdf957a32","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c4821b1b57ec6851c3ea425240c37c62f34d55348b738f9261217b173ac9a3fc","TEST_MAPPING":"097e07ee4c2062d07b8b828f2c596f57416a7a00ed7851179a825ffe127ed34d","benches/defer.rs":"dc3bef95e17cfe242de3284c92b4c84716b72789bd3de0b56cb36360f8dffa51","benches/flush.rs":"4642837f28048d84cd06b60380bb0c65c3083e38cd85ac2fba8848560666df6b","benches/pin.rs":"40e68719ff4a4f3921d9921bc36fce13a05001ca3900fd16e0d04c5de5b5d0e6","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","examples/sanitize.rs":"941eb9c3e018ca140cf1a9bc0d6f7555e6cff058fc4aefa2f1bd76d9f8dc1acd","src/atomic.rs":"607990f62c670ce39a16757661494bdabdaf2c1fbf2ebfd6c71d13c8f753c63e","src/collector.rs":"30426ff9f691a6125fb9a20c1bb52653e1e25b9be195c73be5c31986e95df276","src/default.rs":"9f3d66189a19182cdc50da02ed9de784440ba6531bc985e8e7768680b002eff9","src/deferred.rs":"83c9c6c3593fb9969f6bfc0e431569a740b6e56485bc7d6735ee66aca42e992b","src/epoch.rs":"1112793fcfa3201c4b5373fb7e5707cda6eef093f7cec332e524a3909afd0581","src/guard.rs":"890888f4e34360e1bac4d358bdd1904fec627337cf50485574e473d889f59bf5","src/internal.rs":"efdcf171e33cdc3fd00fe3eb0be6671aff7bc90144f17e5254da4db1bfb3db37","src/lib.rs":"5b9aa847b6ad803e094b0c56e1d4806f1bf3d822469f54c6a50aaf9bff5fa960","src/sync/list.rs":"f4dfa96543a9aa5645d421ed0b0e6d5b4d6ef40da962e30f89be5f15c25b6be7","src/sync/mod.rs":"1c01a45a684130f62fd28cf1ca3ff1928825ed691be72b8949b627f51404ccf3","src/sync/once_lock.rs":"08a4108bd35c6b2bd5bb114cd21057955594651d8cfc711037751af0fd86c130","src/sync/queue.rs":"462d85c68ad1d5db216fd64de2528777938526c291d38daf730fa779754ff16b","tests/loom.rs":"cdd9c2937e95f7b64ef8ac4d6300fbc321ab87cb20a6ab287595d672992bce70"}}
\ No newline at end of file
diff --git a/crates/crossbeam-epoch/Android.bp b/crates/crossbeam-epoch/Android.bp
index cbee6e6..54a5043 100644
--- a/crates/crossbeam-epoch/Android.bp
+++ b/crates/crossbeam-epoch/Android.bp
@@ -57,4 +57,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crossbeam-epoch/cargo_embargo.json b/crates/crossbeam-epoch/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/crossbeam-epoch/cargo_embargo.json
+++ b/crates/crossbeam-epoch/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crossbeam-queue/.android-checksum.json b/crates/crossbeam-queue/.android-checksum.json
index 19c1fdc..3d207cc 100644
--- a/crates/crossbeam-queue/.android-checksum.json
+++ b/crates/crossbeam-queue/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c2af5a379723767ae3f61759c07bb1610f80286a14e38fa09b19efc36b3ef257","Android.bp":"cb0a35aee6ffafe1b0ea05524fe7da9c476ed3bfb1a53f7e28ab5d139e7141c2","CHANGELOG.md":"7bf3725b69856409e6722f91bac12285ba6ba761566b5627324859d78796eaa5","Cargo.toml":"87bb63fad2ad0013088121b9ffd274dbdd6e7970d921c0693c8f78ef8e248f86","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"26eb3f181693a812225f153d599d1c68c6116fccd2d1d9a39776538e0aa167ca","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ed6153d3b087a6827edfb289cff02bd0b19fbdcbde0133cc0996327be0cb09e","TEST_MAPPING":"6cb695115d16b2823afd2781f52efe8dd233f9b0d28bf942d2d6396c5a6e3b5d","cargo_embargo.json":"40f98d98a6f4614cc2e26c1f364f1c3294773969ba80561c7030c2a156428ffe","src/array_queue.rs":"ae8c317b357ce50f5bfcdd16ca64f89123d6b0dcdf67a3cc4c80cfd43216692a","src/lib.rs":"a57ba412dcc39d5b5766ac2ec607b2520c83636890a1ef836787544e102727ee","src/seg_queue.rs":"14b635bcf175f36402e29b8e520145a3f603520ac04bbf57092d5f5e2d4ee59f","tests/array_queue.rs":"d7303d37dda188bef63d6d7f0e9b69fd946b305ffba81a7927649206258ad1a3","tests/seg_queue.rs":"3394f1b763826063b09c29c533fe1fa23fdf01e054645ce8daf3638ecde33748"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c2af5a379723767ae3f61759c07bb1610f80286a14e38fa09b19efc36b3ef257","Android.bp":"49a8a101b7f36208e8f3bf9def088a941e50893a1067e5c3c9bbc64d918050c6","CHANGELOG.md":"7bf3725b69856409e6722f91bac12285ba6ba761566b5627324859d78796eaa5","Cargo.toml":"87bb63fad2ad0013088121b9ffd274dbdd6e7970d921c0693c8f78ef8e248f86","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"26eb3f181693a812225f153d599d1c68c6116fccd2d1d9a39776538e0aa167ca","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ed6153d3b087a6827edfb289cff02bd0b19fbdcbde0133cc0996327be0cb09e","TEST_MAPPING":"6cb695115d16b2823afd2781f52efe8dd233f9b0d28bf942d2d6396c5a6e3b5d","cargo_embargo.json":"0603a42e1ec6bde9a182ef9486ae79d98a636ed8439f64236abfb3a159ad6ef0","src/array_queue.rs":"ae8c317b357ce50f5bfcdd16ca64f89123d6b0dcdf67a3cc4c80cfd43216692a","src/lib.rs":"a57ba412dcc39d5b5766ac2ec607b2520c83636890a1ef836787544e102727ee","src/seg_queue.rs":"14b635bcf175f36402e29b8e520145a3f603520ac04bbf57092d5f5e2d4ee59f","tests/array_queue.rs":"d7303d37dda188bef63d6d7f0e9b69fd946b305ffba81a7927649206258ad1a3","tests/seg_queue.rs":"3394f1b763826063b09c29c533fe1fa23fdf01e054645ce8daf3638ecde33748"}}
\ No newline at end of file
diff --git a/crates/crossbeam-queue/Android.bp b/crates/crossbeam-queue/Android.bp
index 5738387..01fd0f4 100644
--- a/crates/crossbeam-queue/Android.bp
+++ b/crates/crossbeam-queue/Android.bp
@@ -83,4 +83,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crossbeam-queue/cargo_embargo.json b/crates/crossbeam-queue/cargo_embargo.json
index 7f14879..b37d619 100644
--- a/crates/crossbeam-queue/cargo_embargo.json
+++ b/crates/crossbeam-queue/cargo_embargo.json
@@ -3,5 +3,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/crossbeam-utils/.android-checksum.json b/crates/crossbeam-utils/.android-checksum.json
index 43de850..4f016c5 100644
--- a/crates/crossbeam-utils/.android-checksum.json
+++ b/crates/crossbeam-utils/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"99f0009f323669991de21bc0e3b4dd0d72d550a73256c9773c6373856e3b3563","Android.bp":"4391e5848210b359151ac6d2580490e9337f31ff8bfc1edeade4178b6f7fe093","CHANGELOG.md":"f0edcd8c0607f34e8ae536e348cdb39ee8708cfcc97a5abbd3ecc8a1788805c9","Cargo.toml":"bea41aba2e97535acf1a58efedd3bfa9caa8edaae459620732df014c87cfa91f","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"9b716a4f7244a4e4f363fc39ac60e380842c5c0d619688eb1e1d0a44f2dd80e0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1dd7c0be216daba7aa829bafc821cb41a449e250c0cdf50c73b0bbbf7905e998","TEST_MAPPING":"a80d38c2de632af2dbfbd2c2157833c104683caa49df776c4df68e0c08a6738a","benches/atomic_cell.rs":"84d149c89705cb2b154edc3a9be6aaad5ef23b14c893f6858d8ef016a3bbc6f2","build-common.rs":"e13e364f6b81015f842e88b4638b3ade364c3b2e87d46fe39ea0129768acf1d9","build.rs":"c3c9a8ace58d37899da8f0d2ebf3fac09a0e8bcd5766f1de9ef3c64aa50964d3","cargo_embargo.json":"3b16a06c1ae79ed2753a650f5ba8bbea32e808419d9485b5b7f60a8c5e52de9c","no_atomic.rs":"860fb5efe7fa54e4b16b08096b177c848445d51bdbbe4e58d046d41c8fc5d7b1","patches/disable_panic_tests_on_android.patch":"d2df839cd227770234097d4b015e85ae842534dc275ba6883f9f396fbe7b3d25","src/atomic/atomic_cell.rs":"bd532d25debe9a7891f576f5c2b0dd29e25382ea76d50b61073e7367d5d2a9d4","src/atomic/consume.rs":"67f93b42f4bab80706930b0cc7567e49e23d532d12dd167b39ad5b509c63651e","src/atomic/mod.rs":"54033ed259d2fef98495b4dd976c6186fe7ebe20d520c238dc09df3ecf158b9b","src/atomic/seq_lock.rs":"753f0449be335065ec5f60cdb97894b3e2643994ce79949263221ef52a33c188","src/atomic/seq_lock_wide.rs":"eb9c21f1ec1502927e7336cd24a0855ac004ea14029ac955d1214e100adac177","src/backoff.rs":"18f5ab1a802824843d6fa5fbb65dae8729e3d2d148e8a0d10c292fe7b1b73441","src/cache_padded.rs":"a33523dd74d374924d29ce186269962393bd3c50657cd66d14d1e20147b01f8f","src/lib.rs":"3ea5d2df6e94a6c8c6506ba362cdc162d179dc901a467736c820f55a1dea929e","src/sync/mod.rs":"54792ddf6ebdef495d9adffda104aa208f09bdd7b0f6882721fddfdea2256048","src/sync/once_lock.rs":"08a4108bd35c6b2bd5bb114cd21057955594651d8cfc711037751af0fd86c130","src/sync/parker.rs":"8f5b4242a8a7d43cdd3db500015f93c86354ca988e721c34818a087ed3396584","src/sync/sharded_lock.rs":"a987298e37a26012844df517412444e0aa707607e2c975b773c71f5c4aa0e131","src/sync/wait_group.rs":"0f93213e413717dc65aeb77f8b084c597217185aec7f5a4822639e2467c2f917","src/thread.rs":"bca88f2ef4e55e8d19f8d80f8fa30e018ecb76bb29a94da83790d6bce776b25c","tests/atomic_cell.rs":"074064ceae709270da24ee40136e9fb8454d1d0bd60c30f500f945e60c148457","tests/cache_padded.rs":"e9f4bc385f30365fc41ff4278a3c238884155ca37eb7f7ccbec61ba604b93943","tests/parker.rs":"f737f376acae6c77757c4c366bb8c66d114f0ccd4dd1acef8357d60a003f26a0","tests/sharded_lock.rs":"7d798ed8cd41400fc0e25b3e26d848378bbdc187dcd3839ed19453e674fee959","tests/thread.rs":"61ea0589510cb70431a35815e24600187dbfe54541006c48b93dbbc1bc2bffab","tests/wait_group.rs":"0a8dfbb5accc16b1d594fee81637b0dd060f278f3c351b04eafc7135da587e3f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"99f0009f323669991de21bc0e3b4dd0d72d550a73256c9773c6373856e3b3563","Android.bp":"bf98a2499bca7f5ca77d48b2045a29c24826b4c369fa1ffdcbbd8ce6c7260f87","CHANGELOG.md":"f0edcd8c0607f34e8ae536e348cdb39ee8708cfcc97a5abbd3ecc8a1788805c9","Cargo.toml":"bea41aba2e97535acf1a58efedd3bfa9caa8edaae459620732df014c87cfa91f","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"9b716a4f7244a4e4f363fc39ac60e380842c5c0d619688eb1e1d0a44f2dd80e0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1dd7c0be216daba7aa829bafc821cb41a449e250c0cdf50c73b0bbbf7905e998","TEST_MAPPING":"a80d38c2de632af2dbfbd2c2157833c104683caa49df776c4df68e0c08a6738a","benches/atomic_cell.rs":"84d149c89705cb2b154edc3a9be6aaad5ef23b14c893f6858d8ef016a3bbc6f2","build-common.rs":"e13e364f6b81015f842e88b4638b3ade364c3b2e87d46fe39ea0129768acf1d9","build.rs":"c3c9a8ace58d37899da8f0d2ebf3fac09a0e8bcd5766f1de9ef3c64aa50964d3","cargo_embargo.json":"a61eacbb74bd3b47121c92fa7017e7717c7a71644c2ed2cf55d26a3ee4d4967d","no_atomic.rs":"860fb5efe7fa54e4b16b08096b177c848445d51bdbbe4e58d046d41c8fc5d7b1","patches/disable_panic_tests_on_android.patch":"d2df839cd227770234097d4b015e85ae842534dc275ba6883f9f396fbe7b3d25","src/atomic/atomic_cell.rs":"bd532d25debe9a7891f576f5c2b0dd29e25382ea76d50b61073e7367d5d2a9d4","src/atomic/consume.rs":"67f93b42f4bab80706930b0cc7567e49e23d532d12dd167b39ad5b509c63651e","src/atomic/mod.rs":"54033ed259d2fef98495b4dd976c6186fe7ebe20d520c238dc09df3ecf158b9b","src/atomic/seq_lock.rs":"753f0449be335065ec5f60cdb97894b3e2643994ce79949263221ef52a33c188","src/atomic/seq_lock_wide.rs":"eb9c21f1ec1502927e7336cd24a0855ac004ea14029ac955d1214e100adac177","src/backoff.rs":"18f5ab1a802824843d6fa5fbb65dae8729e3d2d148e8a0d10c292fe7b1b73441","src/cache_padded.rs":"a33523dd74d374924d29ce186269962393bd3c50657cd66d14d1e20147b01f8f","src/lib.rs":"3ea5d2df6e94a6c8c6506ba362cdc162d179dc901a467736c820f55a1dea929e","src/sync/mod.rs":"54792ddf6ebdef495d9adffda104aa208f09bdd7b0f6882721fddfdea2256048","src/sync/once_lock.rs":"08a4108bd35c6b2bd5bb114cd21057955594651d8cfc711037751af0fd86c130","src/sync/parker.rs":"8f5b4242a8a7d43cdd3db500015f93c86354ca988e721c34818a087ed3396584","src/sync/sharded_lock.rs":"a987298e37a26012844df517412444e0aa707607e2c975b773c71f5c4aa0e131","src/sync/wait_group.rs":"0f93213e413717dc65aeb77f8b084c597217185aec7f5a4822639e2467c2f917","src/thread.rs":"bca88f2ef4e55e8d19f8d80f8fa30e018ecb76bb29a94da83790d6bce776b25c","tests/atomic_cell.rs":"074064ceae709270da24ee40136e9fb8454d1d0bd60c30f500f945e60c148457","tests/cache_padded.rs":"e9f4bc385f30365fc41ff4278a3c238884155ca37eb7f7ccbec61ba604b93943","tests/parker.rs":"f737f376acae6c77757c4c366bb8c66d114f0ccd4dd1acef8357d60a003f26a0","tests/sharded_lock.rs":"7d798ed8cd41400fc0e25b3e26d848378bbdc187dcd3839ed19453e674fee959","tests/thread.rs":"61ea0589510cb70431a35815e24600187dbfe54541006c48b93dbbc1bc2bffab","tests/wait_group.rs":"0a8dfbb5accc16b1d594fee81637b0dd060f278f3c351b04eafc7135da587e3f"}}
\ No newline at end of file
diff --git a/crates/crossbeam-utils/Android.bp b/crates/crossbeam-utils/Android.bp
index e3c3230..31ace00 100644
--- a/crates/crossbeam-utils/Android.bp
+++ b/crates/crossbeam-utils/Android.bp
@@ -189,4 +189,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/crossbeam-utils/cargo_embargo.json b/crates/crossbeam-utils/cargo_embargo.json
index fcc96ec..8dacaf4 100644
--- a/crates/crossbeam-utils/cargo_embargo.json
+++ b/crates/crossbeam-utils/cargo_embargo.json
@@ -4,5 +4,6 @@
"com.android.virt"
],
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/csv-core/.android-checksum.json b/crates/csv-core/.android-checksum.json
index e6a8225..b0d1506 100644
--- a/crates/csv-core/.android-checksum.json
+++ b/crates/csv-core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9d59296955174857206952be5a9931000a6d428ae7f3b722031f7774a308f050","Android.bp":"7d395c0f12d774b2a48393ecca101c396e4b3a90c5d279ab505a97cc8dba8ba7","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"a7075b51a6801ae5dbc77d4b182346f66dcfa40b1529b557faa2f449ed1211b6","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"143b9386640086bf695b6d0628a010383b82a2146bf576c115d4f72a3976028b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5b1c3d8e82e688e1d20ef33eda5307d5ed65e67e181507a784241bafee325b05","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","benches/bench.rs":"b4d9413ae4c360d8ec0898395c47acbe5713ff28dbcc5f7cd72329bbf65fca6b","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"be68790ada9bff5a1f9f3e756bfae95c0050cf52c89ef3d8da44820dbc8c6227","src/reader.rs":"5ec3ab97f990236d8dd98e7e2eb5f1a4fe3bb8c6022faceb48346459d7602a00","src/writer.rs":"53d9d6104f7f821ca1238881d50739650c4be7ec45642d49095665368850b6af"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9d59296955174857206952be5a9931000a6d428ae7f3b722031f7774a308f050","Android.bp":"d08aac2c31152299a8fdaa3408c437c1b004db17f22627e098e76176d4f0a7fa","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"a7075b51a6801ae5dbc77d4b182346f66dcfa40b1529b557faa2f449ed1211b6","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"143b9386640086bf695b6d0628a010383b82a2146bf576c115d4f72a3976028b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5b1c3d8e82e688e1d20ef33eda5307d5ed65e67e181507a784241bafee325b05","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","benches/bench.rs":"b4d9413ae4c360d8ec0898395c47acbe5713ff28dbcc5f7cd72329bbf65fca6b","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"be68790ada9bff5a1f9f3e756bfae95c0050cf52c89ef3d8da44820dbc8c6227","src/reader.rs":"5ec3ab97f990236d8dd98e7e2eb5f1a4fe3bb8c6022faceb48346459d7602a00","src/writer.rs":"53d9d6104f7f821ca1238881d50739650c4be7ec45642d49095665368850b6af"}}
\ No newline at end of file
diff --git a/crates/csv-core/Android.bp b/crates/csv-core/Android.bp
index 84bfc19..456d295 100644
--- a/crates/csv-core/Android.bp
+++ b/crates/csv-core/Android.bp
@@ -29,4 +29,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/csv-core/cargo_embargo.json b/crates/csv-core/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/csv-core/cargo_embargo.json
+++ b/crates/csv-core/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/darling/.android-checksum.json b/crates/darling/.android-checksum.json
index f8749de..30425ab 100644
--- a/crates/darling/.android-checksum.json
+++ b/crates/darling/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f24b8982109b8f9d80b6e5491b75d5377c30d646f9188cc038a5edcfe0c904aa","Android.bp":"85cd8f8fd8c0201b157286c39e91863ed557bb7aafe5a0c1075e241b31042bce","CHANGELOG.md":"fa39b8d7d5f536021463c520375037aedbc5e3899b65f0b9e094445b7d1b8798","Cargo.lock":"e4f45242124d436cc4192374f14b9ead35711979ecfebf1422b8f1e978ebf27b","Cargo.toml":"b6519499418475e486363b32744444bd79b3a4f1f92d2d80e927c16a06460391","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"85e07efb137bc9b0483a5607c7e6386a79675b6b7126108b673b90b7c79fa8d0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a1731cdd64b2e1ade79c3bcc4423baf7a77e26a7e4cc7fda251ef3c88a047ae8","TEST_MAPPING":"484b635f4a758deb3c166a65c8bc3411bd498c5e3a7d647147c417c06cf2ffbf","cargo_embargo.json":"5d180773e090dde4e5d5f8593f213c36d1fb1573c0cd734638ea0ab4fc47ce4c","clippy.toml":"387e3b74dbf86ca2cda4974566fa633d0e0ad69e29842c19edffbf7460f5b6f9","compiletests.sh":"025365fead8bb7101d71210b13ab788664c03bb59ca6d6809f246f955b7f0c30","examples/automatic_bounds.rs":"6b6dbdf9fcf8df8c0bc53dace591a0cdfaa3861d744efa5136c1fb439f742fdc","examples/consume_fields.rs":"2e88c7487c9e27b2eb31fee8e8f03fea6d3fca3a83c19d8a45cedbbe49091136","examples/expr_with.rs":"00f81026dad6db87668d0801aa1b3f3a785f870694c3e7397790e2c31647db4b","examples/fallible_read.rs":"211786fb5d58db768e4418c827c4f40c58e098a6f7d848c75c736a17f9174464","examples/heterogeneous_enum_and_word.rs":"6568851edac410c8041c730808bc30a84051d267a6e71a7b24d3ee556bc219d1","examples/shorthand_or_long_field.rs":"4828708677ee188ba82160266f2c9091f65bcd4925a50101362ca59bfb982292","examples/supports_struct.rs":"041dc54ebc289180ee71171f7459f0de68d7cb10fbcbd4391a027193f7d0306b","src/lib.rs":"b021be25135199ff4537a4377accfc2c15b8f75385203da6a40a03a756664d10","src/macros_public.rs":"18bce4d20a6f23478cc1d2cd3f5abaf28a418428bec68e37437e2fb0c0c15b0b","tests/accrue_errors.rs":"0d5d34018abfd0c4dcb23abbb8e285194045c979b377a5c3e4f3749875654c4e","tests/attrs_with.rs":"f638e51bc97b5d60c2f9ccff5296347e37a631a4c1f52a6e3d212c1e768f4437","tests/compile-fail/attrs_with_bad_fn.rs":"58edbc37dc76987eb951352cb60818cadc814203186d2905abecc7c410620f9c","tests/compile-fail/attrs_with_bad_fn.stderr":"1de6809f38f647b1c3ed4b6585eb6eb708d1166647a396875edaaaf4841390c5","tests/compile-fail/default_expr_wrong_type.rs":"4a8635ce521057ee90b902daa15a84f9520748ad7295f06c905f9479b6cb596d","tests/compile-fail/default_expr_wrong_type.stderr":"9f7ec96a881b56630ff663574a3c6529705bf3681b97c31feae8fd2f1e46e1d9","tests/compile-fail/duplicate_word_across_variants.rs":"553784359f322c59f23526ab8282e038badb5041b2e6eb0230e177a7df4c5aca","tests/compile-fail/duplicate_word_across_variants.stderr":"b1f33ffe4c8c6c7d406111dddf21f8a1b54279701a56428f67adb31bbaac9bc6","tests/compile-fail/duplicate_word_on_variant.rs":"fa42b292ac1ae885903141a85fe08ef7d5d1e45004eb8cd2283f726a4b0baabe","tests/compile-fail/duplicate_word_on_variant.stderr":"c1e4f219bea156ffc3e8f44d2b1000175a14d65715224a921354b11d7d3d498e","tests/compile-fail/flatten_meta_conflicts.rs":"bb7f16f53fd33f78ed41708ecc7c8021f3164e5c68a65758432453de4896b970","tests/compile-fail/flatten_meta_conflicts.stderr":"765a48e136a4d64b8c7bc9c967916742b150e3644a9dee42fb662f6e06848d70","tests/compile-fail/flatten_multiple_fields.rs":"b26b49f54072a853ba80cf74a1cdf97ff4dd7ca4bdad1cc1de8e54ab69df730f","tests/compile-fail/flatten_multiple_fields.stderr":"b3a748a2dcf9dbffc737c3b3bcfaf74ed8d13acd3f8204327ec54544210c2f42","tests/compile-fail/not_impl_from_meta.rs":"a8d73ba5f8fd553051107293a6f512124d7637e345b08b9803c2afdbe9606f12","tests/compile-fail/not_impl_from_meta.stderr":"6c3495e542cf0b798dd88622b6e8864d5cea28250d382c485cb61801f0a6da9e","tests/compile-fail/skip_field_not_impl_default.rs":"0f30751df2d78892b4809198b9f77b6a2adcd74fb1bbff83f6547248bdb0e623","tests/compile-fail/skip_field_not_impl_default.stderr":"47ae8daab37672cadaaab147548c96245a09e0f11d9f1888b40e77e1525a3237","tests/compile-fail/word_on_wrong_variant_type.rs":"172b30927c2745fda4b07a5d16f12d6f24f01fe5d92c9559772104638165f9e7","tests/compile-fail/word_on_wrong_variant_type.stderr":"6f920b0e35f82d48e56a53419357492c8499484fa17c2a983d61150985464503","tests/compiletests.rs":"124d5fef295671dfecf33f6c7b97dcbdf159c87a667a4978a8f0e87fe16d7d36","tests/computed_bound.rs":"aaf0efd6f60ceb863915ece43c680c74645623a5816f8cdca3d0cbe86524d70e","tests/custom_bound.rs":"46f02fa9df4ae363e6762bb2de82e0c08bc1c27e41a16afc5664d98264d847bc","tests/defaults.rs":"21bee6785ac3ee81b361cd010991e87dcf04fcd31d0374046e1e548ab4106a92","tests/enums_default.rs":"58439f3ff13906070d7d323c8d9e7c546e40946d9b5f52b6710b06882e2ce228","tests/enums_newtype.rs":"726264256ff9fb87cd616f1285f02672dee956515ec4f73f25ae99b2d1888ce2","tests/enums_struct.rs":"fec3912d148deb316b0f9c6a86822816718966ccb368378f16c7b46de711aff2","tests/enums_unit.rs":"81ccbf64262908de2b663c0f669b519a2345a9c1e2e23e1c99364d5db87f9766","tests/error.rs":"aba7aaf918314975738cc490ffecd614ebc0a27608690df6be6964ca313b3593","tests/flatten.rs":"b6e430717c41a273683e7e35163b302a354eeb6ec2f0ad50039f4eccf3e909c6","tests/flatten_error_accumulation.rs":"7d5ae7fca555cab4d78d10390892e4be84dcbca822bb5c07772fe539a800ef81","tests/flatten_from_field.rs":"c7b131d4b76860a194d04bc5683dd39a0c02ad543d5761dfe54bb339b76b1f12","tests/forward_attrs_to_from_attributes.rs":"e638a2c5b2d3f379cde237ab905dfcb5b8e5405b6a3271b4f0e37aefcb610f44","tests/from_generics.rs":"bc4b2dae2e4726f09e021939ba0f986edc7fe0c927b4a2cfa52bded39f62f09b","tests/from_meta.rs":"6ccc1924870a291b8e3c67cf4c3778d45549582873ae75c7930e509e0f718150","tests/from_type_param.rs":"f10f3fc47c549ea06f54d58bc6fc60f217e1bd6372add2050d09bb40ca24cd21","tests/from_type_param_default.rs":"ab937f53e4187ef8d40cbe5138f5e570196608129a3a6e6f064af6833e5fd0a0","tests/from_variant.rs":"91ed3267920a660f367733b1b119d78f28eaf7a37ea44e0545a0525bd40a432b","tests/generics.rs":"e77ab5aa9d81315170f6d90c9a7406f11c1d1bdedf6e7c8f51d50f696cd215dd","tests/happy_path.rs":"6540ff72d5cfc28bbb7b678d7c9798a5dc6c05856ea13c41951883b8c3ce1444","tests/hash_map.rs":"831bfca4faa60f0d6ce7b673c1c27a50bb83a383a35dc56c1cd7929601581da6","tests/multiple.rs":"461441ab21affd32856af36a1fff74571209813e6c8ec1056f276853755ec93f","tests/newtype.rs":"1dc329c8cce3a6529551384c764a6cad21a6d6753dbce1f6d034278e65fcf8f2","tests/skip.rs":"8c13f6bcbb467727a901aaab322f39fb2e2b6440136e7a764244ad4f4656a898","tests/split_declaration.rs":"a3d303031f7e9c09d31090acd1d4cd1d15710ec8c4472d66f4aada0590608706","tests/suggestions.rs":"d162cfe62f5ca0fa8b4792a1ad9d0658a9cc236e7c67dc63700dff93fe7acd17","tests/supports.rs":"b2ffd4e724958d8ccbc52b58a5ee7732b5dbb7ae2f2fb04482e0e515bb9d9429","tests/unsupported_attributes.rs":"80cc9e8da17d65afcfc2fae6e9849459f434589072e8b641aad84939e34477c3"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f24b8982109b8f9d80b6e5491b75d5377c30d646f9188cc038a5edcfe0c904aa","Android.bp":"85cd8f8fd8c0201b157286c39e91863ed557bb7aafe5a0c1075e241b31042bce","CHANGELOG.md":"fa39b8d7d5f536021463c520375037aedbc5e3899b65f0b9e094445b7d1b8798","Cargo.lock":"e4f45242124d436cc4192374f14b9ead35711979ecfebf1422b8f1e978ebf27b","Cargo.toml":"b6519499418475e486363b32744444bd79b3a4f1f92d2d80e927c16a06460391","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"85e07efb137bc9b0483a5607c7e6386a79675b6b7126108b673b90b7c79fa8d0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a1731cdd64b2e1ade79c3bcc4423baf7a77e26a7e4cc7fda251ef3c88a047ae8","TEST_MAPPING":"484b635f4a758deb3c166a65c8bc3411bd498c5e3a7d647147c417c06cf2ffbf","cargo_embargo.json":"3089929435f2ec7733f11c5ab3d4a053f41679e53f27d74f64fbf792d6adfb8a","clippy.toml":"387e3b74dbf86ca2cda4974566fa633d0e0ad69e29842c19edffbf7460f5b6f9","compiletests.sh":"025365fead8bb7101d71210b13ab788664c03bb59ca6d6809f246f955b7f0c30","examples/automatic_bounds.rs":"6b6dbdf9fcf8df8c0bc53dace591a0cdfaa3861d744efa5136c1fb439f742fdc","examples/consume_fields.rs":"2e88c7487c9e27b2eb31fee8e8f03fea6d3fca3a83c19d8a45cedbbe49091136","examples/expr_with.rs":"00f81026dad6db87668d0801aa1b3f3a785f870694c3e7397790e2c31647db4b","examples/fallible_read.rs":"211786fb5d58db768e4418c827c4f40c58e098a6f7d848c75c736a17f9174464","examples/heterogeneous_enum_and_word.rs":"6568851edac410c8041c730808bc30a84051d267a6e71a7b24d3ee556bc219d1","examples/shorthand_or_long_field.rs":"4828708677ee188ba82160266f2c9091f65bcd4925a50101362ca59bfb982292","examples/supports_struct.rs":"041dc54ebc289180ee71171f7459f0de68d7cb10fbcbd4391a027193f7d0306b","src/lib.rs":"b021be25135199ff4537a4377accfc2c15b8f75385203da6a40a03a756664d10","src/macros_public.rs":"18bce4d20a6f23478cc1d2cd3f5abaf28a418428bec68e37437e2fb0c0c15b0b","tests/accrue_errors.rs":"0d5d34018abfd0c4dcb23abbb8e285194045c979b377a5c3e4f3749875654c4e","tests/attrs_with.rs":"f638e51bc97b5d60c2f9ccff5296347e37a631a4c1f52a6e3d212c1e768f4437","tests/compile-fail/attrs_with_bad_fn.rs":"58edbc37dc76987eb951352cb60818cadc814203186d2905abecc7c410620f9c","tests/compile-fail/attrs_with_bad_fn.stderr":"1de6809f38f647b1c3ed4b6585eb6eb708d1166647a396875edaaaf4841390c5","tests/compile-fail/default_expr_wrong_type.rs":"4a8635ce521057ee90b902daa15a84f9520748ad7295f06c905f9479b6cb596d","tests/compile-fail/default_expr_wrong_type.stderr":"9f7ec96a881b56630ff663574a3c6529705bf3681b97c31feae8fd2f1e46e1d9","tests/compile-fail/duplicate_word_across_variants.rs":"553784359f322c59f23526ab8282e038badb5041b2e6eb0230e177a7df4c5aca","tests/compile-fail/duplicate_word_across_variants.stderr":"b1f33ffe4c8c6c7d406111dddf21f8a1b54279701a56428f67adb31bbaac9bc6","tests/compile-fail/duplicate_word_on_variant.rs":"fa42b292ac1ae885903141a85fe08ef7d5d1e45004eb8cd2283f726a4b0baabe","tests/compile-fail/duplicate_word_on_variant.stderr":"c1e4f219bea156ffc3e8f44d2b1000175a14d65715224a921354b11d7d3d498e","tests/compile-fail/flatten_meta_conflicts.rs":"bb7f16f53fd33f78ed41708ecc7c8021f3164e5c68a65758432453de4896b970","tests/compile-fail/flatten_meta_conflicts.stderr":"765a48e136a4d64b8c7bc9c967916742b150e3644a9dee42fb662f6e06848d70","tests/compile-fail/flatten_multiple_fields.rs":"b26b49f54072a853ba80cf74a1cdf97ff4dd7ca4bdad1cc1de8e54ab69df730f","tests/compile-fail/flatten_multiple_fields.stderr":"b3a748a2dcf9dbffc737c3b3bcfaf74ed8d13acd3f8204327ec54544210c2f42","tests/compile-fail/not_impl_from_meta.rs":"a8d73ba5f8fd553051107293a6f512124d7637e345b08b9803c2afdbe9606f12","tests/compile-fail/not_impl_from_meta.stderr":"6c3495e542cf0b798dd88622b6e8864d5cea28250d382c485cb61801f0a6da9e","tests/compile-fail/skip_field_not_impl_default.rs":"0f30751df2d78892b4809198b9f77b6a2adcd74fb1bbff83f6547248bdb0e623","tests/compile-fail/skip_field_not_impl_default.stderr":"47ae8daab37672cadaaab147548c96245a09e0f11d9f1888b40e77e1525a3237","tests/compile-fail/word_on_wrong_variant_type.rs":"172b30927c2745fda4b07a5d16f12d6f24f01fe5d92c9559772104638165f9e7","tests/compile-fail/word_on_wrong_variant_type.stderr":"6f920b0e35f82d48e56a53419357492c8499484fa17c2a983d61150985464503","tests/compiletests.rs":"124d5fef295671dfecf33f6c7b97dcbdf159c87a667a4978a8f0e87fe16d7d36","tests/computed_bound.rs":"aaf0efd6f60ceb863915ece43c680c74645623a5816f8cdca3d0cbe86524d70e","tests/custom_bound.rs":"46f02fa9df4ae363e6762bb2de82e0c08bc1c27e41a16afc5664d98264d847bc","tests/defaults.rs":"21bee6785ac3ee81b361cd010991e87dcf04fcd31d0374046e1e548ab4106a92","tests/enums_default.rs":"58439f3ff13906070d7d323c8d9e7c546e40946d9b5f52b6710b06882e2ce228","tests/enums_newtype.rs":"726264256ff9fb87cd616f1285f02672dee956515ec4f73f25ae99b2d1888ce2","tests/enums_struct.rs":"fec3912d148deb316b0f9c6a86822816718966ccb368378f16c7b46de711aff2","tests/enums_unit.rs":"81ccbf64262908de2b663c0f669b519a2345a9c1e2e23e1c99364d5db87f9766","tests/error.rs":"aba7aaf918314975738cc490ffecd614ebc0a27608690df6be6964ca313b3593","tests/flatten.rs":"b6e430717c41a273683e7e35163b302a354eeb6ec2f0ad50039f4eccf3e909c6","tests/flatten_error_accumulation.rs":"7d5ae7fca555cab4d78d10390892e4be84dcbca822bb5c07772fe539a800ef81","tests/flatten_from_field.rs":"c7b131d4b76860a194d04bc5683dd39a0c02ad543d5761dfe54bb339b76b1f12","tests/forward_attrs_to_from_attributes.rs":"e638a2c5b2d3f379cde237ab905dfcb5b8e5405b6a3271b4f0e37aefcb610f44","tests/from_generics.rs":"bc4b2dae2e4726f09e021939ba0f986edc7fe0c927b4a2cfa52bded39f62f09b","tests/from_meta.rs":"6ccc1924870a291b8e3c67cf4c3778d45549582873ae75c7930e509e0f718150","tests/from_type_param.rs":"f10f3fc47c549ea06f54d58bc6fc60f217e1bd6372add2050d09bb40ca24cd21","tests/from_type_param_default.rs":"ab937f53e4187ef8d40cbe5138f5e570196608129a3a6e6f064af6833e5fd0a0","tests/from_variant.rs":"91ed3267920a660f367733b1b119d78f28eaf7a37ea44e0545a0525bd40a432b","tests/generics.rs":"e77ab5aa9d81315170f6d90c9a7406f11c1d1bdedf6e7c8f51d50f696cd215dd","tests/happy_path.rs":"6540ff72d5cfc28bbb7b678d7c9798a5dc6c05856ea13c41951883b8c3ce1444","tests/hash_map.rs":"831bfca4faa60f0d6ce7b673c1c27a50bb83a383a35dc56c1cd7929601581da6","tests/multiple.rs":"461441ab21affd32856af36a1fff74571209813e6c8ec1056f276853755ec93f","tests/newtype.rs":"1dc329c8cce3a6529551384c764a6cad21a6d6753dbce1f6d034278e65fcf8f2","tests/skip.rs":"8c13f6bcbb467727a901aaab322f39fb2e2b6440136e7a764244ad4f4656a898","tests/split_declaration.rs":"a3d303031f7e9c09d31090acd1d4cd1d15710ec8c4472d66f4aada0590608706","tests/suggestions.rs":"d162cfe62f5ca0fa8b4792a1ad9d0658a9cc236e7c67dc63700dff93fe7acd17","tests/supports.rs":"b2ffd4e724958d8ccbc52b58a5ee7732b5dbb7ae2f2fb04482e0e515bb9d9429","tests/unsupported_attributes.rs":"80cc9e8da17d65afcfc2fae6e9849459f434589072e8b641aad84939e34477c3"}}
\ No newline at end of file
diff --git a/crates/darling/cargo_embargo.json b/crates/darling/cargo_embargo.json
index 74571f5..a5d4755 100644
--- a/crates/darling/cargo_embargo.json
+++ b/crates/darling/cargo_embargo.json
@@ -7,5 +7,6 @@
"host_first_multilib": true,
"host_cross_supported": false
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/darling_core/.android-checksum.json b/crates/darling_core/.android-checksum.json
index b32231a..d8b22f0 100644
--- a/crates/darling_core/.android-checksum.json
+++ b/crates/darling_core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"79b82d777eda046d635275620f4628e23339a3b4562bae85f7af4b9ee023853e","Android.bp":"4e0fee422112d6e66e43b664807def94a7be667c5d52766d6861391f35affc92","Cargo.toml":"611adc2a008dfd12dfb7d4f884173ec4592978b040ce87abed74e17e2a08b0e1","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"acc6fbe075c51e7c08824e90c776d9ceede190bebe7a872f2464a30dfba87d44","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"31f3acdf5259edc423fbd46ff65d25ecec97fc4e4449c7201421b8fc7d116883","src/ast/data.rs":"03cbd1016908d4d2fa5da2e38586c1f0aa655288b984f45a1639bded6e2386c8","src/ast/generics.rs":"640fd874681414f62ec83e00bc3b25486e7821c94cb195cfddee1b9e02d77653","src/ast/mod.rs":"63b6d1b9d71d4f670775f6bb8b37d32ab8dad3b0b011fd966f48f96e0d7f1ca8","src/codegen/attr_extractor.rs":"6f39beab47b2a86a38476908c3eb1bb970412d6961c4e3789e7ed059028791f6","src/codegen/attrs_field.rs":"de053202b554def4550e801be91887f1e68a4a0367ba8c1f75ecf5a31a4a6dc2","src/codegen/default_expr.rs":"018e58db7e020000a695f0c2ba31e94d20a31e7fc3949c6e046eafbfd135d55c","src/codegen/error.rs":"9303579f71978d4b78cd45a899573ca1014aa79547ab4ce3be10991f633d7ae9","src/codegen/field.rs":"902a0f84d901d6eefa4517795bb629baaab681cabf0c43002803e3ac02b0bf88","src/codegen/from_attributes_impl.rs":"26c768a1d7b6d5f8d6c430c264e5ca14e9c101fb43420911cc4fa9bd343c7792","src/codegen/from_derive_impl.rs":"96da64f59efe76ffdb15baa3036bc03791dcb197e1ad5e4f5a1c04625bf04642","src/codegen/from_field.rs":"e78a32ebb838aed7c4b1c89bc85d188da0b677fae6645ccb1a63e74a316bfacf","src/codegen/from_meta_impl.rs":"c085a71890762fc1139a508aa6b0eb9b4800fd97c73e145acffce2d5cb02ae3d","src/codegen/from_type_param.rs":"b14eae9a6746b6dacceb464e4f7aceac851a5d9cc6c4325a4c1df85c8a17ed6c","src/codegen/from_variant_impl.rs":"53c8f2c8fe9b71d10476d5c9045bce99e31cf370b658c4c55a3a7a0bd70b4899","src/codegen/mod.rs":"4f6d36f7cdaf9fc23976dd653c86f6fadd2355dcb1f64fa3848e29d61deaa3ac","src/codegen/outer_from_impl.rs":"57eb6c52ecbaf9171be9b45d4a65a28a92cb72e10c103ea69e08a9afe6a0a679","src/codegen/postfix_transform.rs":"784bfbc0bd884f838ca2d12c65bd64d3cadccc0f9ac4c8c1ba45e9714cdccb8c","src/codegen/trait_impl.rs":"4c1b9e7e9e668d7738d17beb83f274f11c421058a8c8ad406975cdf067504937","src/codegen/variant.rs":"d0a248c6ad17ebdaa827446f7d98e92eb016cb00473bed059f1e1b6acb44df62","src/codegen/variant_data.rs":"f3a2b64f0fd7132381e79e92edd590751479d478dc71b7dfae0e832c22c24bc1","src/derive.rs":"a48b562091ddcc6c13b4617cc4f86b550c511fd0d71417d523780a6804826f1e","src/error/child.rs":"9c991d93981a0c25b59a662ea9a2d5630ea4baaf97c2e19189f436d6f32602a1","src/error/kind.rs":"8b16d4c17d2a01b4bddc198b50c7d3083bab70106e19cc2d5691bd9125aef582","src/error/mod.rs":"c84ce096031e77d1ce021ab768b151a9d82c3c151971a8347e315f1bb8f24cc7","src/from_attributes.rs":"0448ad17410f3e06dc75708c58a8fbca19f4333115e1ce3afa368261b65ce62a","src/from_derive_input.rs":"97e0b6ea8ec6e46bedadbfd76471c5581195544162548a478df8332b1c3540a1","src/from_field.rs":"ce34f318af0d15d33b575c69175799bb43b1f8a0d826cc527ba1906ee14da184","src/from_generic_param.rs":"e3a6e031d3a23435f251027807ebe899b3abb7cf3cd78470637c0bd3bff58c22","src/from_generics.rs":"d547f44ed3b0a8b1bbc9c336d41ddba3ffeff484cd588c1a469e0050b9e5528f","src/from_meta.rs":"84e2342e8792e4fca59d376911db97f7fc1ba8aa63bc5d20cb1ec73c77a2516f","src/from_type_param.rs":"f4f2ff61be34928f917dd08c7c1efba92687b264154c41dffe114840daa81ea9","src/from_variant.rs":"69ecd0fda1d277ec3c2e0c80e3afd71dbf9286e2b5bf70e0c3fe036a1c5d011c","src/lib.rs":"2b526437719212dda26f6adf3739fbc0c29d48ed4f49e68652eb45a51b0f289e","src/macros_private.rs":"c08b542286335e67930b26f4de73393c3f40ada5ca7bfa636e2a2fd740f54352","src/macros_public.rs":"18bce4d20a6f23478cc1d2cd3f5abaf28a418428bec68e37437e2fb0c0c15b0b","src/options/core.rs":"06c7da97c974494ce1b93131f9e153e556b6d03c2330838bce354616c845cbcc","src/options/forward_attrs.rs":"6299dbc03aa66380c9549146f69b79d3bb7c0d2dccc8b522db7ed8f1637c5dd0","src/options/from_attributes.rs":"3cf5cb536076c98e341dea473146df64c08ce076aac9706aff53e717aad75892","src/options/from_derive.rs":"ec1a10f378ce45213543ec3f58315f0ceae2920905e1c21e6a503b24eb4f65df","src/options/from_field.rs":"0569787e655d082aa3c8680dfa7463bf769622a4c925ef1037f54ac0c436a64e","src/options/from_meta.rs":"06042f1eb6d447423d5a3697fbd914aa8a60aed25e36580fb3ea4b2d2e65a2f4","src/options/from_type_param.rs":"15498f62009a7ae0a2f713e2684c9598b50b72ceb9c9966a053c4021140db1aa","src/options/from_variant.rs":"a3432c7141c172c501b62df9d07336e54c4a648237131f6a4ed4253360198e37","src/options/input_field.rs":"05a43efef3216d697c15523309f0c3e5f56bb869621627ccb4bb131f4852edfc","src/options/input_variant.rs":"fa43b2220b45b9f096fcea82cfc5a80914d98c37980d71abd6fcb71e77749d59","src/options/mod.rs":"7e97feab32ab37faf187076b6560b377b397df58878c00e6283612c4f96a5801","src/options/outer_from.rs":"3dc39ba6ab2121e4c302de703bfaac1757d39d631a07ea2ef7169d014accce14","src/options/shape.rs":"bdec69207c654a89d1ea353ff0a10da1d3352ff56285fb9b229c08eab4f86702","src/usage/generics_ext.rs":"a96b33f609893c4b1298e109e94f834e83ff61dceb3c129462d66c32b473507b","src/usage/ident_set.rs":"1f11bbce44dd9b8b64706b55a5751899dbf45fc7f068c7cc66d81b61c706e3f5","src/usage/lifetimes.rs":"5ea52df6d647551f64cc3adb0335569d5cc764468e1148a42dda1042ac9f4cc7","src/usage/mod.rs":"557470a3b4cf1a63d4b4433979fe53fceb21f9ff683a86a6501127badaaa9f0e","src/usage/options.rs":"d5dc120cf42b1569e1a0ef919e2a17b9e97b3eff27f9d1e7195a0d9c9d3b0ad3","src/usage/type_params.rs":"fa6ac00c827a58985802e49ba6ddf702b55be3cac02753636c3fb724b81d70d4","src/util/flag.rs":"6b96e7c4b016d50e18c9ccd6b1a7e197762c14cf4f184070cb1a9e052094b586","src/util/ident_string.rs":"3b3374291f00e5e96a2ea76ddf1e18bcf17e6462da8b7a89f80f2468d7b70552","src/util/ignored.rs":"54ebadf8d1cb962e2dcb77b780e7f0178db5772aefc207edad209d6523b7f002","src/util/mod.rs":"b141717ad05dbc650360fe2b4b2f2b36a39bb1ae6e27b33265a0a1ea8602d6eb","src/util/over_ride.rs":"f1b8f584f749a0868878dcb981849232820a7dc7011f45dc2c65f93896b74f6b","src/util/parse_attribute.rs":"4e18453801d8dca2195ffe90cf26d90648bdcd228c1d73591e5f2d4798dfda86","src/util/parse_expr.rs":"afff1fbf1667f2ab1d48d7431e89147333ff4d2e3564065464db29ab592a872e","src/util/path_list.rs":"1f08749018a4bc6766dedab6688162f57d1c58ca327cfe01ca4fe3413cc91a19","src/util/path_to_string.rs":"9d66f143d3efa760cf1cd1f382bbe4b4d5e585f51ade5b828553615200d7c652","src/util/shape.rs":"8257085de21e2c9138d0adb3291dc260323e809dd7aa5db405cc9ccc88c5154a","src/util/spanned_value.rs":"f01a9afe4872270d3629ff60ec78860a085c4bde642c154aa94a24dc0655277e","src/util/with_original.rs":"fb2138560b69cb1d23686f215a651e3c5036317ad7b975b664d3c382aff5aa7f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"79b82d777eda046d635275620f4628e23339a3b4562bae85f7af4b9ee023853e","Android.bp":"4e0fee422112d6e66e43b664807def94a7be667c5d52766d6861391f35affc92","Cargo.toml":"611adc2a008dfd12dfb7d4f884173ec4592978b040ce87abed74e17e2a08b0e1","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"acc6fbe075c51e7c08824e90c776d9ceede190bebe7a872f2464a30dfba87d44","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"19783d0a8f81a65d2ef167d8b5399298aa2e60b1201b72e5b7162e18299d4e7f","src/ast/data.rs":"03cbd1016908d4d2fa5da2e38586c1f0aa655288b984f45a1639bded6e2386c8","src/ast/generics.rs":"640fd874681414f62ec83e00bc3b25486e7821c94cb195cfddee1b9e02d77653","src/ast/mod.rs":"63b6d1b9d71d4f670775f6bb8b37d32ab8dad3b0b011fd966f48f96e0d7f1ca8","src/codegen/attr_extractor.rs":"6f39beab47b2a86a38476908c3eb1bb970412d6961c4e3789e7ed059028791f6","src/codegen/attrs_field.rs":"de053202b554def4550e801be91887f1e68a4a0367ba8c1f75ecf5a31a4a6dc2","src/codegen/default_expr.rs":"018e58db7e020000a695f0c2ba31e94d20a31e7fc3949c6e046eafbfd135d55c","src/codegen/error.rs":"9303579f71978d4b78cd45a899573ca1014aa79547ab4ce3be10991f633d7ae9","src/codegen/field.rs":"902a0f84d901d6eefa4517795bb629baaab681cabf0c43002803e3ac02b0bf88","src/codegen/from_attributes_impl.rs":"26c768a1d7b6d5f8d6c430c264e5ca14e9c101fb43420911cc4fa9bd343c7792","src/codegen/from_derive_impl.rs":"96da64f59efe76ffdb15baa3036bc03791dcb197e1ad5e4f5a1c04625bf04642","src/codegen/from_field.rs":"e78a32ebb838aed7c4b1c89bc85d188da0b677fae6645ccb1a63e74a316bfacf","src/codegen/from_meta_impl.rs":"c085a71890762fc1139a508aa6b0eb9b4800fd97c73e145acffce2d5cb02ae3d","src/codegen/from_type_param.rs":"b14eae9a6746b6dacceb464e4f7aceac851a5d9cc6c4325a4c1df85c8a17ed6c","src/codegen/from_variant_impl.rs":"53c8f2c8fe9b71d10476d5c9045bce99e31cf370b658c4c55a3a7a0bd70b4899","src/codegen/mod.rs":"4f6d36f7cdaf9fc23976dd653c86f6fadd2355dcb1f64fa3848e29d61deaa3ac","src/codegen/outer_from_impl.rs":"57eb6c52ecbaf9171be9b45d4a65a28a92cb72e10c103ea69e08a9afe6a0a679","src/codegen/postfix_transform.rs":"784bfbc0bd884f838ca2d12c65bd64d3cadccc0f9ac4c8c1ba45e9714cdccb8c","src/codegen/trait_impl.rs":"4c1b9e7e9e668d7738d17beb83f274f11c421058a8c8ad406975cdf067504937","src/codegen/variant.rs":"d0a248c6ad17ebdaa827446f7d98e92eb016cb00473bed059f1e1b6acb44df62","src/codegen/variant_data.rs":"f3a2b64f0fd7132381e79e92edd590751479d478dc71b7dfae0e832c22c24bc1","src/derive.rs":"a48b562091ddcc6c13b4617cc4f86b550c511fd0d71417d523780a6804826f1e","src/error/child.rs":"9c991d93981a0c25b59a662ea9a2d5630ea4baaf97c2e19189f436d6f32602a1","src/error/kind.rs":"8b16d4c17d2a01b4bddc198b50c7d3083bab70106e19cc2d5691bd9125aef582","src/error/mod.rs":"c84ce096031e77d1ce021ab768b151a9d82c3c151971a8347e315f1bb8f24cc7","src/from_attributes.rs":"0448ad17410f3e06dc75708c58a8fbca19f4333115e1ce3afa368261b65ce62a","src/from_derive_input.rs":"97e0b6ea8ec6e46bedadbfd76471c5581195544162548a478df8332b1c3540a1","src/from_field.rs":"ce34f318af0d15d33b575c69175799bb43b1f8a0d826cc527ba1906ee14da184","src/from_generic_param.rs":"e3a6e031d3a23435f251027807ebe899b3abb7cf3cd78470637c0bd3bff58c22","src/from_generics.rs":"d547f44ed3b0a8b1bbc9c336d41ddba3ffeff484cd588c1a469e0050b9e5528f","src/from_meta.rs":"84e2342e8792e4fca59d376911db97f7fc1ba8aa63bc5d20cb1ec73c77a2516f","src/from_type_param.rs":"f4f2ff61be34928f917dd08c7c1efba92687b264154c41dffe114840daa81ea9","src/from_variant.rs":"69ecd0fda1d277ec3c2e0c80e3afd71dbf9286e2b5bf70e0c3fe036a1c5d011c","src/lib.rs":"2b526437719212dda26f6adf3739fbc0c29d48ed4f49e68652eb45a51b0f289e","src/macros_private.rs":"c08b542286335e67930b26f4de73393c3f40ada5ca7bfa636e2a2fd740f54352","src/macros_public.rs":"18bce4d20a6f23478cc1d2cd3f5abaf28a418428bec68e37437e2fb0c0c15b0b","src/options/core.rs":"06c7da97c974494ce1b93131f9e153e556b6d03c2330838bce354616c845cbcc","src/options/forward_attrs.rs":"6299dbc03aa66380c9549146f69b79d3bb7c0d2dccc8b522db7ed8f1637c5dd0","src/options/from_attributes.rs":"3cf5cb536076c98e341dea473146df64c08ce076aac9706aff53e717aad75892","src/options/from_derive.rs":"ec1a10f378ce45213543ec3f58315f0ceae2920905e1c21e6a503b24eb4f65df","src/options/from_field.rs":"0569787e655d082aa3c8680dfa7463bf769622a4c925ef1037f54ac0c436a64e","src/options/from_meta.rs":"06042f1eb6d447423d5a3697fbd914aa8a60aed25e36580fb3ea4b2d2e65a2f4","src/options/from_type_param.rs":"15498f62009a7ae0a2f713e2684c9598b50b72ceb9c9966a053c4021140db1aa","src/options/from_variant.rs":"a3432c7141c172c501b62df9d07336e54c4a648237131f6a4ed4253360198e37","src/options/input_field.rs":"05a43efef3216d697c15523309f0c3e5f56bb869621627ccb4bb131f4852edfc","src/options/input_variant.rs":"fa43b2220b45b9f096fcea82cfc5a80914d98c37980d71abd6fcb71e77749d59","src/options/mod.rs":"7e97feab32ab37faf187076b6560b377b397df58878c00e6283612c4f96a5801","src/options/outer_from.rs":"3dc39ba6ab2121e4c302de703bfaac1757d39d631a07ea2ef7169d014accce14","src/options/shape.rs":"bdec69207c654a89d1ea353ff0a10da1d3352ff56285fb9b229c08eab4f86702","src/usage/generics_ext.rs":"a96b33f609893c4b1298e109e94f834e83ff61dceb3c129462d66c32b473507b","src/usage/ident_set.rs":"1f11bbce44dd9b8b64706b55a5751899dbf45fc7f068c7cc66d81b61c706e3f5","src/usage/lifetimes.rs":"5ea52df6d647551f64cc3adb0335569d5cc764468e1148a42dda1042ac9f4cc7","src/usage/mod.rs":"557470a3b4cf1a63d4b4433979fe53fceb21f9ff683a86a6501127badaaa9f0e","src/usage/options.rs":"d5dc120cf42b1569e1a0ef919e2a17b9e97b3eff27f9d1e7195a0d9c9d3b0ad3","src/usage/type_params.rs":"fa6ac00c827a58985802e49ba6ddf702b55be3cac02753636c3fb724b81d70d4","src/util/flag.rs":"6b96e7c4b016d50e18c9ccd6b1a7e197762c14cf4f184070cb1a9e052094b586","src/util/ident_string.rs":"3b3374291f00e5e96a2ea76ddf1e18bcf17e6462da8b7a89f80f2468d7b70552","src/util/ignored.rs":"54ebadf8d1cb962e2dcb77b780e7f0178db5772aefc207edad209d6523b7f002","src/util/mod.rs":"b141717ad05dbc650360fe2b4b2f2b36a39bb1ae6e27b33265a0a1ea8602d6eb","src/util/over_ride.rs":"f1b8f584f749a0868878dcb981849232820a7dc7011f45dc2c65f93896b74f6b","src/util/parse_attribute.rs":"4e18453801d8dca2195ffe90cf26d90648bdcd228c1d73591e5f2d4798dfda86","src/util/parse_expr.rs":"afff1fbf1667f2ab1d48d7431e89147333ff4d2e3564065464db29ab592a872e","src/util/path_list.rs":"1f08749018a4bc6766dedab6688162f57d1c58ca327cfe01ca4fe3413cc91a19","src/util/path_to_string.rs":"9d66f143d3efa760cf1cd1f382bbe4b4d5e585f51ade5b828553615200d7c652","src/util/shape.rs":"8257085de21e2c9138d0adb3291dc260323e809dd7aa5db405cc9ccc88c5154a","src/util/spanned_value.rs":"f01a9afe4872270d3629ff60ec78860a085c4bde642c154aa94a24dc0655277e","src/util/with_original.rs":"fb2138560b69cb1d23686f215a651e3c5036317ad7b975b664d3c382aff5aa7f"}}
\ No newline at end of file
diff --git a/crates/darling_core/cargo_embargo.json b/crates/darling_core/cargo_embargo.json
index f47e9e6..101f63b 100644
--- a/crates/darling_core/cargo_embargo.json
+++ b/crates/darling_core/cargo_embargo.json
@@ -5,5 +5,6 @@
"device_supported": false,
"host_first_multilib": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/darling_macro/.android-checksum.json b/crates/darling_macro/.android-checksum.json
index 928d93e..df6c3b6 100644
--- a/crates/darling_macro/.android-checksum.json
+++ b/crates/darling_macro/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"433e9d5ab2aa97aa4dcf84f51296e6222c7b671dd4d493b4321dede641501423","Android.bp":"98cc48fb9dbb710204682a9d0f8c2290a96b6e0e9dc317c2af014d5cf486ac74","Cargo.toml":"d95033e850e4badbe796a6ee414e668fff368d37be2a041f1eaf70b3a7950218","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"a5c9789af6ee152d04073f64fc85df1e6c5842f095fef77d985d6d85052febf9","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"5d622471e1ee8b3888cbc4192d94ddff16e662026814c1fc73b053a56dcc0109","src/lib.rs":"2b261000e46fdb7f671f34809a8eb8af743d0ddb6e4ae2510aa8e0cbe002dca7"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"433e9d5ab2aa97aa4dcf84f51296e6222c7b671dd4d493b4321dede641501423","Android.bp":"98cc48fb9dbb710204682a9d0f8c2290a96b6e0e9dc317c2af014d5cf486ac74","Cargo.toml":"d95033e850e4badbe796a6ee414e668fff368d37be2a041f1eaf70b3a7950218","LICENSE":"59e4be7fbcfc8c59bb362b0d1176d9bbb478be073869249f8b73e90351e637c6","METADATA":"a5c9789af6ee152d04073f64fc85df1e6c5842f095fef77d985d6d85052febf9","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"6d19ddb0698158419d0d2bf84bb9cecc2a0e265943f6bab222c733fd0cb2b9cb","src/lib.rs":"2b261000e46fdb7f671f34809a8eb8af743d0ddb6e4ae2510aa8e0cbe002dca7"}}
\ No newline at end of file
diff --git a/crates/darling_macro/cargo_embargo.json b/crates/darling_macro/cargo_embargo.json
index 65331e6..0ac9d02 100644
--- a/crates/darling_macro/cargo_embargo.json
+++ b/crates/darling_macro/cargo_embargo.json
@@ -1,8 +1,9 @@
{
- "run_cargo": false,
- "package": {
- "darling_macro": {
- "device_supported": false
- }
+ "run_cargo": false,
+ "package": {
+ "darling_macro": {
+ "device_supported": false
}
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/dashmap/.android-checksum.json b/crates/dashmap/.android-checksum.json
index a0513ae..0141988 100644
--- a/crates/dashmap/.android-checksum.json
+++ b/crates/dashmap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b5cb07d8cdb9c747b2e62f08c604d7a17d8e4c02c6c49d484988eadd3f11403f","Android.bp":"3ced1b3de734cdff82847e8dfe67ac1fa6f501fb4c6866e33aaadb1297a2a328","Cargo.toml":"0f37c15c7ae41e8ad543ecd048e8c00d74da1b0f2101ea0e58425ce3bc63b584","LICENSE":"bd20d7e9ba0fa840cac3e21c6f82b1606af3abdf1dfb0015269c0dbd16727c1c","METADATA":"716b6db2dd73a2b6ac2bf4144ac77083b3bad0d85015596f3f687c1cae52498d","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e790cf9ed383d5110fec76c975bdad9574053d6a80bfeb6583395e664f8b9422","TEST_MAPPING":"cd7824b55d25d98756c1e573310c240e8df172dbfccd545821a56cbe89a22823","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","rust-toolchain.toml":"ea5fe65f37b17826436f455ebae0b8af2be0884a70ecb1c06bb059e5cfb763bd","src/arbitrary.rs":"88bb282e27e994b43c28fcfcabda3ca2cca1c5958129d3051986f98a16b8c398","src/iter.rs":"b7631eb87c3a40a6846c01eb7e4ba9e63474d7a433497094a5e672775fbb80b6","src/iter_set.rs":"8b2911dd8f54cbc0f65b78b10add7f428be473f23e278f10faa8935a24b19290","src/lib.rs":"0828a64a1e4f0c0253680bc9612f4bef7b8ab14d7981daa91d2b2ecae72a80df","src/lock.rs":"4b7f69270cf25e446a8dcbaadf69a382f6eedd44c225007d270bb85aa7e3206e","src/mapref/entry.rs":"3b5d3f76be1a9a2c531387e0f13c49fc608f3a37cda064b67925bb0435958316","src/mapref/mod.rs":"c88b5613753529a00245d622bc082388b1568fba5198ff6d1c624b742990b7c5","src/mapref/multiple.rs":"3c483182f9f8516eaff4b9f9985fc437e228e685154202928bd07af0bb55da07","src/mapref/one.rs":"d6f26f41ac7211952e8a636b45f7306207d04d2090b178f07abe3018fb90b87c","src/rayon/map.rs":"801b7e6e701a3c94f7d08d720c95055559119af347d25093ae765728a65d0975","src/rayon/read_only.rs":"6dca609a7a39ce837c9e7b2d802014debba72c6c0cc2290e21da3b9a3014a452","src/rayon/set.rs":"cf4ab54d23c0dadfe8d29381494da00f51c22509153982515c03282e9165d7d5","src/read_only.rs":"f4312f447973765c71bdf76b96616c4e6706d5cd89f10731888b3c5757f9265f","src/serde.rs":"bf86cd9e45601efc400e5ce45bdacb371b805d5d0a71ef53fbab88a1d262eba1","src/set.rs":"a3b556c8aa5ddecda22afee97bea36944fc3e2e477c7021c133afc6dcf0f34e3","src/setref/mod.rs":"28c9f419aacf73813cffb57f4f308373829bb7090779115769af1b0514697d17","src/setref/multiple.rs":"d267ff921a237392255a60e34acd50dc816f944782a4a6688224d81db6ea90f6","src/setref/one.rs":"c57229eb9c70c344be76ac16755cfd5c06e5bd0c2c5eadecd8090700e056f47a","src/t.rs":"764c8fdbd88f2b0e91ecf2f09ca54e51643e232680fcf72c0374abb94e892642","src/try_result.rs":"83e9ecb10bfe1ee6af30cbe2830be42debddca83293b2a57fdaf8df301819297","src/util.rs":"751fdc0f2c4016a5d799b164b735db116976a969c2709ab4cc06425e30b8aca2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b5cb07d8cdb9c747b2e62f08c604d7a17d8e4c02c6c49d484988eadd3f11403f","Android.bp":"993bd06fbc749125d5b6364d29c877a54cbf8d5adb6edae229c27b6817331f29","Cargo.toml":"0f37c15c7ae41e8ad543ecd048e8c00d74da1b0f2101ea0e58425ce3bc63b584","LICENSE":"bd20d7e9ba0fa840cac3e21c6f82b1606af3abdf1dfb0015269c0dbd16727c1c","METADATA":"716b6db2dd73a2b6ac2bf4144ac77083b3bad0d85015596f3f687c1cae52498d","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e790cf9ed383d5110fec76c975bdad9574053d6a80bfeb6583395e664f8b9422","TEST_MAPPING":"cd7824b55d25d98756c1e573310c240e8df172dbfccd545821a56cbe89a22823","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","rust-toolchain.toml":"ea5fe65f37b17826436f455ebae0b8af2be0884a70ecb1c06bb059e5cfb763bd","src/arbitrary.rs":"88bb282e27e994b43c28fcfcabda3ca2cca1c5958129d3051986f98a16b8c398","src/iter.rs":"b7631eb87c3a40a6846c01eb7e4ba9e63474d7a433497094a5e672775fbb80b6","src/iter_set.rs":"8b2911dd8f54cbc0f65b78b10add7f428be473f23e278f10faa8935a24b19290","src/lib.rs":"0828a64a1e4f0c0253680bc9612f4bef7b8ab14d7981daa91d2b2ecae72a80df","src/lock.rs":"4b7f69270cf25e446a8dcbaadf69a382f6eedd44c225007d270bb85aa7e3206e","src/mapref/entry.rs":"3b5d3f76be1a9a2c531387e0f13c49fc608f3a37cda064b67925bb0435958316","src/mapref/mod.rs":"c88b5613753529a00245d622bc082388b1568fba5198ff6d1c624b742990b7c5","src/mapref/multiple.rs":"3c483182f9f8516eaff4b9f9985fc437e228e685154202928bd07af0bb55da07","src/mapref/one.rs":"d6f26f41ac7211952e8a636b45f7306207d04d2090b178f07abe3018fb90b87c","src/rayon/map.rs":"801b7e6e701a3c94f7d08d720c95055559119af347d25093ae765728a65d0975","src/rayon/read_only.rs":"6dca609a7a39ce837c9e7b2d802014debba72c6c0cc2290e21da3b9a3014a452","src/rayon/set.rs":"cf4ab54d23c0dadfe8d29381494da00f51c22509153982515c03282e9165d7d5","src/read_only.rs":"f4312f447973765c71bdf76b96616c4e6706d5cd89f10731888b3c5757f9265f","src/serde.rs":"bf86cd9e45601efc400e5ce45bdacb371b805d5d0a71ef53fbab88a1d262eba1","src/set.rs":"a3b556c8aa5ddecda22afee97bea36944fc3e2e477c7021c133afc6dcf0f34e3","src/setref/mod.rs":"28c9f419aacf73813cffb57f4f308373829bb7090779115769af1b0514697d17","src/setref/multiple.rs":"d267ff921a237392255a60e34acd50dc816f944782a4a6688224d81db6ea90f6","src/setref/one.rs":"c57229eb9c70c344be76ac16755cfd5c06e5bd0c2c5eadecd8090700e056f47a","src/t.rs":"764c8fdbd88f2b0e91ecf2f09ca54e51643e232680fcf72c0374abb94e892642","src/try_result.rs":"83e9ecb10bfe1ee6af30cbe2830be42debddca83293b2a57fdaf8df301819297","src/util.rs":"751fdc0f2c4016a5d799b164b735db116976a969c2709ab4cc06425e30b8aca2"}}
\ No newline at end of file
diff --git a/crates/dashmap/Android.bp b/crates/dashmap/Android.bp
index b43ca1f..34e5c86 100644
--- a/crates/dashmap/Android.bp
+++ b/crates/dashmap/Android.bp
@@ -56,4 +56,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/dashmap/cargo_embargo.json b/crates/dashmap/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/dashmap/cargo_embargo.json
+++ b/crates/dashmap/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/debug_tree/.android-checksum.json b/crates/debug_tree/.android-checksum.json
index 2fb03e9..b348011 100644
--- a/crates/debug_tree/.android-checksum.json
+++ b/crates/debug_tree/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"58fb598dae3e22918d89fab681ed1d2f6135dff52df7f78b68558176d8e376ab","Android.bp":"3db95e501f43f1d0decfa3c252c06d9aac97aa56c53ffd95d37af31294136fe5","Cargo.lock":"7337789e8fa460b3dc90cd60592f9781f5a7b035ab7f3a13dd86930fe17cc674","Cargo.toml":"62b5c4206ae8525fce1c5b640f3e55054b06202eb6bba6dc73bdadfa113b9f75","LICENSE":"0e235ccfd2a1a6b6a2af8e075abd4e9f0138fbed555a2faf2d98de32e709ee19","METADATA":"0cc2810e388711230a1aa8890f53b8fe0405b7fb67b67f59457f4cf5799ba820","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b61fff5ebb1e42e33691d4b9b0356fc7249db939c61f7125d4e815fd2079338a","TEST_MAPPING":"aa88089f8e18135aa0fbd2e0f44c3ca0c6cc0f1a543cc3194978ce112a616ad9","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","doc/build/LICENSE.adoc":"a9bf1c2531c6f6fb52b5be659002ff24eed66b098b1a0ed0fd23f859c9a48ae6","doc/build/asciidoc-coalescer.rb":"283567172d9b5395c79f84234e0d5d61c18583f79bc2e4edc4b6ec647dbada90","doc/readme_template.adoc":"b217fca4d056651a26fbc8e964d23a5f1f94daa27743bf70df944a0893b2b396","examples/fibonacci.rs":"0fa4165d71ec3560d43fd551756d6c4b261e197196539434b4fa085a13fadf82","examples/multi_line.rs":"8c23363a11a45260c6ad278dee0e1c47dd79c3b7a730fb6fcb548a402c149d68","examples/multiple_trees.rs":"063ddd12c2493509769605ec8726c65111e19f3745f11e90574ffa43a3076f9e","examples/nested.rs":"77081bf933934818e39c31d93c475a74751ef45623d5a28fea59b2bdf2ebbe5a","examples/no_macros.rs":"4412fbd309aeb6bf040630372fa7c01881cdd720afc6a333b361d5caf0c0c8bb","examples/out/fibonacci.txt":"9b77fd3cfaecc4b707135ec2c679436ad0d8cf3224c37c82b05bc425ee5032e6","examples/out/multi_line.txt":"0b3a5d50bbc39c81b6724c2cb010a8279ce56b0ae368d540aae1d5b652da15f8","examples/out/multiple_trees_A.txt":"b988ebd4d2335ed21a7ca7a60dbdf967d32a421c4d9e91d0ecae9067f5bcaa6a","examples/out/multiple_trees_B.txt":"3618181cd07c4c9d7999aeb52ad4d71eb033e8853b043ffc82b45439351012eb","examples/out/nested.txt":"52b9afbf6df61aa9a3f831ab42e22f49f62a7318f6d8b2f3771c363412288c99","examples/out/no_macros.txt":"caa5ccf868fa84cb96bd53062454eb9d9610861df61a7d2af2ddbf530977d3e3","examples/out/panic.txt":"6120b6a6ddd5e5ba0fcd1016a0ddc270f5ed5d5bd995c09742c3f62248655b0c","examples/panic.rs":"19cbe8503ae31791f2f8fba429c709be7368dc87a92df5def160840d7a8a413c","patches/LICENSE.patch":"57696606ac96adedd7ae0c32d424156606d1568e689df68b740145ef7525c4a0","src/default.rs":"0ea0073b1a3694ab23db49cd5c689cc37403be70dbda7338fa5e3a2e0cb1f117","src/defer.rs":"7d934b74c9f42b9abb01b849f9d02767895b2f7593c1e26edbc02c64cdecf1ab","src/internal.rs":"3f869bed8f1128d244fc20a8b2c0133bad08667663adbb0162b8e8237bacc980","src/lib.rs":"6dd43a92f85cf87837a756ed7df130d26d7a59ffd83b14e1c96f4a4e6a40ce2a","src/scoped_branch.rs":"e3a3cc5449fb5279c367110943ff726c35759fda33e932a4876f53e10078f52d","src/test.rs":"33233aef257d49799db05d41eaf8c5d632f1895c4517ca18c8d36e13b1f80c40","src/tree_config.rs":"2889164a8d6e434acdedf5f140aa1e951d70de63979b8fb316c029397bb2b489"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"58fb598dae3e22918d89fab681ed1d2f6135dff52df7f78b68558176d8e376ab","Android.bp":"62bf9101527147c0ea49d311a0f5f4dddbc36abd43a4c21bc6cbe4d8327fc558","Cargo.lock":"7337789e8fa460b3dc90cd60592f9781f5a7b035ab7f3a13dd86930fe17cc674","Cargo.toml":"62b5c4206ae8525fce1c5b640f3e55054b06202eb6bba6dc73bdadfa113b9f75","LICENSE":"0e235ccfd2a1a6b6a2af8e075abd4e9f0138fbed555a2faf2d98de32e709ee19","METADATA":"0cc2810e388711230a1aa8890f53b8fe0405b7fb67b67f59457f4cf5799ba820","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b61fff5ebb1e42e33691d4b9b0356fc7249db939c61f7125d4e815fd2079338a","TEST_MAPPING":"aa88089f8e18135aa0fbd2e0f44c3ca0c6cc0f1a543cc3194978ce112a616ad9","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","doc/build/LICENSE.adoc":"a9bf1c2531c6f6fb52b5be659002ff24eed66b098b1a0ed0fd23f859c9a48ae6","doc/build/asciidoc-coalescer.rb":"283567172d9b5395c79f84234e0d5d61c18583f79bc2e4edc4b6ec647dbada90","doc/readme_template.adoc":"b217fca4d056651a26fbc8e964d23a5f1f94daa27743bf70df944a0893b2b396","examples/fibonacci.rs":"0fa4165d71ec3560d43fd551756d6c4b261e197196539434b4fa085a13fadf82","examples/multi_line.rs":"8c23363a11a45260c6ad278dee0e1c47dd79c3b7a730fb6fcb548a402c149d68","examples/multiple_trees.rs":"063ddd12c2493509769605ec8726c65111e19f3745f11e90574ffa43a3076f9e","examples/nested.rs":"77081bf933934818e39c31d93c475a74751ef45623d5a28fea59b2bdf2ebbe5a","examples/no_macros.rs":"4412fbd309aeb6bf040630372fa7c01881cdd720afc6a333b361d5caf0c0c8bb","examples/out/fibonacci.txt":"9b77fd3cfaecc4b707135ec2c679436ad0d8cf3224c37c82b05bc425ee5032e6","examples/out/multi_line.txt":"0b3a5d50bbc39c81b6724c2cb010a8279ce56b0ae368d540aae1d5b652da15f8","examples/out/multiple_trees_A.txt":"b988ebd4d2335ed21a7ca7a60dbdf967d32a421c4d9e91d0ecae9067f5bcaa6a","examples/out/multiple_trees_B.txt":"3618181cd07c4c9d7999aeb52ad4d71eb033e8853b043ffc82b45439351012eb","examples/out/nested.txt":"52b9afbf6df61aa9a3f831ab42e22f49f62a7318f6d8b2f3771c363412288c99","examples/out/no_macros.txt":"caa5ccf868fa84cb96bd53062454eb9d9610861df61a7d2af2ddbf530977d3e3","examples/out/panic.txt":"6120b6a6ddd5e5ba0fcd1016a0ddc270f5ed5d5bd995c09742c3f62248655b0c","examples/panic.rs":"19cbe8503ae31791f2f8fba429c709be7368dc87a92df5def160840d7a8a413c","patches/LICENSE.patch":"57696606ac96adedd7ae0c32d424156606d1568e689df68b740145ef7525c4a0","src/default.rs":"0ea0073b1a3694ab23db49cd5c689cc37403be70dbda7338fa5e3a2e0cb1f117","src/defer.rs":"7d934b74c9f42b9abb01b849f9d02767895b2f7593c1e26edbc02c64cdecf1ab","src/internal.rs":"3f869bed8f1128d244fc20a8b2c0133bad08667663adbb0162b8e8237bacc980","src/lib.rs":"6dd43a92f85cf87837a756ed7df130d26d7a59ffd83b14e1c96f4a4e6a40ce2a","src/scoped_branch.rs":"e3a3cc5449fb5279c367110943ff726c35759fda33e932a4876f53e10078f52d","src/test.rs":"33233aef257d49799db05d41eaf8c5d632f1895c4517ca18c8d36e13b1f80c40","src/tree_config.rs":"2889164a8d6e434acdedf5f140aa1e951d70de63979b8fb316c029397bb2b489"}}
\ No newline at end of file
diff --git a/crates/debug_tree/Android.bp b/crates/debug_tree/Android.bp
index c74ac3a..335fd5d 100644
--- a/crates/debug_tree/Android.bp
+++ b/crates/debug_tree/Android.bp
@@ -48,4 +48,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/debug_tree/cargo_embargo.json b/crates/debug_tree/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/debug_tree/cargo_embargo.json
+++ b/crates/debug_tree/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/der_derive/.android-checksum.json b/crates/der_derive/.android-checksum.json
index d53e655..c87da3c 100644
--- a/crates/der_derive/.android-checksum.json
+++ b/crates/der_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0961511d1397f417849004310ccc40b741318c6aa77bb4c84c5e99cd1e0983a9","Android.bp":"e27fbad43f9dea4b26a2bc27c6054a8757f6167109152657fe66fdcbff9fecf3","CHANGELOG.md":"d15555331acdb5d0b3d68b88c41c9fd71e687e9596597a0c22d417c5fd6aed58","Cargo.toml":"334b58b648057c7e6c81fc0c25a95f61e0db758880b009c84a354ebb7d6ee4fb","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"94a476c9152842777e0ad749dac368f8c02c6bfe2392c12da946e56f2f9ef0cd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"57964b670d720eb1c6a5f9459154293e57c1f8728241036eb0c0e7723d6cbb32","cargo_embargo.json":"0754e80e6c4148c2a0683dc45f71ee6ae012fc5f743d7d131799829f905e1535","rules.mk":"44465867746ac09210543d51b7d5c9f3cc949992d868d52ff98587fd30ec5612","src/asn1_type.rs":"ad0086a32a804a5b7ed264f9be99676386c57fe81b04c7287146eda158bbb153","src/attributes.rs":"604dbaba8bfeb142dd0b0a220212570f23744249fad5ea37beab5e2d373853ad","src/choice.rs":"966e4cc8f9a8a63c09caab057a5666eca4936f5804138bb861864206b3200c23","src/choice/variant.rs":"023cf72bb2356adca3d1a92508034e1ce2f30d91a51d7647459ea528c9765ef1","src/enumerated.rs":"6d448c9ab147b37405f1c1ca58cc879f6d20d7c6f6e96de215de66188f47749d","src/lib.rs":"fe1260a2546b9859b8aafa7bacb81ab6d03b937ad75a0d160c9d63681acdcb97","src/sequence.rs":"f5f779ca11dbf1821736b1f2ac5eb0a02cb73f298afa323030abb99c6e6147f6","src/sequence/field.rs":"1d64cc403eafa6295f93ac120d04ca68e82979fd66742c56b7f025b39e7afba0","src/tag.rs":"23422361990522cf5ddbfc845490b2c871b69166303692c22b13d19eee7ebfed","src/value_ord.rs":"72d1f4fa9487ddbbe29f1eef83cd2f28acbd56e31460333fc4620d0308423d8d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0961511d1397f417849004310ccc40b741318c6aa77bb4c84c5e99cd1e0983a9","Android.bp":"e27fbad43f9dea4b26a2bc27c6054a8757f6167109152657fe66fdcbff9fecf3","CHANGELOG.md":"d15555331acdb5d0b3d68b88c41c9fd71e687e9596597a0c22d417c5fd6aed58","Cargo.toml":"334b58b648057c7e6c81fc0c25a95f61e0db758880b009c84a354ebb7d6ee4fb","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"94a476c9152842777e0ad749dac368f8c02c6bfe2392c12da946e56f2f9ef0cd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"57964b670d720eb1c6a5f9459154293e57c1f8728241036eb0c0e7723d6cbb32","cargo_embargo.json":"7b0e63d72b69b092f0275a04fdca22d68717a5d4c91836a30d2ac1ad874f3af4","rules.mk":"44465867746ac09210543d51b7d5c9f3cc949992d868d52ff98587fd30ec5612","src/asn1_type.rs":"ad0086a32a804a5b7ed264f9be99676386c57fe81b04c7287146eda158bbb153","src/attributes.rs":"604dbaba8bfeb142dd0b0a220212570f23744249fad5ea37beab5e2d373853ad","src/choice.rs":"966e4cc8f9a8a63c09caab057a5666eca4936f5804138bb861864206b3200c23","src/choice/variant.rs":"023cf72bb2356adca3d1a92508034e1ce2f30d91a51d7647459ea528c9765ef1","src/enumerated.rs":"6d448c9ab147b37405f1c1ca58cc879f6d20d7c6f6e96de215de66188f47749d","src/lib.rs":"fe1260a2546b9859b8aafa7bacb81ab6d03b937ad75a0d160c9d63681acdcb97","src/sequence.rs":"f5f779ca11dbf1821736b1f2ac5eb0a02cb73f298afa323030abb99c6e6147f6","src/sequence/field.rs":"1d64cc403eafa6295f93ac120d04ca68e82979fd66742c56b7f025b39e7afba0","src/tag.rs":"23422361990522cf5ddbfc845490b2c871b69166303692c22b13d19eee7ebfed","src/value_ord.rs":"72d1f4fa9487ddbbe29f1eef83cd2f28acbd56e31460333fc4620d0308423d8d"}}
\ No newline at end of file
diff --git a/crates/der_derive/cargo_embargo.json b/crates/der_derive/cargo_embargo.json
index 26fb3f5..283e78d 100644
--- a/crates/der_derive/cargo_embargo.json
+++ b/crates/der_derive/cargo_embargo.json
@@ -6,5 +6,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/derive_arbitrary/.android-checksum.json b/crates/derive_arbitrary/.android-checksum.json
index b99a770..793b482 100644
--- a/crates/derive_arbitrary/.android-checksum.json
+++ b/crates/derive_arbitrary/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"11605a10285a8ed21fda31ba208e50306d7f2569fb4b3935d06964dc2fdf4415","Android.bp":"ecf731e715ee9ca45b3c669f5d84a4c1fc2f8fd4753c69fc8e9e7d206d1011e3","Cargo.toml":"fd7d6fff3744f32c795682a41adc114fc36631923ecb5421384577df49d86c16","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"12dfe0f773e9ac7f603027bfeaeb396873bc7cfc108f048f5fe3a430d263eccb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"94b361e8062eac8c5297a235595146e0758c2fe96a573776ae6022bcaf67508a","TEST_MAPPING":"02e3608ad87e3ec7ed78e24e48f33b3312730de4e48675e89582aa561ddf50e7","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/container_attributes.rs":"b3132133bb66fa6f34ca83d6f2c4e8e8c85b7719ddf41b33ab4724e5af38b722","src/field_attributes.rs":"cdb0ba9cd0b22fa3b6e2df50f86e777347940a731ac460312e64cd68ba11d13c","src/lib.rs":"ff97d54d566d39a62d5d1e9bd037081c5f51267f7a5681dc6bedc1f4fc5f6128","src/variant_attributes.rs":"28cca42e56d167dff434c0fe2e0f07ba1bc72039738c55b59d4a5502cf9bea3b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"11605a10285a8ed21fda31ba208e50306d7f2569fb4b3935d06964dc2fdf4415","Android.bp":"dfb31329e7ee7d5f53e38f4d4c43789809202c7c96cddcde68753d854ec4f7ca","Cargo.toml":"fd7d6fff3744f32c795682a41adc114fc36631923ecb5421384577df49d86c16","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"12dfe0f773e9ac7f603027bfeaeb396873bc7cfc108f048f5fe3a430d263eccb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"94b361e8062eac8c5297a235595146e0758c2fe96a573776ae6022bcaf67508a","TEST_MAPPING":"02e3608ad87e3ec7ed78e24e48f33b3312730de4e48675e89582aa561ddf50e7","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/container_attributes.rs":"b3132133bb66fa6f34ca83d6f2c4e8e8c85b7719ddf41b33ab4724e5af38b722","src/field_attributes.rs":"cdb0ba9cd0b22fa3b6e2df50f86e777347940a731ac460312e64cd68ba11d13c","src/lib.rs":"ff97d54d566d39a62d5d1e9bd037081c5f51267f7a5681dc6bedc1f4fc5f6128","src/variant_attributes.rs":"28cca42e56d167dff434c0fe2e0f07ba1bc72039738c55b59d4a5502cf9bea3b"}}
\ No newline at end of file
diff --git a/crates/derive_arbitrary/Android.bp b/crates/derive_arbitrary/Android.bp
index ce816a7..1f343ea 100644
--- a/crates/derive_arbitrary/Android.bp
+++ b/crates/derive_arbitrary/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/derive_arbitrary/cargo_embargo.json b/crates/derive_arbitrary/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/derive_arbitrary/cargo_embargo.json
+++ b/crates/derive_arbitrary/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/diplomat-runtime/.android-checksum.json b/crates/diplomat-runtime/.android-checksum.json
index 04d2b86..ac7df0c 100644
--- a/crates/diplomat-runtime/.android-checksum.json
+++ b/crates/diplomat-runtime/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6167fe6faef23edf4adef9c21e4ce4b32b0edfcd3bc624b3bd19514010be53be","Android.bp":"590ea0d9708dc73d98e60d39a365cde26ac7b1c597f9cf448fa393c66513e20b","Cargo.toml":"44d826983e75c531f85322421270678aa962351e30820c24b712983337459d2a","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"1625b37d865db8515aab095965124225e93f2b931e74d54a1f6fd40befd3266d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"16143b4a3b2b7e237c4df336ea0f1acaf8b933191c4edf5c60465abef731cb71","src/callback.rs":"31c93c1b7bc0646bfcd5f478c0f51876bac392fb7096bd1fefcd374af5b23064","src/lib.rs":"5e7d9fe17eddf04deeea3210c1958a9ac2dee15d6d7b810ddafacf27795f6629","src/result.rs":"8829c77a200b16aa5dbfe39848d05e13040c55c13321e85ecbf312233a796be9","src/slices.rs":"7b7dedd531ab4da9c4d82a623e3a309ab967bb72d01e491b93f9343a605300a7","src/wasm_glue.rs":"f3a0ee707c7ab94fd2a9b1abc35aa4ecd3f4a348cec261f454286ce69dad987a","src/write.rs":"fc1a32085e94117266f81efebc48833d6f4c240fbffa4c28f7b8e0beace2ff2f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6167fe6faef23edf4adef9c21e4ce4b32b0edfcd3bc624b3bd19514010be53be","Android.bp":"75377b810b8faae352166feaa1ed6f46d415c4f042542b7e4ca8799a87a2313e","Cargo.toml":"44d826983e75c531f85322421270678aa962351e30820c24b712983337459d2a","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"1625b37d865db8515aab095965124225e93f2b931e74d54a1f6fd40befd3266d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"8f0124dd7aa24024f315985571b34a18127946f7599074a4a281123feb6a1195","src/callback.rs":"31c93c1b7bc0646bfcd5f478c0f51876bac392fb7096bd1fefcd374af5b23064","src/lib.rs":"5e7d9fe17eddf04deeea3210c1958a9ac2dee15d6d7b810ddafacf27795f6629","src/result.rs":"8829c77a200b16aa5dbfe39848d05e13040c55c13321e85ecbf312233a796be9","src/slices.rs":"7b7dedd531ab4da9c4d82a623e3a309ab967bb72d01e491b93f9343a605300a7","src/wasm_glue.rs":"f3a0ee707c7ab94fd2a9b1abc35aa4ecd3f4a348cec261f454286ce69dad987a","src/write.rs":"fc1a32085e94117266f81efebc48833d6f4c240fbffa4c28f7b8e0beace2ff2f"}}
\ No newline at end of file
diff --git a/crates/diplomat-runtime/Android.bp b/crates/diplomat-runtime/Android.bp
index 38fdcd7..c981446 100644
--- a/crates/diplomat-runtime/Android.bp
+++ b/crates/diplomat-runtime/Android.bp
@@ -31,4 +31,5 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/diplomat-runtime/cargo_embargo.json b/crates/diplomat-runtime/cargo_embargo.json
index 6e7b85f..8e5cc25 100644
--- a/crates/diplomat-runtime/cargo_embargo.json
+++ b/crates/diplomat-runtime/cargo_embargo.json
@@ -2,5 +2,6 @@
"ramdisk_available": true,
"recovery_available": true,
"vendor_ramdisk_available": true,
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/diplomat/.android-checksum.json b/crates/diplomat/.android-checksum.json
index 90431e8..64f4f9f 100644
--- a/crates/diplomat/.android-checksum.json
+++ b/crates/diplomat/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7e596373e8899ffb5a549413f56fce8d5eddf3ea76372318b335151c9ad53cab","Android.bp":"ae3c7ebe9e536b3ab18c8afce74ee1150ed1a03cc820f6047a0c1641f9e63b55","Cargo.toml":"02509f454fca27c8e1aa652e18b411705df567faf270a64f337442280853854b","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"8ede01764a80d5e820f7372f0fb491d029d761979e917d8557930d66d69a77ec","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"958f9a85753bf1fa1d9dbd47b92221018d717240f25a8bf606d88b24bcd30416","rules.mk":"5b823d943a1e85dee806a4ab36677984471968a8b12604409ec423d39a82d982","src/enum_convert.rs":"579037dd3cfc4be9f65b64e31b0f650cda57667334c845c379ba3387707db639","src/lib.rs":"15f92576fa8d3cb8b9d8bb302630079d1d10aa2be7b46c2511ec26c28d402e41","src/snapshots/diplomat__tests__both_kinds_of_option.snap":"6518b5ad24b30e3b670096aaf13558341da7200bac45fe580a4cca3d154ff3ac","src/snapshots/diplomat__tests__callback_arguments.snap":"37fb6e72109eb517db2fb94239384851be5f09f93f6c357797fcebbad63fafff","src/snapshots/diplomat__tests__cfgd_struct.snap":"9ba8bef378d606cd1428de18344f1ff7da0d99e8edcba699b9a380e45479d65e","src/snapshots/diplomat__tests__cfged_method-2.snap":"d1b8685689cd094e3d5218536c81e7eb8304bdf78fbbe82aa2117dcaf8d70a63","src/snapshots/diplomat__tests__cfged_method.snap":"f735ab3f9c338beb7762de5f218b42d25f380963b60fb1e3a47d7dae183a5725","src/snapshots/diplomat__tests__method_taking_mutable_slice.snap":"94126c7ed270265c83353cc873c802af6c51b8a78ec359e39288d1aa4846e316","src/snapshots/diplomat__tests__method_taking_mutable_str.snap":"6c3193b68d26dcf2dc253db1d51753bcc0c765b9539ffdb5b4f18bafdfaa2d99","src/snapshots/diplomat__tests__method_taking_owned_slice.snap":"c0c3ea6e8df486b2ba1c0bff7b929c0c35d040679771d36b6e9e05320b8d382b","src/snapshots/diplomat__tests__method_taking_owned_str.snap":"dec573d40843f43aee9e62fad3181bf9df96a98dcd48f10eaf1e2b171e635916","src/snapshots/diplomat__tests__method_taking_slice.snap":"230c4dc211c277ac59c9a12d76d0206584c69345a2ebff01830d1401e475c5ab","src/snapshots/diplomat__tests__method_taking_str.snap":"4890f099859da22e204924225fda6387b70db94830deba2a471a9847d5c3da15","src/snapshots/diplomat__tests__mod_with_enum.snap":"fce2835d02ba09b81876e5f8a7784e1f9f28e504ea8a494bbb2ce3792de61519","src/snapshots/diplomat__tests__mod_with_rust_result.snap":"2d7086a5bac5d19b361073474dfb09eb5a25b091ff676f7ea2c89fa168036aea","src/snapshots/diplomat__tests__mod_with_write_result.snap":"1504f06fc109438766a1f43eb4b3f5958bacd100dc79cfaae83c23702464a56d","src/snapshots/diplomat__tests__multilevel_borrows.snap":"261dd978df5cbae21b2f5401c258e8d911116df73a00b183483620f4e6df7dca","src/snapshots/diplomat__tests__self_params.snap":"c74ca0eacee2d4e084856fa298acecac55055055e401dc8f33329c0f98c638e9","src/snapshots/diplomat__tests__slices.snap":"a97b06199ce496029de6956c03aeeebba871a6830cb45f18fa1f88993b015a88","src/snapshots/diplomat__tests__traits.snap":"9bc1d385e30418060c26ca7be7e8b0cf74d03324d783af726ea60a33244cdc39","src/transparent_convert.rs":"eb2aedfee476f6e44ec928210b09276f148def171cd7e79a90078fec5dc29f36"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7e596373e8899ffb5a549413f56fce8d5eddf3ea76372318b335151c9ad53cab","Android.bp":"836cc65e24bf888cc6112c9bdbc2ddfbff77b8820f34aa345ebedaf0a44f1995","Cargo.toml":"02509f454fca27c8e1aa652e18b411705df567faf270a64f337442280853854b","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"8ede01764a80d5e820f7372f0fb491d029d761979e917d8557930d66d69a77ec","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"5dc712b8a38e9556c78cbe877fb42876d5ce2f967f3b82fc1c666b43f0d8f78b","rules.mk":"5b823d943a1e85dee806a4ab36677984471968a8b12604409ec423d39a82d982","src/enum_convert.rs":"579037dd3cfc4be9f65b64e31b0f650cda57667334c845c379ba3387707db639","src/lib.rs":"15f92576fa8d3cb8b9d8bb302630079d1d10aa2be7b46c2511ec26c28d402e41","src/snapshots/diplomat__tests__both_kinds_of_option.snap":"6518b5ad24b30e3b670096aaf13558341da7200bac45fe580a4cca3d154ff3ac","src/snapshots/diplomat__tests__callback_arguments.snap":"37fb6e72109eb517db2fb94239384851be5f09f93f6c357797fcebbad63fafff","src/snapshots/diplomat__tests__cfgd_struct.snap":"9ba8bef378d606cd1428de18344f1ff7da0d99e8edcba699b9a380e45479d65e","src/snapshots/diplomat__tests__cfged_method-2.snap":"d1b8685689cd094e3d5218536c81e7eb8304bdf78fbbe82aa2117dcaf8d70a63","src/snapshots/diplomat__tests__cfged_method.snap":"f735ab3f9c338beb7762de5f218b42d25f380963b60fb1e3a47d7dae183a5725","src/snapshots/diplomat__tests__method_taking_mutable_slice.snap":"94126c7ed270265c83353cc873c802af6c51b8a78ec359e39288d1aa4846e316","src/snapshots/diplomat__tests__method_taking_mutable_str.snap":"6c3193b68d26dcf2dc253db1d51753bcc0c765b9539ffdb5b4f18bafdfaa2d99","src/snapshots/diplomat__tests__method_taking_owned_slice.snap":"c0c3ea6e8df486b2ba1c0bff7b929c0c35d040679771d36b6e9e05320b8d382b","src/snapshots/diplomat__tests__method_taking_owned_str.snap":"dec573d40843f43aee9e62fad3181bf9df96a98dcd48f10eaf1e2b171e635916","src/snapshots/diplomat__tests__method_taking_slice.snap":"230c4dc211c277ac59c9a12d76d0206584c69345a2ebff01830d1401e475c5ab","src/snapshots/diplomat__tests__method_taking_str.snap":"4890f099859da22e204924225fda6387b70db94830deba2a471a9847d5c3da15","src/snapshots/diplomat__tests__mod_with_enum.snap":"fce2835d02ba09b81876e5f8a7784e1f9f28e504ea8a494bbb2ce3792de61519","src/snapshots/diplomat__tests__mod_with_rust_result.snap":"2d7086a5bac5d19b361073474dfb09eb5a25b091ff676f7ea2c89fa168036aea","src/snapshots/diplomat__tests__mod_with_write_result.snap":"1504f06fc109438766a1f43eb4b3f5958bacd100dc79cfaae83c23702464a56d","src/snapshots/diplomat__tests__multilevel_borrows.snap":"261dd978df5cbae21b2f5401c258e8d911116df73a00b183483620f4e6df7dca","src/snapshots/diplomat__tests__self_params.snap":"c74ca0eacee2d4e084856fa298acecac55055055e401dc8f33329c0f98c638e9","src/snapshots/diplomat__tests__slices.snap":"a97b06199ce496029de6956c03aeeebba871a6830cb45f18fa1f88993b015a88","src/snapshots/diplomat__tests__traits.snap":"9bc1d385e30418060c26ca7be7e8b0cf74d03324d783af726ea60a33244cdc39","src/transparent_convert.rs":"eb2aedfee476f6e44ec928210b09276f148def171cd7e79a90078fec5dc29f36"}}
\ No newline at end of file
diff --git a/crates/diplomat/Android.bp b/crates/diplomat/Android.bp
index 84cb390..cbd97d9 100644
--- a/crates/diplomat/Android.bp
+++ b/crates/diplomat/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/diplomat/cargo_embargo.json b/crates/diplomat/cargo_embargo.json
index fdb7cb5..6835019 100644
--- a/crates/diplomat/cargo_embargo.json
+++ b/crates/diplomat/cargo_embargo.json
@@ -6,5 +6,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/diplomat_core/.android-checksum.json b/crates/diplomat_core/.android-checksum.json
index 018fc56..348118b 100644
--- a/crates/diplomat_core/.android-checksum.json
+++ b/crates/diplomat_core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9dafa41748e879a7b89d6ddec3dc65214d84258fb0e4da3ec43065e1015cd007","Android.bp":"1c2dd684efd7e1683f8f7566bd08c9e5d9034010522b131bf6d14ee33d87a33a","Cargo.toml":"bf806e86c1f6ce09728919b174930596aee3060baab62e338762d9e9d8400ec9","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"d4bbf90d49c5f52267f47bad6cdaae1df8f5d9f334a21cb7e9e606093b6d901d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"958f9a85753bf1fa1d9dbd47b92221018d717240f25a8bf606d88b24bcd30416","rules.mk":"6ee7ab0e0d5dc019a7e45323d5799800e3f772fead77acc1a53018c13aa44b3d","src/ast/attrs.rs":"5ac3980b23f06ac06b16496c9901a607b885b4885c3054d3b09606946ea50681","src/ast/docs.rs":"88e00220085a483cb654b941e0690a1dd873255f59ffda273e665a2b989874de","src/ast/enums.rs":"8dd933a376b4eff09e1e220668017ebe16f7cf4e09efcfdd5159d5ddcdf00fd6","src/ast/idents.rs":"d2cb3fa5d145d1636118dd382c1471343d7e7c689b0dda87c03468625f0543b5","src/ast/lifetimes.rs":"cfdea993a45f4791fd297aed0987ed9f16c308bd70c320ef0bd02034010ee0d3","src/ast/methods.rs":"4028caeb4766ad20c8ecc7c09adb813bd5fbb221db7e210140987adbfbafc381","src/ast/mod.rs":"11d65106192daedc1156e475513ea8dd72cbcebb958d8bb41381d35aa86522c9","src/ast/modules.rs":"fc136b9b6da955093af6d05e1789bd8b6de4c22d69280d1fe36e15feecbbd5b2","src/ast/opaque.rs":"a2e81fa863c255999515185f7b403b8880922a58fa195198e18fb5fa746af946","src/ast/paths.rs":"a033da3954916f6b4a24c4e382576b32be93cee1cd1dfa372d9c4f20156a9864","src/ast/snapshots/diplomat_core__ast__attrs__tests__attr.snap":"d560f6ccba0c26c2fa6f372f28384464194634c06827f82c38209b935d0bd699","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-2.snap":"07a7758d9124039fac763b0ec832ada7ff68b7a54dadb4445293a9369160821e","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-3.snap":"6ae9d8505edd71fd026ad9e6e3382838647dde47e1ed86fafd52a7d19449bd33","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-4.snap":"6ae9d8505edd71fd026ad9e6e3382838647dde47e1ed86fafd52a7d19449bd33","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-5.snap":"f8348506c857981e5cd1cff690215b46fbfc097b12e2a7a9e5adaf4542b57dc4","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs.snap":"be8afaaf7346e69e7653db91c5b222af1a4c54ce0ca0341c1581dc4fca184be4","src/ast/snapshots/diplomat_core__ast__attrs__tests__rename-2.snap":"38d636a1f5cc48fc4655b30b47753919a65dbe64bb343c51f0db0389a30f2c84","src/ast/snapshots/diplomat_core__ast__attrs__tests__rename.snap":"38d636a1f5cc48fc4655b30b47753919a65dbe64bb343c51f0db0389a30f2c84","src/ast/snapshots/diplomat_core__ast__enums__tests__enum_with_discr.snap":"49822af14e8898641e5af907dc046e3d6abff1784ae2e5f0948a628f462f23a1","src/ast/snapshots/diplomat_core__ast__enums__tests__simple_enum.snap":"11d78b8b06a5b021dfde2420e718c2c86ab11a8781ac8a7d07ebd9b14d5b9602","src/ast/snapshots/diplomat_core__ast__methods__tests__cfged_method.snap":"4b583a1626f65d77b51ba30b18b786db5ef4499ff269eac38542e9defe1d72f1","src/ast/snapshots/diplomat_core__ast__methods__tests__nonstatic_methods-2.snap":"35843a16e1bb2c9943ca14e0f6366a6d548f325f9e76796523dea6eec8b8e572","src/ast/snapshots/diplomat_core__ast__methods__tests__nonstatic_methods.snap":"9f3b1e88def2e947b39c78c98d9f0bf14c8ca7f050fb07c9a6dbff0ce9cfcf9f","src/ast/snapshots/diplomat_core__ast__methods__tests__static_methods-2.snap":"38c82dd5a11ceedbe48fedd42ed1946029c246e9e7efa04326e8e3feacd8cda4","src/ast/snapshots/diplomat_core__ast__methods__tests__static_methods.snap":"9778bcfd3921df391c4ac06c6c9c2209276655ec14713635457056c19fbd5be4","src/ast/snapshots/diplomat_core__ast__modules__tests__import_in_non_diplomat_not_analyzed.snap":"2b3c0a5bebbf397e9c25638a4ed05c6eab16a101b52a0aa486d83fba9adc0720","src/ast/snapshots/diplomat_core__ast__modules__tests__method_visibility.snap":"98ff27c487b3fc1972f30bcbbac339139f9af94a6575102c8bee34e187500e01","src/ast/snapshots/diplomat_core__ast__modules__tests__simple_mod.snap":"90ddddbabbe40622fe91ef8da91a11dc260c82f766ddf4df2d6f032cce711cf7","src/ast/snapshots/diplomat_core__ast__structs__tests__simple_struct.snap":"96768de34fcd8ea6f97f46e4640a0352bf11b916f7943fe14f7c9e0021006a8c","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-2.snap":"b9129f8e4a73e534e2a4fcad1f6bfd4173383273a9e5e837a075bb4017f41e0c","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-3.snap":"01d174928534003996e696954703aa93b1d2f56ea3959b37b9954a25456fe638","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-4.snap":"21876d9a6ee712c393bfff33d88411cfe58e70cd67e1f6b543c7831948e75386","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-5.snap":"e5fadef9bfcd741f74fc02fe20c5ae34637accdc9eba2eb3c0d9f8109b1ac408","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-6.snap":"97bbeeb1cd9efc7ed419ee945a878c0be3841d4b477360ead875328fdb29c739","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-7.snap":"60f8e15979600a1fa9b0c7efec3068a57a2d9e5d9231088b2922fdc92811d26d","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes.snap":"f11b2e4daa8a7229b4fbc4dbac6816834b5367f4081b3d4c516a3bf99f5db76b","src/ast/snapshots/diplomat_core__ast__types__tests__typename_boxes-2.snap":"b2caf0ebb1085e65cb74cb2ee21cba8f5450e39309033da714d1147f55e581f0","src/ast/snapshots/diplomat_core__ast__types__tests__typename_boxes.snap":"ea241a0ed44e38134e24885382d060834536fcd8390e8924f3689cd855c81695","src/ast/snapshots/diplomat_core__ast__types__tests__typename_named.snap":"0f6e75b41366ba31a42a4c86e74b8ec48b8e7ab105a1360027a6798f6847df97","src/ast/snapshots/diplomat_core__ast__types__tests__typename_option-2.snap":"afb1c4876eb82939a122d64a507a0b5f3ca4388120ea867ffefeca8aa0419caf","src/ast/snapshots/diplomat_core__ast__types__tests__typename_option.snap":"cf8a34f9a60e7e4ac8c2eeb0b7c62847482309d14ed44c040bb8f138f529f526","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives-2.snap":"0b9230ce53d4db086ac4976867ebd093a080e209ef301d30ec08935b48bb6896","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives-3.snap":"6f0ab0393da6b01f42bad1e58e3702ce195346770cae3d8210b29fec8828c283","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives.snap":"ee01e60f3b3d732ee4cba03be0c79bb8d2a5a4b12ba4127cddd2fc2727a27a15","src/ast/snapshots/diplomat_core__ast__types__tests__typename_references-2.snap":"151fc890399b2f1d22a14903105117483364999d4306ca90a3c4f9120ad1a49d","src/ast/snapshots/diplomat_core__ast__types__tests__typename_references.snap":"be5f3ae253861195227e0bd7fc6221449d7a6240cc71ca5e8e9130aaac5e4cca","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-2.snap":"5fec5ee1501c4550eaa7c1ce235295f371cbe17333fb029a1f678f877f911c1e","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-3.snap":"52f970e28ba7839db1693726443a299c7f932eedefad89a885a191645f06b830","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-4.snap":"320f11fda8d120def05728fd6dd2e84042bfa1a8195caa94142640c6b9be2fa4","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result.snap":"c560eb23c0b5e67344e7588b507c1aa548381ca78a989ba41a5d6d37b3a44d91","src/ast/snapshots/diplomat_core__ast__validity__tests__lifetime_in_return.snap":"c89b6c0cca5bd544214d7b8ff473d969213289e11ca7f7b6d08b6f51503e4468","src/ast/structs.rs":"cabf8deb3b25b02e53c12cd03860e5404d91dba88d5119951e005d33d74d5eee","src/ast/traits.rs":"757ec49821a32f693eb4afa9390244e86a578cfc51873d0d57e52d74d16b43f2","src/ast/types.rs":"2e565bac1b789275701d05766735fdff6a18546a6d36a17f8b067358f442fcc9","src/environment.rs":"eb3027ab865457d0253e742ca52f674acee99f72d45a983b33c6485f42633589","src/hir/attrs.rs":"0cb976dd438bafe0ec76a77f4fa74e95f195a1c9d07c0bfb5d62a18d1a39393f","src/hir/defs.rs":"04ca2d631ac5917e3fbf618d9d154db88fe2cc73be9dd487289b77367b77a9e8","src/hir/elision.rs":"d71cddb053eda14128653d0a9a03ecd312907ebeeb54538c9bb71f4e5386bf57","src/hir/lifetimes.rs":"1ca90c67e225972cc4349667400d1034611e94abecd67158dfd3b4b0ee2383b6","src/hir/lowering.rs":"a190129f6f7e845673690aa865590ac9f3fb9fd8ad7a23884b12bdd126f8e7cc","src/hir/methods.rs":"cb5dc3ebd7252efe3ab96b5e88db0a586dc5bcee43905c2c4a16bc40311c9272","src/hir/methods/borrowing_field.rs":"8d4b8eab3cb161ddb771d327cf98b66396d5de40db7e20cb8beead58aed7344c","src/hir/methods/borrowing_param.rs":"41c2b0111d655226a55daa093363842076eae70413f1599dbd92d78822a40cb6","src/hir/mod.rs":"216ea1d3ce3cb2a7127ecc50f43aef6c3a44a2dd089882b7d995c2f9cea8ddf6","src/hir/paths.rs":"f1031ea49e573bdb8b9bcedb10ced81179380d299114ebbab64f0c9808faf05f","src/hir/primitives.rs":"93d52f6ef496051c1561f9d00d58b462bfb752085dd3dfd84d310ff1ed3180ac","src/hir/snapshots/diplomat_core__hir__attrs__tests__auto.snap":"2cf071682c620e836da60aa88f8f7d3ab795f243b14992001a0f37ef4c35fc11","src/hir/snapshots/diplomat_core__hir__attrs__tests__comparator.snap":"c8708974280e72957d05601f69c008590eca30f5c8344a7f9e68bd4f5ea1bd9f","src/hir/snapshots/diplomat_core__hir__attrs__tests__iterator.snap":"cb0a8e763a9799d9814626109105e308f25ba421e72824f7217a0f5cd0518e34","src/hir/snapshots/diplomat_core__hir__attrs__tests__unsupported_features.snap":"a1167949471515c81fe369ebf69442ec79dadf7fd580dad828e313a5e38b5d85","src/hir/snapshots/diplomat_core__hir__elision__tests__borrowing_fields.snap":"e320338939daed60f8c5af2017a3ff4757224437aefebb9dbafc2bc2e014fa3f","src/hir/snapshots/diplomat_core__hir__elision__tests__elision_in_struct.snap":"37cefc3093a801205217429c3d42b5a6dfe1a50580077641ddaf2168510e047c","src/hir/snapshots/diplomat_core__hir__elision__tests__simple_mod.snap":"7a5b09308aaf5339edbd58b8059919fbb2ae5b58536f8f5f53a2a21276e8c5f3","src/hir/snapshots/diplomat_core__hir__type_context__tests__basic_lowering.snap":"2c301b9cf25f8e66566c8ea19121199a8b6dfb57e03c3d556a1447d2d08de8c9","src/hir/snapshots/diplomat_core__hir__type_context__tests__lifetime_in_return.snap":"7b10b9def24b0435d6b3889156dd7bda9706afbc0d0e26b821e8f2f057ce7faf","src/hir/snapshots/diplomat_core__hir__type_context__tests__non_opaque_move.snap":"86b475c55ab1130901b52a08438eea69f066057b79c35e34c64d3ca26182d45e","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_checks_with_error.snap":"a501cdd3f1869fe6977166c9a25c78ba113d169dbe396c7ef28d2e9cda514795","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_checks_with_safe_use.snap":"f0798b0c35a9737e22fd12982aa8103a16cf41770c3bfec0ee8275202bb5fbe4","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_ffi.snap":"c6a7ea43d06e0e05ad657ebf9ddd1ac6e9088d57ddcfc4e958df590f51b97dfc","src/hir/snapshots/diplomat_core__hir__type_context__tests__option.snap":"35f6f13ccc2a9422df499cd7dcc88d27afbfa8f60e3cd3a781eb1cd251e9564c","src/hir/snapshots/diplomat_core__hir__type_context__tests__option_invalid.snap":"e58a6c2fa6121e6b865d5bed39a8014651e152c5bd86fc53b5f3dc318bffd8e5","src/hir/snapshots/diplomat_core__hir__type_context__tests__option_valid.snap":"de35f4688b545c2069d6e21f2a7de61ac91fb9c9833fd2175b5dd9d9927afbd0","src/hir/snapshots/diplomat_core__hir__type_context__tests__required_implied_bounds.snap":"78b3d1af6a11e9c7716352ce609b8d8595cf9b197ec75d6d8adb7fb02723f91d","src/hir/snapshots/diplomat_core__hir__type_context__tests__struct_forbidden.snap":"705c90764215473972a8dcb1a204659ab58d71872c73470da8b50d3e0c54d188","src/hir/snapshots/diplomat_core__hir__type_context__tests__zst_non_opaque.snap":"a0b3d437ff0eb6ca44a1147fe1df5418e019366b0af15e8338e273c4400539f5","src/hir/ty_position.rs":"c21f94a375301c8485d35ae47a5a0bc35c32e8c07c025ccc5bee079bf03278c6","src/hir/type_context.rs":"cece219d98256e2490004c678712ff008d61e854e290962a4f079ba80ca1b24c","src/hir/types.rs":"f626ace150addfeb493ae9bc25a2f2bb5267bd8056de2a6d64cb176f92c5c468","src/lib.rs":"7223d5d1973615128a2e6eb39deb6eeb7c5ff9c206371fd6abca69f4b30417fb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9dafa41748e879a7b89d6ddec3dc65214d84258fb0e4da3ec43065e1015cd007","Android.bp":"1c2dd684efd7e1683f8f7566bd08c9e5d9034010522b131bf6d14ee33d87a33a","Cargo.toml":"bf806e86c1f6ce09728919b174930596aee3060baab62e338762d9e9d8400ec9","LICENSE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","LICENSE-APACHE":"c96314154285c10cace9fbdd749bb99df065bc09c718ca11eb3c9bcc3fedc823","METADATA":"d4bbf90d49c5f52267f47bad6cdaae1df8f5d9f334a21cb7e9e606093b6d901d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"5dc712b8a38e9556c78cbe877fb42876d5ce2f967f3b82fc1c666b43f0d8f78b","rules.mk":"6ee7ab0e0d5dc019a7e45323d5799800e3f772fead77acc1a53018c13aa44b3d","src/ast/attrs.rs":"5ac3980b23f06ac06b16496c9901a607b885b4885c3054d3b09606946ea50681","src/ast/docs.rs":"88e00220085a483cb654b941e0690a1dd873255f59ffda273e665a2b989874de","src/ast/enums.rs":"8dd933a376b4eff09e1e220668017ebe16f7cf4e09efcfdd5159d5ddcdf00fd6","src/ast/idents.rs":"d2cb3fa5d145d1636118dd382c1471343d7e7c689b0dda87c03468625f0543b5","src/ast/lifetimes.rs":"cfdea993a45f4791fd297aed0987ed9f16c308bd70c320ef0bd02034010ee0d3","src/ast/methods.rs":"4028caeb4766ad20c8ecc7c09adb813bd5fbb221db7e210140987adbfbafc381","src/ast/mod.rs":"11d65106192daedc1156e475513ea8dd72cbcebb958d8bb41381d35aa86522c9","src/ast/modules.rs":"fc136b9b6da955093af6d05e1789bd8b6de4c22d69280d1fe36e15feecbbd5b2","src/ast/opaque.rs":"a2e81fa863c255999515185f7b403b8880922a58fa195198e18fb5fa746af946","src/ast/paths.rs":"a033da3954916f6b4a24c4e382576b32be93cee1cd1dfa372d9c4f20156a9864","src/ast/snapshots/diplomat_core__ast__attrs__tests__attr.snap":"d560f6ccba0c26c2fa6f372f28384464194634c06827f82c38209b935d0bd699","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-2.snap":"07a7758d9124039fac763b0ec832ada7ff68b7a54dadb4445293a9369160821e","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-3.snap":"6ae9d8505edd71fd026ad9e6e3382838647dde47e1ed86fafd52a7d19449bd33","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-4.snap":"6ae9d8505edd71fd026ad9e6e3382838647dde47e1ed86fafd52a7d19449bd33","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs-5.snap":"f8348506c857981e5cd1cff690215b46fbfc097b12e2a7a9e5adaf4542b57dc4","src/ast/snapshots/diplomat_core__ast__attrs__tests__cfgs.snap":"be8afaaf7346e69e7653db91c5b222af1a4c54ce0ca0341c1581dc4fca184be4","src/ast/snapshots/diplomat_core__ast__attrs__tests__rename-2.snap":"38d636a1f5cc48fc4655b30b47753919a65dbe64bb343c51f0db0389a30f2c84","src/ast/snapshots/diplomat_core__ast__attrs__tests__rename.snap":"38d636a1f5cc48fc4655b30b47753919a65dbe64bb343c51f0db0389a30f2c84","src/ast/snapshots/diplomat_core__ast__enums__tests__enum_with_discr.snap":"49822af14e8898641e5af907dc046e3d6abff1784ae2e5f0948a628f462f23a1","src/ast/snapshots/diplomat_core__ast__enums__tests__simple_enum.snap":"11d78b8b06a5b021dfde2420e718c2c86ab11a8781ac8a7d07ebd9b14d5b9602","src/ast/snapshots/diplomat_core__ast__methods__tests__cfged_method.snap":"4b583a1626f65d77b51ba30b18b786db5ef4499ff269eac38542e9defe1d72f1","src/ast/snapshots/diplomat_core__ast__methods__tests__nonstatic_methods-2.snap":"35843a16e1bb2c9943ca14e0f6366a6d548f325f9e76796523dea6eec8b8e572","src/ast/snapshots/diplomat_core__ast__methods__tests__nonstatic_methods.snap":"9f3b1e88def2e947b39c78c98d9f0bf14c8ca7f050fb07c9a6dbff0ce9cfcf9f","src/ast/snapshots/diplomat_core__ast__methods__tests__static_methods-2.snap":"38c82dd5a11ceedbe48fedd42ed1946029c246e9e7efa04326e8e3feacd8cda4","src/ast/snapshots/diplomat_core__ast__methods__tests__static_methods.snap":"9778bcfd3921df391c4ac06c6c9c2209276655ec14713635457056c19fbd5be4","src/ast/snapshots/diplomat_core__ast__modules__tests__import_in_non_diplomat_not_analyzed.snap":"2b3c0a5bebbf397e9c25638a4ed05c6eab16a101b52a0aa486d83fba9adc0720","src/ast/snapshots/diplomat_core__ast__modules__tests__method_visibility.snap":"98ff27c487b3fc1972f30bcbbac339139f9af94a6575102c8bee34e187500e01","src/ast/snapshots/diplomat_core__ast__modules__tests__simple_mod.snap":"90ddddbabbe40622fe91ef8da91a11dc260c82f766ddf4df2d6f032cce711cf7","src/ast/snapshots/diplomat_core__ast__structs__tests__simple_struct.snap":"96768de34fcd8ea6f97f46e4640a0352bf11b916f7943fe14f7c9e0021006a8c","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-2.snap":"b9129f8e4a73e534e2a4fcad1f6bfd4173383273a9e5e837a075bb4017f41e0c","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-3.snap":"01d174928534003996e696954703aa93b1d2f56ea3959b37b9954a25456fe638","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-4.snap":"21876d9a6ee712c393bfff33d88411cfe58e70cd67e1f6b543c7831948e75386","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-5.snap":"e5fadef9bfcd741f74fc02fe20c5ae34637accdc9eba2eb3c0d9f8109b1ac408","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-6.snap":"97bbeeb1cd9efc7ed419ee945a878c0be3841d4b477360ead875328fdb29c739","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes-7.snap":"60f8e15979600a1fa9b0c7efec3068a57a2d9e5d9231088b2922fdc92811d26d","src/ast/snapshots/diplomat_core__ast__types__tests__lifetimes.snap":"f11b2e4daa8a7229b4fbc4dbac6816834b5367f4081b3d4c516a3bf99f5db76b","src/ast/snapshots/diplomat_core__ast__types__tests__typename_boxes-2.snap":"b2caf0ebb1085e65cb74cb2ee21cba8f5450e39309033da714d1147f55e581f0","src/ast/snapshots/diplomat_core__ast__types__tests__typename_boxes.snap":"ea241a0ed44e38134e24885382d060834536fcd8390e8924f3689cd855c81695","src/ast/snapshots/diplomat_core__ast__types__tests__typename_named.snap":"0f6e75b41366ba31a42a4c86e74b8ec48b8e7ab105a1360027a6798f6847df97","src/ast/snapshots/diplomat_core__ast__types__tests__typename_option-2.snap":"afb1c4876eb82939a122d64a507a0b5f3ca4388120ea867ffefeca8aa0419caf","src/ast/snapshots/diplomat_core__ast__types__tests__typename_option.snap":"cf8a34f9a60e7e4ac8c2eeb0b7c62847482309d14ed44c040bb8f138f529f526","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives-2.snap":"0b9230ce53d4db086ac4976867ebd093a080e209ef301d30ec08935b48bb6896","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives-3.snap":"6f0ab0393da6b01f42bad1e58e3702ce195346770cae3d8210b29fec8828c283","src/ast/snapshots/diplomat_core__ast__types__tests__typename_primitives.snap":"ee01e60f3b3d732ee4cba03be0c79bb8d2a5a4b12ba4127cddd2fc2727a27a15","src/ast/snapshots/diplomat_core__ast__types__tests__typename_references-2.snap":"151fc890399b2f1d22a14903105117483364999d4306ca90a3c4f9120ad1a49d","src/ast/snapshots/diplomat_core__ast__types__tests__typename_references.snap":"be5f3ae253861195227e0bd7fc6221449d7a6240cc71ca5e8e9130aaac5e4cca","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-2.snap":"5fec5ee1501c4550eaa7c1ce235295f371cbe17333fb029a1f678f877f911c1e","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-3.snap":"52f970e28ba7839db1693726443a299c7f932eedefad89a885a191645f06b830","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result-4.snap":"320f11fda8d120def05728fd6dd2e84042bfa1a8195caa94142640c6b9be2fa4","src/ast/snapshots/diplomat_core__ast__types__tests__typename_result.snap":"c560eb23c0b5e67344e7588b507c1aa548381ca78a989ba41a5d6d37b3a44d91","src/ast/snapshots/diplomat_core__ast__validity__tests__lifetime_in_return.snap":"c89b6c0cca5bd544214d7b8ff473d969213289e11ca7f7b6d08b6f51503e4468","src/ast/structs.rs":"cabf8deb3b25b02e53c12cd03860e5404d91dba88d5119951e005d33d74d5eee","src/ast/traits.rs":"757ec49821a32f693eb4afa9390244e86a578cfc51873d0d57e52d74d16b43f2","src/ast/types.rs":"2e565bac1b789275701d05766735fdff6a18546a6d36a17f8b067358f442fcc9","src/environment.rs":"eb3027ab865457d0253e742ca52f674acee99f72d45a983b33c6485f42633589","src/hir/attrs.rs":"0cb976dd438bafe0ec76a77f4fa74e95f195a1c9d07c0bfb5d62a18d1a39393f","src/hir/defs.rs":"04ca2d631ac5917e3fbf618d9d154db88fe2cc73be9dd487289b77367b77a9e8","src/hir/elision.rs":"d71cddb053eda14128653d0a9a03ecd312907ebeeb54538c9bb71f4e5386bf57","src/hir/lifetimes.rs":"1ca90c67e225972cc4349667400d1034611e94abecd67158dfd3b4b0ee2383b6","src/hir/lowering.rs":"a190129f6f7e845673690aa865590ac9f3fb9fd8ad7a23884b12bdd126f8e7cc","src/hir/methods.rs":"cb5dc3ebd7252efe3ab96b5e88db0a586dc5bcee43905c2c4a16bc40311c9272","src/hir/methods/borrowing_field.rs":"8d4b8eab3cb161ddb771d327cf98b66396d5de40db7e20cb8beead58aed7344c","src/hir/methods/borrowing_param.rs":"41c2b0111d655226a55daa093363842076eae70413f1599dbd92d78822a40cb6","src/hir/mod.rs":"216ea1d3ce3cb2a7127ecc50f43aef6c3a44a2dd089882b7d995c2f9cea8ddf6","src/hir/paths.rs":"f1031ea49e573bdb8b9bcedb10ced81179380d299114ebbab64f0c9808faf05f","src/hir/primitives.rs":"93d52f6ef496051c1561f9d00d58b462bfb752085dd3dfd84d310ff1ed3180ac","src/hir/snapshots/diplomat_core__hir__attrs__tests__auto.snap":"2cf071682c620e836da60aa88f8f7d3ab795f243b14992001a0f37ef4c35fc11","src/hir/snapshots/diplomat_core__hir__attrs__tests__comparator.snap":"c8708974280e72957d05601f69c008590eca30f5c8344a7f9e68bd4f5ea1bd9f","src/hir/snapshots/diplomat_core__hir__attrs__tests__iterator.snap":"cb0a8e763a9799d9814626109105e308f25ba421e72824f7217a0f5cd0518e34","src/hir/snapshots/diplomat_core__hir__attrs__tests__unsupported_features.snap":"a1167949471515c81fe369ebf69442ec79dadf7fd580dad828e313a5e38b5d85","src/hir/snapshots/diplomat_core__hir__elision__tests__borrowing_fields.snap":"e320338939daed60f8c5af2017a3ff4757224437aefebb9dbafc2bc2e014fa3f","src/hir/snapshots/diplomat_core__hir__elision__tests__elision_in_struct.snap":"37cefc3093a801205217429c3d42b5a6dfe1a50580077641ddaf2168510e047c","src/hir/snapshots/diplomat_core__hir__elision__tests__simple_mod.snap":"7a5b09308aaf5339edbd58b8059919fbb2ae5b58536f8f5f53a2a21276e8c5f3","src/hir/snapshots/diplomat_core__hir__type_context__tests__basic_lowering.snap":"2c301b9cf25f8e66566c8ea19121199a8b6dfb57e03c3d556a1447d2d08de8c9","src/hir/snapshots/diplomat_core__hir__type_context__tests__lifetime_in_return.snap":"7b10b9def24b0435d6b3889156dd7bda9706afbc0d0e26b821e8f2f057ce7faf","src/hir/snapshots/diplomat_core__hir__type_context__tests__non_opaque_move.snap":"86b475c55ab1130901b52a08438eea69f066057b79c35e34c64d3ca26182d45e","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_checks_with_error.snap":"a501cdd3f1869fe6977166c9a25c78ba113d169dbe396c7ef28d2e9cda514795","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_checks_with_safe_use.snap":"f0798b0c35a9737e22fd12982aa8103a16cf41770c3bfec0ee8275202bb5fbe4","src/hir/snapshots/diplomat_core__hir__type_context__tests__opaque_ffi.snap":"c6a7ea43d06e0e05ad657ebf9ddd1ac6e9088d57ddcfc4e958df590f51b97dfc","src/hir/snapshots/diplomat_core__hir__type_context__tests__option.snap":"35f6f13ccc2a9422df499cd7dcc88d27afbfa8f60e3cd3a781eb1cd251e9564c","src/hir/snapshots/diplomat_core__hir__type_context__tests__option_invalid.snap":"e58a6c2fa6121e6b865d5bed39a8014651e152c5bd86fc53b5f3dc318bffd8e5","src/hir/snapshots/diplomat_core__hir__type_context__tests__option_valid.snap":"de35f4688b545c2069d6e21f2a7de61ac91fb9c9833fd2175b5dd9d9927afbd0","src/hir/snapshots/diplomat_core__hir__type_context__tests__required_implied_bounds.snap":"78b3d1af6a11e9c7716352ce609b8d8595cf9b197ec75d6d8adb7fb02723f91d","src/hir/snapshots/diplomat_core__hir__type_context__tests__struct_forbidden.snap":"705c90764215473972a8dcb1a204659ab58d71872c73470da8b50d3e0c54d188","src/hir/snapshots/diplomat_core__hir__type_context__tests__zst_non_opaque.snap":"a0b3d437ff0eb6ca44a1147fe1df5418e019366b0af15e8338e273c4400539f5","src/hir/ty_position.rs":"c21f94a375301c8485d35ae47a5a0bc35c32e8c07c025ccc5bee079bf03278c6","src/hir/type_context.rs":"cece219d98256e2490004c678712ff008d61e854e290962a4f079ba80ca1b24c","src/hir/types.rs":"f626ace150addfeb493ae9bc25a2f2bb5267bd8056de2a6d64cb176f92c5c468","src/lib.rs":"7223d5d1973615128a2e6eb39deb6eeb7c5ff9c206371fd6abca69f4b30417fb"}}
\ No newline at end of file
diff --git a/crates/diplomat_core/cargo_embargo.json b/crates/diplomat_core/cargo_embargo.json
index fdb7cb5..6835019 100644
--- a/crates/diplomat_core/cargo_embargo.json
+++ b/crates/diplomat_core/cargo_embargo.json
@@ -6,5 +6,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/displaydoc/.android-checksum.json b/crates/displaydoc/.android-checksum.json
index 0799f26..6cbee15 100644
--- a/crates/displaydoc/.android-checksum.json
+++ b/crates/displaydoc/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"50b0ea17936d141e038f1791dbed18e15a881a3cc9e10f70c72bfff59e0067cf","Android.bp":"1eba8988c6ef79f7eb885aca2f9a643c228cde0e66412f093f5bdd40c2578d25","CHANGELOG.md":"b66b08c0abf19239cd735d300d380987061c5232a05c8dba5435eb7be9bc8774","Cargo.lock":"a2b1c2148bfee6aa8f786642bf454196e956778ce9ef660b23814df06c58baa2","Cargo.toml":"46a369d10b334fefffb085013527f4f2cfc8dadc3e2673d6549527c70397047e","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"39b7d6eae31006cd862c6eeb37d71ab024ec8b7af47fdc9bed444a841977c6da","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2a72b932025e4f75f62221053d23538fb2b46c5df36928a15ba14477eefa91b2","README.tpl":"8f3f0c4609c015e7665c2a1a4747ea5f286273c49965e7e3d63336f6494b0a7d","cargo_embargo.json":"c96dee9f52d6efd20fe199ed37352f4717188454f95bc1532710a71833d6bbc2","examples/simple.rs":"48048c9b7abcea207c24f36b9ad5c78f7a69c101403c2ad4cc7bd7810d9e2e93","src/attr.rs":"a5095303fc8b422874aff74ffe30a0757d753a9b7f6f81e9b357b66eeee52029","src/expand.rs":"594239fa25d9c2bc4054d42322f680ebf589983fe6074303d5ce70945ab47c27","src/fmt.rs":"5f779c7af7ead7271951b9a34c81fb7d10cea8d9e1363620132933cc3d992264","src/lib.rs":"9c696a5eea644288690072877b12369c86939f1778fb2d9fea0864e484b93a6b","tests/compile_tests.rs":"97597a5a48affcac28261e836c302379d3ea8481181a5386028310abf45e9f38","tests/happy.rs":"867fb8192235bbb53e98c2d188255fd3a5941698aabf85f7cf6ba1ba03c907de","tests/no_std/enum_prefix.rs":"81a544f7e1954880b023ef6868bad4136618b28a8e06bceb298a9585d3839ed4","tests/no_std/enum_prefix_missing.rs":"28f74bf98ff3d94736c3943f8cb0f412fc89cea0d596e3293118da87358a24eb","tests/no_std/enum_prefix_missing.stderr":"e3f0b201af978751b67882b3dae8cf38bdec8e76434d5974535b45724faf5491","tests/no_std/multi_line.rs":"68d179409798c53ab9ed81a065f85273ce150d24fdc2bca08663279c0ea966f4","tests/no_std/multi_line.stderr":"9d31d70d11f5f0f84385908e8f824bf6fbbb43dd0c0bfa897a77030863fff5c7","tests/no_std/multi_line_allow.rs":"c6912a8bd12c18bbd7e1fc09362f9954c8bc0947f693e53dc4b6acc09434a206","tests/no_std/with.rs":"6257b11ba3b58ab86eda311b2361aeb9a55eaea197afcd6997bee0703962b102","tests/no_std/without.rs":"8f7a5b39ced1c7d931b110aa6fcc6340a1234939c55ebd87c225c94b79671730","tests/no_std/without.stderr":"35878aa4d25f268865f6e46a874473192a060b37c99b92643554b1865f0c9356","tests/num_in_field.rs":"0ba36ef26264207c1b2863ac9f7c6b1942077e471b671c8e908a3dbf0c2e3ff9","tests/std/enum_prefix.rs":"ddcabb92568b0e132c4f310b71ca6602afa5fb234c6edd0f9e160f7606ae70f5","tests/std/enum_prefix_missing.rs":"6ba562b236f9227edd39fff2409a5ab0b1ab09ec6fedbb5734208efce09ddbc8","tests/std/enum_prefix_missing.stderr":"f2c9575d6681c35994d46e9681e7ab520171cb3c9ef113a6d8391ffd7f71dc18","tests/std/multi_line.rs":"68d179409798c53ab9ed81a065f85273ce150d24fdc2bca08663279c0ea966f4","tests/std/multi_line.stderr":"65c564cebc43c23948dbd68979e7bea0222804062eed9577655512d28643f5e1","tests/std/multi_line_allow.rs":"885d4f544dc443f7676504c886c39fd9cc67996839ae6acaeea2d5746b427a27","tests/std/multiple.rs":"4a209cadafb5e91e803c0c8bfd314bbfefd0efec3911d7f29fcb6f363d17d6ea","tests/std/without.rs":"8f7a5b39ced1c7d931b110aa6fcc6340a1234939c55ebd87c225c94b79671730","tests/std/without.stderr":"c65207ae6082b9b2541d3d4bead7c12de5eeb8513e0c85891d57a06e3f0fd939","tests/variantless.rs":"08409d06e19f4f845718e8db950f2742ea8a0c4fe1037690c7dc55d24b1d0b79","update-readme.sh":"ba53d4f488a683a7541c9684f1a0965f9c61c149125629b5fcaf7a76a6c2b1cf"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"50b0ea17936d141e038f1791dbed18e15a881a3cc9e10f70c72bfff59e0067cf","Android.bp":"cb7ef0db27d13145619cc403153386ae0bccafea47d6ade2d1945ba23e7a5c61","CHANGELOG.md":"b66b08c0abf19239cd735d300d380987061c5232a05c8dba5435eb7be9bc8774","Cargo.lock":"a2b1c2148bfee6aa8f786642bf454196e956778ce9ef660b23814df06c58baa2","Cargo.toml":"46a369d10b334fefffb085013527f4f2cfc8dadc3e2673d6549527c70397047e","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"39b7d6eae31006cd862c6eeb37d71ab024ec8b7af47fdc9bed444a841977c6da","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2a72b932025e4f75f62221053d23538fb2b46c5df36928a15ba14477eefa91b2","README.tpl":"8f3f0c4609c015e7665c2a1a4747ea5f286273c49965e7e3d63336f6494b0a7d","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/simple.rs":"48048c9b7abcea207c24f36b9ad5c78f7a69c101403c2ad4cc7bd7810d9e2e93","src/attr.rs":"a5095303fc8b422874aff74ffe30a0757d753a9b7f6f81e9b357b66eeee52029","src/expand.rs":"594239fa25d9c2bc4054d42322f680ebf589983fe6074303d5ce70945ab47c27","src/fmt.rs":"5f779c7af7ead7271951b9a34c81fb7d10cea8d9e1363620132933cc3d992264","src/lib.rs":"9c696a5eea644288690072877b12369c86939f1778fb2d9fea0864e484b93a6b","tests/compile_tests.rs":"97597a5a48affcac28261e836c302379d3ea8481181a5386028310abf45e9f38","tests/happy.rs":"867fb8192235bbb53e98c2d188255fd3a5941698aabf85f7cf6ba1ba03c907de","tests/no_std/enum_prefix.rs":"81a544f7e1954880b023ef6868bad4136618b28a8e06bceb298a9585d3839ed4","tests/no_std/enum_prefix_missing.rs":"28f74bf98ff3d94736c3943f8cb0f412fc89cea0d596e3293118da87358a24eb","tests/no_std/enum_prefix_missing.stderr":"e3f0b201af978751b67882b3dae8cf38bdec8e76434d5974535b45724faf5491","tests/no_std/multi_line.rs":"68d179409798c53ab9ed81a065f85273ce150d24fdc2bca08663279c0ea966f4","tests/no_std/multi_line.stderr":"9d31d70d11f5f0f84385908e8f824bf6fbbb43dd0c0bfa897a77030863fff5c7","tests/no_std/multi_line_allow.rs":"c6912a8bd12c18bbd7e1fc09362f9954c8bc0947f693e53dc4b6acc09434a206","tests/no_std/with.rs":"6257b11ba3b58ab86eda311b2361aeb9a55eaea197afcd6997bee0703962b102","tests/no_std/without.rs":"8f7a5b39ced1c7d931b110aa6fcc6340a1234939c55ebd87c225c94b79671730","tests/no_std/without.stderr":"35878aa4d25f268865f6e46a874473192a060b37c99b92643554b1865f0c9356","tests/num_in_field.rs":"0ba36ef26264207c1b2863ac9f7c6b1942077e471b671c8e908a3dbf0c2e3ff9","tests/std/enum_prefix.rs":"ddcabb92568b0e132c4f310b71ca6602afa5fb234c6edd0f9e160f7606ae70f5","tests/std/enum_prefix_missing.rs":"6ba562b236f9227edd39fff2409a5ab0b1ab09ec6fedbb5734208efce09ddbc8","tests/std/enum_prefix_missing.stderr":"f2c9575d6681c35994d46e9681e7ab520171cb3c9ef113a6d8391ffd7f71dc18","tests/std/multi_line.rs":"68d179409798c53ab9ed81a065f85273ce150d24fdc2bca08663279c0ea966f4","tests/std/multi_line.stderr":"65c564cebc43c23948dbd68979e7bea0222804062eed9577655512d28643f5e1","tests/std/multi_line_allow.rs":"885d4f544dc443f7676504c886c39fd9cc67996839ae6acaeea2d5746b427a27","tests/std/multiple.rs":"4a209cadafb5e91e803c0c8bfd314bbfefd0efec3911d7f29fcb6f363d17d6ea","tests/std/without.rs":"8f7a5b39ced1c7d931b110aa6fcc6340a1234939c55ebd87c225c94b79671730","tests/std/without.stderr":"c65207ae6082b9b2541d3d4bead7c12de5eeb8513e0c85891d57a06e3f0fd939","tests/variantless.rs":"08409d06e19f4f845718e8db950f2742ea8a0c4fe1037690c7dc55d24b1d0b79","update-readme.sh":"ba53d4f488a683a7541c9684f1a0965f9c61c149125629b5fcaf7a76a6c2b1cf"}}
\ No newline at end of file
diff --git a/crates/displaydoc/Android.bp b/crates/displaydoc/Android.bp
index c2be875..1cba8fd 100644
--- a/crates/displaydoc/Android.bp
+++ b/crates/displaydoc/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/displaydoc/cargo_embargo.json b/crates/displaydoc/cargo_embargo.json
index fca634f..b6c35c7 100644
--- a/crates/displaydoc/cargo_embargo.json
+++ b/crates/displaydoc/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/document-features/.android-checksum.json b/crates/document-features/.android-checksum.json
index 3855c3e..b8ce5cb 100644
--- a/crates/document-features/.android-checksum.json
+++ b/crates/document-features/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"98f1fac197500515eccea11121314a545ae38c72a3f878e5a735732329e7dc89","Android.bp":"f5dd95cc5ffebdd9c88c289447528154d09b19730a2eeb45f28772cfee10dd68","CHANGELOG.md":"32fd16bfd089ffd1093a6fcb6c8b78207cf02766d5c83e91b02a523410e79a3a","Cargo.toml":"e6a8ec3b155f90742578b85940e428e601f17e643725254d76f08757b95a2cc1","LICENSE":"a7648aadcd79ee8e5112bcddbc0b41042b2de6b8c7cb7e1d9a9c4e8d67b4719f","LICENSE-APACHE":"a7648aadcd79ee8e5112bcddbc0b41042b2de6b8c7cb7e1d9a9c4e8d67b4719f","METADATA":"32008ce235c7465fe2d6a39b8d229f9be8c71360c0b235705485c4daf588e96b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c8c3e5726564e8a434f78c0e19d6c6988a0d37b28ce766b62068f37fd97c25ac","cargo_embargo.json":"9881210ae4fd138062a95a90d4c915f2877e65a215df535d99c963be0aa3c1ce","lib.rs":"c343558d4a5425b29720eb36acd4be025b75824fb889f10f5825dd9b58e44c34","rustfmt.toml":"dcd5b2e724cc53cd53998853b560f4cbc650f9304d64a55facaaa8564480e5ea","tests/self-doc.rs":"987227dd1b86020050b7b8d6cf073f7c605baf46664cdfe151b69963e9ac9d8c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"98f1fac197500515eccea11121314a545ae38c72a3f878e5a735732329e7dc89","Android.bp":"f5dd95cc5ffebdd9c88c289447528154d09b19730a2eeb45f28772cfee10dd68","CHANGELOG.md":"32fd16bfd089ffd1093a6fcb6c8b78207cf02766d5c83e91b02a523410e79a3a","Cargo.toml":"e6a8ec3b155f90742578b85940e428e601f17e643725254d76f08757b95a2cc1","LICENSE":"a7648aadcd79ee8e5112bcddbc0b41042b2de6b8c7cb7e1d9a9c4e8d67b4719f","LICENSE-APACHE":"a7648aadcd79ee8e5112bcddbc0b41042b2de6b8c7cb7e1d9a9c4e8d67b4719f","METADATA":"32008ce235c7465fe2d6a39b8d229f9be8c71360c0b235705485c4daf588e96b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c8c3e5726564e8a434f78c0e19d6c6988a0d37b28ce766b62068f37fd97c25ac","cargo_embargo.json":"fad28e61444d51733ce8719ac8eea2bb6aeb216c782425baf7c5d2ca94e9d9f0","lib.rs":"c343558d4a5425b29720eb36acd4be025b75824fb889f10f5825dd9b58e44c34","rustfmt.toml":"dcd5b2e724cc53cd53998853b560f4cbc650f9304d64a55facaaa8564480e5ea","tests/self-doc.rs":"987227dd1b86020050b7b8d6cf073f7c605baf46664cdfe151b69963e9ac9d8c"}}
\ No newline at end of file
diff --git a/crates/document-features/cargo_embargo.json b/crates/document-features/cargo_embargo.json
index 0c167f3..56402e5 100644
--- a/crates/document-features/cargo_embargo.json
+++ b/crates/document-features/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/drm-ffi/.android-checksum.json b/crates/drm-ffi/.android-checksum.json
index 521c67a..593b70b 100644
--- a/crates/drm-ffi/.android-checksum.json
+++ b/crates/drm-ffi/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7bdc2ccd0ecd95a020630341e64f01502ede18371e808efa9a755d22885eb186","Android.bp":"9248c7e06c43d3c3d2c92741a0e3e7add3b647b964a0d384a4f371a941d3b3bf","Cargo.toml":"440e17072ab09e910da4b8d510c1a9cb55924d14ec1d24f468f4912a8d5bcd5d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"f67e2294b8d77a5eddd99302604a87df0ec514266ab2c80a24cf68ea4929fa15","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/gem.rs":"a6b414ac00651970e46031626dce021182f9f9bb9a3a10646410de306ad0939e","src/ioctl.rs":"09c6226e1644f17147e2be052ca8597b5ccc52918a2b76512fbbc79dcc468cb0","src/lib.rs":"97bd32903a1a71eb8cf996a44520eb246951b6e633c46e42467d271a90df99ac","src/mode.rs":"868793162bcf14ba04ff945afde81776a1f764e85ffe2dcbc10f39e3724417a5","src/syncobj.rs":"f676f0ab659e71dfe9d5bb1010c91a6a2d48fabcca0118a54e275c534ac418af","src/utils.rs":"305285d984cb58180b481546319d2c4714b6a9769897a2a522b5b725ddfe435a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7bdc2ccd0ecd95a020630341e64f01502ede18371e808efa9a755d22885eb186","Android.bp":"f94c1f4206be085c506a5ab87ddcfc90f426bd3d5bc573e052b310e37e346c92","Cargo.toml":"440e17072ab09e910da4b8d510c1a9cb55924d14ec1d24f468f4912a8d5bcd5d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"f67e2294b8d77a5eddd99302604a87df0ec514266ab2c80a24cf68ea4929fa15","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/gem.rs":"a6b414ac00651970e46031626dce021182f9f9bb9a3a10646410de306ad0939e","src/ioctl.rs":"09c6226e1644f17147e2be052ca8597b5ccc52918a2b76512fbbc79dcc468cb0","src/lib.rs":"97bd32903a1a71eb8cf996a44520eb246951b6e633c46e42467d271a90df99ac","src/mode.rs":"868793162bcf14ba04ff945afde81776a1f764e85ffe2dcbc10f39e3724417a5","src/syncobj.rs":"f676f0ab659e71dfe9d5bb1010c91a6a2d48fabcca0118a54e275c534ac418af","src/utils.rs":"305285d984cb58180b481546319d2c4714b6a9769897a2a522b5b725ddfe435a"}}
\ No newline at end of file
diff --git a/crates/drm-ffi/Android.bp b/crates/drm-ffi/Android.bp
index 03a5509..284b6cb 100644
--- a/crates/drm-ffi/Android.bp
+++ b/crates/drm-ffi/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/drm-ffi/cargo_embargo.json b/crates/drm-ffi/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/drm-ffi/cargo_embargo.json
+++ b/crates/drm-ffi/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/drm-fourcc/.android-checksum.json b/crates/drm-fourcc/.android-checksum.json
index 5350cca..7b09bef 100644
--- a/crates/drm-fourcc/.android-checksum.json
+++ b/crates/drm-fourcc/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ef118096bdcfa13e70a09b50937776128a5b161b6a82c5087b163af1b1249e99","Android.bp":"b7e8a74b9356d6cd9abc87b56574658f2f62a69113ff1d680c8eb05994f92085","Cargo.toml":"863c403348c4c03d5a686f2a465557757a63d260f3093094e67f98c09a7ded4d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"b37db2870ac75ab1693dc7871c9c3813e4b5f2840d1bfa0eed80be7edd32fe95","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8d57a2ab631814eaed3939adf1f4de09edc1e2c80e151499f91bdb29529b66be","TEST_MAPPING":"06de2297c898eb9f992271d658c6371dfdbfb94f930455e570133495c500b26e","build.rs":"a4f42292baeb301a200a36cd551ef45bc5b3bfe4151a90832cdcb345c382de5b","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","patches/LICENSE.patch":"b74af8fb51e0d1bd514aa76c62ac778b406aa0036b82a170362cefd10bf7c0eb","src/as_enum.rs":"6786cf302dc4964f200aa89998dca8561354f897fff2c232ed959129b65a5d70","src/consts.rs":"e6f551c9792e86b08b560493cb6df600c2b8c0e3970dec53acdbd5f96f2f30f1","src/lib.rs":"f922e20e97406fb01bce5611002d2da374192406710be52b820fa485154ee864"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ef118096bdcfa13e70a09b50937776128a5b161b6a82c5087b163af1b1249e99","Android.bp":"c334eb133390cf986efc99c6c5cc83bb384bed9ba6e7a24ad540bd9cf0d30590","Cargo.toml":"863c403348c4c03d5a686f2a465557757a63d260f3093094e67f98c09a7ded4d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"b37db2870ac75ab1693dc7871c9c3813e4b5f2840d1bfa0eed80be7edd32fe95","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8d57a2ab631814eaed3939adf1f4de09edc1e2c80e151499f91bdb29529b66be","TEST_MAPPING":"06de2297c898eb9f992271d658c6371dfdbfb94f930455e570133495c500b26e","build.rs":"a4f42292baeb301a200a36cd551ef45bc5b3bfe4151a90832cdcb345c382de5b","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","patches/LICENSE.patch":"b74af8fb51e0d1bd514aa76c62ac778b406aa0036b82a170362cefd10bf7c0eb","src/as_enum.rs":"6786cf302dc4964f200aa89998dca8561354f897fff2c232ed959129b65a5d70","src/consts.rs":"e6f551c9792e86b08b560493cb6df600c2b8c0e3970dec53acdbd5f96f2f30f1","src/lib.rs":"f922e20e97406fb01bce5611002d2da374192406710be52b820fa485154ee864"}}
\ No newline at end of file
diff --git a/crates/drm-fourcc/Android.bp b/crates/drm-fourcc/Android.bp
index 8b529a7..c91930e 100644
--- a/crates/drm-fourcc/Android.bp
+++ b/crates/drm-fourcc/Android.bp
@@ -50,4 +50,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/drm-fourcc/cargo_embargo.json b/crates/drm-fourcc/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/drm-fourcc/cargo_embargo.json
+++ b/crates/drm-fourcc/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/drm/.android-checksum.json b/crates/drm/.android-checksum.json
index 6dc6ffc..729e634 100644
--- a/crates/drm/.android-checksum.json
+++ b/crates/drm/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3c147ef7e5b0a6cbcc43bffbf89ec8646b3f1a85f11cacd90d24020b40818c0a","Android.bp":"7f6df45fb0d98f3ef5cda689db32a648e5a655ea312644e52240bbb881f38fbb","Cargo.lock":"686da571eb9b352c3febcf4980293ab1b360acb139238e8a906523b16d2728a0","Cargo.toml":"dc49384534378f8a1b7e52b49298e6405b68f3d64d87818eb1794e55169ebf82","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"3bdf876903885100fe78db06cb1cf04c1d0ed0c169e234c93a452390aa9befe0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ce8181d5a89663eef91ba286e847aae22ae3a934ec5a211f4d084682f6e111df","cargo_embargo.json":"c998c44184a9f0f60dd35cc33905e5f5363f971e4b251ff70a5212c354d445ca","examples/atomic_modeset.rs":"7ecc010bf0383c2a222832bb4a4276b74f548db8aa6920bd311bf97b951a078e","examples/basic.rs":"7d79b293b7890bf1217ce750fd0c380bdcf1c7ecff215ffbd3dbc3ee22a30321","examples/ffi.rs":"aa3877e27804f805e03f5c045832968871fccfb0c00de1e9094e0432849da5f5","examples/images/1.png":"1ea0debbb1085fe79af82aa0f51fe9e7bd876f68b72d96281ca79791be20c2d9","examples/images/2.png":"4a2921f480988b5b410368df43154e48a8bbaeb7f2956812886021d14319fae9","examples/images/3.png":"705233c323b62344eea668684cf2bc595f05756a8b1cf20ed095f812f132eff2","examples/images/4.png":"873d3289821740df8ef4ed4a0cbd37119f7a5abbb343952e4bfdfb52a0575d3d","examples/kms_interactive.rs":"73fea8a6311b27f01d1ec9b7e51964c803be7e748fbdda3cecd0b141682dfcc1","examples/legacy_modeset.rs":"fd2a88d751ab7e6a3023a0bdc7d44251418aaff89fbbe0d06d263df107b73ba7","examples/list_modes.rs":"10c92dee79ea9c5bf7a967cfdbc268a1a7b1391f3910b63a28de17ed696aca23","examples/properties.rs":"0ee487a01d851b8c70e05c7f5542af93042806816b2791af6070cd938f95aa24","examples/resources.rs":"3f23e8c628dc23be1b355280ce60c9e61379a0b559ec682fe2b7d4e3f9f8d6d7","examples/syncobj.rs":"55dc39a8c80f7d5083817b4f163a0e64cfe4d7da82742c47275d6a3ee215385f","examples/utils/mod.rs":"bca0faf411b133a8d3af541b7205f28419d0f38e7626a7af046378526a0df423","src/buffer/mod.rs":"da74c088967eed89c6829daf4f192139c3a385d13bc36e32e9b13c60aa950b11","src/control/atomic.rs":"0143bdbd1e6921553723df31455c1618c9a4212c50bc83a157af32ad2b371f06","src/control/connector.rs":"47a1218fbef113492f0b63ba170491dc8f0387211dfdf4558d6b4f80974316bd","src/control/crtc.rs":"3a14646b5a3c2bb9e9a1b160e3e4017297f8fd3ab2e0c1f6bda3cf802fde7fc9","src/control/dumbbuffer.rs":"78fc429e203c5e5688c10927b9d395e064fd398c39d8d3433e94329a7642f753","src/control/encoder.rs":"0ab2eb3b367c7703e7cfddb3aac0b5abba4909fcbd9f4ff67a4ff5fc3931ef05","src/control/framebuffer.rs":"b4e90ff1af2561348f3cfaeeacb86f74b985e5747cd6e13e7cb6c6dd064568a2","src/control/mod.rs":"305bf50d9e4d4fa4595fadef1cae804da821b40f79256b489beb83595888dc32","src/control/plane.rs":"5e140c604303606ab880f9ecd724bdf401cd679941884c18d6a83ba8f22164ea","src/control/property.rs":"a8d860241d4f66d894a8f0604477b1f3d7af079e937877f0d48d63d1e5219b4d","src/control/syncobj.rs":"90003a84e9221a3c9576272a40930182535dc729f1186aac5abfb027da3b32bd","src/lib.rs":"899f6574c7f4f9f378b61dcd8a8d8722ac8a4bd1019b1c5f0eebe949d6533ee1","src/node/constants.rs":"31e20faa77b0bb3cb2cb844cb4468260277dce30693b5bd44e2a3b7b86e4d2c9","src/node/mod.rs":"17af9bcfbb397dde2f6a5e129ef30106732a87c49b8c01ff6aa9fbbaee744d9d","src/util.rs":"4ead0b258e403c16e55beba6576c395aff9330cb0cbcd58c5721d9a03b35c8e7"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3c147ef7e5b0a6cbcc43bffbf89ec8646b3f1a85f11cacd90d24020b40818c0a","Android.bp":"810e8368b4e588d451d41e91aec8c966af0d38ad04c5752a6501ba8d64fef3a7","Cargo.lock":"686da571eb9b352c3febcf4980293ab1b360acb139238e8a906523b16d2728a0","Cargo.toml":"dc49384534378f8a1b7e52b49298e6405b68f3d64d87818eb1794e55169ebf82","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"3bdf876903885100fe78db06cb1cf04c1d0ed0c169e234c93a452390aa9befe0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ce8181d5a89663eef91ba286e847aae22ae3a934ec5a211f4d084682f6e111df","cargo_embargo.json":"f2aa4a577b8cdb10785e9544674f3bc4756c96f33bcb30795901c5d6fdc82e65","examples/atomic_modeset.rs":"7ecc010bf0383c2a222832bb4a4276b74f548db8aa6920bd311bf97b951a078e","examples/basic.rs":"7d79b293b7890bf1217ce750fd0c380bdcf1c7ecff215ffbd3dbc3ee22a30321","examples/ffi.rs":"aa3877e27804f805e03f5c045832968871fccfb0c00de1e9094e0432849da5f5","examples/images/1.png":"1ea0debbb1085fe79af82aa0f51fe9e7bd876f68b72d96281ca79791be20c2d9","examples/images/2.png":"4a2921f480988b5b410368df43154e48a8bbaeb7f2956812886021d14319fae9","examples/images/3.png":"705233c323b62344eea668684cf2bc595f05756a8b1cf20ed095f812f132eff2","examples/images/4.png":"873d3289821740df8ef4ed4a0cbd37119f7a5abbb343952e4bfdfb52a0575d3d","examples/kms_interactive.rs":"73fea8a6311b27f01d1ec9b7e51964c803be7e748fbdda3cecd0b141682dfcc1","examples/legacy_modeset.rs":"fd2a88d751ab7e6a3023a0bdc7d44251418aaff89fbbe0d06d263df107b73ba7","examples/list_modes.rs":"10c92dee79ea9c5bf7a967cfdbc268a1a7b1391f3910b63a28de17ed696aca23","examples/properties.rs":"0ee487a01d851b8c70e05c7f5542af93042806816b2791af6070cd938f95aa24","examples/resources.rs":"3f23e8c628dc23be1b355280ce60c9e61379a0b559ec682fe2b7d4e3f9f8d6d7","examples/syncobj.rs":"55dc39a8c80f7d5083817b4f163a0e64cfe4d7da82742c47275d6a3ee215385f","examples/utils/mod.rs":"bca0faf411b133a8d3af541b7205f28419d0f38e7626a7af046378526a0df423","src/buffer/mod.rs":"da74c088967eed89c6829daf4f192139c3a385d13bc36e32e9b13c60aa950b11","src/control/atomic.rs":"0143bdbd1e6921553723df31455c1618c9a4212c50bc83a157af32ad2b371f06","src/control/connector.rs":"47a1218fbef113492f0b63ba170491dc8f0387211dfdf4558d6b4f80974316bd","src/control/crtc.rs":"3a14646b5a3c2bb9e9a1b160e3e4017297f8fd3ab2e0c1f6bda3cf802fde7fc9","src/control/dumbbuffer.rs":"78fc429e203c5e5688c10927b9d395e064fd398c39d8d3433e94329a7642f753","src/control/encoder.rs":"0ab2eb3b367c7703e7cfddb3aac0b5abba4909fcbd9f4ff67a4ff5fc3931ef05","src/control/framebuffer.rs":"b4e90ff1af2561348f3cfaeeacb86f74b985e5747cd6e13e7cb6c6dd064568a2","src/control/mod.rs":"305bf50d9e4d4fa4595fadef1cae804da821b40f79256b489beb83595888dc32","src/control/plane.rs":"5e140c604303606ab880f9ecd724bdf401cd679941884c18d6a83ba8f22164ea","src/control/property.rs":"a8d860241d4f66d894a8f0604477b1f3d7af079e937877f0d48d63d1e5219b4d","src/control/syncobj.rs":"90003a84e9221a3c9576272a40930182535dc729f1186aac5abfb027da3b32bd","src/lib.rs":"899f6574c7f4f9f378b61dcd8a8d8722ac8a4bd1019b1c5f0eebe949d6533ee1","src/node/constants.rs":"31e20faa77b0bb3cb2cb844cb4468260277dce30693b5bd44e2a3b7b86e4d2c9","src/node/mod.rs":"17af9bcfbb397dde2f6a5e129ef30106732a87c49b8c01ff6aa9fbbaee744d9d","src/util.rs":"4ead0b258e403c16e55beba6576c395aff9330cb0cbcd58c5721d9a03b35c8e7"}}
\ No newline at end of file
diff --git a/crates/drm/Android.bp b/crates/drm/Android.bp
index 724ca91..19f63c9 100644
--- a/crates/drm/Android.bp
+++ b/crates/drm/Android.bp
@@ -34,4 +34,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/drm/cargo_embargo.json b/crates/drm/cargo_embargo.json
index ebae879..ba027f8 100644
--- a/crates/drm/cargo_embargo.json
+++ b/crates/drm/cargo_embargo.json
@@ -2,5 +2,6 @@
"run_cargo": false,
"module_name_overrides": {
"libdrm": "libdrm_rust"
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/enum-as-inner/.android-checksum.json b/crates/enum-as-inner/.android-checksum.json
index 3b455b1..b895a44 100644
--- a/crates/enum-as-inner/.android-checksum.json
+++ b/crates/enum-as-inner/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"555518ca2891b13434ef610ae35e27849468c62512759a50d8a29e1d346258d1","Android.bp":"ee3654e81f78f5f36fdb774c5607fc0dad3cb31ac11fd00a7c9a46f8e17e2100","CHANGELOG.md":"59a1391c97edfcf026f39ab097ae881f726686029b615fa100a9595dd92f8bd3","CODE_OF_CONDUCT.md":"4bf31215f594eed9ef0cf96c14f72c4476f3446585e56a5dbd13f75b15bf4ea3","Cargo.toml":"1197c600a83b280d57099398a8f3c4b719ac55a1697ff5dc0029d04bde5cb2e1","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"e732f34be1ae1fc0c3842991ce7a0abf264efec13c7a3a3ea3650fb7fb209708","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"840ba18c9ca3bbce6bfe18376758305da0490ac57ba97e72f39680889a37954e","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","copyright.txt":"02c2a247d59b255ca71854c2de0da0cde2df3ab3ad5ffaa941fceb125a62af5d","src/lib.rs":"9b8b52c0b313ba68f3469184b769101b12de634af6f18ede360c26e4d42b40ab","tests/basic.rs":"c2720f30fad7700bef0f7d3abf777bbefb626b12dd8eadbc7bca22b13bbb9f0f","tests/generics.rs":"84e8fd853e957c4696c7c5dbf9dc95dff691ddf137a3a5a6824fa5082e61aa88","tests/named.rs":"1004770a5d249501abba9321fc3b1304fd20373f626e5fbfc37ade5a5767c825","tests/snake_case.rs":"d32ae0176c085e04f6d48c10d75b567da6e489c0b27202870fd72f2d4412cfcb","tests/unit.rs":"df2de9a75203cb7f456cd15b04e61165a9ff166573f6a8646b0f3396ff609858","tests/unnamed.rs":"161aa1b5d012e9e0339598c12ee08abd7fe23a993e4e44d75747c8be3efebf4a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"555518ca2891b13434ef610ae35e27849468c62512759a50d8a29e1d346258d1","Android.bp":"cb44a4a3eadafa75e03df6d263281f3e439eafc5a3955f3a72cdf17626691125","CHANGELOG.md":"59a1391c97edfcf026f39ab097ae881f726686029b615fa100a9595dd92f8bd3","CODE_OF_CONDUCT.md":"4bf31215f594eed9ef0cf96c14f72c4476f3446585e56a5dbd13f75b15bf4ea3","Cargo.toml":"1197c600a83b280d57099398a8f3c4b719ac55a1697ff5dc0029d04bde5cb2e1","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"e732f34be1ae1fc0c3842991ce7a0abf264efec13c7a3a3ea3650fb7fb209708","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"840ba18c9ca3bbce6bfe18376758305da0490ac57ba97e72f39680889a37954e","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","copyright.txt":"02c2a247d59b255ca71854c2de0da0cde2df3ab3ad5ffaa941fceb125a62af5d","src/lib.rs":"9b8b52c0b313ba68f3469184b769101b12de634af6f18ede360c26e4d42b40ab","tests/basic.rs":"c2720f30fad7700bef0f7d3abf777bbefb626b12dd8eadbc7bca22b13bbb9f0f","tests/generics.rs":"84e8fd853e957c4696c7c5dbf9dc95dff691ddf137a3a5a6824fa5082e61aa88","tests/named.rs":"1004770a5d249501abba9321fc3b1304fd20373f626e5fbfc37ade5a5767c825","tests/snake_case.rs":"d32ae0176c085e04f6d48c10d75b567da6e489c0b27202870fd72f2d4412cfcb","tests/unit.rs":"df2de9a75203cb7f456cd15b04e61165a9ff166573f6a8646b0f3396ff609858","tests/unnamed.rs":"161aa1b5d012e9e0339598c12ee08abd7fe23a993e4e44d75747c8be3efebf4a"}}
\ No newline at end of file
diff --git a/crates/enum-as-inner/Android.bp b/crates/enum-as-inner/Android.bp
index a2bae16..ef3579d 100644
--- a/crates/enum-as-inner/Android.bp
+++ b/crates/enum-as-inner/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/enum-as-inner/cargo_embargo.json b/crates/enum-as-inner/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/enum-as-inner/cargo_embargo.json
+++ b/crates/enum-as-inner/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/enum-primitive-derive/.android-checksum.json b/crates/enum-primitive-derive/.android-checksum.json
new file mode 100644
index 0000000..a6f2a84
--- /dev/null
+++ b/crates/enum-primitive-derive/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"d181e85d3deb2460aea0d5908ef4b1d3b7a9af80c959ba86ab360ba0da29df63","Android.bp":"814e8e0a82cbc2ac33a63581611464c78c7cbfe4ec8624f5e64f4a3e8e70b0a9","CHANGELOG.md":"835d0a180b9fd8cc6d081ac91f677231dd4b5a695b3d6d687056f38845a723a4","Cargo.toml":"5baabf780e86522e73147fd245499408a34bc68479634cab71e6c36c05791662","LICENSE":"7228d2a7098284e9480a9f191455aabd0fe1dfb81ecbe1232b44bf5011abd38f","METADATA":"df4b9a8b6135fd13be3df26031caa1e9209ec591a274834722980cb5cb2a1fb3","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2938fd3828872281eed0e4ff6d5b4ca583ebaa199dc129e13fd79cf91fcc0a31","cargo_embargo.json":"9a4b9e47683e1a6fc764b578f222c6271932aeb74af7bf217d239d47d3908f30","src/lib.rs":"fc1293f033912c24cf2c13342115bfa42d66280d23fcc64c87953e8a0cd9824c"}}
\ No newline at end of file
diff --git a/crates/enum-primitive-derive/.cargo-checksum.json b/crates/enum-primitive-derive/.cargo-checksum.json
new file mode 100644
index 0000000..3907355
--- /dev/null
+++ b/crates/enum-primitive-derive/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"75976e8cf25b724bd1db6d176d3bd98ad19554a2d64a57aaffa1b14c64a55f7a","Cargo.toml":"dbc01e3ae9176b49e34a5902257d6a0d6d678f40f5f142eab6d85e70ddec94c2","LICENSE":"819e0555b295079201b0670bb3302855303bdbbcc739f3819b13e1b3d2ec03bb","README.md":"31bc604ff61bc67f95ed9c910df9f6e0b39715d9217c443066c2f205228f14a4","src/lib.rs":"e0091d5bba0343e065b479b9a880c2ad0cd83fce91be12ccff421ea93e074328"},"package":"ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c"}
\ No newline at end of file
diff --git a/crates/enum-primitive-derive/Android.bp b/crates/enum-primitive-derive/Android.bp
new file mode 100644
index 0000000..5f8a65e
--- /dev/null
+++ b/crates/enum-primitive-derive/Android.bp
@@ -0,0 +1,35 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_enum-primitive-derive_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_enum-primitive-derive_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-MIT"],
+ license_text: ["LICENSE"],
+}
+
+rust_proc_macro {
+ name: "libenum_primitive_derive",
+ crate_name: "enum_primitive_derive",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.3.0",
+ crate_root: "src/lib.rs",
+ edition: "2018",
+ rustlibs: [
+ "libnum_traits",
+ "libquote",
+ "libsyn",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/enum-primitive-derive/CHANGELOG.md b/crates/enum-primitive-derive/CHANGELOG.md
new file mode 100644
index 0000000..33ad10c
--- /dev/null
+++ b/crates/enum-primitive-derive/CHANGELOG.md
@@ -0,0 +1,33 @@
+# ChangeLog
+
+## 0.2.2
+### Changed
+- Switch to using core instead of std for no-std support
+
+## 0.2.1
+### Added
+- support TryFrom
+
+## 0.2.0 (yanked)
+### Changed
+- Upgrade [syn](https://crates.io/crates/syn) and [quote](https://crates.io/crates/quote) to 1.0
+- add a better diagnostic for the case where a discriminant isn't specified for
+ an enum
+- Move unnecessary [`num-traits`](https://crates.io/crates/num-traits) dependency to `dev-dependencies`
+- Migrate to Rust 2018 edition
+
+## 0.1.2
+
+### Changed
+
+- drop `extern crate core;` as core is unused
+
+## 0.1.1
+
+### Added
+
+- Support for more casts on discriminants
+
+## 0.1.0
+
+Initial version
diff --git a/crates/enum-primitive-derive/Cargo.toml b/crates/enum-primitive-derive/Cargo.toml
new file mode 100644
index 0000000..86abfb9
--- /dev/null
+++ b/crates/enum-primitive-derive/Cargo.toml
@@ -0,0 +1,46 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+rust-version = "1.56"
+name = "enum-primitive-derive"
+version = "0.3.0"
+authors = ["Doug Goldstein <[email protected]>"]
+description = "enum_primitive implementation using procedural macros to have a custom derive"
+homepage = "https://gitlab.com/cardoe/enum-primitive-derive"
+readme = "README.md"
+keywords = [
+ "derive",
+ "enum",
+ "fromprimitive",
+ "primitive",
+ "ffi",
+]
+categories = ["rust-patterns"]
+license = "MIT"
+repository = "https://gitlab.com/cardoe/enum-primitive-derive.git"
+
+[lib]
+proc-macro = true
+
+[dependencies.num-traits]
+version = "0.2"
+default-features = false
+
+[dependencies.quote]
+version = "1"
+
+[dependencies.syn]
+version = "2"
+
+[badges.gitlab]
+repository = "cardoe/enum-primitive-derive"
diff --git a/crates/enum-primitive-derive/LICENSE b/crates/enum-primitive-derive/LICENSE
new file mode 100644
index 0000000..94486be
--- /dev/null
+++ b/crates/enum-primitive-derive/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2017 Doug Goldstein <[email protected]>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+“Software”), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/crates/enum-primitive-derive/METADATA b/crates/enum-primitive-derive/METADATA
new file mode 100644
index 0000000..279b970
--- /dev/null
+++ b/crates/enum-primitive-derive/METADATA
@@ -0,0 +1,17 @@
+name: "enum-primitive-derive"
+description: "enum_primitive implementation using procedural macros to have a custom derive"
+third_party {
+ version: "0.3.0"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 21
+ }
+ homepage: "https://crates.io/crates/enum-primitive-derive"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/enum-primitive-derive/enum-primitive-derive-0.3.0.crate"
+ version: "0.3.0"
+ }
+}
diff --git a/crates/enum-primitive-derive/MODULE_LICENSE_MIT b/crates/enum-primitive-derive/MODULE_LICENSE_MIT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/enum-primitive-derive/MODULE_LICENSE_MIT
diff --git a/crates/enum-primitive-derive/README.md b/crates/enum-primitive-derive/README.md
new file mode 100644
index 0000000..837d0a5
--- /dev/null
+++ b/crates/enum-primitive-derive/README.md
@@ -0,0 +1,110 @@
+[](https://gitlab.com/cardoe/enum-primitive-derive/commits/master)
+[]()
+[](https://docs.rs/enum-primitive-derive)
+[](https://crates.io/crates/enum-primitive-derive)
+[](https://crates.io/crates/enum-primitive-derive)
+[](https://crates.io/crates/enum-primitive-derive)
+
+This is a custom derive, using procedural macros, implementation of
+[enum_primitive](https://crates.io/crates/enum_primitive).
+
+MSRV is 1.56.0
+
+## Documentation
+
+[https://docs.rs/enum-primitive-derive/](https://docs.rs/enum-primitive-derive/)
+
+## Usage
+
+Add the following to `Cargo.toml`:
+
+```
+[dependencies]
+enum-primitive-derive = "^0.1"
+num-traits = "^0.1"
+```
+
+Then to your code add:
+
+```rust
+#[macro_use]
+extern crate enum_primitive_derive;
+extern crate num_traits;
+
+#[derive(Primitive)]
+enum Variant {
+ Value = 1,
+ Another = 2,
+}
+```
+
+To be really useful you need `use num_traits::FromPrimitive` or
+`use num_traits::ToPrimitive` or both. You will then be able to
+use
+[num_traits::FromPrimitive](https://docs.rs/num-traits/latest/num_traits/cast/trait.FromPrimitive.html)
+and/or
+[num_traits::ToPrimitive](https://docs.rs/num-traits/latest/num_traits/cast/trait.ToPrimitive.html)
+on your enum.
+
+## Full Example
+
+```rust
+#[macro_use]
+extern crate enum_primitive_derive;
+extern crate num_traits;
+
+use num_traits::{FromPrimitive, ToPrimitive};
+
+#[derive(Primitive)]
+enum Foo {
+ Bar = 32,
+ Dead = 42,
+ Beef = 50,
+}
+
+fn main() {
+ assert_eq!(Foo::from_i32(32), Some(Foo::Bar));
+ assert_eq!(Foo::from_i32(42), Some(Foo::Dead));
+ assert_eq!(Foo::from_i64(50), Some(Foo::Beef));
+ assert_eq!(Foo::from_isize(17), None);
+
+ let bar = Foo::Bar;
+ assert_eq!(bar.to_i32(), Some(32));
+
+ let dead = Foo::Dead;
+ assert_eq!(dead.to_isize(), Some(42));
+}
+```
+
+# Complex Example
+
+In this case we attempt to use values created by
+[bindgen](https://crates.io/crates/bindgen).
+
+```rust
+#[macro_use]
+extern crate enum_primitive_derive;
+extern crate num_traits;
+
+use num_traits::{FromPrimitive, ToPrimitive};
+
+pub const ABC: ::std::os::raw::c_uint = 1;
+pub const DEF: ::std::os::raw::c_uint = 2;
+pub const GHI: ::std::os::raw::c_uint = 4;
+
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Primitive)]
+enum BindGenLike {
+ ABC = ABC as isize,
+ DEF = DEF as isize,
+ GHI = GHI as isize,
+}
+
+fn main() {
+ assert_eq!(BindGenLike::from_isize(4), Some(BindGenLike::GHI));
+ assert_eq!(BindGenLike::from_u32(2), Some(BindGenLike::DEF));
+ assert_eq!(BindGenLike::from_u32(8), None);
+
+ let abc = BindGenLike::ABC;
+ assert_eq!(abc.to_u32(), Some(1));
+}
+```
diff --git a/crates/enum-primitive-derive/cargo_embargo.json b/crates/enum-primitive-derive/cargo_embargo.json
new file mode 100644
index 0000000..8f777be
--- /dev/null
+++ b/crates/enum-primitive-derive/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
diff --git a/crates/enum-primitive-derive/src/lib.rs b/crates/enum-primitive-derive/src/lib.rs
new file mode 100644
index 0000000..d50395a
--- /dev/null
+++ b/crates/enum-primitive-derive/src/lib.rs
@@ -0,0 +1,278 @@
+// Copyright (c) 2017 Doug Goldstein <[email protected]>
+
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// “Software”), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+//! This crate provides a custom derive `Primitive` that helps people
+//! providing native Rust bindings to C code by allowing a C-like `enum`
+//! declaration to convert to its primitve values and back from them. You
+//! can selectively include `num_traits::ToPrimitive` and
+//! `num_traits::FromPrimitive` to get these features.
+//!
+//! # Example
+//!
+//! ```rust
+//! use enum_primitive_derive::Primitive;
+//! use num_traits::{FromPrimitive, ToPrimitive};
+//!
+//! #[derive(Debug, Eq, PartialEq, Primitive)]
+//! enum Foo {
+//! Bar = 32,
+//! Dead = 42,
+//! Beef = 50,
+//! }
+//!
+//! fn main() {
+//! assert_eq!(Foo::from_i32(32), Some(Foo::Bar));
+//! assert_eq!(Foo::from_i32(42), Some(Foo::Dead));
+//! assert_eq!(Foo::from_i64(50), Some(Foo::Beef));
+//! assert_eq!(Foo::from_isize(17), None);
+//!
+//! let bar = Foo::Bar;
+//! assert_eq!(bar.to_i32(), Some(32));
+//!
+//! let dead = Foo::Dead;
+//! assert_eq!(dead.to_isize(), Some(42));
+//! }
+//! ```
+//!
+//! # Complex Example
+//!
+//! ```rust
+//! use enum_primitive_derive::Primitive;
+//! use num_traits::{FromPrimitive, ToPrimitive};
+//!
+//! pub const ABC: ::std::os::raw::c_uint = 1;
+//! pub const DEF: ::std::os::raw::c_uint = 2;
+//! pub const GHI: ::std::os::raw::c_uint = 4;
+//!
+//! #[derive(Clone, Copy, Debug, Eq, PartialEq, Primitive)]
+//! enum BindGenLike {
+//! ABC = ABC as isize,
+//! DEF = DEF as isize,
+//! GHI = GHI as isize,
+//! }
+//!
+//! fn main() {
+//! assert_eq!(BindGenLike::from_isize(4), Some(BindGenLike::GHI));
+//! assert_eq!(BindGenLike::from_u32(2), Some(BindGenLike::DEF));
+//! assert_eq!(BindGenLike::from_u32(8), None);
+//!
+//! let abc = BindGenLike::ABC;
+//! assert_eq!(abc.to_u32(), Some(1));
+//! }
+//! ```
+//!
+//! # TryFrom Example
+//!
+//! ```rust
+//! use enum_primitive_derive::Primitive;
+//! use core::convert::TryFrom;
+//!
+//! #[derive(Debug, Eq, PartialEq, Primitive)]
+//! enum Foo {
+//! Bar = 32,
+//! Dead = 42,
+//! Beef = 50,
+//! }
+//!
+//! fn main() {
+//! let bar = Foo::try_from(32);
+//! assert_eq!(bar, Ok(Foo::Bar));
+//!
+//! let dead = Foo::try_from(42);
+//! assert_eq!(dead, Ok(Foo::Dead));
+//!
+//! let unknown = Foo::try_from(12);
+//! assert!(unknown.is_err());
+//! }
+//! ```
+
+extern crate proc_macro;
+
+use proc_macro::TokenStream;
+
+/// Provides implementation of `num_traits::ToPrimitive` and
+/// `num_traits::FromPrimitive`
+#[proc_macro_derive(Primitive)]
+pub fn primitive(input: TokenStream) -> TokenStream {
+ let ast = syn::parse_macro_input!(input as syn::DeriveInput);
+ impl_primitive(&ast)
+}
+
+fn impl_primitive(ast: &syn::DeriveInput) -> TokenStream {
+ let name = &ast.ident;
+
+ // Check if derive(Primitive) was specified for a struct
+ if let syn::Data::Enum(ref variant) = ast.data {
+ let (var_u64, dis_u64): (Vec<_>, Vec<_>) = variant
+ .variants
+ .iter()
+ .map(|v| {
+ match v.fields {
+ syn::Fields::Unit => (),
+ _ => panic!("#[derive(Primitive) can only operate on C-like enums"),
+ }
+ if v.discriminant.is_none() {
+ panic!(
+ "#[derive(Primitive) requires C-like enums with \
+ discriminants for all enum variants"
+ );
+ }
+
+ let discrim = match v.discriminant.clone().map(|(_eq, expr)| expr).unwrap() {
+ syn::Expr::Cast(real) => *real.expr,
+ orig => orig,
+ };
+ (v.ident.clone(), discrim)
+ })
+ .unzip();
+
+ // quote!{} needs this to be a vec since its in #( )*
+ let enum_u64 = vec![name.clone(); variant.variants.len()];
+
+ // can't reuse variables in quote!{} body
+ let var_i64 = var_u64.clone();
+ let dis_i64 = dis_u64.clone();
+ let enum_i64 = enum_u64.clone();
+
+ let to_name = name.clone();
+ let to_enum_u64 = enum_u64.clone();
+ let to_var_u64 = var_u64.clone();
+ let to_dis_u64 = dis_u64.clone();
+
+ let to_enum_i64 = enum_u64.clone();
+ let to_var_i64 = var_u64.clone();
+ let to_dis_i64 = dis_u64.clone();
+
+ TokenStream::from(quote::quote! {
+ impl ::num_traits::FromPrimitive for #name {
+ fn from_u64(val: u64) -> Option<Self> {
+ match val as _ {
+ #( #dis_u64 => Some(#enum_u64::#var_u64), )*
+ _ => None,
+ }
+ }
+
+ fn from_i64(val: i64) -> Option<Self> {
+ match val as _ {
+ #( #dis_i64 => Some(#enum_i64::#var_i64), )*
+ _ => None,
+ }
+ }
+ }
+
+ impl ::num_traits::ToPrimitive for #to_name {
+ fn to_u64(&self) -> Option<u64> {
+ match *self {
+ #( #to_enum_u64::#to_var_u64 => Some(#to_dis_u64 as u64), )*
+ }
+ }
+
+ fn to_i64(&self) -> Option<i64> {
+ match *self {
+ #( #to_enum_i64::#to_var_i64 => Some(#to_dis_i64 as i64), )*
+ }
+ }
+ }
+
+ impl ::core::convert::TryFrom<u64> for #to_name {
+ type Error = &'static str;
+
+ fn try_from(value: u64) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<u64>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_u64(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<u32> for #to_name {
+ type Error = &'static str;
+
+ fn try_from(value: u32) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<u32>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_u32(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<u16> for #to_name {
+ type Error = &'static str;
+
+ fn try_from(value: u16) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<u16>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_u16(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<u8> for #to_name {
+ type Error = &'static str;
+
+ fn try_from(value: u8) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<u8>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_u8(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<i64> for #name {
+ type Error = &'static str;
+
+ fn try_from(value: i64) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<i64>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_i64(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<i32> for #name {
+ type Error = &'static str;
+
+ fn try_from(value: i32) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<i32>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_i32(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<i16> for #name {
+ type Error = &'static str;
+
+ fn try_from(value: i16) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<i16>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_i16(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+
+ impl ::core::convert::TryFrom<i8> for #name {
+ type Error = &'static str;
+
+ fn try_from(value: i8) -> ::core::result::Result<Self, <Self as ::core::convert::TryFrom<i8>>::Error> {
+ use ::num_traits::FromPrimitive;
+
+ #to_name::from_i8(value).ok_or_else(|| "Unknown variant")
+ }
+ }
+ })
+ } else {
+ panic!("#[derive(Primitive)] is only valid for C-like enums");
+ }
+}
diff --git a/crates/enumn/.android-checksum.json b/crates/enumn/.android-checksum.json
index c6b5ecd..4ce58c0 100644
--- a/crates/enumn/.android-checksum.json
+++ b/crates/enumn/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"61b2a60789f3a3e2b3ac5a7b6262a058602f334a3890992a33493484cb6abd7d","Android.bp":"08897d07399865493d40080869897f9fee49c11ac20c1c836742432980c376d7","Cargo.toml":"c71e4995209921b0f20754c5c7bccf9cfb111b08460f34ce58dbd6ac748671dc","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"997cf542a5ffc25629a91063db87968e715dc03bd50dd6ce023744b19512160f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f58d524ad8408475720b373ac980cdbd538b452dd323974b5f688dc99ec9be13","TEST_MAPPING":"c0d48cb2c8f231784128b2196b84288d380859f8e160155f14c336889219c57b","cargo_embargo.json":"782564a81818deb1f79fe22c87523c74dc6c0cbc275c106126a9e49d13e1e164","rules.mk":"58597c070d5d95a24139aa11d15868cb21f1a5d7157747aa42448b8ac94f7714","src/lib.rs":"271283b7e0ac33a3b742f12e68312b6704a15a7b5f2bd0e8ea6db39376512850","tests/test.rs":"9264f3c800502fd0211f5ef7da93e8ce7b3beea3ce7a975fd1195bf362cb7699"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"61b2a60789f3a3e2b3ac5a7b6262a058602f334a3890992a33493484cb6abd7d","Android.bp":"e71479c39a5eda952e6726504c73ee800b2e0c3e46bd3e2b1da1478a8f7d1c4a","Cargo.toml":"c71e4995209921b0f20754c5c7bccf9cfb111b08460f34ce58dbd6ac748671dc","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"997cf542a5ffc25629a91063db87968e715dc03bd50dd6ce023744b19512160f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f58d524ad8408475720b373ac980cdbd538b452dd323974b5f688dc99ec9be13","TEST_MAPPING":"c0d48cb2c8f231784128b2196b84288d380859f8e160155f14c336889219c57b","cargo_embargo.json":"235b5130bde3b122a5fb2e6fd6dbd63e6784fe785bfcd76d1206f697687133e7","rules.mk":"58597c070d5d95a24139aa11d15868cb21f1a5d7157747aa42448b8ac94f7714","src/lib.rs":"271283b7e0ac33a3b742f12e68312b6704a15a7b5f2bd0e8ea6db39376512850","tests/test.rs":"9264f3c800502fd0211f5ef7da93e8ce7b3beea3ce7a975fd1195bf362cb7699"}}
\ No newline at end of file
diff --git a/crates/enumn/Android.bp b/crates/enumn/Android.bp
index 12cba0b..90828b5 100644
--- a/crates/enumn/Android.bp
+++ b/crates/enumn/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/enumn/cargo_embargo.json b/crates/enumn/cargo_embargo.json
index 84972c8..32c679b 100644
--- a/crates/enumn/cargo_embargo.json
+++ b/crates/enumn/cargo_embargo.json
@@ -4,5 +4,6 @@
"com.android.virt"
],
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/env_filter/.android-checksum.json b/crates/env_filter/.android-checksum.json
index a12caf2..32dbde0 100644
--- a/crates/env_filter/.android-checksum.json
+++ b/crates/env_filter/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a5c3a40cc2b7716041915bb840ae5a253bd62568fd5f347ec25fe62c9e415549","Android.bp":"9c193d3aa4ec570c58340c1a7a2c34c617be0a26a5af2177fe81b897f5fd7a06","Cargo.toml":"87e25d2935d6333ad464d265736f0de580e54b9c36e21356702129eb144331cc","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"43f6fb176b11d097e781d6841afc9633af33849563e6b3acd3c5b57a1b01a123","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"99f866142512b614c687904549f269e2f13c06befd6aeaab8b697fe9db07facb","cargo_embargo.json":"a2382e2a51cb5c593a348ef1abcc08cd2b7afd06cb59734562adad49d8195491","src/directive.rs":"10ab040b4425490ddfa7f90b6adc96c0be01b9f342001a9d23c357bd855f6b5b","src/filter.rs":"a1a6a317f352fd8dfaaf396caa734eeafe72078ecfcadb79b84e6dd329942822","src/filtered_log.rs":"4b37a8039eb8d3d85344d5b5b60062638f6897b20a6461c400eefaf0ac2eddde","src/lib.rs":"f3068799b2530d7c9b9736de636e04ce567fd1445e3465b5df041357f3ec4ad3","src/op.rs":"44f6e957d733b37a061ffd966141a33d641a7392587e33a68386fbdebb79c0de","src/parser.rs":"abb9e7ce3df50eff7fa45dfb88bec24bdddd829e3b1ee90e39c465c36de0c32c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a5c3a40cc2b7716041915bb840ae5a253bd62568fd5f347ec25fe62c9e415549","Android.bp":"0e1574cfbabb030772cd36e278d1bb6a25461f561d94ca2cca09f83f89587c34","Cargo.toml":"87e25d2935d6333ad464d265736f0de580e54b9c36e21356702129eb144331cc","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"43f6fb176b11d097e781d6841afc9633af33849563e6b3acd3c5b57a1b01a123","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"99f866142512b614c687904549f269e2f13c06befd6aeaab8b697fe9db07facb","cargo_embargo.json":"c117083f3a312c0d9cd58174180056ee8df8165cbec1b3d2cb47367ba3eaea25","src/directive.rs":"10ab040b4425490ddfa7f90b6adc96c0be01b9f342001a9d23c357bd855f6b5b","src/filter.rs":"a1a6a317f352fd8dfaaf396caa734eeafe72078ecfcadb79b84e6dd329942822","src/filtered_log.rs":"4b37a8039eb8d3d85344d5b5b60062638f6897b20a6461c400eefaf0ac2eddde","src/lib.rs":"f3068799b2530d7c9b9736de636e04ce567fd1445e3465b5df041357f3ec4ad3","src/op.rs":"44f6e957d733b37a061ffd966141a33d641a7392587e33a68386fbdebb79c0de","src/parser.rs":"abb9e7ce3df50eff7fa45dfb88bec24bdddd829e3b1ee90e39c465c36de0c32c"}}
\ No newline at end of file
diff --git a/crates/env_filter/Android.bp b/crates/env_filter/Android.bp
index 89dfdc2..0db58ea 100644
--- a/crates/env_filter/Android.bp
+++ b/crates/env_filter/Android.bp
@@ -35,5 +35,5 @@
],
product_available: true,
vendor_available: true,
- min_sdk_version: "31",
+ min_sdk_version: "29",
}
diff --git a/crates/env_filter/cargo_embargo.json b/crates/env_filter/cargo_embargo.json
index 45fc55b..1e65f8f 100644
--- a/crates/env_filter/cargo_embargo.json
+++ b/crates/env_filter/cargo_embargo.json
@@ -1,3 +1,3 @@
{
- "min_sdk_version": "31"
+ "min_sdk_version": "29"
}
diff --git a/crates/epoll/.android-checksum.json b/crates/epoll/.android-checksum.json
index 09940b1..ef9c90c 100644
--- a/crates/epoll/.android-checksum.json
+++ b/crates/epoll/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"524c1ef727b4cb393f48cfa101b96d99dbecaf20c294fb21c8dffa6b723cc4d2","Android.bp":"91df4cc8eb68b9ea2bc4b612359062fcad89195e41e5be631a11b87cb0a7bddb","Cargo.toml":"8c1dd639fccece258245406745dc5eee87c07484d28edccec85816768933a6ea","LICENSE":"2efedc6bb81cce9464a7e1ff66f16bfe3d7381d982f2abb50381eec0f0dcf45e","METADATA":"caf528c77a5663f62ee6eb04cb4504ba8a3a6cbc95b3e9d71a662ad090b0dbd5","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca75e8927003558905bf6f0509c7336a941fc9dcf1fbed49dfb58ec0b17d7d19","cargo_embargo.json":"0000e69641cb61cbd74684493b7583c46acbbb67562f9306eb13b25d423751d3","rustfmt.toml":"cf0f12fda6c9c06fa96f7b2124459774826be5f531cfc1b39f29dddfacfa92a8","src/lib.rs":"a2e319641c4c7b36537b332634fb1469de87359dc70db66d5d9f35e1f006422f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"524c1ef727b4cb393f48cfa101b96d99dbecaf20c294fb21c8dffa6b723cc4d2","Android.bp":"91df4cc8eb68b9ea2bc4b612359062fcad89195e41e5be631a11b87cb0a7bddb","Cargo.toml":"8c1dd639fccece258245406745dc5eee87c07484d28edccec85816768933a6ea","LICENSE":"2efedc6bb81cce9464a7e1ff66f16bfe3d7381d982f2abb50381eec0f0dcf45e","METADATA":"caf528c77a5663f62ee6eb04cb4504ba8a3a6cbc95b3e9d71a662ad090b0dbd5","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca75e8927003558905bf6f0509c7336a941fc9dcf1fbed49dfb58ec0b17d7d19","cargo_embargo.json":"847e4ecc67240a44b3c27f37107aaad2bf52af660299d1f1d6908b6cfdc64d97","rustfmt.toml":"cf0f12fda6c9c06fa96f7b2124459774826be5f531cfc1b39f29dddfacfa92a8","src/lib.rs":"a2e319641c4c7b36537b332634fb1469de87359dc70db66d5d9f35e1f006422f"}}
\ No newline at end of file
diff --git a/crates/epoll/cargo_embargo.json b/crates/epoll/cargo_embargo.json
index 8eefd60..0d68c4a 100644
--- a/crates/epoll/cargo_embargo.json
+++ b/crates/epoll/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/etherparse/.android-checksum.json b/crates/etherparse/.android-checksum.json
index ba115cb..9ad3323 100644
--- a/crates/etherparse/.android-checksum.json
+++ b/crates/etherparse/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"5ca075330924108e56bc42b7deb1858e23ab2eaf8ac364fce5cdc8266d228624","Android.bp":"9999162f140019820dbc9d045fb3e8a6cd951a45898976c07231877b37eda36e","Cargo.lock":"6d79b2025092ff63457023cc5bf527b6c98238cad427544f40b0ddd269c9f05d","Cargo.toml":"179b31da4533164412f00679bb22989b38b135ebf3a88091d9e354d0216b75ae","LICENSE":"fbaf014d4c710d74dfd291a6ac8ca8e564d4050dcb1eb3756e6c456abeb1de89","METADATA":"859fbe6597bb741dcde2be0c256bab7479aba0317cf6059f66c50963cba7f688","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c33d47442c2b3c1c22373da7bed6a08892717ad667b1141abcc5c97ef390fcf3","cargo_embargo.json":"762c744fbd4c3e924a9d034fd3c3e4e1399622b96d67058be0ca151ee0b63ba0","examples/ip_defrag.rs":"a748e2d3101caec0404bc011a76f041bbc3dbb41be37fe22e18e046433a9c36d","examples/read_by_slicing.rs":"67b21139e527b19d0512828c1e62c885aa20ac29b8a88b24ff0e2c34ac2f0f1d","examples/write_ipv4_udp.rs":"a9bc127e6dee230ec863ef8dd394d30bf82aae0038f865b778a79d058fd7daf9","examples/write_tcp.rs":"0354ff9ebc61aa2b80efe7ace7749e09129ff54ed926a3f0bcb29422fec4e306","examples/write_udp.rs":"c7483fa6698ab4477a7025a07ee86d6e2af7be86a9f80132124a10c12dff4396","patches/license.patch":"f1ecd16d788765e2876fe8c77fd98cfbd893ebcc0ca6ee56350a4924b58cbb4c","proptest-regressions/compositions_tests.txt":"cda554b354a481c7d6cead4108681cd6b8c051a7bb73e697dce9936b82b16319","proptest-regressions/internet/internet_slice.txt":"f28bf9cbf302409ce9c32456bb0268fa860014e3e21f9b4dc02f17cd02bc8494","proptest-regressions/internet/ip_auth_header.txt":"ec14f9811b5c951e0ab48284b0a6df54ca33385fd419527ddd70bf98ee89fd7d","proptest-regressions/internet/ip_auth_header_slice.txt":"cf07ba1c614744d6a39e10c83f8a4ee14adfe93246dc0af1378299a9e7f64d48","proptest-regressions/internet/ip_header.txt":"7aa825d4c10f28971a4680aaacd1ab9dc99f985513ea0134cfb97445820e98eb","proptest-regressions/internet/ip_slice.txt":"44763f60e2c6ca22a9db0a9223f96331a042b752537e729061de2f65eb6dceb4","proptest-regressions/internet/ipv4_dscp.txt":"a60060713d0a470cc0d8727eb662cbe52836bd2eb92392089bbe7d0b0bd73044","proptest-regressions/internet/ipv4_exts.txt":"fc4e9cda0c41357fd90c9b7cb3424a1cb50706b4ebad54c4e0b75b9f1af647ff","proptest-regressions/internet/ipv4_header.txt":"c1a217c80e1962d7c7d8203a27deeb76ce4d691133295a69e123c239071888e3","proptest-regressions/internet/ipv4_header_slice.txt":"0b0026858b9372e15c1da36931855cb0712b4ed870393614b451280207e47665","proptest-regressions/internet/ipv4_slice.txt":"3d7b66a49887cd90a9c8be2d273e338323ca9b1d14335056ce328a391c610058","proptest-regressions/internet/ipv6_exts.txt":"2019584269283fa58c4edd1da153007cb1d267612a4c45522f29d6cd811c1389","proptest-regressions/internet/ipv6_exts_slice.txt":"5fdabc3c7d82661a5c0e5cb74b2defdf5d9cc879ab4d9955c79f663c55f0817b","proptest-regressions/internet/ipv6_fragment_header.txt":"ce1198917716fdb582004979d0e7b3f23fb0bd24cc4d5a6bb1609942e520b195","proptest-regressions/internet/ipv6_header.txt":"b5f1b9acc5b5a485f8d608246cd047f5e85fd8416994ace5f10b67ddd0ab6b85","proptest-regressions/internet/ipv6_header_slice.txt":"189f88c6ef73383e4f058e4b9731fd70c2a2daf9a8f2ffc34e0887ba1364b94d","proptest-regressions/internet/ipv6_raw_ext_header.txt":"94f5a82ab1d85e198a1d8b6eca0b86b4bc6848d5cedb3859fcd45ed2c3dda642","proptest-regressions/internet/ipv6_slice.txt":"544a3a69312f4bea4e57c4543486ce35137ffa825a01fa94e95529f4f671af2d","proptest-regressions/internet/lax_ip_slice.txt":"085a62ae1a44aa0e2448af0f06762aa3b6b62df7054da6c4f499c986bff502f5","proptest-regressions/internet/lax_ipv4_slice.txt":"7f2d13cb52b93fa1c9650abc182fafd5f9d76fdfc3c06c1316a08de3910e24a7","proptest-regressions/internet/lax_ipv6_slice.txt":"3c3153b0cde13eaf5097733119c4ada982b425a8dfe8943555b9f0d82bb78495","proptest-regressions/link/double_vlan_slice.txt":"5aced4ec8d4d624cf24e61b6c1a159f93b4d51687f0fe12a56fa0a85cc206623","proptest-regressions/link/ethernet2_header.txt":"b5d91d0ac393ee5bf85a105f13f89aebdb5700f6ec07c98f726a1875fe2d12d7","proptest-regressions/link/ethernet2_slice.txt":"1f9047bfe526e0b6af9dee7ca108d4855418159801891dfff31ebb1d3059eaa3","proptest-regressions/link/single_vlan_header.txt":"eefed03214259ad8ec23ef26f98ea973cac1b80dad8d13f34bb2b99de007f894","proptest-regressions/link/single_vlan_slice.txt":"760bd91c71b9653bd4506869d57d4c38057b95da10bbbfbc2a57be429131c7c4","proptest-regressions/link/vlan_id.txt":"249807f03882e8d86aa68c460e0a5170fd2b040c158ff5bfcf6e8cc72ca9c89a","proptest-regressions/link/vlan_pcp.txt":"c935f15506be4836ecd04d535f884c590ef52ba3eafc8a65c3202e66c2195240","proptest-regressions/net/arp_eth_ipv4_packet.txt":"92d487df120ccd798becdbc7f77d0349d9d7a9541aff95d649a77e0337854eb8","proptest-regressions/net/arp_packet.txt":"6a20485e3ce488f9da9a64f7b9fc76e15c39575e51c8b6a02b0d6c49dd690c0d","proptest-regressions/net/arp_packet_slice.txt":"2449177084f07e190f6bbc2c067813cb9cd380e983073f2543aa3f7050298fc1","proptest-regressions/packet_filters.rs.txt":"b32112123b4ebcac3b1a2370c603f1a55b65a6a47abbcb71882886271a5bf041","proptest-regressions/sliced_packet.txt":"0f59adccb52aad6467cb562cc279288de262e64c570d4b08bba37e417e1259ae","proptest-regressions/transport/icmpv4_header.txt":"5cfe000c67124a90b839fd438ced654b69e417f769dfad10d10d5c948fece351","proptest-regressions/transport/icmpv6_header.txt":"a1dcb259f46d843c26b5708a727107644b228d88e358098a051e2474f80b8cac","proptest-regressions/transport/tcp_header.txt":"455bb8904eb89c77fb87c38632da93ade4e965ee7068d443898b3c3dada7615f","proptest-regressions/transport/tcp_header_slice.txt":"9e2b405c9bbde67d092dfd8aade7225e5ac99f99f8e4d85b5c619048fe9c14ff","proptest-regressions/transport/tcp_options.txt":"14c9787903b076e4f77212b4bdb34f0757e82daab993c5e836009de1e4204576","proptest-regressions/transport/tcp_slice.txt":"90b4c039e438af806b7054ad38d46934e92e8ea4393505e5ef47dbef41091e4a","proptest-regressions/transport/transport_header.txt":"54bc8b2e0052cd29caf7487b8f38a6121b5f3250b8bb6109d8572da4b0736963","proptest-regressions/transport/udp_header.txt":"1043f35c4643defde43bbe105e0e2c780603a35196e84de6201f489a27b640cf","proptest-regressions/transport/udp_slice.txt":"a909bd42229448498a77909169aebc44b37f286e9a7a42184453d79f20d43247","src/checksum.rs":"7388dad242209f4d6c001a0cd0fa5cef5047326fb010391dba034ef084d9fe20","src/compositions_tests.rs":"6c91b99eb6d48247074b3d604f6157b60f45bbc5f416e832eadfb26a7ee21fbd","src/defrag/ip_defrag_buf.rs":"c493b38b492c940411a12041fff9034cb03dcf0ec79a1e3cfa80160f397f7d56","src/defrag/ip_defrag_error.rs":"72f25a2bd689e5c5b33ad2c97a5c77dd098a333221145c1de7616d72b889f243","src/defrag/ip_defrag_payload_vec.rs":"3e52e7d70b7d90344582a2deee4acf035f6fc92e7b54cd42d34c5b62f4268ae2","src/defrag/ip_defrag_pool.rs":"08d1d0f97f614dca6b1cf79a84af6721604bce106eb5983968e0b37baaabc70a","src/defrag/ip_frag_id.rs":"11153393c6daff8cbe753ba38ca96578c2c1ef6a616f84f9c6cd9a2bf1a8f96a","src/defrag/ip_frag_range.rs":"4ea25928a52736db9a179ce40fc854b8158c0415ddc020eff2f868e31a6942ff","src/defrag/ip_frag_version_spec_id.rs":"82a3a87b27bcfd1c9c6622bf25e37e7de77d1146d6aac120e4943a672eeb53f0","src/defrag/mod.rs":"4c05ede1918af9e6df0bfa5245fb94c32ab8549d8b541a69c592af41bf5f631a","src/err/arp/arp_eth_ipv4_from_error.rs":"7a977704e99cda33e4ce76f95d9e68f910049b05aff2a8927456374079fa8592","src/err/arp/arp_hw_addr_error.rs":"947e0c3e9ed80ec2d4c4e11bdd3bff393a0e9ce794271fa15f394deb7b3256c2","src/err/arp/arp_new_error.rs":"a65cb9317495017f9eabe911249ea9dd99385515d2ba1f42f656628103b291a0","src/err/arp/arp_proto_addr_error.rs":"270d2c1f0a27291a80ba04adf304642c448e3d3b6cd957f7ec0a02dbdd68107b","src/err/arp/mod.rs":"8e30244317ebaec12c123c4a2e6252a4d77bfe593d372001d99f251b8f30026f","src/err/double_vlan/header_error.rs":"94b224334eb6182ececb530f59d14c270ca1996441995be84fa542d9d241ed2c","src/err/double_vlan/header_read_error.rs":"c7ce4eaff1c20c10e36b8cc689db909027fe5bdb317bf8fd59327fc7f34b6c11","src/err/double_vlan/header_slice_error.rs":"3c6857ae3ff38070ffefdaa1dc60573f2c2ca4245a7dc5d19a875175c5d7d524","src/err/double_vlan/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/from_slice_error.rs":"dd58dd0a19b475b84e030d1da148255142e2c2e0434a66a72ea2d021444978fd","src/err/io/limited_read_error.rs":"5a38dc71e00e4e8c6d676e60dfb379c20d49ce274b71349d252a317427958c08","src/err/io/mod.rs":"9b1c86158fc40b115e44d48af107c3e24d3bdc3ad07a7f24938d599bbb5c0b40","src/err/ip/header_error.rs":"449e2f2acd703a9c01a88f882b91e5952143ae3007e117402b29e3b74a7f60a6","src/err/ip/headers_error.rs":"0315889f76d125262169f18592b55fe070dc9cd1bf2019bdf7bdad6b6885eff4","src/err/ip/headers_read_error.rs":"de7dea1c2aa5c12ef205fbc0d300e5e62905017bd7be52bbec5219540648e740","src/err/ip/headers_slice_error.rs":"2279864b0225f1f3c52d252e3fbd648685e77c5f5620e12c9b58115bfa0b1a84","src/err/ip/headers_write_error.rs":"fcd21869d86e39af87e5508d223b3d0045f0c29b89e249a3edefec19934a708b","src/err/ip/lax_header_slice_error.rs":"57378dab273cc2597c2be9275b2a47f41f0bfee2aa0183987b8aa1ee1d37e7c0","src/err/ip/mod.rs":"8cf92db0272bc87cb1535735707024494bf22d26ae31bb8a16ec522c658fb2ab","src/err/ip/slice_error.rs":"6967467fb090d55e08f61fb9f3e141ae67765c09f0307a171e78495ca2a8158a","src/err/ip_auth/header_error.rs":"95c8daada91eb344fe604e750859b5e311ef8b43d2a446b1f6a082c382a2f679","src/err/ip_auth/header_limited_read_error.rs":"b834012f616673ba66b260dfd44b353f4bea553394ce11b8c4fe1efd0c9aaa27","src/err/ip_auth/header_read_error.rs":"e540027bd6db20c16029d770a045e4cbfcdda7c23ad9858c1cb97dd6c2006600","src/err/ip_auth/header_slice_error.rs":"3040b7ac84cd81dda5f51570789723bdce90238bb8c4ba0d38a49855d6cd5b3b","src/err/ip_auth/icv_len_error.rs":"1083b80d844e645b4bc0d95c5a0f393c60704907cbd29a62e5540e3e1386594c","src/err/ip_auth/mod.rs":"8d6c873698028773016d43f89c8f1f4207258ff24c1d82edfa12b880df76e956","src/err/ip_exts/exts_walk_error.rs":"fcf004213d739390d6ccdbd5ed97b5ed11813c0c020005881d0cb6f4b9629f7e","src/err/ip_exts/header_error.rs":"b74ae7a23a677836da7553662f140f5d4079c8de2938f4a339fd86329ff00cd8","src/err/ip_exts/headers_slice_error.rs":"5c803b2e659ee9f228d6a3c21dd6b4dc4ddf30ee93d2ffeba4f1f776bd655e24","src/err/ip_exts/mod.rs":"f5957b2253e52571fa2cc7e6d9e20bdc903f5ccfcdec6ad8c317b8a13560748d","src/err/ipv4/bad_options_len.rs":"ba7924a492736cadf23bb94fd4a2d03443d2581ba7ecc7bd6f159a5999e94c71","src/err/ipv4/header_error.rs":"08e881e7e3aa2c66d4b3aaf502e2fb44b57a8cd0e12680226921eeaf41641e01","src/err/ipv4/header_read_error.rs":"8c23bc0536b492100f5da785001be475d0aa3ffc96fcdd21a663ff6b5afd11e8","src/err/ipv4/header_slice_error.rs":"e132f20188ad07098fb2f4d99a64276083c37a246035ca0a388aa629c7e0a2fe","src/err/ipv4/mod.rs":"22be02f957eae93403a3b5e9892d8bc8c6e48636c7b46e4a3c48c647cad01ba6","src/err/ipv4/slice_error.rs":"4cf6f7ad034dbc39f2af27b1e10e69050883c3c386d0a81c14f25e27aeaffd59","src/err/ipv4_exts/exts_walk_error.rs":"a86116539f0e354267a982800f48a90bc6576bdc0d07594b336bff598eb63428","src/err/ipv4_exts/header_write_error.rs":"0b9a014265f84edf5595dca68f75e64b6d1c43c5b865824fedfeadb5436cfc4f","src/err/ipv4_exts/mod.rs":"3f15f230f0e89a41ac1e4d8799bc713a5c06197dee36e627f3c074dbaea16a9e","src/err/ipv6/header_error.rs":"77d0fc97d86111f2d0faa3616e69794add675715c64847098334872ae9f9086a","src/err/ipv6/header_read_error.rs":"13c1c949477a179398d79402ff476b5452988c64c97b23a69bc56697a99edbb9","src/err/ipv6/header_slice_error.rs":"ae3c39185449a98066938d77c8be1c8b5faf1333207aaad9e96de882f60fc6be","src/err/ipv6/mod.rs":"d62c636c86f5a60f21809a9dd6afd8920077380dc3f968a8bbdd13222603024e","src/err/ipv6/slice_error.rs":"c354e6af13c8ea670d2a9b8201d3c3e44bd257e881aa888decc6a5489e863f93","src/err/ipv6_exts/ext_payload_len_error.rs":"4f5061bca4f8b6c50b94c8c0ff7c191e7fb95c0a8c97e40eb340b5978b1ff9f5","src/err/ipv6_exts/exts_walk_error.rs":"f5731b01fb3d41efc690ab1bf6818ed7d3a01465f0f9832987712611124dcb87","src/err/ipv6_exts/header_error.rs":"8c0c84f50680f86ef8dc7ee54fa4cbb6760d49640f73f48d4b88ebc170b556e3","src/err/ipv6_exts/header_limited_read_error.rs":"5cc090823388b1daa24640fbd9be279b7a74c77236b38b4426e882d2586415ca","src/err/ipv6_exts/header_read_error.rs":"452d91d054deb790d5fe6867069faa6cc23f20ccd6f8728e61cfc2fc6fcafd08","src/err/ipv6_exts/header_slice_error.rs":"046413243923b4887fca1f88704cf64b36db27fb91a7a4f819d4ddf043891d9c","src/err/ipv6_exts/header_write_error.rs":"551f355334f5b8954200e8ddd12eca84486a6af4b782f7aacae3b53ffe3fce1e","src/err/ipv6_exts/mod.rs":"5e20a8c16ba544de38e463e0ab94a3dce700b3d5bccf5991392982ee7c726a15","src/err/layer.rs":"eff5ae3b4d925e525a2bf374544d8c3effb78cb78ca9bf09e19f8adcfb12b90a","src/err/len_error.rs":"b72b38891edd0f2a6af5873b23d99d10ec5c224ce8defe7da77815b84e1d85c5","src/err/linux_sll/header_error.rs":"cb87d51a9d63945d4208c7b25a939a27b620b0350dfb9b43f367b7593a266111","src/err/linux_sll/header_read_error.rs":"167400a38c4ef3f93c4ea435cab6bad4c8624aca3711e9277ad5aa90c6a95aaf","src/err/linux_sll/header_slice_error.rs":"d4ae8dc2b0904292d5a00517c7ec3a8d8d47ac874550c0085e4e3f2d5370e475","src/err/linux_sll/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/mod.rs":"46ac424c27eceb541e0fe976ed8527f7a1879217416bd961c22959a6a735bb82","src/err/net/mod.rs":"b1024961c26c1e1d73eb1b01186c54b8914556022853d5f564134ddf2103b6c1","src/err/net/net_set_next_header_error.rs":"1bdf056b3a97078135b83906c9e2c2afe00989d850fc4ff469b70ff2ae52b42b","src/err/packet/build_write_error.rs":"e51320e0dcdec10ce69ddc19602c7a79aa548f39fe85fde33f6bae44df458685","src/err/packet/mod.rs":"05c2973ce964fd061f9cb53f17a4e88d880a4e70461546871d73e28cc90fb04f","src/err/packet/slice_error.rs":"9f05acdf5d949ed484c5c162de923fba2e261da2ead14057119061699e32bdb6","src/err/packet/transport_checksum_error.rs":"db0503fe7f0c3e278a34480afa8a2f906538839bb2f913579fc6cae3d0d819fc","src/err/read_error.rs":"47cf36c5b1b1fc19f37cae597bd26512565d0ffaca5ea9c2bcf1e77aabbbacfe","src/err/slice_write_space_error.rs":"dafd90ac1352a6924a16644733e2f3eac83bcba3a5535f31ae192ec0ecba2974","src/err/tcp/header_error.rs":"821c34df02a3d7f52f90e019c94f5d434b5d1687ed2537ca717417ef4c1fc2b4","src/err/tcp/header_read_error.rs":"c29758051be2beab762ff01e262adb90dab3812a9e0f279b06a0e90ce0ff9969","src/err/tcp/header_slice_error.rs":"e9743c1bff4dc6d286164df44e78a5764f497f33d10dc25bc1207f26d390f549","src/err/tcp/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/value_too_big_error.rs":"6f247333b36b504a41870688834c06ce53ae263af316ed418d1ce8804ed03a9b","src/err/value_type.rs":"a66a995d3452d261b40bf7323c6ea2e06236f726ad89826b73f128d93e8744ef","src/helpers.rs":"94b2d9469d376f39d38fef3d76dfd5a444425c414221ee48eee4b13b42e5a6fd","src/io/limited_reader.rs":"b8499bd2e3ffebb5b6d88713bc382cedf9a8d7033ce790e2c56f8932b25e9020","src/io/mod.rs":"bb81e1b6b01b26c3496675905dba6f9dc19b0a6333352e6eb904ed51bfa91007","src/lax_packet_headers.rs":"d9940c39c66bfb8f3bc016d4cc6ea3c0d793a5cc19fd836d0e14cf84500b1af5","src/lax_payload_slice.rs":"12b998d4e6592789181a9ae0d694fa3fcea4eed35327ecb1dced095c8b47f8bd","src/lax_sliced_packet.rs":"d080c8c6bb84b89d7cf92f40adc08f2c7583152ad46a2d043f9aa00967cd3732","src/lax_sliced_packet_cursor.rs":"88a631f41d899f1bee9c103cae1dc88d8d07cc5a3bd01971d2e4ed4a325d2242","src/len_source.rs":"0fafe650476732516e6196386d0cf1dcb456999f68ac541973c3e100d66e7dea","src/lib.rs":"93961bcbcf0ee78468ce34eacf708817b33d9897ca7cf70973e1416de74138c2","src/link/double_vlan_header.rs":"3c1abb259356f82c04f564edb8a01c11174ed4b46f7ea33f91ab063097d3490d","src/link/double_vlan_header_slice.rs":"02ed6e77124f73bea98577d725f63a93237f4b7f2b5c0dc6b82917ef91dd3156","src/link/double_vlan_slice.rs":"772c7747ebdf1f811a3c93dce485362462364c03fd2ee42f474f0c0e051bbcb3","src/link/ether_payload_slice.rs":"8282c6f2b7fa47176090fa0117dab1720568b05f93f703d6a1fda87b26b2b86b","src/link/ether_type_impl.rs":"99a87b820dc3ad0c193740d1e971ac0256ecf3568becaadae596a10b5543ae0b","src/link/ethernet2_header.rs":"b574e528989e989e4c38a5a31a93017578cd564efc0261b7ef1d33c1625300fc","src/link/ethernet2_header_slice.rs":"7c48ecb25a178b41027e8f5ce305d67bf0df883bc9e8ff2cc13b4aeb2e5bf987","src/link/ethernet2_slice.rs":"37ce79fbc4f97c5c0c76784c317591fdd99c2484cc6d7e70b6608fb5de0e79d7","src/link/link_header.rs":"819ebaa407501f1086f6bb409d47f81152eb1f63c118b6c3df6885becc8ebbc0","src/link/link_slice.rs":"68f71f79b4c990e29f3717ec73cae631d9248e677b4a8693c7ced2f230e6f2b4","src/link/linux_nonstandard_ether_type.rs":"6d31bf570c7f1ed78e4df0212589b02b54752f73f470e659dd43436ed2074b7b","src/link/linux_sll_header.rs":"6e2b97e6e9f210d638cc7ef08b333ce0037c6451e0bfe44040a1d88e53890898","src/link/linux_sll_header_slice.rs":"983f237dbf7dc15408c8e201c2e43ad71e4d97e3fde68647b26c78fd358bad1e","src/link/linux_sll_packet_type.rs":"8fd4214ae97f691db2069566eaf2ac07773d87dd78fb0d900c885591d89ea7c1","src/link/linux_sll_payload_slice.rs":"a83e19868863fabd1c3b6374be4259eddeafd8778bb469d27a9015ec3f112e87","src/link/linux_sll_protocol_type.rs":"d3a943ef12d5a7fd2c3f68dada9deacab76abf8e3867c932c03b6bd6bde29053","src/link/linux_sll_slice.rs":"1d2dbf93e8c47fddc824c97de3362cf77f863f918f320973708c820053a4bccf","src/link/mod.rs":"42b892be2e48f06f6f235dd5cd6f767428982971cb32ad9ccdbc1c0bbc391b11","src/link/single_vlan_header.rs":"1e26b6eb1244b63296e87375f06e70cd207933268fcd390d993037deeca13232","src/link/single_vlan_header_slice.rs":"2cd0131e33a80aff3abf10c372a34744a4d976f10b3172a61deb1e77d3e09a92","src/link/single_vlan_slice.rs":"cc9f690f79cb71cb269fb4d221db2aa67c0cda3278d8f7e3d5646ba44e05442a","src/link/vlan_header.rs":"b403aff1ce9baf249b6dd3edbaf4c581bb82e764da0724f979ddf762ddbd22b9","src/link/vlan_id.rs":"fd00d92c100d380005c5f8aaa8587730562d9aa34b318229d08cc8a036b391b3","src/link/vlan_pcp.rs":"08eb38d5d2f1a4478dd068fcdc439869c841df7b46a7773279d68485984a92e3","src/link/vlan_slice.rs":"25f40947307db56362ccd802cd115585f54c0d6e85a245219f9c96bb4ff24222","src/net/arp_eth_ipv4_packet.rs":"872df2a3be2a8b1abf0885ba4f25d93278a418897828912ae4ba718f7a199207","src/net/arp_hardware_id.rs":"492f83b9570962906500ada7b0e02a1bad4a974c4a0a8848553ad2a1dcef0dd6","src/net/arp_operation.rs":"105f1fe6e5d3b5fa9b9ef322429253462d9136582be2b2fe2b8425f6ed117192","src/net/arp_packet.rs":"8af35ac986858db6ecd5afc00df232ce68aa92a886679ce0f396a81b1225becc","src/net/arp_packet_slice.rs":"3212f9d5823db29693ab00784cbd3f178b00a7ed2eb66802f9277ed941bcc7a0","src/net/ip_auth_header.rs":"22573d6e5dca187f69270c4482349a6c32021c34370e86418e330cc0dea2cbfa","src/net/ip_auth_header_slice.rs":"24af9e7ef37e5a68fa75ba1e60ff77bcc1c69c542c734ba8fe3edfd5c59e8fc4","src/net/ip_frag_offset.rs":"d80220902049a8cba3bb2d418aaa1ffbe92a1cd5ad86f1c06a87e5e398a22820","src/net/ip_headers.rs":"0aff6c01aa4e88933f930972aee4af02a28c577873d8074beea0f47906c20104","src/net/ip_number_impl.rs":"0c8f8244e1e0e89c7b725665795a1ddb994780fda1d222dc5c122828c18ebf26","src/net/ip_payload_slice.rs":"fdb9c7e0c4a1b36b85e254d966a978c5eefadc460dfbc77c101aecc56e356874","src/net/ip_slice.rs":"557272d95be6e0cd194f5f275c582110b0ed82c5ac6e043ce287e413b039ba2c","src/net/ipv4_dscp.rs":"a58269019f9c8d8a75e96bc0ebef88ccf52bc124e413890b2708938945382a60","src/net/ipv4_ecn.rs":"058538db9b40fe5b38528d7132681992bfd40ab05e1424de37e26d6628ef6b28","src/net/ipv4_exts.rs":"e86c7ea1a253541f6033fb45b2280abcd8f00e8cbc6bceab91581db0128fa641","src/net/ipv4_exts_slice.rs":"8573d4c148e42769fc50ddfcace0fb21e0ce58fe3f07131a1e87d1370e88d721","src/net/ipv4_header.rs":"362411271d3255555a201b9b922a92fe1e1d445a10a4c70775b61c814b97f43a","src/net/ipv4_header_slice.rs":"9c054952ad845a9fc53d799beba064cebf574316f7896cb8669d99ce935a8bcc","src/net/ipv4_options.rs":"1c00583a8d71fc1a3fa2ff288b2b7332ab45723fd1cc5a3eaeaa8f3df56d98c1","src/net/ipv4_slice.rs":"d40d738911319e6af37e5bb0f72bd37a8608f8bc299ef9124d0d54c987625fa6","src/net/ipv6_ext_slice.rs":"ecfe7370fbf0199c8a28d7dd292ce4f94441d3c1abadb281229e141fe1d1a852","src/net/ipv6_ext_slice_iter.rs":"edc969e0d25724543a9530b9aa5dc3c6da6503f7135cc63de52bbaaa4418ccc1","src/net/ipv6_exts.rs":"674d4a33e7fbbea422cb0f0ff0d0fa8f04a3c26c33113676c175b83da90367de","src/net/ipv6_exts_slice.rs":"9264956fcbead2ead446dc5976a223719d8a98fe8fa285c1da2793a25ee8366d","src/net/ipv6_flow_label.rs":"8e271b96e476641d64ab74d16f44980fc266477af7d567f6f5bc5e6b1e61da67","src/net/ipv6_fragment_header.rs":"ed6c9ebbfdb388e6dca0e1f89954ef744a94c5882a1ceb13fab1bddd1d530617","src/net/ipv6_fragment_header_slice.rs":"115429110c4501d786aec68b96b1d440e3c92c68786ad97dc1b12e8419fa8647","src/net/ipv6_header.rs":"beab70250d6b23a2c1fa92e949af67868f9abf421ba8361b5f75ae8a15b41716","src/net/ipv6_header_slice.rs":"2f13f5894031b592142d6ada1058910190c0cafdcc03cb5ff1e9ba84024d4026","src/net/ipv6_raw_ext_header.rs":"9a56a6aca63fc8a744dfc596d2e178f3611fdcdf9e381e7eb8a4d4ab31d17108","src/net/ipv6_raw_ext_header_slice.rs":"ca8bbe564bcffb6c811ed584a6976b156800999f20bace94be8299947a4434ed","src/net/ipv6_routing_exts.rs":"de9f55abbf535a89fa55d97877ed998ee3000acc6dd79ac084c4fe7414fa9cbe","src/net/ipv6_slice.rs":"757c6f9fd25b5a1f7280c3a87053725352aafbd37abc4fca22b3b31745275a85","src/net/lax_ip_payload_slice.rs":"6ea047579308125bf414304458d6c204fc9d93c6332a5a10d65b6be17688df1d","src/net/lax_ip_slice.rs":"0e11a7c18f8893106a2f11ad1e237e27ce4132d6d1b3b9069514395775126fb2","src/net/lax_ipv4_slice.rs":"ebb1ffb78b600ff167516f68105335b03163e0faf8fd7ba35b5067544467f9fb","src/net/lax_ipv6_slice.rs":"2d09cad4725130ed59c57a8d944e6effa9a63749d512e796f7ca4b9700f516ec","src/net/lax_net_slice.rs":"1e6968208602ae285804d09b6c71113048d51b91d5d5ad28064c88df28d1b595","src/net/mod.rs":"5c30f09ac80e57bbb0bafa66511195ed6e2a561b62f91d11f887bd49c2660bb5","src/net/net_headers.rs":"19806ffca943aa7c9aee69ae71cf63f9d5df96fa41206b43bed068940cb33be8","src/net/net_slice.rs":"f4b066a394250de381648f4007bc89438a51e86dc10594f6dfabf628696b536f","src/packet_builder.rs":"3de47508e0b20ae6c89be2ca81f5ff03147a4a084e9601f38864ca7af5dcbc02","src/packet_headers.rs":"336195e131e4ec06f7a286c67f72b3e56a653197dda21f22b656711817d8ea04","src/payload_slice.rs":"67bad607216dbda28772fe7d884e225dd0b3edfcdc85be1068dbe809c29ec180","src/sliced_packet.rs":"64120ae039b98693a9963ae4e32b8ea35ccf563d9eb61610022348dc8df9148a","src/sliced_packet_cursor.rs":"3c7678fb802ba4454dbc711e37900ba8f0e2f95e1fa820094742aceb0071695f","src/test_gens/mod.rs":"82d6011c4b38ef626fcd4048e966efd935e1637662c074f1f25af4354f36e188","src/test_packet.rs":"a8cf05a372690e70a60e37a14b9215d6ad9f96b97b562bdd2f3432c6cd7403a4","src/transport/icmp_echo_header.rs":"b2ec597f411dabde553c66583d21339765e623cb7d4d96cab5252079a53f9abd","src/transport/icmpv4/dest_unreachable_header.rs":"1f619edf7538cb84f9924ce9c9e1461bd6bff6254f7c4e1879a054e37f71e9c4","src/transport/icmpv4/mod.rs":"445a123811fa05bd966e7c93543ab61f2edf317f553044696d92b62e232d97e8","src/transport/icmpv4/parameter_problem_header.rs":"ee95757391f3d2189ea4b8a05bae5faeea62dbc8282092ac99fe527d96392bce","src/transport/icmpv4/redirect_code.rs":"20f833e7b44a24edcdbacb4a42e1bd6709251711f56d9091a3667f5754d00a86","src/transport/icmpv4/redirect_header.rs":"9b93ecf873776b3d387b0eb2da369d6da87c647aa48fa7e12896b81e035bded9","src/transport/icmpv4/time_exceeded_code.rs":"ebc54359a02e6897a3b419274f01b73548ba5c8ac847f996e8f651893a53578c","src/transport/icmpv4/timestamp_message.rs":"42fae4577982a51da7c24f42b77e54b680d540784efe801f0541c023e6ebc78f","src/transport/icmpv4_header.rs":"47d1245f759880b1c36ce659ab572de437ec3e83038e2bae39abe6a4db6d0e8c","src/transport/icmpv4_slice.rs":"4db10d54fefa306f20170a6cff0572b861778613238816e9e95f1200de3cac56","src/transport/icmpv4_type.rs":"afec53948c2141eceeee6b5e825879427a7cf059d86ad4c97773ec3a7185b804","src/transport/icmpv6/dest_unreachable_code.rs":"dc513f7b9dbbe0f3ceb3eb0eaaaed15487d5038bf7dbc51e05f60eb269190111","src/transport/icmpv6/mod.rs":"251734f9a53f91f28468c580de64f0cd30f54f74e1e53852cfe25f71bc5ee9fe","src/transport/icmpv6/parameter_problem_code.rs":"0fd1f4f3abe254222add89bca8b3acfeca56c6d67882041de38e5c7a7a4fff46","src/transport/icmpv6/parameter_problem_header.rs":"66c54b02ad56e99b39ee68712d1634400a882ac3de2271807708bc0f0be10d72","src/transport/icmpv6/time_exceeded_code.rs":"e0464ec86abd7c6c61618a6a136d6ebfe6a7673ed08d53d4a3b67fb53c0abdb7","src/transport/icmpv6_header.rs":"612f7189f7626c02de13d2792965b74faebf27aa212329ae2b54f694d681f222","src/transport/icmpv6_slice.rs":"d63c435426e2bf357285d6a7ec7d956c7c4a66ce92bcf762f31a823358f70a8d","src/transport/icmpv6_type.rs":"81239361b78e2bd588098f04dfbbdf92163c04119bc19761f0e2cccd8bf61773","src/transport/mod.rs":"c647c794e7c46fc4098da76b1a23743d35c4b7d1ac9b0ea6282ce851ed977a9b","src/transport/tcp_header.rs":"a6153039059dc6ff74bfa45ae567ea05a5d1d598c139a80ab47fc0d98b709429","src/transport/tcp_header_slice.rs":"de3766544a3ff9f40ea11ba3150a1e8175a48e1e1bcb05305fa00039ae87a690","src/transport/tcp_option_element.rs":"0133f6759caab0368634523699d77cb18e6c9a1b816e3ee9eae3867eb6ca7f04","src/transport/tcp_option_impl.rs":"a57d3b760358f448691b9094202291241d165616a226e6fe4590c6d3f62175e4","src/transport/tcp_option_read_error.rs":"678d6904cdb82d829d8bf8df8022a5823b20ab1b654127b479dc19b9f1a62536","src/transport/tcp_option_write_error.rs":"b078629cfa5255ae4bfaf21c4115683180d757a82bfd6760a91a3511293339a4","src/transport/tcp_options.rs":"0cae0fe51364a7c8e4129e4b401d3ecef9f28ebcd239e4c5b351b17f9c984266","src/transport/tcp_options_iterator.rs":"606b27483d1e0a112c9c706c9fdca1b9673c15dd3f1f74611948cbbde8c2dc04","src/transport/tcp_slice.rs":"3e6479bbef88793bbdcfa1249858c33a96b105d6059a469c9ae9f0a3337dff13","src/transport/transport_header.rs":"80bc33b7ff4ecd59d2724a58c94bcd476298c9a160f3db10b4d8a3722d0d5737","src/transport/transport_slice.rs":"3ba479cb2d045fce1d6dd1b46be026c3abfa46ee41635a992a7ce2db250ecdb9","src/transport/udp_header.rs":"91adcd615bd37f6abe5210c12cff9771b0e99fab5782713fd8123cc1c8778da0","src/transport/udp_header_slice.rs":"c1bb4d00238bc3562df71716d2606106503b428c81a8ada129ab6d3917e8a2bb","src/transport/udp_slice.rs":"968ea622a6dceee3c864bb8523cd3ed2acacf726ea6deafe9c2af51c49faf3b7","tests/transport/icmpv4.rs":"bfd1b7e295011011c79347f6bcb2d3fb20be8c57cfca6c79d6470ee7082b5fe6","tests/transport/icmpv6.rs":"fbeded3e512f03a9bd93868347d01c170db613057d65757a95e2d6cc49686141","tests/transport/mod.rs":"6c3fd5a92f8c736b1ac9a74bd9b784c70551205ac6e9be7efdcd3d3ac3907a4c","tests/unit-tests.rs":"dcd05eed939140e201d69c67f6db1cf526d8c641f7aabe4985e5dbf27a9ef2db"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"5ca075330924108e56bc42b7deb1858e23ab2eaf8ac364fce5cdc8266d228624","Android.bp":"9fe07078cbd1ae58df55c33d10a827358c148b4dd39909751975f18832893e1a","Cargo.lock":"6d79b2025092ff63457023cc5bf527b6c98238cad427544f40b0ddd269c9f05d","Cargo.toml":"179b31da4533164412f00679bb22989b38b135ebf3a88091d9e354d0216b75ae","LICENSE":"fbaf014d4c710d74dfd291a6ac8ca8e564d4050dcb1eb3756e6c456abeb1de89","METADATA":"859fbe6597bb741dcde2be0c256bab7479aba0317cf6059f66c50963cba7f688","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c33d47442c2b3c1c22373da7bed6a08892717ad667b1141abcc5c97ef390fcf3","cargo_embargo.json":"513f06b1f39e3f9aaabbebac0b427376b3dd80a7286cf43bfdf5436d4151c696","examples/ip_defrag.rs":"a748e2d3101caec0404bc011a76f041bbc3dbb41be37fe22e18e046433a9c36d","examples/read_by_slicing.rs":"67b21139e527b19d0512828c1e62c885aa20ac29b8a88b24ff0e2c34ac2f0f1d","examples/write_ipv4_udp.rs":"a9bc127e6dee230ec863ef8dd394d30bf82aae0038f865b778a79d058fd7daf9","examples/write_tcp.rs":"0354ff9ebc61aa2b80efe7ace7749e09129ff54ed926a3f0bcb29422fec4e306","examples/write_udp.rs":"c7483fa6698ab4477a7025a07ee86d6e2af7be86a9f80132124a10c12dff4396","patches/license.patch":"f1ecd16d788765e2876fe8c77fd98cfbd893ebcc0ca6ee56350a4924b58cbb4c","proptest-regressions/compositions_tests.txt":"cda554b354a481c7d6cead4108681cd6b8c051a7bb73e697dce9936b82b16319","proptest-regressions/internet/internet_slice.txt":"f28bf9cbf302409ce9c32456bb0268fa860014e3e21f9b4dc02f17cd02bc8494","proptest-regressions/internet/ip_auth_header.txt":"ec14f9811b5c951e0ab48284b0a6df54ca33385fd419527ddd70bf98ee89fd7d","proptest-regressions/internet/ip_auth_header_slice.txt":"cf07ba1c614744d6a39e10c83f8a4ee14adfe93246dc0af1378299a9e7f64d48","proptest-regressions/internet/ip_header.txt":"7aa825d4c10f28971a4680aaacd1ab9dc99f985513ea0134cfb97445820e98eb","proptest-regressions/internet/ip_slice.txt":"44763f60e2c6ca22a9db0a9223f96331a042b752537e729061de2f65eb6dceb4","proptest-regressions/internet/ipv4_dscp.txt":"a60060713d0a470cc0d8727eb662cbe52836bd2eb92392089bbe7d0b0bd73044","proptest-regressions/internet/ipv4_exts.txt":"fc4e9cda0c41357fd90c9b7cb3424a1cb50706b4ebad54c4e0b75b9f1af647ff","proptest-regressions/internet/ipv4_header.txt":"c1a217c80e1962d7c7d8203a27deeb76ce4d691133295a69e123c239071888e3","proptest-regressions/internet/ipv4_header_slice.txt":"0b0026858b9372e15c1da36931855cb0712b4ed870393614b451280207e47665","proptest-regressions/internet/ipv4_slice.txt":"3d7b66a49887cd90a9c8be2d273e338323ca9b1d14335056ce328a391c610058","proptest-regressions/internet/ipv6_exts.txt":"2019584269283fa58c4edd1da153007cb1d267612a4c45522f29d6cd811c1389","proptest-regressions/internet/ipv6_exts_slice.txt":"5fdabc3c7d82661a5c0e5cb74b2defdf5d9cc879ab4d9955c79f663c55f0817b","proptest-regressions/internet/ipv6_fragment_header.txt":"ce1198917716fdb582004979d0e7b3f23fb0bd24cc4d5a6bb1609942e520b195","proptest-regressions/internet/ipv6_header.txt":"b5f1b9acc5b5a485f8d608246cd047f5e85fd8416994ace5f10b67ddd0ab6b85","proptest-regressions/internet/ipv6_header_slice.txt":"189f88c6ef73383e4f058e4b9731fd70c2a2daf9a8f2ffc34e0887ba1364b94d","proptest-regressions/internet/ipv6_raw_ext_header.txt":"94f5a82ab1d85e198a1d8b6eca0b86b4bc6848d5cedb3859fcd45ed2c3dda642","proptest-regressions/internet/ipv6_slice.txt":"544a3a69312f4bea4e57c4543486ce35137ffa825a01fa94e95529f4f671af2d","proptest-regressions/internet/lax_ip_slice.txt":"085a62ae1a44aa0e2448af0f06762aa3b6b62df7054da6c4f499c986bff502f5","proptest-regressions/internet/lax_ipv4_slice.txt":"7f2d13cb52b93fa1c9650abc182fafd5f9d76fdfc3c06c1316a08de3910e24a7","proptest-regressions/internet/lax_ipv6_slice.txt":"3c3153b0cde13eaf5097733119c4ada982b425a8dfe8943555b9f0d82bb78495","proptest-regressions/link/double_vlan_slice.txt":"5aced4ec8d4d624cf24e61b6c1a159f93b4d51687f0fe12a56fa0a85cc206623","proptest-regressions/link/ethernet2_header.txt":"b5d91d0ac393ee5bf85a105f13f89aebdb5700f6ec07c98f726a1875fe2d12d7","proptest-regressions/link/ethernet2_slice.txt":"1f9047bfe526e0b6af9dee7ca108d4855418159801891dfff31ebb1d3059eaa3","proptest-regressions/link/single_vlan_header.txt":"eefed03214259ad8ec23ef26f98ea973cac1b80dad8d13f34bb2b99de007f894","proptest-regressions/link/single_vlan_slice.txt":"760bd91c71b9653bd4506869d57d4c38057b95da10bbbfbc2a57be429131c7c4","proptest-regressions/link/vlan_id.txt":"249807f03882e8d86aa68c460e0a5170fd2b040c158ff5bfcf6e8cc72ca9c89a","proptest-regressions/link/vlan_pcp.txt":"c935f15506be4836ecd04d535f884c590ef52ba3eafc8a65c3202e66c2195240","proptest-regressions/net/arp_eth_ipv4_packet.txt":"92d487df120ccd798becdbc7f77d0349d9d7a9541aff95d649a77e0337854eb8","proptest-regressions/net/arp_packet.txt":"6a20485e3ce488f9da9a64f7b9fc76e15c39575e51c8b6a02b0d6c49dd690c0d","proptest-regressions/net/arp_packet_slice.txt":"2449177084f07e190f6bbc2c067813cb9cd380e983073f2543aa3f7050298fc1","proptest-regressions/packet_filters.rs.txt":"b32112123b4ebcac3b1a2370c603f1a55b65a6a47abbcb71882886271a5bf041","proptest-regressions/sliced_packet.txt":"0f59adccb52aad6467cb562cc279288de262e64c570d4b08bba37e417e1259ae","proptest-regressions/transport/icmpv4_header.txt":"5cfe000c67124a90b839fd438ced654b69e417f769dfad10d10d5c948fece351","proptest-regressions/transport/icmpv6_header.txt":"a1dcb259f46d843c26b5708a727107644b228d88e358098a051e2474f80b8cac","proptest-regressions/transport/tcp_header.txt":"455bb8904eb89c77fb87c38632da93ade4e965ee7068d443898b3c3dada7615f","proptest-regressions/transport/tcp_header_slice.txt":"9e2b405c9bbde67d092dfd8aade7225e5ac99f99f8e4d85b5c619048fe9c14ff","proptest-regressions/transport/tcp_options.txt":"14c9787903b076e4f77212b4bdb34f0757e82daab993c5e836009de1e4204576","proptest-regressions/transport/tcp_slice.txt":"90b4c039e438af806b7054ad38d46934e92e8ea4393505e5ef47dbef41091e4a","proptest-regressions/transport/transport_header.txt":"54bc8b2e0052cd29caf7487b8f38a6121b5f3250b8bb6109d8572da4b0736963","proptest-regressions/transport/udp_header.txt":"1043f35c4643defde43bbe105e0e2c780603a35196e84de6201f489a27b640cf","proptest-regressions/transport/udp_slice.txt":"a909bd42229448498a77909169aebc44b37f286e9a7a42184453d79f20d43247","src/checksum.rs":"7388dad242209f4d6c001a0cd0fa5cef5047326fb010391dba034ef084d9fe20","src/compositions_tests.rs":"6c91b99eb6d48247074b3d604f6157b60f45bbc5f416e832eadfb26a7ee21fbd","src/defrag/ip_defrag_buf.rs":"c493b38b492c940411a12041fff9034cb03dcf0ec79a1e3cfa80160f397f7d56","src/defrag/ip_defrag_error.rs":"72f25a2bd689e5c5b33ad2c97a5c77dd098a333221145c1de7616d72b889f243","src/defrag/ip_defrag_payload_vec.rs":"3e52e7d70b7d90344582a2deee4acf035f6fc92e7b54cd42d34c5b62f4268ae2","src/defrag/ip_defrag_pool.rs":"08d1d0f97f614dca6b1cf79a84af6721604bce106eb5983968e0b37baaabc70a","src/defrag/ip_frag_id.rs":"11153393c6daff8cbe753ba38ca96578c2c1ef6a616f84f9c6cd9a2bf1a8f96a","src/defrag/ip_frag_range.rs":"4ea25928a52736db9a179ce40fc854b8158c0415ddc020eff2f868e31a6942ff","src/defrag/ip_frag_version_spec_id.rs":"82a3a87b27bcfd1c9c6622bf25e37e7de77d1146d6aac120e4943a672eeb53f0","src/defrag/mod.rs":"4c05ede1918af9e6df0bfa5245fb94c32ab8549d8b541a69c592af41bf5f631a","src/err/arp/arp_eth_ipv4_from_error.rs":"7a977704e99cda33e4ce76f95d9e68f910049b05aff2a8927456374079fa8592","src/err/arp/arp_hw_addr_error.rs":"947e0c3e9ed80ec2d4c4e11bdd3bff393a0e9ce794271fa15f394deb7b3256c2","src/err/arp/arp_new_error.rs":"a65cb9317495017f9eabe911249ea9dd99385515d2ba1f42f656628103b291a0","src/err/arp/arp_proto_addr_error.rs":"270d2c1f0a27291a80ba04adf304642c448e3d3b6cd957f7ec0a02dbdd68107b","src/err/arp/mod.rs":"8e30244317ebaec12c123c4a2e6252a4d77bfe593d372001d99f251b8f30026f","src/err/double_vlan/header_error.rs":"94b224334eb6182ececb530f59d14c270ca1996441995be84fa542d9d241ed2c","src/err/double_vlan/header_read_error.rs":"c7ce4eaff1c20c10e36b8cc689db909027fe5bdb317bf8fd59327fc7f34b6c11","src/err/double_vlan/header_slice_error.rs":"3c6857ae3ff38070ffefdaa1dc60573f2c2ca4245a7dc5d19a875175c5d7d524","src/err/double_vlan/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/from_slice_error.rs":"dd58dd0a19b475b84e030d1da148255142e2c2e0434a66a72ea2d021444978fd","src/err/io/limited_read_error.rs":"5a38dc71e00e4e8c6d676e60dfb379c20d49ce274b71349d252a317427958c08","src/err/io/mod.rs":"9b1c86158fc40b115e44d48af107c3e24d3bdc3ad07a7f24938d599bbb5c0b40","src/err/ip/header_error.rs":"449e2f2acd703a9c01a88f882b91e5952143ae3007e117402b29e3b74a7f60a6","src/err/ip/headers_error.rs":"0315889f76d125262169f18592b55fe070dc9cd1bf2019bdf7bdad6b6885eff4","src/err/ip/headers_read_error.rs":"de7dea1c2aa5c12ef205fbc0d300e5e62905017bd7be52bbec5219540648e740","src/err/ip/headers_slice_error.rs":"2279864b0225f1f3c52d252e3fbd648685e77c5f5620e12c9b58115bfa0b1a84","src/err/ip/headers_write_error.rs":"fcd21869d86e39af87e5508d223b3d0045f0c29b89e249a3edefec19934a708b","src/err/ip/lax_header_slice_error.rs":"57378dab273cc2597c2be9275b2a47f41f0bfee2aa0183987b8aa1ee1d37e7c0","src/err/ip/mod.rs":"8cf92db0272bc87cb1535735707024494bf22d26ae31bb8a16ec522c658fb2ab","src/err/ip/slice_error.rs":"6967467fb090d55e08f61fb9f3e141ae67765c09f0307a171e78495ca2a8158a","src/err/ip_auth/header_error.rs":"95c8daada91eb344fe604e750859b5e311ef8b43d2a446b1f6a082c382a2f679","src/err/ip_auth/header_limited_read_error.rs":"b834012f616673ba66b260dfd44b353f4bea553394ce11b8c4fe1efd0c9aaa27","src/err/ip_auth/header_read_error.rs":"e540027bd6db20c16029d770a045e4cbfcdda7c23ad9858c1cb97dd6c2006600","src/err/ip_auth/header_slice_error.rs":"3040b7ac84cd81dda5f51570789723bdce90238bb8c4ba0d38a49855d6cd5b3b","src/err/ip_auth/icv_len_error.rs":"1083b80d844e645b4bc0d95c5a0f393c60704907cbd29a62e5540e3e1386594c","src/err/ip_auth/mod.rs":"8d6c873698028773016d43f89c8f1f4207258ff24c1d82edfa12b880df76e956","src/err/ip_exts/exts_walk_error.rs":"fcf004213d739390d6ccdbd5ed97b5ed11813c0c020005881d0cb6f4b9629f7e","src/err/ip_exts/header_error.rs":"b74ae7a23a677836da7553662f140f5d4079c8de2938f4a339fd86329ff00cd8","src/err/ip_exts/headers_slice_error.rs":"5c803b2e659ee9f228d6a3c21dd6b4dc4ddf30ee93d2ffeba4f1f776bd655e24","src/err/ip_exts/mod.rs":"f5957b2253e52571fa2cc7e6d9e20bdc903f5ccfcdec6ad8c317b8a13560748d","src/err/ipv4/bad_options_len.rs":"ba7924a492736cadf23bb94fd4a2d03443d2581ba7ecc7bd6f159a5999e94c71","src/err/ipv4/header_error.rs":"08e881e7e3aa2c66d4b3aaf502e2fb44b57a8cd0e12680226921eeaf41641e01","src/err/ipv4/header_read_error.rs":"8c23bc0536b492100f5da785001be475d0aa3ffc96fcdd21a663ff6b5afd11e8","src/err/ipv4/header_slice_error.rs":"e132f20188ad07098fb2f4d99a64276083c37a246035ca0a388aa629c7e0a2fe","src/err/ipv4/mod.rs":"22be02f957eae93403a3b5e9892d8bc8c6e48636c7b46e4a3c48c647cad01ba6","src/err/ipv4/slice_error.rs":"4cf6f7ad034dbc39f2af27b1e10e69050883c3c386d0a81c14f25e27aeaffd59","src/err/ipv4_exts/exts_walk_error.rs":"a86116539f0e354267a982800f48a90bc6576bdc0d07594b336bff598eb63428","src/err/ipv4_exts/header_write_error.rs":"0b9a014265f84edf5595dca68f75e64b6d1c43c5b865824fedfeadb5436cfc4f","src/err/ipv4_exts/mod.rs":"3f15f230f0e89a41ac1e4d8799bc713a5c06197dee36e627f3c074dbaea16a9e","src/err/ipv6/header_error.rs":"77d0fc97d86111f2d0faa3616e69794add675715c64847098334872ae9f9086a","src/err/ipv6/header_read_error.rs":"13c1c949477a179398d79402ff476b5452988c64c97b23a69bc56697a99edbb9","src/err/ipv6/header_slice_error.rs":"ae3c39185449a98066938d77c8be1c8b5faf1333207aaad9e96de882f60fc6be","src/err/ipv6/mod.rs":"d62c636c86f5a60f21809a9dd6afd8920077380dc3f968a8bbdd13222603024e","src/err/ipv6/slice_error.rs":"c354e6af13c8ea670d2a9b8201d3c3e44bd257e881aa888decc6a5489e863f93","src/err/ipv6_exts/ext_payload_len_error.rs":"4f5061bca4f8b6c50b94c8c0ff7c191e7fb95c0a8c97e40eb340b5978b1ff9f5","src/err/ipv6_exts/exts_walk_error.rs":"f5731b01fb3d41efc690ab1bf6818ed7d3a01465f0f9832987712611124dcb87","src/err/ipv6_exts/header_error.rs":"8c0c84f50680f86ef8dc7ee54fa4cbb6760d49640f73f48d4b88ebc170b556e3","src/err/ipv6_exts/header_limited_read_error.rs":"5cc090823388b1daa24640fbd9be279b7a74c77236b38b4426e882d2586415ca","src/err/ipv6_exts/header_read_error.rs":"452d91d054deb790d5fe6867069faa6cc23f20ccd6f8728e61cfc2fc6fcafd08","src/err/ipv6_exts/header_slice_error.rs":"046413243923b4887fca1f88704cf64b36db27fb91a7a4f819d4ddf043891d9c","src/err/ipv6_exts/header_write_error.rs":"551f355334f5b8954200e8ddd12eca84486a6af4b782f7aacae3b53ffe3fce1e","src/err/ipv6_exts/mod.rs":"5e20a8c16ba544de38e463e0ab94a3dce700b3d5bccf5991392982ee7c726a15","src/err/layer.rs":"eff5ae3b4d925e525a2bf374544d8c3effb78cb78ca9bf09e19f8adcfb12b90a","src/err/len_error.rs":"b72b38891edd0f2a6af5873b23d99d10ec5c224ce8defe7da77815b84e1d85c5","src/err/linux_sll/header_error.rs":"cb87d51a9d63945d4208c7b25a939a27b620b0350dfb9b43f367b7593a266111","src/err/linux_sll/header_read_error.rs":"167400a38c4ef3f93c4ea435cab6bad4c8624aca3711e9277ad5aa90c6a95aaf","src/err/linux_sll/header_slice_error.rs":"d4ae8dc2b0904292d5a00517c7ec3a8d8d47ac874550c0085e4e3f2d5370e475","src/err/linux_sll/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/mod.rs":"46ac424c27eceb541e0fe976ed8527f7a1879217416bd961c22959a6a735bb82","src/err/net/mod.rs":"b1024961c26c1e1d73eb1b01186c54b8914556022853d5f564134ddf2103b6c1","src/err/net/net_set_next_header_error.rs":"1bdf056b3a97078135b83906c9e2c2afe00989d850fc4ff469b70ff2ae52b42b","src/err/packet/build_write_error.rs":"e51320e0dcdec10ce69ddc19602c7a79aa548f39fe85fde33f6bae44df458685","src/err/packet/mod.rs":"05c2973ce964fd061f9cb53f17a4e88d880a4e70461546871d73e28cc90fb04f","src/err/packet/slice_error.rs":"9f05acdf5d949ed484c5c162de923fba2e261da2ead14057119061699e32bdb6","src/err/packet/transport_checksum_error.rs":"db0503fe7f0c3e278a34480afa8a2f906538839bb2f913579fc6cae3d0d819fc","src/err/read_error.rs":"47cf36c5b1b1fc19f37cae597bd26512565d0ffaca5ea9c2bcf1e77aabbbacfe","src/err/slice_write_space_error.rs":"dafd90ac1352a6924a16644733e2f3eac83bcba3a5535f31ae192ec0ecba2974","src/err/tcp/header_error.rs":"821c34df02a3d7f52f90e019c94f5d434b5d1687ed2537ca717417ef4c1fc2b4","src/err/tcp/header_read_error.rs":"c29758051be2beab762ff01e262adb90dab3812a9e0f279b06a0e90ce0ff9969","src/err/tcp/header_slice_error.rs":"e9743c1bff4dc6d286164df44e78a5764f497f33d10dc25bc1207f26d390f549","src/err/tcp/mod.rs":"968abc73c13026c39932f349ac0cc44d4e65811624621b7bbfff39e477a968a9","src/err/value_too_big_error.rs":"6f247333b36b504a41870688834c06ce53ae263af316ed418d1ce8804ed03a9b","src/err/value_type.rs":"a66a995d3452d261b40bf7323c6ea2e06236f726ad89826b73f128d93e8744ef","src/helpers.rs":"94b2d9469d376f39d38fef3d76dfd5a444425c414221ee48eee4b13b42e5a6fd","src/io/limited_reader.rs":"b8499bd2e3ffebb5b6d88713bc382cedf9a8d7033ce790e2c56f8932b25e9020","src/io/mod.rs":"bb81e1b6b01b26c3496675905dba6f9dc19b0a6333352e6eb904ed51bfa91007","src/lax_packet_headers.rs":"d9940c39c66bfb8f3bc016d4cc6ea3c0d793a5cc19fd836d0e14cf84500b1af5","src/lax_payload_slice.rs":"12b998d4e6592789181a9ae0d694fa3fcea4eed35327ecb1dced095c8b47f8bd","src/lax_sliced_packet.rs":"d080c8c6bb84b89d7cf92f40adc08f2c7583152ad46a2d043f9aa00967cd3732","src/lax_sliced_packet_cursor.rs":"88a631f41d899f1bee9c103cae1dc88d8d07cc5a3bd01971d2e4ed4a325d2242","src/len_source.rs":"0fafe650476732516e6196386d0cf1dcb456999f68ac541973c3e100d66e7dea","src/lib.rs":"93961bcbcf0ee78468ce34eacf708817b33d9897ca7cf70973e1416de74138c2","src/link/double_vlan_header.rs":"3c1abb259356f82c04f564edb8a01c11174ed4b46f7ea33f91ab063097d3490d","src/link/double_vlan_header_slice.rs":"02ed6e77124f73bea98577d725f63a93237f4b7f2b5c0dc6b82917ef91dd3156","src/link/double_vlan_slice.rs":"772c7747ebdf1f811a3c93dce485362462364c03fd2ee42f474f0c0e051bbcb3","src/link/ether_payload_slice.rs":"8282c6f2b7fa47176090fa0117dab1720568b05f93f703d6a1fda87b26b2b86b","src/link/ether_type_impl.rs":"99a87b820dc3ad0c193740d1e971ac0256ecf3568becaadae596a10b5543ae0b","src/link/ethernet2_header.rs":"b574e528989e989e4c38a5a31a93017578cd564efc0261b7ef1d33c1625300fc","src/link/ethernet2_header_slice.rs":"7c48ecb25a178b41027e8f5ce305d67bf0df883bc9e8ff2cc13b4aeb2e5bf987","src/link/ethernet2_slice.rs":"37ce79fbc4f97c5c0c76784c317591fdd99c2484cc6d7e70b6608fb5de0e79d7","src/link/link_header.rs":"819ebaa407501f1086f6bb409d47f81152eb1f63c118b6c3df6885becc8ebbc0","src/link/link_slice.rs":"68f71f79b4c990e29f3717ec73cae631d9248e677b4a8693c7ced2f230e6f2b4","src/link/linux_nonstandard_ether_type.rs":"6d31bf570c7f1ed78e4df0212589b02b54752f73f470e659dd43436ed2074b7b","src/link/linux_sll_header.rs":"6e2b97e6e9f210d638cc7ef08b333ce0037c6451e0bfe44040a1d88e53890898","src/link/linux_sll_header_slice.rs":"983f237dbf7dc15408c8e201c2e43ad71e4d97e3fde68647b26c78fd358bad1e","src/link/linux_sll_packet_type.rs":"8fd4214ae97f691db2069566eaf2ac07773d87dd78fb0d900c885591d89ea7c1","src/link/linux_sll_payload_slice.rs":"a83e19868863fabd1c3b6374be4259eddeafd8778bb469d27a9015ec3f112e87","src/link/linux_sll_protocol_type.rs":"d3a943ef12d5a7fd2c3f68dada9deacab76abf8e3867c932c03b6bd6bde29053","src/link/linux_sll_slice.rs":"1d2dbf93e8c47fddc824c97de3362cf77f863f918f320973708c820053a4bccf","src/link/mod.rs":"42b892be2e48f06f6f235dd5cd6f767428982971cb32ad9ccdbc1c0bbc391b11","src/link/single_vlan_header.rs":"1e26b6eb1244b63296e87375f06e70cd207933268fcd390d993037deeca13232","src/link/single_vlan_header_slice.rs":"2cd0131e33a80aff3abf10c372a34744a4d976f10b3172a61deb1e77d3e09a92","src/link/single_vlan_slice.rs":"cc9f690f79cb71cb269fb4d221db2aa67c0cda3278d8f7e3d5646ba44e05442a","src/link/vlan_header.rs":"b403aff1ce9baf249b6dd3edbaf4c581bb82e764da0724f979ddf762ddbd22b9","src/link/vlan_id.rs":"fd00d92c100d380005c5f8aaa8587730562d9aa34b318229d08cc8a036b391b3","src/link/vlan_pcp.rs":"08eb38d5d2f1a4478dd068fcdc439869c841df7b46a7773279d68485984a92e3","src/link/vlan_slice.rs":"25f40947307db56362ccd802cd115585f54c0d6e85a245219f9c96bb4ff24222","src/net/arp_eth_ipv4_packet.rs":"872df2a3be2a8b1abf0885ba4f25d93278a418897828912ae4ba718f7a199207","src/net/arp_hardware_id.rs":"492f83b9570962906500ada7b0e02a1bad4a974c4a0a8848553ad2a1dcef0dd6","src/net/arp_operation.rs":"105f1fe6e5d3b5fa9b9ef322429253462d9136582be2b2fe2b8425f6ed117192","src/net/arp_packet.rs":"8af35ac986858db6ecd5afc00df232ce68aa92a886679ce0f396a81b1225becc","src/net/arp_packet_slice.rs":"3212f9d5823db29693ab00784cbd3f178b00a7ed2eb66802f9277ed941bcc7a0","src/net/ip_auth_header.rs":"22573d6e5dca187f69270c4482349a6c32021c34370e86418e330cc0dea2cbfa","src/net/ip_auth_header_slice.rs":"24af9e7ef37e5a68fa75ba1e60ff77bcc1c69c542c734ba8fe3edfd5c59e8fc4","src/net/ip_frag_offset.rs":"d80220902049a8cba3bb2d418aaa1ffbe92a1cd5ad86f1c06a87e5e398a22820","src/net/ip_headers.rs":"0aff6c01aa4e88933f930972aee4af02a28c577873d8074beea0f47906c20104","src/net/ip_number_impl.rs":"0c8f8244e1e0e89c7b725665795a1ddb994780fda1d222dc5c122828c18ebf26","src/net/ip_payload_slice.rs":"fdb9c7e0c4a1b36b85e254d966a978c5eefadc460dfbc77c101aecc56e356874","src/net/ip_slice.rs":"557272d95be6e0cd194f5f275c582110b0ed82c5ac6e043ce287e413b039ba2c","src/net/ipv4_dscp.rs":"a58269019f9c8d8a75e96bc0ebef88ccf52bc124e413890b2708938945382a60","src/net/ipv4_ecn.rs":"058538db9b40fe5b38528d7132681992bfd40ab05e1424de37e26d6628ef6b28","src/net/ipv4_exts.rs":"e86c7ea1a253541f6033fb45b2280abcd8f00e8cbc6bceab91581db0128fa641","src/net/ipv4_exts_slice.rs":"8573d4c148e42769fc50ddfcace0fb21e0ce58fe3f07131a1e87d1370e88d721","src/net/ipv4_header.rs":"362411271d3255555a201b9b922a92fe1e1d445a10a4c70775b61c814b97f43a","src/net/ipv4_header_slice.rs":"9c054952ad845a9fc53d799beba064cebf574316f7896cb8669d99ce935a8bcc","src/net/ipv4_options.rs":"1c00583a8d71fc1a3fa2ff288b2b7332ab45723fd1cc5a3eaeaa8f3df56d98c1","src/net/ipv4_slice.rs":"d40d738911319e6af37e5bb0f72bd37a8608f8bc299ef9124d0d54c987625fa6","src/net/ipv6_ext_slice.rs":"ecfe7370fbf0199c8a28d7dd292ce4f94441d3c1abadb281229e141fe1d1a852","src/net/ipv6_ext_slice_iter.rs":"edc969e0d25724543a9530b9aa5dc3c6da6503f7135cc63de52bbaaa4418ccc1","src/net/ipv6_exts.rs":"674d4a33e7fbbea422cb0f0ff0d0fa8f04a3c26c33113676c175b83da90367de","src/net/ipv6_exts_slice.rs":"9264956fcbead2ead446dc5976a223719d8a98fe8fa285c1da2793a25ee8366d","src/net/ipv6_flow_label.rs":"8e271b96e476641d64ab74d16f44980fc266477af7d567f6f5bc5e6b1e61da67","src/net/ipv6_fragment_header.rs":"ed6c9ebbfdb388e6dca0e1f89954ef744a94c5882a1ceb13fab1bddd1d530617","src/net/ipv6_fragment_header_slice.rs":"115429110c4501d786aec68b96b1d440e3c92c68786ad97dc1b12e8419fa8647","src/net/ipv6_header.rs":"beab70250d6b23a2c1fa92e949af67868f9abf421ba8361b5f75ae8a15b41716","src/net/ipv6_header_slice.rs":"2f13f5894031b592142d6ada1058910190c0cafdcc03cb5ff1e9ba84024d4026","src/net/ipv6_raw_ext_header.rs":"9a56a6aca63fc8a744dfc596d2e178f3611fdcdf9e381e7eb8a4d4ab31d17108","src/net/ipv6_raw_ext_header_slice.rs":"ca8bbe564bcffb6c811ed584a6976b156800999f20bace94be8299947a4434ed","src/net/ipv6_routing_exts.rs":"de9f55abbf535a89fa55d97877ed998ee3000acc6dd79ac084c4fe7414fa9cbe","src/net/ipv6_slice.rs":"757c6f9fd25b5a1f7280c3a87053725352aafbd37abc4fca22b3b31745275a85","src/net/lax_ip_payload_slice.rs":"6ea047579308125bf414304458d6c204fc9d93c6332a5a10d65b6be17688df1d","src/net/lax_ip_slice.rs":"0e11a7c18f8893106a2f11ad1e237e27ce4132d6d1b3b9069514395775126fb2","src/net/lax_ipv4_slice.rs":"ebb1ffb78b600ff167516f68105335b03163e0faf8fd7ba35b5067544467f9fb","src/net/lax_ipv6_slice.rs":"2d09cad4725130ed59c57a8d944e6effa9a63749d512e796f7ca4b9700f516ec","src/net/lax_net_slice.rs":"1e6968208602ae285804d09b6c71113048d51b91d5d5ad28064c88df28d1b595","src/net/mod.rs":"5c30f09ac80e57bbb0bafa66511195ed6e2a561b62f91d11f887bd49c2660bb5","src/net/net_headers.rs":"19806ffca943aa7c9aee69ae71cf63f9d5df96fa41206b43bed068940cb33be8","src/net/net_slice.rs":"f4b066a394250de381648f4007bc89438a51e86dc10594f6dfabf628696b536f","src/packet_builder.rs":"3de47508e0b20ae6c89be2ca81f5ff03147a4a084e9601f38864ca7af5dcbc02","src/packet_headers.rs":"336195e131e4ec06f7a286c67f72b3e56a653197dda21f22b656711817d8ea04","src/payload_slice.rs":"67bad607216dbda28772fe7d884e225dd0b3edfcdc85be1068dbe809c29ec180","src/sliced_packet.rs":"64120ae039b98693a9963ae4e32b8ea35ccf563d9eb61610022348dc8df9148a","src/sliced_packet_cursor.rs":"3c7678fb802ba4454dbc711e37900ba8f0e2f95e1fa820094742aceb0071695f","src/test_gens/mod.rs":"82d6011c4b38ef626fcd4048e966efd935e1637662c074f1f25af4354f36e188","src/test_packet.rs":"a8cf05a372690e70a60e37a14b9215d6ad9f96b97b562bdd2f3432c6cd7403a4","src/transport/icmp_echo_header.rs":"b2ec597f411dabde553c66583d21339765e623cb7d4d96cab5252079a53f9abd","src/transport/icmpv4/dest_unreachable_header.rs":"1f619edf7538cb84f9924ce9c9e1461bd6bff6254f7c4e1879a054e37f71e9c4","src/transport/icmpv4/mod.rs":"445a123811fa05bd966e7c93543ab61f2edf317f553044696d92b62e232d97e8","src/transport/icmpv4/parameter_problem_header.rs":"ee95757391f3d2189ea4b8a05bae5faeea62dbc8282092ac99fe527d96392bce","src/transport/icmpv4/redirect_code.rs":"20f833e7b44a24edcdbacb4a42e1bd6709251711f56d9091a3667f5754d00a86","src/transport/icmpv4/redirect_header.rs":"9b93ecf873776b3d387b0eb2da369d6da87c647aa48fa7e12896b81e035bded9","src/transport/icmpv4/time_exceeded_code.rs":"ebc54359a02e6897a3b419274f01b73548ba5c8ac847f996e8f651893a53578c","src/transport/icmpv4/timestamp_message.rs":"42fae4577982a51da7c24f42b77e54b680d540784efe801f0541c023e6ebc78f","src/transport/icmpv4_header.rs":"47d1245f759880b1c36ce659ab572de437ec3e83038e2bae39abe6a4db6d0e8c","src/transport/icmpv4_slice.rs":"4db10d54fefa306f20170a6cff0572b861778613238816e9e95f1200de3cac56","src/transport/icmpv4_type.rs":"afec53948c2141eceeee6b5e825879427a7cf059d86ad4c97773ec3a7185b804","src/transport/icmpv6/dest_unreachable_code.rs":"dc513f7b9dbbe0f3ceb3eb0eaaaed15487d5038bf7dbc51e05f60eb269190111","src/transport/icmpv6/mod.rs":"251734f9a53f91f28468c580de64f0cd30f54f74e1e53852cfe25f71bc5ee9fe","src/transport/icmpv6/parameter_problem_code.rs":"0fd1f4f3abe254222add89bca8b3acfeca56c6d67882041de38e5c7a7a4fff46","src/transport/icmpv6/parameter_problem_header.rs":"66c54b02ad56e99b39ee68712d1634400a882ac3de2271807708bc0f0be10d72","src/transport/icmpv6/time_exceeded_code.rs":"e0464ec86abd7c6c61618a6a136d6ebfe6a7673ed08d53d4a3b67fb53c0abdb7","src/transport/icmpv6_header.rs":"612f7189f7626c02de13d2792965b74faebf27aa212329ae2b54f694d681f222","src/transport/icmpv6_slice.rs":"d63c435426e2bf357285d6a7ec7d956c7c4a66ce92bcf762f31a823358f70a8d","src/transport/icmpv6_type.rs":"81239361b78e2bd588098f04dfbbdf92163c04119bc19761f0e2cccd8bf61773","src/transport/mod.rs":"c647c794e7c46fc4098da76b1a23743d35c4b7d1ac9b0ea6282ce851ed977a9b","src/transport/tcp_header.rs":"a6153039059dc6ff74bfa45ae567ea05a5d1d598c139a80ab47fc0d98b709429","src/transport/tcp_header_slice.rs":"de3766544a3ff9f40ea11ba3150a1e8175a48e1e1bcb05305fa00039ae87a690","src/transport/tcp_option_element.rs":"0133f6759caab0368634523699d77cb18e6c9a1b816e3ee9eae3867eb6ca7f04","src/transport/tcp_option_impl.rs":"a57d3b760358f448691b9094202291241d165616a226e6fe4590c6d3f62175e4","src/transport/tcp_option_read_error.rs":"678d6904cdb82d829d8bf8df8022a5823b20ab1b654127b479dc19b9f1a62536","src/transport/tcp_option_write_error.rs":"b078629cfa5255ae4bfaf21c4115683180d757a82bfd6760a91a3511293339a4","src/transport/tcp_options.rs":"0cae0fe51364a7c8e4129e4b401d3ecef9f28ebcd239e4c5b351b17f9c984266","src/transport/tcp_options_iterator.rs":"606b27483d1e0a112c9c706c9fdca1b9673c15dd3f1f74611948cbbde8c2dc04","src/transport/tcp_slice.rs":"3e6479bbef88793bbdcfa1249858c33a96b105d6059a469c9ae9f0a3337dff13","src/transport/transport_header.rs":"80bc33b7ff4ecd59d2724a58c94bcd476298c9a160f3db10b4d8a3722d0d5737","src/transport/transport_slice.rs":"3ba479cb2d045fce1d6dd1b46be026c3abfa46ee41635a992a7ce2db250ecdb9","src/transport/udp_header.rs":"91adcd615bd37f6abe5210c12cff9771b0e99fab5782713fd8123cc1c8778da0","src/transport/udp_header_slice.rs":"c1bb4d00238bc3562df71716d2606106503b428c81a8ada129ab6d3917e8a2bb","src/transport/udp_slice.rs":"968ea622a6dceee3c864bb8523cd3ed2acacf726ea6deafe9c2af51c49faf3b7","tests/transport/icmpv4.rs":"bfd1b7e295011011c79347f6bcb2d3fb20be8c57cfca6c79d6470ee7082b5fe6","tests/transport/icmpv6.rs":"fbeded3e512f03a9bd93868347d01c170db613057d65757a95e2d6cc49686141","tests/transport/mod.rs":"6c3fd5a92f8c736b1ac9a74bd9b784c70551205ac6e9be7efdcd3d3ac3907a4c","tests/unit-tests.rs":"dcd05eed939140e201d69c67f6db1cf526d8c641f7aabe4985e5dbf27a9ef2db"}}
\ No newline at end of file
diff --git a/crates/etherparse/Android.bp b/crates/etherparse/Android.bp
index b13f720..5b5ffbb 100644
--- a/crates/etherparse/Android.bp
+++ b/crates/etherparse/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/etherparse/cargo_embargo.json b/crates/etherparse/cargo_embargo.json
index 1bbaa25..bc7882c 100644
--- a/crates/etherparse/cargo_embargo.json
+++ b/crates/etherparse/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": false
-}
+ "tests": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/fixedbitset/.android-checksum.json b/crates/fixedbitset/.android-checksum.json
index 166aa2a..0e1cd7e 100644
--- a/crates/fixedbitset/.android-checksum.json
+++ b/crates/fixedbitset/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"65eb1fb1b2b22c13be3bb7b338941d688516e35fe0a6fc021488bcf918ca0a68","Android.bp":"e6b507b254022db002aa18b8fc1c37285fb2225c674069a0c6317999645db2f2","Cargo.toml":"14060a7487d33021d6a2ff017cd547ef708734f300f247ae6e5033dbf0ffda54","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"b50a04fac0fa410b4792df07551da43d0358d9cbcca8eb50a05927a7e45d4ce4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"28f813d0390a086fc60fbdc4dc6c691d00bf4395838b93f18f4791277ed11c95","TEST_MAPPING":"a15e655e7d7eba0113e66728759a9e5d653fbc24520ef0941eacf8b9507f0085","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","src/block/avx.rs":"82028c62ea07ab01fcaabe99cfcf63e9ce1422fc0fd63ae36d6f50a2cea4b2d1","src/block/avx2.rs":"372dfc40fec16ba18b9ce7e6d8d2cdb1ed1d450c229fb9f7e9be5875b12bdc15","src/block/default.rs":"a63e57143b239bdcb41bc64ef23d9cf3124902d4815b23c161c3c576fd97d16a","src/block/mod.rs":"f0c7bc83b92d555b5746b8b058d11c28ff5f2c0703559bd68cc8a0b6fa00ea47","src/block/sse2.rs":"7aa64b03a3cd1bf10dadfe7f8cdae0da007000d73d81a580053db3477ec09b7d","src/block/wasm.rs":"5b190c5b54929e45ebc81f5c40117163e0d83ea845bc22bd6204d1b9c218b9c5","src/lib.rs":"c52ad8704c585af663f1909bc9009193100192348d7d6a99dce6fea9ae81dd84","src/range.rs":"00e2ce7a57365792d8ed9b04a0a36752aab60a2d25156d41bda6a9e40104e004","src/serde_impl.rs":"fdfc1d518d9dea5d65f2cc1f6f7af00395a56e8003f3eed02794b47f452fc656","tests/tests.rs":"d7a6f671d7f99338d8f00395eb7c5ff0211c49254f75fdc43390c8ceea2539b0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"65eb1fb1b2b22c13be3bb7b338941d688516e35fe0a6fc021488bcf918ca0a68","Android.bp":"b63d1cc28189a6864db5b11f05f6f1cbf14d00914919a1972c341b3f35a6b135","Cargo.toml":"14060a7487d33021d6a2ff017cd547ef708734f300f247ae6e5033dbf0ffda54","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"b50a04fac0fa410b4792df07551da43d0358d9cbcca8eb50a05927a7e45d4ce4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"28f813d0390a086fc60fbdc4dc6c691d00bf4395838b93f18f4791277ed11c95","TEST_MAPPING":"a15e655e7d7eba0113e66728759a9e5d653fbc24520ef0941eacf8b9507f0085","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/block/avx.rs":"82028c62ea07ab01fcaabe99cfcf63e9ce1422fc0fd63ae36d6f50a2cea4b2d1","src/block/avx2.rs":"372dfc40fec16ba18b9ce7e6d8d2cdb1ed1d450c229fb9f7e9be5875b12bdc15","src/block/default.rs":"a63e57143b239bdcb41bc64ef23d9cf3124902d4815b23c161c3c576fd97d16a","src/block/mod.rs":"f0c7bc83b92d555b5746b8b058d11c28ff5f2c0703559bd68cc8a0b6fa00ea47","src/block/sse2.rs":"7aa64b03a3cd1bf10dadfe7f8cdae0da007000d73d81a580053db3477ec09b7d","src/block/wasm.rs":"5b190c5b54929e45ebc81f5c40117163e0d83ea845bc22bd6204d1b9c218b9c5","src/lib.rs":"c52ad8704c585af663f1909bc9009193100192348d7d6a99dce6fea9ae81dd84","src/range.rs":"00e2ce7a57365792d8ed9b04a0a36752aab60a2d25156d41bda6a9e40104e004","src/serde_impl.rs":"fdfc1d518d9dea5d65f2cc1f6f7af00395a56e8003f3eed02794b47f452fc656","tests/tests.rs":"d7a6f671d7f99338d8f00395eb7c5ff0211c49254f75fdc43390c8ceea2539b0"}}
\ No newline at end of file
diff --git a/crates/fixedbitset/Android.bp b/crates/fixedbitset/Android.bp
index b394fef..284c2c0 100644
--- a/crates/fixedbitset/Android.bp
+++ b/crates/fixedbitset/Android.bp
@@ -54,4 +54,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/fixedbitset/cargo_embargo.json b/crates/fixedbitset/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/fixedbitset/cargo_embargo.json
+++ b/crates/fixedbitset/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/flate2/.android-checksum.json b/crates/flate2/.android-checksum.json
index 4af75a4..b4ac8d3 100644
--- a/crates/flate2/.android-checksum.json
+++ b/crates/flate2/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2dc0c21f70c725dd5c24b39bd62c6a5b03a3beee8d5121744e92416b328de80a","Android.bp":"b0e0804515592f57ad232de0ba73204f7db00b37f79a32538e4b4b4e671fdb51","CHANGELOG.md":"b92febfa55f3955af847ee84e0a62d82ef1fa080ef791c926c865b1adfafef75","Cargo.lock":"f2a736fae4e085345eed57bcac41d76bd3f518bed6e577c3955c9577f776c382","Cargo.toml":"6cb7c1c99ceedde86bebea4a2b23df545067fc44a41bf63e717a94ba8eb5b551","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","MAINTENANCE.md":"9bfa11af24e0f872b14ba6df0df9a9641d36e21af67af1a1e3f86b63d7ae16f1","METADATA":"baeb87861fbea3e79d03e7b01a6e0e0e766194a7312e264e222456d1bef47f2f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"02445506dcb3ac06b7cacfcf92a358547d3e7ca4266cc8b20002eadce023625b","TEST_MAPPING":"20b16181a1643ea530cde2a9860355536faa4704ea696bf89373143876d22c74","cargo_embargo.json":"4e90a0ba0e6ab3cd98549da6f03f874ff5ddf468fde3e5d8316017b78565bb2c","examples/compress_file.rs":"cce3baf2864a7b9d83a962943beeee639e4c4733dd45b93b0673ababc087aa96","examples/decompress_file.rs":"d72b62727750cedc02399b90ef846078546167462bdd5a04e22873d20e62c2e9","examples/deflatedecoder-bufread.rs":"a507c686d41faeaff1c1beec25d54259d9e465118f87f7f5587f48e7009fd07d","examples/deflatedecoder-read.rs":"70607b9bec5cbbec45e9c714d7fa00583e72cfecd63098d45b5f9a820e4f82ac","examples/deflatedecoder-write.rs":"46fafc4139f420227d5bbfd9385767bdb2f547772d97ad6e2cbd5a701d1639c0","examples/deflateencoder-bufread.rs":"f73721f14a184d1b7a3d40c0c01d59a1ba474c49cd6900cfcb019b993ab4f9cd","examples/deflateencoder-read.rs":"0474e693891d7dbffb5c62a89b73bbc817102e6ef6c179641c5e517bb9a6aca7","examples/deflateencoder-write.rs":"2e1d513a6a338bd54cb4391106e30840bac0d987bb7ff31ffbd7acf2aa378f50","examples/gzbuilder.rs":"99b3764b60da32d397985851f3f55f0d224f6596e10c32a1f72e594264e4f1ed","examples/gzdecoder-bufread.rs":"e726c225a76cdefd9439a1e1f4e407746797650e67863e577aa418d419fad192","examples/gzdecoder-read.rs":"22151346bdf5ee06400f03c72d5a0223012b48ab114b8f0097918c8a1720b76d","examples/gzdecoder-write.rs":"db42f9c9bcfe833b1ac15d87a13f50b330f07b92fd1882d59c3c7f2dcb319ea0","examples/gzencoder-bufread.rs":"56f32acccc7a5c1ab9750f630fc77d77d02d9c2c74f14db2acfb3cc2de3dbdf0","examples/gzencoder-read.rs":"e89e44a8aaddae7c8509d5d0255978393a00ed348d55d69ab29c854a51b2c90a","examples/gzencoder-write.rs":"7861049d300b5b740b6029f00b6db202bdc994557c8c25b7652968952f52369b","examples/gzmultidecoder-bufread.rs":"476bcaecbad58e95bb9aacac41b232a67c90ba801b2f2fd6eedc756bbcc0dbe4","examples/gzmultidecoder-read.rs":"146e57d0e6b3035a4944660bf6d50faffafc874c86dd38d12b336a6b6e75d441","examples/hello_world.txt":"99d005261b5c6664fa93422c77b1991c316336a107c23d82ed9cff4b034ed310","examples/hello_world.txt.gz":"7e27052833a51be32d323973821ec185d70b7e3c3a0badb62e2062c626564786","examples/zlibdecoder-bufread.rs":"4a49312029882826fd143ec6d57a76a54fbb49ce296b43b08f321254b7b9cd48","examples/zlibdecoder-read.rs":"4fd6251d1ae6fd9af68e2a5d37fd8f3ac178f08c94eb44e2d2b61310327b2142","examples/zlibdecoder-write.rs":"6cd79aac63dffba96f96eb3d491ef0e0b68a6077563d43fbdc448a34d81dcd3f","examples/zlibencoder-bufread.rs":"4c8ff55d7a7bc60dc35460bf2b1ed8fef4db003935941f954fbc986671659ca3","examples/zlibencoder-read.rs":"282e6a6a0f26fcc160f244741b703dd2128bea438e671287bfb36a41bfbaef37","examples/zlibencoder-write.rs":"33edc67b0ff8335bec75596a0a52a1edf7feb43cd3261a102cce8e71b495448b","patches/Android.bp.patch":"c38303d8aae61fb66a7e4b86e545c0d974e089e1ceee85d71820dc01f7d69858","src/bufreader.rs":"c280e0a9c5d311e135d84c5381adee5eaab55535f85f3dd07fcbd09ca56171a8","src/crc.rs":"2ec3ded5b1b3874dabce132f5e53e1aa72db03b226b2024d0a0d0f6aa5967cdf","src/deflate/bufread.rs":"741855ecaddbc2d297dafba2cf225de59b997bc1b95cd14c79618ab8c72f34ee","src/deflate/mod.rs":"8682b8a939351f066f7e10f0d7f755ece7fb9c51b2b642a4262a162acc88600b","src/deflate/read.rs":"dbad9800adc06034b98c85c36d34fa1bb7fe97b178b684fbe7086da4a89fa8aa","src/deflate/write.rs":"09b3e378c57238a39a63f6bee83e2d8163fb5b17da76b984030d066a0a860458","src/ffi/c.rs":"9b8acb24298aa203faf9af5c1b30ebf498701b4fad25bbcce580f8ef16a3f54e","src/ffi/mod.rs":"d5dbcfbe24b0c05fea4e01d4cdce9b28789fb629c1777f5ac7064c50c0b7e744","src/ffi/rust.rs":"d9e3e8c3a96cec1a7114685b9110d27409f3d96c350316efcb5d3d5cdc10434e","src/gz/bufread.rs":"5979b7146355cf1522b96d9d8248aa00219d09c46a714330abaa357b0db3d099","src/gz/mod.rs":"2e23010685c51b2cc999d1273a8801e342bd76cdb331f15a693c7dd111692fbf","src/gz/read.rs":"df0fc88487d2b3b26d6872e39e81138fc0339b9c1201d21bc2a4e4eab6219de7","src/gz/write.rs":"d4c8d70e282042c28dbc4b7a40d8c80e640af2dc0237762f6ece0adf4c820ce6","src/lib.rs":"706e76276ed1eb27f138863382e330eb5568e99d5fd7bd1a2d5528c7d9f68d62","src/mem.rs":"7efd5062381478de57fee5bbbabfb67d1b5da6659fd2672afac002b238bfa51f","src/zio.rs":"0803f02fafaf6b600bfb77324fe716ce58e67b8ef1ccdc09a9d57a5b0d827d2a","src/zlib/bufread.rs":"8c2807246169db3484c05e5b4732265086beecb960e9e3b6f378db11821ffc93","src/zlib/mod.rs":"6d44985100a3acc1766b7f5642562185f1dd364fd9a5506ed481293a01ca7585","src/zlib/read.rs":"669e989f81c31099b3cecc8a6fa8d824804ea093dd50299acab0642ffea0d3ac","src/zlib/write.rs":"65923be5295c2183c9188d3c4515a49190f9c13394660dff3aae0a95fdf6d812","tests/corrupt-gz-file.bin":"001c8c2ecda31c356c668605cfc371a4f84d537f51a603a54c300bf2dd31a84e","tests/early-flush.rs":"392485ea9da77bba580298e63aaef2a04d8e62e5d971154a6f56e029828760f6","tests/empty-read.rs":"d5efda6b010d43ea11ed397e8ec292c8b219e4fed6d8cb683150f0ee907d5bc0","tests/good-file.gz":"57b3cf5948490bc1916e1942380fe63a838599e7b90d9565b9f3ce3204678ea4","tests/good-file.txt":"601e44bd07539aa638cba5bf778d55a4464d2661ebab90e0116bb6a2565c8c9a","tests/gunzip.rs":"9552547e4116b68661ec153c6f18fee4edda5e41e3ecb1a4121c8ca21921c1d7","tests/multi.gz":"375bb51464f670e802cc672da43d7d0641f7b88f5be3cf48f17accf70e057fc2","tests/multi.txt":"528ac0a3a3545a95da59321256ee1c30d02b7fe67a8dfb774f8f1a9d8c068ab4","tests/zero-write.rs":"cce93fdd9baa924fe9ab4599fc06037c97e27012b935d18849f6718fc2be1724"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2dc0c21f70c725dd5c24b39bd62c6a5b03a3beee8d5121744e92416b328de80a","Android.bp":"c8b12bda45bfb1a5b3361c6b39755d4d7e77b19aabd99a7f249704c43ce9ecac","CHANGELOG.md":"b92febfa55f3955af847ee84e0a62d82ef1fa080ef791c926c865b1adfafef75","Cargo.lock":"f2a736fae4e085345eed57bcac41d76bd3f518bed6e577c3955c9577f776c382","Cargo.toml":"6cb7c1c99ceedde86bebea4a2b23df545067fc44a41bf63e717a94ba8eb5b551","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","MAINTENANCE.md":"9bfa11af24e0f872b14ba6df0df9a9641d36e21af67af1a1e3f86b63d7ae16f1","METADATA":"baeb87861fbea3e79d03e7b01a6e0e0e766194a7312e264e222456d1bef47f2f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"02445506dcb3ac06b7cacfcf92a358547d3e7ca4266cc8b20002eadce023625b","TEST_MAPPING":"20b16181a1643ea530cde2a9860355536faa4704ea696bf89373143876d22c74","cargo_embargo.json":"41c23510ea472fbb0e9339202fbef9daf32f7b2a982d3260b8738df0986463e1","examples/compress_file.rs":"cce3baf2864a7b9d83a962943beeee639e4c4733dd45b93b0673ababc087aa96","examples/decompress_file.rs":"d72b62727750cedc02399b90ef846078546167462bdd5a04e22873d20e62c2e9","examples/deflatedecoder-bufread.rs":"a507c686d41faeaff1c1beec25d54259d9e465118f87f7f5587f48e7009fd07d","examples/deflatedecoder-read.rs":"70607b9bec5cbbec45e9c714d7fa00583e72cfecd63098d45b5f9a820e4f82ac","examples/deflatedecoder-write.rs":"46fafc4139f420227d5bbfd9385767bdb2f547772d97ad6e2cbd5a701d1639c0","examples/deflateencoder-bufread.rs":"f73721f14a184d1b7a3d40c0c01d59a1ba474c49cd6900cfcb019b993ab4f9cd","examples/deflateencoder-read.rs":"0474e693891d7dbffb5c62a89b73bbc817102e6ef6c179641c5e517bb9a6aca7","examples/deflateencoder-write.rs":"2e1d513a6a338bd54cb4391106e30840bac0d987bb7ff31ffbd7acf2aa378f50","examples/gzbuilder.rs":"99b3764b60da32d397985851f3f55f0d224f6596e10c32a1f72e594264e4f1ed","examples/gzdecoder-bufread.rs":"e726c225a76cdefd9439a1e1f4e407746797650e67863e577aa418d419fad192","examples/gzdecoder-read.rs":"22151346bdf5ee06400f03c72d5a0223012b48ab114b8f0097918c8a1720b76d","examples/gzdecoder-write.rs":"db42f9c9bcfe833b1ac15d87a13f50b330f07b92fd1882d59c3c7f2dcb319ea0","examples/gzencoder-bufread.rs":"56f32acccc7a5c1ab9750f630fc77d77d02d9c2c74f14db2acfb3cc2de3dbdf0","examples/gzencoder-read.rs":"e89e44a8aaddae7c8509d5d0255978393a00ed348d55d69ab29c854a51b2c90a","examples/gzencoder-write.rs":"7861049d300b5b740b6029f00b6db202bdc994557c8c25b7652968952f52369b","examples/gzmultidecoder-bufread.rs":"476bcaecbad58e95bb9aacac41b232a67c90ba801b2f2fd6eedc756bbcc0dbe4","examples/gzmultidecoder-read.rs":"146e57d0e6b3035a4944660bf6d50faffafc874c86dd38d12b336a6b6e75d441","examples/hello_world.txt":"99d005261b5c6664fa93422c77b1991c316336a107c23d82ed9cff4b034ed310","examples/hello_world.txt.gz":"7e27052833a51be32d323973821ec185d70b7e3c3a0badb62e2062c626564786","examples/zlibdecoder-bufread.rs":"4a49312029882826fd143ec6d57a76a54fbb49ce296b43b08f321254b7b9cd48","examples/zlibdecoder-read.rs":"4fd6251d1ae6fd9af68e2a5d37fd8f3ac178f08c94eb44e2d2b61310327b2142","examples/zlibdecoder-write.rs":"6cd79aac63dffba96f96eb3d491ef0e0b68a6077563d43fbdc448a34d81dcd3f","examples/zlibencoder-bufread.rs":"4c8ff55d7a7bc60dc35460bf2b1ed8fef4db003935941f954fbc986671659ca3","examples/zlibencoder-read.rs":"282e6a6a0f26fcc160f244741b703dd2128bea438e671287bfb36a41bfbaef37","examples/zlibencoder-write.rs":"33edc67b0ff8335bec75596a0a52a1edf7feb43cd3261a102cce8e71b495448b","patches/Android.bp.patch":"c38303d8aae61fb66a7e4b86e545c0d974e089e1ceee85d71820dc01f7d69858","src/bufreader.rs":"c280e0a9c5d311e135d84c5381adee5eaab55535f85f3dd07fcbd09ca56171a8","src/crc.rs":"2ec3ded5b1b3874dabce132f5e53e1aa72db03b226b2024d0a0d0f6aa5967cdf","src/deflate/bufread.rs":"741855ecaddbc2d297dafba2cf225de59b997bc1b95cd14c79618ab8c72f34ee","src/deflate/mod.rs":"8682b8a939351f066f7e10f0d7f755ece7fb9c51b2b642a4262a162acc88600b","src/deflate/read.rs":"dbad9800adc06034b98c85c36d34fa1bb7fe97b178b684fbe7086da4a89fa8aa","src/deflate/write.rs":"09b3e378c57238a39a63f6bee83e2d8163fb5b17da76b984030d066a0a860458","src/ffi/c.rs":"9b8acb24298aa203faf9af5c1b30ebf498701b4fad25bbcce580f8ef16a3f54e","src/ffi/mod.rs":"d5dbcfbe24b0c05fea4e01d4cdce9b28789fb629c1777f5ac7064c50c0b7e744","src/ffi/rust.rs":"d9e3e8c3a96cec1a7114685b9110d27409f3d96c350316efcb5d3d5cdc10434e","src/gz/bufread.rs":"5979b7146355cf1522b96d9d8248aa00219d09c46a714330abaa357b0db3d099","src/gz/mod.rs":"2e23010685c51b2cc999d1273a8801e342bd76cdb331f15a693c7dd111692fbf","src/gz/read.rs":"df0fc88487d2b3b26d6872e39e81138fc0339b9c1201d21bc2a4e4eab6219de7","src/gz/write.rs":"d4c8d70e282042c28dbc4b7a40d8c80e640af2dc0237762f6ece0adf4c820ce6","src/lib.rs":"706e76276ed1eb27f138863382e330eb5568e99d5fd7bd1a2d5528c7d9f68d62","src/mem.rs":"7efd5062381478de57fee5bbbabfb67d1b5da6659fd2672afac002b238bfa51f","src/zio.rs":"0803f02fafaf6b600bfb77324fe716ce58e67b8ef1ccdc09a9d57a5b0d827d2a","src/zlib/bufread.rs":"8c2807246169db3484c05e5b4732265086beecb960e9e3b6f378db11821ffc93","src/zlib/mod.rs":"6d44985100a3acc1766b7f5642562185f1dd364fd9a5506ed481293a01ca7585","src/zlib/read.rs":"669e989f81c31099b3cecc8a6fa8d824804ea093dd50299acab0642ffea0d3ac","src/zlib/write.rs":"65923be5295c2183c9188d3c4515a49190f9c13394660dff3aae0a95fdf6d812","tests/corrupt-gz-file.bin":"001c8c2ecda31c356c668605cfc371a4f84d537f51a603a54c300bf2dd31a84e","tests/early-flush.rs":"392485ea9da77bba580298e63aaef2a04d8e62e5d971154a6f56e029828760f6","tests/empty-read.rs":"d5efda6b010d43ea11ed397e8ec292c8b219e4fed6d8cb683150f0ee907d5bc0","tests/good-file.gz":"57b3cf5948490bc1916e1942380fe63a838599e7b90d9565b9f3ce3204678ea4","tests/good-file.txt":"601e44bd07539aa638cba5bf778d55a4464d2661ebab90e0116bb6a2565c8c9a","tests/gunzip.rs":"9552547e4116b68661ec153c6f18fee4edda5e41e3ecb1a4121c8ca21921c1d7","tests/multi.gz":"375bb51464f670e802cc672da43d7d0641f7b88f5be3cf48f17accf70e057fc2","tests/multi.txt":"528ac0a3a3545a95da59321256ee1c30d02b7fe67a8dfb774f8f1a9d8c068ab4","tests/zero-write.rs":"cce93fdd9baa924fe9ab4599fc06037c97e27012b935d18849f6718fc2be1724"}}
\ No newline at end of file
diff --git a/crates/flate2/Android.bp b/crates/flate2/Android.bp
index dd2987f..79952bc 100644
--- a/crates/flate2/Android.bp
+++ b/crates/flate2/Android.bp
@@ -178,4 +178,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/flate2/cargo_embargo.json b/crates/flate2/cargo_embargo.json
index 9651dbe..40f6cca 100644
--- a/crates/flate2/cargo_embargo.json
+++ b/crates/flate2/cargo_embargo.json
@@ -21,5 +21,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/foldhash/.android-checksum.json b/crates/foldhash/.android-checksum.json
index 9ecd656..21cce5f 100644
--- a/crates/foldhash/.android-checksum.json
+++ b/crates/foldhash/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6e954aa70ce67427ab37b7c6f189527e1cb52a448d40a32fc1022fbbc7f337d0","Android.bp":"e6ad3e3675aec1535797f0b0b93790402074600ad387882af36bd37113d7e287","Cargo.toml":"98b88f05e37853790f969b6feb5deed7fed9579124c9a59ee1089989d9c49bf9","LICENSE":"8be19fe391cb15f9cfd08f2d3a6b18c531eb3949a5077724f425953a65b33e9f","METADATA":"3f62b71c9450eb4f7b049dc6a6c95436ee37a67c31ca1ce4e38bd5c51f987f43","MODULE_LICENSE_ZLIB":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7001e5e97345c350ea56c617a4977a655f9cbe2de0dcdf1d354b4b19b7640607","cargo_embargo.json":"c117083f3a312c0d9cd58174180056ee8df8165cbec1b3d2cb47367ba3eaea25","src/convenience.rs":"0b8e6016da16d68148d690822c3f438ff8a423e9a88a9d177968fd8363e14df2","src/lib.rs":"e6b5c9477a135c1fb2d00187305047ae6666d302a7820302da3695d5d041f5f9","src/seed.rs":"3a09d3a892de71617ff49491874ec4c845fe1d6861a30d9a74bff6d418e5064e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c7ad0bb4574c31f74e15546b2977b32ef4af32d904c3d2e23cea91cebe6649ea","Android.bp":"629c4c0391b4ad6a6952eb07caa8c480bddeaf5d85f15c3fd389235ca5a85419","Cargo.toml":"04d2a8043b457fca463814409c6b284e423c691c3facca0add877298a72bd8c2","LICENSE":"8be19fe391cb15f9cfd08f2d3a6b18c531eb3949a5077724f425953a65b33e9f","METADATA":"cc49e43ebcc2e61499251c7ce688bc2396a63e9760631826bac6d909b307bd1f","MODULE_LICENSE_ZLIB":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7001e5e97345c350ea56c617a4977a655f9cbe2de0dcdf1d354b4b19b7640607","cargo_embargo.json":"c117083f3a312c0d9cd58174180056ee8df8165cbec1b3d2cb47367ba3eaea25","src/convenience.rs":"bbf0cb075b5ad75f580b256830a580cdeff81a3f0721c4918c791773aa7b3e68","src/fast.rs":"8744ff9ae9ec6e853e9f2c5c180db1f5e782d5215a56459369f7f31ac7c477a7","src/lib.rs":"82c033eb746babf8e3785e0c84e588c2726ae9bfc9cae0d340ffcb3fd78820a1","src/quality.rs":"6c4be165072075c7e877413c770d8352bb972f1ced7bc4139a8ff4b1814252c8","src/seed.rs":"01f128342225816e71ad618a0f22c2cf98740963372b9df40f34e847b5245359"}}
\ No newline at end of file
diff --git a/crates/foldhash/.cargo-checksum.json b/crates/foldhash/.cargo-checksum.json
index e7f288b..78adb23 100644
--- a/crates/foldhash/.cargo-checksum.json
+++ b/crates/foldhash/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"10886c9afc67ef4e538ff2d1a062c4c5dc524bcea3658218f753681c8fb4625e","LICENSE":"b1181a40b2a7b25cf66fd01481713bc1005df082c53ef73e851e55071b102744","README.md":"fe47dcae2123a581799544a577b3a464962f3b51323b5495c53903b3bd3cd4ed","src/convenience.rs":"5e1b3e9fc7e89f35680fc87719ffc4bd8b98e9d5b443ff5abe1749f235a1f601","src/lib.rs":"520246eb549134be5fd4b45f8264bfb5f370827e81f66fba29cf4c333cdb1ea6","src/seed.rs":"16553119fe99a3ac181eaa1ed661e34e148c387f6b6453994c4a718ac83f6134"},"package":"a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f"}
\ No newline at end of file
+{"files":{"Cargo.toml":"73f8a9098a796d870371f47aaace67ba93a1786b7d54f93c1122223dced77ea3","LICENSE":"b1181a40b2a7b25cf66fd01481713bc1005df082c53ef73e851e55071b102744","README.md":"fe47dcae2123a581799544a577b3a464962f3b51323b5495c53903b3bd3cd4ed","src/convenience.rs":"60338e1ca7bfc781724819cd82ef4a9bd61f4f5c17772b3c0f776fb2257c60dc","src/fast.rs":"99eb2a8e23446afc160ae70464a15fc9bb2006fbe9d0714f08ff936a7e069e1d","src/lib.rs":"8a5551c3568c0e52b4150cfee5c44fe176af0a11b02f5846ff9c635779a41e7c","src/quality.rs":"77a7edda8f0314d0ab1ebf9d08ec1b039d0d630988bfd8460149350b2a4b6f36","src/seed.rs":"358937fa085dcc5ca5ca488ff1767a7f0c371ebbca81355f44cbb848cb6dd698"},"package":"d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"}
\ No newline at end of file
diff --git a/crates/foldhash/Android.bp b/crates/foldhash/Android.bp
index 4c3163c..b10e67d 100644
--- a/crates/foldhash/Android.bp
+++ b/crates/foldhash/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "foldhash",
cargo_env_compat: true,
- cargo_pkg_version: "0.1.4",
+ cargo_pkg_version: "0.1.5",
crate_root: "src/lib.rs",
edition: "2021",
features: [
diff --git a/crates/foldhash/Cargo.toml b/crates/foldhash/Cargo.toml
index 5848c84..5dc1641 100644
--- a/crates/foldhash/Cargo.toml
+++ b/crates/foldhash/Cargo.toml
@@ -11,8 +11,9 @@
[package]
edition = "2021"
+rust-version = "1.60"
name = "foldhash"
-version = "0.1.4"
+version = "0.1.5"
authors = ["Orson Peters <[email protected]>"]
build = false
exclude = [
@@ -39,8 +40,9 @@
license = "Zlib"
repository = "https://github.com/orlp/foldhash"
-[profile.release]
-lto = "thin"
+[features]
+default = ["std"]
+std = []
[lib]
name = "foldhash"
@@ -70,6 +72,5 @@
[dev-dependencies.uuid]
version = "1.8"
-[features]
-default = ["std"]
-std = []
+[profile.release]
+lto = "thin"
diff --git a/crates/foldhash/METADATA b/crates/foldhash/METADATA
index 978d59b..d7edd6d 100644
--- a/crates/foldhash/METADATA
+++ b/crates/foldhash/METADATA
@@ -1,17 +1,17 @@
name: "foldhash"
description: "A fast, non-cryptographic, minimally DoS-resistant hashing algorithm."
third_party {
- version: "0.1.4"
+ version: "0.1.5"
license_type: NOTICE
last_upgrade_date {
year: 2025
- month: 1
- day: 23
+ month: 3
+ day: 19
}
homepage: "https://crates.io/crates/foldhash"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/foldhash/foldhash-0.1.4.crate"
- version: "0.1.4"
+ value: "https://static.crates.io/crates/foldhash/foldhash-0.1.5.crate"
+ version: "0.1.5"
}
}
diff --git a/crates/foldhash/src/convenience.rs b/crates/foldhash/src/convenience.rs
index d515d0b..dd1dd4e 100644
--- a/crates/foldhash/src/convenience.rs
+++ b/crates/foldhash/src/convenience.rs
@@ -16,20 +16,24 @@
}
impl<K, V> HashMapExt for std::collections::HashMap<K, V, RandomState> {
+ #[inline(always)]
fn new() -> Self {
Self::with_hasher(RandomState::default())
}
+ #[inline(always)]
fn with_capacity(capacity: usize) -> Self {
Self::with_capacity_and_hasher(capacity, RandomState::default())
}
}
impl<K, V> HashMapExt for std::collections::HashMap<K, V, FixedState> {
+ #[inline(always)]
fn new() -> Self {
Self::with_hasher(FixedState::default())
}
+ #[inline(always)]
fn with_capacity(capacity: usize) -> Self {
Self::with_capacity_and_hasher(capacity, FixedState::default())
}
@@ -45,20 +49,24 @@
}
impl<T> HashSetExt for std::collections::HashSet<T, RandomState> {
+ #[inline(always)]
fn new() -> Self {
Self::with_hasher(RandomState::default())
}
+ #[inline(always)]
fn with_capacity(capacity: usize) -> Self {
Self::with_capacity_and_hasher(capacity, RandomState::default())
}
}
impl<T> HashSetExt for std::collections::HashSet<T, FixedState> {
+ #[inline(always)]
fn new() -> Self {
Self::with_hasher(FixedState::default())
}
+ #[inline(always)]
fn with_capacity(capacity: usize) -> Self {
Self::with_capacity_and_hasher(capacity, FixedState::default())
}
diff --git a/crates/foldhash/src/fast.rs b/crates/foldhash/src/fast.rs
new file mode 100644
index 0000000..a6f0f1e
--- /dev/null
+++ b/crates/foldhash/src/fast.rs
@@ -0,0 +1,270 @@
+//! The foldhash implementation optimized for speed.
+
+use core::hash::{BuildHasher, Hasher};
+
+use crate::seed::{gen_per_hasher_seed, GlobalSeed, SharedSeed};
+use crate::{folded_multiply, hash_bytes_long, hash_bytes_medium, rotate_right, ARBITRARY3};
+
+/// A [`Hasher`] instance implementing foldhash, optimized for speed.
+///
+/// While you can create one directly with [`FoldHasher::with_seed`], you
+/// most likely want to use [`RandomState`], [`SeedableRandomState`] or
+/// [`FixedState`] to create [`FoldHasher`]s.
+#[derive(Clone)]
+pub struct FoldHasher {
+ accumulator: u64,
+ sponge: u128,
+ sponge_len: u8,
+ fold_seed: u64,
+ expand_seed: u64,
+ expand_seed2: u64,
+ expand_seed3: u64,
+}
+
+impl FoldHasher {
+ /// Initializes this [`FoldHasher`] with the given per-hasher seed and
+ /// [`SharedSeed`].
+ #[inline]
+ pub fn with_seed(per_hasher_seed: u64, shared_seed: &SharedSeed) -> FoldHasher {
+ FoldHasher {
+ accumulator: per_hasher_seed,
+ sponge: 0,
+ sponge_len: 0,
+ fold_seed: shared_seed.seeds[0],
+ expand_seed: shared_seed.seeds[1],
+ expand_seed2: shared_seed.seeds[2],
+ expand_seed3: shared_seed.seeds[3],
+ }
+ }
+
+ #[inline(always)]
+ fn write_num<T: Into<u128>>(&mut self, x: T) {
+ let bits: usize = 8 * core::mem::size_of::<T>();
+ if self.sponge_len as usize + bits > 128 {
+ let lo = self.sponge as u64;
+ let hi = (self.sponge >> 64) as u64;
+ self.accumulator = folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed);
+ self.sponge = x.into();
+ self.sponge_len = bits as u8;
+ } else {
+ self.sponge |= x.into() << self.sponge_len;
+ self.sponge_len += bits as u8;
+ }
+ }
+}
+
+impl Hasher for FoldHasher {
+ #[inline(always)]
+ fn write(&mut self, bytes: &[u8]) {
+ // We perform overlapping reads in the byte hash which could lead to
+ // trivial length-extension attacks. These should be defeated by
+ // adding a length-dependent rotation on our unpredictable seed
+ // which costs only a single cycle (or none if executed with
+ // instruction-level parallelism).
+ let len = bytes.len();
+ let base_seed = rotate_right(self.accumulator, len as u32);
+ if len <= 16 {
+ let mut s0 = base_seed;
+ let mut s1 = self.expand_seed;
+ // XOR the input into s0, s1, then multiply and fold.
+ if len >= 8 {
+ s0 ^= u64::from_ne_bytes(bytes[0..8].try_into().unwrap());
+ s1 ^= u64::from_ne_bytes(bytes[len - 8..].try_into().unwrap());
+ } else if len >= 4 {
+ s0 ^= u32::from_ne_bytes(bytes[0..4].try_into().unwrap()) as u64;
+ s1 ^= u32::from_ne_bytes(bytes[len - 4..].try_into().unwrap()) as u64;
+ } else if len > 0 {
+ let lo = bytes[0];
+ let mid = bytes[len / 2];
+ let hi = bytes[len - 1];
+ s0 ^= lo as u64;
+ s1 ^= ((hi as u64) << 8) | mid as u64;
+ }
+ self.accumulator = folded_multiply(s0, s1);
+ } else if len < 256 {
+ self.accumulator = hash_bytes_medium(
+ bytes,
+ base_seed,
+ base_seed.wrapping_add(self.expand_seed),
+ self.fold_seed,
+ );
+ } else {
+ self.accumulator = hash_bytes_long(
+ bytes,
+ base_seed,
+ base_seed.wrapping_add(self.expand_seed),
+ base_seed.wrapping_add(self.expand_seed2),
+ base_seed.wrapping_add(self.expand_seed3),
+ self.fold_seed,
+ );
+ }
+ }
+
+ #[inline(always)]
+ fn write_u8(&mut self, i: u8) {
+ self.write_num(i);
+ }
+
+ #[inline(always)]
+ fn write_u16(&mut self, i: u16) {
+ self.write_num(i);
+ }
+
+ #[inline(always)]
+ fn write_u32(&mut self, i: u32) {
+ self.write_num(i);
+ }
+
+ #[inline(always)]
+ fn write_u64(&mut self, i: u64) {
+ self.write_num(i);
+ }
+
+ #[inline(always)]
+ fn write_u128(&mut self, i: u128) {
+ let lo = i as u64;
+ let hi = (i >> 64) as u64;
+ self.accumulator = folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed);
+ }
+
+ #[inline(always)]
+ fn write_usize(&mut self, i: usize) {
+ // u128 doesn't implement From<usize>.
+ #[cfg(target_pointer_width = "32")]
+ self.write_num(i as u32);
+ #[cfg(target_pointer_width = "64")]
+ self.write_num(i as u64);
+ }
+
+ #[inline(always)]
+ fn finish(&self) -> u64 {
+ if self.sponge_len > 0 {
+ let lo = self.sponge as u64;
+ let hi = (self.sponge >> 64) as u64;
+ folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed)
+ } else {
+ self.accumulator
+ }
+ }
+}
+
+/// A [`BuildHasher`] for [`fast::FoldHasher`](FoldHasher) that is randomly initialized.
+#[derive(Copy, Clone, Debug)]
+pub struct RandomState {
+ per_hasher_seed: u64,
+ global_seed: GlobalSeed,
+}
+
+impl Default for RandomState {
+ #[inline(always)]
+ fn default() -> Self {
+ Self {
+ per_hasher_seed: gen_per_hasher_seed(),
+ global_seed: GlobalSeed::new(),
+ }
+ }
+}
+
+impl BuildHasher for RandomState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher::with_seed(self.per_hasher_seed, self.global_seed.get())
+ }
+}
+
+/// A [`BuildHasher`] for [`fast::FoldHasher`](FoldHasher) that is randomly
+/// initialized by default, but can also be initialized with a specific seed.
+///
+/// This can be useful for e.g. testing, but the downside is that this type
+/// has a size of 16 bytes rather than the 8 bytes [`RandomState`] is.
+#[derive(Copy, Clone, Debug)]
+pub struct SeedableRandomState {
+ per_hasher_seed: u64,
+ shared_seed: &'static SharedSeed,
+}
+
+impl Default for SeedableRandomState {
+ #[inline(always)]
+ fn default() -> Self {
+ Self::random()
+ }
+}
+
+impl SeedableRandomState {
+ /// Generates a random [`SeedableRandomState`], similar to [`RandomState`].
+ #[inline(always)]
+ pub fn random() -> Self {
+ Self {
+ per_hasher_seed: gen_per_hasher_seed(),
+ shared_seed: SharedSeed::global_random(),
+ }
+ }
+
+ /// Generates a fixed [`SeedableRandomState`], similar to [`FixedState`].
+ #[inline(always)]
+ pub fn fixed() -> Self {
+ Self {
+ per_hasher_seed: ARBITRARY3,
+ shared_seed: SharedSeed::global_fixed(),
+ }
+ }
+
+ /// Generates a [`SeedableRandomState`] with the given per-hasher seed
+ /// and [`SharedSeed`].
+ #[inline(always)]
+ pub fn with_seed(per_hasher_seed: u64, shared_seed: &'static SharedSeed) -> Self {
+ // XOR with ARBITRARY3 such that with_seed(0) matches default.
+ Self {
+ per_hasher_seed: per_hasher_seed ^ ARBITRARY3,
+ shared_seed,
+ }
+ }
+}
+
+impl BuildHasher for SeedableRandomState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher::with_seed(self.per_hasher_seed, self.shared_seed)
+ }
+}
+
+/// A [`BuildHasher`] for [`fast::FoldHasher`](FoldHasher) that always has the same fixed seed.
+///
+/// Not recommended unless you absolutely need determinism.
+#[derive(Copy, Clone, Debug)]
+pub struct FixedState {
+ per_hasher_seed: u64,
+}
+
+impl FixedState {
+ /// Creates a [`FixedState`] with the given per-hasher-seed.
+ #[inline(always)]
+ pub const fn with_seed(per_hasher_seed: u64) -> Self {
+ // XOR with ARBITRARY3 such that with_seed(0) matches default.
+ Self {
+ per_hasher_seed: per_hasher_seed ^ ARBITRARY3,
+ }
+ }
+}
+
+impl Default for FixedState {
+ #[inline(always)]
+ fn default() -> Self {
+ Self {
+ per_hasher_seed: ARBITRARY3,
+ }
+ }
+}
+
+impl BuildHasher for FixedState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher::with_seed(self.per_hasher_seed, SharedSeed::global_fixed())
+ }
+}
diff --git a/crates/foldhash/src/lib.rs b/crates/foldhash/src/lib.rs
index 2787b97..ab04556 100644
--- a/crates/foldhash/src/lib.rs
+++ b/crates/foldhash/src/lib.rs
@@ -81,16 +81,37 @@
//! let random_state = RandomState::default();
//! let hash = random_state.hash_one("hello world");
//! ```
+//!
+//! ## Seeding
+//!
+//! Foldhash relies on a single 8-byte per-hasher seed which should be ideally
+//! be different from each instance to instance, and also a larger
+//! [`SharedSeed`] which may be shared by many different instances.
+//!
+//! To reduce overhead, this [`SharedSeed`] is typically initialized once and
+//! stored. To prevent each hashmap unnecessarily containing a reference to this
+//! value there are three kinds of [`BuildHasher`](core::hash::BuildHasher)s
+//! foldhash provides (both for [`fast`] and [`quality`]):
+//!
+//! 1. [`RandomState`](fast::RandomState), which always generates a
+//! random per-hasher seed and implicitly stores a reference to [`SharedSeed::global_random`].
+//! 2. [`FixedState`](fast::FixedState), which by default uses a fixed
+//! per-hasher seed and implicitly stores a reference to [`SharedSeed::global_fixed`].
+//! 3. [`SeedableRandomState`](fast::SeedableRandomState), which works like
+//! [`RandomState`](fast::RandomState) by default but can be seeded in any manner.
+//! This state must include an explicit reference to a [`SharedSeed`], and thus
+//! this struct is 16 bytes as opposed to just 8 bytes for the previous two.
#![cfg_attr(all(not(test), not(feature = "std")), no_std)]
#![warn(missing_docs)]
-use core::hash::Hasher;
+pub mod fast;
+pub mod quality;
+mod seed;
+pub use seed::SharedSeed;
#[cfg(feature = "std")]
mod convenience;
-mod seed;
-
#[cfg(feature = "std")]
pub use convenience::*;
@@ -108,11 +129,27 @@
#[inline(always)]
const fn folded_multiply(x: u64, y: u64) -> u64 {
- #[cfg(target_pointer_width = "64")]
+ // The following code path is only fast if 64-bit to 128-bit widening
+ // multiplication is supported by the architecture. Most 64-bit
+ // architectures except SPARC64 and Wasm64 support it. However, the target
+ // pointer width doesn't always indicate that we are dealing with a 64-bit
+ // architecture, as there are ABIs that reduce the pointer width, especially
+ // on AArch64 and x86-64. WebAssembly (regardless of pointer width) supports
+ // 64-bit to 128-bit widening multiplication with the `wide-arithmetic`
+ // proposal.
+ #[cfg(any(
+ all(
+ target_pointer_width = "64",
+ not(any(target_arch = "sparc64", target_arch = "wasm64")),
+ ),
+ target_arch = "aarch64",
+ target_arch = "x86_64",
+ all(target_family = "wasm", target_feature = "wide-arithmetic"),
+ ))]
{
// We compute the full u64 x u64 -> u128 product, this is a single mul
// instruction on x86-64, one mul plus one mulhi on ARM64.
- let full = (x as u128) * (y as u128);
+ let full = (x as u128).wrapping_mul(y as u128);
let lo = full as u64;
let hi = (full >> 64) as u64;
@@ -123,214 +160,63 @@
lo ^ hi
}
- #[cfg(target_pointer_width = "32")]
+ #[cfg(not(any(
+ all(
+ target_pointer_width = "64",
+ not(any(target_arch = "sparc64", target_arch = "wasm64")),
+ ),
+ target_arch = "aarch64",
+ target_arch = "x86_64",
+ all(target_family = "wasm", target_feature = "wide-arithmetic"),
+ )))]
{
- // u64 x u64 -> u128 product is prohibitively expensive on 32-bit.
- // Decompose into 32-bit parts.
+ // u64 x u64 -> u128 product is quite expensive on 32-bit.
+ // We approximate it by expanding the multiplication and eliminating
+ // carries by replacing additions with XORs:
+ // (2^32 hx + lx)*(2^32 hy + ly) =
+ // 2^64 hx*hy + 2^32 (hx*ly + lx*hy) + lx*ly ~=
+ // 2^64 hx*hy ^ 2^32 (hx*ly ^ lx*hy) ^ lx*ly
+ // Which when folded becomes:
+ // (hx*hy ^ lx*ly) ^ (hx*ly ^ lx*hy).rotate_right(32)
+
let lx = x as u32;
let ly = y as u32;
let hx = (x >> 32) as u32;
let hy = (y >> 32) as u32;
- // u32 x u32 -> u64 the low bits of one with the high bits of the other.
- let afull = (lx as u64) * (hy as u64);
- let bfull = (hx as u64) * (ly as u64);
+ let ll = (lx as u64).wrapping_mul(ly as u64);
+ let lh = (lx as u64).wrapping_mul(hy as u64);
+ let hl = (hx as u64).wrapping_mul(ly as u64);
+ let hh = (hx as u64).wrapping_mul(hy as u64);
- // Combine, swapping low/high of one of them so the upper bits of the
- // product of one combine with the lower bits of the other.
- afull ^ bfull.rotate_right(32)
+ (hh ^ ll) ^ (hl ^ lh).rotate_right(32)
}
}
-/// The foldhash implementation optimized for speed.
-pub mod fast {
- use super::*;
-
- pub use seed::fast::{FixedState, RandomState};
-
- /// A [`Hasher`] instance implementing foldhash, optimized for speed.
- ///
- /// It can't be created directly, see [`RandomState`] or [`FixedState`].
- #[derive(Clone)]
- pub struct FoldHasher {
- accumulator: u64,
- sponge: u128,
- sponge_len: u8,
- fold_seed: u64,
- expand_seed: u64,
- expand_seed2: u64,
- expand_seed3: u64,
+#[inline(always)]
+const fn rotate_right(x: u64, r: u32) -> u64 {
+ #[cfg(any(
+ target_pointer_width = "64",
+ target_arch = "aarch64",
+ target_arch = "x86_64",
+ target_family = "wasm",
+ ))]
+ {
+ x.rotate_right(r)
}
- impl FoldHasher {
- #[inline]
- pub(crate) fn with_seed(per_hasher_seed: u64, global_seed: &[u64; 4]) -> FoldHasher {
- FoldHasher {
- accumulator: per_hasher_seed,
- sponge: 0,
- sponge_len: 0,
- fold_seed: global_seed[0],
- expand_seed: global_seed[1],
- expand_seed2: global_seed[2],
- expand_seed3: global_seed[3],
- }
- }
-
- #[inline(always)]
- fn write_num<T: Into<u128>>(&mut self, x: T) {
- let bits: usize = 8 * core::mem::size_of::<T>();
- if self.sponge_len as usize + bits > 128 {
- let lo = self.sponge as u64;
- let hi = (self.sponge >> 64) as u64;
- self.accumulator = folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed);
- self.sponge = x.into();
- self.sponge_len = bits as u8;
- } else {
- self.sponge |= x.into() << self.sponge_len;
- self.sponge_len += bits as u8;
- }
- }
- }
-
- impl Hasher for FoldHasher {
- #[inline(always)]
- fn write(&mut self, bytes: &[u8]) {
- let mut s0 = self.accumulator;
- let mut s1 = self.expand_seed;
- let len = bytes.len();
- if len <= 16 {
- // XOR the input into s0, s1, then multiply and fold.
- if len >= 8 {
- s0 ^= u64::from_ne_bytes(bytes[0..8].try_into().unwrap());
- s1 ^= u64::from_ne_bytes(bytes[len - 8..].try_into().unwrap());
- } else if len >= 4 {
- s0 ^= u32::from_ne_bytes(bytes[0..4].try_into().unwrap()) as u64;
- s1 ^= u32::from_ne_bytes(bytes[len - 4..].try_into().unwrap()) as u64;
- } else if len > 0 {
- let lo = bytes[0];
- let mid = bytes[len / 2];
- let hi = bytes[len - 1];
- s0 ^= lo as u64;
- s1 ^= ((hi as u64) << 8) | mid as u64;
- }
- self.accumulator = folded_multiply(s0, s1);
- } else if len < 256 {
- self.accumulator = hash_bytes_medium(bytes, s0, s1, self.fold_seed);
- } else {
- self.accumulator = hash_bytes_long(
- bytes,
- s0,
- s1,
- self.expand_seed2,
- self.expand_seed3,
- self.fold_seed,
- );
- }
- }
-
- #[inline(always)]
- fn write_u8(&mut self, i: u8) {
- self.write_num(i);
- }
-
- #[inline(always)]
- fn write_u16(&mut self, i: u16) {
- self.write_num(i);
- }
-
- #[inline(always)]
- fn write_u32(&mut self, i: u32) {
- self.write_num(i);
- }
-
- #[inline(always)]
- fn write_u64(&mut self, i: u64) {
- self.write_num(i);
- }
-
- #[inline(always)]
- fn write_u128(&mut self, i: u128) {
- let lo = i as u64;
- let hi = (i >> 64) as u64;
- self.accumulator = folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed);
- }
-
- #[inline(always)]
- fn write_usize(&mut self, i: usize) {
- // u128 doesn't implement From<usize>.
- #[cfg(target_pointer_width = "32")]
- self.write_num(i as u32);
- #[cfg(target_pointer_width = "64")]
- self.write_num(i as u64);
- }
-
- #[inline(always)]
- fn finish(&self) -> u64 {
- if self.sponge_len > 0 {
- let lo = self.sponge as u64;
- let hi = (self.sponge >> 64) as u64;
- folded_multiply(lo ^ self.accumulator, hi ^ self.fold_seed)
- } else {
- self.accumulator
- }
- }
- }
-}
-
-/// The foldhash implementation optimized for quality.
-pub mod quality {
- use super::*;
-
- pub use seed::quality::{FixedState, RandomState};
-
- /// A [`Hasher`] instance implementing foldhash, optimized for quality.
- ///
- /// It can't be created directly, see [`RandomState`] or [`FixedState`].
- #[derive(Clone)]
- pub struct FoldHasher {
- pub(crate) inner: fast::FoldHasher,
- }
-
- impl Hasher for FoldHasher {
- #[inline(always)]
- fn write(&mut self, bytes: &[u8]) {
- self.inner.write(bytes);
- }
-
- #[inline(always)]
- fn write_u8(&mut self, i: u8) {
- self.inner.write_u8(i);
- }
-
- #[inline(always)]
- fn write_u16(&mut self, i: u16) {
- self.inner.write_u16(i);
- }
-
- #[inline(always)]
- fn write_u32(&mut self, i: u32) {
- self.inner.write_u32(i);
- }
-
- #[inline(always)]
- fn write_u64(&mut self, i: u64) {
- self.inner.write_u64(i);
- }
-
- #[inline(always)]
- fn write_u128(&mut self, i: u128) {
- self.inner.write_u128(i);
- }
-
- #[inline(always)]
- fn write_usize(&mut self, i: usize) {
- self.inner.write_usize(i);
- }
-
- #[inline(always)]
- fn finish(&self) -> u64 {
- folded_multiply(self.inner.finish(), ARBITRARY0)
- }
+ #[cfg(not(any(
+ target_pointer_width = "64",
+ target_arch = "aarch64",
+ target_arch = "x86_64",
+ target_family = "wasm",
+ )))]
+ {
+ // On platforms without 64-bit arithmetic rotation can be slow, rotate
+ // each 32-bit half independently.
+ let lo = (x as u32).rotate_right(r);
+ let hi = ((x >> 32) as u32).rotate_right(r);
+ ((hi as u64) << 32) | lo as u64
}
}
diff --git a/crates/foldhash/src/quality.rs b/crates/foldhash/src/quality.rs
new file mode 100644
index 0000000..939b60e
--- /dev/null
+++ b/crates/foldhash/src/quality.rs
@@ -0,0 +1,174 @@
+//! The foldhash implementation optimized for quality.
+
+use core::hash::{BuildHasher, Hasher};
+
+use crate::seed::SharedSeed;
+
+use crate::{fast, folded_multiply, ARBITRARY0, ARBITRARY8};
+
+/// A [`Hasher`] instance implementing foldhash, optimized for quality.
+///
+/// While you can create one directly with [`FoldHasher::with_seed`], you
+/// most likely want to use [`RandomState`], [`SeedableRandomState`] or
+/// [`FixedState`] to create [`FoldHasher`]s.
+#[derive(Clone)]
+pub struct FoldHasher {
+ pub(crate) inner: fast::FoldHasher,
+}
+
+impl FoldHasher {
+ /// Initializes this [`FoldHasher`] with the given per-hasher seed and
+ /// [`SharedSeed`].
+ #[inline(always)]
+ pub fn with_seed(per_hasher_seed: u64, shared_seed: &SharedSeed) -> FoldHasher {
+ FoldHasher {
+ inner: fast::FoldHasher::with_seed(per_hasher_seed, shared_seed),
+ }
+ }
+}
+
+impl Hasher for FoldHasher {
+ #[inline(always)]
+ fn write(&mut self, bytes: &[u8]) {
+ self.inner.write(bytes);
+ }
+
+ #[inline(always)]
+ fn write_u8(&mut self, i: u8) {
+ self.inner.write_u8(i);
+ }
+
+ #[inline(always)]
+ fn write_u16(&mut self, i: u16) {
+ self.inner.write_u16(i);
+ }
+
+ #[inline(always)]
+ fn write_u32(&mut self, i: u32) {
+ self.inner.write_u32(i);
+ }
+
+ #[inline(always)]
+ fn write_u64(&mut self, i: u64) {
+ self.inner.write_u64(i);
+ }
+
+ #[inline(always)]
+ fn write_u128(&mut self, i: u128) {
+ self.inner.write_u128(i);
+ }
+
+ #[inline(always)]
+ fn write_usize(&mut self, i: usize) {
+ self.inner.write_usize(i);
+ }
+
+ #[inline(always)]
+ fn finish(&self) -> u64 {
+ folded_multiply(self.inner.finish(), ARBITRARY0)
+ }
+}
+
+/// A [`BuildHasher`] for [`quality::FoldHasher`](FoldHasher) that is randomly initialized.
+#[derive(Copy, Clone, Default, Debug)]
+pub struct RandomState {
+ inner: fast::RandomState,
+}
+
+impl BuildHasher for RandomState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher {
+ inner: self.inner.build_hasher(),
+ }
+ }
+}
+
+/// A [`BuildHasher`] for [`quality::FoldHasher`](FoldHasher) that is randomly
+/// initialized by default, but can also be initialized with a specific seed.
+///
+/// This can be useful for e.g. testing, but the downside is that this type
+/// has a size of 16 bytes rather than the 8 bytes [`RandomState`] is.
+#[derive(Copy, Clone, Default, Debug)]
+pub struct SeedableRandomState {
+ inner: fast::SeedableRandomState,
+}
+
+impl SeedableRandomState {
+ /// Generates a random [`SeedableRandomState`], similar to [`RandomState`].
+ #[inline(always)]
+ pub fn random() -> Self {
+ Self {
+ inner: fast::SeedableRandomState::random(),
+ }
+ }
+
+ /// Generates a fixed [`SeedableRandomState`], similar to [`FixedState`].
+ #[inline(always)]
+ pub fn fixed() -> Self {
+ Self {
+ inner: fast::SeedableRandomState::fixed(),
+ }
+ }
+
+ /// Generates a [`SeedableRandomState`] with the given per-hasher seed
+ /// and [`SharedSeed`].
+ #[inline(always)]
+ pub fn with_seed(per_hasher_seed: u64, shared_seed: &'static SharedSeed) -> Self {
+ Self {
+ // We do an additional folded multiply with the seed here for
+ // the quality hash to ensure better independence between seed
+ // and hash.
+ inner: fast::SeedableRandomState::with_seed(
+ folded_multiply(per_hasher_seed, ARBITRARY8),
+ shared_seed,
+ ),
+ }
+ }
+}
+
+impl BuildHasher for SeedableRandomState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher {
+ inner: self.inner.build_hasher(),
+ }
+ }
+}
+
+/// A [`BuildHasher`] for [`quality::FoldHasher`](FoldHasher) that always has the same fixed seed.
+///
+/// Not recommended unless you absolutely need determinism.
+#[derive(Copy, Clone, Default, Debug)]
+pub struct FixedState {
+ inner: fast::FixedState,
+}
+
+impl FixedState {
+ /// Creates a [`FixedState`] with the given per-hasher seed.
+ #[inline(always)]
+ pub const fn with_seed(per_hasher_seed: u64) -> Self {
+ Self {
+ // We do an additional folded multiply with the seed here for
+ // the quality hash to ensure better independence between seed
+ // and hash. If the seed is zero the folded multiply is zero,
+ // preserving with_seed(0) == default().
+ inner: fast::FixedState::with_seed(folded_multiply(per_hasher_seed, ARBITRARY8)),
+ }
+ }
+}
+
+impl BuildHasher for FixedState {
+ type Hasher = FoldHasher;
+
+ #[inline(always)]
+ fn build_hasher(&self) -> FoldHasher {
+ FoldHasher {
+ inner: self.inner.build_hasher(),
+ }
+ }
+}
diff --git a/crates/foldhash/src/seed.rs b/crates/foldhash/src/seed.rs
index 01f9f45..811605c 100644
--- a/crates/foldhash/src/seed.rs
+++ b/crates/foldhash/src/seed.rs
@@ -1,182 +1,118 @@
-use core::hash::BuildHasher;
-
// These constants may end up unused depending on platform support.
#[allow(unused)]
use crate::{ARBITRARY1, ARBITRARY9};
-use super::{
- folded_multiply, ARBITRARY2, ARBITRARY3, ARBITRARY4, ARBITRARY5, ARBITRARY6, ARBITRARY7,
- ARBITRARY8,
-};
+use super::{folded_multiply, ARBITRARY2, ARBITRARY4, ARBITRARY5, ARBITRARY6, ARBITRARY7};
/// Used for FixedState, and RandomState if atomics for dynamic init are unavailable.
-const FIXED_GLOBAL_SEED: [u64; 4] = [ARBITRARY4, ARBITRARY5, ARBITRARY6, ARBITRARY7];
+const FIXED_GLOBAL_SEED: SharedSeed = SharedSeed {
+ seeds: [ARBITRARY4, ARBITRARY5, ARBITRARY6, ARBITRARY7],
+};
-pub mod fast {
- use super::*;
- use crate::fast::FoldHasher;
+pub(crate) fn gen_per_hasher_seed() -> u64 {
+ // We initialize the per-hasher seed with the stack pointer to ensure
+ // different threads have different seeds, with as side benefit that
+ // stack address randomization gives us further non-determinism.
+ let mut per_hasher_seed = 0;
+ let stack_ptr = core::ptr::addr_of!(per_hasher_seed) as u64;
+ per_hasher_seed = stack_ptr;
- /// A [`BuildHasher`] for [`fast::FoldHasher`]s that are randomly initialized.
- #[derive(Copy, Clone, Debug)]
- pub struct RandomState {
- per_hasher_seed: u64,
- global_seed: global::GlobalSeed,
- }
-
- impl Default for RandomState {
- fn default() -> Self {
- // We initialize the per-hasher seed with the stack pointer to ensure
- // different threads have different seeds, with as side benefit that
- // stack address randomization gives us further non-determinism.
- let mut per_hasher_seed = 0;
- let stack_ptr = core::ptr::addr_of!(per_hasher_seed) as u64;
- per_hasher_seed = stack_ptr;
-
- // If we have the standard library available we use a thread-local
- // state to ensure RandomStates are different with high probability,
- // even if the call stack is the same.
- #[cfg(feature = "std")]
- {
- use std::cell::Cell;
- thread_local! {
- static PER_HASHER_NONDETERMINISM: Cell<u64> = const { Cell::new(0) };
- }
-
- let nondeterminism = PER_HASHER_NONDETERMINISM.get();
- per_hasher_seed = folded_multiply(per_hasher_seed, ARBITRARY1 ^ nondeterminism);
- PER_HASHER_NONDETERMINISM.set(per_hasher_seed);
- };
-
- // If we don't have the standard library we instead use a global
- // atomic instead of a thread-local state.
- //
- // PER_HASHER_NONDETERMINISM is loaded and updated in a racy manner,
- // but this doesn't matter in practice - it is impossible that two
- // different threads have the same stack location, so they'll almost
- // surely generate different seeds, and provide a different possible
- // update for PER_HASHER_NONDETERMINISM. If we would use a proper
- // fetch_add atomic update then there is a larger chance of
- // problematic contention.
- //
- // We use usize instead of 64-bit atomics for best platform support.
- #[cfg(not(feature = "std"))]
- {
- use core::sync::atomic::{AtomicUsize, Ordering};
- static PER_HASHER_NONDETERMINISM: AtomicUsize = AtomicUsize::new(0);
-
- let nondeterminism = PER_HASHER_NONDETERMINISM.load(Ordering::Relaxed) as u64;
- per_hasher_seed = folded_multiply(per_hasher_seed, ARBITRARY1 ^ nondeterminism);
- PER_HASHER_NONDETERMINISM.store(per_hasher_seed as usize, Ordering::Relaxed);
- }
-
- // One extra mixing step to ensure good random bits.
- per_hasher_seed = folded_multiply(per_hasher_seed, ARBITRARY2);
-
- Self {
- per_hasher_seed,
- global_seed: global::GlobalSeed::new(),
- }
+ // If we have the standard library available we use a thread-local
+ // state to ensure RandomStates are different with high probability,
+ // even if the call stack is the same.
+ #[cfg(feature = "std")]
+ {
+ use std::cell::Cell;
+ thread_local! {
+ static PER_HASHER_NONDETERMINISM: Cell<u64> = const { Cell::new(0) };
}
+
+ PER_HASHER_NONDETERMINISM.with(|cell| {
+ let nondeterminism = cell.get();
+ per_hasher_seed = folded_multiply(per_hasher_seed, ARBITRARY1 ^ nondeterminism);
+ cell.set(per_hasher_seed);
+ })
+ };
+
+ // If we don't have the standard library we instead use a global
+ // atomic instead of a thread-local state.
+ //
+ // PER_HASHER_NONDETERMINISM is loaded and updated in a racy manner,
+ // but this doesn't matter in practice - it is impossible that two
+ // different threads have the same stack location, so they'll almost
+ // surely generate different seeds, and provide a different possible
+ // update for PER_HASHER_NONDETERMINISM. If we would use a proper
+ // fetch_add atomic update then there is a larger chance of
+ // problematic contention.
+ //
+ // We use usize instead of 64-bit atomics for best platform support.
+ #[cfg(not(feature = "std"))]
+ {
+ use core::sync::atomic::{AtomicUsize, Ordering};
+ static PER_HASHER_NONDETERMINISM: AtomicUsize = AtomicUsize::new(0);
+
+ let nondeterminism = PER_HASHER_NONDETERMINISM.load(Ordering::Relaxed) as u64;
+ per_hasher_seed = folded_multiply(per_hasher_seed, ARBITRARY1 ^ nondeterminism);
+ PER_HASHER_NONDETERMINISM.store(per_hasher_seed as usize, Ordering::Relaxed);
}
- impl BuildHasher for RandomState {
- type Hasher = FoldHasher;
-
- #[inline(always)]
- fn build_hasher(&self) -> FoldHasher {
- FoldHasher::with_seed(self.per_hasher_seed, self.global_seed.get())
- }
- }
-
- /// A [`BuildHasher`] for [`fast::FoldHasher`]s that all have the same fixed seed.
- ///
- /// Not recommended unless you absolutely need determinism.
- #[derive(Copy, Clone, Debug)]
- pub struct FixedState {
- per_hasher_seed: u64,
- }
-
- impl FixedState {
- /// Creates a [`FixedState`] with the given seed.
- #[inline(always)]
- pub const fn with_seed(seed: u64) -> Self {
- // XOR with ARBITRARY3 such that with_seed(0) matches default.
- Self {
- per_hasher_seed: seed ^ ARBITRARY3,
- }
- }
- }
-
- impl Default for FixedState {
- #[inline(always)]
- fn default() -> Self {
- Self {
- per_hasher_seed: ARBITRARY3,
- }
- }
- }
-
- impl BuildHasher for FixedState {
- type Hasher = FoldHasher;
-
- #[inline(always)]
- fn build_hasher(&self) -> FoldHasher {
- FoldHasher::with_seed(self.per_hasher_seed, &FIXED_GLOBAL_SEED)
- }
- }
+ // One extra mixing step to ensure good random bits.
+ folded_multiply(per_hasher_seed, ARBITRARY2)
}
-pub mod quality {
- use super::*;
- use crate::quality::FoldHasher;
+/// A random seed intended to be shared by many different foldhash instances.
+///
+/// This seed is consumed by [`FoldHasher::with_seed`](crate::fast::FoldHasher::with_seed),
+/// and [`SeedableRandomState::with_seed`](crate::fast::SeedableRandomState::with_seed).
+#[derive(Clone, Debug)]
+pub struct SharedSeed {
+ pub(crate) seeds: [u64; 4],
+}
- /// A [`BuildHasher`] for [`quality::FoldHasher`]s that are randomly initialized.
- #[derive(Copy, Clone, Default, Debug)]
- pub struct RandomState {
- inner: fast::RandomState,
+impl SharedSeed {
+ /// Returns the globally shared randomly initialized [`SharedSeed`] as used
+ /// by [`RandomState`](crate::fast::RandomState).
+ #[inline(always)]
+ pub fn global_random() -> &'static SharedSeed {
+ global::GlobalSeed::new().get()
}
- impl BuildHasher for RandomState {
- type Hasher = FoldHasher;
-
- #[inline(always)]
- fn build_hasher(&self) -> FoldHasher {
- FoldHasher {
- inner: self.inner.build_hasher(),
- }
- }
+ /// Returns the globally shared fixed [`SharedSeed`] as used
+ /// by [`FixedState`](crate::fast::FixedState).
+ #[inline(always)]
+ pub const fn global_fixed() -> &'static SharedSeed {
+ &FIXED_GLOBAL_SEED
}
- /// A [`BuildHasher`] for [`quality::FoldHasher`]s that all have the same fixed seed.
+ /// Generates a new [`SharedSeed`] from a single 64-bit seed.
///
- /// Not recommended unless you absolutely need determinism.
- #[derive(Copy, Clone, Default, Debug)]
- pub struct FixedState {
- inner: fast::FixedState,
- }
-
- impl FixedState {
- /// Creates a [`FixedState`] with the given seed.
- #[inline(always)]
- pub const fn with_seed(seed: u64) -> Self {
- Self {
- // We do an additional folded multiply with the seed here for
- // the quality hash to ensure better independence between seed
- // and hash. If the seed is zero the folded multiply is zero,
- // preserving with_seed(0) == default().
- inner: fast::FixedState::with_seed(folded_multiply(seed, ARBITRARY8)),
- }
+ /// Note that this is somewhat expensive so it is suggested to re-use the
+ /// [`SharedSeed`] as much as possible, using the per-hasher seed to
+ /// differentiate between hash instances.
+ pub const fn from_u64(seed: u64) -> Self {
+ macro_rules! mix {
+ ($x: expr) => {
+ folded_multiply($x, ARBITRARY9)
+ };
}
- }
- impl BuildHasher for FixedState {
- type Hasher = FoldHasher;
+ let seed_a = mix!(mix!(mix!(seed)));
+ let seed_b = mix!(mix!(mix!(seed_a)));
+ let seed_c = mix!(mix!(mix!(seed_b)));
+ let seed_d = mix!(mix!(mix!(seed_c)));
- #[inline(always)]
- fn build_hasher(&self) -> FoldHasher {
- FoldHasher {
- inner: self.inner.build_hasher(),
- }
+ // Zeroes form a weak-point for the multiply-mix, and zeroes tend to be
+ // a common input. So we want our global seeds that are XOR'ed with the
+ // input to always be non-zero. To also ensure there is always a good spread
+ // of bits, we give up 3 bits of entropy and simply force some bits on.
+ const FORCED_ONES: u64 = (1 << 63) | (1 << 31) | 1;
+ Self {
+ seeds: [
+ seed_a | FORCED_ONES,
+ seed_b | FORCED_ONES,
+ seed_c | FORCED_ONES,
+ seed_d | FORCED_ONES,
+ ],
}
}
}
@@ -187,7 +123,7 @@
use core::cell::UnsafeCell;
use core::sync::atomic::{AtomicU8, Ordering};
- fn generate_global_seed() -> [u64; 4] {
+ fn generate_global_seed() -> SharedSeed {
let mix = |seed: u64, x: u64| folded_multiply(seed ^ x, ARBITRARY9);
// Use address space layout randomization as our main randomness source.
@@ -220,22 +156,7 @@
seed = mix(seed, box_ptr as usize as u64);
}
- let seed_a = mix(seed, 0);
- let seed_b = mix(mix(mix(seed_a, 0), 0), 0);
- let seed_c = mix(mix(mix(seed_b, 0), 0), 0);
- let seed_d = mix(mix(mix(seed_c, 0), 0), 0);
-
- // Zeroes form a weak-point for the multiply-mix, and zeroes tend to be
- // a common input. So we want our global seeds that are XOR'ed with the
- // input to always be non-zero. To also ensure there is always a good spread
- // of bits, we give up 3 bits of entropy and simply force some bits on.
- const FORCED_ONES: u64 = (1 << 63) | (1 << 31) | 1;
- [
- seed_a | FORCED_ONES,
- seed_b | FORCED_ONES,
- seed_c | FORCED_ONES,
- seed_d | FORCED_ONES,
- ]
+ SharedSeed::from_u64(seed)
}
// Now all the below code purely exists to cache the above seed as
@@ -245,7 +166,7 @@
// to assume the storage is initialized after construction.
struct GlobalSeedStorage {
state: AtomicU8,
- seed: UnsafeCell<[u64; 4]>,
+ seed: UnsafeCell<SharedSeed>,
}
const UNINIT: u8 = 0;
@@ -259,7 +180,7 @@
static GLOBAL_SEED_STORAGE: GlobalSeedStorage = GlobalSeedStorage {
state: AtomicU8::new(UNINIT),
- seed: UnsafeCell::new([0; 4]),
+ seed: UnsafeCell::new(SharedSeed { seeds: [0; 4] }),
};
/// An object representing an initialized global seed.
@@ -293,7 +214,7 @@
match GLOBAL_SEED_STORAGE.state.compare_exchange_weak(
UNINIT,
LOCKED,
- Ordering::Relaxed,
+ Ordering::Acquire,
Ordering::Acquire,
) {
Ok(_) => unsafe {
@@ -315,7 +236,7 @@
}
#[inline(always)]
- pub fn get(self) -> &'static [u64; 4] {
+ pub fn get(self) -> &'static SharedSeed {
// SAFETY: our constructor ensured we are in the INIT state and thus
// this raw read does not race with any write.
unsafe { &*GLOBAL_SEED_STORAGE.seed.get() }
@@ -325,6 +246,8 @@
#[cfg(not(target_has_atomic = "8"))]
mod global {
+ use super::*;
+
#[derive(Copy, Clone, Debug)]
pub struct GlobalSeed {}
@@ -335,8 +258,10 @@
}
#[inline(always)]
- pub fn get(self) -> &'static [u64; 4] {
+ pub fn get(self) -> &'static SharedSeed {
&super::FIXED_GLOBAL_SEED
}
}
}
+
+pub(crate) use global::GlobalSeed;
diff --git a/crates/fs-err/.android-checksum.json b/crates/fs-err/.android-checksum.json
index 4728254..faa4db9 100644
--- a/crates/fs-err/.android-checksum.json
+++ b/crates/fs-err/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6cbfbcdc6fec6b8899f08bde09fd7ce428168c370e39a3a66f4e2c3a5ce8e3c5","Android.bp":"0119a6e10d1dca33b1da5c538080be59b918096412e70a9130d80577f42207ba","CHANGELOG.md":"330a5c58566439bcd7f18a9c6042420f7ea5020f2260a70990a7f3bc7a40f7a8","Cargo.toml":"60aacbb01e2de5c4b6f5d33056475d7a797194ee3cd0dc6d5fbc5c61c28916f9","LICENSE":"72683dc236dc9b1a88efcc4b5cf18c78f2149c21c9729fba58750a233b93fe47","LICENSE-APACHE":"72683dc236dc9b1a88efcc4b5cf18c78f2149c21c9729fba58750a233b93fe47","METADATA":"69757f385995432041d415239977f9a20bd2a9b95d432e87b68758cd2f31e6ef","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6146d75312f08a8d8e710f9c3019d49b8f593c0adfaefbfb31e40609007a820b","build.rs":"063693fbd5587847ab073aab7e087cecdf944aa514b3088c27dc55136ac427b3","cargo_embargo.json":"651827b0be315dc6c3973d2a32e15065ce98eb06fe43e132de89c8885c120ddd","src/dir.rs":"ecd7c0bee824830a8cf2cc8737d7f03a093315e2c14454ea41b739fb99c9a48d","src/errors.rs":"61936d4341c9afa77158b0233837ed50bc2425d0026ec8daba1c83543a84bfd2","src/file.rs":"c1ecbd1bde7a380a43b38e0083271b18edb9aa989e1235699486e9f019a66d8e","src/lib.rs":"da6f098deec068b8450b1585a36580d1f4cb671b0d50b4d57ddddfe564f1f3fb","src/open_options.rs":"c456cc8308706a0778a857159899bb89ee712380e77e1f56076b2f5f3c1851e9","src/os.rs":"ffb7e398c586997868776af2325ac798525753ae171ac88e87a36d994f519f38","src/os/unix.rs":"f793f46d29e6354be2e7726e475cce3862ed1d02e30f5219890b76d522f22e6a","src/os/windows.rs":"bb74c318777b1d429c07e80f739d689260da47564dac991b72fde447a8ab1d9b","src/path.rs":"a1f22cc73fe7a2c370566a2d830c8e38847b763c600ceb3d6d8345c687f1964c","src/tokio/dir_builder.rs":"5cbed6d1f1cc9eab8f2d41e8f924279675c9eae8c18380c3cc3f591e194747d9","src/tokio/file.rs":"07203622146c198a06a47dbd51558d5b884576a59766436c4743f43e8301f15f","src/tokio/mod.rs":"12b6bc3d0ead2a075cb098086affe7a08dd2b877793c4d7cc93d470ba4767861","src/tokio/open_options.rs":"b47e8bd98bce103e5d41fdf0ff289b211f29a1ac64fa170602e965dad3784bd6","src/tokio/read_dir.rs":"e6e94f8b22a3ff02a982c6394ab41701cccd8cb8099090905545970eaf7c8c7e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6cbfbcdc6fec6b8899f08bde09fd7ce428168c370e39a3a66f4e2c3a5ce8e3c5","Android.bp":"0c6ed3eb075df59c503fb85f8119003f499fbe868509c9b4a9202ab7c9012c19","CHANGELOG.md":"330a5c58566439bcd7f18a9c6042420f7ea5020f2260a70990a7f3bc7a40f7a8","Cargo.toml":"60aacbb01e2de5c4b6f5d33056475d7a797194ee3cd0dc6d5fbc5c61c28916f9","LICENSE":"72683dc236dc9b1a88efcc4b5cf18c78f2149c21c9729fba58750a233b93fe47","LICENSE-APACHE":"72683dc236dc9b1a88efcc4b5cf18c78f2149c21c9729fba58750a233b93fe47","METADATA":"69757f385995432041d415239977f9a20bd2a9b95d432e87b68758cd2f31e6ef","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6146d75312f08a8d8e710f9c3019d49b8f593c0adfaefbfb31e40609007a820b","build.rs":"063693fbd5587847ab073aab7e087cecdf944aa514b3088c27dc55136ac427b3","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/dir.rs":"ecd7c0bee824830a8cf2cc8737d7f03a093315e2c14454ea41b739fb99c9a48d","src/errors.rs":"61936d4341c9afa77158b0233837ed50bc2425d0026ec8daba1c83543a84bfd2","src/file.rs":"c1ecbd1bde7a380a43b38e0083271b18edb9aa989e1235699486e9f019a66d8e","src/lib.rs":"da6f098deec068b8450b1585a36580d1f4cb671b0d50b4d57ddddfe564f1f3fb","src/open_options.rs":"c456cc8308706a0778a857159899bb89ee712380e77e1f56076b2f5f3c1851e9","src/os.rs":"ffb7e398c586997868776af2325ac798525753ae171ac88e87a36d994f519f38","src/os/unix.rs":"f793f46d29e6354be2e7726e475cce3862ed1d02e30f5219890b76d522f22e6a","src/os/windows.rs":"bb74c318777b1d429c07e80f739d689260da47564dac991b72fde447a8ab1d9b","src/path.rs":"a1f22cc73fe7a2c370566a2d830c8e38847b763c600ceb3d6d8345c687f1964c","src/tokio/dir_builder.rs":"5cbed6d1f1cc9eab8f2d41e8f924279675c9eae8c18380c3cc3f591e194747d9","src/tokio/file.rs":"07203622146c198a06a47dbd51558d5b884576a59766436c4743f43e8301f15f","src/tokio/mod.rs":"12b6bc3d0ead2a075cb098086affe7a08dd2b877793c4d7cc93d470ba4767861","src/tokio/open_options.rs":"b47e8bd98bce103e5d41fdf0ff289b211f29a1ac64fa170602e965dad3784bd6","src/tokio/read_dir.rs":"e6e94f8b22a3ff02a982c6394ab41701cccd8cb8099090905545970eaf7c8c7e"}}
\ No newline at end of file
diff --git a/crates/fs-err/Android.bp b/crates/fs-err/Android.bp
index d636f9e..9f9e2ba 100644
--- a/crates/fs-err/Android.bp
+++ b/crates/fs-err/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/fs-err/cargo_embargo.json b/crates/fs-err/cargo_embargo.json
index 0967ef4..41e8c50 100644
--- a/crates/fs-err/cargo_embargo.json
+++ b/crates/fs-err/cargo_embargo.json
@@ -1 +1,3 @@
-{}
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/futures-macro/.android-checksum.json b/crates/futures-macro/.android-checksum.json
index 7df0436..2324a4c 100644
--- a/crates/futures-macro/.android-checksum.json
+++ b/crates/futures-macro/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0af53aac7d554dcc83597b4a4ca9c1c20c0e8988929222c282f2aed47c6d27af","Android.bp":"d0982e9b2319c98c540c49652454bc725d3253735d76947832896c21eb8c1416","Cargo.toml":"8564eb6a727613b69f11fac43d175b0cdadd994203cae42c46166f2b90b14e71","LICENSE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","LICENSE-APACHE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","METADATA":"084e980b62da6d70e4ee4a80f504e8ac18d95dffb74fabe01de3ff2f214d5b6f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"6f03208493e7961934f48334236d464782048c527bfb446756cfab2cedfb0c95","cargo_embargo.json":"6867efe20dc6a2d12d8c48a4fdb2fa34b322855483f8fcabf3850475babe71f8","src/executor.rs":"f85b07b9ceb68f2bbf44a9e0a82e9c7c5c881cf67633782f9c2076d3abc64476","src/join.rs":"eddc5926bfe89a9293d0a9545817110297ae63b5fa3904c93c5efb1179612fb3","src/lib.rs":"fea8084ce338ea315e3aecafcee20fab764d2cec20cfb3529319594654f3f22d","src/select.rs":"ccb29610a99ab77e7dce4f8fa08d9f6261323a1973d81eb2598b5f05a17f7615","src/stream_select.rs":"aa0d3e8a8bfab1b77ac799e6f99004692ac6030ec34309d20e02bdb6451b065e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0af53aac7d554dcc83597b4a4ca9c1c20c0e8988929222c282f2aed47c6d27af","Android.bp":"d0982e9b2319c98c540c49652454bc725d3253735d76947832896c21eb8c1416","Cargo.toml":"8564eb6a727613b69f11fac43d175b0cdadd994203cae42c46166f2b90b14e71","LICENSE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","LICENSE-APACHE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","METADATA":"084e980b62da6d70e4ee4a80f504e8ac18d95dffb74fabe01de3ff2f214d5b6f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"6f03208493e7961934f48334236d464782048c527bfb446756cfab2cedfb0c95","cargo_embargo.json":"0c777afae6cd35720bfab75305fc64d1407d542b149f7b0b71944fe99a4ce2cd","src/executor.rs":"f85b07b9ceb68f2bbf44a9e0a82e9c7c5c881cf67633782f9c2076d3abc64476","src/join.rs":"eddc5926bfe89a9293d0a9545817110297ae63b5fa3904c93c5efb1179612fb3","src/lib.rs":"fea8084ce338ea315e3aecafcee20fab764d2cec20cfb3529319594654f3f22d","src/select.rs":"ccb29610a99ab77e7dce4f8fa08d9f6261323a1973d81eb2598b5f05a17f7615","src/stream_select.rs":"aa0d3e8a8bfab1b77ac799e6f99004692ac6030ec34309d20e02bdb6451b065e"}}
\ No newline at end of file
diff --git a/crates/futures-macro/cargo_embargo.json b/crates/futures-macro/cargo_embargo.json
index 2cd9227..6d1adfd 100644
--- a/crates/futures-macro/cargo_embargo.json
+++ b/crates/futures-macro/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/futures-test/.android-checksum.json b/crates/futures-test/.android-checksum.json
index 055dcbe..70d9e72 100644
--- a/crates/futures-test/.android-checksum.json
+++ b/crates/futures-test/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"08f31ad65d779ab8e6f8ce0920b909789450648f368e7f9c28ecf5b08e5899f5","Android.bp":"343993fbcfaf5a652480513677faa5b2a8a509f86284b81a269d7850c2e47648","Cargo.toml":"e5acfadf478ca81fe200e893c0eaa03ee401b083279ade80405fceed7ae61143","LICENSE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","LICENSE-APACHE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","METADATA":"8fa4be378f583c10a971935b92491eb7b2132fd7316296b4db336fcbac9845ac","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f4ce7c73383a96a63118c95e18d2b672edb00ab137c285af5f19836729e2f185","TEST_MAPPING":"3d0f10d250095b0bd1c3fe0fad4e9ac284b7ff9bc8efd9fd93a32385e55f4877","cargo_embargo.json":"3c1e1d20399b03bdf55f18d6015a4094345e1520ee0c54e21b2c4c0f8cbb7536","src/assert.rs":"1b50a1c4166bb1458a6ab1b9060af1bcedf36fea24865bb310bfe70825ff206b","src/assert_unmoved.rs":"7ef62c570ae7e33b52f56ab5eb2d126095e9a5831f26734d420137d996340ca0","src/future/mod.rs":"4ae19f978a5b1ee8ce620b2b3fc3a5442c9d5ae97a821c8969e7673b03dea621","src/future/pending_once.rs":"ff6baadd3c33a5206bcb2703980e578164093f2e63c895c8ffd9d45c392734ed","src/interleave_pending.rs":"e5532179288fed02cff11697912b0ffb11008bbf0019807089ff3b5cf4d97ad7","src/io/limited.rs":"f03d4372911f77dfef2b27c9356d2f5080ffc52e47a4281473c9736652727ca3","src/io/mod.rs":"6d744c161e3afa9884e8ed13497b0bb8d05589ee88483fae019a76c719239620","src/io/read/mod.rs":"24cc6805ae6dd4c8e2c30f7effea7f3e1ac29ae300ed97762ea26672892826ef","src/io/write/mod.rs":"ea38664dbc5b198e681eb2f88aaf16cd9bd2a3df384de8ce49ba94509b505849","src/lib.rs":"bef47c6421eb6e46a34bc15ec2aeadfeee2f34b5e28c98717ba875bf981ce555","src/sink/mod.rs":"5e9c47ca20d7f284a530ade9fed9542f846e001b5c432a4876a55acd723ff69a","src/stream/mod.rs":"7950c6f7402da34eafbd2db41508d91e38be4d711e01ce10c20de5ff5b3c15eb","src/task/context.rs":"3ea7b3b2c47ee62c139a13e6f9782dd8a81482feee14537154e517de9c8f866f","src/task/mod.rs":"65b6a8a97c44e0918c734b1a7061213c6b24c815f0aed15c15ebd12227160e7e","src/task/noop_spawner.rs":"12b4c5df8fb6d19274b1123c321ad6233a05c636aa649aade5024187530b870b","src/task/panic_spawner.rs":"c9590eb13854e0df8d13d73ce33d2170eb756241bd9ff09e52ad172defea759e","src/task/panic_waker.rs":"c8a28aa7354aca79a6e7310de63c0838b451a4d03e4d48e521b2bac5f9034b3a","src/task/record_spawner.rs":"bd2db1040bd3630c3cd089c7f189321362b08cccfec6e9d5711c974891383eed","src/task/wake_counter.rs":"d7e45e679293c8e55e11a9123b8f06b09edd4fd73f59c95f88c4c8f5aaf372ca","src/track_closed.rs":"7dcb2704127809090feef6c49e72be3ce02ee1cae37ed7179ba03e4c91d0ff20"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"08f31ad65d779ab8e6f8ce0920b909789450648f368e7f9c28ecf5b08e5899f5","Android.bp":"ef1eb096bb7fbfa6389e5ff8e8bbc43cbf143bc6b44145babb234c4163030896","Cargo.toml":"e5acfadf478ca81fe200e893c0eaa03ee401b083279ade80405fceed7ae61143","LICENSE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","LICENSE-APACHE":"1668e4a7c2bf36f4f066c84c954a7b0046e0b36206db512da41c8ab5578f2c77","METADATA":"8fa4be378f583c10a971935b92491eb7b2132fd7316296b4db336fcbac9845ac","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f4ce7c73383a96a63118c95e18d2b672edb00ab137c285af5f19836729e2f185","TEST_MAPPING":"3d0f10d250095b0bd1c3fe0fad4e9ac284b7ff9bc8efd9fd93a32385e55f4877","cargo_embargo.json":"50e8e8ab3603fba8f92d10fef7134328fbcff2eb41ec44050567f63bcbd82c49","src/assert.rs":"1b50a1c4166bb1458a6ab1b9060af1bcedf36fea24865bb310bfe70825ff206b","src/assert_unmoved.rs":"7ef62c570ae7e33b52f56ab5eb2d126095e9a5831f26734d420137d996340ca0","src/future/mod.rs":"4ae19f978a5b1ee8ce620b2b3fc3a5442c9d5ae97a821c8969e7673b03dea621","src/future/pending_once.rs":"ff6baadd3c33a5206bcb2703980e578164093f2e63c895c8ffd9d45c392734ed","src/interleave_pending.rs":"e5532179288fed02cff11697912b0ffb11008bbf0019807089ff3b5cf4d97ad7","src/io/limited.rs":"f03d4372911f77dfef2b27c9356d2f5080ffc52e47a4281473c9736652727ca3","src/io/mod.rs":"6d744c161e3afa9884e8ed13497b0bb8d05589ee88483fae019a76c719239620","src/io/read/mod.rs":"24cc6805ae6dd4c8e2c30f7effea7f3e1ac29ae300ed97762ea26672892826ef","src/io/write/mod.rs":"ea38664dbc5b198e681eb2f88aaf16cd9bd2a3df384de8ce49ba94509b505849","src/lib.rs":"bef47c6421eb6e46a34bc15ec2aeadfeee2f34b5e28c98717ba875bf981ce555","src/sink/mod.rs":"5e9c47ca20d7f284a530ade9fed9542f846e001b5c432a4876a55acd723ff69a","src/stream/mod.rs":"7950c6f7402da34eafbd2db41508d91e38be4d711e01ce10c20de5ff5b3c15eb","src/task/context.rs":"3ea7b3b2c47ee62c139a13e6f9782dd8a81482feee14537154e517de9c8f866f","src/task/mod.rs":"65b6a8a97c44e0918c734b1a7061213c6b24c815f0aed15c15ebd12227160e7e","src/task/noop_spawner.rs":"12b4c5df8fb6d19274b1123c321ad6233a05c636aa649aade5024187530b870b","src/task/panic_spawner.rs":"c9590eb13854e0df8d13d73ce33d2170eb756241bd9ff09e52ad172defea759e","src/task/panic_waker.rs":"c8a28aa7354aca79a6e7310de63c0838b451a4d03e4d48e521b2bac5f9034b3a","src/task/record_spawner.rs":"bd2db1040bd3630c3cd089c7f189321362b08cccfec6e9d5711c974891383eed","src/task/wake_counter.rs":"d7e45e679293c8e55e11a9123b8f06b09edd4fd73f59c95f88c4c8f5aaf372ca","src/track_closed.rs":"7dcb2704127809090feef6c49e72be3ce02ee1cae37ed7179ba03e4c91d0ff20"}}
\ No newline at end of file
diff --git a/crates/futures-test/Android.bp b/crates/futures-test/Android.bp
index 87f2104..92b8f1f 100644
--- a/crates/futures-test/Android.bp
+++ b/crates/futures-test/Android.bp
@@ -70,4 +70,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/futures-test/cargo_embargo.json b/crates/futures-test/cargo_embargo.json
index 246281d..1498c29 100644
--- a/crates/futures-test/cargo_embargo.json
+++ b/crates/futures-test/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"tests": true,
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/fxhash/.android-checksum.json b/crates/fxhash/.android-checksum.json
index 61854ef..b51e95f 100644
--- a/crates/fxhash/.android-checksum.json
+++ b/crates/fxhash/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e630a4da3184836d8896d1e0f77af9547228dd02a08a9f12d48941efb6aaed9a","Android.bp":"bec56903906d7aaef39f1d975528cd206a4a3d981686eeac478e92e594de919e","Cargo.toml":"218a03cf785aa99b53e4c9648097622eb207b5188decea1e7fd8a4a296022098","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"34fc59b38496943fdcc7b8b848dbb9c8d39ce541d7eb0749ffdbb5f3a3e411a3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"012ed3d75fb112b7de8010f5ec3e8ed5b66cea8921b368ce5ddd9a31b7bf1f09","TEST_MAPPING":"2d345fb43750e321decf11263bcae3570d79b87ea8c1346c40c7a1446ce3c52f","bench.rs":"28d5f86cf204e63013a22d55412a12d03ce051ce69a2d69d9ee2a2f676882809","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","lib.rs":"75d919cee4a1870dc7d144388b15783e30b18e2b6869d56143ee2edf0003eadb","patches/license.patch":"d27a95829014fea58bce8b1e36955a2bc475e3afd1a712f0b102449da8dee620"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e630a4da3184836d8896d1e0f77af9547228dd02a08a9f12d48941efb6aaed9a","Android.bp":"f71b6e7ca0fd0ee45e5854fe2a6d88a8fcab8f9f6c7567c784d3c290136ae0b6","Cargo.toml":"218a03cf785aa99b53e4c9648097622eb207b5188decea1e7fd8a4a296022098","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","LICENSE-APACHE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"34fc59b38496943fdcc7b8b848dbb9c8d39ce541d7eb0749ffdbb5f3a3e411a3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"012ed3d75fb112b7de8010f5ec3e8ed5b66cea8921b368ce5ddd9a31b7bf1f09","TEST_MAPPING":"2d345fb43750e321decf11263bcae3570d79b87ea8c1346c40c7a1446ce3c52f","bench.rs":"28d5f86cf204e63013a22d55412a12d03ce051ce69a2d69d9ee2a2f676882809","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","lib.rs":"75d919cee4a1870dc7d144388b15783e30b18e2b6869d56143ee2edf0003eadb","patches/license.patch":"d27a95829014fea58bce8b1e36955a2bc475e3afd1a712f0b102449da8dee620"}}
\ No newline at end of file
diff --git a/crates/fxhash/Android.bp b/crates/fxhash/Android.bp
index c509e15..c5eb73b 100644
--- a/crates/fxhash/Android.bp
+++ b/crates/fxhash/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/fxhash/cargo_embargo.json b/crates/fxhash/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/fxhash/cargo_embargo.json
+++ b/crates/fxhash/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/gbm/.android-checksum.json b/crates/gbm/.android-checksum.json
index 2cec007..92f0aff 100644
--- a/crates/gbm/.android-checksum.json
+++ b/crates/gbm/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a1cd3464a603de430cb7798aa74752baaa07dc9c11cb3e15f2a303cb5dec46ac","Android.bp":"de54f5441c1005bb53b920ef5eb97e5174a9cfdd49611b737eff50b67061ed39","CHANGELOG.md":"96005d1ffb8d4d0a5982a16c5235815e83267407dba194780760a6c9aff44f85","Cargo.toml":"a0a6a5f8ce00b423b078e572e34564bb5bf509d6898872bba9584b739a2705db","LICENSE":"885553dd609597701310c3fb307f8231da21a4e00f35e2bca56b4ad671664cbf","METADATA":"d78d8ba60775812328a39863c1849d04b7117bef0b723ce1edb23cf6be5c29b8","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4d96a41faefb67b42d93bf08958956866403b81946e082ffe98cf6618ab8cd31","cargo_embargo.json":"a256a98b610bacb473394f3b9ab503f3d962ea99e29b3176e449ff707265afa8","src/buffer_object.rs":"870252cd5ace4058277bed8a3f40be245beaefb730edf636465e4527490e5553","src/device.rs":"7d38c88fdb68b63a8d6e54789b9ba8440eedae29c615425cca00e6f8ca6fc4c4","src/lib.rs":"1d7f0d70ed9f4d994cc6e2c63a060d1943fa03b519fc56146116f610a9bc9720","src/surface.rs":"28967184412dddc2f348e2cf1ee9b619dec07ff86b0f6762c627ff2270fa1dda"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a1cd3464a603de430cb7798aa74752baaa07dc9c11cb3e15f2a303cb5dec46ac","Android.bp":"7d94758ab635ffb53ed66f3d4b0ee1b0c429fb63e7920802c0b8ecc6b7e86555","CHANGELOG.md":"96005d1ffb8d4d0a5982a16c5235815e83267407dba194780760a6c9aff44f85","Cargo.toml":"a0a6a5f8ce00b423b078e572e34564bb5bf509d6898872bba9584b739a2705db","LICENSE":"885553dd609597701310c3fb307f8231da21a4e00f35e2bca56b4ad671664cbf","METADATA":"d78d8ba60775812328a39863c1849d04b7117bef0b723ce1edb23cf6be5c29b8","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4d96a41faefb67b42d93bf08958956866403b81946e082ffe98cf6618ab8cd31","cargo_embargo.json":"4c5bdf959a8cd0d377d45d23d18e896f93f7e7a0e94b4321118bad6c33855173","src/buffer_object.rs":"870252cd5ace4058277bed8a3f40be245beaefb730edf636465e4527490e5553","src/device.rs":"7d38c88fdb68b63a8d6e54789b9ba8440eedae29c615425cca00e6f8ca6fc4c4","src/lib.rs":"1d7f0d70ed9f4d994cc6e2c63a060d1943fa03b519fc56146116f610a9bc9720","src/surface.rs":"28967184412dddc2f348e2cf1ee9b619dec07ff86b0f6762c627ff2270fa1dda"}}
\ No newline at end of file
diff --git a/crates/gbm/Android.bp b/crates/gbm/Android.bp
index 5970bcf..e439be4 100644
--- a/crates/gbm/Android.bp
+++ b/crates/gbm/Android.bp
@@ -38,4 +38,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gbm/cargo_embargo.json b/crates/gbm/cargo_embargo.json
index 9db9128..b004296 100644
--- a/crates/gbm/cargo_embargo.json
+++ b/crates/gbm/cargo_embargo.json
@@ -1,7 +1,9 @@
{
"package": {
"gbm": {
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
"run_cargo": false,
@@ -11,5 +13,6 @@
},
"features": [
"drm-support"
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/gdbstub/.android-checksum.json b/crates/gdbstub/.android-checksum.json
index fbe6244..d7146bd 100644
--- a/crates/gdbstub/.android-checksum.json
+++ b/crates/gdbstub/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"35062a7f3ae91b0f5bbfb11b90871d0d8bde2f2335224bcec11e16e855a104c2","Android.bp":"f28265f3e23f2861186268f10f70580d466bdd83e495b5cb69c0254d48a58a66","CHANGELOG.md":"ae09b3be84327693aa92964d8ac5e6f8c46357c3b782bfc949497c494918ab3a","Cargo.lock":"cf1112da50e33f8ec828b4d9d978f3f910f8ca1374b0de7a019fa16d5e994598","Cargo.toml":"d01c17d7f3523c1737391b71497b5e5b19f92f7ea8bbf1ae247b442ccc7bd976","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"cb7a682a1dd5c6cc6a5e1123e5459bcaa9870ad00709b4996398d75bb9c5d837","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"10b1510352b02f7d4abf857812a58db0eddff8d2b5aff188df7372d0a202aca3","TEST_MAPPING":"0ae231c7e9c43bf3b90a1afed8df9687a20d36a241cd5a4ee669a0234ccbb76f","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"3363aaa21557483dbdbdcb9926546c6ea4adc2812743d18600d76bacae7b55d3","docs/LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","docs/transition_guide.md":"3e1009fef67ac63b93366d761f2a17ab92fe654fadff7746d47cce2e73a8aee7","examples/armv4t/README.md":"4d63c688ef7a51406b8c7a4936a339597b63542c64e0802002019d14a623d924","examples/armv4t/emu.rs":"9f7214305afa6a51381597fed70890927971a3ffb96e62dfc1196afb51b83648","examples/armv4t/gdb/auxv.rs":"a96d3ed4a1ad315c59ecdb01255b9f97c72f18523b09ca6087241fe1d9546791","examples/armv4t/gdb/breakpoints.rs":"0f9a06d78d6bc547f43f9858e1b133c7ac2bf21d5d5cacf2397ded7502789b17","examples/armv4t/gdb/catch_syscalls.rs":"017e54607254fa054fa9c48e787129e1869b6ae2430e62c4e10a126d5396ff07","examples/armv4t/gdb/exec_file.rs":"cf1c0bd94f060cab3d0de2dc3ff47a1b9adb64e9a321ece51ceb29028216268f","examples/armv4t/gdb/extended_mode.rs":"bc1867c34af77d8415956eb76c88fca8f4b83b97ba9de0dea0e844c6d769c3a0","examples/armv4t/gdb/host_io.rs":"29ca29128029136caec83c0eb5502b4ca70bd3eabb3b6ba51e46587ee7ae5d58","examples/armv4t/gdb/libraries.rs":"84126ca2d2b35e1118c96581f61824a0b583614653f8642e879bfad15ef6ea13","examples/armv4t/gdb/lldb_register_info_override.rs":"8a9df82938baccd43699e696468690511cf428b73f51205752d8c4effa781fb2","examples/armv4t/gdb/memory_map.rs":"abe902e835cba1ef6b4cfbea59e0e00bd597262f106be82e900bec1e58f296dc","examples/armv4t/gdb/mod.rs":"89e860305700dff26b0353005ec6fd801dbc7de9981cf3220f35ba1e821e80b4","examples/armv4t/gdb/monitor_cmd.rs":"e0eaa5d179499b20d0ca16f5f14086b7f1bf916c8d6736719ea5a30e3c792ec4","examples/armv4t/gdb/section_offsets.rs":"6b18b8dfff33e5099b33e666939765966cd2ffaf1227fe542c22c9a4ed45073e","examples/armv4t/gdb/target_description_xml_override.rs":"da5273e9857851a67c7837b862184da7d4149235e9fde78ed8ad1f6f6dae300d","examples/armv4t/gdb/tracepoints.rs":"d74306cea53cead2ab4c8e35e4fbfe542ffe10e09cb24936a291d0206e0af822","examples/armv4t/main.rs":"fc5477fbbeb3fbc5ede232e6f626c48eb3566f0596f01764826c8e54e3868565","examples/armv4t/mem_sniffer.rs":"cb3767de382716e3a370f378d287af69f4a69a07bb662869e03fcb8091d67e9d","examples/armv4t/test_bin/compile_test.sh":"72cfd4e08967c40c95f58ac1f4fd77140b823b9437a4493c3fbbae6f861c0c5c","examples/armv4t/test_bin/test.c":"2fcdc82b8aa29e9768ee46e6b65889a523062d9121c644c37d8b0c8157fb47a0","examples/armv4t/test_bin/test.ld":"c5f169baa007c021275be09afcb846cb7555a667bc87ac17af88d294e296bc93","examples/armv4t_multicore/README.md":"c1213975695143089a425bf8d880dc5305297b8c7e33dbe6219825981e70e0d8","examples/armv4t_multicore/emu.rs":"72c714bb36efca21628e29661dc50b8d51998c9c9e071ffe37522317a97624d1","examples/armv4t_multicore/gdb.rs":"cce6dc57de3a86aa4d26ef2277e31ad1d0e641af0acc6bcaf84eaae3e088cec8","examples/armv4t_multicore/main.rs":"086334a3c190c4d919ff92f29b8bfb1824066f6df7ce1dba4a0f53af5f999809","examples/armv4t_multicore/mem_sniffer.rs":"862512c13a9bfddb9550313203bcdf54c05d012d30776c5f653235f28c1d965a","examples/armv4t_multicore/test_bin/compile_test.sh":"72cfd4e08967c40c95f58ac1f4fd77140b823b9437a4493c3fbbae6f861c0c5c","examples/armv4t_multicore/test_bin/test.c":"ed6e69f0fb129a9a9b377a69e1a8d77352a81f856823514f979de4ea78f78042","examples/armv4t_multicore/test_bin/test.ld":"c5f169baa007c021275be09afcb846cb7555a667bc87ac17af88d294e296bc93","rustfmt.toml":"57f9edccf881fe5efbe1f692e339c17dc9c637aafba2602383cc64061a1f1ed7","scripts/test_dead_code_elim.sh":"bd21130bcea3e9dfaaf0086b82f184d5bae2483c9ebd5fdf62e171fa9bd5514b","src/arch.rs":"a86c9897a72b2ac600c73ef6afd22615c9c790e8a7a2996b76df8180148e89dd","src/common/mod.rs":"90d517dbfad798338fff627042dc5245dce365bd3eaf014bd2f40c2cf308acd8","src/common/signal.rs":"493f16f93537b48ef8682e307706eb6ac6e036f906e9e0694b4359c4034e723d","src/conn/impls/boxed.rs":"ceccbe5cdeb13363cc787572517a4a0a645a1c979a291c9fad416b81daf5a77e","src/conn/impls/mod.rs":"94910c8b342245d2e0beb406744e0acecdc1f6ad2099fa01acddc46d1bf65bc1","src/conn/impls/tcpstream.rs":"f8a22c6997bfffc03091d451a5ff6b0293e1a44e37d402a067c1fa985a7e88e8","src/conn/impls/unixstream.rs":"36a0d942dfa18783edca3b0c9474419b0143ca1bd5e0ae697a661e1b2d608600","src/conn/mod.rs":"dbebd7cff74cc5795f50fdef5ac2b39d657d93c90f3bc089674bb66db81eab35","src/internal/be_bytes.rs":"0ff7e0bde851e59c74f5b72a75cabd725424d69c560066429412d21a3279c3f8","src/internal/le_bytes.rs":"ba6d896932f70ac51230fefb1eac587a1001e08b2e26828dc58836a6b3b7fdb6","src/internal/mod.rs":"c913b10a0fe83d8c863f97077851a476e9d23f8a173cce94a8672b74bcb409f2","src/lib.rs":"1873b5a0d285ce382f5c9c8b5e0088a4cf770223801a4b9a3106c667e94dacab","src/protocol/commands.rs":"c451e5df7cac02fcf947bdcba734f9f2a78255786f3f5da1c514b14a2b836d8c","src/protocol/commands/_QAgent.rs":"d77a116fac86d93c97b37a723a64dfe4bffe92634c89b76df075e0a032c51681","src/protocol/commands/_QCatchSyscalls.rs":"01c6ce8c10b69834b34c35abbc354afb38cefb2468af73be55cd75ecad21dbfb","src/protocol/commands/_QDisableRandomization.rs":"3d403d8158d7e4692b9b56f14b2a56b7c242a55823b5b0a48737917693bad954","src/protocol/commands/_QEnvironmentHexEncoded.rs":"a663e29d1b759e398391897d5dd39e6fef3a2e192e1fbf1ec3e2dc9f70efe71f","src/protocol/commands/_QEnvironmentReset.rs":"c1c4272f986ae1e333c33e1bd1f76261a98e2fd9967d330c01645ef30b54607b","src/protocol/commands/_QEnvironmentUnset.rs":"376605e130c40b9ce0c1488021e987ebb135ae639c9397364712c3a4605ae6b4","src/protocol/commands/_QSetWorkingDir.rs":"7842db01dc7517085884cbd6c5bc4603c1aaec0b62841d7a37d265c7722cf96f","src/protocol/commands/_QStartNoAckMode.rs":"1ef33909409e023df54d1725e42966fe49eee0a36f6225faf00c04e23862d437","src/protocol/commands/_QStartupWithShell.rs":"28d972764ca5a5d29947f35237cfb25db8e594f986ceccb4f0190f053ab065a2","src/protocol/commands/_QTBuffer_upcase.rs":"269f5e09381e3b229d3eb50e8ba6f50e3b437ba02f47e355ee90b05d7c385af0","src/protocol/commands/_QTDP.rs":"c5b06b6f9cf549ceab6b7f3080b34e2b0815a41158ddc4a3ca700eb32a136424","src/protocol/commands/_QTDPsrc.rs":"c5198d83de3d70683866dc2386c2820115086957c16eb69c5227bb7ec1dd6539","src/protocol/commands/_QTFrame.rs":"cbec891b9f26964529fa3a57db63f9f541fec03b895a5244e8938854628932ce","src/protocol/commands/_QTStart.rs":"a87ae0156d5432266c892b9973373310b951a5b416348990359d510a759a7137","src/protocol/commands/_QTStop.rs":"2c83c251242d781c7cd66f395a3205cb3d22c71072a6c47e908c83d5fa0bf188","src/protocol/commands/_QTinit.rs":"56493fcce39cd70ff3e550b86e58a38260b5695fe2290e5f12bebe804c2dda44","src/protocol/commands/_bc.rs":"3bd9ef3d7193a6b76770743d88303a962fc9ec581e964ea72004f03736d24afd","src/protocol/commands/_bs.rs":"60391af020f4d592fa6195dfde71fea828d52ae31842f953f7210e2b423215e3","src/protocol/commands/_c.rs":"de5db311e163c6d281770ddd6f387751a3cb7227a554ca3a7d8e991c5e164bea","src/protocol/commands/_d_upcase.rs":"087555dcba8cca4af96845916cceff6fa77f2c8601ecf287d0675d6be5253ced","src/protocol/commands/_g.rs":"5c54dc7f97533bd8ae6a93bb6c9958f555d278de04f2c10525a3297707ce2d31","src/protocol/commands/_g_upcase.rs":"5edd3b2523c09df7cf222410ec04d91a0c4b440a30a6bb87590773ebc8f5f76b","src/protocol/commands/_h_upcase.rs":"22ed90aefd6ea223b932dd0128f2845f0e6eb2e6e0d83c94c15ed694f24ea415","src/protocol/commands/_k.rs":"36fc2f45eaa248406959971b5b771437a102954575e86daed4cf75e029d2065f","src/protocol/commands/_m.rs":"f7899acf70d8232eb801ca25088de0b26662f7d8fbb2e3a3e2843e8d008d2dbd","src/protocol/commands/_m_upcase.rs":"b9ef4a51325df2255d2e1c406cbcb90783220ff5e46498173094e09c0bf34466","src/protocol/commands/_p.rs":"2d49dcf8359d56c2da0cf072f3cdbee793852e776a873ccf11891495434599ea","src/protocol/commands/_p_upcase.rs":"0161f692c3cf5b813508e0ad183f9cfe3b18f96c8b81098c12e8b05b96153a42","src/protocol/commands/_qAttached.rs":"e97b939e6bf2aabe495c6aafb5f4818bbc18347b92e94b06db3dc16f6238bbd5","src/protocol/commands/_qC.rs":"9e8a14d24aa873b28e03b4b7d5207f7a9fa920dd4c0b1a941ff0f04def4b58d2","src/protocol/commands/_qOffsets.rs":"46f1019167fa44dd05170a9c5caa06f1eff7b49bd349bf1cd45c9629b06197f9","src/protocol/commands/_qRcmd.rs":"29be23910d936299054c551cb652421f71621bf4d0c2285f718cfb708d82d36f","src/protocol/commands/_qRegisterInfo.rs":"8284e4866227839026bd2e270be08d25128526eedde9f983e3f4461ee88caa05","src/protocol/commands/_qSupported.rs":"a7f9b2204f0be154eadc53611ddb66aedbfd1ca0b683bd2dd9b2188678478a3b","src/protocol/commands/_qTBuffer.rs":"c0ddbd5a11af782da330d66d2a7070e5ec07b483b3bb3b1ffe5cc876793cec77","src/protocol/commands/_qTP.rs":"f4db755d4077b31fc92d25c38200efeee641ac72288eb6bca7995c25ce610510","src/protocol/commands/_qTStatus.rs":"b9f7ac09c3d2f9f421fd363ad4b46d05fdf04d2a34d0c396ed1ff856a98d6815","src/protocol/commands/_qTfP.rs":"deab0bfd28661bacc3938f8642d30677c7acde69cd27b38ae52633fae041b4c7","src/protocol/commands/_qTfV.rs":"d9694ea199e97fafc3a99ebed427224aebc5197b38bf5372a30c0c636666453b","src/protocol/commands/_qThreadExtraInfo.rs":"ed104201cd4012ff046378d06a0e3c656689a450592dae514e5733f0959e8134","src/protocol/commands/_qTsP.rs":"6647769fa67495a0c6a93f7f02643c61d68a764fb672dfe4d6d94c87bcec8a02","src/protocol/commands/_qTsV.rs":"52d37eb596c4d06815402eec1294f6631bedd2ec184ec45c3043bec61ac282aa","src/protocol/commands/_qXfer_auxv_read.rs":"5db5eba9491e2412313071a836f8e470713d1cf6cacf078890bf2717487caece","src/protocol/commands/_qXfer_exec_file.rs":"e9cc6edb18779c649225d9c0941e9cb0ec531742001dc62c42e66004e8d85c84","src/protocol/commands/_qXfer_features_read.rs":"de53e999f06412de9851fd7707ef240a205d8329ec7bae0d71518b126a614b7c","src/protocol/commands/_qXfer_libraries_svr4_read.rs":"90ed71cb5150fee8261b415419c0e19dba26a8068c541cb3812fe63d990c0835","src/protocol/commands/_qXfer_memory_map.rs":"d4318d4afc6c42767d62c4f04b77771025a01fab797b8c553e9b9217ea46a783","src/protocol/commands/_qfThreadInfo.rs":"80f492e58a17674aac33f58a4a1ece24a01627748cf1a5e4a248798e855ce225","src/protocol/commands/_qsThreadInfo.rs":"623767d931a2e8c57eaefe5fd449c9993da7dd9e21ddd51ea69f3e5c555b9e01","src/protocol/commands/_r_upcase.rs":"35406c84b81810e08f9554883f69e47ed7e5948df2a3bf383ed24dd77963fce9","src/protocol/commands/_s.rs":"83cfdb848692ccc2f20eb32a884bfb75896c79cc925b54dd035d0fb01bf88426","src/protocol/commands/_t_upcase.rs":"c6822881aaf1bcfd322b2139f042cf668f98dca2a00f17fcbf057cc8ba4062b5","src/protocol/commands/_vAttach.rs":"082b6b6978eabc3ed177fb0e1fa7c38b7b86eef4707b13e9a6d93747cbb973b7","src/protocol/commands/_vCont.rs":"6ca090d4ae4a6cc044a4e750c052985f988f1cca1f9defc22af260b9e2200b97","src/protocol/commands/_vFile_close.rs":"9597d1c7f85216354e57cb098afba4d7ed276629446c7598fd0c36cde978d355","src/protocol/commands/_vFile_fstat.rs":"cf54d4ec32e6d9f2047e9cfa09b2d589159a2cd5c10fd905b3835a0a16a70a5a","src/protocol/commands/_vFile_open.rs":"04eb7b1f155dc958f877435e3bf9c75371b5a981dab48046e4c1bb932172efb6","src/protocol/commands/_vFile_pread.rs":"0586c897be2c0f260838fcbf25d51051c97e9cddeb9fc82e23dc5e4ce87dd35e","src/protocol/commands/_vFile_pwrite.rs":"d3794a580bc4772522dc3d85c3ec5fee96c931fa5924508bc529478c835b5c43","src/protocol/commands/_vFile_readlink.rs":"35d84d884d41cc7a0108bae594574e5c429474ce3a35db885ff27a38040d0ec8","src/protocol/commands/_vFile_setfs.rs":"8061afcb8816e8c71191708ad4e5082f3c5fa95ba5108586b2fa55d496e4668b","src/protocol/commands/_vFile_unlink.rs":"d4a41284559cec1d55261835f167afed1fe6ca683714b5568736451bee204d41","src/protocol/commands/_vKill.rs":"bbeda1ea7aa4a4a074282fab0c7aaa7078da8b44ebfef26fd82cdaba8a1fa077","src/protocol/commands/_vRun.rs":"9c61b3ff476342b48c84d9844228af250907f3830cea63b688beb789104ca23c","src/protocol/commands/_x_upcase.rs":"00ffb68fdd4c6d381c843dc0dfd61103c27f11c6425d0355271f981ac2df66ea","src/protocol/commands/breakpoint.rs":"c67579ba752cf23e2c6f62de1a3316ebd3da048260398f473a56bd3b4c775469","src/protocol/commands/exclamation_mark.rs":"b48fa202751d6067aab00b2cb667eaf31b36f3f41875b33380a257968aa869d5","src/protocol/commands/question_mark.rs":"da4ac2404260f7ab1ae6ca695175a55f5385efb51bb95d3f72f47401d8d4d587","src/protocol/common/hex.rs":"11ec16842a6b8dc8479e8079f4d3b6aaee33b194f5e05ed9f5cf4bdb6cebb7cd","src/protocol/common/lists.rs":"1e74ba5483861969be230843239963e269d1229f8dae15d72340d3363948323a","src/protocol/common/mod.rs":"c436936088e7780ee6bf0f6b869e75d08289edc6032e2817f53e18e7157eba1a","src/protocol/common/qxfer.rs":"857fe893d05a216bcee24a18c3c1b489279394298f585c4303fae099bdf25fda","src/protocol/common/thread_id.rs":"a84ba91355f2dac2c923703cfea72c792f34c8c8cd4ae2538148506e0833edac","src/protocol/console_output.rs":"ab3cd75ef56112210f00b9c118aa9bb190c569c0e45581b09a886225c126aa27","src/protocol/mod.rs":"b7a7bd9f05ea7351f2d160a5694ebaa0d9e5895a5a08945cf46d42a91194c382","src/protocol/packet.rs":"9fdf2d4fe43a79e4450b756604df80a3118324d6fc16835116f4fb21400b4cd7","src/protocol/recv_packet.rs":"a67fbe4c9101dc50aace04667372ceff6c98514fdee258e2f40d660734b4c975","src/protocol/response_writer.rs":"c0a6aa44f54c3e346eca9f6f00963ebe16a69cecc01ef15a66f6eaabe114676a","src/stub/builder.rs":"eebcbcf36c3669a6d20cb70f2de0fbf4d3212367dd10ac195d4c5a47ac926307","src/stub/core_impl.rs":"7ade8de19e6d16e7c7daa9b7186f4454037a5dfb01946bfaa3c0905a8d43259f","src/stub/core_impl/auxv.rs":"5a8664d4202db7f5ace21f19967ae72dcb3b575b861a5fe88db8725c2252682d","src/stub/core_impl/base.rs":"f0f24370315bd0add502fb60f572c8a0c093acd38734028d58ed00730507bdcd","src/stub/core_impl/breakpoints.rs":"4c44a120784e339cf5b13758011d285d78556bd4e53e4f2a824db7a8165c87e7","src/stub/core_impl/catch_syscalls.rs":"3d60802d8e3497237a94fdec16210f3e2788a8ddcdda1b4c883c885f26ec1e6a","src/stub/core_impl/exec_file.rs":"3e97b60e8de80c2e9a4a97803dbce0ce65855660ae20ecf5dfc8ecf30c691901","src/stub/core_impl/extended_mode.rs":"45e56fb28750f0e09b071df9122e3de7aa4122956cb6c0a675939940fb026e7c","src/stub/core_impl/host_io.rs":"34d2e47afcf4402a07b5ed83e4eb94725eb10e361b3969e9770ed7da7dc6d908","src/stub/core_impl/libraries.rs":"f79aec294384b99608d0d52504f827e7154e95af5a1b54459cf3d31837a87dc2","src/stub/core_impl/lldb_register_info.rs":"5957a274a91df9e8eb69c16dd960da9a45a5affe8727bffd0d420e0d4d8e37a6","src/stub/core_impl/memory_map.rs":"fa2a1c99fddbcc2dee6a85da130905fc078cab7a96e7e741e7423e3d0b375f13","src/stub/core_impl/monitor_cmd.rs":"3ac510cfa33c86382f987d7127e1301f8509911ba6d798563f795772a7cf005c","src/stub/core_impl/no_ack_mode.rs":"9f6b29f63c8cc5fdfbff70917bb1b77016d4e72ae41e371477e7b2d4f2eddf12","src/stub/core_impl/resume.rs":"85a123e802c9b5c84c3a694d5ff6211bf9ed81aac565279956ea8c0079b0d124","src/stub/core_impl/reverse_exec.rs":"ed5307d74ea4d6402f7a60c99a7504b1b9ffadb9d3e08284f68b1f3d722eb927","src/stub/core_impl/section_offsets.rs":"ec4463d8ee2c0052698b2639b59f53bce2f02197a05571e62253066a0b06cd15","src/stub/core_impl/single_register_access.rs":"57ecc81b120eef857aaa2d41de89c2fd05ab22866bd91c859f90cb48b40dcdc4","src/stub/core_impl/target_xml.rs":"2350ba6021710b2ca19484543077a1583c9dd26a3b63dbf66c1c589bf967fa96","src/stub/core_impl/thread_extra_info.rs":"7fee3cdaa9215f540ab196ddd2d39c5b889e36ab98077b659d16e18bbf5d4822","src/stub/core_impl/tracepoints.rs":"2ada774d3994de21a7b32d1c8010e0206a7e4f7efc5e4a5befe27adb3906b8a1","src/stub/core_impl/x_upcase_packet.rs":"c8de489f681a588f51ee23899e1d6a97a04f1200ad93f5a3f6dbf91094446ac9","src/stub/error.rs":"17e64ab616354d7549e9c636082b9f318f8c994cf7de726722ef47b7c7442a5b","src/stub/mod.rs":"ec5e9e4236c0839333b99d1d3c502499c38c560ccdeb2963fcdbeb871e9e9d01","src/stub/state_machine.rs":"fb329759efe84fd059312fb0417951d1a460e8e33451bd5cc2fecf5c2754ee28","src/stub/stop_reason.rs":"bce01656cd05563e831cab00f36355fd4478bf9b8263b4b8ab6ef74dd5d786e8","src/target/ext/auxv.rs":"cfe286bb8c12fef4c9031583b4fe5f0c527736a673875548f0b8d83ab3ba9fd5","src/target/ext/base/mod.rs":"b7959240a01dc738fdd6cbff6ebf589528617306b10e4dc2a9bb7ec8059c48b6","src/target/ext/base/multithread.rs":"41587b4649eae9259b3a087906a53f5f5dbadb05f620a46b480f4f2be28abf51","src/target/ext/base/reverse_exec.rs":"c32c7dab13cb984664655ebde0269c6df06aab6e4886b7db7348123df2f24a4e","src/target/ext/base/single_register_access.rs":"8dec5f2ad03c7335e25b413094aefcd96c3ca8bc3f8ec1bf0d456afeb68676ca","src/target/ext/base/singlethread.rs":"fc6a3d08ff8410a5f910fade5eefe1372c05c327d1788671c803cd4edef1cbff","src/target/ext/breakpoints.rs":"ee341e05f86519722032384cce30ddca0a5be34928ac038b38fae53f2af3ffc3","src/target/ext/catch_syscalls.rs":"c26f9cb9ef15018a8c696ba4d81b31c57eefc659b9010a97911ad8913dfe0e2f","src/target/ext/exec_file.rs":"36c938dc6bedc7fa142d95444c9bfcfc385d9f4986ffe7f7089b7f4b908396af","src/target/ext/extended_mode.rs":"27c4912f657a935b1ab684329b3e683d4c22a44f0fbfc9c6708b3ee78331c4d4","src/target/ext/host_io.rs":"995ca787f78199746f89f208d95900ff975da643eec50e5c34d909166833a3ee","src/target/ext/libraries.rs":"0da92db09c5e7772ed4234e208b0c2b7b5559d64348f8be754bb30077b81cf63","src/target/ext/lldb_register_info_override.rs":"1a3ee38c35b8e5d3f60bfb36dbe2cbb9a4bce1d941cd8cb1feca4873faa5d433","src/target/ext/memory_map.rs":"3c4118f56594e0e35f63bf1132b79f6487fd9855ac2f1c30207d5affc97a6839","src/target/ext/mod.rs":"9caee175c5a0337660e52d78a08d05cb6d0dbd833158149d68956af245d8b7b1","src/target/ext/monitor_cmd.rs":"4ed16666ac760d5c3672672cb3b46225102446c2fcc3e1b67a7c720e05b4af55","src/target/ext/section_offsets.rs":"26534e5945c8c58d3bfc7db79090b0a44d9805f152dcdbffa35df9bcae609b36","src/target/ext/target_description_xml_override.rs":"742b53328ee009f4c46f98b1c0fbd6a439b86de03cf70eb39fc7ee7309863c66","src/target/ext/thread_extra_info.rs":"7fe2680442a09d2d748cc1d95c9d02b89832137615e0c028849d3f77e5a650b0","src/target/ext/tracepoints.rs":"77d5049d1a6d25665e37a9d3672938dd126455df3f7ba83fd524280934491e11","src/target/mod.rs":"fdb6b4db20241815d474aab74ad82cd5a67261a0619df67c6772dc09799f1ef2","src/util/dead_code_marker.rs":"0c91042e1d4f1cd4035fd7a2a65571dbec8dbdfa4f24ceeee28d00ca903ade42","src/util/managed_vec.rs":"54d40bcd5fa1b14becd29f8d17a8af8dba60b8ecb1f2c83b5e2747d1ab3a6581","src/util/mod.rs":"f5935bf2bf6ff53d785c69441d3486d0ae3149d46af48710c7e4c2fe452b6f82"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"35062a7f3ae91b0f5bbfb11b90871d0d8bde2f2335224bcec11e16e855a104c2","Android.bp":"8a795821e1c8cbccf64aac3d37cfebf5630182b91c5643c982416d728e5a3abd","CHANGELOG.md":"ae09b3be84327693aa92964d8ac5e6f8c46357c3b782bfc949497c494918ab3a","Cargo.lock":"cf1112da50e33f8ec828b4d9d978f3f910f8ca1374b0de7a019fa16d5e994598","Cargo.toml":"d01c17d7f3523c1737391b71497b5e5b19f92f7ea8bbf1ae247b442ccc7bd976","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"cb7a682a1dd5c6cc6a5e1123e5459bcaa9870ad00709b4996398d75bb9c5d837","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"10b1510352b02f7d4abf857812a58db0eddff8d2b5aff188df7372d0a202aca3","TEST_MAPPING":"0ae231c7e9c43bf3b90a1afed8df9687a20d36a241cd5a4ee669a0234ccbb76f","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"0323a8421ce21398083ac59be1c38b9ea81a4dabbde37e1247b0287d5b8b78de","docs/LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","docs/transition_guide.md":"3e1009fef67ac63b93366d761f2a17ab92fe654fadff7746d47cce2e73a8aee7","examples/armv4t/README.md":"4d63c688ef7a51406b8c7a4936a339597b63542c64e0802002019d14a623d924","examples/armv4t/emu.rs":"9f7214305afa6a51381597fed70890927971a3ffb96e62dfc1196afb51b83648","examples/armv4t/gdb/auxv.rs":"a96d3ed4a1ad315c59ecdb01255b9f97c72f18523b09ca6087241fe1d9546791","examples/armv4t/gdb/breakpoints.rs":"0f9a06d78d6bc547f43f9858e1b133c7ac2bf21d5d5cacf2397ded7502789b17","examples/armv4t/gdb/catch_syscalls.rs":"017e54607254fa054fa9c48e787129e1869b6ae2430e62c4e10a126d5396ff07","examples/armv4t/gdb/exec_file.rs":"cf1c0bd94f060cab3d0de2dc3ff47a1b9adb64e9a321ece51ceb29028216268f","examples/armv4t/gdb/extended_mode.rs":"bc1867c34af77d8415956eb76c88fca8f4b83b97ba9de0dea0e844c6d769c3a0","examples/armv4t/gdb/host_io.rs":"29ca29128029136caec83c0eb5502b4ca70bd3eabb3b6ba51e46587ee7ae5d58","examples/armv4t/gdb/libraries.rs":"84126ca2d2b35e1118c96581f61824a0b583614653f8642e879bfad15ef6ea13","examples/armv4t/gdb/lldb_register_info_override.rs":"8a9df82938baccd43699e696468690511cf428b73f51205752d8c4effa781fb2","examples/armv4t/gdb/memory_map.rs":"abe902e835cba1ef6b4cfbea59e0e00bd597262f106be82e900bec1e58f296dc","examples/armv4t/gdb/mod.rs":"89e860305700dff26b0353005ec6fd801dbc7de9981cf3220f35ba1e821e80b4","examples/armv4t/gdb/monitor_cmd.rs":"e0eaa5d179499b20d0ca16f5f14086b7f1bf916c8d6736719ea5a30e3c792ec4","examples/armv4t/gdb/section_offsets.rs":"6b18b8dfff33e5099b33e666939765966cd2ffaf1227fe542c22c9a4ed45073e","examples/armv4t/gdb/target_description_xml_override.rs":"da5273e9857851a67c7837b862184da7d4149235e9fde78ed8ad1f6f6dae300d","examples/armv4t/gdb/tracepoints.rs":"d74306cea53cead2ab4c8e35e4fbfe542ffe10e09cb24936a291d0206e0af822","examples/armv4t/main.rs":"fc5477fbbeb3fbc5ede232e6f626c48eb3566f0596f01764826c8e54e3868565","examples/armv4t/mem_sniffer.rs":"cb3767de382716e3a370f378d287af69f4a69a07bb662869e03fcb8091d67e9d","examples/armv4t/test_bin/compile_test.sh":"72cfd4e08967c40c95f58ac1f4fd77140b823b9437a4493c3fbbae6f861c0c5c","examples/armv4t/test_bin/test.c":"2fcdc82b8aa29e9768ee46e6b65889a523062d9121c644c37d8b0c8157fb47a0","examples/armv4t/test_bin/test.ld":"c5f169baa007c021275be09afcb846cb7555a667bc87ac17af88d294e296bc93","examples/armv4t_multicore/README.md":"c1213975695143089a425bf8d880dc5305297b8c7e33dbe6219825981e70e0d8","examples/armv4t_multicore/emu.rs":"72c714bb36efca21628e29661dc50b8d51998c9c9e071ffe37522317a97624d1","examples/armv4t_multicore/gdb.rs":"cce6dc57de3a86aa4d26ef2277e31ad1d0e641af0acc6bcaf84eaae3e088cec8","examples/armv4t_multicore/main.rs":"086334a3c190c4d919ff92f29b8bfb1824066f6df7ce1dba4a0f53af5f999809","examples/armv4t_multicore/mem_sniffer.rs":"862512c13a9bfddb9550313203bcdf54c05d012d30776c5f653235f28c1d965a","examples/armv4t_multicore/test_bin/compile_test.sh":"72cfd4e08967c40c95f58ac1f4fd77140b823b9437a4493c3fbbae6f861c0c5c","examples/armv4t_multicore/test_bin/test.c":"ed6e69f0fb129a9a9b377a69e1a8d77352a81f856823514f979de4ea78f78042","examples/armv4t_multicore/test_bin/test.ld":"c5f169baa007c021275be09afcb846cb7555a667bc87ac17af88d294e296bc93","rustfmt.toml":"57f9edccf881fe5efbe1f692e339c17dc9c637aafba2602383cc64061a1f1ed7","scripts/test_dead_code_elim.sh":"bd21130bcea3e9dfaaf0086b82f184d5bae2483c9ebd5fdf62e171fa9bd5514b","src/arch.rs":"a86c9897a72b2ac600c73ef6afd22615c9c790e8a7a2996b76df8180148e89dd","src/common/mod.rs":"90d517dbfad798338fff627042dc5245dce365bd3eaf014bd2f40c2cf308acd8","src/common/signal.rs":"493f16f93537b48ef8682e307706eb6ac6e036f906e9e0694b4359c4034e723d","src/conn/impls/boxed.rs":"ceccbe5cdeb13363cc787572517a4a0a645a1c979a291c9fad416b81daf5a77e","src/conn/impls/mod.rs":"94910c8b342245d2e0beb406744e0acecdc1f6ad2099fa01acddc46d1bf65bc1","src/conn/impls/tcpstream.rs":"f8a22c6997bfffc03091d451a5ff6b0293e1a44e37d402a067c1fa985a7e88e8","src/conn/impls/unixstream.rs":"36a0d942dfa18783edca3b0c9474419b0143ca1bd5e0ae697a661e1b2d608600","src/conn/mod.rs":"dbebd7cff74cc5795f50fdef5ac2b39d657d93c90f3bc089674bb66db81eab35","src/internal/be_bytes.rs":"0ff7e0bde851e59c74f5b72a75cabd725424d69c560066429412d21a3279c3f8","src/internal/le_bytes.rs":"ba6d896932f70ac51230fefb1eac587a1001e08b2e26828dc58836a6b3b7fdb6","src/internal/mod.rs":"c913b10a0fe83d8c863f97077851a476e9d23f8a173cce94a8672b74bcb409f2","src/lib.rs":"1873b5a0d285ce382f5c9c8b5e0088a4cf770223801a4b9a3106c667e94dacab","src/protocol/commands.rs":"c451e5df7cac02fcf947bdcba734f9f2a78255786f3f5da1c514b14a2b836d8c","src/protocol/commands/_QAgent.rs":"d77a116fac86d93c97b37a723a64dfe4bffe92634c89b76df075e0a032c51681","src/protocol/commands/_QCatchSyscalls.rs":"01c6ce8c10b69834b34c35abbc354afb38cefb2468af73be55cd75ecad21dbfb","src/protocol/commands/_QDisableRandomization.rs":"3d403d8158d7e4692b9b56f14b2a56b7c242a55823b5b0a48737917693bad954","src/protocol/commands/_QEnvironmentHexEncoded.rs":"a663e29d1b759e398391897d5dd39e6fef3a2e192e1fbf1ec3e2dc9f70efe71f","src/protocol/commands/_QEnvironmentReset.rs":"c1c4272f986ae1e333c33e1bd1f76261a98e2fd9967d330c01645ef30b54607b","src/protocol/commands/_QEnvironmentUnset.rs":"376605e130c40b9ce0c1488021e987ebb135ae639c9397364712c3a4605ae6b4","src/protocol/commands/_QSetWorkingDir.rs":"7842db01dc7517085884cbd6c5bc4603c1aaec0b62841d7a37d265c7722cf96f","src/protocol/commands/_QStartNoAckMode.rs":"1ef33909409e023df54d1725e42966fe49eee0a36f6225faf00c04e23862d437","src/protocol/commands/_QStartupWithShell.rs":"28d972764ca5a5d29947f35237cfb25db8e594f986ceccb4f0190f053ab065a2","src/protocol/commands/_QTBuffer_upcase.rs":"269f5e09381e3b229d3eb50e8ba6f50e3b437ba02f47e355ee90b05d7c385af0","src/protocol/commands/_QTDP.rs":"c5b06b6f9cf549ceab6b7f3080b34e2b0815a41158ddc4a3ca700eb32a136424","src/protocol/commands/_QTDPsrc.rs":"c5198d83de3d70683866dc2386c2820115086957c16eb69c5227bb7ec1dd6539","src/protocol/commands/_QTFrame.rs":"cbec891b9f26964529fa3a57db63f9f541fec03b895a5244e8938854628932ce","src/protocol/commands/_QTStart.rs":"a87ae0156d5432266c892b9973373310b951a5b416348990359d510a759a7137","src/protocol/commands/_QTStop.rs":"2c83c251242d781c7cd66f395a3205cb3d22c71072a6c47e908c83d5fa0bf188","src/protocol/commands/_QTinit.rs":"56493fcce39cd70ff3e550b86e58a38260b5695fe2290e5f12bebe804c2dda44","src/protocol/commands/_bc.rs":"3bd9ef3d7193a6b76770743d88303a962fc9ec581e964ea72004f03736d24afd","src/protocol/commands/_bs.rs":"60391af020f4d592fa6195dfde71fea828d52ae31842f953f7210e2b423215e3","src/protocol/commands/_c.rs":"de5db311e163c6d281770ddd6f387751a3cb7227a554ca3a7d8e991c5e164bea","src/protocol/commands/_d_upcase.rs":"087555dcba8cca4af96845916cceff6fa77f2c8601ecf287d0675d6be5253ced","src/protocol/commands/_g.rs":"5c54dc7f97533bd8ae6a93bb6c9958f555d278de04f2c10525a3297707ce2d31","src/protocol/commands/_g_upcase.rs":"5edd3b2523c09df7cf222410ec04d91a0c4b440a30a6bb87590773ebc8f5f76b","src/protocol/commands/_h_upcase.rs":"22ed90aefd6ea223b932dd0128f2845f0e6eb2e6e0d83c94c15ed694f24ea415","src/protocol/commands/_k.rs":"36fc2f45eaa248406959971b5b771437a102954575e86daed4cf75e029d2065f","src/protocol/commands/_m.rs":"f7899acf70d8232eb801ca25088de0b26662f7d8fbb2e3a3e2843e8d008d2dbd","src/protocol/commands/_m_upcase.rs":"b9ef4a51325df2255d2e1c406cbcb90783220ff5e46498173094e09c0bf34466","src/protocol/commands/_p.rs":"2d49dcf8359d56c2da0cf072f3cdbee793852e776a873ccf11891495434599ea","src/protocol/commands/_p_upcase.rs":"0161f692c3cf5b813508e0ad183f9cfe3b18f96c8b81098c12e8b05b96153a42","src/protocol/commands/_qAttached.rs":"e97b939e6bf2aabe495c6aafb5f4818bbc18347b92e94b06db3dc16f6238bbd5","src/protocol/commands/_qC.rs":"9e8a14d24aa873b28e03b4b7d5207f7a9fa920dd4c0b1a941ff0f04def4b58d2","src/protocol/commands/_qOffsets.rs":"46f1019167fa44dd05170a9c5caa06f1eff7b49bd349bf1cd45c9629b06197f9","src/protocol/commands/_qRcmd.rs":"29be23910d936299054c551cb652421f71621bf4d0c2285f718cfb708d82d36f","src/protocol/commands/_qRegisterInfo.rs":"8284e4866227839026bd2e270be08d25128526eedde9f983e3f4461ee88caa05","src/protocol/commands/_qSupported.rs":"a7f9b2204f0be154eadc53611ddb66aedbfd1ca0b683bd2dd9b2188678478a3b","src/protocol/commands/_qTBuffer.rs":"c0ddbd5a11af782da330d66d2a7070e5ec07b483b3bb3b1ffe5cc876793cec77","src/protocol/commands/_qTP.rs":"f4db755d4077b31fc92d25c38200efeee641ac72288eb6bca7995c25ce610510","src/protocol/commands/_qTStatus.rs":"b9f7ac09c3d2f9f421fd363ad4b46d05fdf04d2a34d0c396ed1ff856a98d6815","src/protocol/commands/_qTfP.rs":"deab0bfd28661bacc3938f8642d30677c7acde69cd27b38ae52633fae041b4c7","src/protocol/commands/_qTfV.rs":"d9694ea199e97fafc3a99ebed427224aebc5197b38bf5372a30c0c636666453b","src/protocol/commands/_qThreadExtraInfo.rs":"ed104201cd4012ff046378d06a0e3c656689a450592dae514e5733f0959e8134","src/protocol/commands/_qTsP.rs":"6647769fa67495a0c6a93f7f02643c61d68a764fb672dfe4d6d94c87bcec8a02","src/protocol/commands/_qTsV.rs":"52d37eb596c4d06815402eec1294f6631bedd2ec184ec45c3043bec61ac282aa","src/protocol/commands/_qXfer_auxv_read.rs":"5db5eba9491e2412313071a836f8e470713d1cf6cacf078890bf2717487caece","src/protocol/commands/_qXfer_exec_file.rs":"e9cc6edb18779c649225d9c0941e9cb0ec531742001dc62c42e66004e8d85c84","src/protocol/commands/_qXfer_features_read.rs":"de53e999f06412de9851fd7707ef240a205d8329ec7bae0d71518b126a614b7c","src/protocol/commands/_qXfer_libraries_svr4_read.rs":"90ed71cb5150fee8261b415419c0e19dba26a8068c541cb3812fe63d990c0835","src/protocol/commands/_qXfer_memory_map.rs":"d4318d4afc6c42767d62c4f04b77771025a01fab797b8c553e9b9217ea46a783","src/protocol/commands/_qfThreadInfo.rs":"80f492e58a17674aac33f58a4a1ece24a01627748cf1a5e4a248798e855ce225","src/protocol/commands/_qsThreadInfo.rs":"623767d931a2e8c57eaefe5fd449c9993da7dd9e21ddd51ea69f3e5c555b9e01","src/protocol/commands/_r_upcase.rs":"35406c84b81810e08f9554883f69e47ed7e5948df2a3bf383ed24dd77963fce9","src/protocol/commands/_s.rs":"83cfdb848692ccc2f20eb32a884bfb75896c79cc925b54dd035d0fb01bf88426","src/protocol/commands/_t_upcase.rs":"c6822881aaf1bcfd322b2139f042cf668f98dca2a00f17fcbf057cc8ba4062b5","src/protocol/commands/_vAttach.rs":"082b6b6978eabc3ed177fb0e1fa7c38b7b86eef4707b13e9a6d93747cbb973b7","src/protocol/commands/_vCont.rs":"6ca090d4ae4a6cc044a4e750c052985f988f1cca1f9defc22af260b9e2200b97","src/protocol/commands/_vFile_close.rs":"9597d1c7f85216354e57cb098afba4d7ed276629446c7598fd0c36cde978d355","src/protocol/commands/_vFile_fstat.rs":"cf54d4ec32e6d9f2047e9cfa09b2d589159a2cd5c10fd905b3835a0a16a70a5a","src/protocol/commands/_vFile_open.rs":"04eb7b1f155dc958f877435e3bf9c75371b5a981dab48046e4c1bb932172efb6","src/protocol/commands/_vFile_pread.rs":"0586c897be2c0f260838fcbf25d51051c97e9cddeb9fc82e23dc5e4ce87dd35e","src/protocol/commands/_vFile_pwrite.rs":"d3794a580bc4772522dc3d85c3ec5fee96c931fa5924508bc529478c835b5c43","src/protocol/commands/_vFile_readlink.rs":"35d84d884d41cc7a0108bae594574e5c429474ce3a35db885ff27a38040d0ec8","src/protocol/commands/_vFile_setfs.rs":"8061afcb8816e8c71191708ad4e5082f3c5fa95ba5108586b2fa55d496e4668b","src/protocol/commands/_vFile_unlink.rs":"d4a41284559cec1d55261835f167afed1fe6ca683714b5568736451bee204d41","src/protocol/commands/_vKill.rs":"bbeda1ea7aa4a4a074282fab0c7aaa7078da8b44ebfef26fd82cdaba8a1fa077","src/protocol/commands/_vRun.rs":"9c61b3ff476342b48c84d9844228af250907f3830cea63b688beb789104ca23c","src/protocol/commands/_x_upcase.rs":"00ffb68fdd4c6d381c843dc0dfd61103c27f11c6425d0355271f981ac2df66ea","src/protocol/commands/breakpoint.rs":"c67579ba752cf23e2c6f62de1a3316ebd3da048260398f473a56bd3b4c775469","src/protocol/commands/exclamation_mark.rs":"b48fa202751d6067aab00b2cb667eaf31b36f3f41875b33380a257968aa869d5","src/protocol/commands/question_mark.rs":"da4ac2404260f7ab1ae6ca695175a55f5385efb51bb95d3f72f47401d8d4d587","src/protocol/common/hex.rs":"11ec16842a6b8dc8479e8079f4d3b6aaee33b194f5e05ed9f5cf4bdb6cebb7cd","src/protocol/common/lists.rs":"1e74ba5483861969be230843239963e269d1229f8dae15d72340d3363948323a","src/protocol/common/mod.rs":"c436936088e7780ee6bf0f6b869e75d08289edc6032e2817f53e18e7157eba1a","src/protocol/common/qxfer.rs":"857fe893d05a216bcee24a18c3c1b489279394298f585c4303fae099bdf25fda","src/protocol/common/thread_id.rs":"a84ba91355f2dac2c923703cfea72c792f34c8c8cd4ae2538148506e0833edac","src/protocol/console_output.rs":"ab3cd75ef56112210f00b9c118aa9bb190c569c0e45581b09a886225c126aa27","src/protocol/mod.rs":"b7a7bd9f05ea7351f2d160a5694ebaa0d9e5895a5a08945cf46d42a91194c382","src/protocol/packet.rs":"9fdf2d4fe43a79e4450b756604df80a3118324d6fc16835116f4fb21400b4cd7","src/protocol/recv_packet.rs":"a67fbe4c9101dc50aace04667372ceff6c98514fdee258e2f40d660734b4c975","src/protocol/response_writer.rs":"c0a6aa44f54c3e346eca9f6f00963ebe16a69cecc01ef15a66f6eaabe114676a","src/stub/builder.rs":"eebcbcf36c3669a6d20cb70f2de0fbf4d3212367dd10ac195d4c5a47ac926307","src/stub/core_impl.rs":"7ade8de19e6d16e7c7daa9b7186f4454037a5dfb01946bfaa3c0905a8d43259f","src/stub/core_impl/auxv.rs":"5a8664d4202db7f5ace21f19967ae72dcb3b575b861a5fe88db8725c2252682d","src/stub/core_impl/base.rs":"f0f24370315bd0add502fb60f572c8a0c093acd38734028d58ed00730507bdcd","src/stub/core_impl/breakpoints.rs":"4c44a120784e339cf5b13758011d285d78556bd4e53e4f2a824db7a8165c87e7","src/stub/core_impl/catch_syscalls.rs":"3d60802d8e3497237a94fdec16210f3e2788a8ddcdda1b4c883c885f26ec1e6a","src/stub/core_impl/exec_file.rs":"3e97b60e8de80c2e9a4a97803dbce0ce65855660ae20ecf5dfc8ecf30c691901","src/stub/core_impl/extended_mode.rs":"45e56fb28750f0e09b071df9122e3de7aa4122956cb6c0a675939940fb026e7c","src/stub/core_impl/host_io.rs":"34d2e47afcf4402a07b5ed83e4eb94725eb10e361b3969e9770ed7da7dc6d908","src/stub/core_impl/libraries.rs":"f79aec294384b99608d0d52504f827e7154e95af5a1b54459cf3d31837a87dc2","src/stub/core_impl/lldb_register_info.rs":"5957a274a91df9e8eb69c16dd960da9a45a5affe8727bffd0d420e0d4d8e37a6","src/stub/core_impl/memory_map.rs":"fa2a1c99fddbcc2dee6a85da130905fc078cab7a96e7e741e7423e3d0b375f13","src/stub/core_impl/monitor_cmd.rs":"3ac510cfa33c86382f987d7127e1301f8509911ba6d798563f795772a7cf005c","src/stub/core_impl/no_ack_mode.rs":"9f6b29f63c8cc5fdfbff70917bb1b77016d4e72ae41e371477e7b2d4f2eddf12","src/stub/core_impl/resume.rs":"85a123e802c9b5c84c3a694d5ff6211bf9ed81aac565279956ea8c0079b0d124","src/stub/core_impl/reverse_exec.rs":"ed5307d74ea4d6402f7a60c99a7504b1b9ffadb9d3e08284f68b1f3d722eb927","src/stub/core_impl/section_offsets.rs":"ec4463d8ee2c0052698b2639b59f53bce2f02197a05571e62253066a0b06cd15","src/stub/core_impl/single_register_access.rs":"57ecc81b120eef857aaa2d41de89c2fd05ab22866bd91c859f90cb48b40dcdc4","src/stub/core_impl/target_xml.rs":"2350ba6021710b2ca19484543077a1583c9dd26a3b63dbf66c1c589bf967fa96","src/stub/core_impl/thread_extra_info.rs":"7fee3cdaa9215f540ab196ddd2d39c5b889e36ab98077b659d16e18bbf5d4822","src/stub/core_impl/tracepoints.rs":"2ada774d3994de21a7b32d1c8010e0206a7e4f7efc5e4a5befe27adb3906b8a1","src/stub/core_impl/x_upcase_packet.rs":"c8de489f681a588f51ee23899e1d6a97a04f1200ad93f5a3f6dbf91094446ac9","src/stub/error.rs":"17e64ab616354d7549e9c636082b9f318f8c994cf7de726722ef47b7c7442a5b","src/stub/mod.rs":"ec5e9e4236c0839333b99d1d3c502499c38c560ccdeb2963fcdbeb871e9e9d01","src/stub/state_machine.rs":"fb329759efe84fd059312fb0417951d1a460e8e33451bd5cc2fecf5c2754ee28","src/stub/stop_reason.rs":"bce01656cd05563e831cab00f36355fd4478bf9b8263b4b8ab6ef74dd5d786e8","src/target/ext/auxv.rs":"cfe286bb8c12fef4c9031583b4fe5f0c527736a673875548f0b8d83ab3ba9fd5","src/target/ext/base/mod.rs":"b7959240a01dc738fdd6cbff6ebf589528617306b10e4dc2a9bb7ec8059c48b6","src/target/ext/base/multithread.rs":"41587b4649eae9259b3a087906a53f5f5dbadb05f620a46b480f4f2be28abf51","src/target/ext/base/reverse_exec.rs":"c32c7dab13cb984664655ebde0269c6df06aab6e4886b7db7348123df2f24a4e","src/target/ext/base/single_register_access.rs":"8dec5f2ad03c7335e25b413094aefcd96c3ca8bc3f8ec1bf0d456afeb68676ca","src/target/ext/base/singlethread.rs":"fc6a3d08ff8410a5f910fade5eefe1372c05c327d1788671c803cd4edef1cbff","src/target/ext/breakpoints.rs":"ee341e05f86519722032384cce30ddca0a5be34928ac038b38fae53f2af3ffc3","src/target/ext/catch_syscalls.rs":"c26f9cb9ef15018a8c696ba4d81b31c57eefc659b9010a97911ad8913dfe0e2f","src/target/ext/exec_file.rs":"36c938dc6bedc7fa142d95444c9bfcfc385d9f4986ffe7f7089b7f4b908396af","src/target/ext/extended_mode.rs":"27c4912f657a935b1ab684329b3e683d4c22a44f0fbfc9c6708b3ee78331c4d4","src/target/ext/host_io.rs":"995ca787f78199746f89f208d95900ff975da643eec50e5c34d909166833a3ee","src/target/ext/libraries.rs":"0da92db09c5e7772ed4234e208b0c2b7b5559d64348f8be754bb30077b81cf63","src/target/ext/lldb_register_info_override.rs":"1a3ee38c35b8e5d3f60bfb36dbe2cbb9a4bce1d941cd8cb1feca4873faa5d433","src/target/ext/memory_map.rs":"3c4118f56594e0e35f63bf1132b79f6487fd9855ac2f1c30207d5affc97a6839","src/target/ext/mod.rs":"9caee175c5a0337660e52d78a08d05cb6d0dbd833158149d68956af245d8b7b1","src/target/ext/monitor_cmd.rs":"4ed16666ac760d5c3672672cb3b46225102446c2fcc3e1b67a7c720e05b4af55","src/target/ext/section_offsets.rs":"26534e5945c8c58d3bfc7db79090b0a44d9805f152dcdbffa35df9bcae609b36","src/target/ext/target_description_xml_override.rs":"742b53328ee009f4c46f98b1c0fbd6a439b86de03cf70eb39fc7ee7309863c66","src/target/ext/thread_extra_info.rs":"7fe2680442a09d2d748cc1d95c9d02b89832137615e0c028849d3f77e5a650b0","src/target/ext/tracepoints.rs":"77d5049d1a6d25665e37a9d3672938dd126455df3f7ba83fd524280934491e11","src/target/mod.rs":"fdb6b4db20241815d474aab74ad82cd5a67261a0619df67c6772dc09799f1ef2","src/util/dead_code_marker.rs":"0c91042e1d4f1cd4035fd7a2a65571dbec8dbdfa4f24ceeee28d00ca903ade42","src/util/managed_vec.rs":"54d40bcd5fa1b14becd29f8d17a8af8dba60b8ecb1f2c83b5e2747d1ab3a6581","src/util/mod.rs":"f5935bf2bf6ff53d785c69441d3486d0ae3149d46af48710c7e4c2fe452b6f82"}}
\ No newline at end of file
diff --git a/crates/gdbstub/Android.bp b/crates/gdbstub/Android.bp
index 832e9ca..313e32f 100644
--- a/crates/gdbstub/Android.bp
+++ b/crates/gdbstub/Android.bp
@@ -41,4 +41,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gdbstub/cargo_embargo.json b/crates/gdbstub/cargo_embargo.json
index d42e135..da43987 100644
--- a/crates/gdbstub/cargo_embargo.json
+++ b/crates/gdbstub/cargo_embargo.json
@@ -2,7 +2,10 @@
"run_cargo": false,
"package": {
"gdbstub": {
- "license_text": ["docs/LICENSE-APACHE"]
+ "license_text": [
+ "docs/LICENSE-APACHE"
+ ]
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/gdbstub_arch/.android-checksum.json b/crates/gdbstub_arch/.android-checksum.json
index 812deba..b097c9b 100644
--- a/crates/gdbstub_arch/.android-checksum.json
+++ b/crates/gdbstub_arch/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1c3cdadbf908a426cc4596bb92955e8c61805949635d110e55d1f391e56d7953","Android.bp":"4b1fe09e86380bbe7d459b67ad74c8be3233e60d087a9a3e477fd639404579b8","CHANGELOG.md":"7b531484e82cb421b1b70221f0590bce765cdba2b1ccf24beef8b45eacda87f0","Cargo.toml":"d871874f39446a9ffe797d3efdb4b6a9698584805e5c707a2ad63061b20db9b6","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"a418c8b3823ca3a9602543ab918e0b079912093590e6b6990e10b78a13cf5331","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3b266d0ca59d3c643ed2deb5299929f4772da61855f713bde64526bf6b922a10","TEST_MAPPING":"facb3f06cc1efeab2fb418ebf419ee9c930e6ba8c6058f4f1318fcadbee3d501","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"2dc38acacbb29127418b0e9cbb1b9ce55fb4ed2634c04a9f69af04f3176dd233","patches/LICENSE.patch":"aba7899ba21bbb10f94f841072628e8bee6263748f323562a506a12d54403e6c","src/aarch64/core.xml":"b066884eb741838faa841a7317f8be7c59020216375066dc43fbba6f4ee39776","src/aarch64/fpu.xml":"ad266a2f56e2d6a3c9da2b1f1ecb66cd1a0e8fc27dbae1714c2ecc7ae7c89a9e","src/aarch64/mod.rs":"4a1944551d28c28a2c8ee55f01e8cd2396aed0e9f43ebda7b9745509ee26e294","src/aarch64/reg/aarch64_core.rs":"d862106bbb3ffdc9a92e099fafcbd8112e1d59eced2b5ddad6724d35759ada3f","src/aarch64/reg/id.rs":"01f85fb8a5cc827463577230a42e385034334f71737009b39064085f1d5ee4d8","src/aarch64/reg/mod.rs":"6966d5861acc747cec0faad7ab86caea0a356a734e9f8d5f865286751f706e5a","src/aarch64/sysregs.xml":"f32263dcaedfc1e813bbd88c6aa1e857b612140a13d4d45f08a2740763f33f36","src/arm/mod.rs":"6aafcd42e46c934a70f806e80c4daf842bc7203a8272676ef6364f5a96b58ecc","src/arm/reg/arm_core.rs":"c0570a8d35a3172db22962fd9cc64903be754878ed86bcf5b4f9c04c62857a54","src/arm/reg/id.rs":"9908d494f17de614d3627797506a4d2d6fba57280965d49c51352e73a777ead6","src/arm/reg/mod.rs":"255404bea529fa02d4d85cfb18760c2da43316a9b6b70e847ee43eef734a7344","src/lib.rs":"f723e0304e67d1e7127973268b07fb009b5ef3e5bad1505169859622e8b0985d","src/mips/mod.rs":"30583a73923314085851c783fda39c06f0843ab4d43e0aedb2ad1c482bd31903","src/mips/reg/id.rs":"48164d6873d5a980dbe2aa52c0399bd5a1130cd387049b0c0c18d155d545587e","src/mips/reg/mips.rs":"ce0479d4a40324d44062dd618796129f7549c3b7b84125fe5c9015cd6341f65e","src/mips/reg/mod.rs":"8dfcdeb2b979a396fea5e85f2c900e8e5f1cd2058dc882e8556f6a4906c68019","src/msp430/mod.rs":"b925be0db26014ce4ee93f8fbb5c09d8ad53a6ce3145293dc0970aa503ed6a86","src/msp430/reg/id.rs":"c27920185d243033c980f382b18ab8968776df538e2b0d0330abc9a54a8bfdb6","src/msp430/reg/mod.rs":"26ddafd5afa38179a0e8a7256c2a068c8460279e1833e1337f069f8450651b01","src/msp430/reg/msp430.rs":"5a5826130be6671bc94ee62de2e5125d1e0ce080442df8a7adfbe4a0f97790de","src/ppc/mod.rs":"5e938c21d7bfbfdab3535931aa610b39602f76a0200b4b2c4a108fb793d1dd67","src/ppc/reg/common.rs":"1eaec3126ac8fb2682796699bc6486bd33e457d7f5645c5b2d49c2b008716abc","src/ppc/reg/id.rs":"6ef1c58c8ae35e73332504be55e5782c920b09fa68448f406b1473a5c637f9a2","src/ppc/reg/mod.rs":"63f1177e874efe736bd4b83a06fe8a431a5283871239db553942921ac2d697b0","src/riscv/mod.rs":"a470b480bdcac06e36cb53f0d2337605e49ab5c83a2b21dafadde370ddf8a1ff","src/riscv/reg/id.rs":"15ce985d288ba2f55eec435c4591e5558c885245884f73267308c004bf7dbc81","src/riscv/reg/mod.rs":"00a644b696af94e95dd96c09161e5bf75d254dc6c55ba959daac662f2868098c","src/riscv/reg/riscv.rs":"bd77fe51e7ca51fefa0bbdaea85207885435351de4f29898dafc9651a0d2ef3a","src/riscv/rv32i.xml":"7ffb3476abd38666fd4be49f5e236fd0ddcbf131767b3da6efe6408d89415bb3","src/riscv/rv64i.xml":"781db55b72e04d0e3cf0db375875699b5c1db4196554e5d0c17199b3ead85895","src/x86/mod.rs":"2e329aa7eea892f75f3fd85d6f1a673a4bc1eacc5228ed9c32649cfc266306bc","src/x86/reg/core32.rs":"8b2e89881454145a6253b0095d896dfdb98592d8f271a664a3c68a2ad21a4d1a","src/x86/reg/core64.rs":"fa09bc7be825fe85153edfeb90e4fcf80389fd67ed51bc521595455941943145","src/x86/reg/id.rs":"f840d620d50b58e71fc0dfd5ffe1371d96b541bb3a910ef9069a9d0797cbe626","src/x86/reg/mod.rs":"cbc81d4b4b0f749b4b1244cb015c145345cdc7025fed83a5d226736908636435"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1c3cdadbf908a426cc4596bb92955e8c61805949635d110e55d1f391e56d7953","Android.bp":"f2a12c298baad918df88d44baeb9d374ce30354ed7deb318848c556f5a82ae7e","CHANGELOG.md":"7b531484e82cb421b1b70221f0590bce765cdba2b1ccf24beef8b45eacda87f0","Cargo.toml":"d871874f39446a9ffe797d3efdb4b6a9698584805e5c707a2ad63061b20db9b6","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"a418c8b3823ca3a9602543ab918e0b079912093590e6b6990e10b78a13cf5331","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3b266d0ca59d3c643ed2deb5299929f4772da61855f713bde64526bf6b922a10","TEST_MAPPING":"facb3f06cc1efeab2fb418ebf419ee9c930e6ba8c6058f4f1318fcadbee3d501","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"0cc93b0c1d18c10d92c4d6405a3fe9db2c7b536363f4a81d531c8cc3f354b5bb","patches/LICENSE.patch":"aba7899ba21bbb10f94f841072628e8bee6263748f323562a506a12d54403e6c","src/aarch64/core.xml":"b066884eb741838faa841a7317f8be7c59020216375066dc43fbba6f4ee39776","src/aarch64/fpu.xml":"ad266a2f56e2d6a3c9da2b1f1ecb66cd1a0e8fc27dbae1714c2ecc7ae7c89a9e","src/aarch64/mod.rs":"4a1944551d28c28a2c8ee55f01e8cd2396aed0e9f43ebda7b9745509ee26e294","src/aarch64/reg/aarch64_core.rs":"d862106bbb3ffdc9a92e099fafcbd8112e1d59eced2b5ddad6724d35759ada3f","src/aarch64/reg/id.rs":"01f85fb8a5cc827463577230a42e385034334f71737009b39064085f1d5ee4d8","src/aarch64/reg/mod.rs":"6966d5861acc747cec0faad7ab86caea0a356a734e9f8d5f865286751f706e5a","src/aarch64/sysregs.xml":"f32263dcaedfc1e813bbd88c6aa1e857b612140a13d4d45f08a2740763f33f36","src/arm/mod.rs":"6aafcd42e46c934a70f806e80c4daf842bc7203a8272676ef6364f5a96b58ecc","src/arm/reg/arm_core.rs":"c0570a8d35a3172db22962fd9cc64903be754878ed86bcf5b4f9c04c62857a54","src/arm/reg/id.rs":"9908d494f17de614d3627797506a4d2d6fba57280965d49c51352e73a777ead6","src/arm/reg/mod.rs":"255404bea529fa02d4d85cfb18760c2da43316a9b6b70e847ee43eef734a7344","src/lib.rs":"f723e0304e67d1e7127973268b07fb009b5ef3e5bad1505169859622e8b0985d","src/mips/mod.rs":"30583a73923314085851c783fda39c06f0843ab4d43e0aedb2ad1c482bd31903","src/mips/reg/id.rs":"48164d6873d5a980dbe2aa52c0399bd5a1130cd387049b0c0c18d155d545587e","src/mips/reg/mips.rs":"ce0479d4a40324d44062dd618796129f7549c3b7b84125fe5c9015cd6341f65e","src/mips/reg/mod.rs":"8dfcdeb2b979a396fea5e85f2c900e8e5f1cd2058dc882e8556f6a4906c68019","src/msp430/mod.rs":"b925be0db26014ce4ee93f8fbb5c09d8ad53a6ce3145293dc0970aa503ed6a86","src/msp430/reg/id.rs":"c27920185d243033c980f382b18ab8968776df538e2b0d0330abc9a54a8bfdb6","src/msp430/reg/mod.rs":"26ddafd5afa38179a0e8a7256c2a068c8460279e1833e1337f069f8450651b01","src/msp430/reg/msp430.rs":"5a5826130be6671bc94ee62de2e5125d1e0ce080442df8a7adfbe4a0f97790de","src/ppc/mod.rs":"5e938c21d7bfbfdab3535931aa610b39602f76a0200b4b2c4a108fb793d1dd67","src/ppc/reg/common.rs":"1eaec3126ac8fb2682796699bc6486bd33e457d7f5645c5b2d49c2b008716abc","src/ppc/reg/id.rs":"6ef1c58c8ae35e73332504be55e5782c920b09fa68448f406b1473a5c637f9a2","src/ppc/reg/mod.rs":"63f1177e874efe736bd4b83a06fe8a431a5283871239db553942921ac2d697b0","src/riscv/mod.rs":"a470b480bdcac06e36cb53f0d2337605e49ab5c83a2b21dafadde370ddf8a1ff","src/riscv/reg/id.rs":"15ce985d288ba2f55eec435c4591e5558c885245884f73267308c004bf7dbc81","src/riscv/reg/mod.rs":"00a644b696af94e95dd96c09161e5bf75d254dc6c55ba959daac662f2868098c","src/riscv/reg/riscv.rs":"bd77fe51e7ca51fefa0bbdaea85207885435351de4f29898dafc9651a0d2ef3a","src/riscv/rv32i.xml":"7ffb3476abd38666fd4be49f5e236fd0ddcbf131767b3da6efe6408d89415bb3","src/riscv/rv64i.xml":"781db55b72e04d0e3cf0db375875699b5c1db4196554e5d0c17199b3ead85895","src/x86/mod.rs":"2e329aa7eea892f75f3fd85d6f1a673a4bc1eacc5228ed9c32649cfc266306bc","src/x86/reg/core32.rs":"8b2e89881454145a6253b0095d896dfdb98592d8f271a664a3c68a2ad21a4d1a","src/x86/reg/core64.rs":"fa09bc7be825fe85153edfeb90e4fcf80389fd67ed51bc521595455941943145","src/x86/reg/id.rs":"f840d620d50b58e71fc0dfd5ffe1371d96b541bb3a910ef9069a9d0797cbe626","src/x86/reg/mod.rs":"cbc81d4b4b0f749b4b1244cb015c145345cdc7025fed83a5d226736908636435"}}
\ No newline at end of file
diff --git a/crates/gdbstub_arch/Android.bp b/crates/gdbstub_arch/Android.bp
index 7632cb1..d4f4823 100644
--- a/crates/gdbstub_arch/Android.bp
+++ b/crates/gdbstub_arch/Android.bp
@@ -50,4 +50,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gdbstub_arch/cargo_embargo.json b/crates/gdbstub_arch/cargo_embargo.json
index 5b08a3b..b612694 100644
--- a/crates/gdbstub_arch/cargo_embargo.json
+++ b/crates/gdbstub_arch/cargo_embargo.json
@@ -3,7 +3,10 @@
"tests": true,
"package": {
"gdbstub_arch": {
- "license_text": ["LICENSE-APACHE"]
+ "license_text": [
+ "LICENSE-APACHE"
+ ]
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/gl/.android-checksum.json b/crates/gl/.android-checksum.json
index 9dd8272..46e4b69 100644
--- a/crates/gl/.android-checksum.json
+++ b/crates/gl/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7e3f2342cd5620ba4867ecab348211602d0117c56ab9357703b68b0bf93a703e","Android.bp":"12059e629a18933c0e0f9abcfbb2c5b6e9885d941ed6070cf61de35701a2ebc4","Cargo.lock":"43f35edb1527b5c4ee98c239b740860d2388e049f5b4bb6262c26ca8866b7bf5","Cargo.toml":"1ab23b6d0d24584af33223486fbf9aac964e9cdabce9a31b3689cdbc86cfe4b9","LICENSE":"08104e056668223e57f38f83c6c33ed0af9725350a1c5c2aea015c8e5447a5fd","METADATA":"858809b61b2662d5ce3159fde76d53b3432f4878fa06e02589f8bd5df9f15690","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3820697527609d8b3625e5e5da6c13540f6b9b1ffcaeeb9e379ed7a4a1ce1fd6","build.rs":"d72767a119c08f5bf7d09af9ae91e80f6ff3031b2c09ef49214135fe778da50f","cargo_embargo.json":"608aa9ce634ea6a8b2b29d222bcf8c243bb889fd405cd9181b740281589b1599","examples/basic.rs":"333a2aeff8bd1b631938ff929454e3d586420da4df8765fa2cfa9269960255be","examples/triangle.rs":"d64321227db3587a6925aa8559e86cda558b5038df399519e1d036d818a44852","out/bindings.rs":"8932daf3eefc60c1c72ac00466bcb556d01a95ef39791f3d1fb1557f8b401d9b","patches/LICENSE.patch":"9a3abe19228cdff5436891287af162ffc05d7cb140f2a6e8130141791e52e75c","src/lib.rs":"0dab21c572c84acdeebe14186c9d44682ef2f6fcb9d9bab23042ecf12d9f9961"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7e3f2342cd5620ba4867ecab348211602d0117c56ab9357703b68b0bf93a703e","Android.bp":"5a92b06cd5f14eeb6c270bc395af0d19ad9355e80cb60bbbffd479a0c52a2bce","Cargo.lock":"43f35edb1527b5c4ee98c239b740860d2388e049f5b4bb6262c26ca8866b7bf5","Cargo.toml":"1ab23b6d0d24584af33223486fbf9aac964e9cdabce9a31b3689cdbc86cfe4b9","LICENSE":"08104e056668223e57f38f83c6c33ed0af9725350a1c5c2aea015c8e5447a5fd","METADATA":"858809b61b2662d5ce3159fde76d53b3432f4878fa06e02589f8bd5df9f15690","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3820697527609d8b3625e5e5da6c13540f6b9b1ffcaeeb9e379ed7a4a1ce1fd6","build.rs":"d72767a119c08f5bf7d09af9ae91e80f6ff3031b2c09ef49214135fe778da50f","cargo_embargo.json":"41f8cd574f7f9bd2504147cf69528b3f495fb52820759907822f4ff1cb9adb25","examples/basic.rs":"333a2aeff8bd1b631938ff929454e3d586420da4df8765fa2cfa9269960255be","examples/triangle.rs":"d64321227db3587a6925aa8559e86cda558b5038df399519e1d036d818a44852","out/bindings.rs":"8932daf3eefc60c1c72ac00466bcb556d01a95ef39791f3d1fb1557f8b401d9b","patches/LICENSE.patch":"9a3abe19228cdff5436891287af162ffc05d7cb140f2a6e8130141791e52e75c","src/lib.rs":"0dab21c572c84acdeebe14186c9d44682ef2f6fcb9d9bab23042ecf12d9f9961"}}
\ No newline at end of file
diff --git a/crates/gl/Android.bp b/crates/gl/Android.bp
index c409fe7..ceced8e 100644
--- a/crates/gl/Android.bp
+++ b/crates/gl/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gl/cargo_embargo.json b/crates/gl/cargo_embargo.json
index f91c1c2..0ba443c 100644
--- a/crates/gl/cargo_embargo.json
+++ b/crates/gl/cargo_embargo.json
@@ -1,7 +1,8 @@
{
- "package": {
+ "package": {
"gl": {
"copy_out": true
}
- }
+ },
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/gl_common/.android-checksum.json b/crates/gl_common/.android-checksum.json
index c64f1b4..7dd45a0 100644
--- a/crates/gl_common/.android-checksum.json
+++ b/crates/gl_common/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6ed65e922c3d98c8c1af4eab9c736e4aeaa19b589773fddc046511dc2fb940d0","Android.bp":"18eb27f582bbb7892c016c14f4656c3cb3460dbea681d148158804b86ed4ef00","Cargo.toml":"48431d2f15f86a2497b5cc7fbbf1135fba62f574609ab1539fb352d4392edee3","LICENSE":"08104e056668223e57f38f83c6c33ed0af9725350a1c5c2aea015c8e5447a5fd","METADATA":"c3838b4f33b60f6bd7f84e5679fe9c9e4e2da08bf5d7ec52b4cee829b146eae3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","patches/LICENSE.patch":"9a3abe19228cdff5436891287af162ffc05d7cb140f2a6e8130141791e52e75c","src/lib.rs":"297b3d8a036d6cb1b88d83e9784e782dab1a9898e8a6ac16f4df8a981414b3b8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6ed65e922c3d98c8c1af4eab9c736e4aeaa19b589773fddc046511dc2fb940d0","Android.bp":"91420eeeeb75beadbacab51f8e991b585e3066859aca502ffd05865e1944d34b","Cargo.toml":"48431d2f15f86a2497b5cc7fbbf1135fba62f574609ab1539fb352d4392edee3","LICENSE":"08104e056668223e57f38f83c6c33ed0af9725350a1c5c2aea015c8e5447a5fd","METADATA":"c3838b4f33b60f6bd7f84e5679fe9c9e4e2da08bf5d7ec52b4cee829b146eae3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","patches/LICENSE.patch":"9a3abe19228cdff5436891287af162ffc05d7cb140f2a6e8130141791e52e75c","src/lib.rs":"297b3d8a036d6cb1b88d83e9784e782dab1a9898e8a6ac16f4df8a981414b3b8"}}
\ No newline at end of file
diff --git a/crates/gl_common/Android.bp b/crates/gl_common/Android.bp
index d923ade..cd91a46 100644
--- a/crates/gl_common/Android.bp
+++ b/crates/gl_common/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gl_common/cargo_embargo.json b/crates/gl_common/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/gl_common/cargo_embargo.json
+++ b/crates/gl_common/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/glam/.android-checksum.json b/crates/glam/.android-checksum.json
index 2e06758..aa7a01d 100644
--- a/crates/glam/.android-checksum.json
+++ b/crates/glam/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d7687f298dc776f63590adf08a5341fd9ef217d769dda02cc855bd9783b91f68","ARCHITECTURE.md":"c966675696b1f919fbbf82dd156cd1f07f42d182e801235cc71ac9ff5b889db4","ATTRIBUTION.md":"68351d86724034ca10de19536d3110805928de42e3c34667573784212fed2429","Android.bp":"f148ef09c3bb7b44e6ebb08308225e549c16611493f089464bb77a341be1fbb0","CHANGELOG.md":"e9f895b0231d5a3c3c11cdbd42d67233660b50ae1588077315b97ac93db5ac9e","CODE_OF_CONDUCT.md":"104c5c02a827d2c2916183b093e999b73e5e48c6925aae556416c52e87786a30","CONTRIBUTING.md":"b034e68df52c7a06fc30f5dcb5937debd9ebd1e9f5bedf6933681ea255a71c84","Cargo.toml":"0f4fa2490bc836378d6eecb3c2927aac841cb1c20473c6f64ae6ecd7b224a1a4","LICENSE":"0a4b5b8e2558ffc8d4b08cb0ed3a3c09acb37dfa72a72d2201e24d8ec18f8d8c","LICENSE-APACHE":"0a4b5b8e2558ffc8d4b08cb0ed3a3c09acb37dfa72a72d2201e24d8ec18f8d8c","METADATA":"ae4906b6b0b1e5e26f218cf58f6a910fdbf93517d6ee859c3e5f5314c98156ed","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d64d5f230ad6fc8b654a10a3f7d57baeed1aac6ef93caca64b3662cc62695806","benches/affine2.rs":"258fcc2b26d17c03f117e62512c48f4f3c6edab58294ee7b42b5a00e15df120c","benches/affine3.rs":"434cec45c1c89c57807970a275ea88e7bdb2827946e737913c1974f7ebc64fa4","benches/iai.rs":"8301e19a24fc80eb3de0d365c4417e5120b02a4a0c405d66c868709fb1b2c77d","benches/mat2.rs":"1acd3f8853be14fb35b9dca12603d4f32f309b0749e561c6d68d625ee9ac71e0","benches/mat3.rs":"d6d443ca41ccfbec6d2ba8a55633fd05d81ad9221e36d25e20bfeba7417935ae","benches/mat3a.rs":"cab5b9f23d68a7e3d557b2ee82f41b76ca45d725eefe42f0de7866cc3cf47a17","benches/mat4.rs":"7173961ae3abc98a10b87d05132c35615936838f70951a2dda9e3bab98b472ea","benches/quat.rs":"df5ad38e88f13459654e40d56f94fb08bd813648756db19c8fc6a0f3514a5291","benches/support.rs":"282ab869c8e066884a6d32b1762c30b9533e1c873a59cffe9ba77d76ac1092d8","benches/support/macros.rs":"a5a4ff16b792c1857db9f1db4ea5c0a5c52a208d62334111726bb14b685d8fb4","benches/vec2.rs":"fab318070b1259354cb762c99d3755f6a00ec6b42b734b7a555be6de4c10af0f","benches/vec3.rs":"7ff7870ccdac4236b514711f046d0c568cd4a20d280bff0f2d4d1aabc9a2c455","benches/vec3a.rs":"37c8241dbb85edf7ab64b4b00e64532997a8a7ac33cb8189d22af47b30ce359d","benches/vec4.rs":"247ccd8f584edf26e9b8a495493b6060e7415fe47ce19b82a8012779fdc92201","build_all_msrv.sh":"27b5fe7fe1fa47ee75dc892542d9153057e9feaae843ee720cbfbd71726241e0","build_and_test_features.sh":"c109f5faaad65e2ebfe7cae313a56238ace8d0089eb1a41c42553a2379e5a1ba","build_and_test_wasm32_chrome.sh":"ee529572839b5e48171da9a6224d8f18804339974b53866bd08d732b096a55e6","build_and_test_wasm32_firefox.sh":"1a17c0878c478ce04dcf3083c4268cc747076962bdc82e1b86d9187cc9826723","cargo_embargo.json":"1a734fe479a7990d44ba5d28ca649ca5f881f2b8b682945032e896fe94810eb0","clippy.toml":"40ef87c643ca926e60249ae779d096c5a11b05c52ffb1cfb4dfebb534f2c9314","deny.toml":"9db0956606ceb22e4514cfd1155c6e1aa82598c3b724c4a0c7c9ae7d3d268971","src/align16.rs":"2e14d45f1c2bffc3c17ae0d08a78474c83dbee23236d1d3d2bcc54cb40aee6b8","src/bool.rs":"e7341a7aabfbca192ffb0d30e4e059fa516312fb2f5c5d493995ae7ae40763cc","src/bool/bvec2.rs":"022104b80fd93c0fd9ca7d39a7fefdda7a534b2af12052259a8676e099feb4a2","src/bool/bvec3.rs":"8e79f9fdc72b2b3a7584b53e1866ab4223e821dcfa15f4794d92f602bb0b20b4","src/bool/bvec4.rs":"e20a7f410118f61861b39373f966081fd06e117dcd70856b875be177c84cce5c","src/bool/coresimd.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/coresimd/bvec3a.rs":"ade501e05c232b4123b446363741db08695083b9f1a6c2c3f880ebab4b258dbf","src/bool/coresimd/bvec4a.rs":"a6bb2d5cfc4bf47a4d95cb05c0e667f1255845879236c5fc2b3c4dc3296d8def","src/bool/neon.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/neon/bvec3a.rs":"191965ed8a1dbb835de902f92b9aa94b895bebc5cd9fe36ecd07c23e7b747963","src/bool/neon/bvec4a.rs":"b0ea68c835ce6bc56d181cb9ecfcf84c91aa327c47733bfb4c54f667e843c6ca","src/bool/scalar.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/scalar/bvec3a.rs":"2d297aef1d4ccd60d1f9e678087862c7e8996b20b42961c76faf943dec6bd9f8","src/bool/scalar/bvec4a.rs":"eb967d9063f8a8f7de3db46c893f6cc7898b309e3b9ffa3e3abbbe0defcff27d","src/bool/sse2.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/sse2/bvec3a.rs":"be97915bb2654d11e2134b6a90816d7c3f19e15ce21d349c90974d19c31d8919","src/bool/sse2/bvec4a.rs":"763d6ab21615be17b6b24103b17dde2e88d3dcb12f7751f433e35f3f573e4c1b","src/bool/wasm32.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/wasm32/bvec3a.rs":"fd5f8b18653219e6f1aa1b6ff53cf2ed6b0cc763d9c9f275e57face6e1691c42","src/bool/wasm32/bvec4a.rs":"4c98f6498c6742a909004fc35b663a867bd80992e51f5eb58fc0566e0d0a089d","src/coresimd.rs":"cb848dbbd30ea3ea6766311ac18587cf2549830e09304d3828ef883ed2a3e198","src/deref.rs":"d0f569375c4621f6a8b0ba38a2e9fb29e6aeca50efd7247d226f1b1ae6d0f766","src/euler.rs":"4ae0051961eadcb7d95475521a35836a6e5205257cfb1c3668bad6832c107a96","src/f32.rs":"969ac5ed16361b01df5f9b62707d5c9e7eaa4bf99409a80824dbd93ee353ae2c","src/f32/affine2.rs":"b9a1f0605927c38bd3f99c62b1e0fbfa8f2529226eeda8903b5cd227be97a8a2","src/f32/affine3a.rs":"a545a1e9e98248e48fd20d16ed83c6ea1ba9d00c7c8e96469ed11c9397c5b6b1","src/f32/coresimd.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/coresimd/mat2.rs":"0c66511d79180860389894d392115886623520e257af1124680ba32e64a6265f","src/f32/coresimd/mat3a.rs":"eeb02096e9d9a479208402119b7752298423c6666ea88decae9427019a17874d","src/f32/coresimd/mat4.rs":"c476d76bce6a63a2365c54dc167b44cdb54275ad728fc8188cdded492ac07952","src/f32/coresimd/quat.rs":"c3853197771bb45f42ccfc1b418b31cfd598e70fded30ac4ad2c9fff2aff9df9","src/f32/coresimd/vec3a.rs":"cf107f5f29ea3d68aa2a4825cc81eaf7541a712f4f012f968f1de3a2140f191a","src/f32/coresimd/vec4.rs":"d6cb691a8e3d5624663dab7cfbc6b285c8a7813ccd2a5407dd981d993e5d9504","src/f32/float.rs":"0589193ac5a2dbfa12d4e0aa0bbdc5fab701a8b9f8cc433dfbc5a388398f470b","src/f32/mat3.rs":"810856c4e60789d747f8c941d73280acc09ccfed184012cd9ca80cb573409c22","src/f32/math.rs":"da93b09ba2e80734b1a758bdd10b31973cc7a3b4ee66e52919af2004f0a27221","src/f32/neon.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/neon/mat2.rs":"6f2a53bca079658fbf20b5b75a886b2b7747bad418627060e059ec9a36357f11","src/f32/neon/mat3a.rs":"3cb7ec734005ded008d2e0b07400ffd95df55694141e07dfbdb944832f0895f1","src/f32/neon/mat4.rs":"1d3408a64d07bc1ea4b47107e90e7df0b0bd864b7871f59090b8cb652e514d0c","src/f32/neon/quat.rs":"1262139509e14d57101fee6dba0126b8cb6b5f76dcc7d03a31af5dadefb9cab6","src/f32/neon/vec3a.rs":"83c898a9e1d573de1cd815a707c59fbcaadacbc44f4183d3e2244516609807a4","src/f32/neon/vec4.rs":"09e8b9dffc5509cc5290651d545a6bfb354f39e7c3814ddd83a81e228cf811c8","src/f32/scalar.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/scalar/mat2.rs":"2e9909d6b72b1e3b6591a67b317a3c217de545695f73f813d152aec14a66403e","src/f32/scalar/mat3a.rs":"2afa8c74cd5d597b540ddde3ece77a9c1b6292475bfcfcd084414b81f88abbb9","src/f32/scalar/mat4.rs":"702b6f902c0f6df5f8e8332283c30012a243c3ca00122e4897b0d63400f0f2b4","src/f32/scalar/quat.rs":"10edea3a9f49a7d486f316190d7e14354657af3335b9788353f094d7dc054aaf","src/f32/scalar/vec3a.rs":"e7cb52e014462698d65c85d533f28829a3dea7953893c2c09541ebcddd6ea834","src/f32/scalar/vec4.rs":"2b9c3827db26e61eb609ca045d10ef36c29ad340f60b5e27220ca8e1e0b6f76f","src/f32/sse2.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/sse2/mat2.rs":"ee5dc00c5939d4092136043adc1e5b269e14d5d0a607aca4f0c2a91ef91c62ee","src/f32/sse2/mat3a.rs":"1e1ae991e9b81cd3ec2bc0b8ec62135fe16f5a48fd3795ec8e904a522121c769","src/f32/sse2/mat4.rs":"c9856425f7627776a4f710df5b76b26e39bd312b871deba83ff87619e69bb569","src/f32/sse2/quat.rs":"60a4f7ca51218c73ce6c8d52c158ef14d3076caa0926d81a0e392e900fa78ef5","src/f32/sse2/vec3a.rs":"566ef73c6de8334da155490eb9e159adba30bec6aae9299b67b71c20fd07ab24","src/f32/sse2/vec4.rs":"145bd4150145c1b18f4732b5a00c85794aa6d14bb46517df3dcbeefc2fef4083","src/f32/vec2.rs":"39a1ec0d0175ea4abe6ae36dfeadc3860d10064e8cbbf29591c800b6dde01fed","src/f32/vec3.rs":"1c745d3d772d5ebc982462449fcc6ee494dedeb28cad6a68588d76c19256a448","src/f32/wasm32.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/wasm32/mat2.rs":"a123d1b65c52a5ab92061abf7d36f54a96a12f916791bc01482edb3155770def","src/f32/wasm32/mat3a.rs":"6d0006dc1494af3ef2de4444294d9260d69ffb5c9a86dc0d0ad1937eca91a017","src/f32/wasm32/mat4.rs":"a647d7656a0eb4f74a5bfad8b3dee4c61718acb05021cac23dde130f517f8d0c","src/f32/wasm32/quat.rs":"ab35dbb24d874b819e223b243250487c318a38344fb24e7365193ddc704c70bc","src/f32/wasm32/vec3a.rs":"ca36e579cf67b8617bb2130c92e8d074c2d286d13093686f572f0713bac159c1","src/f32/wasm32/vec4.rs":"4f1a31f5f0b6b3492e70e0a36850b66a8fa4bf136977a5222ef17c8601d988d2","src/f64.rs":"8bba8e3435de1b4d049e4e81046eb9ba7fc155de73a0349721124ccf947bf24b","src/f64/daffine2.rs":"51241ccfbd32da9c692f3983481e3638a133680471cc986e67b3c21b8ad5d081","src/f64/daffine3.rs":"a9eb7fae70c72f9429f7ab07c6412691b2c3fba00c4a61ce66661080c42d6dc9","src/f64/dmat2.rs":"2a27bc9209446b3af5cba1815b5d587f863a5e4ec06e8360aea61e79a28c5dd0","src/f64/dmat3.rs":"3bdb7820cf58d1fbca14c4f78808c219eec70b7f7f8d6b377b7fd2213ffe9573","src/f64/dmat4.rs":"83ba38a1f42f76182973f9c4d773459fbf450f3a48651871866405e912d313de","src/f64/dquat.rs":"7fdea441656eaa7fc4b236c5f02d6962f4ff6c9737e97c0314b063671c2a2d2b","src/f64/dvec2.rs":"3e726baeb3b4a6d0fbf1f305aaea69c8140871bf52b3bfe72e0bd2b9d5e7361e","src/f64/dvec3.rs":"45e345ef2cdbb8a86fe16fb685bb3b442ef5ecfc7882070f599e27c13452cd59","src/f64/dvec4.rs":"d7fe6f2e83da9130e754a0111e190a87bd3f4aae1e5105b18e5a192149177292","src/f64/float.rs":"2fa506d501d803aca0ccaeee5aec479cec8bc0b06ba6c0068f86ab712828cbed","src/f64/math.rs":"732a1c04272e44aad04750ae9e6511adda7145bf1b6f9eea5d31b9569d3cc8c3","src/features.rs":"8484ef288a24713cb41269dc66beb5ebbc03670850a3fa371849d686ec6583f1","src/features/impl_approx.rs":"78b406d50a71e2e1ad659ddce289f855412156a976c482dc51d19bd8086f731e","src/features/impl_bytemuck.rs":"f0f9720fce64b1def39697866d6f2b195155618522b8c72c395b46b71a572456","src/features/impl_mint.rs":"c8bc65ed3103697b4e9d97c754e1b9759cb99d66d0ac533237b5a01417a2436b","src/features/impl_rand.rs":"f3a4c6388f8ff9d312a22300dd245773c8f5f8803490f03fe6378fa6169c4f7a","src/features/impl_rkyv.rs":"dffe601afbc9a4e966678a172014bd5cb391a23ff967bd495307716dd0f1c2a3","src/features/impl_serde.rs":"378ed1513fa393586b6c0f77e77ae06ccef9443aff183374a00cf19572d3c72b","src/float.rs":"a9aef4b0b49b5d8dee3a2ec527b4008b54cfc44048f133160fdbab2fc312bdef","src/i16.rs":"22bf65b210b7e60ee8233a891924920e5b6604acbd245c81e7e645af522cbdcb","src/i16/i16vec2.rs":"2954c03dd6d7434885a0b382ccf4b4ddf4228983fceb797605b1cc6691944465","src/i16/i16vec3.rs":"ebb2b02372889d31e1c7e184aa9e1f532c42622e2116bbfca46ae55a4587640e","src/i16/i16vec4.rs":"538ba00d29f560e64d579470fa1e1e11407c8fbd0dfc63e5ffec9f9e078c4dab","src/i32.rs":"77f8a832de656ca5b7c19f6814320d283c84323e774a9ebc415b4ad87e028569","src/i32/ivec2.rs":"bd6e0ddaa91f2a7d61444a812e0696b776971e800f811a3473b9f3e84b307f84","src/i32/ivec3.rs":"49cfe39d21c6e9bc687afa63f35e29a7044fdb00026594783ec57e57236364bf","src/i32/ivec4.rs":"4f408a4ece194ba9ec2e0261bb20329649e5b02c164d932051bee4743c73a834","src/i64.rs":"1c71d9921ee0246800beeeadf49a322da5bf85f2832ffa1934688e242e735626","src/i64/i64vec2.rs":"4cdd4635072cfbfaadf63da0695c38eebd59613e003d7f921a1d5e6f1b06bce0","src/i64/i64vec3.rs":"c2bb079e037b51188c21d798028b2a321c1dd2c4dd64e27de35cffb1db792f0c","src/i64/i64vec4.rs":"0f01b80c198c80dfcc73dd6d4289284b533635d09f49d86cc6a6804e2dc2553c","src/i8.rs":"2c09d6e947b9924a8eb3f9ef4dbf80f906a68bfd0905be3fdb7a6d6a030b9be1","src/i8/i8vec2.rs":"8e9a5ca63e04d20044171eaeaf6b742dd4578c9f331883fab40a519e29cac9fa","src/i8/i8vec3.rs":"efd6d68c9d3bdf7b93e37d8c4012c9453ee25727ea69e050608b8095e4a20679","src/i8/i8vec4.rs":"578d530b1ef99d25ce31ff69346ce6dae9dacb18ac1be88743ce517321b0fca2","src/lib.rs":"887073dff483e89b323beece034ecbc48980f7b6060dbe444974410206ec09d2","src/macros.rs":"3954a434a61e1ad20da04b807dd6fdfa8015558da845c7ddb307f303402ccbe8","src/neon.rs":"4d3e1e3b311101913cc7e31e1a4e7413bf1a21cfcceee4145217a3d4aaba6fc9","src/spirv.rs":"9be963696fc3a6c5c75bdebcbd90cefcdb89d65b84e138b4540cf71c5f0a5502","src/sse2.rs":"82be3f657293e41f7177ea16d8d2dabe67bd6d83f51df9a9174121616231b464","src/swizzles.rs":"49bb952acb43fee996fe66d818d263e08993d9439d84bec20fbf843f93527ebe","src/swizzles/coresimd.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/coresimd/vec3a_impl.rs":"8be8d16a76d993e08cd8eb3e1c7504b2cd7e3667f0196f8f3da9c15ebefe10c3","src/swizzles/coresimd/vec4_impl.rs":"4151bce76bbedb57010362cd965bcde80d9807159e373bd000d42fbddff5649a","src/swizzles/dvec2_impl.rs":"6372530cf766128f6af1cabaf6617b5cf8d3e71b1da567b6fd1819271ac680ed","src/swizzles/dvec3_impl.rs":"b5fb45f0ea819e870633103fd69fac6bf26182872240f7809e2ead9b36f3ee81","src/swizzles/dvec4_impl.rs":"68ae7c5070fa6852738726cf1268160e4854eaf0aa5c5a4ff87042b3659cb332","src/swizzles/i16vec2_impl.rs":"2a48a6750ef722d22165bb60f51f26c1f8f7a18a45b8a7633fb4c04dc9137248","src/swizzles/i16vec3_impl.rs":"961bb3cf51a302041267993bfda5ed40bbd2f766be804124bf11518be5324fd9","src/swizzles/i16vec4_impl.rs":"195ad16a35792907338e6ef8b8491009a08ba2ff2159bcee8fed6962cc407b99","src/swizzles/i64vec2_impl.rs":"a8e570f200e22773c71790192e00b9417ad3e5d5ad51d4d324179a78c4f18892","src/swizzles/i64vec3_impl.rs":"5029bec7a0a472a966d1df9004366668cbb4d4bba5adb28cd75e207af3fdd656","src/swizzles/i64vec4_impl.rs":"81905f99fd57279d46bef7d44ca911c24861680bc96ad741dd37c9cd61d84c32","src/swizzles/i8vec2_impl.rs":"45ffa1faee3eaa0e2ccc4a411506796ea2ffad71ad2fcb8b707e32d66ed16f89","src/swizzles/i8vec3_impl.rs":"b72dfc9636f5a8526199d0d16550eec9d060272e1e7472f30a4c23e2f84ec99c","src/swizzles/i8vec4_impl.rs":"d20f5863dce8dc9248f0939b54f56686d352b90688a4345a48c1f228a50628a7","src/swizzles/ivec2_impl.rs":"c5af639a31c6081b9fa6ad33fdc0bd5b8093d77fad5e082496e9aa6ddf4ac0e5","src/swizzles/ivec3_impl.rs":"a7a95484b5e2fff354d6470ed634ec494bca7eb838e99342a371b7656dc248b5","src/swizzles/ivec4_impl.rs":"155b70dd34aa315a0cde085649e61e8a126d899f1ee6c60a6547ef94b0dc2491","src/swizzles/neon.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/neon/vec3a_impl.rs":"efac4fd7db424a3e10bba6320317d80b9e1b19425a41fef863364963901e3865","src/swizzles/neon/vec4_impl.rs":"685acad32b006dcbea99df4bc78083a8a6f60cb29cb0525afba8ac4abb83937b","src/swizzles/scalar.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/scalar/vec3a_impl.rs":"efac4fd7db424a3e10bba6320317d80b9e1b19425a41fef863364963901e3865","src/swizzles/scalar/vec4_impl.rs":"685acad32b006dcbea99df4bc78083a8a6f60cb29cb0525afba8ac4abb83937b","src/swizzles/sse2.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/sse2/vec3a_impl.rs":"728acd914aba05b1003f7b246717f6be2f6700116754625a9edf91ef7b22d239","src/swizzles/sse2/vec4_impl.rs":"0e1ccabdcb36a3b8e8517f97761c5d4b0a54a80830d1161bf742aa8c99872aa1","src/swizzles/u16vec2_impl.rs":"e1ac603ab6e99b667da98243bc739cdd611e06cf2e8e8d3e4ef4b7da64877630","src/swizzles/u16vec3_impl.rs":"d3ec1d908367730070e2dd44d4c930102b693f8a3fdfd9279711259b3aa7f1f7","src/swizzles/u16vec4_impl.rs":"f19d156cc86fe1c6937c95facd03b2a19620064433345b398e22be5fd2d5914e","src/swizzles/u64vec2_impl.rs":"b56fa6a85c94a145f2c70f2513729501a3217f250d4d6949350b08c563832f6a","src/swizzles/u64vec3_impl.rs":"9b52aaca0dc27c5474dc53dd72260ff4d5adb51e81532c6f4bef0aafd05e4879","src/swizzles/u64vec4_impl.rs":"e537da321dd5b371ba15dffdbb62a696c1b1f30134d73e83b04a67eed08f74ea","src/swizzles/u8vec2_impl.rs":"f9da53c699e320fcb33b1e905261567288b2ed82a1a3095ce8d9922c1707b652","src/swizzles/u8vec3_impl.rs":"a28c84e4df2969cb1416dfe7301d1932c4d5a1ef267472ee8fb5a170d829aabc","src/swizzles/u8vec4_impl.rs":"fe38d970a7c9a6c158487e50e9630e82252e7ba7728c7a25cb652074568f93b4","src/swizzles/uvec2_impl.rs":"588c731a0e7d2c01d46d8c769522cae58442bc471b0cdd69a98c63450e38760a","src/swizzles/uvec3_impl.rs":"7ebe5cc95d26322f7392627d03a09fe2c986ab06ebfffc9b338944abdaa1acf5","src/swizzles/uvec4_impl.rs":"f2786839dab8d7b040fd8c61ca8a2900b4afc5321dc3469b36fe11b310bbb9ba","src/swizzles/vec2_impl.rs":"3903cee652bab4f4274231819768d0b6f1af2767ef952ae1f09188cd0cc7e62a","src/swizzles/vec3_impl.rs":"057f6c99293e8fd781d6c7ad0cda7b09c6e05f75fa10764577d4eacfbdcf96f0","src/swizzles/vec_traits.rs":"11039280c9790ffb636a513665aae8bae585aa1a6770e8c6776cc40e5e7d230b","src/swizzles/wasm32.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/wasm32/vec3a_impl.rs":"a15976e3e49d196d155bdc9e73ef5eb5c0095364bd086200f67ff5ca588b82b3","src/swizzles/wasm32/vec4_impl.rs":"f16c8966aef745045c87ee72fc9a5bab2bcb6ec1e7f37550a6dcb6d19cb3f5af","src/u16.rs":"8c7f16036cc69a45f4a3388c0c3b2bda0bbfd9b393c6f77f1aa6fd30049f42a5","src/u16/u16vec2.rs":"b6356e5a144225c47720a7ccfb143414c83dc7c11a99e5b9372cf191a704783f","src/u16/u16vec3.rs":"2a90d185bad2f6e05599e8e01fc1d8da500b14dcbc471f8650e5df65fe4c7653","src/u16/u16vec4.rs":"ee914e5777b48ecd9e9117e38ef1667f73365ed811694c47e3d119a4ee387748","src/u32.rs":"0f3bc0a26144df8c25928b5aade55423ed219399d0adbb6ca0ef9a8a8477e389","src/u32/uvec2.rs":"3e7939804e1520947771714abb24c3d1b9bbaf9fae97aab5c07e9054c5a6543b","src/u32/uvec3.rs":"2040b1b69a0342550d9bfe684971cd3f38a84620eb5b4d112140266ff9f94b11","src/u32/uvec4.rs":"77c32bc004a34582aeaa5382de575e89840cdeec1c57b5de8ebe54bce937b3f3","src/u64.rs":"666b677ecc47fca6406f7ff2c1e89898989a56fe755f9b92acd6a7ddf4ade22e","src/u64/u64vec2.rs":"6576dfad488929b264c36b1e1390dfb4029634f690720594709105f471a80b02","src/u64/u64vec3.rs":"cecae2454a3ba1fa0ce90906e3ab3dac4d05cc8bf93676b8d545247a4e8a0699","src/u64/u64vec4.rs":"ab34350bbefe85bedb775eeb0673172b6e2b930b278a8ebbba6b28c1f4039a42","src/u8.rs":"26b2f5a08aa5e7cd09c34d030295398eee37765a5cbb140b7eaff543a3f23a0e","src/u8/u8vec2.rs":"b08e5861e3709cebdfe5d565352f78575ba874de63573915a724260b974a01c6","src/u8/u8vec3.rs":"485be2939e81571e4fddef41e0093201ebc3c38afb0d3d2d7ccc9bcb89f14786","src/u8/u8vec4.rs":"d71288322da2b053130b91952aa59da38410648d0529b25a1efdfffa49699f7e","src/wasm32.rs":"a5cc46a676281d7267644d5759ba13eba7c84ea471b5617571f6c11dce6a832c","tests/affine2.rs":"0919fdac2e8eb8dc08aa4a28f5841721fd1024df32a9f4fc28e42bc76ec27eeb","tests/affine3.rs":"ac202638561d67862a27039d516057040e5df264f7ffa0eb294ebd3bd6347572","tests/euler.rs":"98dd5c10bbec80ffb20f311b81358513b85bf8f079793db6a015cfefe1726fe1","tests/float.rs":"312e1a2525a34ded8b47e9e040a07bebd84c201a93a5a9a59b6d078781c289ec","tests/mat2.rs":"afce03547472e992ea3d60a2d9b1f7d221e1be00805cd4030830f05d8dfe428e","tests/mat3.rs":"7f7f2b7349cf0b6f9a4647ece5c65fcbc6e2fca85068acc905d0161e0a3780e7","tests/mat4.rs":"5d5e6b2c31c0e5018a496dc96b460efd50ccf34d4c9365b1bc431deebc42096d","tests/quat.rs":"a7d68438597ef5e7856d963623352bc0300c18ff7f21a886d6a359d745734837","tests/support.rs":"f502a6c788bb669de5b39bdc71cda88a7ce1dccd0768c0fda582f1d499e983e2","tests/support/macros.rs":"25c7807f69a927459aa2cb0d95cf941221381dbf6985557320191db42155228a","tests/swizzles_f32.rs":"4fdc5b79dc81d56cb16208ddc886c8a87a5785f471fa2dedc24cf9fba347acf1","tests/swizzles_f64.rs":"a9a915bc6fd885a3b2a0175c2cd66f5bcc58c87f744a644a9f77d7a4916d0963","tests/swizzles_i16.rs":"1e85f9d2d8a47bb458b12504aa054d901e4947b7e24ae110cb7b35aa920988ab","tests/swizzles_i32.rs":"e564b482459145c6646a186966e7de7c9a3878d5ef01f09793f973fe94e58d49","tests/swizzles_i64.rs":"4da58dddbdb04fc43d07efe1ad55a3fe7d510cfdf5118f2b34a6adb9dc4f6805","tests/swizzles_i8.rs":"dd5baa4c0432941a26dd98ff667d8c5ae0589978f154b635c3bb6d607cc954d4","tests/swizzles_u16.rs":"b36548dfff33914ac1127b310207742fe7fc491c556755ac0a66ea22119cfb45","tests/swizzles_u32.rs":"46497be5e3b56a16c7a3fe54573d006fd346dab42733df3bc1b9291e5f078c11","tests/swizzles_u64.rs":"575b26771cfabbf93f41d14ef6ca932019ac330d216711f0d6401c09f3859757","tests/swizzles_u8.rs":"073f55ed4ed876674f8abedd38971df3da0fea5a3b9f1ebdb5e4a01e758aec6c","tests/vec2.rs":"f115fed6b4a25e51541f89e887ff54368df1e465e210ddb6d677ddce97978573","tests/vec3.rs":"6228dfc84e7610c247de3b03237e977e67d48e1d4d2b183d3d58457b85865acf","tests/vec4.rs":"93e03166bc0fe89ddb115db471d6df1034cd400fbf9430eb3f4d7483d0a3c660"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d7687f298dc776f63590adf08a5341fd9ef217d769dda02cc855bd9783b91f68","ARCHITECTURE.md":"c966675696b1f919fbbf82dd156cd1f07f42d182e801235cc71ac9ff5b889db4","ATTRIBUTION.md":"68351d86724034ca10de19536d3110805928de42e3c34667573784212fed2429","Android.bp":"f148ef09c3bb7b44e6ebb08308225e549c16611493f089464bb77a341be1fbb0","CHANGELOG.md":"e9f895b0231d5a3c3c11cdbd42d67233660b50ae1588077315b97ac93db5ac9e","CODE_OF_CONDUCT.md":"104c5c02a827d2c2916183b093e999b73e5e48c6925aae556416c52e87786a30","CONTRIBUTING.md":"b034e68df52c7a06fc30f5dcb5937debd9ebd1e9f5bedf6933681ea255a71c84","Cargo.toml":"0f4fa2490bc836378d6eecb3c2927aac841cb1c20473c6f64ae6ecd7b224a1a4","LICENSE":"0a4b5b8e2558ffc8d4b08cb0ed3a3c09acb37dfa72a72d2201e24d8ec18f8d8c","LICENSE-APACHE":"0a4b5b8e2558ffc8d4b08cb0ed3a3c09acb37dfa72a72d2201e24d8ec18f8d8c","METADATA":"ae4906b6b0b1e5e26f218cf58f6a910fdbf93517d6ee859c3e5f5314c98156ed","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d64d5f230ad6fc8b654a10a3f7d57baeed1aac6ef93caca64b3662cc62695806","benches/affine2.rs":"258fcc2b26d17c03f117e62512c48f4f3c6edab58294ee7b42b5a00e15df120c","benches/affine3.rs":"434cec45c1c89c57807970a275ea88e7bdb2827946e737913c1974f7ebc64fa4","benches/iai.rs":"8301e19a24fc80eb3de0d365c4417e5120b02a4a0c405d66c868709fb1b2c77d","benches/mat2.rs":"1acd3f8853be14fb35b9dca12603d4f32f309b0749e561c6d68d625ee9ac71e0","benches/mat3.rs":"d6d443ca41ccfbec6d2ba8a55633fd05d81ad9221e36d25e20bfeba7417935ae","benches/mat3a.rs":"cab5b9f23d68a7e3d557b2ee82f41b76ca45d725eefe42f0de7866cc3cf47a17","benches/mat4.rs":"7173961ae3abc98a10b87d05132c35615936838f70951a2dda9e3bab98b472ea","benches/quat.rs":"df5ad38e88f13459654e40d56f94fb08bd813648756db19c8fc6a0f3514a5291","benches/support.rs":"282ab869c8e066884a6d32b1762c30b9533e1c873a59cffe9ba77d76ac1092d8","benches/support/macros.rs":"a5a4ff16b792c1857db9f1db4ea5c0a5c52a208d62334111726bb14b685d8fb4","benches/vec2.rs":"fab318070b1259354cb762c99d3755f6a00ec6b42b734b7a555be6de4c10af0f","benches/vec3.rs":"7ff7870ccdac4236b514711f046d0c568cd4a20d280bff0f2d4d1aabc9a2c455","benches/vec3a.rs":"37c8241dbb85edf7ab64b4b00e64532997a8a7ac33cb8189d22af47b30ce359d","benches/vec4.rs":"247ccd8f584edf26e9b8a495493b6060e7415fe47ce19b82a8012779fdc92201","build_all_msrv.sh":"27b5fe7fe1fa47ee75dc892542d9153057e9feaae843ee720cbfbd71726241e0","build_and_test_features.sh":"c109f5faaad65e2ebfe7cae313a56238ace8d0089eb1a41c42553a2379e5a1ba","build_and_test_wasm32_chrome.sh":"ee529572839b5e48171da9a6224d8f18804339974b53866bd08d732b096a55e6","build_and_test_wasm32_firefox.sh":"1a17c0878c478ce04dcf3083c4268cc747076962bdc82e1b86d9187cc9826723","cargo_embargo.json":"69896e04a983576d21031c0dcf61c27c7e9b109f6704a4867de9b318c318822c","clippy.toml":"40ef87c643ca926e60249ae779d096c5a11b05c52ffb1cfb4dfebb534f2c9314","deny.toml":"9db0956606ceb22e4514cfd1155c6e1aa82598c3b724c4a0c7c9ae7d3d268971","src/align16.rs":"2e14d45f1c2bffc3c17ae0d08a78474c83dbee23236d1d3d2bcc54cb40aee6b8","src/bool.rs":"e7341a7aabfbca192ffb0d30e4e059fa516312fb2f5c5d493995ae7ae40763cc","src/bool/bvec2.rs":"022104b80fd93c0fd9ca7d39a7fefdda7a534b2af12052259a8676e099feb4a2","src/bool/bvec3.rs":"8e79f9fdc72b2b3a7584b53e1866ab4223e821dcfa15f4794d92f602bb0b20b4","src/bool/bvec4.rs":"e20a7f410118f61861b39373f966081fd06e117dcd70856b875be177c84cce5c","src/bool/coresimd.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/coresimd/bvec3a.rs":"ade501e05c232b4123b446363741db08695083b9f1a6c2c3f880ebab4b258dbf","src/bool/coresimd/bvec4a.rs":"a6bb2d5cfc4bf47a4d95cb05c0e667f1255845879236c5fc2b3c4dc3296d8def","src/bool/neon.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/neon/bvec3a.rs":"191965ed8a1dbb835de902f92b9aa94b895bebc5cd9fe36ecd07c23e7b747963","src/bool/neon/bvec4a.rs":"b0ea68c835ce6bc56d181cb9ecfcf84c91aa327c47733bfb4c54f667e843c6ca","src/bool/scalar.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/scalar/bvec3a.rs":"2d297aef1d4ccd60d1f9e678087862c7e8996b20b42961c76faf943dec6bd9f8","src/bool/scalar/bvec4a.rs":"eb967d9063f8a8f7de3db46c893f6cc7898b309e3b9ffa3e3abbbe0defcff27d","src/bool/sse2.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/sse2/bvec3a.rs":"be97915bb2654d11e2134b6a90816d7c3f19e15ce21d349c90974d19c31d8919","src/bool/sse2/bvec4a.rs":"763d6ab21615be17b6b24103b17dde2e88d3dcb12f7751f433e35f3f573e4c1b","src/bool/wasm32.rs":"d6cd7887778deabcaddf4479a6b2bf5bf47143b0726459f4a67cc6ff038aa2a0","src/bool/wasm32/bvec3a.rs":"fd5f8b18653219e6f1aa1b6ff53cf2ed6b0cc763d9c9f275e57face6e1691c42","src/bool/wasm32/bvec4a.rs":"4c98f6498c6742a909004fc35b663a867bd80992e51f5eb58fc0566e0d0a089d","src/coresimd.rs":"cb848dbbd30ea3ea6766311ac18587cf2549830e09304d3828ef883ed2a3e198","src/deref.rs":"d0f569375c4621f6a8b0ba38a2e9fb29e6aeca50efd7247d226f1b1ae6d0f766","src/euler.rs":"4ae0051961eadcb7d95475521a35836a6e5205257cfb1c3668bad6832c107a96","src/f32.rs":"969ac5ed16361b01df5f9b62707d5c9e7eaa4bf99409a80824dbd93ee353ae2c","src/f32/affine2.rs":"b9a1f0605927c38bd3f99c62b1e0fbfa8f2529226eeda8903b5cd227be97a8a2","src/f32/affine3a.rs":"a545a1e9e98248e48fd20d16ed83c6ea1ba9d00c7c8e96469ed11c9397c5b6b1","src/f32/coresimd.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/coresimd/mat2.rs":"0c66511d79180860389894d392115886623520e257af1124680ba32e64a6265f","src/f32/coresimd/mat3a.rs":"eeb02096e9d9a479208402119b7752298423c6666ea88decae9427019a17874d","src/f32/coresimd/mat4.rs":"c476d76bce6a63a2365c54dc167b44cdb54275ad728fc8188cdded492ac07952","src/f32/coresimd/quat.rs":"c3853197771bb45f42ccfc1b418b31cfd598e70fded30ac4ad2c9fff2aff9df9","src/f32/coresimd/vec3a.rs":"cf107f5f29ea3d68aa2a4825cc81eaf7541a712f4f012f968f1de3a2140f191a","src/f32/coresimd/vec4.rs":"d6cb691a8e3d5624663dab7cfbc6b285c8a7813ccd2a5407dd981d993e5d9504","src/f32/float.rs":"0589193ac5a2dbfa12d4e0aa0bbdc5fab701a8b9f8cc433dfbc5a388398f470b","src/f32/mat3.rs":"810856c4e60789d747f8c941d73280acc09ccfed184012cd9ca80cb573409c22","src/f32/math.rs":"da93b09ba2e80734b1a758bdd10b31973cc7a3b4ee66e52919af2004f0a27221","src/f32/neon.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/neon/mat2.rs":"6f2a53bca079658fbf20b5b75a886b2b7747bad418627060e059ec9a36357f11","src/f32/neon/mat3a.rs":"3cb7ec734005ded008d2e0b07400ffd95df55694141e07dfbdb944832f0895f1","src/f32/neon/mat4.rs":"1d3408a64d07bc1ea4b47107e90e7df0b0bd864b7871f59090b8cb652e514d0c","src/f32/neon/quat.rs":"1262139509e14d57101fee6dba0126b8cb6b5f76dcc7d03a31af5dadefb9cab6","src/f32/neon/vec3a.rs":"83c898a9e1d573de1cd815a707c59fbcaadacbc44f4183d3e2244516609807a4","src/f32/neon/vec4.rs":"09e8b9dffc5509cc5290651d545a6bfb354f39e7c3814ddd83a81e228cf811c8","src/f32/scalar.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/scalar/mat2.rs":"2e9909d6b72b1e3b6591a67b317a3c217de545695f73f813d152aec14a66403e","src/f32/scalar/mat3a.rs":"2afa8c74cd5d597b540ddde3ece77a9c1b6292475bfcfcd084414b81f88abbb9","src/f32/scalar/mat4.rs":"702b6f902c0f6df5f8e8332283c30012a243c3ca00122e4897b0d63400f0f2b4","src/f32/scalar/quat.rs":"10edea3a9f49a7d486f316190d7e14354657af3335b9788353f094d7dc054aaf","src/f32/scalar/vec3a.rs":"e7cb52e014462698d65c85d533f28829a3dea7953893c2c09541ebcddd6ea834","src/f32/scalar/vec4.rs":"2b9c3827db26e61eb609ca045d10ef36c29ad340f60b5e27220ca8e1e0b6f76f","src/f32/sse2.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/sse2/mat2.rs":"ee5dc00c5939d4092136043adc1e5b269e14d5d0a607aca4f0c2a91ef91c62ee","src/f32/sse2/mat3a.rs":"1e1ae991e9b81cd3ec2bc0b8ec62135fe16f5a48fd3795ec8e904a522121c769","src/f32/sse2/mat4.rs":"c9856425f7627776a4f710df5b76b26e39bd312b871deba83ff87619e69bb569","src/f32/sse2/quat.rs":"60a4f7ca51218c73ce6c8d52c158ef14d3076caa0926d81a0e392e900fa78ef5","src/f32/sse2/vec3a.rs":"566ef73c6de8334da155490eb9e159adba30bec6aae9299b67b71c20fd07ab24","src/f32/sse2/vec4.rs":"145bd4150145c1b18f4732b5a00c85794aa6d14bb46517df3dcbeefc2fef4083","src/f32/vec2.rs":"39a1ec0d0175ea4abe6ae36dfeadc3860d10064e8cbbf29591c800b6dde01fed","src/f32/vec3.rs":"1c745d3d772d5ebc982462449fcc6ee494dedeb28cad6a68588d76c19256a448","src/f32/wasm32.rs":"c5b4c408788c9a557811e4e3e8d66aa4ffe73014025a7a7ba49351de39b4d856","src/f32/wasm32/mat2.rs":"a123d1b65c52a5ab92061abf7d36f54a96a12f916791bc01482edb3155770def","src/f32/wasm32/mat3a.rs":"6d0006dc1494af3ef2de4444294d9260d69ffb5c9a86dc0d0ad1937eca91a017","src/f32/wasm32/mat4.rs":"a647d7656a0eb4f74a5bfad8b3dee4c61718acb05021cac23dde130f517f8d0c","src/f32/wasm32/quat.rs":"ab35dbb24d874b819e223b243250487c318a38344fb24e7365193ddc704c70bc","src/f32/wasm32/vec3a.rs":"ca36e579cf67b8617bb2130c92e8d074c2d286d13093686f572f0713bac159c1","src/f32/wasm32/vec4.rs":"4f1a31f5f0b6b3492e70e0a36850b66a8fa4bf136977a5222ef17c8601d988d2","src/f64.rs":"8bba8e3435de1b4d049e4e81046eb9ba7fc155de73a0349721124ccf947bf24b","src/f64/daffine2.rs":"51241ccfbd32da9c692f3983481e3638a133680471cc986e67b3c21b8ad5d081","src/f64/daffine3.rs":"a9eb7fae70c72f9429f7ab07c6412691b2c3fba00c4a61ce66661080c42d6dc9","src/f64/dmat2.rs":"2a27bc9209446b3af5cba1815b5d587f863a5e4ec06e8360aea61e79a28c5dd0","src/f64/dmat3.rs":"3bdb7820cf58d1fbca14c4f78808c219eec70b7f7f8d6b377b7fd2213ffe9573","src/f64/dmat4.rs":"83ba38a1f42f76182973f9c4d773459fbf450f3a48651871866405e912d313de","src/f64/dquat.rs":"7fdea441656eaa7fc4b236c5f02d6962f4ff6c9737e97c0314b063671c2a2d2b","src/f64/dvec2.rs":"3e726baeb3b4a6d0fbf1f305aaea69c8140871bf52b3bfe72e0bd2b9d5e7361e","src/f64/dvec3.rs":"45e345ef2cdbb8a86fe16fb685bb3b442ef5ecfc7882070f599e27c13452cd59","src/f64/dvec4.rs":"d7fe6f2e83da9130e754a0111e190a87bd3f4aae1e5105b18e5a192149177292","src/f64/float.rs":"2fa506d501d803aca0ccaeee5aec479cec8bc0b06ba6c0068f86ab712828cbed","src/f64/math.rs":"732a1c04272e44aad04750ae9e6511adda7145bf1b6f9eea5d31b9569d3cc8c3","src/features.rs":"8484ef288a24713cb41269dc66beb5ebbc03670850a3fa371849d686ec6583f1","src/features/impl_approx.rs":"78b406d50a71e2e1ad659ddce289f855412156a976c482dc51d19bd8086f731e","src/features/impl_bytemuck.rs":"f0f9720fce64b1def39697866d6f2b195155618522b8c72c395b46b71a572456","src/features/impl_mint.rs":"c8bc65ed3103697b4e9d97c754e1b9759cb99d66d0ac533237b5a01417a2436b","src/features/impl_rand.rs":"f3a4c6388f8ff9d312a22300dd245773c8f5f8803490f03fe6378fa6169c4f7a","src/features/impl_rkyv.rs":"dffe601afbc9a4e966678a172014bd5cb391a23ff967bd495307716dd0f1c2a3","src/features/impl_serde.rs":"378ed1513fa393586b6c0f77e77ae06ccef9443aff183374a00cf19572d3c72b","src/float.rs":"a9aef4b0b49b5d8dee3a2ec527b4008b54cfc44048f133160fdbab2fc312bdef","src/i16.rs":"22bf65b210b7e60ee8233a891924920e5b6604acbd245c81e7e645af522cbdcb","src/i16/i16vec2.rs":"2954c03dd6d7434885a0b382ccf4b4ddf4228983fceb797605b1cc6691944465","src/i16/i16vec3.rs":"ebb2b02372889d31e1c7e184aa9e1f532c42622e2116bbfca46ae55a4587640e","src/i16/i16vec4.rs":"538ba00d29f560e64d579470fa1e1e11407c8fbd0dfc63e5ffec9f9e078c4dab","src/i32.rs":"77f8a832de656ca5b7c19f6814320d283c84323e774a9ebc415b4ad87e028569","src/i32/ivec2.rs":"bd6e0ddaa91f2a7d61444a812e0696b776971e800f811a3473b9f3e84b307f84","src/i32/ivec3.rs":"49cfe39d21c6e9bc687afa63f35e29a7044fdb00026594783ec57e57236364bf","src/i32/ivec4.rs":"4f408a4ece194ba9ec2e0261bb20329649e5b02c164d932051bee4743c73a834","src/i64.rs":"1c71d9921ee0246800beeeadf49a322da5bf85f2832ffa1934688e242e735626","src/i64/i64vec2.rs":"4cdd4635072cfbfaadf63da0695c38eebd59613e003d7f921a1d5e6f1b06bce0","src/i64/i64vec3.rs":"c2bb079e037b51188c21d798028b2a321c1dd2c4dd64e27de35cffb1db792f0c","src/i64/i64vec4.rs":"0f01b80c198c80dfcc73dd6d4289284b533635d09f49d86cc6a6804e2dc2553c","src/i8.rs":"2c09d6e947b9924a8eb3f9ef4dbf80f906a68bfd0905be3fdb7a6d6a030b9be1","src/i8/i8vec2.rs":"8e9a5ca63e04d20044171eaeaf6b742dd4578c9f331883fab40a519e29cac9fa","src/i8/i8vec3.rs":"efd6d68c9d3bdf7b93e37d8c4012c9453ee25727ea69e050608b8095e4a20679","src/i8/i8vec4.rs":"578d530b1ef99d25ce31ff69346ce6dae9dacb18ac1be88743ce517321b0fca2","src/lib.rs":"887073dff483e89b323beece034ecbc48980f7b6060dbe444974410206ec09d2","src/macros.rs":"3954a434a61e1ad20da04b807dd6fdfa8015558da845c7ddb307f303402ccbe8","src/neon.rs":"4d3e1e3b311101913cc7e31e1a4e7413bf1a21cfcceee4145217a3d4aaba6fc9","src/spirv.rs":"9be963696fc3a6c5c75bdebcbd90cefcdb89d65b84e138b4540cf71c5f0a5502","src/sse2.rs":"82be3f657293e41f7177ea16d8d2dabe67bd6d83f51df9a9174121616231b464","src/swizzles.rs":"49bb952acb43fee996fe66d818d263e08993d9439d84bec20fbf843f93527ebe","src/swizzles/coresimd.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/coresimd/vec3a_impl.rs":"8be8d16a76d993e08cd8eb3e1c7504b2cd7e3667f0196f8f3da9c15ebefe10c3","src/swizzles/coresimd/vec4_impl.rs":"4151bce76bbedb57010362cd965bcde80d9807159e373bd000d42fbddff5649a","src/swizzles/dvec2_impl.rs":"6372530cf766128f6af1cabaf6617b5cf8d3e71b1da567b6fd1819271ac680ed","src/swizzles/dvec3_impl.rs":"b5fb45f0ea819e870633103fd69fac6bf26182872240f7809e2ead9b36f3ee81","src/swizzles/dvec4_impl.rs":"68ae7c5070fa6852738726cf1268160e4854eaf0aa5c5a4ff87042b3659cb332","src/swizzles/i16vec2_impl.rs":"2a48a6750ef722d22165bb60f51f26c1f8f7a18a45b8a7633fb4c04dc9137248","src/swizzles/i16vec3_impl.rs":"961bb3cf51a302041267993bfda5ed40bbd2f766be804124bf11518be5324fd9","src/swizzles/i16vec4_impl.rs":"195ad16a35792907338e6ef8b8491009a08ba2ff2159bcee8fed6962cc407b99","src/swizzles/i64vec2_impl.rs":"a8e570f200e22773c71790192e00b9417ad3e5d5ad51d4d324179a78c4f18892","src/swizzles/i64vec3_impl.rs":"5029bec7a0a472a966d1df9004366668cbb4d4bba5adb28cd75e207af3fdd656","src/swizzles/i64vec4_impl.rs":"81905f99fd57279d46bef7d44ca911c24861680bc96ad741dd37c9cd61d84c32","src/swizzles/i8vec2_impl.rs":"45ffa1faee3eaa0e2ccc4a411506796ea2ffad71ad2fcb8b707e32d66ed16f89","src/swizzles/i8vec3_impl.rs":"b72dfc9636f5a8526199d0d16550eec9d060272e1e7472f30a4c23e2f84ec99c","src/swizzles/i8vec4_impl.rs":"d20f5863dce8dc9248f0939b54f56686d352b90688a4345a48c1f228a50628a7","src/swizzles/ivec2_impl.rs":"c5af639a31c6081b9fa6ad33fdc0bd5b8093d77fad5e082496e9aa6ddf4ac0e5","src/swizzles/ivec3_impl.rs":"a7a95484b5e2fff354d6470ed634ec494bca7eb838e99342a371b7656dc248b5","src/swizzles/ivec4_impl.rs":"155b70dd34aa315a0cde085649e61e8a126d899f1ee6c60a6547ef94b0dc2491","src/swizzles/neon.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/neon/vec3a_impl.rs":"efac4fd7db424a3e10bba6320317d80b9e1b19425a41fef863364963901e3865","src/swizzles/neon/vec4_impl.rs":"685acad32b006dcbea99df4bc78083a8a6f60cb29cb0525afba8ac4abb83937b","src/swizzles/scalar.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/scalar/vec3a_impl.rs":"efac4fd7db424a3e10bba6320317d80b9e1b19425a41fef863364963901e3865","src/swizzles/scalar/vec4_impl.rs":"685acad32b006dcbea99df4bc78083a8a6f60cb29cb0525afba8ac4abb83937b","src/swizzles/sse2.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/sse2/vec3a_impl.rs":"728acd914aba05b1003f7b246717f6be2f6700116754625a9edf91ef7b22d239","src/swizzles/sse2/vec4_impl.rs":"0e1ccabdcb36a3b8e8517f97761c5d4b0a54a80830d1161bf742aa8c99872aa1","src/swizzles/u16vec2_impl.rs":"e1ac603ab6e99b667da98243bc739cdd611e06cf2e8e8d3e4ef4b7da64877630","src/swizzles/u16vec3_impl.rs":"d3ec1d908367730070e2dd44d4c930102b693f8a3fdfd9279711259b3aa7f1f7","src/swizzles/u16vec4_impl.rs":"f19d156cc86fe1c6937c95facd03b2a19620064433345b398e22be5fd2d5914e","src/swizzles/u64vec2_impl.rs":"b56fa6a85c94a145f2c70f2513729501a3217f250d4d6949350b08c563832f6a","src/swizzles/u64vec3_impl.rs":"9b52aaca0dc27c5474dc53dd72260ff4d5adb51e81532c6f4bef0aafd05e4879","src/swizzles/u64vec4_impl.rs":"e537da321dd5b371ba15dffdbb62a696c1b1f30134d73e83b04a67eed08f74ea","src/swizzles/u8vec2_impl.rs":"f9da53c699e320fcb33b1e905261567288b2ed82a1a3095ce8d9922c1707b652","src/swizzles/u8vec3_impl.rs":"a28c84e4df2969cb1416dfe7301d1932c4d5a1ef267472ee8fb5a170d829aabc","src/swizzles/u8vec4_impl.rs":"fe38d970a7c9a6c158487e50e9630e82252e7ba7728c7a25cb652074568f93b4","src/swizzles/uvec2_impl.rs":"588c731a0e7d2c01d46d8c769522cae58442bc471b0cdd69a98c63450e38760a","src/swizzles/uvec3_impl.rs":"7ebe5cc95d26322f7392627d03a09fe2c986ab06ebfffc9b338944abdaa1acf5","src/swizzles/uvec4_impl.rs":"f2786839dab8d7b040fd8c61ca8a2900b4afc5321dc3469b36fe11b310bbb9ba","src/swizzles/vec2_impl.rs":"3903cee652bab4f4274231819768d0b6f1af2767ef952ae1f09188cd0cc7e62a","src/swizzles/vec3_impl.rs":"057f6c99293e8fd781d6c7ad0cda7b09c6e05f75fa10764577d4eacfbdcf96f0","src/swizzles/vec_traits.rs":"11039280c9790ffb636a513665aae8bae585aa1a6770e8c6776cc40e5e7d230b","src/swizzles/wasm32.rs":"b2d62479dd699c08098a1400beb7653a38f64ff61bda3ce6fdc8dd9c7588ca93","src/swizzles/wasm32/vec3a_impl.rs":"a15976e3e49d196d155bdc9e73ef5eb5c0095364bd086200f67ff5ca588b82b3","src/swizzles/wasm32/vec4_impl.rs":"f16c8966aef745045c87ee72fc9a5bab2bcb6ec1e7f37550a6dcb6d19cb3f5af","src/u16.rs":"8c7f16036cc69a45f4a3388c0c3b2bda0bbfd9b393c6f77f1aa6fd30049f42a5","src/u16/u16vec2.rs":"b6356e5a144225c47720a7ccfb143414c83dc7c11a99e5b9372cf191a704783f","src/u16/u16vec3.rs":"2a90d185bad2f6e05599e8e01fc1d8da500b14dcbc471f8650e5df65fe4c7653","src/u16/u16vec4.rs":"ee914e5777b48ecd9e9117e38ef1667f73365ed811694c47e3d119a4ee387748","src/u32.rs":"0f3bc0a26144df8c25928b5aade55423ed219399d0adbb6ca0ef9a8a8477e389","src/u32/uvec2.rs":"3e7939804e1520947771714abb24c3d1b9bbaf9fae97aab5c07e9054c5a6543b","src/u32/uvec3.rs":"2040b1b69a0342550d9bfe684971cd3f38a84620eb5b4d112140266ff9f94b11","src/u32/uvec4.rs":"77c32bc004a34582aeaa5382de575e89840cdeec1c57b5de8ebe54bce937b3f3","src/u64.rs":"666b677ecc47fca6406f7ff2c1e89898989a56fe755f9b92acd6a7ddf4ade22e","src/u64/u64vec2.rs":"6576dfad488929b264c36b1e1390dfb4029634f690720594709105f471a80b02","src/u64/u64vec3.rs":"cecae2454a3ba1fa0ce90906e3ab3dac4d05cc8bf93676b8d545247a4e8a0699","src/u64/u64vec4.rs":"ab34350bbefe85bedb775eeb0673172b6e2b930b278a8ebbba6b28c1f4039a42","src/u8.rs":"26b2f5a08aa5e7cd09c34d030295398eee37765a5cbb140b7eaff543a3f23a0e","src/u8/u8vec2.rs":"b08e5861e3709cebdfe5d565352f78575ba874de63573915a724260b974a01c6","src/u8/u8vec3.rs":"485be2939e81571e4fddef41e0093201ebc3c38afb0d3d2d7ccc9bcb89f14786","src/u8/u8vec4.rs":"d71288322da2b053130b91952aa59da38410648d0529b25a1efdfffa49699f7e","src/wasm32.rs":"a5cc46a676281d7267644d5759ba13eba7c84ea471b5617571f6c11dce6a832c","tests/affine2.rs":"0919fdac2e8eb8dc08aa4a28f5841721fd1024df32a9f4fc28e42bc76ec27eeb","tests/affine3.rs":"ac202638561d67862a27039d516057040e5df264f7ffa0eb294ebd3bd6347572","tests/euler.rs":"98dd5c10bbec80ffb20f311b81358513b85bf8f079793db6a015cfefe1726fe1","tests/float.rs":"312e1a2525a34ded8b47e9e040a07bebd84c201a93a5a9a59b6d078781c289ec","tests/mat2.rs":"afce03547472e992ea3d60a2d9b1f7d221e1be00805cd4030830f05d8dfe428e","tests/mat3.rs":"7f7f2b7349cf0b6f9a4647ece5c65fcbc6e2fca85068acc905d0161e0a3780e7","tests/mat4.rs":"5d5e6b2c31c0e5018a496dc96b460efd50ccf34d4c9365b1bc431deebc42096d","tests/quat.rs":"a7d68438597ef5e7856d963623352bc0300c18ff7f21a886d6a359d745734837","tests/support.rs":"f502a6c788bb669de5b39bdc71cda88a7ce1dccd0768c0fda582f1d499e983e2","tests/support/macros.rs":"25c7807f69a927459aa2cb0d95cf941221381dbf6985557320191db42155228a","tests/swizzles_f32.rs":"4fdc5b79dc81d56cb16208ddc886c8a87a5785f471fa2dedc24cf9fba347acf1","tests/swizzles_f64.rs":"a9a915bc6fd885a3b2a0175c2cd66f5bcc58c87f744a644a9f77d7a4916d0963","tests/swizzles_i16.rs":"1e85f9d2d8a47bb458b12504aa054d901e4947b7e24ae110cb7b35aa920988ab","tests/swizzles_i32.rs":"e564b482459145c6646a186966e7de7c9a3878d5ef01f09793f973fe94e58d49","tests/swizzles_i64.rs":"4da58dddbdb04fc43d07efe1ad55a3fe7d510cfdf5118f2b34a6adb9dc4f6805","tests/swizzles_i8.rs":"dd5baa4c0432941a26dd98ff667d8c5ae0589978f154b635c3bb6d607cc954d4","tests/swizzles_u16.rs":"b36548dfff33914ac1127b310207742fe7fc491c556755ac0a66ea22119cfb45","tests/swizzles_u32.rs":"46497be5e3b56a16c7a3fe54573d006fd346dab42733df3bc1b9291e5f078c11","tests/swizzles_u64.rs":"575b26771cfabbf93f41d14ef6ca932019ac330d216711f0d6401c09f3859757","tests/swizzles_u8.rs":"073f55ed4ed876674f8abedd38971df3da0fea5a3b9f1ebdb5e4a01e758aec6c","tests/vec2.rs":"f115fed6b4a25e51541f89e887ff54368df1e465e210ddb6d677ddce97978573","tests/vec3.rs":"6228dfc84e7610c247de3b03237e977e67d48e1d4d2b183d3d58457b85865acf","tests/vec4.rs":"93e03166bc0fe89ddb115db471d6df1034cd400fbf9430eb3f4d7483d0a3c660"}}
\ No newline at end of file
diff --git a/crates/glam/cargo_embargo.json b/crates/glam/cargo_embargo.json
index 4360fa9..0985610 100644
--- a/crates/glam/cargo_embargo.json
+++ b/crates/glam/cargo_embargo.json
@@ -2,8 +2,11 @@
"package": {
"glam": {
"device_supported": false,
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/glob/.android-checksum.json b/crates/glob/.android-checksum.json
index 81ffb2e..8d2f5b0 100644
--- a/crates/glob/.android-checksum.json
+++ b/crates/glob/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ae557f3c5767619683fb8e1984ad583a77abae31389f62f253a96fdfc63423d5","Android.bp":"762fed9f6a48885b941666fc80aea256e62ac19c5e6a307827353a8d0459625a","CHANGELOG.md":"7feee48475b592d2d959405781a99681a181ff9186aa2fd1205ed19090346d0b","Cargo.toml":"5dccc7bdbde6dcd53bbfb87bccffeb4ddea12ba7b237751b73488f29d1c1428a","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"92b39b23acc9ebdb746c462c9123bfcdff272fbc7186632f0f424d385fb69bdf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8f98d8cbf55a6dd30313b80844fb06971334a66fe1b86164044369d35f29f912","TEST_MAPPING":"3e7c963f7d46e40e4bc59cfad94f6b14b126a4cacbf15faa5da6435dfe7e70ea","cargo_embargo.json":"835449d98b03d5d6ff2bd412b91567eb90dc4f181fd463c1a03e27da48d5fc09","src/lib.rs":"b6eb28092e25512f3bac59134072b036ad34b546d8317ff49f16173b9a3025a6","tests/glob-std.rs":"0c22b6efd6add7f65e26502a10a4f1902709e98a56b6373ac4072ac8e86279b5","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ae557f3c5767619683fb8e1984ad583a77abae31389f62f253a96fdfc63423d5","Android.bp":"9e49b4c541c978fe8ef5454964bd59ee5732ebb8e8ab0978d68c88293d1a1ef3","CHANGELOG.md":"7feee48475b592d2d959405781a99681a181ff9186aa2fd1205ed19090346d0b","Cargo.toml":"5dccc7bdbde6dcd53bbfb87bccffeb4ddea12ba7b237751b73488f29d1c1428a","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"92b39b23acc9ebdb746c462c9123bfcdff272fbc7186632f0f424d385fb69bdf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8f98d8cbf55a6dd30313b80844fb06971334a66fe1b86164044369d35f29f912","TEST_MAPPING":"3e7c963f7d46e40e4bc59cfad94f6b14b126a4cacbf15faa5da6435dfe7e70ea","cargo_embargo.json":"8d9e863f6b6b31cd6424697ac76b9a8d8e0cbd1bb0b8a7205ab289d1e344e26f","src/lib.rs":"b6eb28092e25512f3bac59134072b036ad34b546d8317ff49f16173b9a3025a6","tests/glob-std.rs":"0c22b6efd6add7f65e26502a10a4f1902709e98a56b6373ac4072ac8e86279b5","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
diff --git a/crates/glob/Android.bp b/crates/glob/Android.bp
index 154f0cc..a267e77 100644
--- a/crates/glob/Android.bp
+++ b/crates/glob/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/glob/cargo_embargo.json b/crates/glob/cargo_embargo.json
index c9c14ac..7f7ac06 100644
--- a/crates/glob/cargo_embargo.json
+++ b/crates/glob/cargo_embargo.json
@@ -1,8 +1,11 @@
{
"package": {
"glob": {
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/googletest/.android-checksum.json b/crates/googletest/.android-checksum.json
index 774a9d6..da719dd 100644
--- a/crates/googletest/.android-checksum.json
+++ b/crates/googletest/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"410493270e72d4760c1e835f510b65d50a78811d6946a3f93170a161f8b9d815","Android.bp":"31cf3dbb287b6b5c5fd4dd46be662c4b64ca88577b495dc9436f8d5db5707bb0","Cargo.toml":"a194180b19517aeb9c05048610d5f7422c6e50113ebc55b5f381f06b22414b3d","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"8e573ebeca353ef9a3892bf4ba8ae4c0b0f781d737b2716ce2b791903a85540d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"440fe5145aa23165197219e0378cbb71cd7ca336fb1dc0fe53a3d5a2e3d4471d","cargo_embargo.json":"2b7db5752ae086bd42bc615742f3fe1183fff050dd0fe67aea0c4519d4b592d3","crate_docs.md":"86974c308ad2e035d0368179b32191c32672353273cfe5ea970687a97849b016","src/assertions.rs":"3f9defd623a7006b23d3963caffdf701b78c8cf0696a94ead1541e43698d3866","src/description.rs":"7bf3fec806182d8a011b46ca0dd7f14adcd17ece7fe81dc7770a232ecb21b21f","src/fixtures.rs":"b8ebce97930de9822eed6fa6e1d0aadf9e8eda61c989ba27644878444babe143","src/fmt.rs":"f6e89ce1eac6215301c185762f0ca5214efeda1fb431a9adfa29dafec6bc238e","src/internal/description_renderer.rs":"22f0dafd9d02a37483bbd689409f01b001184d30c095459b21c61cf90df071dd","src/internal/mod.rs":"bfaca36e81794979c6f7976e96a6ac8f7b09d0181ac8f44538d40a2e40d8453d","src/internal/test_outcome.rs":"e8a39aa3bc29d79e64ad42da4f22a18452b76171d28d14be3cbb0b822f517299","src/lib.rs":"109c5e2b09705cb4bd11330e10c69daf2523b01422f103db6c10353823f6fccb","src/matcher.rs":"e80fadb4a9939d190e1fe94570e9f50ed2359842505d7862e34136cd8f6ac55d","src/matcher_support/auto_eq.rs":"5a6d9607a884b9a21e0ec29a8b75a78e741448ac858b618506521eb67a2d255f","src/matcher_support/count_elements.rs":"0973e4f0f73ea1d92b8cf6559aa696d84ae27179765f93fa03acfbd239a447ca","src/matcher_support/edit_distance.rs":"83aadc058939cf5338038650b9edb85fdf2ecf6d90ac35656eda69d7f4715102","src/matcher_support/mod.rs":"fc213e3f665b23bf34f639dae133920fd17db0a5c673d4957f9cbb3d4e706d71","src/matcher_support/summarize_diff.rs":"6aafcc3b42872ce9a07e0d422816f4f9e62c470b028e36bcd577c140d5017888","src/matcher_support/zipped_iterator.rs":"2c022b163bb1defda1522df9ff6824c0db0044e9314cdd45dfe39e2e1e335b96","src/matchers/all_matcher.rs":"b9534e5d1657791b341b411989b5ceba03a48ad625afc208a4290c04a5a3c3a7","src/matchers/any_matcher.rs":"1b082cd64719aad9f01b3862ff87b20cb41ccd64c268f18ab67e9a5207f6ed0c","src/matchers/anything_matcher.rs":"1bcde76add015ff9edb69b6ea55eafd8d3e34b61f56efd146fad748652d974f3","src/matchers/bool_matcher.rs":"abe9fd9f0afa6b0276e62e45d19e6c030a3e9fe4e162506ad77a3a815062d3d0","src/matchers/char_count_matcher.rs":"93ffefefa301e1968cd0cb166e451fba1662d684a682f66229cebb3c01e78c16","src/matchers/conjunction_matcher.rs":"15761c0a4cbb2f97935088f58fc00b659f1a2c12f36a22958ac96c203e16e5f1","src/matchers/container_eq_matcher.rs":"03efddf8e882415f9734721c6fb4b507f60d376088594be98c684cb913caca0a","src/matchers/contains_matcher.rs":"012416f5634b0d1c72fb529983fc9a7d42f70d652bc786402853ec40f1675845","src/matchers/contains_regex_matcher.rs":"04aa3ec505c57ed5cebbcbd5ae8341d3e45ed0dd567ba401dc8e63f1c65aab8d","src/matchers/derefs_to_matcher.rs":"3d2f6870fcdc52c4619914a04dcf4d4bf94e28f23287f06091088e4a00512670","src/matchers/disjunction_matcher.rs":"193b85d9ba177af4592e40be36cc67bdb4d2d4ce561d9f9bdc8f8e196a11cc05","src/matchers/display_matcher.rs":"f6b7216ec2c6f6200c4493e874d73c19a921b65381f9dbf147c689454ed5c87d","src/matchers/each_matcher.rs":"5cd5d03983475db8c93ef89781e3ab3e68fad81fefd829eeedc96be94bbae4e9","src/matchers/elements_are_matcher.rs":"6e593c19c7ae1c60f5e8a811ac2a5a48edd21d72e788af69fe588fbfd6caf110","src/matchers/empty_matcher.rs":"e5dc9e0e7b2799b14590b2d93ffee056339b0befa9acaf4a17aa15799e8d5716","src/matchers/eq_matcher.rs":"59f3839dc3ba5928c784fbc72c79d90d41a23ac14b27de6d8f3d50eaa2cec866","src/matchers/err_matcher.rs":"eef9b9bdbe342903c4545d7696e52d7b06df6677a91a59274fc16999ee5f658e","src/matchers/field_matcher.rs":"db9c32306aad1010dfe9c6acc96acf867a22ff8324bf560ace44f680e07d174b","src/matchers/ge_matcher.rs":"6fb61cbfb8f3e81f71900df9b0420ae155c0a19591cc95ecb024481d9047299f","src/matchers/gt_matcher.rs":"9555f0c294def104eb738de55c63f012267375e4db269cf5ca60ff5ea8d56275","src/matchers/has_entry_matcher.rs":"20bf4c271ff1d3673393d6f8c00ccce4d1e0f1604a16055f0c46bc0e5b793ddd","src/matchers/is_encoded_string_matcher.rs":"f4b60009696d1396029d36ae187fcc3528a661e1b5c38479fac9f4e9e416dd4a","src/matchers/is_matcher.rs":"df8fc55cec747b9764bae05595a403dac253514a21fccd98ea7c46a83e541999","src/matchers/is_nan_matcher.rs":"111cf9e8aca5d709942909e41fa0f6578418bc890dfeba52f9102038c5633283","src/matchers/le_matcher.rs":"3e151e3d13f944d81620aca4311dd15b382dc575266638df09eeb0e66cc674e0","src/matchers/len_matcher.rs":"24adda42e1750d8bb49ffe12a3f431c6c173c27c313d973b7eea31dd616a1642","src/matchers/lt_matcher.rs":"ff7ce1397b713955d643debc6200dc0bd5bfc4f8252433ea1650f105886ae8ef","src/matchers/matches_pattern.rs":"5c36c3f0eecded409b7fb336013a84db00176f861b65f07dc82f207570feadba","src/matchers/matches_regex_matcher.rs":"ebd8e88cfeedf394bc2550137d67dc0e15759565d49f4e3ce2e7f59c9f24808d","src/matchers/mod.rs":"fa62f807cc57cc5ee784f630e75b7447079ff5ae7513e2f15086dd061428f2ad","src/matchers/near_matcher.rs":"1e009423fc9326a984558db4efaee53d5de4acb820ef475c72c4696ed074a99b","src/matchers/none_matcher.rs":"fa403c8c7868fb41005042dfd874d5d096c52590bdd252ec5be990225f36b6ff","src/matchers/not_matcher.rs":"c98ce0362a9d7ca308b3bed4b7853d7320b22478185d777cc09fd0c627010ea0","src/matchers/ok_matcher.rs":"cadab709d5c52f2219bf59118a0a29dba8614532ead56847490e489634e5d147","src/matchers/points_to_matcher.rs":"7e845a3fa699be23e917dd90bafe4d68bbdc8d7c3fc042ba689277e3f7c8ec4a","src/matchers/pointwise_matcher.rs":"ecccadc3baa9afeacc6242e41501b27cb1581dd1502aeb127ff1fbf52cc62338","src/matchers/predicate_matcher.rs":"b9d64d86e7ef292d57aa2a62bab7ccc64b0fec262fe0bd73d08924e203d784f5","src/matchers/property_matcher.rs":"1f4fda841361381145c2c96c56cc2d50f4af008c169bfec6615b77e4b6886722","src/matchers/result_of_matcher.rs":"0d0f66f4f5d4e76062e0d427e6f7349cceb7a574d3097eb5ac982f16c311f848","src/matchers/some_matcher.rs":"6179779b798ee60e4fca6ded4330206a398798656f3a6ecb00f44cb7e81d39d0","src/matchers/str_matcher.rs":"1aedc67db3a0d0197a32f52f583e40bc89a95cca1dd70513fadecc24a7733346","src/matchers/subset_of_matcher.rs":"1a463f7c277f31e7f07fb6ef3901ad4e6d3907cb8725f2d8ec4647a4e5a8ffd8","src/matchers/superset_of_matcher.rs":"5b40ed602c8aabd66136f932aac1f5c031b99e1d3c0adcf81a50b998e1bcfde7","src/matchers/tuple_matcher.rs":"6dc905a4ccf5748f855868d2f5819dd3b92d5a4934d2639a2a3e3f6e40050b70","src/matchers/unordered_elements_are_matcher.rs":"1b5508b3aacc164ad9276834579d75baa241504f26d591995c04e51959daad01","tests/all_matcher_test.rs":"a1347ab53409098f3ea78068a2523e2f6885c22d988d50131e32e1c21f96f7a9","tests/any_matcher_test.rs":"709ca1a20c82fcaf6be821d4b328506f17855e5ffbe21996f27d67c3ae96af04","tests/assertions_test.rs":"c6e952cfed6998b6ecc7d4260d7f6c3b3a29f031856e6e4683a223a0cdf392b4","tests/colorized_diff_test.rs":"a55aa6e001df9fdc8684136a59555bf0ec27ae84848aa4c9a3a31842934b30f7","tests/composition_test.rs":"51ff2e05d3b4dd06e246eb9e4cfb3c1997369ca9cbb34ca2a7d1d5599a9900c0","tests/elements_are_matcher_test.rs":"c98dd588a184b118afd71767b3f07dfc8299ad8a9147e0835e33906a43a41552","tests/field_matcher_test.rs":"634fe967a801bc077f477ccb38649580011c2957b0f37e06a73f5654b46a7211","tests/fmt_test.rs":"67c0032bc3b3d2e07aa74c87bc583c85cba477840f1782358776f5aa33c0e3f4","tests/lib.rs":"357bbd54eb3dc3af000e2f3eaecafdc0a59a1fca30445773b64872c050870657","tests/matches_pattern_test.rs":"390038894798d08feed6dd2209427d8729dd9029ab95dd685190bc24de28364a","tests/no_color_test.rs":"f7472284fc864d4654d4677fa44274825f9286f696228c59175ee6525a8a5343","tests/pointwise_matcher_test.rs":"159bc32c50b792e9c96327c970ea44ae895e842a5f92fe817ca4d8f1e344bbc2","tests/property_matcher_test.rs":"6f2afd05c0a55624c3ef6e0f30398cb49188690956351c9a2f2e6f428874f381","tests/proptest_integration_test.rs":"0f75081bd6bfd89b8a5e430238a9da78a2f13ce6ccc4e105e32705596e9c3a7f","tests/tuple_matcher_test.rs":"3cf3a362ec753ba2e0f48db6716f32d31521335ed66a2d27aef69a271f5a902a","tests/unordered_elements_are_matcher_test.rs":"38c4f8711a056284afa0d3af3ada3a216d1b58ace71b3d1d4b844277fca45217"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"410493270e72d4760c1e835f510b65d50a78811d6946a3f93170a161f8b9d815","Android.bp":"e06b2a42a03e870ea272e56ce3b617dafd3b865f08623983a7a8c2da8c054e70","Cargo.toml":"a194180b19517aeb9c05048610d5f7422c6e50113ebc55b5f381f06b22414b3d","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"8e573ebeca353ef9a3892bf4ba8ae4c0b0f781d737b2716ce2b791903a85540d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"440fe5145aa23165197219e0378cbb71cd7ca336fb1dc0fe53a3d5a2e3d4471d","cargo_embargo.json":"bd0b34efa88a998cb62968f77c646335cab4f55838aa3b208080360a049f4e14","crate_docs.md":"86974c308ad2e035d0368179b32191c32672353273cfe5ea970687a97849b016","src/assertions.rs":"3f9defd623a7006b23d3963caffdf701b78c8cf0696a94ead1541e43698d3866","src/description.rs":"7bf3fec806182d8a011b46ca0dd7f14adcd17ece7fe81dc7770a232ecb21b21f","src/fixtures.rs":"b8ebce97930de9822eed6fa6e1d0aadf9e8eda61c989ba27644878444babe143","src/fmt.rs":"f6e89ce1eac6215301c185762f0ca5214efeda1fb431a9adfa29dafec6bc238e","src/internal/description_renderer.rs":"22f0dafd9d02a37483bbd689409f01b001184d30c095459b21c61cf90df071dd","src/internal/mod.rs":"bfaca36e81794979c6f7976e96a6ac8f7b09d0181ac8f44538d40a2e40d8453d","src/internal/test_outcome.rs":"e8a39aa3bc29d79e64ad42da4f22a18452b76171d28d14be3cbb0b822f517299","src/lib.rs":"109c5e2b09705cb4bd11330e10c69daf2523b01422f103db6c10353823f6fccb","src/matcher.rs":"e80fadb4a9939d190e1fe94570e9f50ed2359842505d7862e34136cd8f6ac55d","src/matcher_support/auto_eq.rs":"5a6d9607a884b9a21e0ec29a8b75a78e741448ac858b618506521eb67a2d255f","src/matcher_support/count_elements.rs":"0973e4f0f73ea1d92b8cf6559aa696d84ae27179765f93fa03acfbd239a447ca","src/matcher_support/edit_distance.rs":"83aadc058939cf5338038650b9edb85fdf2ecf6d90ac35656eda69d7f4715102","src/matcher_support/mod.rs":"fc213e3f665b23bf34f639dae133920fd17db0a5c673d4957f9cbb3d4e706d71","src/matcher_support/summarize_diff.rs":"6aafcc3b42872ce9a07e0d422816f4f9e62c470b028e36bcd577c140d5017888","src/matcher_support/zipped_iterator.rs":"2c022b163bb1defda1522df9ff6824c0db0044e9314cdd45dfe39e2e1e335b96","src/matchers/all_matcher.rs":"b9534e5d1657791b341b411989b5ceba03a48ad625afc208a4290c04a5a3c3a7","src/matchers/any_matcher.rs":"1b082cd64719aad9f01b3862ff87b20cb41ccd64c268f18ab67e9a5207f6ed0c","src/matchers/anything_matcher.rs":"1bcde76add015ff9edb69b6ea55eafd8d3e34b61f56efd146fad748652d974f3","src/matchers/bool_matcher.rs":"abe9fd9f0afa6b0276e62e45d19e6c030a3e9fe4e162506ad77a3a815062d3d0","src/matchers/char_count_matcher.rs":"93ffefefa301e1968cd0cb166e451fba1662d684a682f66229cebb3c01e78c16","src/matchers/conjunction_matcher.rs":"15761c0a4cbb2f97935088f58fc00b659f1a2c12f36a22958ac96c203e16e5f1","src/matchers/container_eq_matcher.rs":"03efddf8e882415f9734721c6fb4b507f60d376088594be98c684cb913caca0a","src/matchers/contains_matcher.rs":"012416f5634b0d1c72fb529983fc9a7d42f70d652bc786402853ec40f1675845","src/matchers/contains_regex_matcher.rs":"04aa3ec505c57ed5cebbcbd5ae8341d3e45ed0dd567ba401dc8e63f1c65aab8d","src/matchers/derefs_to_matcher.rs":"3d2f6870fcdc52c4619914a04dcf4d4bf94e28f23287f06091088e4a00512670","src/matchers/disjunction_matcher.rs":"193b85d9ba177af4592e40be36cc67bdb4d2d4ce561d9f9bdc8f8e196a11cc05","src/matchers/display_matcher.rs":"f6b7216ec2c6f6200c4493e874d73c19a921b65381f9dbf147c689454ed5c87d","src/matchers/each_matcher.rs":"5cd5d03983475db8c93ef89781e3ab3e68fad81fefd829eeedc96be94bbae4e9","src/matchers/elements_are_matcher.rs":"6e593c19c7ae1c60f5e8a811ac2a5a48edd21d72e788af69fe588fbfd6caf110","src/matchers/empty_matcher.rs":"e5dc9e0e7b2799b14590b2d93ffee056339b0befa9acaf4a17aa15799e8d5716","src/matchers/eq_matcher.rs":"59f3839dc3ba5928c784fbc72c79d90d41a23ac14b27de6d8f3d50eaa2cec866","src/matchers/err_matcher.rs":"eef9b9bdbe342903c4545d7696e52d7b06df6677a91a59274fc16999ee5f658e","src/matchers/field_matcher.rs":"db9c32306aad1010dfe9c6acc96acf867a22ff8324bf560ace44f680e07d174b","src/matchers/ge_matcher.rs":"6fb61cbfb8f3e81f71900df9b0420ae155c0a19591cc95ecb024481d9047299f","src/matchers/gt_matcher.rs":"9555f0c294def104eb738de55c63f012267375e4db269cf5ca60ff5ea8d56275","src/matchers/has_entry_matcher.rs":"20bf4c271ff1d3673393d6f8c00ccce4d1e0f1604a16055f0c46bc0e5b793ddd","src/matchers/is_encoded_string_matcher.rs":"f4b60009696d1396029d36ae187fcc3528a661e1b5c38479fac9f4e9e416dd4a","src/matchers/is_matcher.rs":"df8fc55cec747b9764bae05595a403dac253514a21fccd98ea7c46a83e541999","src/matchers/is_nan_matcher.rs":"111cf9e8aca5d709942909e41fa0f6578418bc890dfeba52f9102038c5633283","src/matchers/le_matcher.rs":"3e151e3d13f944d81620aca4311dd15b382dc575266638df09eeb0e66cc674e0","src/matchers/len_matcher.rs":"24adda42e1750d8bb49ffe12a3f431c6c173c27c313d973b7eea31dd616a1642","src/matchers/lt_matcher.rs":"ff7ce1397b713955d643debc6200dc0bd5bfc4f8252433ea1650f105886ae8ef","src/matchers/matches_pattern.rs":"5c36c3f0eecded409b7fb336013a84db00176f861b65f07dc82f207570feadba","src/matchers/matches_regex_matcher.rs":"ebd8e88cfeedf394bc2550137d67dc0e15759565d49f4e3ce2e7f59c9f24808d","src/matchers/mod.rs":"fa62f807cc57cc5ee784f630e75b7447079ff5ae7513e2f15086dd061428f2ad","src/matchers/near_matcher.rs":"1e009423fc9326a984558db4efaee53d5de4acb820ef475c72c4696ed074a99b","src/matchers/none_matcher.rs":"fa403c8c7868fb41005042dfd874d5d096c52590bdd252ec5be990225f36b6ff","src/matchers/not_matcher.rs":"c98ce0362a9d7ca308b3bed4b7853d7320b22478185d777cc09fd0c627010ea0","src/matchers/ok_matcher.rs":"cadab709d5c52f2219bf59118a0a29dba8614532ead56847490e489634e5d147","src/matchers/points_to_matcher.rs":"7e845a3fa699be23e917dd90bafe4d68bbdc8d7c3fc042ba689277e3f7c8ec4a","src/matchers/pointwise_matcher.rs":"ecccadc3baa9afeacc6242e41501b27cb1581dd1502aeb127ff1fbf52cc62338","src/matchers/predicate_matcher.rs":"b9d64d86e7ef292d57aa2a62bab7ccc64b0fec262fe0bd73d08924e203d784f5","src/matchers/property_matcher.rs":"1f4fda841361381145c2c96c56cc2d50f4af008c169bfec6615b77e4b6886722","src/matchers/result_of_matcher.rs":"0d0f66f4f5d4e76062e0d427e6f7349cceb7a574d3097eb5ac982f16c311f848","src/matchers/some_matcher.rs":"6179779b798ee60e4fca6ded4330206a398798656f3a6ecb00f44cb7e81d39d0","src/matchers/str_matcher.rs":"1aedc67db3a0d0197a32f52f583e40bc89a95cca1dd70513fadecc24a7733346","src/matchers/subset_of_matcher.rs":"1a463f7c277f31e7f07fb6ef3901ad4e6d3907cb8725f2d8ec4647a4e5a8ffd8","src/matchers/superset_of_matcher.rs":"5b40ed602c8aabd66136f932aac1f5c031b99e1d3c0adcf81a50b998e1bcfde7","src/matchers/tuple_matcher.rs":"6dc905a4ccf5748f855868d2f5819dd3b92d5a4934d2639a2a3e3f6e40050b70","src/matchers/unordered_elements_are_matcher.rs":"1b5508b3aacc164ad9276834579d75baa241504f26d591995c04e51959daad01","tests/all_matcher_test.rs":"a1347ab53409098f3ea78068a2523e2f6885c22d988d50131e32e1c21f96f7a9","tests/any_matcher_test.rs":"709ca1a20c82fcaf6be821d4b328506f17855e5ffbe21996f27d67c3ae96af04","tests/assertions_test.rs":"c6e952cfed6998b6ecc7d4260d7f6c3b3a29f031856e6e4683a223a0cdf392b4","tests/colorized_diff_test.rs":"a55aa6e001df9fdc8684136a59555bf0ec27ae84848aa4c9a3a31842934b30f7","tests/composition_test.rs":"51ff2e05d3b4dd06e246eb9e4cfb3c1997369ca9cbb34ca2a7d1d5599a9900c0","tests/elements_are_matcher_test.rs":"c98dd588a184b118afd71767b3f07dfc8299ad8a9147e0835e33906a43a41552","tests/field_matcher_test.rs":"634fe967a801bc077f477ccb38649580011c2957b0f37e06a73f5654b46a7211","tests/fmt_test.rs":"67c0032bc3b3d2e07aa74c87bc583c85cba477840f1782358776f5aa33c0e3f4","tests/lib.rs":"357bbd54eb3dc3af000e2f3eaecafdc0a59a1fca30445773b64872c050870657","tests/matches_pattern_test.rs":"390038894798d08feed6dd2209427d8729dd9029ab95dd685190bc24de28364a","tests/no_color_test.rs":"f7472284fc864d4654d4677fa44274825f9286f696228c59175ee6525a8a5343","tests/pointwise_matcher_test.rs":"159bc32c50b792e9c96327c970ea44ae895e842a5f92fe817ca4d8f1e344bbc2","tests/property_matcher_test.rs":"6f2afd05c0a55624c3ef6e0f30398cb49188690956351c9a2f2e6f428874f381","tests/proptest_integration_test.rs":"0f75081bd6bfd89b8a5e430238a9da78a2f13ce6ccc4e105e32705596e9c3a7f","tests/tuple_matcher_test.rs":"3cf3a362ec753ba2e0f48db6716f32d31521335ed66a2d27aef69a271f5a902a","tests/unordered_elements_are_matcher_test.rs":"38c4f8711a056284afa0d3af3ada3a216d1b58ace71b3d1d4b844277fca45217"}}
\ No newline at end of file
diff --git a/crates/googletest/Android.bp b/crates/googletest/Android.bp
index 4ebc3a8..f40cc53 100644
--- a/crates/googletest/Android.bp
+++ b/crates/googletest/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/googletest/cargo_embargo.json b/crates/googletest/cargo_embargo.json
index ccea3aa..291d6b5 100644
--- a/crates/googletest/cargo_embargo.json
+++ b/crates/googletest/cargo_embargo.json
@@ -1,11 +1,14 @@
{
"package": {
"googletest": {
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
"module_name_overrides": {
"libgoogletest": "libgoogletest_rust"
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/googletest_macro/.android-checksum.json b/crates/googletest_macro/.android-checksum.json
index 2376e93..d925f50 100644
--- a/crates/googletest_macro/.android-checksum.json
+++ b/crates/googletest_macro/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0ffe72e50543610013144197d68d7ee13cd81639451ffa4a11684bce39826768","Android.bp":"607b20a288c9ea0f9557cabd1bb9ae7a918274ebdff7d2bea92491be6634da96","Cargo.toml":"c58a9ccd74e57d5c760f10ae57fe24b60c6ddf1a5a9bfc4f0334ed20b26655a5","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"e0dbcdca1cacba09da740861f4e8aa0b754c93f1d8809b17d816e2739a086904","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b90028cf2a4ceb6a09d04555ce922026b0b9e6b04cd26305fe8b2ca45a6df3e1","cargo_embargo.json":"9f157cc2ae6f4ceef3edf23e5ef948dbeeb7f4169f1e628797469eb2a7aadd54","src/lib.rs":"f8f66d80bf1879fb0b398fc642d9817c6278ca606e2e6cab08958b7d94f66ee2","src/verify_pred.rs":"2d282090a8a5fdbcb202c31f8f425df85106f0682cce140b7edde1aca09ed532"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0ffe72e50543610013144197d68d7ee13cd81639451ffa4a11684bce39826768","Android.bp":"4d9efbd0125647bed4efd0e5ecc92a60abf8efc77ccc8492f939474546baf63d","Cargo.toml":"c58a9ccd74e57d5c760f10ae57fe24b60c6ddf1a5a9bfc4f0334ed20b26655a5","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"e0dbcdca1cacba09da740861f4e8aa0b754c93f1d8809b17d816e2739a086904","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b90028cf2a4ceb6a09d04555ce922026b0b9e6b04cd26305fe8b2ca45a6df3e1","cargo_embargo.json":"bc9c6223a287ab2a0d5d3273953cf0d07f9fa79ade3417360302f7e4d72b00c2","src/lib.rs":"f8f66d80bf1879fb0b398fc642d9817c6278ca606e2e6cab08958b7d94f66ee2","src/verify_pred.rs":"2d282090a8a5fdbcb202c31f8f425df85106f0682cce140b7edde1aca09ed532"}}
\ No newline at end of file
diff --git a/crates/googletest_macro/Android.bp b/crates/googletest_macro/Android.bp
index 55d75ca..d3b4033 100644
--- a/crates/googletest_macro/Android.bp
+++ b/crates/googletest_macro/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/googletest_macro/cargo_embargo.json b/crates/googletest_macro/cargo_embargo.json
index 5d87e2f..376b870 100644
--- a/crates/googletest_macro/cargo_embargo.json
+++ b/crates/googletest_macro/cargo_embargo.json
@@ -1,8 +1,11 @@
{
"package": {
"googletest_macro": {
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/gpio-cdev/.android-checksum.json b/crates/gpio-cdev/.android-checksum.json
index 4a5978f..37613ea 100644
--- a/crates/gpio-cdev/.android-checksum.json
+++ b/crates/gpio-cdev/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f73d3a30e83fa9df13cf85e7d456c51f5a04268a7e31fbaf1a4169b1d1829876","Android.bp":"bff9015c7bb02045777c066414c6d5d48e53b608f53cd4d5908449f58aa83662","CHANGELOG.md":"462188366cc03962e45916a3ed32c2205f96d2f8cd0c312861b2f9d05a37e483","CODE_OF_CONDUCT.md":"bbfe2034baadc9116216dc7e83b039eb7950fdc394075733c8d1f53e5806b3f6","Cargo.lock":"cfee7bf1df4150eb7aa7e650481d716aa6fcdb6eb3a6112f9f70fa718e674d95","Cargo.toml":"3a384fbb538e06cf9bee5df1ae9c52e34cf17d1174f8d9c549bf990c79d9bc63","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1ebbb135835650e0c7e9a41829fee2173899e49958c6b5dab84cba1158602bd3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2816c83514125069eac42dc8b4fa7f405b79ca634d9a8798760c1b9b2c7a7f79","cargo_embargo.json":"ead9a3779b822eb4697fce15025a2e571bf09ab44b8e15eee95b7f6ae1181ec2","examples/async_tokio.rs":"02572083e6adb41c8e84b6d9b5db441f99c2e222cdc00256a30bd86cb6535e3f","examples/blinky.rs":"7eec82c2b209d5e2c93a16261f01566ccd43bc75c76d971f11f8576f6b20370d","examples/driveoutput.rs":"2c0e4bcd26aa5db5f868517365287e12f861e1e52efc37c0e6244cce0ff8e07c","examples/gpioevents.rs":"f8baa9c53d4681a3752fafc70a6c9984568b183bc2694d6a81d5cfa0119f63c9","examples/lsgpio.rs":"908592a7bc6650266eab709d6c5a9eba205df2fbb1eb87d577fd5c1582daf8c0","examples/monitor.rs":"045b5b4861701745e7c123c7a1f4a23933af9199c71ed72db1fc64f8908c8116","examples/multioutput.rs":"145b8385828918a28e92f87620e9c0ec918a3af665ae7067a823d74a1665fd90","examples/multiread.rs":"407bf50e8dc717d8693f1985d76340b824889f7ed07812b61b91250b5ecc083e","examples/readall.rs":"d2ce2f8bc1129a899078e0bba8f312c07967ec547c925b164174fb0b7e1d0450","examples/readinput.rs":"2f9d7f37e9b4d596e30179d2d0ece7b2ae5b4978ae9af7005acc78ef00be304b","examples/tit_for_tat.rs":"066c6a4ed0f429125f908c616a44631deed356e3c0b7b596d28aefccd4cd0f03","src/async_tokio.rs":"05796b23d6d155abe0f1014f561f6ab34bf3f91ea623f09835f7fa39dbd4498a","src/errors.rs":"168a02c22ccc98cb4f24aa2d0338a7853b2fe50bcadefbce42112b307ba0f4cc","src/ffi.rs":"0ff7327a4abb955679ea14e219a0dd63814f42160c94862f2bc9e2c4717c538d","src/lib.rs":"ec374267b3e9b08e9a20c6c638b59dc0fa81f17afdba7f0de7b86d90a5ede128"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f73d3a30e83fa9df13cf85e7d456c51f5a04268a7e31fbaf1a4169b1d1829876","Android.bp":"39ce1f9e9e3f5131633209b847dcbf48a34aaeac53fb891168322b2c8bcc23d8","CHANGELOG.md":"462188366cc03962e45916a3ed32c2205f96d2f8cd0c312861b2f9d05a37e483","CODE_OF_CONDUCT.md":"bbfe2034baadc9116216dc7e83b039eb7950fdc394075733c8d1f53e5806b3f6","Cargo.lock":"cfee7bf1df4150eb7aa7e650481d716aa6fcdb6eb3a6112f9f70fa718e674d95","Cargo.toml":"3a384fbb538e06cf9bee5df1ae9c52e34cf17d1174f8d9c549bf990c79d9bc63","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1ebbb135835650e0c7e9a41829fee2173899e49958c6b5dab84cba1158602bd3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2816c83514125069eac42dc8b4fa7f405b79ca634d9a8798760c1b9b2c7a7f79","cargo_embargo.json":"22c4091522a1f226b93abec9d5405f82b0367124a6a3f5e451c2052cf7b8572f","examples/async_tokio.rs":"02572083e6adb41c8e84b6d9b5db441f99c2e222cdc00256a30bd86cb6535e3f","examples/blinky.rs":"7eec82c2b209d5e2c93a16261f01566ccd43bc75c76d971f11f8576f6b20370d","examples/driveoutput.rs":"2c0e4bcd26aa5db5f868517365287e12f861e1e52efc37c0e6244cce0ff8e07c","examples/gpioevents.rs":"f8baa9c53d4681a3752fafc70a6c9984568b183bc2694d6a81d5cfa0119f63c9","examples/lsgpio.rs":"908592a7bc6650266eab709d6c5a9eba205df2fbb1eb87d577fd5c1582daf8c0","examples/monitor.rs":"045b5b4861701745e7c123c7a1f4a23933af9199c71ed72db1fc64f8908c8116","examples/multioutput.rs":"145b8385828918a28e92f87620e9c0ec918a3af665ae7067a823d74a1665fd90","examples/multiread.rs":"407bf50e8dc717d8693f1985d76340b824889f7ed07812b61b91250b5ecc083e","examples/readall.rs":"d2ce2f8bc1129a899078e0bba8f312c07967ec547c925b164174fb0b7e1d0450","examples/readinput.rs":"2f9d7f37e9b4d596e30179d2d0ece7b2ae5b4978ae9af7005acc78ef00be304b","examples/tit_for_tat.rs":"066c6a4ed0f429125f908c616a44631deed356e3c0b7b596d28aefccd4cd0f03","src/async_tokio.rs":"05796b23d6d155abe0f1014f561f6ab34bf3f91ea623f09835f7fa39dbd4498a","src/errors.rs":"168a02c22ccc98cb4f24aa2d0338a7853b2fe50bcadefbce42112b307ba0f4cc","src/ffi.rs":"0ff7327a4abb955679ea14e219a0dd63814f42160c94862f2bc9e2c4717c538d","src/lib.rs":"ec374267b3e9b08e9a20c6c638b59dc0fa81f17afdba7f0de7b86d90a5ede128"}}
\ No newline at end of file
diff --git a/crates/gpio-cdev/Android.bp b/crates/gpio-cdev/Android.bp
index 5eb15a2..5a0e017 100644
--- a/crates/gpio-cdev/Android.bp
+++ b/crates/gpio-cdev/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/gpio-cdev/cargo_embargo.json b/crates/gpio-cdev/cargo_embargo.json
index 7cf7116..631d330 100644
--- a/crates/gpio-cdev/cargo_embargo.json
+++ b/crates/gpio-cdev/cargo_embargo.json
@@ -1,8 +1,11 @@
{
"package": {
"gpio-cdev": {
- "license_text": ["LICENSE"]
+ "license_text": [
+ "LICENSE"
+ ]
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/grid/.android-checksum.json b/crates/grid/.android-checksum.json
index 6a36c50..349c305 100644
--- a/crates/grid/.android-checksum.json
+++ b/crates/grid/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8b0d4f770e4717dfadc316449d56be8f25455b240c705988ebf48c4f248e4fc3","Android.bp":"bb317acfae50c8113d8c01c7b42cf1996fbf79e893a6a849bdd4e3134c912dff","Cargo.toml":"dd5e534a80da98507c3e49ac93ea203787a77d75b546be06dce55ccafa6e2c88","LICENSE":"d59b3f573f9e3f7318d9c24f042f710e1184bc5522cef96be7954dc6ba77c927","METADATA":"956d838673e3619c2126e1eb50588b65839984b2fa822aa952fa2906ace3317b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"349942b55ac9eaf352b1ccaf8a67b15fa9d953fffc9ab08348af57c7f7654476","benches/benches.rs":"acb1661440bbfec83b267be4fa8d1a8de22dd2c2467ff01b587891a9fc3674d2","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/lib.rs":"99633cf7f4fb283046c49513c7ba451cf08374d506dc1df5d1ebc38d117ca454"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8b0d4f770e4717dfadc316449d56be8f25455b240c705988ebf48c4f248e4fc3","Android.bp":"b3bb3b387da902ff3ffcc8cd063cc3d2c96416fbbb4c4cbf60e01963d42e98ec","Cargo.toml":"dd5e534a80da98507c3e49ac93ea203787a77d75b546be06dce55ccafa6e2c88","LICENSE":"d59b3f573f9e3f7318d9c24f042f710e1184bc5522cef96be7954dc6ba77c927","METADATA":"956d838673e3619c2126e1eb50588b65839984b2fa822aa952fa2906ace3317b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"349942b55ac9eaf352b1ccaf8a67b15fa9d953fffc9ab08348af57c7f7654476","benches/benches.rs":"acb1661440bbfec83b267be4fa8d1a8de22dd2c2467ff01b587891a9fc3674d2","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/lib.rs":"99633cf7f4fb283046c49513c7ba451cf08374d506dc1df5d1ebc38d117ca454"}}
\ No newline at end of file
diff --git a/crates/grid/Android.bp b/crates/grid/Android.bp
index bb1aa23..09edb9c 100644
--- a/crates/grid/Android.bp
+++ b/crates/grid/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/grid/cargo_embargo.json b/crates/grid/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/grid/cargo_embargo.json
+++ b/crates/grid/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/grpcio-compiler/.android-checksum.json b/crates/grpcio-compiler/.android-checksum.json
index 3f85a80..d75ca6c 100644
--- a/crates/grpcio-compiler/.android-checksum.json
+++ b/crates/grpcio-compiler/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"506f0096fd47ba609a149940f3f07f252861795c018b6278ccb400ad075ccbbd","Android.bp":"711503901a156feea1a559bd18159ac692a5a57b6eb26786c9ab2368c50263bb","Cargo.lock":"d73fc9d27200f9c35210692485dbf28be10ca027064a5c7c6b47685ee7075ad8","Cargo.toml":"9da1a4d38f791be89b526a513828bdc342c0e596037e335948d4374cd4016c9a","LICENSE":"1dfa1d9d2bcb8b790a7810defdebbc6abf2566ecb60be8283b45c267d1c4e714","METADATA":"3435229fd1204895542b316c71317932bb6d6d09b96664f6cc3ef326dbefe422","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"11ce5ec43fb59dc7f5f47ce3b00c0039c4eb96fa30f4072b4b443f3fb28ea957","cargo_embargo.json":"d7044dcebf0373fd445d2944fc482a11b339bff6603e46ec45408bf359b82111","patches/LICENSE.patch":"1b9a3e2249d8215bce13202ed92e6f50d1c72cc02d7c21366085c83a270eeed3","src/bin/grpc_rust_plugin.rs":"fd11b8f6eb4723d245a4591cfbb5f5ca971d179a6988080c876fef8325aca3cc","src/bin/grpc_rust_prost.rs":"09926f1849fb63c96485afa9cad1c2cf9d5db2140d65d17cd0f021978b7f2641","src/codegen.rs":"348436d1e0100290b0e10d1314599b6840bce9a54b6930d7f77592670ab8b896","src/lib.rs":"852ca80247303e67431571fdba3bb5f6b45deb9b666d7d9c5f845892b2e8a517","src/prost_codegen.rs":"03078b71ecd3d6a76fbbecad04e0367f24d191f7ec59d593fe32b71364352127","src/util.rs":"e1cc2a718fd258a609bfa120a06cbcb9e36c3b5315fea1461f4c111a15aff131"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"506f0096fd47ba609a149940f3f07f252861795c018b6278ccb400ad075ccbbd","Android.bp":"711503901a156feea1a559bd18159ac692a5a57b6eb26786c9ab2368c50263bb","Cargo.lock":"d73fc9d27200f9c35210692485dbf28be10ca027064a5c7c6b47685ee7075ad8","Cargo.toml":"9da1a4d38f791be89b526a513828bdc342c0e596037e335948d4374cd4016c9a","LICENSE":"1dfa1d9d2bcb8b790a7810defdebbc6abf2566ecb60be8283b45c267d1c4e714","METADATA":"3435229fd1204895542b316c71317932bb6d6d09b96664f6cc3ef326dbefe422","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"11ce5ec43fb59dc7f5f47ce3b00c0039c4eb96fa30f4072b4b443f3fb28ea957","cargo_embargo.json":"1820d8ce2ec963ad8a39b7d27485772d10ff051cc3669b7fe8a4119f70a3d54d","patches/LICENSE.patch":"1b9a3e2249d8215bce13202ed92e6f50d1c72cc02d7c21366085c83a270eeed3","src/bin/grpc_rust_plugin.rs":"fd11b8f6eb4723d245a4591cfbb5f5ca971d179a6988080c876fef8325aca3cc","src/bin/grpc_rust_prost.rs":"09926f1849fb63c96485afa9cad1c2cf9d5db2140d65d17cd0f021978b7f2641","src/codegen.rs":"348436d1e0100290b0e10d1314599b6840bce9a54b6930d7f77592670ab8b896","src/lib.rs":"852ca80247303e67431571fdba3bb5f6b45deb9b666d7d9c5f845892b2e8a517","src/prost_codegen.rs":"03078b71ecd3d6a76fbbecad04e0367f24d191f7ec59d593fe32b71364352127","src/util.rs":"e1cc2a718fd258a609bfa120a06cbcb9e36c3b5315fea1461f4c111a15aff131"}}
\ No newline at end of file
diff --git a/crates/grpcio-compiler/cargo_embargo.json b/crates/grpcio-compiler/cargo_embargo.json
index d5ca5c7..8d5b0de 100644
--- a/crates/grpcio-compiler/cargo_embargo.json
+++ b/crates/grpcio-compiler/cargo_embargo.json
@@ -7,5 +7,6 @@
"device_supported": false
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/heck/.android-checksum.json b/crates/heck/.android-checksum.json
index db86888..aa6db4c 100644
--- a/crates/heck/.android-checksum.json
+++ b/crates/heck/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1302745d76c5f5fee4c59feac4302d338c5f2e897d4f775e6a823659f23a534e","Android.bp":"f3072f0fa671efaf228afd62e11fff440836cbcbc444798dfb3e5c812632a6bf","CHANGELOG.md":"ec7a711d35dfb9ebab67fd25055f12d2c0d0393d63a4efe03673ca511e91a9e1","Cargo.toml":"4ea736e28e34f8f33ad44eba397dbea14fed13ed51fb1027c2141ea62e81bad5","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"ac7ea5052404c3e06fbee974b9ad71d5268b5e70de29cf71481329018d5c95cd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7874857d8da5c1f393065dca691cb4029e5b9127ea057dd3355a1d2a16ad7f8a","TEST_MAPPING":"be0555eea9f9c69d388cb5bf453c2a6f9d1ec093cb2fed6e3046811fd384a107","cargo_embargo.json":"3c1e1d20399b03bdf55f18d6015a4094345e1520ee0c54e21b2c4c0f8cbb7536","src/kebab.rs":"d5b74f0511cce97ac51641211d7b9956ed7d9b6fbf2ae71b814c6016b9391d42","src/lib.rs":"7be0bc361a2c6fa2b0f929d67d98ec494aa4c7764bcd1cb2f4b467554476868e","src/lower_camel.rs":"77c6ac9eea5c8c81a2999754800b3c200f1b44491a800c7f76d4718e136ebeda","src/shouty_kebab.rs":"b47196c2b0030d7b5be1545bd89152fed56a239e5bf7c5b202c3f467bfaacf02","src/shouty_snake.rs":"0a752565c0c57c98db9d69b0274fd3b1f30ec577f0ede84c2760f820804e5890","src/snake.rs":"9e7e54ba7d9962a9c5775e43bc5405dc325026fd4e0f26b5d744a21165a8370e","src/title.rs":"0813a1959a835242cd48a00213b2c258a57c40d3c7e75768e147a0c754d7b472","src/train.rs":"2e164df47756ee5d9fbdcd3c704f9d78b6d6bb50a84442b634a20bf414b63a5d","src/upper_camel.rs":"47930c79916168a0fdc8dcb2ef4e72c16f479b0daf4135ba9e02f9118a7fa13a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1302745d76c5f5fee4c59feac4302d338c5f2e897d4f775e6a823659f23a534e","Android.bp":"15b92d550a51d5eaf58912f41bb6082569b992dbe78696861c90632547d46d48","CHANGELOG.md":"ec7a711d35dfb9ebab67fd25055f12d2c0d0393d63a4efe03673ca511e91a9e1","Cargo.toml":"4ea736e28e34f8f33ad44eba397dbea14fed13ed51fb1027c2141ea62e81bad5","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"ac7ea5052404c3e06fbee974b9ad71d5268b5e70de29cf71481329018d5c95cd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7874857d8da5c1f393065dca691cb4029e5b9127ea057dd3355a1d2a16ad7f8a","TEST_MAPPING":"be0555eea9f9c69d388cb5bf453c2a6f9d1ec093cb2fed6e3046811fd384a107","cargo_embargo.json":"50e8e8ab3603fba8f92d10fef7134328fbcff2eb41ec44050567f63bcbd82c49","src/kebab.rs":"d5b74f0511cce97ac51641211d7b9956ed7d9b6fbf2ae71b814c6016b9391d42","src/lib.rs":"7be0bc361a2c6fa2b0f929d67d98ec494aa4c7764bcd1cb2f4b467554476868e","src/lower_camel.rs":"77c6ac9eea5c8c81a2999754800b3c200f1b44491a800c7f76d4718e136ebeda","src/shouty_kebab.rs":"b47196c2b0030d7b5be1545bd89152fed56a239e5bf7c5b202c3f467bfaacf02","src/shouty_snake.rs":"0a752565c0c57c98db9d69b0274fd3b1f30ec577f0ede84c2760f820804e5890","src/snake.rs":"9e7e54ba7d9962a9c5775e43bc5405dc325026fd4e0f26b5d744a21165a8370e","src/title.rs":"0813a1959a835242cd48a00213b2c258a57c40d3c7e75768e147a0c754d7b472","src/train.rs":"2e164df47756ee5d9fbdcd3c704f9d78b6d6bb50a84442b634a20bf414b63a5d","src/upper_camel.rs":"47930c79916168a0fdc8dcb2ef4e72c16f479b0daf4135ba9e02f9118a7fa13a"}}
\ No newline at end of file
diff --git a/crates/heck/Android.bp b/crates/heck/Android.bp
index 83d8752..d220f23 100644
--- a/crates/heck/Android.bp
+++ b/crates/heck/Android.bp
@@ -42,4 +42,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/heck/cargo_embargo.json b/crates/heck/cargo_embargo.json
index 246281d..1498c29 100644
--- a/crates/heck/cargo_embargo.json
+++ b/crates/heck/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"tests": true,
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/home/.android-checksum.json b/crates/home/.android-checksum.json
new file mode 100644
index 0000000..75ede9e
--- /dev/null
+++ b/crates/home/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"4df38aeec7f48aa6fa7bb4a0845880ea892ae9f605c24b4efdeb198aa6d528f6","Android.bp":"7e5b6a83de4233d15002eddc636d2c15eafe450d573bab78cda3ec47d9ca82b2","Cargo.toml":"307f002ca1b1d86264d4777082288ce4812671dc0530c7324377c6c926278d09","LICENSE":"73e842a46e7a5996ac314beb59dfe0ab84424a632a6772406eda5175bcce7bdd","LICENSE-APACHE":"73e842a46e7a5996ac314beb59dfe0ab84424a632a6772406eda5175bcce7bdd","METADATA":"6eb4c07e935fa8c3ee6b55c4e25176ab20fd15ebadadd2d306ab4ac3975621ac","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a3f329903a5a8cdaa2f386f4fe1b05435f2416f81b75bb2b9bc54883a92ef53e","cargo_embargo.json":"9a4b9e47683e1a6fc764b578f222c6271932aeb74af7bf217d239d47d3908f30","src/env.rs":"a1ba566a44992a99ba2375862cfc606ab9e29cb037ba8783f22f42052a611507","src/lib.rs":"e1899d2ac3ee384cc879b4fd08fc7cdb665928b450bdac8da264fd47a78b7d36","src/windows.rs":"92a7343d271a17aaae87b3c6e60a53051366288ba0a76a1026d0fa8b7f1e6471"}}
\ No newline at end of file
diff --git a/crates/home/.cargo-checksum.json b/crates/home/.cargo-checksum.json
new file mode 100644
index 0000000..8b1d7c8
--- /dev/null
+++ b/crates/home/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"0b55b275c612495a1c4b5aff7a58703d3b1dc1ef048dc37cb8b2dbccf2b8cc0b","LICENSE-APACHE":"8ada45cd9f843acf64e4722ae262c622a2b3b3007c7310ef36ac1061a30f6adb","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"843c676d53b4a3bbed7284339a334b24459871ce03169d59a3c9b601efa65220","src/env.rs":"7d4d59640e66f75f7e2fd36708ce2f893f27dddc2add8b5bbccae92d5d2d6594","src/lib.rs":"8fe4f6400b7a63fc6f807b01d006cb323bd4643a64ca58e7de7049e91fd6d2c4","src/windows.rs":"7111ed6c5a165a528d18b035d6a5341be774b6a4b2ddd766e3ab0d1772daa40e"},"package":"589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"}
\ No newline at end of file
diff --git a/crates/home/Android.bp b/crates/home/Android.bp
new file mode 100644
index 0000000..5ab8021
--- /dev/null
+++ b/crates/home/Android.bp
@@ -0,0 +1,31 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_home_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_home_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libhome",
+ host_supported: true,
+ crate_name: "home",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.5.11",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/home/Cargo.toml b/crates/home/Cargo.toml
new file mode 100644
index 0000000..dec1b26
--- /dev/null
+++ b/crates/home/Cargo.toml
@@ -0,0 +1,69 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "home"
+version = "0.5.11"
+authors = ["Brian Anderson <[email protected]>"]
+build = false
+include = [
+ "/src",
+ "/Cargo.toml",
+ "/CHANGELOG",
+ "/LICENSE-*",
+ "/README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Shared definitions of home directories."
+homepage = "https://github.com/rust-lang/cargo"
+documentation = "https://docs.rs/home"
+readme = "README.md"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/rust-lang/cargo"
+
+[lib]
+name = "home"
+path = "src/lib.rs"
+
+[target."cfg(windows)".dependencies.windows-sys]
+version = "0.59"
+features = [
+ "Win32_Foundation",
+ "Win32_UI_Shell",
+ "Win32_System_Com",
+]
+
+[lints.clippy]
+dbg_macro = "warn"
+disallowed_methods = "warn"
+print_stderr = "warn"
+print_stdout = "warn"
+self_named_module_files = "warn"
+
+[lints.clippy.all]
+level = "allow"
+priority = -2
+
+[lints.clippy.correctness]
+level = "warn"
+priority = -1
+
+[lints.rust]
+rust_2018_idioms = "warn"
+
+[lints.rustdoc]
+private_intra_doc_links = "allow"
diff --git a/crates/home/LICENSE b/crates/home/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/home/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/home/LICENSE-APACHE b/crates/home/LICENSE-APACHE
new file mode 100644
index 0000000..c98d27d
--- /dev/null
+++ b/crates/home/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ https://www.apache.org/licenses/LICENSE-2.0
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/crates/home/METADATA b/crates/home/METADATA
new file mode 100644
index 0000000..a8e68ba
--- /dev/null
+++ b/crates/home/METADATA
@@ -0,0 +1,17 @@
+name: "home"
+description: "Shared definitions of home directories."
+third_party {
+ version: "0.5.11"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 19
+ }
+ homepage: "https://crates.io/crates/home"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/home/home-0.5.11.crate"
+ version: "0.5.11"
+ }
+}
diff --git a/crates/home/MODULE_LICENSE_APACHE2 b/crates/home/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/home/MODULE_LICENSE_APACHE2
diff --git a/crates/home/README.md b/crates/home/README.md
new file mode 100644
index 0000000..47f408a
--- /dev/null
+++ b/crates/home/README.md
@@ -0,0 +1,38 @@
+[](https://docs.rs/home)
+[](https://crates.io/crates/home)
+
+Canonical definitions of `home_dir`, `cargo_home`, and `rustup_home`.
+
+This provides the definition of `home_dir` used by Cargo and rustup,
+as well functions to find the correct value of `CARGO_HOME` and
+`RUSTUP_HOME`.
+
+The definition of [`home_dir`] provided by the standard library is
+incorrect because it considers the `HOME` environment variable on
+Windows. This causes surprising situations where a Rust program will
+behave differently depending on whether it is run under a Unix
+emulation environment like Cygwin or MinGW. Neither Cargo nor rustup
+use the standard library's definition - they use the definition here.
+
+**Note:** This has been fixed in Rust 1.85 to no longer use the `HOME`
+environment variable on Windows. If you are still using this crate for the
+purpose of getting a home directory, you are strongly encouraged to switch to
+using the standard library's [`home_dir`] instead. It is planned to have the
+deprecation notice removed in 1.86.
+
+This crate further provides two functions, `cargo_home` and
+`rustup_home`, which are the canonical way to determine the location
+that Cargo and rustup store their data.
+
+See [rust-lang/rust#43321].
+
+> This crate is maintained by the Cargo team, primarily for use by Cargo and Rustup
+> and not intended for external use. This
+> crate may make major changes to its APIs or be deprecated without warning.
+
+[rust-lang/rust#43321]: https://github.com/rust-lang/rust/issues/43321
+[`home_dir`]: https://doc.rust-lang.org/nightly/std/env/fn.home_dir.html
+
+## License
+
+MIT OR Apache-2.0
diff --git a/crates/home/cargo_embargo.json b/crates/home/cargo_embargo.json
new file mode 100644
index 0000000..8f777be
--- /dev/null
+++ b/crates/home/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
diff --git a/crates/home/src/env.rs b/crates/home/src/env.rs
new file mode 100644
index 0000000..f5a6a22
--- /dev/null
+++ b/crates/home/src/env.rs
@@ -0,0 +1,114 @@
+//! Lower-level utilities for mocking the process environment.
+
+use std::{
+ ffi::OsString,
+ io,
+ path::{Path, PathBuf},
+};
+
+/// Permits parameterizing the home functions via the _from variants - used for
+/// in-process unit testing by rustup.
+pub trait Env {
+ /// Return the path to the users home dir, or None if any error occurs:
+ /// see `home_inner`.
+ fn home_dir(&self) -> Option<PathBuf>;
+ /// Return the current working directory.
+ fn current_dir(&self) -> io::Result<PathBuf>;
+ /// Get an environment variable, as per `std::env::var_os`.
+ fn var_os(&self, key: &str) -> Option<OsString>;
+}
+
+/// Implements Env for the OS context, both Unix style and Windows.
+///
+/// This is trait permits in-process testing by providing a control point to
+/// allow in-process divergence on what is normally process wide state.
+///
+/// Implementations should be provided by whatever testing framework the caller
+/// is using. Code that is not performing in-process threaded testing requiring
+/// isolated rustup/cargo directories does not need this trait or the _from
+/// functions.
+pub struct OsEnv;
+impl Env for OsEnv {
+ fn home_dir(&self) -> Option<PathBuf> {
+ crate::home_dir_inner()
+ }
+ fn current_dir(&self) -> io::Result<PathBuf> {
+ std::env::current_dir()
+ }
+ fn var_os(&self, key: &str) -> Option<OsString> {
+ std::env::var_os(key)
+ }
+}
+
+pub const OS_ENV: OsEnv = OsEnv {};
+
+/// Returns the path of the current user's home directory from [`Env::home_dir`].
+pub fn home_dir_with_env(env: &dyn Env) -> Option<PathBuf> {
+ env.home_dir()
+}
+
+/// Variant of `cargo_home` where the environment source is parameterized.
+///
+/// This is
+/// specifically to support in-process testing scenarios as environment
+/// variables and user home metadata are normally process global state. See the
+/// [`Env`] trait.
+pub fn cargo_home_with_env(env: &dyn Env) -> io::Result<PathBuf> {
+ let cwd = env.current_dir()?;
+ cargo_home_with_cwd_env(env, &cwd)
+}
+
+/// Variant of `cargo_home_with_cwd` where the environment source is
+/// parameterized.
+///
+/// This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the `OsEnv` trait.
+pub fn cargo_home_with_cwd_env(env: &dyn Env, cwd: &Path) -> io::Result<PathBuf> {
+ match env.var_os("CARGO_HOME").filter(|h| !h.is_empty()) {
+ Some(home) => {
+ let home = PathBuf::from(home);
+ if home.is_absolute() {
+ Ok(home)
+ } else {
+ Ok(cwd.join(&home))
+ }
+ }
+ _ => home_dir_with_env(env)
+ .map(|p| p.join(".cargo"))
+ .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find cargo home dir")),
+ }
+}
+
+/// Variant of `cargo_home_with_cwd` where the environment source is
+/// parameterized.
+///
+/// This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the `OsEnv` trait.
+pub fn rustup_home_with_env(env: &dyn Env) -> io::Result<PathBuf> {
+ let cwd = env.current_dir()?;
+ rustup_home_with_cwd_env(env, &cwd)
+}
+
+/// Variant of `cargo_home_with_cwd` where the environment source is
+/// parameterized.
+///
+/// This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the `OsEnv` trait.
+pub fn rustup_home_with_cwd_env(env: &dyn Env, cwd: &Path) -> io::Result<PathBuf> {
+ match env.var_os("RUSTUP_HOME").filter(|h| !h.is_empty()) {
+ Some(home) => {
+ let home = PathBuf::from(home);
+ if home.is_absolute() {
+ Ok(home)
+ } else {
+ Ok(cwd.join(&home))
+ }
+ }
+ _ => home_dir_with_env(env)
+ .map(|d| d.join(".rustup"))
+ .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find rustup home dir")),
+ }
+}
diff --git a/crates/home/src/lib.rs b/crates/home/src/lib.rs
new file mode 100644
index 0000000..534ecb2
--- /dev/null
+++ b/crates/home/src/lib.rs
@@ -0,0 +1,150 @@
+//! Canonical definitions of `home_dir`, `cargo_home`, and `rustup_home`.
+//!
+//! The definition of `home_dir` provided by the standard library is
+//! incorrect because it considers the `HOME` environment variable on
+//! Windows. This causes surprising situations where a Rust program
+//! will behave differently depending on whether it is run under a
+//! Unix emulation environment like Cygwin or MinGW. Neither Cargo nor
+//! rustup use the standard libraries definition - they use the
+//! definition here.
+//!
+//! This crate provides two additional functions, `cargo_home` and
+//! `rustup_home`, which are the canonical way to determine the
+//! location that Cargo and rustup use to store their data.
+//! The `env` module contains utilities for mocking the process environment
+//! by Cargo and rustup.
+//!
+//! See also this [discussion].
+//!
+//! > This crate is maintained by the Cargo team, primarily for use by Cargo and Rustup
+//! > and not intended for external use. This
+//! > crate may make major changes to its APIs or be deprecated without warning.
+//!
+//! [discussion]: https://github.com/rust-lang/rust/pull/46799#issuecomment-361156935
+
+#![allow(clippy::disallowed_methods)]
+
+pub mod env;
+
+#[cfg(target_os = "windows")]
+mod windows;
+
+use std::io;
+use std::path::{Path, PathBuf};
+
+/// Returns the path of the current user's home directory using environment
+/// variables or OS-specific APIs.
+///
+/// # Unix
+///
+/// Returns the value of the `HOME` environment variable if it is set
+/// **even** if it is an empty string. Otherwise, it tries to determine the
+/// home directory by invoking the [`getpwuid_r`][getpwuid] function with
+/// the UID of the current user.
+///
+/// [getpwuid]: https://linux.die.net/man/3/getpwuid_r
+///
+/// # Windows
+///
+/// Returns the value of the `USERPROFILE` environment variable if it is set
+/// **and** it is not an empty string. Otherwise, it tries to determine the
+/// home directory by invoking the [`SHGetKnownFolderPath`][shgkfp] function with
+/// [`FOLDERID_Profile`][knownfolderid].
+///
+/// [shgkfp]: https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
+/// [knownfolderid]: https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid
+///
+/// # Examples
+///
+/// ```
+/// match home::home_dir() {
+/// Some(path) if !path.as_os_str().is_empty() => println!("{}", path.display()),
+/// _ => println!("Unable to get your home dir!"),
+/// }
+/// ```
+pub fn home_dir() -> Option<PathBuf> {
+ env::home_dir_with_env(&env::OS_ENV)
+}
+
+#[cfg(windows)]
+use windows::home_dir_inner;
+
+#[cfg(any(unix, target_os = "redox"))]
+fn home_dir_inner() -> Option<PathBuf> {
+ #[allow(deprecated)]
+ std::env::home_dir()
+}
+
+/// Returns the storage directory used by Cargo, often knowns as
+/// `.cargo` or `CARGO_HOME`.
+///
+/// It returns one of the following values, in this order of
+/// preference:
+///
+/// - The value of the `CARGO_HOME` environment variable, if it is
+/// an absolute path.
+/// - The value of the current working directory joined with the value
+/// of the `CARGO_HOME` environment variable, if `CARGO_HOME` is a
+/// relative directory.
+/// - The `.cargo` directory in the user's home directory, as reported
+/// by the `home_dir` function.
+///
+/// # Errors
+///
+/// This function fails if it fails to retrieve the current directory,
+/// or if the home directory cannot be determined.
+///
+/// # Examples
+///
+/// ```
+/// match home::cargo_home() {
+/// Ok(path) => println!("{}", path.display()),
+/// Err(err) => eprintln!("Cannot get your cargo home dir: {:?}", err),
+/// }
+/// ```
+pub fn cargo_home() -> io::Result<PathBuf> {
+ env::cargo_home_with_env(&env::OS_ENV)
+}
+
+/// Returns the storage directory used by Cargo within `cwd`.
+/// For more details, see [`cargo_home`](fn.cargo_home.html).
+pub fn cargo_home_with_cwd(cwd: &Path) -> io::Result<PathBuf> {
+ env::cargo_home_with_cwd_env(&env::OS_ENV, cwd)
+}
+
+/// Returns the storage directory used by rustup, often knowns as
+/// `.rustup` or `RUSTUP_HOME`.
+///
+/// It returns one of the following values, in this order of
+/// preference:
+///
+/// - The value of the `RUSTUP_HOME` environment variable, if it is
+/// an absolute path.
+/// - The value of the current working directory joined with the value
+/// of the `RUSTUP_HOME` environment variable, if `RUSTUP_HOME` is a
+/// relative directory.
+/// - The `.rustup` directory in the user's home directory, as reported
+/// by the `home_dir` function.
+///
+/// # Errors
+///
+/// This function fails if it fails to retrieve the current directory,
+/// or if the home directory cannot be determined.
+///
+/// # Examples
+///
+/// ```
+/// match home::rustup_home() {
+/// Ok(path) => println!("{}", path.display()),
+/// Err(err) => eprintln!("Cannot get your rustup home dir: {:?}", err),
+/// }
+/// ```
+pub fn rustup_home() -> io::Result<PathBuf> {
+ env::rustup_home_with_env(&env::OS_ENV)
+}
+
+/// Returns the storage directory used by rustup within `cwd`.
+/// For more details, see [`rustup_home`](fn.rustup_home.html).
+pub fn rustup_home_with_cwd(cwd: &Path) -> io::Result<PathBuf> {
+ env::rustup_home_with_cwd_env(&env::OS_ENV, cwd)
+}
diff --git a/crates/home/src/windows.rs b/crates/home/src/windows.rs
new file mode 100644
index 0000000..bd21ad0
--- /dev/null
+++ b/crates/home/src/windows.rs
@@ -0,0 +1,78 @@
+use std::env;
+use std::ffi::OsString;
+use std::os::windows::ffi::OsStringExt;
+use std::path::PathBuf;
+use std::ptr;
+use std::slice;
+
+use windows_sys::Win32::Foundation::S_OK;
+use windows_sys::Win32::System::Com::CoTaskMemFree;
+use windows_sys::Win32::UI::Shell::{FOLDERID_Profile, SHGetKnownFolderPath, KF_FLAG_DONT_VERIFY};
+
+pub fn home_dir_inner() -> Option<PathBuf> {
+ env::var_os("USERPROFILE")
+ .filter(|s| !s.is_empty())
+ .map(PathBuf::from)
+ .or_else(home_dir_crt)
+}
+
+#[cfg(not(target_vendor = "uwp"))]
+fn home_dir_crt() -> Option<PathBuf> {
+ unsafe {
+ let mut path = ptr::null_mut();
+ match SHGetKnownFolderPath(
+ &FOLDERID_Profile,
+ KF_FLAG_DONT_VERIFY as u32,
+ std::ptr::null_mut(),
+ &mut path,
+ ) {
+ S_OK => {
+ let path_slice = slice::from_raw_parts(path, wcslen(path));
+ let s = OsString::from_wide(&path_slice);
+ CoTaskMemFree(path.cast());
+ Some(PathBuf::from(s))
+ }
+ _ => {
+ // Free any allocated memory even on failure. A null ptr is a no-op for `CoTaskMemFree`.
+ CoTaskMemFree(path.cast());
+ None
+ }
+ }
+ }
+}
+
+#[cfg(target_vendor = "uwp")]
+fn home_dir_crt() -> Option<PathBuf> {
+ None
+}
+
+extern "C" {
+ fn wcslen(buf: *const u16) -> usize;
+}
+
+#[cfg(not(target_vendor = "uwp"))]
+#[cfg(test)]
+mod tests {
+ use super::home_dir_inner;
+ use std::env;
+ use std::ops::Deref;
+ use std::path::{Path, PathBuf};
+
+ #[test]
+ fn test_with_without() {
+ let olduserprofile = env::var_os("USERPROFILE").unwrap();
+
+ env::remove_var("HOME");
+ env::remove_var("USERPROFILE");
+
+ assert_eq!(home_dir_inner(), Some(PathBuf::from(olduserprofile)));
+
+ let home = Path::new(r"C:\Users\foo tar baz");
+
+ env::set_var("HOME", home.as_os_str());
+ assert_ne!(home_dir_inner().as_ref().map(Deref::deref), Some(home));
+
+ env::set_var("USERPROFILE", home.as_os_str());
+ assert_eq!(home_dir_inner().as_ref().map(Deref::deref), Some(home));
+ }
+}
diff --git a/crates/hound/.android-checksum.json b/crates/hound/.android-checksum.json
index 5f0104c..89156df 100644
--- a/crates/hound/.android-checksum.json
+++ b/crates/hound/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e8653ad24ca8cf5e5a9e7719f2c04b4888618aaa4be15c7596596f12dde27969","Android.bp":"913b24d6023d640a7eb66b34331256205cc6c030bd1a43555e91f73475f3d0a9","Cargo.lock":"5bffcc659614c40cc70bdd15e8ef9eab67a90bd0fa0e5ed6b66746ee9eef35fe","Cargo.toml":"584e8c776b2700d50c7cc3a697735252f927f0a939d0a547811873780e3024d4","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c8de45abb693cac23e2ea236de16532d3d45d3cc4a01d01bd793cd782d3d876d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"83e8dd95fd945cfd061800ec67713112ba005d0ff4bbc25c94babec062b79cb7","changelog.md":"2d26ea17339fd7b08d9f769a742ebb8adfbc49f6f0657285c4e75785924387f9","contributing.md":"9236c4263832855210c40aa3211f6e75879e660a0c7dd7e2f1ae447f43fa73d0","examples/append.rs":"09c93e54547cd89999fe26dac1fa363655953e409562d68a604ee79c7dabd2bd","examples/cpal.rs":"888ed3a5e8b19f98d7a35bd4a4f1050475b6fcd04ace800ac00b55b22a025d4a","examples/mean.rs":"1b5851a5e9e83cbbcf90e7f2286e888dfad5b04028ede72e75357e91eb85ef7a","examples/rms.rs":"0302d622fea211ca1585819926beeefc2d3fd534b2a6e49a609762b15ea08799","examples/wavstdout.rs":"75c08d0d3af65348ef5af11b7fd88c6458f12b0569e0de87dc1899671a697bf1","license":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","readme.md":"4b999ffb83d4a90cdb45b1f18867ef08615e081342225c8efa43d24fc6baaf8e","rust-toolchain.toml":"ecc3d60f6fecaaaa082471905fdef26f40104de6e615318673a9426257e8c0cf","src/lib.rs":"bc8ad6e9ab0b986ba3004c557600dbafe03b54011d89ce60ce4e5b92a95ee6bd","src/read.rs":"289af36aaf5f94405644ebcefedfaf688a131f4b64bdc51197be39d86ccdd4bb","src/write.rs":"2572b5b6e0d931bf8fb6f95160a7a53487f684f1bc6cc9021f5a39e728529948","testsamples/fuzz/crash-24728523ef4be15c838293b676f6853e73723bf4.wav":"d4becf1c904beddb50be73b2b7d80fe72a9ddac2c26290d9f9a17cfab537c916","testsamples/fuzz/crash-b8447179832529c48f9c6bf17feab6337bbc78ea.wav":"4a36b4b8c5dc3f8994f42dae7ff55e9c3554279a0db3878b6d734d567e185b10","testsamples/fuzz/crash-cbd757427cea12bd8a21f86cd8cf74d98ce56bee.wav":"14d971f16f9bd7ace5d429d546ee272ce93bf360e66bc73380e99072c83aca26","testsamples/fuzz/crash-e5471f5b58397287b509db7d026e95f1724454f5.wav":"f61341b2754ada4efa4a3c6345a7cffa239f11d3ed9677e098aa6c24723dfb44","testsamples/fuzz/crash-e879de4eb4d206c59e21f0e01def16457af80fdc.wav":"0f006ea314f19101b59a8df7841f4ac88b3a8d8022d5a0ecceb132b2c59ce0ea","testsamples/fuzz/oom-48ae4cd061ff8578ad3f23dc87624bd365cf5216.wav":"e5126059e8c2de459f28b7896b8bab37be5ad268f6c1f026cce7957fa38129d4","testsamples/nonstandard-01.wav":"4c4e8850f5f7200df5fc4d2d5ac8b8228caa16b3a574a8d2cdcd31723a426c75","testsamples/nonstandard-02.wav":"35187a24d280635457a9f7c19adaca53caa38165b3371e035c6ff9ef9082a2dc","testsamples/pcmwaveformat-16bit-44100Hz-mono-extra.wav":"0deb3bc688ef55ba23da9af51fb4633da045bd8a8a28b959dab6a1aa4a5c9019","testsamples/pcmwaveformat-16bit-44100Hz-mono.wav":"2665d6b2e7ca5dd18a9cf523be2004f4d490f7c87baffd347215f5bace1c2c53","testsamples/pcmwaveformat-24bit-4byte-48kHz-stereo.wav":"326046f241e765bb4df562ec0bbbcfb087f04063663eb98705ca53c8d57d14ed","testsamples/pcmwaveformat-8bit-44100Hz-mono.wav":"25f574e49670e496a68bcfaa6e839df6529d02a3b47ded54a0c41e98406c30d5","testsamples/pop.wav":"d92bc045064ac78be9b7f04c26d2c7897629daa2c767744f2d4dd1949acebd1e","testsamples/waveformatex-16bit-44100Hz-mono-extra.wav":"1ed9ab7f49ddd70d1a85ed79cdf9037250c4160f9dc50650644893daac91bcdf","testsamples/waveformatex-16bit-44100Hz-mono.wav":"b3cfce3d6c09207493a1ca522d807b750bc7a62d4e108f9c2109c2b4faac8c09","testsamples/waveformatex-16bit-44100Hz-stereo.wav":"81cbdba5c2dd1602a4137267df01a72c35612c6c8d5321427c292b5d9af7478d","testsamples/waveformatex-8bit-11025Hz-mono.wav":"6fe04d876e865d50192dc1d1abe77ab7bf8526a99327541a6d3c15bbeb834ff3","testsamples/waveformatex-ieeefloat-44100Hz-mono.wav":"c635258e320b36c74670e487939417e90c5b510392c0861d8f8b96d58bbc3ae4","testsamples/waveformatextensible-24bit-192kHz-mono.wav":"a63207ad6a8cec3cf79512aa69ac22b8a6a2e0b18b20dfe6a58174849b82232f","testsamples/waveformatextensible-24bit-4byte-48kHz-stereo.wav":"7179e7e5a41b01a3e481cca8835f0d429f6d40cb47e190ee91fc7279682c7160","testsamples/waveformatextensible-32bit-48kHz-stereo.wav":"f3b2c789dfd13cc0c340ea70d738d546d2fde7d4a7b7d9b10e5eb93d07fc0998","testsamples/waveformatextensible-ieeefloat-44100Hz-mono.wav":"05eec32e99004ea2642fcbbf954742768ceeae84a8d73939ed3a70de26f98dfc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e8653ad24ca8cf5e5a9e7719f2c04b4888618aaa4be15c7596596f12dde27969","Android.bp":"8dd59a47149b072741dd97b2b2e63258bd074260cdfaeba97c27ed2b22ce610d","Cargo.lock":"5bffcc659614c40cc70bdd15e8ef9eab67a90bd0fa0e5ed6b66746ee9eef35fe","Cargo.toml":"584e8c776b2700d50c7cc3a697735252f927f0a939d0a547811873780e3024d4","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c8de45abb693cac23e2ea236de16532d3d45d3cc4a01d01bd793cd782d3d876d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"513f06b1f39e3f9aaabbebac0b427376b3dd80a7286cf43bfdf5436d4151c696","changelog.md":"2d26ea17339fd7b08d9f769a742ebb8adfbc49f6f0657285c4e75785924387f9","contributing.md":"9236c4263832855210c40aa3211f6e75879e660a0c7dd7e2f1ae447f43fa73d0","examples/append.rs":"09c93e54547cd89999fe26dac1fa363655953e409562d68a604ee79c7dabd2bd","examples/cpal.rs":"888ed3a5e8b19f98d7a35bd4a4f1050475b6fcd04ace800ac00b55b22a025d4a","examples/mean.rs":"1b5851a5e9e83cbbcf90e7f2286e888dfad5b04028ede72e75357e91eb85ef7a","examples/rms.rs":"0302d622fea211ca1585819926beeefc2d3fd534b2a6e49a609762b15ea08799","examples/wavstdout.rs":"75c08d0d3af65348ef5af11b7fd88c6458f12b0569e0de87dc1899671a697bf1","license":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","readme.md":"4b999ffb83d4a90cdb45b1f18867ef08615e081342225c8efa43d24fc6baaf8e","rust-toolchain.toml":"ecc3d60f6fecaaaa082471905fdef26f40104de6e615318673a9426257e8c0cf","src/lib.rs":"bc8ad6e9ab0b986ba3004c557600dbafe03b54011d89ce60ce4e5b92a95ee6bd","src/read.rs":"289af36aaf5f94405644ebcefedfaf688a131f4b64bdc51197be39d86ccdd4bb","src/write.rs":"2572b5b6e0d931bf8fb6f95160a7a53487f684f1bc6cc9021f5a39e728529948","testsamples/fuzz/crash-24728523ef4be15c838293b676f6853e73723bf4.wav":"d4becf1c904beddb50be73b2b7d80fe72a9ddac2c26290d9f9a17cfab537c916","testsamples/fuzz/crash-b8447179832529c48f9c6bf17feab6337bbc78ea.wav":"4a36b4b8c5dc3f8994f42dae7ff55e9c3554279a0db3878b6d734d567e185b10","testsamples/fuzz/crash-cbd757427cea12bd8a21f86cd8cf74d98ce56bee.wav":"14d971f16f9bd7ace5d429d546ee272ce93bf360e66bc73380e99072c83aca26","testsamples/fuzz/crash-e5471f5b58397287b509db7d026e95f1724454f5.wav":"f61341b2754ada4efa4a3c6345a7cffa239f11d3ed9677e098aa6c24723dfb44","testsamples/fuzz/crash-e879de4eb4d206c59e21f0e01def16457af80fdc.wav":"0f006ea314f19101b59a8df7841f4ac88b3a8d8022d5a0ecceb132b2c59ce0ea","testsamples/fuzz/oom-48ae4cd061ff8578ad3f23dc87624bd365cf5216.wav":"e5126059e8c2de459f28b7896b8bab37be5ad268f6c1f026cce7957fa38129d4","testsamples/nonstandard-01.wav":"4c4e8850f5f7200df5fc4d2d5ac8b8228caa16b3a574a8d2cdcd31723a426c75","testsamples/nonstandard-02.wav":"35187a24d280635457a9f7c19adaca53caa38165b3371e035c6ff9ef9082a2dc","testsamples/pcmwaveformat-16bit-44100Hz-mono-extra.wav":"0deb3bc688ef55ba23da9af51fb4633da045bd8a8a28b959dab6a1aa4a5c9019","testsamples/pcmwaveformat-16bit-44100Hz-mono.wav":"2665d6b2e7ca5dd18a9cf523be2004f4d490f7c87baffd347215f5bace1c2c53","testsamples/pcmwaveformat-24bit-4byte-48kHz-stereo.wav":"326046f241e765bb4df562ec0bbbcfb087f04063663eb98705ca53c8d57d14ed","testsamples/pcmwaveformat-8bit-44100Hz-mono.wav":"25f574e49670e496a68bcfaa6e839df6529d02a3b47ded54a0c41e98406c30d5","testsamples/pop.wav":"d92bc045064ac78be9b7f04c26d2c7897629daa2c767744f2d4dd1949acebd1e","testsamples/waveformatex-16bit-44100Hz-mono-extra.wav":"1ed9ab7f49ddd70d1a85ed79cdf9037250c4160f9dc50650644893daac91bcdf","testsamples/waveformatex-16bit-44100Hz-mono.wav":"b3cfce3d6c09207493a1ca522d807b750bc7a62d4e108f9c2109c2b4faac8c09","testsamples/waveformatex-16bit-44100Hz-stereo.wav":"81cbdba5c2dd1602a4137267df01a72c35612c6c8d5321427c292b5d9af7478d","testsamples/waveformatex-8bit-11025Hz-mono.wav":"6fe04d876e865d50192dc1d1abe77ab7bf8526a99327541a6d3c15bbeb834ff3","testsamples/waveformatex-ieeefloat-44100Hz-mono.wav":"c635258e320b36c74670e487939417e90c5b510392c0861d8f8b96d58bbc3ae4","testsamples/waveformatextensible-24bit-192kHz-mono.wav":"a63207ad6a8cec3cf79512aa69ac22b8a6a2e0b18b20dfe6a58174849b82232f","testsamples/waveformatextensible-24bit-4byte-48kHz-stereo.wav":"7179e7e5a41b01a3e481cca8835f0d429f6d40cb47e190ee91fc7279682c7160","testsamples/waveformatextensible-32bit-48kHz-stereo.wav":"f3b2c789dfd13cc0c340ea70d738d546d2fde7d4a7b7d9b10e5eb93d07fc0998","testsamples/waveformatextensible-ieeefloat-44100Hz-mono.wav":"05eec32e99004ea2642fcbbf954742768ceeae84a8d73939ed3a70de26f98dfc"}}
\ No newline at end of file
diff --git a/crates/hound/Android.bp b/crates/hound/Android.bp
index 2fc9d93..7a93d36 100644
--- a/crates/hound/Android.bp
+++ b/crates/hound/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/hound/cargo_embargo.json b/crates/hound/cargo_embargo.json
index e6a2930..bc7882c 100644
--- a/crates/hound/cargo_embargo.json
+++ b/crates/hound/cargo_embargo.json
@@ -1,4 +1,5 @@
{
- "run_cargo": false,
- "tests": false
-}
+ "run_cargo": false,
+ "tests": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/hyper/.android-checksum.json b/crates/hyper/.android-checksum.json
index 6fcda1a..0f9d126 100644
--- a/crates/hyper/.android-checksum.json
+++ b/crates/hyper/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"5a0c5b0fc7fe4a2c10c1375c72dcb83ee9250444473b16cdd3f8c372d91c3166","Android.bp":"b1bc96f386dec4b8eb42eb79d83a3a70b5ff8b439d1173123136d830cb96c80c","Cargo.toml":"29400cd268caa840ad7c5c2a87660a7c08faa3ad0061c6ea13aa7429651101b6","LICENSE":"d966de049f593320c234ffcd560a0c425bbc3be523ab1d85777ef082b7918c32","METADATA":"744c5f3ad5eb61242b281c5ffcde12f7936181b141fbb29361e17917faf4fe1d","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"67cc237cbe62e7a59ab7d4b53e2eb659384fce7c78f62b03b9a7320cdc4f2070","src/body/aggregate.rs":"67ab42c9c4fbc2743ad24c5b4d96de83a3abf85f09e53102817b119345a22afb","src/body/body.rs":"a02ffdce570917c4917c4ad720119736ae37fe3733065a470acb94d1160da8fd","src/body/length.rs":"0820ae2977362af64e014d7e8f2ae9b2560db7d0e5be8f5c1ff618356c120bab","src/body/mod.rs":"df0b6ddfd5d1e0d9af6e3b6cb0831525fea2540232a727b7192d25b986fd7fc5","src/body/to_bytes.rs":"39ea8ee5e0848006e6d197da4a267772b6592646dd808c251ddc3eda8deaa726","src/cfg.rs":"0a379bcff467d4c11fee118e1c98ae10e45836e7699bce50f870eaca1fcefcaa","src/client/client.rs":"6f24706b2187d45b338cd20a7fe566d9e1e01f40903e9ac4f8bf20018a02caef","src/client/conn.rs":"d092c41ea27636b3e9ba6e3af35aeca4faac2949a6674a06ca23471d20b8e298","src/client/conn/http1.rs":"aef119fe6baad32253b3113f3be04070d1d0d1b351e36afa7bf4f06ef6bd99e3","src/client/conn/http2.rs":"d412c6c1d52eece5a6c1cc5f99b27824f8473e3c39d3e93d0d4a9124ae807771","src/client/connect/dns.rs":"a8c24e2d4c63603e8a2b556b93a7aba0464a52c3b33b0dbeb2b09bcd17b4de28","src/client/connect/http.rs":"29637ed8a5fdd20377fc24753706d708d4ed907036d12a1ebafebcef1a6f35d3","src/client/connect/mod.rs":"28ecfb6a453cb9d400dc635ffce9d6c18dcc5d2df78f2fa3086bb1a4be2175ce","src/client/dispatch.rs":"142ffcfa380ac4d47c476054dc1a5d010b3421cda4fa098b985aeba71b41f6df","src/client/mod.rs":"89e26ce9241cbf07d9a5efa2ca220b9f9704c78791f68f49dafd87dfacc13048","src/client/pool.rs":"930a5e81d381679cf71f7fa69699beb73fe41b5c724a5dfb1c4565bdb3365d5a","src/client/service.rs":"5fbacad960cf36174bd657916494c4824ed52b6f346d6f7ef036ee47ea9281a5","src/client/tests.rs":"43d07002a845d14b6b45f7b31578c5c8a41452880f4215b9c60605eb2446b537","src/common/buf.rs":"63ee30e410d1a4369eb41a560959031b17c0f67cb118ce96ccaa1793d0fa671c","src/common/date.rs":"026518cc90448257298b4ba4025b52a159aa7d9d6ae90808d5e1ed76eef2648d","src/common/drain.rs":"b7c73cf06601198aa66f68e0608e7526ca150cfff758f8fc6fe6132ab5bdb7c5","src/common/exec.rs":"1aba495bb2afee9413cd7a7494c28017bb7c3671f63f6ced26d3e8385f52a00b","src/common/io/mod.rs":"56a0b60bbd35d0a3b4791fb18636929f5ae2400aa02bf31bc32ba9cbb051c4a1","src/common/io/rewind.rs":"f5c504b350b50aed2a7f0f69fb33ff7fb59c276536aef3e3513e7dbbadda48ae","src/common/lazy.rs":"d265b76db04c5a9927fd1c748d6fe99522f9ae86c30eaa6d2e7a35e431bd96ee","src/common/mod.rs":"f51aecd5bd8d3d3e61b95cab3fd2092554b0ffe8b1354617057d67113453d08f","src/common/sync_wrapper.rs":"966e2e432c73d917752fbf3be3dc48390e8a1409e8890448ad128a8428b6dec4","src/common/task.rs":"253006d3f12140780067aab1d2462a44d167543a31b5ead21fc8b004ad36607c","src/common/watch.rs":"88fe7fd7c362bf7ed877379180cdf318038c266517c15393b2c73bfecd1a977f","src/error.rs":"0ee6ef678673400fc3ebd677a981b8ad7971aedb4bb24412f36325f170bea709","src/ext.rs":"96f2c7324b8e964ec424dd88d43616b6a659aa224367af61e52eb81a836f233a","src/ext/h1_reason_phrase.rs":"62dcc1fd804817f058a104f43fa60d663cbdde5d2ae3ff7a6a170b19a23c1ad7","src/ffi/body.rs":"ea3dc0d640a9f345e87feb62f57a1f8f5cdb728c7f05737dec0dd4b7a6962a37","src/ffi/client.rs":"5bc3910b3851dec754254ee4f08aa47e45ad9bb962d54de83b0156bc937c77df","src/ffi/error.rs":"2483a5b62f86618afbe426c12320134383d6c08b83cb14823372fe790673048d","src/ffi/http_types.rs":"f2a8d8d922fe59b65a755a0d4b71bf20e2699610ff41e9fbcbef17ba8b05d684","src/ffi/io.rs":"e94220bedb0d6aff09001de54e27729784ce64fd0d4e0fe778d1934511095159","src/ffi/macros.rs":"55c89daba693c4cd0040babb00623d0c5f1d1422a0a7fbeb7cfc2a90a4b6ec5b","src/ffi/mod.rs":"373e9b10e0920006308ac95062880995a9b1b1718c32f5231a547d51c70a4db5","src/ffi/task.rs":"829a6c90ee277d3a09f5ebe37cc8bae1b19a199418959b36142302087e70d17c","src/headers.rs":"000622c2e2130af0b90ee2ba62a34333e452647c687c220e12b96867cdd97667","src/lib.rs":"4b6eac8453c6f32b277ffd2abac4e37e1c6c64ebf90068e7f08988f82ab4308c","src/mock.rs":"8fdd1b2fcc8ffb25245ab8e936317cbeeedf7d3d31104410781a1d74e906a505","src/proto/h1/conn.rs":"77c7f775d2acc6eb9697d76670920329bba578e6e989b1d40339fef2f1ab3c9e","src/proto/h1/decode.rs":"9f763c0e9a0ff3320edf137f0d31ee0ea7721b95f164ca03e579ec51943f2736","src/proto/h1/dispatch.rs":"817f015108dc2dcfcaf37a90b43955b1fbcb55792e830c2daadc099ad5085121","src/proto/h1/encode.rs":"603ca7373ff015f7da8c6a884e2b19fb951104eba4d9856d6f4a1abf0de0871f","src/proto/h1/io.rs":"1775757468982947dbd2bac8e7a56b319bb4a73b1ba5fefa3461760aea95e413","src/proto/h1/mod.rs":"24943821d5880e15725cc84c9d5f5de355d3e6773e3e2d08bd8befabbb454221","src/proto/h1/role.rs":"7782f38c5fb49f1608dba9f01782f64ec961bb76ad335c0976d566565d95b72d","src/proto/h2/client.rs":"c5bed14f988f8c6c3abaa718eaf07487f7cc3e421bc040f8037cffc46cda2e45","src/proto/h2/mod.rs":"916b50584aeacbcb38c82f55a1c3354dc72d6a907a5beedf3603fe45659c78d0","src/proto/h2/ping.rs":"907857e1c0da5445b18c5075d10f6b81fd4c5aa89bffe6783e584ce7578cdc7c","src/proto/h2/server.rs":"83f8a61bc750b4d6219a4b291b05ea7c5cbd41a39c4cb8364c60a7056c0edfdd","src/proto/mod.rs":"23aa66c08735cc9f9d91467fdb6d9dee60a8dc0db419e05db49d459ef36d4c04","src/rt.rs":"5965678dbb9a8a5ecd8ff23ebca378017133633afe46148afa3c37d82476a77c","src/server/accept.rs":"7f2a7a4f62743d99c655fc97d8e2dcf3af83c6ea95ddcfe824ba7a5dd45f5c47","src/server/conn.rs":"6e0e30941d72655d6e65d38353da0bb9d3524f14ca95595807599e98ef1f7c24","src/server/conn/http1.rs":"8a907a0339f8784dbb092ad533bb44b496a2ac66c23c9db5f6542a44b1c52905","src/server/conn/http2.rs":"37ff57d1a004456ab45bda974587d86ad0703346ab614b70156867b4d2046db7","src/server/mod.rs":"b72dc2fbbf8efe36a245f615507603893cb337684287325199aea36baa2bfed1","src/server/server.rs":"e5c524ff38a3b6ce057de05a133676175f2487befbeed0011edc7a00638e43f6","src/server/server_stub.rs":"626019543194f8bac4abce957e5c621c308f76733de7509ae0dfb9a0cd59c9df","src/server/shutdown.rs":"4544609826b5815efc086d8ea7ed64d462f26de35d1ecf6039a8616a863dff6a","src/server/tcp.rs":"69fcbe8283ba2c3c7a4a6b9cf3c4bb868aaea71f6a1b3a3ee429595836e253f8","src/service/http.rs":"ef3ab1b3f2521336b49e0c250e902660207d4cd1deb56abc25b47f811c478931","src/service/make.rs":"e063fe6373c3deea57ba8fe170087d9a571b996d34f5718221f81ae5729bf60d","src/service/mod.rs":"bd2ee22a4dde7de0259f3514260537654670ba389ac80aba4bd845a52a43e936","src/service/oneshot.rs":"c3cdca04f62eca50ae6813b72b315ba57008e1e282c185afdd10babd149172e5","src/service/util.rs":"29074fdbbd5de0776bf4343351e043dc36ec723621cc863199b0f4c669ab063a","src/upgrade.rs":"22f20064ef36705743ef49515bf0b69d84245b96d5ab30b1345144a7fe3bc7d0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"5a0c5b0fc7fe4a2c10c1375c72dcb83ee9250444473b16cdd3f8c372d91c3166","Android.bp":"081e10e31418d6a0583d91e7c396d61f53206a6f079dbf029bd4d18430606fe7","Cargo.toml":"29400cd268caa840ad7c5c2a87660a7c08faa3ad0061c6ea13aa7429651101b6","LICENSE":"d966de049f593320c234ffcd560a0c425bbc3be523ab1d85777ef082b7918c32","METADATA":"744c5f3ad5eb61242b281c5ffcde12f7936181b141fbb29361e17917faf4fe1d","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"36dc620b6a706c135f99947bc6b46c464ba89cdc64d82b85d423f0b4a2e40921","src/body/aggregate.rs":"67ab42c9c4fbc2743ad24c5b4d96de83a3abf85f09e53102817b119345a22afb","src/body/body.rs":"a02ffdce570917c4917c4ad720119736ae37fe3733065a470acb94d1160da8fd","src/body/length.rs":"0820ae2977362af64e014d7e8f2ae9b2560db7d0e5be8f5c1ff618356c120bab","src/body/mod.rs":"df0b6ddfd5d1e0d9af6e3b6cb0831525fea2540232a727b7192d25b986fd7fc5","src/body/to_bytes.rs":"39ea8ee5e0848006e6d197da4a267772b6592646dd808c251ddc3eda8deaa726","src/cfg.rs":"0a379bcff467d4c11fee118e1c98ae10e45836e7699bce50f870eaca1fcefcaa","src/client/client.rs":"6f24706b2187d45b338cd20a7fe566d9e1e01f40903e9ac4f8bf20018a02caef","src/client/conn.rs":"d092c41ea27636b3e9ba6e3af35aeca4faac2949a6674a06ca23471d20b8e298","src/client/conn/http1.rs":"aef119fe6baad32253b3113f3be04070d1d0d1b351e36afa7bf4f06ef6bd99e3","src/client/conn/http2.rs":"d412c6c1d52eece5a6c1cc5f99b27824f8473e3c39d3e93d0d4a9124ae807771","src/client/connect/dns.rs":"a8c24e2d4c63603e8a2b556b93a7aba0464a52c3b33b0dbeb2b09bcd17b4de28","src/client/connect/http.rs":"29637ed8a5fdd20377fc24753706d708d4ed907036d12a1ebafebcef1a6f35d3","src/client/connect/mod.rs":"28ecfb6a453cb9d400dc635ffce9d6c18dcc5d2df78f2fa3086bb1a4be2175ce","src/client/dispatch.rs":"142ffcfa380ac4d47c476054dc1a5d010b3421cda4fa098b985aeba71b41f6df","src/client/mod.rs":"89e26ce9241cbf07d9a5efa2ca220b9f9704c78791f68f49dafd87dfacc13048","src/client/pool.rs":"930a5e81d381679cf71f7fa69699beb73fe41b5c724a5dfb1c4565bdb3365d5a","src/client/service.rs":"5fbacad960cf36174bd657916494c4824ed52b6f346d6f7ef036ee47ea9281a5","src/client/tests.rs":"43d07002a845d14b6b45f7b31578c5c8a41452880f4215b9c60605eb2446b537","src/common/buf.rs":"63ee30e410d1a4369eb41a560959031b17c0f67cb118ce96ccaa1793d0fa671c","src/common/date.rs":"026518cc90448257298b4ba4025b52a159aa7d9d6ae90808d5e1ed76eef2648d","src/common/drain.rs":"b7c73cf06601198aa66f68e0608e7526ca150cfff758f8fc6fe6132ab5bdb7c5","src/common/exec.rs":"1aba495bb2afee9413cd7a7494c28017bb7c3671f63f6ced26d3e8385f52a00b","src/common/io/mod.rs":"56a0b60bbd35d0a3b4791fb18636929f5ae2400aa02bf31bc32ba9cbb051c4a1","src/common/io/rewind.rs":"f5c504b350b50aed2a7f0f69fb33ff7fb59c276536aef3e3513e7dbbadda48ae","src/common/lazy.rs":"d265b76db04c5a9927fd1c748d6fe99522f9ae86c30eaa6d2e7a35e431bd96ee","src/common/mod.rs":"f51aecd5bd8d3d3e61b95cab3fd2092554b0ffe8b1354617057d67113453d08f","src/common/sync_wrapper.rs":"966e2e432c73d917752fbf3be3dc48390e8a1409e8890448ad128a8428b6dec4","src/common/task.rs":"253006d3f12140780067aab1d2462a44d167543a31b5ead21fc8b004ad36607c","src/common/watch.rs":"88fe7fd7c362bf7ed877379180cdf318038c266517c15393b2c73bfecd1a977f","src/error.rs":"0ee6ef678673400fc3ebd677a981b8ad7971aedb4bb24412f36325f170bea709","src/ext.rs":"96f2c7324b8e964ec424dd88d43616b6a659aa224367af61e52eb81a836f233a","src/ext/h1_reason_phrase.rs":"62dcc1fd804817f058a104f43fa60d663cbdde5d2ae3ff7a6a170b19a23c1ad7","src/ffi/body.rs":"ea3dc0d640a9f345e87feb62f57a1f8f5cdb728c7f05737dec0dd4b7a6962a37","src/ffi/client.rs":"5bc3910b3851dec754254ee4f08aa47e45ad9bb962d54de83b0156bc937c77df","src/ffi/error.rs":"2483a5b62f86618afbe426c12320134383d6c08b83cb14823372fe790673048d","src/ffi/http_types.rs":"f2a8d8d922fe59b65a755a0d4b71bf20e2699610ff41e9fbcbef17ba8b05d684","src/ffi/io.rs":"e94220bedb0d6aff09001de54e27729784ce64fd0d4e0fe778d1934511095159","src/ffi/macros.rs":"55c89daba693c4cd0040babb00623d0c5f1d1422a0a7fbeb7cfc2a90a4b6ec5b","src/ffi/mod.rs":"373e9b10e0920006308ac95062880995a9b1b1718c32f5231a547d51c70a4db5","src/ffi/task.rs":"829a6c90ee277d3a09f5ebe37cc8bae1b19a199418959b36142302087e70d17c","src/headers.rs":"000622c2e2130af0b90ee2ba62a34333e452647c687c220e12b96867cdd97667","src/lib.rs":"4b6eac8453c6f32b277ffd2abac4e37e1c6c64ebf90068e7f08988f82ab4308c","src/mock.rs":"8fdd1b2fcc8ffb25245ab8e936317cbeeedf7d3d31104410781a1d74e906a505","src/proto/h1/conn.rs":"77c7f775d2acc6eb9697d76670920329bba578e6e989b1d40339fef2f1ab3c9e","src/proto/h1/decode.rs":"9f763c0e9a0ff3320edf137f0d31ee0ea7721b95f164ca03e579ec51943f2736","src/proto/h1/dispatch.rs":"817f015108dc2dcfcaf37a90b43955b1fbcb55792e830c2daadc099ad5085121","src/proto/h1/encode.rs":"603ca7373ff015f7da8c6a884e2b19fb951104eba4d9856d6f4a1abf0de0871f","src/proto/h1/io.rs":"1775757468982947dbd2bac8e7a56b319bb4a73b1ba5fefa3461760aea95e413","src/proto/h1/mod.rs":"24943821d5880e15725cc84c9d5f5de355d3e6773e3e2d08bd8befabbb454221","src/proto/h1/role.rs":"7782f38c5fb49f1608dba9f01782f64ec961bb76ad335c0976d566565d95b72d","src/proto/h2/client.rs":"c5bed14f988f8c6c3abaa718eaf07487f7cc3e421bc040f8037cffc46cda2e45","src/proto/h2/mod.rs":"916b50584aeacbcb38c82f55a1c3354dc72d6a907a5beedf3603fe45659c78d0","src/proto/h2/ping.rs":"907857e1c0da5445b18c5075d10f6b81fd4c5aa89bffe6783e584ce7578cdc7c","src/proto/h2/server.rs":"83f8a61bc750b4d6219a4b291b05ea7c5cbd41a39c4cb8364c60a7056c0edfdd","src/proto/mod.rs":"23aa66c08735cc9f9d91467fdb6d9dee60a8dc0db419e05db49d459ef36d4c04","src/rt.rs":"5965678dbb9a8a5ecd8ff23ebca378017133633afe46148afa3c37d82476a77c","src/server/accept.rs":"7f2a7a4f62743d99c655fc97d8e2dcf3af83c6ea95ddcfe824ba7a5dd45f5c47","src/server/conn.rs":"6e0e30941d72655d6e65d38353da0bb9d3524f14ca95595807599e98ef1f7c24","src/server/conn/http1.rs":"8a907a0339f8784dbb092ad533bb44b496a2ac66c23c9db5f6542a44b1c52905","src/server/conn/http2.rs":"37ff57d1a004456ab45bda974587d86ad0703346ab614b70156867b4d2046db7","src/server/mod.rs":"b72dc2fbbf8efe36a245f615507603893cb337684287325199aea36baa2bfed1","src/server/server.rs":"e5c524ff38a3b6ce057de05a133676175f2487befbeed0011edc7a00638e43f6","src/server/server_stub.rs":"626019543194f8bac4abce957e5c621c308f76733de7509ae0dfb9a0cd59c9df","src/server/shutdown.rs":"4544609826b5815efc086d8ea7ed64d462f26de35d1ecf6039a8616a863dff6a","src/server/tcp.rs":"69fcbe8283ba2c3c7a4a6b9cf3c4bb868aaea71f6a1b3a3ee429595836e253f8","src/service/http.rs":"ef3ab1b3f2521336b49e0c250e902660207d4cd1deb56abc25b47f811c478931","src/service/make.rs":"e063fe6373c3deea57ba8fe170087d9a571b996d34f5718221f81ae5729bf60d","src/service/mod.rs":"bd2ee22a4dde7de0259f3514260537654670ba389ac80aba4bd845a52a43e936","src/service/oneshot.rs":"c3cdca04f62eca50ae6813b72b315ba57008e1e282c185afdd10babd149172e5","src/service/util.rs":"29074fdbbd5de0776bf4343351e043dc36ec723621cc863199b0f4c669ab063a","src/upgrade.rs":"22f20064ef36705743ef49515bf0b69d84245b96d5ab30b1345144a7fe3bc7d0"}}
\ No newline at end of file
diff --git a/crates/hyper/Android.bp b/crates/hyper/Android.bp
index b9acf91..3457359 100644
--- a/crates/hyper/Android.bp
+++ b/crates/hyper/Android.bp
@@ -22,6 +22,7 @@
crate_root: "src/lib.rs",
edition: "2018",
features: [
+ "backports",
"client",
"default",
"full",
diff --git a/crates/hyper/cargo_embargo.json b/crates/hyper/cargo_embargo.json
index a2f6581..2cf3366 100644
--- a/crates/hyper/cargo_embargo.json
+++ b/crates/hyper/cargo_embargo.json
@@ -1,5 +1,6 @@
{
"features": [
+ "backports",
"client",
"default",
"full",
diff --git a/crates/icu_capi/.android-checksum.json b/crates/icu_capi/.android-checksum.json
index d7e7188..1e28abf 100644
--- a/crates/icu_capi/.android-checksum.json
+++ b/crates/icu_capi/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"66a09af622a7ebd59883a66a9311d3856e39d337dd23eedbf1629b9c85d06b9b","Android.bp":"b7620fd05a6e18dbcfdf61327f14e48f2dd32e3b40c15e47e0e55572c3a4589d","Cargo.toml":"d94ab3420ce97513d5b4abfbb77d250a60d2b02071f2fe596a99e5971839db3d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"e6bc796532941257287c39069ad4e01c747ae39dd259415adf4316fc72811d02","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2670823c47e9e82f9bbcfc3e682392f108c74d32ae05f0857d4963c64a0a9a07","bindings/c/AnyCalendarKind.d.h":"58d5597618a8e1757515d19a9f6cc2aff82fa5c468b9ce35dc599bf1ae5b9fb7","bindings/c/AnyCalendarKind.h":"aab2f7475ce548d4b3f1812f038ef1cf4a02d8665ed90cf2bd7410da18f38941","bindings/c/Bidi.d.h":"073792091332a40076685e852b4440a57f8ef137c9b405eeefc6a4449cd8b6ab","bindings/c/Bidi.h":"05deedf5ea0636feecfa1229a091cb7c09ece06ef71780578c1f6241ddd530e5","bindings/c/BidiClass.d.h":"e01bb02057b2f477399609c9017f790b9f826fcc5814d2011fd6866aba19e5aa","bindings/c/BidiClass.h":"f7051fc6ee4956555f2d95fd752d5fe181a2bf9f0b96391846dd5b7e848367ef","bindings/c/BidiDirection.d.h":"ec0109aec080552fae41b03425e7deb44173f2e9f42f1ae5d0a13abb06a82854","bindings/c/BidiDirection.h":"8ab22fa9ed18da07a05768c7c4d58874d68b34803c2f736778f6aa598ce268c1","bindings/c/BidiInfo.d.h":"095aa849828e517cd520608cfda6388a9c2ea71b91b8f69e8459f00a195013bb","bindings/c/BidiInfo.h":"1b00f2ef957d62964dea1dc3a6f9322d665fc99202ca8800aaa18c50e2ebdd8f","bindings/c/BidiMirroringGlyph.d.h":"32086184167f003d9f5c47951199016e1735cc55791490aeb9d0d4bc17dde6b9","bindings/c/BidiMirroringGlyph.h":"30de7fa506633805a95e017b6caf0059d75f7e7cc161408ecf8b1036e2ef4ccc","bindings/c/BidiPairedBracketType.d.h":"7cbda3d883ae81237bd737f2403522fcaab6e3962a6ec79cfe4ebd2b3ce432d8","bindings/c/BidiPairedBracketType.h":"09a8dbf38e23786449b35003f7302081aa2b267bb2fd2f58144a6443c2f302c4","bindings/c/BidiParagraph.d.h":"93280db65f594eeeec618ebafa0e51b84154551b210e2a59c7ebce85ccf6cbce","bindings/c/BidiParagraph.h":"7eecd06c77da4b379ca2a7d2134c9cf30065a06529fbb17b7f5d35a78be16474","bindings/c/Calendar.d.h":"0c7d94459f33b0e4aef8ff093fa9f74c9cc99fa4dea1c1f1eacaaafad0422027","bindings/c/Calendar.h":"1fa0e1563ae053bc1e820086eb474b8f7c95a643c6cf730f15a09fa4a8e0ec58","bindings/c/CalendarError.d.h":"1ba31481f240919c647d8a544b73b5893ab32dd40ba0059fc3535bbd975b90f1","bindings/c/CalendarError.h":"e5a785d6fb76fdc260ede5d18259cff4bfd26a7a93426c304866f456e1547f43","bindings/c/CalendarParseError.d.h":"d922b8273b0951891f99709abc74128bc353352a0972e9e2383ecdaa4df01def","bindings/c/CalendarParseError.h":"526f6e2dced962409757498eb11124f42695a5b13bb2854a9b4c791793325f9a","bindings/c/CanonicalCombiningClass.d.h":"579f345b90ba01684a6b9270fe51eefc523b93743af3727da1426e35c44871d0","bindings/c/CanonicalCombiningClass.h":"06ef1e55ed1b6e8e12f55abc9d1464138a0600af72b235509d613a6808c330f1","bindings/c/CanonicalCombiningClassMap.d.h":"c71dc0090663bc6b3a8d2e8434dba0d4cdc719aaa39cff421b497e43f661cbb8","bindings/c/CanonicalCombiningClassMap.h":"5c280a2a559f2576201bf0daa3d1a3eefab1d2927cfe31c444bed0ce6f432828","bindings/c/CanonicalComposition.d.h":"df925944c539a7e99efd763d93d8cbe9e1beffea01e4f922ab6078fe000046ab","bindings/c/CanonicalComposition.h":"0e2e431044eadcdf8ed088ff728d2faa1c0626cc642ee3fcff26753fb484f0b4","bindings/c/CanonicalDecomposition.d.h":"3cc831ee6a88c39800163bc4b2d5ddcf08834515f51054f2d7ad9d4f6008d6aa","bindings/c/CanonicalDecomposition.h":"af75880e6e1bbb289252db9794abb6e8cc3c0c11542b478963c693d70049f27d","bindings/c/CaseMapCloser.d.h":"de1acab22ca11e09c7cd6eb6a5664f6b2e845c2dffa276696099e479058f3796","bindings/c/CaseMapCloser.h":"a4ea5fd7c7f700cec2e307802b3a81980e433d878899633a464625a223c889c8","bindings/c/CaseMapper.d.h":"f93c65c2ff8d7d241d816d93f98d3a2d3b1b6a94ce8df54f2479e9417319e3c6","bindings/c/CaseMapper.h":"55e3afa7f2fed99427fac15aa9998734281f50eb5c2d2058087cdad216b27f5d","bindings/c/CodePointMapData16.d.h":"09f20e6e045e6bd418030883e6371ae58c8b41bed93e219c1d03ca4963e8bf62","bindings/c/CodePointMapData16.h":"892a4ec1ad7bbce86f876e1df97797648b6a7eff04d8ff690134365239e93bc0","bindings/c/CodePointMapData8.d.h":"cf96a7a5d179aa169766371f57bd304a4bae0f1fde042c527b5f4b9e4b20e43c","bindings/c/CodePointMapData8.h":"c1f975c1c6b59eec653d950fe0b36fc212f31149f55b22ddfedec63ee910ebb0","bindings/c/CodePointRangeIterator.d.h":"f7946729f8927c0c792f64b62a3f76790fed0e10b0704167b7474d889b3a36fd","bindings/c/CodePointRangeIterator.h":"f54360908e92f928e5ca85189a85b1346a6af0f7380b4854b522ccad35732b15","bindings/c/CodePointRangeIteratorResult.d.h":"abaab00f1d11a26d3bbd079de96f7dba49782246a41c13a4ee9c220d59286453","bindings/c/CodePointRangeIteratorResult.h":"5f89f714d149099d89ef399d04940e6c62ff849c9e56d99528efb505d987135c","bindings/c/CodePointSetBuilder.d.h":"af23b3c0dde53603346a764f1a47fd6846bd6eadd623bed54983902a91d94e3d","bindings/c/CodePointSetBuilder.h":"a024420b33ba95b217f21a6f863bc4b3ba738797b67f0861e5c24720da945957","bindings/c/CodePointSetData.d.h":"72f128435da98b357dcc5ef6324ceaa16a4d310c148bbe228389a81900472856","bindings/c/CodePointSetData.h":"76f2e86c8a336f0d4e4271cde62e45271b18ecc676b0c6706a7b81b8ef7ec48b","bindings/c/Collator.d.h":"2b3fc788e160ac0ff6f0898146e94505e3c4f986412704be440587c440a7de01","bindings/c/Collator.h":"76c748fd4498058890950b8d7c6f1dc2d9a4d810b26ff71eb043ae909f477fa0","bindings/c/CollatorAlternateHandling.d.h":"0e9f3e004fe39d7a96be0d8d7c38f6c474923e22ce0f33963297c3a997b4e60b","bindings/c/CollatorAlternateHandling.h":"8c20c79bdc996cef83dd1f70b77000f899f42f29b369adfccade9084208cc68a","bindings/c/CollatorBackwardSecondLevel.d.h":"0f537ad8e4d72c91cd1d932d1b540970f5a6849aa2fb404f326558bb209f189a","bindings/c/CollatorBackwardSecondLevel.h":"85921bca2d4b270a4ab24455c2774623e0732b2272143efc54c0640b3dc7d053","bindings/c/CollatorCaseFirst.d.h":"a2c195d8d79f51d560a2f83050aa03360a2069edb6b99cb585b97e7ad49afaca","bindings/c/CollatorCaseFirst.h":"4ee69c4377dcb0354b7d5d6ce421648226e41615afbb0d4626528f9f6cfd6277","bindings/c/CollatorCaseLevel.d.h":"8714081644ac527d19947724f06e9c4ad3e78ab475167afff84f476d18749e60","bindings/c/CollatorCaseLevel.h":"c8a2bbf52c555f09555ee7acb9a81f0074d7b0f28c31a86d647e201f94e67e63","bindings/c/CollatorMaxVariable.d.h":"d092c1104b8253192b37ed6a0456e7ab7c2aff86471a10d5ee55bc6c05de0be7","bindings/c/CollatorMaxVariable.h":"f3bec8626f0434c3594f9b62b6a918cbef9b3957b8a994eadf888c1c289c32bf","bindings/c/CollatorNumericOrdering.d.h":"64e2f25cd6808fb4071a526dedbfe65d6ce0c635d5437bb61e7026bd84aa1dcb","bindings/c/CollatorNumericOrdering.h":"91cc858f526134b0b13cf61c757464b280468822b29b8f9648e8423eb51a94a3","bindings/c/CollatorOptionsV1.d.h":"b6f6daf99dd55afed230b1f900fa5bdad4180c96057638eea96e09e92188e32e","bindings/c/CollatorOptionsV1.h":"93c6c3bd2ea764fafde60614ec5c15c5e3bd9253e5c87456a5ed8bd87beb8d11","bindings/c/CollatorResolvedOptionsV1.d.h":"65ad906eeac0f83ef355665001897217953298e04cc51aa0099bcc971a745b4a","bindings/c/CollatorResolvedOptionsV1.h":"6b681bea384cdd2e3ae0722812fcad7bc433d2618bad6355493ee078c9872a6b","bindings/c/CollatorStrength.d.h":"ad0e01118b23b8b24d60dc8dfc69e506609d6da91712330947b74316ba887924","bindings/c/CollatorStrength.h":"fc54908816a6ef1f363b5d49a52290831168d98b0947a9906864a6b65d4c43e8","bindings/c/ComposingNormalizer.d.h":"3e741c2b3fb3fcd0d45693843419dc84c1ca6b9a72d57f04818d5b20e26627f7","bindings/c/ComposingNormalizer.h":"b4b77e6ec4e28ebf7c42ca7af2f2f4a2c7345afeb572e5adfc56aab4c46d80f1","bindings/c/DataError.d.h":"410d226b611e2bf2a34b572ee2ea253faffd84d7ba264e212b618cfa0a5e64a6","bindings/c/DataError.h":"65079ad72837a9520cc1f0f2c16c1902428da3daee3c3476fa58bb51c8905206","bindings/c/DataProvider.d.h":"6f449a57da39594e8ba3a23b2f714f89c751995ebc62b8a9117eda8fccc89abe","bindings/c/DataProvider.h":"b549d19190446cf546e87935687f14741004b84b5f4db97d511f64e1dd6dbb68","bindings/c/Date.d.h":"3ebcf20c05f4c0f3ff9832f27dd695e9853cb088a5a3ac59c1d3827171e9dfab","bindings/c/Date.h":"05b9fd7a33900da757032f86032a53434994fb5d461b71f44fe829e425e2ed60","bindings/c/DateFormatter.d.h":"07cdee871d662ce4feb3fb0f5875e2f690018ed9aa88aae0438d87fae11e3278","bindings/c/DateFormatter.h":"884f377197a57bd7cf2aa52df93b8df38cbeec9b1e72452bb00b6b74184e6bfb","bindings/c/DateTime.d.h":"eadf17f2c681167f46c9bbf4eba53af93eadb64f799262d4624a37abc604b1e3","bindings/c/DateTime.h":"6b67ce2534ba98327b56faead4d58743bf0e9dd7725955684351ff0850e5647b","bindings/c/DateTimeAlignment.d.h":"60cd92e2eba663f7545f9344ccfa9dc4e94e698a23431aebe46dae1a7c6e2a78","bindings/c/DateTimeAlignment.h":"b17ae3d0b303cf6ccab169f3be03a7c4da750c7f445bb2f82fe60114032b810d","bindings/c/DateTimeFormatError.d.h":"1d3a225b8a18aacd771c66247f24591cb0100b6fd47a5e896b2c701b4f9d37f1","bindings/c/DateTimeFormatError.h":"15a8f5a42967a16fced48269fd2a18cea853445f1aa0d13bdedbc3024fafa96e","bindings/c/DateTimeFormatter.d.h":"48c8b126512c0dada4585ec42ef0bdccbe98b87ebad298e7ead0fe1d45d8a00b","bindings/c/DateTimeFormatter.h":"722b04e9034f1cef4e96f6ead2e638985761939b4b5b0ad0befc1ec69ab71605","bindings/c/DateTimeFormatterGregorian.d.h":"7ac9e878c7d1db9fcf5d124eba9e9fce3ac04ef08fd7452b5d8c5b49d40f4cdf","bindings/c/DateTimeFormatterGregorian.h":"b9d3c798533efe6261fd180d8bcb095f013de56ef1383fc654032361b085e677","bindings/c/DateTimeFormatterLoadError.d.h":"2feb218e20d72c3f7b11260932cf6009d9cb9030251d99555c6ac0de2e0b7980","bindings/c/DateTimeFormatterLoadError.h":"55cca2f545fbe3044834e7644fe8df7615cf737ce0263a6d71513996c264a9f7","bindings/c/DateTimeLength.d.h":"d2eb01bebf090988e9a76ae4fa8f354c73f19b75f362f3f86fdc14c07abd140a","bindings/c/DateTimeLength.h":"1b6ed2cfcc784d2df5b03aebe88b540c992c2937dda136987769fcdbca9e76bf","bindings/c/DateTimeMismatchedCalendarError.d.h":"fe9e51f48669533d804a0ed2cafb10e83a0aba3eb36a169c3f5dcf1871989874","bindings/c/DateTimeMismatchedCalendarError.h":"6f2abfb2c19dea178482b57727a42ee4c818b946ad5f14eee2c24d482f96b1de","bindings/c/Decimal.d.h":"db0c6caa8f326bb92f4596385cc1d7135c2d29987080515956aae654b82f1fbb","bindings/c/Decimal.h":"2c8b11f2a2aace29f6934097cc58ce6c978c1d0dae7c3b200aa06c7211ceb3f9","bindings/c/DecimalFormatter.d.h":"df6c8e87dc140044ab90326b1818a4eda262cd502f998a8a00481bed7f18f3f9","bindings/c/DecimalFormatter.h":"b83cfbce1895df61d7031265264c0e9491c25c3d1cab2419f94e916c411de94f","bindings/c/DecimalGroupingStrategy.d.h":"61872cd10b03ceb56a98239b57bd66f78e892879a9b78f83a50176c792346ae6","bindings/c/DecimalGroupingStrategy.h":"d67f0cfe264aee922739ba2408956f1beb386a72eb5ec54c5814e4ba987c660e","bindings/c/Decomposed.d.h":"7a808d17c60bd8301227f32cbf5f6e84b44a1a533b7a0c067c4f46b7a2d8af02","bindings/c/Decomposed.h":"267f19b30f0ee53666681d2c9dd2ec1a80f6ee69fba03a69575930ca0fd066ae","bindings/c/DecomposingNormalizer.d.h":"41be99150d9ae7a6568e511e3965be6aead54bd814eaa1e1dd259ed72d10884c","bindings/c/DecomposingNormalizer.h":"1b55edd68d52913d5e336b32e42bf200e14b4573f82451dbcd07927c94e339c2","bindings/c/DisplayNamesFallback.d.h":"e5453dbd7287ff1ee7ba37674b3dcbd140b07aa919c68c367f08aadfd8be3c8a","bindings/c/DisplayNamesFallback.h":"449f62462e77efe76a4a83b07c4308eacfefe613742d4ff80dc22d30ba0aa9aa","bindings/c/DisplayNamesOptionsV1.d.h":"4dd0d11f628539b2ff3f828e8cc9a608783779e9f7c7239412b3c50ee9b0fbf8","bindings/c/DisplayNamesOptionsV1.h":"66f60efa89de90c1ec5a09186057e8644c36416a1574bcd67d0302e1c829deda","bindings/c/DisplayNamesStyle.d.h":"2c871965e5faa8d174e4497a32a5e44d8c8f8224768b91bc6ea3a2970fb09a5d","bindings/c/DisplayNamesStyle.h":"bed723192bad0852d81cf406debb1b0e830ee145fd6969735a2a45640b5207b9","bindings/c/EastAsianWidth.d.h":"5ad0e8a4980599c1a45c431861c64936fe7a4047da0b621bd22d4c789efe583e","bindings/c/EastAsianWidth.h":"c9399b4afe7b4bd3b95503c03674f66893fcac787edf4ae5255ee3e9526525bd","bindings/c/EmojiSetData.d.h":"a52e9955a4c8847a6c1ffff33c5695e9b7a3ff8e7e4cc06359cd0740b055bdd3","bindings/c/EmojiSetData.h":"a21f72477248e56cc60092ec624643159d828bbfe7777715b875555fe862fad2","bindings/c/ExemplarCharacters.d.h":"867538134ec987de7c1af60c9b2e24741bd27dd161f544d9ec05939230e89e4c","bindings/c/ExemplarCharacters.h":"c20aa0c72ae8d2ab5b1500e7aff3780b9c88949bd2bf33f926f62a6207450e3a","bindings/c/FixedDecimalLimitError.d.h":"468446838f02fdd5fda459b5ea46ca77d8081e97f712f18362a6df7320f2f9ed","bindings/c/FixedDecimalLimitError.h":"a67742d9e9567bcf2d9d4ddef421b5d277daf230dc35df84a0b750d754a1665e","bindings/c/FixedDecimalParseError.d.h":"4373df4e6d41485dce498d76bd857bca9e774fef8e77ee6afbcfaaba3c2f9455","bindings/c/FixedDecimalParseError.h":"7a688354ce80fd0fbef04df57ecedaa82caf1a984eb433c80e379d8606190f0c","bindings/c/FixedDecimalRoundingIncrement.d.h":"e046aabebecc77489131a197cd68bd94c708e52ca42843513c8b25c891d05062","bindings/c/FixedDecimalRoundingIncrement.h":"857df203a09d9bb5ea149fcaca9d5390312f72d3c1367a181b72900b10f7bb36","bindings/c/FixedDecimalSign.d.h":"038ed0d1c2141e852ee2055c50fe864edfdab585ccb0943d72fc4ef09baefc67","bindings/c/FixedDecimalSign.h":"c4b90dcdc2ef9f0ed9fc669af113a3191bb8b34d45fe4444dff5ad12a8ac9137","bindings/c/FixedDecimalSignDisplay.d.h":"5458f146359a999ce40f3181979d3e841bacf6c8f10a77e592984a2a9712587d","bindings/c/FixedDecimalSignDisplay.h":"a85e13558206b977d1e4dc996575d3925b29a1374e5458528de41ebc4afc32ab","bindings/c/FixedDecimalSignedRoundingMode.d.h":"645b2722692672860a2249995d98914be147154182af88c797ce44587c9d47df","bindings/c/FixedDecimalSignedRoundingMode.h":"fd57747bf1d8eeafa194e1949ee6e4edc06e7b25b76946fc754d498486f2ba0e","bindings/c/GeneralCategory.d.h":"f1280e741602d9b632d406dbf6e367ecafc68cd3c20bd0da1e965e3e1a8ca0a8","bindings/c/GeneralCategory.h":"d9465189bf297ef2a3c2cfb42c66b80d0f74710c3a5f7b8450fb2f06a2070669","bindings/c/GeneralCategoryGroup.d.h":"998f5a9311c52942b8297c97f04bca43220dd2d127f4650ebaffbaa74445768a","bindings/c/GeneralCategoryGroup.h":"4fb11e61219a3fb652fc297cd64ebb3b91c29a3b093fdbf74f9b7ea82c9954c9","bindings/c/GeneralCategoryNameToGroupMapper.d.h":"c922fd1de237f8fc289cbe5f474f2bc738747fd5c3660b8e08ff90008cebe50f","bindings/c/GeneralCategoryNameToGroupMapper.h":"242f049a13c68a8d34af0a220bb2c43fe61b0d2f124afb3a1aab502e0308580a","bindings/c/GraphemeClusterBreak.d.h":"532a9110ad41cd0024f529490f40829e0b592cf23d63a5d92ec51c7719fbe97a","bindings/c/GraphemeClusterBreak.h":"b07edf9bbb00221bc98528c88d452a01f9aa6d58a93408fb5b421629820d4dce","bindings/c/GraphemeClusterBreakIteratorLatin1.d.h":"f3a923ca5a9083f546498ee63f194f25c5060880c142fcb166af6f51f6e6a97e","bindings/c/GraphemeClusterBreakIteratorLatin1.h":"1f849f4a214198e3891e97f7f9907ca603f39666dfafc2867b747d9bc20bf2c9","bindings/c/GraphemeClusterBreakIteratorUtf16.d.h":"00a005060b0a942a53060ad23bc049a54391a6d8edb4eeb13f72c91025edd989","bindings/c/GraphemeClusterBreakIteratorUtf16.h":"a460a793adb464838adafbf60c0fdb79d8b18eddd9481e3d36839779653ea7cf","bindings/c/GraphemeClusterBreakIteratorUtf8.d.h":"9f40d64b40c6a6c382b18409367ecd592c67f4c11ee52aabbf99251bc977f0de","bindings/c/GraphemeClusterBreakIteratorUtf8.h":"9065afc6a6f41014c12df111cf98acd5d8c8bc275b89b3fecac18d02603b1fd8","bindings/c/GraphemeClusterSegmenter.d.h":"775f86d097835b6739012327191c9ecaffec5d0f2361c82fde0bbb8bc8dc8b7a","bindings/c/GraphemeClusterSegmenter.h":"243cf69b0514ec989a4227f9ce77f3f753776bdf6862cb3642ea790abcdcca6f","bindings/c/GregorianDateFormatter.d.h":"1a78a5f739e0657752f4718a225c50b2573080b038b72f01ab1bae22752029b6","bindings/c/GregorianDateFormatter.h":"06e05a57213b028b45efaa6479da3665ef4693bf7a2476cd60732523c535ccb2","bindings/c/GregorianZonedDateTimeFormatter.d.h":"03faa20c127cfeea3f5d75b395cfe11da4aade2ef5ccc67984431e6ab32464f5","bindings/c/GregorianZonedDateTimeFormatter.h":"a179d7e44d534d1c8ae79e369fa31b38ee17552cfd70f6b332459fc05467fad8","bindings/c/HangulSyllableType.d.h":"bc6e07deffdce32ee49307a43341fb0c2f2ddec92f90d63620cd96f6277ebf6c","bindings/c/HangulSyllableType.h":"03e3eed78697ddee8ac3f743cf6e781a4e21339132d3f13f7378957c33e75f3d","bindings/c/IanaParser.d.h":"26dac759d54c9ba7b281fa5b9eeb8d024b1ee46f2b0f751c8c5193df04dc36c4","bindings/c/IanaParser.h":"bcf701ea986dc5eae430c8e9231a7dc978aaaa433fe25ee7d90485932c723de8","bindings/c/IanaParserExtended.d.h":"41af2883abfeb9a608b3d0d5dd082effee70eb4aaaa0d2327e42f70666a379d0","bindings/c/IanaParserExtended.h":"196ef30892e575059cb51fa7933d5969e64c083e3679069fb9ee6d78b676a140","bindings/c/IndicSyllabicCategory.d.h":"006b5e52ec5b6ad3bb587442e58e35a086496192d1347d442f0b15426df03d0d","bindings/c/IndicSyllabicCategory.h":"d5e762d5ea2e2cb69c1e78ac32ac047bf366978095152088241b401b932a8342","bindings/c/IsoDate.d.h":"a771160bb8262952150cbd5cbaaf30b9a9855344a4ef4af56f0c3efa488acc2d","bindings/c/IsoDate.h":"e06079f6d4eb6019cfbcca371b6cb1b79e4a47fe36bd1429e6d005fbfe197e86","bindings/c/IsoDateTime.d.h":"19093dc9fa8eec29116da6251b482b7aa05e47d3acd04749d8482d41f06cafe9","bindings/c/IsoDateTime.h":"64131217c8e9b16355851fa35871bfc9bfb900562877a8c350d763202b9998d8","bindings/c/JoiningType.d.h":"7397f42c2532e8545e2a4d1673011901269985811dda4ec1b56cc8b44f7e52f5","bindings/c/JoiningType.h":"4e2bd84595e82b1e41eacbcad56b00c34a9405744a7b21c32462f473fbede50f","bindings/c/LanguageDisplay.d.h":"ceadc5aa4dca459dc56577b279967021d219346154aefda2da8b45b9aa849f7f","bindings/c/LanguageDisplay.h":"f19aea03762f8f43b5f3d80b04e79f96d082466c2f00debf77a7cfc3ee5a1ef0","bindings/c/LeadingAdjustment.d.h":"acc66a9d4006c8e526fdee2d81d5c63ef5f0fd49ad6e3b5da636f2ea4ca31f88","bindings/c/LeadingAdjustment.h":"aefe7fd311cc281294b1b701a0a0206e1cbff693ab7863cffc4bec5106dafcb7","bindings/c/LineBreak.d.h":"daa1443b157ceefcbe14b2373c08ab435692673aa47ce043abc5ac6ecee96d78","bindings/c/LineBreak.h":"6ffc9d9cc514e659de87df0708c121f53378b8ea1a0b39e1708c97f6159e7d04","bindings/c/LineBreakIteratorLatin1.d.h":"0aa45cf2767089df2ca53d489219008d754f50a0b1c2ffd6f5b3886b83ce20c0","bindings/c/LineBreakIteratorLatin1.h":"bd5b3cbb51eaab7c1b96e97f2b859035df529bbe7a045e3562522951c7709d80","bindings/c/LineBreakIteratorUtf16.d.h":"fcb6eb61ee3a9c6f45352e3dd5dd4ae7d5e7560a27d73a03d299394fdcc1ccf7","bindings/c/LineBreakIteratorUtf16.h":"373d5e7ca6e32b19955587cbe345cbfdb0a927d35fc32762d060d8e2421fb19b","bindings/c/LineBreakIteratorUtf8.d.h":"99c0a179376ac1e107d76aa215601a89a730c5d1eb55bd8151950bab0b3e114c","bindings/c/LineBreakIteratorUtf8.h":"dadc41bff54d4df2de0c53ab14d4e3cfd86540fbea966d6f5b02f89b7516b30e","bindings/c/LineBreakOptionsV2.d.h":"0b99a855b22f4ff6a2ca38585d3467cd434491e71a17235395423e38bc89280f","bindings/c/LineBreakOptionsV2.h":"34af5152b3b9310b58f119f45a138fad68a0b6294f0cc92449c1b709553b9a0b","bindings/c/LineBreakStrictness.d.h":"02aa87c66ce05a93bfdca8c0ecd3a8362f5eaa6c6e8f1c52005fd07c73f56e38","bindings/c/LineBreakStrictness.h":"6d0c5e3f49b1f6662796a757349ac2f4e77ca90b29fe73c086221f3b25ceccf8","bindings/c/LineBreakWordOption.d.h":"2155ccbdbc2a6a09a6aeea35c3e107946c23b913624e66de524327826286abea","bindings/c/LineBreakWordOption.h":"bad420473feda04345d8d229256402bca8e45dda303925ffc017e13e551a566f","bindings/c/LineSegmenter.d.h":"0b600ed88e80d7a6dbc4b539a0c758b787218b5bb3af49e3ac9b19bfeaa2d690","bindings/c/LineSegmenter.h":"47d56372d2fca2dc4496a33626ecb5bd7d41f6a10caf430ac7fae99aeaadf85f","bindings/c/ListFormatter.d.h":"054fa689f2a3ac5349d1c22bf29c7caadb5acabe3a821a08e8efdf08af6b37a5","bindings/c/ListFormatter.h":"755b65c07c7488552a782bba0da40aae6b46be28936fe17098c8f4db137fa073","bindings/c/ListLength.d.h":"a2eb83b187df4208e60537b93cc4cc58763d737c62ecfa857493d298882c1dbc","bindings/c/ListLength.h":"66624dba5dd0e1254c386b18eb16a68c0db324ad4845c7ee07d15415d1c0131b","bindings/c/Locale.d.h":"3d541338593cfbc9ea6e635158226cf7e7f0e01db5fe6829abe811e89c27588e","bindings/c/Locale.h":"729b4cec1e1fd1a3dc55826cd65bbed404d9ae0fc866ca40d19f105271d34de4","bindings/c/LocaleCanonicalizer.d.h":"809043b3ed894ab459a04e9a0799e5b83255a91cd812e9e39ff4cce5dc38a18a","bindings/c/LocaleCanonicalizer.h":"3e21b8d7e6504ff6bdbcb3e394aa6d1406d10c11bebb7de309a3f8eb0a0e1934","bindings/c/LocaleDirection.d.h":"a70cc7a8a9118c1cdfa3faf9b6b244bd3a3f75e9c7b48da44bd7d290c9c2e68e","bindings/c/LocaleDirection.h":"0e9c2a6c85fba0f1a88799620f4e80d68b6dfa563df4f90963abcdd47140b4c3","bindings/c/LocaleDirectionality.d.h":"8251189ccc5dfd81d6e897daeb379c0b6a26a68faf6918f973d2430c1a233c62","bindings/c/LocaleDirectionality.h":"e5a2cc2cfd1f820257c65451f4e2e39138115f4ac65e586ded6bcc8059d01dd0","bindings/c/LocaleDisplayNamesFormatter.d.h":"b5b4714e9863a4d768a99f3e0beb148b8f15b74d95a370c6e81d253b00ceff09","bindings/c/LocaleDisplayNamesFormatter.h":"bf2c92523e55c34c19f41605db8fe349ff30d01e5c66daa2a28fe17e2b3e8c2f","bindings/c/LocaleExpander.d.h":"a978a0f44e5a7533e5dc6eb08d7bfdcd92d1baec6431f7e2ec9c358392a7a43f","bindings/c/LocaleExpander.h":"7c57a8f57a621aee3196adc35415cbff1bd2e27fa22acf9eb82c6a0ae882355a","bindings/c/LocaleFallbackConfig.d.h":"e4e8e09ef60093fd3c9eb0804ad7bdae63448b571fd643eb71ed831902c806ac","bindings/c/LocaleFallbackConfig.h":"a1dfeb2000c03a3d11417d1be7c18f063f91aaae56c3b27ab88c8afaf99a9178","bindings/c/LocaleFallbackIterator.d.h":"a898755072b245536e2a04f759206d1323920d4c42fe0dff7bf9d712e821bf39","bindings/c/LocaleFallbackIterator.h":"3b01efcce6a83f4643cd5db4f50e9cb13374b13437a72c54862d2b7423968a10","bindings/c/LocaleFallbackPriority.d.h":"36b3e6b48103498c0b33045f6aa46ac10bc1aea875fdd49e0a38fc8694443706","bindings/c/LocaleFallbackPriority.h":"fca13f7ba8c4c15380e1d0475bfef2082a0160215f340fedda50183d371c882b","bindings/c/LocaleFallbacker.d.h":"f799d9e26fb147b8099e32ee2a856224575a287e79d6cd81600e183982feb750","bindings/c/LocaleFallbacker.h":"01452d74ee98774d1d5e8f069507fbb5b185392f5819e10d66337005570f61cd","bindings/c/LocaleFallbackerWithConfig.d.h":"5c57e3b438d1398a943324ed5d2076971be241713cc9d244e99cc205a953e2ac","bindings/c/LocaleFallbackerWithConfig.h":"a9be61370a078ffe9aebc37f0440d5b99a40bcb00a52cea69ca0d219531c044c","bindings/c/LocaleParseError.d.h":"930e3428868e33dc9b71bb4182ddc8dd43f63c53e2ecc2e1ad3733a5deb4a099","bindings/c/LocaleParseError.h":"5a84815d554f1368c43d63ce078f8f5d99a24f96a9d1f42fcbf57b927aad5fec","bindings/c/Logger.d.h":"b76cb931edfa746a337586cda4c5ce03566b03f149ec427f1c8ee7789ed999ab","bindings/c/Logger.h":"0ea889697e8a5f7b60a13f1503f9ee4e036b131ab8136ef210bb74fb7e526afa","bindings/c/MeasureUnit.d.h":"a35f1755ab94e6fcaedd39be508d2cf7169cd514ec2d803f5ef8103045d88c2c","bindings/c/MeasureUnit.h":"c8e696bf308086ea2849b97d8c80244b1f1e13628a82b42e2737ecb3a7f78e3a","bindings/c/MeasureUnitParser.d.h":"424890f37efe31368f080ef338b28c1d2fc5d0c38e79dfba3b2d00a3e583e460","bindings/c/MeasureUnitParser.h":"dfcf5027d558bfd4b929747b24d237af96766e9dc6c43afd8346429e2adb7cf7","bindings/c/NoCalendarFormatter.d.h":"fc959bd0b6869662b68568b1fe86cd24096ecf8811f7b7a11834a60395830c68","bindings/c/NoCalendarFormatter.h":"1381b4f7437649d278a9b08b681f2e8161b4bbd8adc3c24ac11c12e5ada9daa3","bindings/c/PluralCategories.d.h":"f663c1c1eedacb82cd2b8cadbc62c305fc133811847ca7a85f0b436b9e06e1b4","bindings/c/PluralCategories.h":"61a8321675d9a71e3ae33129ee6af62c8790404d8f76417cd8baa3c0ca31f634","bindings/c/PluralCategory.d.h":"b5e6e2181cb8a4be5ecfdc51260e2093b7fef0dabdb10c2864d48253b9c2ccb8","bindings/c/PluralCategory.h":"5c70d452df21b1c2e1ca48d0be58ccd06c804a9c5caf7a8f57cd43ab70d04a78","bindings/c/PluralOperands.d.h":"05a423777a61fdc718615c00f5d062a2c4b9e740b70f3dd44479e415ba1c427e","bindings/c/PluralOperands.h":"c0682ceb5c386e7658da8b94a8d25319d2c0db86a80fce8fb04cead108e5d620","bindings/c/PluralRules.d.h":"4bfeb606c70c0d7fba618d763ea8dd110cac24f9be9f11a73ea6b0094b44b6c8","bindings/c/PluralRules.h":"858f53f6d5552730d566d6cd6523396f665b0c1202c5abeaae2fff84365260d9","bindings/c/PropertyValueNameToEnumMapper.d.h":"06a1e38f582fcad66cc45b3cfba6dc18342ca80addc3a21096ce8cd3bc1c13b3","bindings/c/PropertyValueNameToEnumMapper.h":"da89098f24ec1b2ea9c9e5c92d11bef50efd31b537f88349b725a344158ef610","bindings/c/RegionDisplayNames.d.h":"06e9479b628655ca1a4f0a3092496513641f7cd79af0dc08f4ece0453a1dbe06","bindings/c/RegionDisplayNames.h":"aa863d21c37df05720edb2346cd52eec8b6287c87c350a6144d5beed2d74009a","bindings/c/ReorderedIndexMap.d.h":"2beb1e614588093eed86962aa5b37b1ae68c0145443cc06e225ebe81b043b24e","bindings/c/ReorderedIndexMap.h":"7f7cbd2cb50f1be3770916f426c51e4f080f4813226041d1b6dc0667c44acbe4","bindings/c/Script.d.h":"dc919ea6b49c09d196940e55f97609468db722051c5871b5c3b672a84c642c67","bindings/c/Script.h":"e97aa81b73ca534903cda246564b4b638ba440bc8674e55e9f6a5d470f72e397","bindings/c/ScriptExtensionsSet.d.h":"dc3db152e0f57110232bed53bf071f5894b105751b018039d6c972fbe24f211e","bindings/c/ScriptExtensionsSet.h":"8dac11be3a978b9c4a7375d46c8c3f08c4a0d8ff890db852ee7a44b0d44d4031","bindings/c/ScriptWithExtensions.d.h":"afe711a8df58de36f02b05303ad26d2658b9d052857f09fb3e3ed901a0c8bf46","bindings/c/ScriptWithExtensions.h":"b8edfdef9a5aabb902a6e6f96fbeb32a2d6a8d3fe4ff7bcfc1f16d0a8b704227","bindings/c/ScriptWithExtensionsBorrowed.d.h":"b9cb9ac9f74de93757f2e9731863de2b781878c722312f0f802c23f7089c4ba7","bindings/c/ScriptWithExtensionsBorrowed.h":"de738d07a8b21c6ce541f77c6b171c7cab936cc74c8b5a24b4907c51a5837db3","bindings/c/SegmenterWordType.d.h":"2b787c9a44c886b88655776bf456364d7db46f2326f508e7e36de8ab084915a8","bindings/c/SegmenterWordType.h":"5dcc9f86e4f8ad4ef0a349c65c7628330c2a546aed9056ab527082db3cc8b6bf","bindings/c/SentenceBreak.d.h":"e840605dd501edb11ece4ed1057543aeac2630ea0d36eeddb8e7fedaf9a618be","bindings/c/SentenceBreak.h":"306ddd0c978b8d4d22fe1ec81a8bd942816d7d7bcba4613be12b7f461f5be85c","bindings/c/SentenceBreakIteratorLatin1.d.h":"ac90b663aaa4dd1b2e91202c6907afc6f46a6db757a027361b8ba0bd511f45e5","bindings/c/SentenceBreakIteratorLatin1.h":"6faf4cb92dfb2cd2b11e0952ebd6e68bbad71f0729385dfb48df616c1413213e","bindings/c/SentenceBreakIteratorUtf16.d.h":"963b946cc6634484a30d013843018d95df458e580db81efa45d32291773ab11a","bindings/c/SentenceBreakIteratorUtf16.h":"cbad37d5638975e5c8b8672d2289157c18d7d105aaca7f7ad00b3292ad311c44","bindings/c/SentenceBreakIteratorUtf8.d.h":"c1d174ab816004f3cb7aa9ee267ddcd994a70b12cf39a63703cc8b685e8117f3","bindings/c/SentenceBreakIteratorUtf8.h":"e8120635641944a6d0719e86b650d31dec5480112454b919d299366b8f25e063","bindings/c/SentenceSegmenter.d.h":"4fa5860d591dc8417612586f66b0266f20511d169f032a81edbe03136c70cc0d","bindings/c/SentenceSegmenter.h":"ed15288c9f7dbbd2c4776775d83b6f90b3512e48e469d562b99e94b04db9bc2f","bindings/c/Time.d.h":"dc04bb08b66ac72cfdf38961e6f517068292e8b90eb990577d362587fd7b8b66","bindings/c/Time.h":"e3897eb723ed0ca3b98b0bba25f6346bd82d360e6469e8d241649d0d23f69d8b","bindings/c/TimePrecision.d.h":"ccb08494f5774dd5864ea15606f49e802e4d2fbb4930627be0ff2665fe1b243a","bindings/c/TimePrecision.h":"9f77799453de782088ff745df8b080d8bd85d4594b38528fc057ef97390d8bc9","bindings/c/TimeZone.d.h":"ebca80e19e5b91a648ba3fdb5549371736c5e9e93adc811e010a8f0650a98de0","bindings/c/TimeZone.h":"70f0810d43e3f1213fc8b16a650bcd44a0d7400dba8b9376f0b94ae94ab960c4","bindings/c/TimeZoneAndCanonical.d.h":"990c1357a5401f2491ca4724c87576986d2701e57abc16d807f6037328171ecf","bindings/c/TimeZoneAndCanonical.h":"efd5fa7127392d34904682f02eb431738ea96c20383a5f32caf01cf8066087af","bindings/c/TimeZoneAndCanonicalAndNormalized.d.h":"5a3106dc3650d351803f3386c55e3f2d55c41db60e098b16d55e4a89bc9765a2","bindings/c/TimeZoneAndCanonicalAndNormalized.h":"6d75fbde2e9b9ceb0ca24d4ce44563a80cf73bfb54bd68d29d9b250a5f8f0a5a","bindings/c/TimeZoneAndCanonicalAndNormalizedIterator.d.h":"97fc2b52f6877a1d2e40d964ed8af2f4e86e5752a236478a430e2845055c21c8","bindings/c/TimeZoneAndCanonicalAndNormalizedIterator.h":"7f09dec071f6dcabecf8096d3c0b1a5ceb44afa4e12b8f309fefa58177806bfa","bindings/c/TimeZoneAndCanonicalIterator.d.h":"cb1b754721c7d6c232d53bab19988f13a90e1e493d33518402a6a676de498abd","bindings/c/TimeZoneAndCanonicalIterator.h":"306d968515d1d178e97cce9460d8eb7d30008bfea29ee66c4039e9bde203dab8","bindings/c/TimeZoneInfo.d.h":"db5edfaaec97f134ff5e383dc85368592d17a50fd9fe5486a4b51ee391a845a7","bindings/c/TimeZoneInfo.h":"5f24e051fa3b3633085083741debfa986d25b83a17b3a916ab43bb3aa70a26d1","bindings/c/TimeZoneInvalidOffsetError.d.h":"035fecd5d9883f58674ef0c334765f36acac3ec7bcb616a77cb751f5a6898345","bindings/c/TimeZoneInvalidOffsetError.h":"6674dab3e52fdb611d18ee6f109b524317eaf94dbb3d0b386e484eb9234eeecb","bindings/c/TimeZoneIterator.d.h":"83fadcc9034cb1f77dd7bdf7bb633ad158cbc1f5c8ba985561be402e986723d0","bindings/c/TimeZoneIterator.h":"e85a3fa34c196580e5675f844e0f5247f85163dc45a647f4f3cf66498ba95213","bindings/c/TimeZoneVariant.d.h":"5ae1d731fffcc049b350003ba6bad76b92a429e69df1af4fa5a1b987245939ff","bindings/c/TimeZoneVariant.h":"673d6656a373b04286f09b76bdfda96f77d8c4ccd4a85704ea6a3321a1e28791","bindings/c/TitlecaseMapper.d.h":"63bfe8125205195c7b958f35d915255f64e740e3f0b6e291824747f75cf4a592","bindings/c/TitlecaseMapper.h":"4356a77659b945298b1207975741ebe91a4ebbe501149cfe6fee3991e3347709","bindings/c/TitlecaseOptionsV1.d.h":"7f18347eb2ee28ffcf50bea10d53c111badd9a9b35b76f183ae111c1f9af8ba4","bindings/c/TitlecaseOptionsV1.h":"92817350aef1be95a223d1e897e727b16e0d6015320c27117650d7cb993f87d2","bindings/c/TrailingCase.d.h":"fd8309e7762e1f4b7f83b9a04f2f7e3232ee9bb20335660bae75e9d92374533b","bindings/c/TrailingCase.h":"5d97c2d32f91267b171da08b2a877641d67e9bb2be05647042e4879eefa71417","bindings/c/TransformResult.d.h":"760ec98a7bad1ad513e21d00ee9f66f65234964835884e1d05a98b4b36d1eb0d","bindings/c/TransformResult.h":"b73eb96eff48061f46a99bd8309e0479be690223dc6baf5d1f6434a241cf16d2","bindings/c/UnitsConverter.d.h":"10a415cd39aeb8bf9ad021955c8a2316d8411758bea2552cc344e80cc6b47bb5","bindings/c/UnitsConverter.h":"bce9f1318b66e196a888cb7fd419bd64bbe47fc7692fd2ced37bb858da5e2267","bindings/c/UnitsConverterFactory.d.h":"53c26878b47ac9ae88ba13e5acb893bcf9e74af18ed82375a7c4a3170e2a41d4","bindings/c/UnitsConverterFactory.h":"0d2944f8606a4da12f99e544add8dd9808b425f1867e75dcb3fcfe0efda3c297","bindings/c/UtcOffset.d.h":"586af5fb5d3ecd6a94ecea04d4afdab66b05b376cb63b6554e575fff8abf25a5","bindings/c/UtcOffset.h":"1ade4350fd5ea7bf975ce791b645f869b0732f4cd910d6d776a11fcab9beecc7","bindings/c/UtcOffsetCalculator.d.h":"603d074606d0968668af8a23b00b8051f4e0869cd606be140ee1e5256bf826a6","bindings/c/UtcOffsetCalculator.h":"303080010e914e6dab9add0b401c5cf88639632da4ce12dfaae51f31f4011b71","bindings/c/UtcOffsets.d.h":"f76244df30660a30807423e32ebc670e58aa3adff72b2f2b3779a9156cee3904","bindings/c/UtcOffsets.h":"1435f98c5d2bc4078d91ff22dfb2d45810af43490bcd023eee45ac7ec74737b3","bindings/c/WeekCalculator.d.h":"f1af470ce09e57fbd7d8745f82672f6770660342073d777fb99f18a4f212d636","bindings/c/WeekCalculator.h":"6120e30673d909857bc4b5158e1bbf6d5bbc46964482c415942d2308b09ec7c1","bindings/c/WeekOf.d.h":"ff1cb6440f4984aa682080b1c290716a9254077d963b85b47bab3972c11e5008","bindings/c/WeekOf.h":"0923d5cbdfc410862488767b116d21ee74bc3d8143d8bf34a3409d887f9af71b","bindings/c/WeekRelativeUnit.d.h":"e10be7cb57f8896102c8aef8fbf8d83f7e9ea17c1333c4c5b0018fd7f9637b71","bindings/c/WeekRelativeUnit.h":"729bb98fd6de0a9ea455d17214a40308d105a4d92cba9567595091aff273f4ef","bindings/c/Weekday.d.h":"be84025ccd4d2a61a7da79666c6001a1eb74a3a4140d7720d9bd94d18e213add","bindings/c/Weekday.h":"786e601726976843668079b67e5dc875b5473ea70f19b1b96de679b8a3aa56a1","bindings/c/WeekendContainsDay.d.h":"51489e01f5387240b941fae6e27148da69120c3d7751c69977b82973dff04b73","bindings/c/WeekendContainsDay.h":"66e0ba943ad2e826cefccd5dfef499547e29abbbf3e880676973f8d2760d2418","bindings/c/WindowsParser.d.h":"59532f6893b335df41b008bb9cb540f1d5ec99229178e06dbca2dea867b537b5","bindings/c/WindowsParser.h":"e7f6a47d72695038cdc09fe5ceabb172079aab4eb80558edb5d9a74d6f566050","bindings/c/WordBreak.d.h":"0653976cbcd6aa2e19e65cce713b1f6731bd07daa1a75c5e1746198bd3281ad7","bindings/c/WordBreak.h":"273fd8f166c527253f275557586bfbb0c600bc56b403b95b6a73bf1868c3a3ec","bindings/c/WordBreakIteratorLatin1.d.h":"4b28d154b04b0e30718e0ddad890b8b1d26f3cc093bd63a03061e1c8d7ad455b","bindings/c/WordBreakIteratorLatin1.h":"9e68264cd7099b117fff82610679a82128e8b4bd1fceae4a73ff048f476148b4","bindings/c/WordBreakIteratorUtf16.d.h":"5c1797c5e04cd9252ea3b727837306cfa677db9551c4b14bd1ef04bf9f333ba0","bindings/c/WordBreakIteratorUtf16.h":"ee941f03f3242112a7ae7694d69261331842065c0f488aa8cfbed00bbbdb52c9","bindings/c/WordBreakIteratorUtf8.d.h":"9c6ab4dfbc0770372a83610bd5c5883ef5636d53c0f0ccc308801d58e6d024b1","bindings/c/WordBreakIteratorUtf8.h":"6180cedd9e76fff0ef86f73ff555466ac185bb02715e48023542ad2ec447dcfc","bindings/c/WordSegmenter.d.h":"ee74b469e9540674e24ab8197091747b47d262d8421c32472deacc89c85123cf","bindings/c/WordSegmenter.h":"826e34f7f908b54f75a92d8c89f291ed87322e8c5559aca01f0a064bce5bdb1c","bindings/c/YearStyle.d.h":"566179c81519787dfe73d1b9b1bc5bada04477a8b4f6805a77f4749ceabd2397","bindings/c/YearStyle.h":"cba28e105b8a94f1fa3532be903fac4b9120098242a4147d65bbfeed83c86442","bindings/c/ZonedDateTime.d.h":"a9d3ce09cfbc53211ae002fb41ff3adad43567d5d51a023acf2d39c2875e1422","bindings/c/ZonedDateTime.h":"92f18e6f704203734889dbaf907e705905b5721bf41707db194910d9a464ef13","bindings/c/ZonedDateTimeFormatter.d.h":"435c1e7dd58eaf6743c678df39c111e59cc3898e311331f61bba4cde6a716bea","bindings/c/ZonedDateTimeFormatter.h":"8d3b4a6c99e45c19da3a915ee1a4fb075719018c6d9d3d18ea568f2f03086ebb","bindings/c/ZonedIsoDateTime.d.h":"3f4730a6778b7d736d734849ecccb60572dee9102e2feb8c5b346e99b0c49a1a","bindings/c/ZonedIsoDateTime.h":"216a68a5c6dd362d8cac514faed471e04b28917310743936a2043bad1c14ebfa","bindings/c/diplomat_runtime.h":"5bd680d2f579a8975a72c37aa00cf85444a47e18ffd3b12f0a6df21ca8ffd902","bindings/cpp/diplomat_runtime.hpp":"343a8186f3c5036db23b0895bb3e7a105c47d79c290dc0513ce5c0fb0adb2427","bindings/cpp/icu4x/AnyCalendarKind.d.hpp":"784684a36de9ae82e1610e3e9449b9c129ee154b2c9c982df75c6ff65e83add9","bindings/cpp/icu4x/AnyCalendarKind.hpp":"9cc1d3bf27dfc6c65af73d9b8b4ee18fb0b635b02c873b1f9225a73c723557da","bindings/cpp/icu4x/Bidi.d.hpp":"3e14af75808ec7f1f0c2518dfb76b3ffcdd074b367c7640801038a124e747734","bindings/cpp/icu4x/Bidi.hpp":"a8c050581f5b3a94a6c8f39a4dc1258e842b975b3cee8aefc684c64d934c89f5","bindings/cpp/icu4x/BidiClass.d.hpp":"894bb6f5ade9d1f0ddc7c0c30526d9f9c39c7542c40abc3630b1ef581b29ba49","bindings/cpp/icu4x/BidiClass.hpp":"183f5dcabc03e6884b15efa96f9a747af0b2f137fe91708472b630a930fadf9c","bindings/cpp/icu4x/BidiDirection.d.hpp":"f2f6caec86153e12f07ed48c4aae53c1316c202c808687732fd45f8598b472e0","bindings/cpp/icu4x/BidiDirection.hpp":"390f7d58d8f55f9f689483b959417369e50b2e1b43003c8064916785cb730f58","bindings/cpp/icu4x/BidiInfo.d.hpp":"329f3c009e90d23deb0fc602c34ccce09c0e5c74e26e9aa6414757bdd44d0fa8","bindings/cpp/icu4x/BidiInfo.hpp":"c1b848b2d140dd975e06336b1b6a0669e8ad91e6b5602d1e94d1e5e65ee74f51","bindings/cpp/icu4x/BidiMirroringGlyph.d.hpp":"77eef3c648c75e433ea20ec2ee108d63165af9ff36bafd2d4acab87948e97750","bindings/cpp/icu4x/BidiMirroringGlyph.hpp":"739a7ec181f27e68019f081bb63a772a0c6ffa7f8e4795674317e69efc865d18","bindings/cpp/icu4x/BidiPairedBracketType.d.hpp":"b9762ef016be88371344142984b79348a95a86dc1706413da3c102af489538ed","bindings/cpp/icu4x/BidiPairedBracketType.hpp":"d5ff84abb41aac41a2f89076153e5493d53a05eb7c639a356393adc0504a1eb7","bindings/cpp/icu4x/BidiParagraph.d.hpp":"f66d03827958347b56810e63b0619822b981ef2e59706559ee9cd6b24714bbd0","bindings/cpp/icu4x/BidiParagraph.hpp":"60f8c7c874b6a888a134383e4fcca5d63108037ddf77955e04d4a38339e8b219","bindings/cpp/icu4x/Calendar.d.hpp":"2b4e555ca53173b6983ae30587c0dfac43d375e129ccab4f6ca95be953a8e2d1","bindings/cpp/icu4x/Calendar.hpp":"8690e92b672e9a8261cfd4d56b2042fa9be24ddeb9795214dfc0174cd6b6b568","bindings/cpp/icu4x/CalendarError.d.hpp":"74ab4732caacf465d656274afefb7a2ff6044cabde6ff9b0e88152e95406d63e","bindings/cpp/icu4x/CalendarError.hpp":"443e05f24d4f985db760ccee03c8d7a0735679b2eb3f03adbeb5975f75fc10ff","bindings/cpp/icu4x/CalendarParseError.d.hpp":"1ddee88c9e3654d73ba550d8fd9e627cf1a1ea238c5888353f5f786fd556f2b4","bindings/cpp/icu4x/CalendarParseError.hpp":"9a5762b1ac8823bbb00f8ec38b783b86728d1c9ec8847b9d59b59e43e73380ec","bindings/cpp/icu4x/CanonicalCombiningClass.d.hpp":"12580e4d9ce624639370208f7c289fc8120fcb516f737cc0397dbc015eb1984e","bindings/cpp/icu4x/CanonicalCombiningClass.hpp":"eea21f45881db7924b87ed962f4576f7e12d87c251afbd6cd950e4cc93722b49","bindings/cpp/icu4x/CanonicalCombiningClassMap.d.hpp":"2309afdeccc4590b92e0b93910c7d13c43845db56cf1d9efd9724e54ede9e006","bindings/cpp/icu4x/CanonicalCombiningClassMap.hpp":"3e13ee95554b601a75537ea85e1bbbb210d92ce72b344ef83772731e65c6c5e6","bindings/cpp/icu4x/CanonicalComposition.d.hpp":"c02973be23c910849ada8a77e0200a381f6221c1d1c73ecfb1a8083e2e487a4c","bindings/cpp/icu4x/CanonicalComposition.hpp":"87070d22fe060ea636df9ee99832daf12531cdee68f697e36a0d025cd1f4af87","bindings/cpp/icu4x/CanonicalDecomposition.d.hpp":"8a619ed12cc17b80a6b92f6f0b398fc5752a021c321c92e72911ddf20240712d","bindings/cpp/icu4x/CanonicalDecomposition.hpp":"3a252a47920df23a2b4a36ce51cb6b47fc47704229f67716d76999f5c8002bc8","bindings/cpp/icu4x/CaseMapCloser.d.hpp":"261fc28ea19c84ffbc19473531c10137aad90c6ecbdce07552df69379b750bde","bindings/cpp/icu4x/CaseMapCloser.hpp":"1d09077f0376c2d17a7be5e2962243f98827b1cbeab208f7fefbf025f5cf6a2d","bindings/cpp/icu4x/CaseMapper.d.hpp":"6c8cbffc6e2725fe81cd5100783673c51f0748517422e71d729ae7bc3f901852","bindings/cpp/icu4x/CaseMapper.hpp":"170c64b9d5c014a1146db6b712c33bc592be699f916b9745d993274cab38d396","bindings/cpp/icu4x/CodePointMapData16.d.hpp":"a5170ff331e9aee8aad8e7310e80b6caabb5dc3b5968f0b3b60afe68b265462c","bindings/cpp/icu4x/CodePointMapData16.hpp":"7131aba265ec97f9f4cf7e034d39da74c8037ddbbb3f046e70ab78c372201589","bindings/cpp/icu4x/CodePointMapData8.d.hpp":"d7c90b1da2b656c8a39f5ddf8e74ddc023fe11b2134543a7e3e7d45881f16250","bindings/cpp/icu4x/CodePointMapData8.hpp":"e0376545e07569337b0e09614bc192dfb20da0229233461002e7caac78a00227","bindings/cpp/icu4x/CodePointRangeIterator.d.hpp":"927bb2fe1dcf263701fca58a5e7f99cd650706a5eac94a5f939b022c435302e4","bindings/cpp/icu4x/CodePointRangeIterator.hpp":"b24d0eb175acd2e4878ea5682013430737e3e17aa355d28c376aae399a5f14fc","bindings/cpp/icu4x/CodePointRangeIteratorResult.d.hpp":"5ed3ce8b11b09a5d1ca7464c0d7ad2f8d0b6c10ad00115b77070158418f27015","bindings/cpp/icu4x/CodePointRangeIteratorResult.hpp":"6bbf9d3d745a1b4410f5cff132642e882d1377ac2efd19bdf5129deb5f371bfe","bindings/cpp/icu4x/CodePointSetBuilder.d.hpp":"a73581b2252fca5291ad85667e6228a0632fe5ad52008877856faec0fdc5f8a7","bindings/cpp/icu4x/CodePointSetBuilder.hpp":"232d3259fcf6f76bbf41b9cd747ac964db748164bbda4bea9a7f035dc32eb252","bindings/cpp/icu4x/CodePointSetData.d.hpp":"9f7fc9c90e3f595c044e59b902eadc805e0965053354d6dfabb8a2d549b5f543","bindings/cpp/icu4x/CodePointSetData.hpp":"c7ee836a8fed25ee28cd385d9cf91e9f219a0fb3894a7d3a5f9a27184d863b1a","bindings/cpp/icu4x/Collator.d.hpp":"c029c225f065530919c1c7163299d4f1dd329c4f811af6bb22b5a01d432a5b15","bindings/cpp/icu4x/Collator.hpp":"f699de29a78a4410251118202494076fb6fcef41a9d460f124b56cf9853cc03b","bindings/cpp/icu4x/CollatorAlternateHandling.d.hpp":"b461df75d1c4a8cd63740453b87dbb90a22c09c20eefeb828dd2bca10fc5fb5c","bindings/cpp/icu4x/CollatorAlternateHandling.hpp":"de3a312f6352234af938044348cb6203e973041fea6892b3d42c30b63475bc04","bindings/cpp/icu4x/CollatorBackwardSecondLevel.d.hpp":"8f8a0cde93e2288b46fefd60efca4f51b9723f0253a490cda02ff2298b0ca14e","bindings/cpp/icu4x/CollatorBackwardSecondLevel.hpp":"658eea4655a42ae5d6abb759abe5c04c89767146c18f83ce04718788c2338edd","bindings/cpp/icu4x/CollatorCaseFirst.d.hpp":"4c6f0c03e979bef4da0b0d2903ed22e596e18b26c55487476e013413c7909016","bindings/cpp/icu4x/CollatorCaseFirst.hpp":"61c720fc9576aeca89ed2441228e0f022f29084973385e2fbb903eefc76877ac","bindings/cpp/icu4x/CollatorCaseLevel.d.hpp":"85df48d22ed1d869351a5ac182b9122ef29d9f50256f6bbb734596e64788180c","bindings/cpp/icu4x/CollatorCaseLevel.hpp":"ea84aa359fdb42a9f109ae79e0a5b06c649a28bd89c4886f0e798b38647c4eb3","bindings/cpp/icu4x/CollatorMaxVariable.d.hpp":"bf52df7a4732832dcab8037eca73b9107e95f541da0697cb278802e223cd0f37","bindings/cpp/icu4x/CollatorMaxVariable.hpp":"c5e0e1336c01038925a8b6ee8cdf99c9f10c6c3ae405d52647aa3af503a8424e","bindings/cpp/icu4x/CollatorNumericOrdering.d.hpp":"b195d15097a43e59affee60ac292a9ca2256b4b39bc6b9cedac7045d6fbf07f7","bindings/cpp/icu4x/CollatorNumericOrdering.hpp":"0e4ced139f3aa7b6a7d845bafc8ffc1c9e8dd4842c0888414482b0de06f3f66d","bindings/cpp/icu4x/CollatorOptionsV1.d.hpp":"e0eeb7a3f8f53094f3f90fe270c924524d72d2b2420950c01b44fb8154f74e44","bindings/cpp/icu4x/CollatorOptionsV1.hpp":"3220a4e55401d885bf9510e2684abb615f4d6f5709ba6a8882c3983fe2d2d80e","bindings/cpp/icu4x/CollatorResolvedOptionsV1.d.hpp":"ab6358cf7d58a5e279e2b16238dcb4cdf62128de7de5dab350ffc62bc73b931f","bindings/cpp/icu4x/CollatorResolvedOptionsV1.hpp":"f26e2b5be38e251df55969031d4b068a29dad7806653466b6f5934291676351b","bindings/cpp/icu4x/CollatorStrength.d.hpp":"aa059b7e10c9afbdcdbae6dcabf9e8797a1c313fc6e8a3eed67175c181b992ae","bindings/cpp/icu4x/CollatorStrength.hpp":"7219e875e4cedbbf7e2f9f1bd585a84ec1be2dbb5a092cc3597609d21f2714e6","bindings/cpp/icu4x/ComposingNormalizer.d.hpp":"a6c44ec90a3244312d7f3cc1e9f23377521adb90fcfbddf695912f78f705206c","bindings/cpp/icu4x/ComposingNormalizer.hpp":"3ea96b23b0f4ebfbe2f651684eceafa44b14707166e04c446dc6beac03b95ee6","bindings/cpp/icu4x/DataError.d.hpp":"fdb3cbbc6b8274574a27a4ac3a00f1a730d0f17b4b3ef22d332413f33d97dfbf","bindings/cpp/icu4x/DataError.hpp":"5862b7d7c9399cee273ec84ba0edb29ba51bc452e20be07519cf6572305ca230","bindings/cpp/icu4x/DataProvider.d.hpp":"7b6ddbcd114361ff63a5c714f7a8ed9635b27d16140e3a3c357386e27728b7f0","bindings/cpp/icu4x/DataProvider.hpp":"04fdedff7dd570572910bf74a2ce9dad041f1cc9849471bd245c1cd73567ff3a","bindings/cpp/icu4x/Date.d.hpp":"90a4e8e3c91238fb7bedf7a4bc8235c358d0279901f1b064ad85e9553ce49b0d","bindings/cpp/icu4x/Date.hpp":"ac0ac0460c1941a7440fb853bbae7563b46a82a8058e163308aa2a0f16dac141","bindings/cpp/icu4x/DateFormatter.d.hpp":"af15a07b771b1931f2d04f09c26cf88dbe58d4dd6f901555dd461b0a3e4352b2","bindings/cpp/icu4x/DateFormatter.hpp":"16df4c74b80919ed85a354368b77a93f547df835cb0155ec8cebb170bf9bc1ea","bindings/cpp/icu4x/DateTime.d.hpp":"b41445cde4add6d0fe806e7a276bbd42853a1a266280deb12d30c7a69e0658a2","bindings/cpp/icu4x/DateTime.hpp":"ce52ff001aa7d89caa613ec068020711fc877ae738a884cb5da1fa4d0c34222b","bindings/cpp/icu4x/DateTimeAlignment.d.hpp":"e615c2f16d1bcf84b066cdda86dd8d0f8fcce72131dfe062d99cfa23915f3e7b","bindings/cpp/icu4x/DateTimeAlignment.hpp":"01c42afd6c6ef67a15821cf535537307f80a3780cb2bde3bbe724e12e5ec111f","bindings/cpp/icu4x/DateTimeFormatError.d.hpp":"fb4fe21193d4b65747b61251ccba862d6d4e4eb4be7615cd1626fe111e661104","bindings/cpp/icu4x/DateTimeFormatError.hpp":"d7eedf3c6280ae40655b7b15e4d554394a39cf0363f06f99a99db3d261ffce6c","bindings/cpp/icu4x/DateTimeFormatter.d.hpp":"c27a840cd157fce86075b73a9eff0cd54792e7b612dac64a09e4181f51b0986c","bindings/cpp/icu4x/DateTimeFormatter.hpp":"30ccf8e29a962387a6a092ad673558aa71fd69cdbf7856b217c23277f6b38b0f","bindings/cpp/icu4x/DateTimeFormatterGregorian.d.hpp":"b4d78b81cddc9cd05ab63954bd1367f33536857bfbc255332f883177d2057705","bindings/cpp/icu4x/DateTimeFormatterGregorian.hpp":"80244e4ed7ef476c845c28e9578d5605b5829f817b1591a4fc5d26615a8f42d9","bindings/cpp/icu4x/DateTimeFormatterLoadError.d.hpp":"597f855849dd6412b7cdcd50b6a4b755055c83687c819b30815cea3ab7162e93","bindings/cpp/icu4x/DateTimeFormatterLoadError.hpp":"f3508942e72cd4945f78aaf02e95834baccc4fb071581367f0e7035b9a42400e","bindings/cpp/icu4x/DateTimeLength.d.hpp":"435f9b88529f3bdb96b7f9399e66bfb8fccde9365763609a00c8482e246814c8","bindings/cpp/icu4x/DateTimeLength.hpp":"fe91c83e94a2d616c3a8f96a64a518868d3d86ecff053efe9ab10520b27d3283","bindings/cpp/icu4x/DateTimeMismatchedCalendarError.d.hpp":"aef13086854a6afd504f1434a377ea8c16a3e41a07a6d274d28c54f7ce3c6fd9","bindings/cpp/icu4x/DateTimeMismatchedCalendarError.hpp":"85175b8f4859911f5201152919195bb57e9bdd0458aa0959986b26240ebcb731","bindings/cpp/icu4x/Decimal.d.hpp":"e8710acfb74a0f77d17a8eb2a49eb85e97275a1f8d455224d72926a928274b3c","bindings/cpp/icu4x/Decimal.hpp":"d7bbd79105fc266fda2fb0aedc6abdeafdb1a67367cd6385b0ce3dc878faa775","bindings/cpp/icu4x/DecimalFormatter.d.hpp":"b281a0b35f20a6a1789fadd51c7f3a88af276625295ebddbccfd908134598334","bindings/cpp/icu4x/DecimalFormatter.hpp":"66f8a19ccb49c335200e65d0db6db4b455cfcc49f970f4a5966e565b2780dd25","bindings/cpp/icu4x/DecimalGroupingStrategy.d.hpp":"8dde4e8248334d1c925eb74c08ef42fa0018600021787f49c969a03ef346cb40","bindings/cpp/icu4x/DecimalGroupingStrategy.hpp":"4f44e2d5dc4b0004e9eb832572023a86cb2802991fd49163465d095e753373bf","bindings/cpp/icu4x/Decomposed.d.hpp":"0dfb5844f8b8fc903b9f4abc7806200b4eba721f2ee57bd164bd116e9a84eeb8","bindings/cpp/icu4x/Decomposed.hpp":"bc4116836fccdc55374ce47990b3caf744216e2459fa4ef5ebc0125957615a8d","bindings/cpp/icu4x/DecomposingNormalizer.d.hpp":"1724db59c1165e324d19eba5e2cb090477de899798aefd3f613aad3c22858b47","bindings/cpp/icu4x/DecomposingNormalizer.hpp":"1e759ff518721bde73a45ee9edb93a5684ef316d56aacbaeeaeb1bb2982572fe","bindings/cpp/icu4x/DisplayNamesFallback.d.hpp":"67cd56c9502ff4d2f42486f2415a7d11a076e10e6a581762624fbc3479e16cec","bindings/cpp/icu4x/DisplayNamesFallback.hpp":"4cbfe354ffeb7f10eff2029175bde4cbafabec942d6b1c876960dc5ea8911de7","bindings/cpp/icu4x/DisplayNamesOptionsV1.d.hpp":"cadc0fadcf00ed5404f45a7a7157b277a55f82145967e94fcdc984e4f882322d","bindings/cpp/icu4x/DisplayNamesOptionsV1.hpp":"509afb488c7fe5789956672e40223a0ee1afe498913655ba1f7bc7ca5f13f30d","bindings/cpp/icu4x/DisplayNamesStyle.d.hpp":"7850f5e6d00759e126481730861459ae41d122c30a908f53e1e4a195041359ee","bindings/cpp/icu4x/DisplayNamesStyle.hpp":"0bb9db8c5cd0d3cda0f452992f3fede73d1e142a632c5dcd76369db3395e1c4c","bindings/cpp/icu4x/EastAsianWidth.d.hpp":"300c3780850a33b06ab6917410d921da115ebc6bf0fdcc12c924fa0f8716ff95","bindings/cpp/icu4x/EastAsianWidth.hpp":"9a1d58bab917c51b280ca12e28b1c80ed24d6e86607c6c3d96c2204c71cc3362","bindings/cpp/icu4x/EmojiSetData.d.hpp":"8c20324282eeb45c9ee0698343b2759a944274d8d4da52683a2edfc9ce4cb49b","bindings/cpp/icu4x/EmojiSetData.hpp":"e58f7571a7bb8613760f6f57dee232cbd8134f1d48af9b240aaa89b51e2607a6","bindings/cpp/icu4x/ExemplarCharacters.d.hpp":"13b836a0f2e12cd00fa552450739f1e3b8dfb5168981dfb09e433b7896bacf3d","bindings/cpp/icu4x/ExemplarCharacters.hpp":"7f7e61497ccf08dea427eff1c471f4cdea8d5f1c9571369d2817eedea575c0b1","bindings/cpp/icu4x/FixedDecimalLimitError.d.hpp":"012eae501f7deaf2f0b5f2bbad1918650c1820a9833128e17ee4c8f591fb4a54","bindings/cpp/icu4x/FixedDecimalLimitError.hpp":"22af65a280740f4c53103c391758c36ccfcbc7c7409836fb9d9dcf33c87b8374","bindings/cpp/icu4x/FixedDecimalParseError.d.hpp":"5b4dbb098febad30a3ae7afeb0ee4c0e58e05eb23dd0ccf0c7c330a9cd140018","bindings/cpp/icu4x/FixedDecimalParseError.hpp":"c0ffdf5dd3336b5d09f0b85d667317fd63ca565677e5a8259dc46eb15a4d698e","bindings/cpp/icu4x/FixedDecimalRoundingIncrement.d.hpp":"c4f038abe288bd317a8b784ac3edb54ec60751cb8312ce42bdad5ec7ff709647","bindings/cpp/icu4x/FixedDecimalRoundingIncrement.hpp":"da623c9a08bac9e5609b8369fc43e831fc35794ceb712f0ab47d3ef0a375b9bb","bindings/cpp/icu4x/FixedDecimalSign.d.hpp":"430581e96f57e8d495e851d1e996a877a3b84fa5e452c8ff3be8540b6993f112","bindings/cpp/icu4x/FixedDecimalSign.hpp":"fb1aa3cf9f1cbc529df500d9b1a9fd185f48ee33ab0f8c94a55b4c1c91163cc8","bindings/cpp/icu4x/FixedDecimalSignDisplay.d.hpp":"c0294ed2656a8752fccee9bd0ec68a837f809a0dd2135b84d4007347ef6357d7","bindings/cpp/icu4x/FixedDecimalSignDisplay.hpp":"5a01117b0378d9181e8ae91ba7acb9d17925bd11a9a05f9f746ef568970dc436","bindings/cpp/icu4x/FixedDecimalSignedRoundingMode.d.hpp":"dd3a4e5278894ba1fdc523c08578a16f35e55dce179efd09d4fff9dc3beb7de0","bindings/cpp/icu4x/FixedDecimalSignedRoundingMode.hpp":"a5f340d42a0efdb1baec33908dca57aaee53148d9c7abb952ccbbff3d9127074","bindings/cpp/icu4x/GeneralCategory.d.hpp":"c302aa553d0d9b6e5fba3e5b96c4ec8e9f3969273b440ca67312b2dc2eed7ba0","bindings/cpp/icu4x/GeneralCategory.hpp":"647e4d75e0e4c10aedd93597c76756639ecf3983c2623b7184d1ab3b9dca766d","bindings/cpp/icu4x/GeneralCategoryGroup.d.hpp":"e27f25a5bd4d918dba292d1435fabae1d832e6b11951c50c4b1d6ed279fbfae9","bindings/cpp/icu4x/GeneralCategoryGroup.hpp":"882893898a0fec56537aac7c619aaa3652ca5a203f021ff221094e319f0db0e1","bindings/cpp/icu4x/GeneralCategoryNameToGroupMapper.d.hpp":"be52a9bd3a6209385296230b172b8d7610b08156511a6911a63ad940f71de366","bindings/cpp/icu4x/GeneralCategoryNameToGroupMapper.hpp":"f6fa7a5e4915fbed67dfbfa5018ad64ab5017d75d7287945d1a32d577777908e","bindings/cpp/icu4x/GraphemeClusterBreak.d.hpp":"ce3fa8539104defb56505836cca5564591c08b774e017a83ca472a9ac6b119b3","bindings/cpp/icu4x/GraphemeClusterBreak.hpp":"c7b1d16fbd1a2891b279afa2277730e371b9e2fc8334d6d95e0cb7ba501d3d08","bindings/cpp/icu4x/GraphemeClusterBreakIteratorLatin1.d.hpp":"374ed31e684930ba9cf22f35bb12c20d742c6883568a2fe785af994c2ece10e4","bindings/cpp/icu4x/GraphemeClusterBreakIteratorLatin1.hpp":"b6765fd47250dc492cc6bef083bf178e0589d120924c53748b64a46eff4ae69f","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf16.d.hpp":"80c3ea778c75b58cd72038944935dbee99532b289d5579b4d72438ec387831df","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf16.hpp":"1c1bca878e4813c7fc0e9a9e06f66e1e1628aaa791cccd1c3ada5d069cc2d414","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf8.d.hpp":"5f9a14fccdd2891b91a587fbc9f5f7055dffd4d80f0fe25392a47971097debc1","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf8.hpp":"12e4c1bc9cdeddf6eed8773c9fb6b04d40c74aa9f363c5e36d97ad0f5be75daf","bindings/cpp/icu4x/GraphemeClusterSegmenter.d.hpp":"4549cfeb90f251c41a635e980e4c7976933e0696eedc1c56405bfcefbb005ca7","bindings/cpp/icu4x/GraphemeClusterSegmenter.hpp":"194a78face91fbb82ee48579d435c1b63d01a04a0b62116bdef66d931fa952f5","bindings/cpp/icu4x/GregorianDateFormatter.d.hpp":"ba738d018619b6f710a6a500bce3c4490277b9ac22925055325e08ca0e246617","bindings/cpp/icu4x/GregorianDateFormatter.hpp":"061c3ad5353012a7dba23bba291b09a86ae4a1b7f968b8aaca89216fd65488c9","bindings/cpp/icu4x/GregorianZonedDateTimeFormatter.d.hpp":"284c4bc131ccf9f1f3ce7b95078dbe2d19b5cd9a695a6124c4aef8574065924f","bindings/cpp/icu4x/GregorianZonedDateTimeFormatter.hpp":"0204ba3674184bbbbc3f44af8e3588acbe791a75f4f8f7c5848842a4a94d19dc","bindings/cpp/icu4x/HangulSyllableType.d.hpp":"2d4d5a79ed0a0fc0d27c8e52db7e720d37442f1426719edd5fbba657bccd2bfa","bindings/cpp/icu4x/HangulSyllableType.hpp":"31e34f008de85ff1c5242d1f870a2d06ec2a74d436c1d48875019b706ad91a00","bindings/cpp/icu4x/IanaParser.d.hpp":"967e0d98dd4e977c90f2d1f647400340637c76f909d3c30e3e40e201a9898a02","bindings/cpp/icu4x/IanaParser.hpp":"86ebd5e54bf91c863b918df7a0786d57b06242594897ffb2cc2127837d5b691b","bindings/cpp/icu4x/IanaParserExtended.d.hpp":"f1aa9ecdc45ca4cec8975131f196afbe68615deb7288c529c252a2957da26033","bindings/cpp/icu4x/IanaParserExtended.hpp":"598d1f918c73a7c6fad2314c2b727e35a1f04e927fcb636259a22bf58c96912d","bindings/cpp/icu4x/IndicSyllabicCategory.d.hpp":"ac5fce5ccfa228036463cfb25c5fd48bc3f78817b9a2424847738924046c1fc9","bindings/cpp/icu4x/IndicSyllabicCategory.hpp":"2df9f8963edcdae6c7d5dd1c4ac6808cb0fd1e240b2f97d95e4b7f97b8a5d8ce","bindings/cpp/icu4x/IsoDate.d.hpp":"9c94583b7e70f69d00c895ee165cf09bb2d34aee681923f392260b98d5f2f1bc","bindings/cpp/icu4x/IsoDate.hpp":"7eed652388b52b3b5c34b6d9aed5bf84e0d319da0674a445c09a1792d309a122","bindings/cpp/icu4x/IsoDateTime.d.hpp":"7750280e1c04162683f7d992ed318d5c75e781c2e98e18c27ac1e200b8b0f5d5","bindings/cpp/icu4x/IsoDateTime.hpp":"2c2a7313d555a0a4fcc5ce934869c9856883afc44c48df3d19e951c86eda4573","bindings/cpp/icu4x/JoiningType.d.hpp":"01987ef0940a9213fd0a37a8033103a9d7954a0f3ecb9fc225f04aa47fe72d94","bindings/cpp/icu4x/JoiningType.hpp":"edd4b14b679bc381dc0aeaf36ad2601aad1cd67cd8cfa78bcbc0ddf78fd4c62e","bindings/cpp/icu4x/LanguageDisplay.d.hpp":"e41847952e219fcd00a9f07d162989f548bf14ffc878bf23f49658466ef73d2b","bindings/cpp/icu4x/LanguageDisplay.hpp":"dc5059fd07b0842e98c436b1e42581a38be5d910ac2c37aee6390df801e5a6e5","bindings/cpp/icu4x/LeadingAdjustment.d.hpp":"63a2eaa1df86b4c1e2792aeab1c6fe472bc40204bb8fbfdf3dc01e8ed96502f9","bindings/cpp/icu4x/LeadingAdjustment.hpp":"9c2e1943bdb4724e7b0e086144d9b1f6fcbbb1ef1a13899ad27d6f28f92b5554","bindings/cpp/icu4x/LineBreak.d.hpp":"e54bfcb6c828e079a2b8a89e596cebc059ea3828ce86b16f3d1bc3cbbe63b93e","bindings/cpp/icu4x/LineBreak.hpp":"9a326e45670e38424c2534bb3e4678667836d40d7d8a7fda353893b36aacf794","bindings/cpp/icu4x/LineBreakIteratorLatin1.d.hpp":"25a4f06c466646672b734e3668406a84fb014731b60c91abf7d0628ced09f81b","bindings/cpp/icu4x/LineBreakIteratorLatin1.hpp":"7440aa96ec7e1754cecb6eb35e8cab08725bfe396679067afcb1f92c1342df1d","bindings/cpp/icu4x/LineBreakIteratorUtf16.d.hpp":"a619a68d0b66533fecdd7a0a0ff0ed675105995fd8a0a5e75c9b1f748e38411b","bindings/cpp/icu4x/LineBreakIteratorUtf16.hpp":"65ee049fac5c05947f55ae7888fcebf05d80898449c2534870e4ff52eb635f96","bindings/cpp/icu4x/LineBreakIteratorUtf8.d.hpp":"3da5c0d53073b088fe7ee2ad778ac5ac2e545dd6f5282ddc31d530bd7ee0f7fb","bindings/cpp/icu4x/LineBreakIteratorUtf8.hpp":"ddc795324714c27436db8b0ffc03973982120fbf8de80d712d94c7db21c5a038","bindings/cpp/icu4x/LineBreakOptionsV2.d.hpp":"90c305a41cca24d0ede889cf8ea09a86dfd964cb4f3f29adf3cf8b844686a6d0","bindings/cpp/icu4x/LineBreakOptionsV2.hpp":"2ef2de5685e6eadb2aaeb3a74133e4877a1b258d55fb9aeb2bb2a33b912d599a","bindings/cpp/icu4x/LineBreakStrictness.d.hpp":"db8c8356262c50e474ad133ce951c9f6ed5f18584e060fa0b74e2b3980540952","bindings/cpp/icu4x/LineBreakStrictness.hpp":"9aa8de975e65837ae62c3ad7960e3563a260824304a6182896a451f80e803f87","bindings/cpp/icu4x/LineBreakWordOption.d.hpp":"3309e496c932b1175ba2df5909c15465e8ff43d92b5219b10fbb4960831233ff","bindings/cpp/icu4x/LineBreakWordOption.hpp":"78c793d8f8c30ff59e8b9780db78b927710b5d0e0c12ffc84475c8e0230890ca","bindings/cpp/icu4x/LineSegmenter.d.hpp":"550a11d0bcb53b13cd098b2ccdf3bd2fb5183ca7671c04815cb0b3dd5496a907","bindings/cpp/icu4x/LineSegmenter.hpp":"38621b075127b25d61beb18e113d955ea9d2bab86547f1d32197cb451cb98391","bindings/cpp/icu4x/ListFormatter.d.hpp":"0813ba0cfcf39623986636967a8c316a18d4759c386d2f7af50cd708302d5d53","bindings/cpp/icu4x/ListFormatter.hpp":"a9a18f811fefc51c031a63d285caf8720f35c6b3004d5c310b62bca0dc5e42ca","bindings/cpp/icu4x/ListLength.d.hpp":"80903eea1e50f6da03dc01e9900bbde4dc503b44a3a6ce1355e0ff5f2fe249ed","bindings/cpp/icu4x/ListLength.hpp":"4767e5a1f47cf9205ccbc82b94c1b84d5ac534d7b3d15ff62cf838fcab40ff67","bindings/cpp/icu4x/Locale.d.hpp":"2385f20805e345383ab0891ad9c2fdc5307b7218d164eca38e3cdecd73a32e87","bindings/cpp/icu4x/Locale.hpp":"af1ee05616edf7b231a179d3d11dbb8a6e6ae49cd6f7f8538cce61d336b01ce1","bindings/cpp/icu4x/LocaleCanonicalizer.d.hpp":"905a015dd60812529f2745870b13e52af0c33f18b656a5cbd25b1b3dbc80fd14","bindings/cpp/icu4x/LocaleCanonicalizer.hpp":"8e22851d614b8989688d8d6d8b8b391d83ab73ee69b7aaffe6d844db24890bd5","bindings/cpp/icu4x/LocaleDirection.d.hpp":"bfd2ed32155725b355bd2c7818c028a0b64f6a8d62ce33df481605fa4e57e97b","bindings/cpp/icu4x/LocaleDirection.hpp":"0b34c20f197f051a28c61d1d8657b3a12602c1159928aa6351fbd8722b746a00","bindings/cpp/icu4x/LocaleDirectionality.d.hpp":"e8abad66fa2b9819f4a87045738ec4e3987900205d591c38429a701dc3f9ae4f","bindings/cpp/icu4x/LocaleDirectionality.hpp":"cfb9096650b362cd2de502952ff067bd68d8a5d67b5cfdb3c423a5952e08a4e8","bindings/cpp/icu4x/LocaleDisplayNamesFormatter.d.hpp":"854b928ff4b5c3ad6667a12f07575521bd72a42504297acb2f159d51fc3ddb0f","bindings/cpp/icu4x/LocaleDisplayNamesFormatter.hpp":"db0fd8792ec4acc76da0364fbda0bdd13ec516ebe2872428e69a056a6f158123","bindings/cpp/icu4x/LocaleExpander.d.hpp":"cafb8b6d96a3c21196e727127f2d8eedc691a13802ff613a690a5e265da1815e","bindings/cpp/icu4x/LocaleExpander.hpp":"e00ade0a438be235f1aa2018d13f1df950ab65c414d602be51908ddefc00f047","bindings/cpp/icu4x/LocaleFallbackConfig.d.hpp":"078832c3ca6a0157bd96315e41acfe3be81d5e3c20f08a19f0c74f00f4af8365","bindings/cpp/icu4x/LocaleFallbackConfig.hpp":"7696ecef51ffc3693bef49c0f4246ffce40e05549d23a382799f556e28b17e98","bindings/cpp/icu4x/LocaleFallbackIterator.d.hpp":"940be5784fec9dc479137cceb21c176cf9f4466987585f66d818e3eebfa1f326","bindings/cpp/icu4x/LocaleFallbackIterator.hpp":"a8dd93399a84041721b6dbedcb7e692d75d7235163e9591b326a2befc5a05e1c","bindings/cpp/icu4x/LocaleFallbackPriority.d.hpp":"52bd8d8d596a7171276ba559960943b72523cc05132d36ece3729b86ee24ee6f","bindings/cpp/icu4x/LocaleFallbackPriority.hpp":"1451020b18e7fd46643d55a8ce239fb8416309bfcd5149a8f661fc46dc4ac019","bindings/cpp/icu4x/LocaleFallbacker.d.hpp":"5044cd2a129cab0820b1f7df206109e5445c50f4b4083c82fa1945384d8ffc08","bindings/cpp/icu4x/LocaleFallbacker.hpp":"0b27fd490785525a585dcc3d6e30391773d048ffadf45b081d63906fae67e8be","bindings/cpp/icu4x/LocaleFallbackerWithConfig.d.hpp":"5f99c6034a348c4ae486671c43572324a6daa75f296365d9ca01ee98e87fc286","bindings/cpp/icu4x/LocaleFallbackerWithConfig.hpp":"c7a09e7802401cfd98d14c2bf157062c5d7aba57e1e2380c29f9bd2e3a9ae891","bindings/cpp/icu4x/LocaleParseError.d.hpp":"20aca9b7480f33ec23846766ff929592600c7a8e8c93050d2c470426296e8f36","bindings/cpp/icu4x/LocaleParseError.hpp":"2a52497f428c49f3fa6f404930b65618917cb4c675f7946dad5d54242db3d653","bindings/cpp/icu4x/Logger.d.hpp":"ad6cad54946202ccede3a4248fe24a2a6a95954785a2a875e7e694e03294f079","bindings/cpp/icu4x/Logger.hpp":"24569d3546b6e3c8eb3c6bb0186549f068305122aa38aed32d82a767362d8d79","bindings/cpp/icu4x/MeasureUnit.d.hpp":"f38578b5f6ce9f211c287206eb52b0ef93fd1f510771be648ee7132807c5aabc","bindings/cpp/icu4x/MeasureUnit.hpp":"392822db290a37e167acd59bb54cdfa9b1718056d0e6b0414a116ae38a40fac8","bindings/cpp/icu4x/MeasureUnitParser.d.hpp":"c6ba5ecbf0d897be5e9da266d5cb943333d34b79aabf40405686f9a560f43131","bindings/cpp/icu4x/MeasureUnitParser.hpp":"e5afdb4d9473be449fb4b65670452b73747813ae675ae77d29ff6021ac45ce72","bindings/cpp/icu4x/NoCalendarFormatter.d.hpp":"1fdcff9df754785f2dea77f3a8cddf2d676182c0fc107383e7c81e3de753bfee","bindings/cpp/icu4x/NoCalendarFormatter.hpp":"59bd38e6db196c91402319b64705c187b497e4e946a6eea282d2cc1c61457088","bindings/cpp/icu4x/PluralCategories.d.hpp":"1a58a8e5b1b482c6c0dc15785e1de377fc567e18d0ac1b6bca26ccb2c5abc65a","bindings/cpp/icu4x/PluralCategories.hpp":"9b12dc447d07cb06f2b62b2d1148ccdf82dcc76c2c5a01844c424bddb45fc0e0","bindings/cpp/icu4x/PluralCategory.d.hpp":"3017f9de909bfbecb53550882ad9af0d848be29344c7ac4e2de540f9084d196e","bindings/cpp/icu4x/PluralCategory.hpp":"16376a3efefcc06237f7aec7b36b19c9e032dba6aa200d77ff1a3292635f1961","bindings/cpp/icu4x/PluralOperands.d.hpp":"e7bb2c06889bfbaf32a5f94d3b14778eb1f149964ae31aac042110732c8dc6e0","bindings/cpp/icu4x/PluralOperands.hpp":"2b03f93f1f15275fadf4837efeb5d9b7bd4db6e546fdee596c855e5060f0f7e7","bindings/cpp/icu4x/PluralRules.d.hpp":"3a259c1c13c33974876feec1e546cf816e83ec6068ad6ce8730b00c522fd9607","bindings/cpp/icu4x/PluralRules.hpp":"a6e508e3e6c6bece941eb7683b26fcc02e918daf60e75ca2f3e1fa7ffa03ce39","bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp":"319311a1784b16382469af923612fb6ecdfb4ae80a0addb828e259f648d45e57","bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp":"83b328e22d2ff2a33ca7b4c4f963fcd38043f7fa20490ac2f9977cdbe1067804","bindings/cpp/icu4x/RegionDisplayNames.d.hpp":"3272d4f77b17f4422e652a70be4e20905e6425f02ee633d3adfd2c4733cb7dad","bindings/cpp/icu4x/RegionDisplayNames.hpp":"ed2f49af95c5c48fc642362c1859e9d54d92b7ece3efe0e0cf4252b7daabfe2e","bindings/cpp/icu4x/ReorderedIndexMap.d.hpp":"d75ce824369081a7cd62d240f2cbd71c1a122323e9daae2d537ef02cec689b04","bindings/cpp/icu4x/ReorderedIndexMap.hpp":"7424d1cf61c43cafc8d3e3d802eb34e7bec33595e2aa70e893c7d1ad390e3540","bindings/cpp/icu4x/Script.d.hpp":"758d048e5a407d2ec5f1dd3357a014e5e60d77305e1477abcf683bd2d1c4ff0f","bindings/cpp/icu4x/Script.hpp":"0a2d52c5930a332894227db08ccea27d290600ac77fc3215126c13d3e28d6f47","bindings/cpp/icu4x/ScriptExtensionsSet.d.hpp":"78be1205f4871285afd2f856c60921142ce0321e2415047f4d77f1739cac4729","bindings/cpp/icu4x/ScriptExtensionsSet.hpp":"f7b9c7502955ab4321ffeb9aab8456f670e4ba54e1c5883029b03206030aa2f7","bindings/cpp/icu4x/ScriptWithExtensions.d.hpp":"85537899784ac1f4d531a3219721dc2a6d9432dd8850440838f038e9ed294a14","bindings/cpp/icu4x/ScriptWithExtensions.hpp":"32329a5f496d430db9c0c2614b51802dc13ec156ee9f8486b219e888c2740dc3","bindings/cpp/icu4x/ScriptWithExtensionsBorrowed.d.hpp":"2eff03ca26d3ec079d027cb920576f925d3e44b2689cbcd2dbd4edba595c98b1","bindings/cpp/icu4x/ScriptWithExtensionsBorrowed.hpp":"abc45b6af4431267a13ec16b3de846af86e5ea81cbac5a222ece8ad329f9c13f","bindings/cpp/icu4x/SegmenterWordType.d.hpp":"f9574775bd5eae7c53c0c23daecfc33896aadf70911dc5ada6326c4b3f6a1042","bindings/cpp/icu4x/SegmenterWordType.hpp":"2ee73b27aaa442cea122104657b8a031f3ad094d2f15001a137e54c3d4c91351","bindings/cpp/icu4x/SentenceBreak.d.hpp":"021fe7e6a987a7d552ed2316d621b4d7748800b26934a87e6cecc9114a27d93d","bindings/cpp/icu4x/SentenceBreak.hpp":"20576a6de86670a2320d7e514ba4378201f52f035ab694126a553f81247a85f3","bindings/cpp/icu4x/SentenceBreakIteratorLatin1.d.hpp":"6d5711954112bc922c155f769eb19a08bf627f3a96377be9db13e70d5c149e32","bindings/cpp/icu4x/SentenceBreakIteratorLatin1.hpp":"0ab44c165ab9308e05ee8105fd13e3b22a314e7474a2aa92898c23bc200f95f8","bindings/cpp/icu4x/SentenceBreakIteratorUtf16.d.hpp":"d8e0a822c05af8a92caa23b8f87332e811012c4485a7d34908e635b4b4a0323d","bindings/cpp/icu4x/SentenceBreakIteratorUtf16.hpp":"63e9d412364396dcec469e6a345130967ee4c6768fd2864707e2fead4a5bc576","bindings/cpp/icu4x/SentenceBreakIteratorUtf8.d.hpp":"4e6c6aab303d1800646e31522d43232c8212424776037edbc0d6709e3eb7226c","bindings/cpp/icu4x/SentenceBreakIteratorUtf8.hpp":"509bc7a8f7c7ba5fb521734c208f638720a507993c84371adf9d32cc1ac44fc1","bindings/cpp/icu4x/SentenceSegmenter.d.hpp":"55426e22476ecfefce5a27d64114d61a0f9d26749b3d0d4f5528d5a73e497be7","bindings/cpp/icu4x/SentenceSegmenter.hpp":"b8347394703781dace7a8de1ed3f1b0fc68b3b3ebe811b8f050ad31f4a5519e5","bindings/cpp/icu4x/Time.d.hpp":"8b6991f8773b689a940fcc09f8380d9585c5486d4f00ef854515652b3049ab90","bindings/cpp/icu4x/Time.hpp":"5f34e54bb6f30ee10d4ae7005d8307af26f273db92d1232190df14e23e545f69","bindings/cpp/icu4x/TimePrecision.d.hpp":"000e6838954d3c0b871ddb5ffd782bbfdb88f34df4aca56a683c3df5143b600d","bindings/cpp/icu4x/TimePrecision.hpp":"47bc229a5dcf46e5fc7d2abd5033ea5f6c9453fc5b3f2e3ee82d99ce70156fba","bindings/cpp/icu4x/TimeZone.d.hpp":"363bb9bd6d0a9a084c1bd7df06bde3184973a09de6e6c12d57deeb82b4c268cf","bindings/cpp/icu4x/TimeZone.hpp":"1f915ee122a3458243c1fe9b1701b0ebb1ce78f9d0be1e9dbb0b5328cf7370fb","bindings/cpp/icu4x/TimeZoneAndCanonical.d.hpp":"5eac2b90e3ca807e70de69018deda59bf83b0dd813ebfd7239f7e0788098d655","bindings/cpp/icu4x/TimeZoneAndCanonical.hpp":"33f2d7b8b0a71f3053d79432c403164ed418f1b2723bebe576727640a308257e","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalized.d.hpp":"15bbfb751d660dc47758ed3d691f9b78f7f3574f649f1b918313d50ea823e18f","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalized.hpp":"90f38429ff91044147be8403dfc6c6f8a071eb587d1a22bc6405c0c4aedff042","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalizedIterator.d.hpp":"6a4d4b82b312c1eabc0ce5bcf706c657982c3862e6001d5097fdbf83d63e3f0b","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalizedIterator.hpp":"2576c042d8c048939f6f15f70d983d2d6977e9cd6b1bef4a1657083603e8b9be","bindings/cpp/icu4x/TimeZoneAndCanonicalIterator.d.hpp":"362b1af47cf9063440bc26d9505411cae028b29ac835663c41ab04c25c05bf2f","bindings/cpp/icu4x/TimeZoneAndCanonicalIterator.hpp":"b6643f8b60d03f5cf3c77f54455af77966563852f85408bd6753405861ceedd7","bindings/cpp/icu4x/TimeZoneInfo.d.hpp":"2df70d87a18bceeea7d044f254df9ee737dcd4486da74b61831d62e187dac8c8","bindings/cpp/icu4x/TimeZoneInfo.hpp":"039b6408413c12b89f44a6024afe152f71c75fe4f5d0c78f3eb494b18dededc2","bindings/cpp/icu4x/TimeZoneInvalidOffsetError.d.hpp":"fc6cd1cb0c8fda5405297ee6811a10bcf20fbed75be11952f637ec5e0b488421","bindings/cpp/icu4x/TimeZoneInvalidOffsetError.hpp":"1be5d7cba83a8287a00f4fef8e00526fc900341ae731aadb0070a30ce99fb3f4","bindings/cpp/icu4x/TimeZoneIterator.d.hpp":"2285937ec22ca7d24c090efa82b07bf61f4c0f0cb232d8fe5c148c9283b34fe5","bindings/cpp/icu4x/TimeZoneIterator.hpp":"8df669878a973ea58f967057143e34a898b4245cf77c95e361a0a35735446d16","bindings/cpp/icu4x/TimeZoneVariant.d.hpp":"36a6a81d822fa3cb79953ad3496b051795436ac8731a7c5e86ed487dad2cded2","bindings/cpp/icu4x/TimeZoneVariant.hpp":"ce92808f208d245d29bf8a4e2b0a1fa93270859555eb60102fdfd621b05ba9ee","bindings/cpp/icu4x/TitlecaseMapper.d.hpp":"54a3d3f3021c3cfe5a927da6c34af0ee163c97a63952813d5489b4f0e507e18f","bindings/cpp/icu4x/TitlecaseMapper.hpp":"3f83b1b074c30d1b094affebadcfede4d2d76997ba893f587c0c55cfae965bb2","bindings/cpp/icu4x/TitlecaseOptionsV1.d.hpp":"58da939614d2e8613e1be34b5c2aacbdd10f05dc5343b925faa1af2a7c4fcb9c","bindings/cpp/icu4x/TitlecaseOptionsV1.hpp":"16e13dcf51bf5a910ff0751c28e0ad685b31bb171edc005bb8e3ce848d3fa699","bindings/cpp/icu4x/TrailingCase.d.hpp":"7251a1e929d8db9f8eeac3d5e62fef312a7c6e971171697d0499f83a371bd4e6","bindings/cpp/icu4x/TrailingCase.hpp":"96e77400d02755cb48033b3437c625cbf19859ffbf42e78a1a9840ae9629a38c","bindings/cpp/icu4x/TransformResult.d.hpp":"dd1e3504ea9c56bec86ed141e87a3b736034559ecff0778d69bd849cdf77fef7","bindings/cpp/icu4x/TransformResult.hpp":"6145cabacc972f6cdd22c40414cecd91feb80a812ea4b5d6a55f2b5cb03eae30","bindings/cpp/icu4x/UnitsConverter.d.hpp":"2bc1704dd51095c279fa162e5e49cfbf5f7c1bc307e490d143ca0a637496e3fa","bindings/cpp/icu4x/UnitsConverter.hpp":"e0857ca590221e94e508ba0dcc07f47353505555b4bc734654f5be43dccca242","bindings/cpp/icu4x/UnitsConverterFactory.d.hpp":"07240e9218b4c2c202fbc39a6bcbe3aa97a389b51429d5972301f1932637fbe5","bindings/cpp/icu4x/UnitsConverterFactory.hpp":"3d3527fe64be4f11eba3e4ea680923ef4c06fe888d5f1bb75aa035e6a22428ba","bindings/cpp/icu4x/UtcOffset.d.hpp":"03310aa18e90117665719d7a829d5d62fef6cc340e6a20c890dafdce99c9ff76","bindings/cpp/icu4x/UtcOffset.hpp":"1a7fb8a562331476388974b2982216587fa1cb10e3a5b5baa97be841532df090","bindings/cpp/icu4x/UtcOffsetCalculator.d.hpp":"16dd34d56fc6e743f76fbccbb221596e5cc79fe6243b3eca3a9af40a7024e23a","bindings/cpp/icu4x/UtcOffsetCalculator.hpp":"69ba66badcd2f3816596c643289ebe572bfc667c7ab817319a33867b11e9e2af","bindings/cpp/icu4x/UtcOffsets.d.hpp":"42b5be16bb2f2a93b00d80899e934cb6a8e573e087e99696b0741a1023d11556","bindings/cpp/icu4x/UtcOffsets.hpp":"58557ea4d7c529439cab6637988d995223f59e2ec6c1f59633d9d4d116ae41c8","bindings/cpp/icu4x/WeekCalculator.d.hpp":"126acf1b2cce017c4a4a034966b22f023693cc2eadfc4c14b6f3a122b99e6957","bindings/cpp/icu4x/WeekCalculator.hpp":"e55d860feaffb16fbe6db47fe1679d94a03ddbb4663083e728a4cb9a2757b279","bindings/cpp/icu4x/WeekOf.d.hpp":"de88e56b6930c767e757993429767f0751daa956bfe51c6ae2c25051bd5a968f","bindings/cpp/icu4x/WeekOf.hpp":"ba8052e96d4c85d732e1825675d7b937420d3f7a5349651e63fdc7a80e2213d2","bindings/cpp/icu4x/WeekRelativeUnit.d.hpp":"7760d841de3bc292c79e0cbd1b30aa6c08bc7ced13ebc3167e37ca9f9eaf1aec","bindings/cpp/icu4x/WeekRelativeUnit.hpp":"cf3e9830e3ab2e3d88b56b813bde13b901cd3cbcfbab8a2f90f3b8ad3f1dfd52","bindings/cpp/icu4x/Weekday.d.hpp":"06b0a5f5183240f42659837bb2bfb151abca09e2551733d02ec56c5dc49d0235","bindings/cpp/icu4x/Weekday.hpp":"4982e41691fbbec333c886ce2ceb06d3e9ddc4f71bab75979017ec823a4ee188","bindings/cpp/icu4x/WeekendContainsDay.d.hpp":"103a37e7cfa778602180eaaca75efe5a824716965081c05b66ec616b1385d7f5","bindings/cpp/icu4x/WeekendContainsDay.hpp":"9cf9435b232a5ec1adb908da1c46c36a69978282d0e19592fdfcbf09fd8eb710","bindings/cpp/icu4x/WindowsParser.d.hpp":"ab6f2f98cf28cbc73186d45df754c2747541d885a5760182e7fb739c761489f9","bindings/cpp/icu4x/WindowsParser.hpp":"d2cc046ab0000b1199818aca036c635810219af49f741286a26c2756c68d8899","bindings/cpp/icu4x/WordBreak.d.hpp":"88fbf3fae7404d9e9a9eed2b342b49d0ec63ed7ece3bb55284764f2797e1e993","bindings/cpp/icu4x/WordBreak.hpp":"0cfebc0e362dd26384ee770559be312a560927491379fe4141656ac86176bbcf","bindings/cpp/icu4x/WordBreakIteratorLatin1.d.hpp":"385f3788965e0cf0caf6ed08f6acbe067d4bd5e7c7d916a5e1d212684a0955fb","bindings/cpp/icu4x/WordBreakIteratorLatin1.hpp":"5a3e10b6946cc30acd1eb7e3042bcf8c909e943a80b8ecac548b8509b12d474a","bindings/cpp/icu4x/WordBreakIteratorUtf16.d.hpp":"5875f93babfbcf7073f4ec248195571afa4d5a2f9781c44946140826be9b4ac0","bindings/cpp/icu4x/WordBreakIteratorUtf16.hpp":"cde1ad5825a05d7b51b4bf6760b27e5bce9cd59f51ba04b6c0c19d77af3e4427","bindings/cpp/icu4x/WordBreakIteratorUtf8.d.hpp":"518534d358de76f7c290da09adc59e7961e67cb7a170e6a768a99658fc22c182","bindings/cpp/icu4x/WordBreakIteratorUtf8.hpp":"f67c96baba5b448adcdcbf627b908cfc7b32372142f9f0eb6436bdebd50b2f8f","bindings/cpp/icu4x/WordSegmenter.d.hpp":"8179a00f8f2f8385e89ef2539d42ba07b162812d7c134310b824f171d76b2e28","bindings/cpp/icu4x/WordSegmenter.hpp":"001199415c49b77dd1da050b0d48fb16e92358c0658d5b5e0597f010297768f1","bindings/cpp/icu4x/YearStyle.d.hpp":"50f794f1b245fa3644b4f3a9d72b062d93406b37ba5d2078767ef53c2d08107f","bindings/cpp/icu4x/YearStyle.hpp":"8e7144d507d6cd02cd569563a6ec925f426a5335ce903c009b7916d85a729efc","bindings/cpp/icu4x/ZonedDateTime.d.hpp":"11d509bad35472c982ab2653bc62c51abe190b6d164edb21cd020a2248701dab","bindings/cpp/icu4x/ZonedDateTime.hpp":"d58346a4e68cfdeb96cf8ab5e4a03f02886bfe97fa4f49ae93ce86387b30ceda","bindings/cpp/icu4x/ZonedDateTimeFormatter.d.hpp":"42ae6d65aff5654ce9ad41a31b7ae1fc66d1eafa18681e625fa8d72cddba9cfe","bindings/cpp/icu4x/ZonedDateTimeFormatter.hpp":"4d04e6fdfa1b0e1c9ead6b435906c7ab160675bb35adff62eded9d710431feab","bindings/cpp/icu4x/ZonedIsoDateTime.d.hpp":"4f65ad50c3d0f4f1265aa5f9f23f0cfdd5c2dc4ecc9906f3bccf1fdfdec47416","bindings/cpp/icu4x/ZonedIsoDateTime.hpp":"79045b200856f34373fc9eff853b00a3e95360af6447b618378bf69602cdb67f","bindings/demo_gen/AnyCalendarKind.d.ts":"24af227a7530df10ddb0d4eba27cefb7e87cd6806ccf5c04dbdb1ec16fcb9baa","bindings/demo_gen/AnyCalendarKind.mjs":"1e64eae6ed38394ce5f1adcb91ca98f0f359cd77b2ea83d534e161be94b416b2","bindings/demo_gen/CaseMapper.d.ts":"537c909adbf3da4451b5cd3bc05cb6c11f472005cc6a5a1be38d84a06ceb8dcf","bindings/demo_gen/CaseMapper.mjs":"6c9bc0b9343df5b5ba0937c3bc0b9e4a6c66febd0dd19b95208b73bd1997c01f","bindings/demo_gen/ComposingNormalizer.d.ts":"73479c803f68003566e868c3bac28ba75f6124ee083e7aa831c4e6bcc549b1fc","bindings/demo_gen/ComposingNormalizer.mjs":"c5eb13ff72b46056ccf017f352eb3667a700a8d9d6f461baced669d34e44e295","bindings/demo_gen/Date.d.ts":"42ebe6ea708bffcd8ccdc104bf13705e4b97d8d2fde2cac2825fa4e19864e1d1","bindings/demo_gen/Date.mjs":"3ffb986cd44b34a1e41a5b83e4882d1200cdb4c14fd604228e05935da13783e9","bindings/demo_gen/DateFormatter.d.ts":"774765e6ea1b8f1df0d01d6b7ae2047a300c69b6d5ac95e2a7d08c22f27af195","bindings/demo_gen/DateFormatter.mjs":"7ede9f26fc38abb799dfdbfacb4eaea156865a743ce1ad5407f5fadf44f135a3","bindings/demo_gen/DateTimeFormatter.d.ts":"4bc3c59ea6fcc7d2b9f0bde8e8c6988c66d2dcab690e3a47e807c2f1ae8afcf1","bindings/demo_gen/DateTimeFormatter.mjs":"2a1e9ceac84e3f1a25a1a2f8e3b794c82e0f16067645d9ac2c95a1ed11ee6341","bindings/demo_gen/DateTimeFormatterGregorian.d.ts":"54f5f7afecaa569f41714876ab563114e576ac4740ae245efdaa12b916d14561","bindings/demo_gen/DateTimeFormatterGregorian.mjs":"a6360dd501e9b5c38cb963a2d808d6d0b80c284683cfc31174e63c505383630c","bindings/demo_gen/Decimal.d.ts":"1cbffe9e2e32ed220abda9c50eacbaaee4dc2d8652de9461133ad4893e3a9701","bindings/demo_gen/Decimal.mjs":"8424cf0790e88e601afe247f13640b1cc9ffcd006610a024c1bd8a2c273dca82","bindings/demo_gen/DecimalFormatter.d.ts":"f5c529d04a83f9e985d9d28a9cadfe3115ac68c1d8b9a78689df2f17a21b0be6","bindings/demo_gen/DecimalFormatter.mjs":"62b1f88f8bcef543ca3b6540aa651dc0a27127578ca260abfe4094bfb445ce30","bindings/demo_gen/DecomposingNormalizer.d.ts":"9ec46211e19800c4269fdaa650f12240159455043669b0e33bebafd8be19948a","bindings/demo_gen/DecomposingNormalizer.mjs":"83bf095c78986edd4753c28c15ed4eaa52a93122ba68143676cae0889a905c58","bindings/demo_gen/GregorianDateFormatter.d.ts":"f32cb24ec9f7ada75067c038fef24815bd8d63edf96cbbd51c581537f8abe664","bindings/demo_gen/GregorianDateFormatter.mjs":"fee675d74b8918bd5708b6d5aced48d66b72950f21486a01b788908d7df4c040","bindings/demo_gen/GregorianZonedDateTimeFormatter.d.ts":"62001852e9f54c64493d1cd007760598024679596df92a09b14188c1d44ad288","bindings/demo_gen/GregorianZonedDateTimeFormatter.mjs":"eb40d52ca25bf0995b83fcfd4b9544ed66fd586e71a1d89961f7e59a97fc15a9","bindings/demo_gen/ListFormatter.d.ts":"2c4cb2c816d285bdc9eb8844b21693dad9515b446b4cc17b5172d9a0f8479299","bindings/demo_gen/ListFormatter.mjs":"143223eab5db01551875700cd026e5d820cb6fab4a7880d0ca588047031abb7b","bindings/demo_gen/Locale.d.ts":"5c3541bf9d8f1a248d26b0774bd86df314619274e4df68411faf85cd0a469407","bindings/demo_gen/Locale.mjs":"88e42ab39387dd0b9b47cecd180d6c52ece3d5e932c136435fb19f874cb0d89f","bindings/demo_gen/NoCalendarFormatter.d.ts":"1275024e0f98b0cd511648d270037e8244dd969d98f5e67538103e361c11d5a9","bindings/demo_gen/NoCalendarFormatter.mjs":"6d27626fa32b36a8cff8044257f68e9954c9c5232fd3f2d35f4ce68f75753d3c","bindings/demo_gen/TitlecaseMapper.d.ts":"13dc92eab39c47147c8c2e61ac27a5ff8b820bd7339630515257da4e722d296d","bindings/demo_gen/TitlecaseMapper.mjs":"c39327661f78c57736ee233368b0f88065d4c5560b4c12dbff5769f0cbde70f6","bindings/demo_gen/WordSegmenter.mjs":"7c86a07cd81434f0c9a57331e6585830fadcfce360a76f0b5b8a5bb08296c274","bindings/demo_gen/ZonedDateTimeFormatter.d.ts":"8d66bc156a4a7eb605e72efcd9bc1071f9de607fb17e8ce86ac4afae493a0cb6","bindings/demo_gen/ZonedDateTimeFormatter.mjs":"760784b7963ba034a7864fb8e51b3dc0c6143545b3555adb73aa32e08257509b","bindings/demo_gen/index.mjs":"2d7369a2e12628304b6b3b2bf2372ed9912fedd75d66608323dd3484b96df843","bindings/demo_gen/rendering/rendering.mjs":"b719f01566258a474ab7a3adb3f582ebc96b728d8b74917a7b24e45ad6bee6b8","bindings/demo_gen/rendering/runtime.mjs":"d83e6fcea07664206843c38558371343a2e88a90b9a8b96bb45a5d2e00b00777","bindings/demo_gen/rendering/template.html":"9fbe3205d857d8429c0621211bf3060dcb8c5c300c217772debe1cc0b2ca0b19","bindings/js/AnyCalendarKind.d.ts":"cb30eb79a1ab0d1ffb209a3cc1d5fc143ded60bd2b6ead502853e596ce617452","bindings/js/AnyCalendarKind.mjs":"7e97295a02e7057a21148893ed658d30974699bb75d8fd835f2175bdb7dc53d1","bindings/js/Bidi.d.ts":"3b76a8175cb1e18d69f970e9160d8bd88a3e89e6d6c27f427c37db72c2ae02fd","bindings/js/Bidi.mjs":"a22bfe94598fb3454b893d76319d690d5d4c98afa5245dab6b729c72b2486cfc","bindings/js/BidiClass.d.ts":"a949782343f9d8ed9efccd7ec7fcebdfa4338006701c3f4143d904ba04a82245","bindings/js/BidiClass.mjs":"e0048ffa8a27f731ea92a5f8dde934fdab20cccf116d879394c52885726698ea","bindings/js/BidiDirection.d.ts":"205d1795e130435688cecdb19d52f8104654abe00b171e5497d7df3354a08c17","bindings/js/BidiDirection.mjs":"4adaa12879696e2885358818e118cb351d87c3775dac1196d535a82241ffe261","bindings/js/BidiInfo.d.ts":"0781309bcd2ac4522dc1eeae988c27bc62e625bf98f80d12cc212ed2728bbb8a","bindings/js/BidiInfo.mjs":"97acb7b8116c915ac65dec19be58befffa753ad3250be59e344f42fb7450d14a","bindings/js/BidiMirroringGlyph.d.ts":"3156160305cb732a6b4d6147e6a1dd214fe02641f12d699b1492d677f3edbea2","bindings/js/BidiMirroringGlyph.mjs":"3c115f6f8bf1f0ad25d7db423eaa66d1244eff0a736c4807c39157901d20ad8d","bindings/js/BidiPairedBracketType.d.ts":"9116acdabae1f499793309b7f7fdd5fb5f07afb545e0ded40eee05faa95abe00","bindings/js/BidiPairedBracketType.mjs":"b870fcea31b1eaad0d69ea4508dabb141169d6e73d54609e358810bd434f1b0b","bindings/js/BidiParagraph.d.ts":"9fc8b580e8937c0afbbeeaf049c1e2e2eab79595596f7b1a0915f6ee024c1fa0","bindings/js/BidiParagraph.mjs":"a43d73406c8b072836e9067c5a978205ebc8282dde63e07e55b8680eded8b867","bindings/js/Calendar.d.ts":"af3ca6627b267d8bd532bbf25e15e25095056da30d3335770222fdac1686956b","bindings/js/Calendar.mjs":"e6daf3dae4e8913dd8e2d61332a59ddcd5ba2d09ae8b6e472922d58bd24dc7e8","bindings/js/CalendarError.d.ts":"0d50a165e5c459e9ead758ae749792391e822a6cd8086ad43fa572da305c20c6","bindings/js/CalendarError.mjs":"55fee40e5e4fd4f5406051695b16289b5d17111c0318a9332d68980d0ff548c2","bindings/js/CalendarParseError.d.ts":"bbd864e2293c437208135b51f2c17e69156cd655b49e79683978c496e3e3bdf6","bindings/js/CalendarParseError.mjs":"dc94217aec6a37477bfef898492912233185ad1303082f7fa52a186aa0bab540","bindings/js/CanonicalCombiningClass.d.ts":"a401a93da888c22a242fa24e8343c7186102697e6f67df6f61de2416e90d2afb","bindings/js/CanonicalCombiningClass.mjs":"467e81760a02e0c7a253c922e7f28ef0c260c66da857c105543bb376d34e369f","bindings/js/CanonicalCombiningClassMap.d.ts":"2c594e26c77ef964bede701cae0a4b09a008fbcbb36584e6f102954a1ea79b9b","bindings/js/CanonicalCombiningClassMap.mjs":"ac438a061320d8e228cb25a0ee9fc248d43360528a2a5c745ddd9429854d3220","bindings/js/CanonicalComposition.d.ts":"34afe9f3e6f1adbf2a663f8734edb81f461eb7c82fd1ae15fe7266e6507c1981","bindings/js/CanonicalComposition.mjs":"2745f4d1a7e82c121c5cac37477686cda387fb129f6e801c3c703cda8168822a","bindings/js/CanonicalDecomposition.d.ts":"6d8f8344b305b4b8f20587ef25069295a1216153a5a44941d4efce13ae778a4e","bindings/js/CanonicalDecomposition.mjs":"84b170ae405e14fa0bcf6dc9339c94580a7978595619f7790627aaccad89ec32","bindings/js/CaseMapCloser.d.ts":"824899eecaecd9a6827f6ccf1415a586140530efdc6a789946994af25b249c8b","bindings/js/CaseMapCloser.mjs":"916a30e5f9622ef8b34db5b58f9641ac48141d3cb75742343171f9da22bfabc3","bindings/js/CaseMapper.d.ts":"68230d1bc4bdcef4003e64a26ffbccf598d978eae3870ebeb6881b32bfa0bd86","bindings/js/CaseMapper.mjs":"7e53e0ee0d83cc352c29f2394e8c9a1103e7cbc3504ba62cc6f8dbefcecce386","bindings/js/CodePointMapData16.d.ts":"f38d87b223ade4a45a94a9ed2dd6d54703ae4c4e7fabaa6df9f6d804b6ec8003","bindings/js/CodePointMapData16.mjs":"da97e9b2bd8b0fe0b13a631873a4e88706783b36d2c925bef39fbec94ed1681d","bindings/js/CodePointMapData8.d.ts":"bfaee1884641be9d3fc4154cc70739f44ab428b22e91e93368447c6e45892078","bindings/js/CodePointMapData8.mjs":"0ab2f2ec6ff2401d292712f6463d57b5c8a2231cbc5f9b461d720af6ed305322","bindings/js/CodePointRangeIterator.d.ts":"33fe628655e1db883f5434225a10b6f51a7266ccb978f4a7e0a238897bb93b3b","bindings/js/CodePointRangeIterator.mjs":"0753f244bd34e05e5ed749c41642aad00c1821724f70337e335c617d343edbd5","bindings/js/CodePointRangeIteratorResult.d.ts":"ee6b2c180812b8111b4a4a8c0f9477051c37b63f5241e7f4d71a3871838f48ca","bindings/js/CodePointRangeIteratorResult.mjs":"66a403c320388a6a7ea5981cfb354bb15c2891686dfb886eaffe453da970e2d8","bindings/js/CodePointSetBuilder.d.ts":"43875b3524c4b824153df6c3fa279692cb4be8e614882e4b7cc12538d7c94d5b","bindings/js/CodePointSetBuilder.mjs":"20b069365a7a94632cd3d08aace534ee5432263f88f45d5ebd14474721e50225","bindings/js/CodePointSetData.d.ts":"8f60facf863231a0c22ff9903df9854aa981f163385aae829b1a9d43e840422e","bindings/js/CodePointSetData.mjs":"59cdc133c5902e8dd5a9e135e87b6f747cd35a40acb9bbae6e2c6eafbc5e2e8a","bindings/js/Collator.d.ts":"43f8ee940d2bfef14ea43977cc5679ceb20588b1784fcbd72b3eca8a06ff0ba4","bindings/js/Collator.mjs":"fb49aa28278d7174f2e15beaa18c1be5c8a960eadbb7489942d319c5c68aa035","bindings/js/CollatorAlternateHandling.d.ts":"ab78c2362b9c9d0cc680c178a268ae38ece3a3a669e86cf3a4a8f5f4938961df","bindings/js/CollatorAlternateHandling.mjs":"16bdc3418fb09ee2b049943db52587e8789a03f7fe8efc5c844035f1db2211e2","bindings/js/CollatorBackwardSecondLevel.d.ts":"e8625849347843d72047a81a4b7ea8ea888608062e6bef99b96723b0bf0f8cec","bindings/js/CollatorBackwardSecondLevel.mjs":"ff0c5a80d6487b78d46277b931696b8fd03111015509eb0998d1e8e0ebcbd7c7","bindings/js/CollatorCaseFirst.d.ts":"592d55d6e2107341180baec52614dbbb5a921e73c4a15e47e3d43dccf73443c6","bindings/js/CollatorCaseFirst.mjs":"054184e92448a8caf7a7387ff0d588d58157e9dcb60f72ea2f2ace446562d653","bindings/js/CollatorCaseLevel.d.ts":"50e2a73a515f7feabf57b261f035ccf5651541807522629765490ba213459717","bindings/js/CollatorCaseLevel.mjs":"765ca60774b2c1ca1fe7b63d88a75b4280de897851c5a4821bd15042e9779494","bindings/js/CollatorMaxVariable.d.ts":"fc4dfcba1c853187e28e122bfd564a2bdd50226e43c519470074255049a48900","bindings/js/CollatorMaxVariable.mjs":"79041e3a2fbe78e83d94d5b08c6ed32c41a135343e8824b69f5f043afd42c73f","bindings/js/CollatorNumericOrdering.d.ts":"6486316384a0ff4bf77b836c2b0d0c61afe59d3fb89674a4c08f7feae299ab35","bindings/js/CollatorNumericOrdering.mjs":"1d506076f28e11ad5667f7281f9b617eb50bad62ead2de6d1aa516e91508ed70","bindings/js/CollatorOptions.d.ts":"a837507fc9ec455b18c78a1cd5eb1f70c6ee6d2c0c7bced6bf9951be501a1253","bindings/js/CollatorOptions.mjs":"2015414170847673e4717c3b1d860982d21b723eb1751ec5f1d498db4ecd8fc5","bindings/js/CollatorResolvedOptions.d.ts":"ebfb3bb347b12fddf779e5fa0645e1299973ba9ad92aab96d4eb3ba0e32672b8","bindings/js/CollatorResolvedOptions.mjs":"bc964247ac8f9c869218f0a8beede347b60b24c59cb982c32011c3282ae91d25","bindings/js/CollatorStrength.d.ts":"cb5e3f71bbc1b97a20558d4430a8d73c91a585c4d49c9d54ecfaeb9fc07fbd27","bindings/js/CollatorStrength.mjs":"07d30cad729540f48617b3761defcb2a0ba4ce9bb9ba195348b8437e3c5ae0b3","bindings/js/ComposingNormalizer.d.ts":"70fe5410634cb78d15b2fde44a67b1112a2de2d1d0ca347802f4988420d34990","bindings/js/ComposingNormalizer.mjs":"cb129139fdc4aed7ceb17814998d783d936c387596353f9c0c601f9cfce01121","bindings/js/DataError.d.ts":"5024532df87073c3d4784edb83c37573c2139924456b1f6c3f47fe34f7040267","bindings/js/DataError.mjs":"7f90130dbf19bac798de99ac12fbd34d04d52cd0f21dc9cc833c2b008aa15629","bindings/js/DataProvider.d.ts":"97cadfd93d07cbc1dc95160ba4ebb74f4de05fbda6adb9468536a59a0ff6af1c","bindings/js/DataProvider.mjs":"deee39f1c06e661eabbf9d3c341eb17f99e1370c81f08a7058b8048e1a4ced8d","bindings/js/Date.d.ts":"d487ad233c1273815363054ceb4d8a83a66f4d12c42b74fccdc9f937899e850c","bindings/js/Date.mjs":"e425e468a994578d93eb7fa8c5118e139cbb707b80b1974ad7a6de3c25a8f78b","bindings/js/DateFormatter.d.ts":"a8545a713ee5fffc762f3fab2b7d69fa1a73b4cd2a1c7979159a5dbbc90a14c3","bindings/js/DateFormatter.mjs":"ab318a50cf8917236972b0c3ba18e324c68fca0b748e121eea2be6bb9cb27d67","bindings/js/DateTime.d.ts":"0b9d054a12ec409d64bb12fa832b8ec058878205d408b269c3f45b9003d989c9","bindings/js/DateTime.mjs":"981e265744649876526a9bbc6248d6ccb6b2fff878bf5cf6cd5adf127e992b7b","bindings/js/DateTimeAlignment.d.ts":"e0cebb28a861f14ffa645c323ad10aabd8fc761c6a19d31dd2e7f25d10ad1edf","bindings/js/DateTimeAlignment.mjs":"adf628206c0c8ea8e29b4e5ebbb10caeb66244bfd55da021cd2cfbe3f3a37146","bindings/js/DateTimeFormatError.d.ts":"f14cb3d229602da80d051989b50ced239dcd7aa038ffc04fbefcf4588afbf8a7","bindings/js/DateTimeFormatError.mjs":"a285f725645ea3a9d1ca347b90c776a4d16f6f9fb49a65899a85f752fc5a6c2f","bindings/js/DateTimeFormatter.d.ts":"6c18048adfdafb7567855d9d5540dc6829827bce5318d72a8d0f491e80e40b4d","bindings/js/DateTimeFormatter.mjs":"95e381d385455d002e3d7ba180ad7c2adb0dd2111a533aebdb0431cb407dff12","bindings/js/DateTimeFormatterGregorian.d.ts":"a0ef36bae5b33a001d16336b45fe02842b70bd5dd7a2baafb76452f68f2ca478","bindings/js/DateTimeFormatterGregorian.mjs":"d43c5f78ac4f3b81fd96f29eefdcb8bca810615815f04ac366fdd5ad799d5ff9","bindings/js/DateTimeFormatterLoadError.d.ts":"9693ab26a035af74f63d5efaad37b9436cf507b9279147e147941e56c4f8cdbb","bindings/js/DateTimeFormatterLoadError.mjs":"2c6cd1a65d9ced093215e0a7da0edd25d26cd0d7bf37a4a7e74ffd576cbfc382","bindings/js/DateTimeLength.d.ts":"37175c7f56c21ad2f51051cca24231b046cd382604c7f97d9bd04304cc338123","bindings/js/DateTimeLength.mjs":"e2849ea36049b3ffb1929893c85427cd21ffe022f2ab86d6e23f67f40d9ee9cb","bindings/js/DateTimeMismatchedCalendarError.d.ts":"5d2fa41322e9d06517880d5e6ac7647bb01d52e404120c606e294bc898269c9d","bindings/js/DateTimeMismatchedCalendarError.mjs":"140d3b2f15b13e34dce04106464f68c14c47ee4cb66b08852f8d40eeeb867c74","bindings/js/Decimal.d.ts":"a8012d7703815d41a51ce5ff5dcf2ec58daf01f70b3c3839da0b526b0dade290","bindings/js/Decimal.mjs":"f26726cef565bef033c0910a7530d244429399cef38764e78ffe1ad08444edb1","bindings/js/DecimalFormatter.d.ts":"451c1f990a0db607f40173db26bdde6922233671810ff738fb162b4532ff2b1d","bindings/js/DecimalFormatter.mjs":"17cdf8634a7d6509bba0a2b48fc459913286df03a7490b7b92ad5153107d98c4","bindings/js/DecimalGroupingStrategy.d.ts":"f7b369cd361674a6d13bf5af240d6a484158e05f14bcf14817c02dd6da6d7b9e","bindings/js/DecimalGroupingStrategy.mjs":"1eff0462ac7ef0765226385e7f72bd5d3afc466599ace1cc5404268a48d99fa3","bindings/js/Decomposed.d.ts":"73fc400b8a53d64703d9802f3dad7be417eddca336fd201ea4c47489255e8f4b","bindings/js/Decomposed.mjs":"f8108932aee01aa94d9d180c6afd3a02d479101b39c278975ed586b70fb6e77e","bindings/js/DecomposingNormalizer.d.ts":"deed5f2356724025e9753a70fdbcbdb28545624fae212e1b318084aadfadcd59","bindings/js/DecomposingNormalizer.mjs":"63521dda5018f24b77b6d924cb14b47c5b2d75a54747a32d56c4c223c1bef02e","bindings/js/DisplayNamesFallback.d.ts":"1380001c785771bba53f515881d136d860ac4f62ece92667e797e90facaba8da","bindings/js/DisplayNamesFallback.mjs":"d43ac28ac4df5693f5425e9ad54f1852933d95072d2f71c4f896a61f3559e2f8","bindings/js/DisplayNamesOptions.d.ts":"9a73203ba93f8f896edbd5d8d873af0f874bed6bb03f792bf185c76b0de28665","bindings/js/DisplayNamesOptions.mjs":"f9ba688f51a3b6b1611246c7d03ecad9afc70082d8cb0d4ae4a949c3e1ab7c89","bindings/js/DisplayNamesStyle.d.ts":"98c0557ed884e07ef59713cd729a276a0ded9b9dc20662324303ce945fe54236","bindings/js/DisplayNamesStyle.mjs":"d672f52b24634ae1de1bd0482ec7c25a559ddfb3e5e5ef7f5a5023f2d1d45bc4","bindings/js/EastAsianWidth.d.ts":"2dfdd8f29840fdc9a8aaea490e5577ee787b845e253c925fb5e9d2ee9bb05696","bindings/js/EastAsianWidth.mjs":"16b777d0a625b7ce46bee317bfc4a5bf26431962bd671c6a3c0eeec4660a732e","bindings/js/EmojiSetData.d.ts":"e72540b4c18795278259d22fbc00edd5856b26ed59002925b86d6adac322a767","bindings/js/EmojiSetData.mjs":"93ad7994f3f69ffac93a0d718d32213474c71fe71fc4841ed99ebca3234b935b","bindings/js/ExemplarCharacters.d.ts":"5e4d393eaa0a38c1d1f975a252e553efea594a013a6de9588fa860b55662b9d9","bindings/js/ExemplarCharacters.mjs":"d9e6d8b7696208ba33c187d5348c94c0985996aa892837f15a29ce3251aa3641","bindings/js/FixedDecimalLimitError.d.ts":"cefc353294e8cb7e479fe6176991af133b2d2fe52d36292d9bf8eb888a133e7a","bindings/js/FixedDecimalLimitError.mjs":"3901edb8bdd6f17bfa0a170158604490199b3b381d5018841627fd0d74d09c11","bindings/js/FixedDecimalParseError.d.ts":"bf89dee9e1d618e5730cc5e5f7c11de328c712470ea8504fadb589435db17b52","bindings/js/FixedDecimalParseError.mjs":"c0d70b7f4baa087efb28075b309e6cea2e50aeb91a6f24de9ee423fce905fa43","bindings/js/FixedDecimalRoundingIncrement.d.ts":"d20d642e3ca87887275dabb0eb3a4a9852605dafb6db69e39a9c1a80b3c70a97","bindings/js/FixedDecimalRoundingIncrement.mjs":"7d1ccc59b259848b590351bed84f34e19cee2c4be8f1f32cedd6bcf99be9094d","bindings/js/FixedDecimalSign.d.ts":"8f0fc371839b864dcf788a17c919f76c750e63eca10302b456368acd17d96a64","bindings/js/FixedDecimalSign.mjs":"b51d34d52fdb0da597f3a90d3e4bd55444c21a9479bec03965a738ffafe97951","bindings/js/FixedDecimalSignDisplay.d.ts":"1e786a1c8a36e1da3f2a3691fc113a63b372dc18990f07d6be9935208c74ffc5","bindings/js/FixedDecimalSignDisplay.mjs":"d0e1dc7eba034e9243906eb1ccdc0e68f008aff87d4bb13c9327ac6ba3737a29","bindings/js/FixedDecimalSignedRoundingMode.d.ts":"37f070140d20bec86ab4f62200b9120e8a9a8c217a564707425bc7aba65b2b82","bindings/js/FixedDecimalSignedRoundingMode.mjs":"f99da07189f1999290bdd3c10c557f593907fe53f44bfe63c371ce598d8a0afb","bindings/js/GeneralCategory.d.ts":"0d40cc67188496be4fd6023e526e41e9345c2b3e097c683e38af5a6d2ee7c77b","bindings/js/GeneralCategory.mjs":"4ac0aa324ea8ab062d334fed78628ecce699043cefadd4b9a61f92b194da6045","bindings/js/GeneralCategoryGroup.d.ts":"40fd3b6874c33fca3f4cf9e9ae7f2c8497b7cd758e79a8c2ac7a82a2c947c0c6","bindings/js/GeneralCategoryGroup.mjs":"53bda98ff0bdfcf3f8f002ddd25cebdbb857a0a4df683bc96cb5f71d276856c9","bindings/js/GeneralCategoryNameToGroupMapper.d.ts":"75be15a2d123550917a599ae9e565b66f610bde29fdbee12ace861541fa46f4e","bindings/js/GeneralCategoryNameToGroupMapper.mjs":"1565db164be015d8d42d7b20734e477632be10a920233b1c95ddbb9bb4bdda4c","bindings/js/GraphemeClusterBreak.d.ts":"828f08153f0d2de82962d12d288480e54383b1b88eb520705948466ec6c905eb","bindings/js/GraphemeClusterBreak.mjs":"f3df3a96e87b60a8d3accce3a44aff24558573ed6639221339728fb4e9d87e62","bindings/js/GraphemeClusterBreakIteratorLatin1.d.ts":"cbdb84dcfb31c54e7768259f25e7fc6770e3412b51cfce81a17ec2f04f52cdfe","bindings/js/GraphemeClusterBreakIteratorLatin1.mjs":"991f5f96ba4cced4ebcc30b3e4e15593dc8b99197aff59fd09595d230f627ddb","bindings/js/GraphemeClusterBreakIteratorUtf16.d.ts":"82ff06634f0ea07c32444b813b8ca14e3c3d61d7a5dc3eb63079e948051f4037","bindings/js/GraphemeClusterBreakIteratorUtf16.mjs":"eeabc65267ec03b8e91d0980c499d02660215c431e8b0b803ed1a606cc2a3b4c","bindings/js/GraphemeClusterBreakIteratorUtf8.d.ts":"b2f4d166bf03749d578623eb20b3a29e9ceca60f2ebba180124ab317a38d8b72","bindings/js/GraphemeClusterBreakIteratorUtf8.mjs":"18500dc7676755ff905b345f7417853851ae0b73caeac2eb22c6a10fbb60200d","bindings/js/GraphemeClusterSegmenter.d.ts":"d7344f6d0bc11ad150cefbe61cd699d9bb9539e3fdc22353f934dd63deaf5f38","bindings/js/GraphemeClusterSegmenter.mjs":"af8d9a2988d5ef66ca99140834b79231e2511accd3314c4f6de3c16b0b850348","bindings/js/GregorianDateFormatter.d.ts":"ae353899730a649ff5796eb740b7133ff29db0ecf06a74a67bfb50edcbd94f51","bindings/js/GregorianDateFormatter.mjs":"e1571b9066b0e191c4c4bc1de78c450e81192b986af08105e76088538b7e0886","bindings/js/GregorianZonedDateTimeFormatter.d.ts":"7f6c991da331041c9b68430ae59774a94c266082ba4a009e4b1658618ebd8ada","bindings/js/GregorianZonedDateTimeFormatter.mjs":"ffbfe7316bcdb3ad0e074e23018127f51f4de6048fd48968449197cd04f805f9","bindings/js/HangulSyllableType.d.ts":"4b9878cc7d8d4ce609171691caf300b03b094227d79a53db2db9d30e286c4775","bindings/js/HangulSyllableType.mjs":"40131302fe4c73c4faf3fd07d9022d822cb90c3f33cbeea115ebf1e9775610c7","bindings/js/IanaParser.d.ts":"1d646d92ff9c714356cf28261bdc9ade36cbcf9a42a28a97f9b6d8174df73bac","bindings/js/IanaParser.mjs":"d91b0ce0555ecac89fd46c05b6ae77e95b7b4755b01837cb02a04450db3bdddd","bindings/js/IanaParserExtended.d.ts":"6c4249c5e4c5baeb326aa6016fd19f7ddf5cff475ffdf94b6dca7123537bf8e0","bindings/js/IanaParserExtended.mjs":"5f68bca36a05057daa958bd3b960dadda475af4569a43cabc02d4e7cb090693d","bindings/js/IndicSyllabicCategory.d.ts":"cb508ab7768410d99fb913272a5827a8175b1f479fec2fbb5294b62bf7245bdd","bindings/js/IndicSyllabicCategory.mjs":"7e25bde0f81ec947dbb1abc40d2ad12f960814da7d19c31e6ecf4a88a34b74f7","bindings/js/IsoDate.d.ts":"fdc714f61fa3ac3a098aa2903d7ca1f102128f3c504a6a220f464189e4c1d822","bindings/js/IsoDate.mjs":"05108537f960a675860365ee7149541f79faca200ae5057c1d0d94ffdd2b0883","bindings/js/IsoDateTime.d.ts":"148604e94bcdf6e9f670df255f5d33d19e93154fe1a41900564817c714c58269","bindings/js/IsoDateTime.mjs":"dc903dd42fb3cf1fd87eba7c9aa386c344ffed6be7f45aac8b9f49db8167e82b","bindings/js/JoiningType.d.ts":"dd3da96cd8d364a001c86f2cff189255bed6217a6dfa3edb703dbb3da34f2ca5","bindings/js/JoiningType.mjs":"80cca8a4f71399583d25b2c92726d82a09f9c3e251d41e6432fa3c7cb9ef3594","bindings/js/LanguageDisplay.d.ts":"f8e58cb6a4f1def577273bb0a9534e11b79f2b711e002c80ce1385288a951b45","bindings/js/LanguageDisplay.mjs":"d31637811d466a45fc39c4d3baa7a901240b7ddbb491050d535543544661fe91","bindings/js/LeadingAdjustment.d.ts":"5bbe5cd7885bbe486702c8db4d64c117622895e816d3d2594cf9ead82faf4a62","bindings/js/LeadingAdjustment.mjs":"cec06847c13afeb530b11c2a94d16ad864585278d51125e010ebd886a1a48748","bindings/js/LineBreak.d.ts":"c793390e6c1043d80742aeba67b1d396bbe685b926d47e96644b2dd3bc85d33b","bindings/js/LineBreak.mjs":"f08d57bf3e13c7c98263ada34623a12395b3c7c2361a9d32edd202b25c62eda1","bindings/js/LineBreakIteratorLatin1.d.ts":"735abaf522eee94b1b7f29b664468e76e44b1493eb8e9ffa653d2965cec3e1d2","bindings/js/LineBreakIteratorLatin1.mjs":"19e7d0529c6ef92f0873802a7ba231ba2aadb673a430e6dda6882fbe8373d333","bindings/js/LineBreakIteratorUtf16.d.ts":"32b35ccedff17d0c8c0bc3672212e01b4ee21bd52b6f9510259faa9ff4445f12","bindings/js/LineBreakIteratorUtf16.mjs":"b28279c6d8830564705de5486112a8cdf0b44d59df683f7661c72dcfa9129618","bindings/js/LineBreakIteratorUtf8.d.ts":"3d542d8c663e14518c9d2573861d3383a013514dd19152c13732c8d3f85141ac","bindings/js/LineBreakIteratorUtf8.mjs":"d89e22abb4424dc11d1796d2a2cc63d35cb504e1b8e78274fd835710f538e62d","bindings/js/LineBreakOptions.d.ts":"fe418a67ae56d84fa912365dfc98d7cbdb2a804ed33b5c134051de3d756a1382","bindings/js/LineBreakOptions.mjs":"79bd1b5d54f00c79112ac54fdffbf5c270a90d8d107f7c0dfff47e2189ce57d5","bindings/js/LineBreakStrictness.d.ts":"bdfbc9d65f3507383c75bc86b9b329486a3e8873b107698bf902c1d6d950f461","bindings/js/LineBreakStrictness.mjs":"65cbcc7eb70291a1e206e4dbe91eebe9efac265863df354b2079bcdf7f0bd42c","bindings/js/LineBreakWordOption.d.ts":"2c33e2cc6f945f07a3bd14cdeebad9c7e6e36c8a2b1f1a86f9b5a26d75e7da82","bindings/js/LineBreakWordOption.mjs":"ef1dc54cba1838f4ac493413c516fc42c79c43fef89a9e5a7cefeedd3d3ce411","bindings/js/LineSegmenter.d.ts":"d63e166882f3c9ec6818c318a4a36bf20071acf7afff270e3047643ea9d84ea6","bindings/js/LineSegmenter.mjs":"5be931fe55f91c2653b4ef06a520d99572ea428af906c7108a56945b47083476","bindings/js/ListFormatter.d.ts":"c3011b09cabe838b7af949c7196fe3f9fc6e2986a2f9c8cb998857f1fe93913e","bindings/js/ListFormatter.mjs":"4569c5b29c0a3e1bd8140e165ebfe90f5a081f02716a6697479187fe8020f0be","bindings/js/ListLength.d.ts":"3423b19531b8a9906fb3989e367e4f6af68a1107c7a5e6d1cdbbdc4fc25632c1","bindings/js/ListLength.mjs":"5a1628d73f0d94650d5927b23fa15a2fefaf22d0d4c1afb2a9d8f4ef1cf46f4e","bindings/js/Locale.d.ts":"20e441146201aebacec7f44440df9a5b27abd8a94e21f0e441c8944080ff8bb9","bindings/js/Locale.mjs":"408c22a414feac938392116587fe4dbd5348fe947e4f18f9ec9cec9a392140de","bindings/js/LocaleCanonicalizer.d.ts":"71315fd9efcaaa04a551125b76e4a610700cac79efe3338de67d4dac6272fbbb","bindings/js/LocaleCanonicalizer.mjs":"a58910b0eedf0c829c996428e5aeacdaab2783799b8342d70c6f73994bf721fe","bindings/js/LocaleDirection.d.ts":"5dba05f6c1d002e69a5572aac98439ff94f6e60d1e7547e0ab2c77bc9d40da2e","bindings/js/LocaleDirection.mjs":"ecb917a5b1ffb9e568dadcadaf6bef997c2b75b4380e73c65d18544f19aff505","bindings/js/LocaleDirectionality.d.ts":"fcf8717abd7cbd9f4297c6a5a6dabd4436d45ce154784320dddf3976a45047b6","bindings/js/LocaleDirectionality.mjs":"ff7c6426c62675eacc1bafa3813cb4ef74d8e24009416892a85febd74cae4e88","bindings/js/LocaleDisplayNamesFormatter.d.ts":"ca4e5192c71faf9483723f2a5684e6f036ac6b5d26bd1c79eb53b0a1267384ca","bindings/js/LocaleDisplayNamesFormatter.mjs":"499ab1a2de638c0ec455b4bca7636e357198b6d12f1ab22bad9e4185e49cee5a","bindings/js/LocaleExpander.d.ts":"7bd397b1441622a469e3701876bc0ded6d63e9ede728efe762105704e9f17760","bindings/js/LocaleExpander.mjs":"f2c707b1bc581490ae4823b2e34bbfd2e8bcd865e71a0e8205378e517e1c4ba0","bindings/js/LocaleFallbackConfig.d.ts":"437e6151f967e9d90fda07a361c9cce907069c7b7a157d05ece9184c45901be8","bindings/js/LocaleFallbackConfig.mjs":"e6621ec4f9b87b284e9cfbfee4bd23ef583c0fe1fb7665f8b2c330b79292f0a1","bindings/js/LocaleFallbackIterator.d.ts":"317f462c9d0166b1fc6f184247f2c3aae135ae1422e60685ce0d897c0ba00300","bindings/js/LocaleFallbackIterator.mjs":"74cab78e9980debb0936ee8367a5b3480730b5641ec987aa3cd32d8ac867d8cc","bindings/js/LocaleFallbackPriority.d.ts":"0a5c7d07f9fe3a415394e36aac9a97e74dfb62007f649489425d598baad711a2","bindings/js/LocaleFallbackPriority.mjs":"694365106c9a5cdebfc52cf1e0ea3807b8de7bc2628778125db472f2a2fea65c","bindings/js/LocaleFallbacker.d.ts":"f660a129af891639cd0adc0343e2c8d5c77146ab2bcd5dc26782d9b14fa52955","bindings/js/LocaleFallbacker.mjs":"0c602de4241d5fdf953e1de6d2c241c7dfdd87ebc13f28972d72fab3f48529ef","bindings/js/LocaleFallbackerWithConfig.d.ts":"4f7eef3781a11b0a258e068322b935d4a867a723cdd0fa379f0c0414f6bed024","bindings/js/LocaleFallbackerWithConfig.mjs":"eb87e6184e302198d1bd78a82652e234cc4c99b5e2d2c55b32e5dfafa2749447","bindings/js/LocaleParseError.d.ts":"f047d9288cf7c5bc8eba6ba410f57c79a3a3dff84300e0cf357251566ec4fb9b","bindings/js/LocaleParseError.mjs":"3a67129811f34caa8fea29646571a64437ceb4784fff9d4f6dd7ab0f329eee4b","bindings/js/Logger.d.ts":"daabac769c0cf192bf6d504e7c968375ace0462740c63ab6d0dd1261a34aae4a","bindings/js/Logger.mjs":"e92544e1f3f00c919895cc8d0dafe15237c2e17933cae11ee157c8e42f8112e5","bindings/js/MeasureUnit.d.ts":"b09de5c47af2b49304012c05eedbaa9b74deec89b9eb308aa7d77ef2fc1fcf2f","bindings/js/MeasureUnit.mjs":"5b7e077a25315b1a567984e768ea5733f59317db080778648ea132a9fb6ba0c4","bindings/js/MeasureUnitParser.d.ts":"af6397fecb0cbac576d46fb1f951b2b09c38d51550ad19baf931685395465437","bindings/js/MeasureUnitParser.mjs":"6dbf6c6a5e7639d8c8f71164eb6cb733eb609050c90a3d607f4c207f07cd711a","bindings/js/NoCalendarFormatter.d.ts":"e8cd7cdf72697fb4a37639abf24b774bb3cc219015699034bfc19b848a37e5a8","bindings/js/NoCalendarFormatter.mjs":"595e93414b916aa000036d2e693a9304b93968ab523efc648a964cfb0b45226b","bindings/js/PluralCategories.d.ts":"4d6f45c41521901714e54519d6888279aa813120817033674c3a35bf71850bfb","bindings/js/PluralCategories.mjs":"8765c895afb984961f1658a4321a002935e5cf1ea892e1c004e89e3d794e359c","bindings/js/PluralCategory.d.ts":"78f1d503dff1d85af17fe107559c9632890c3a43e5e4d7afd05f52166b235d6d","bindings/js/PluralCategory.mjs":"8c84d94ae4eac9fb650f7ecee72c7ea40d4b34af0a893d57c44b264105515817","bindings/js/PluralOperands.d.ts":"eb7b87500437dad8b19a735b8bfd1f9983597bd3a5a2ad591e505dc4b182d8e1","bindings/js/PluralOperands.mjs":"791d0fe206fce5f64b38401f14802b6302f3a379f56a8cf5435741f94407cc1e","bindings/js/PluralRules.d.ts":"46947356d326312d84a7db21047f1c10ad21c7664a21a55f99b30494536efbe8","bindings/js/PluralRules.mjs":"684a3d0106bcda780677fab4ddde7dd4c6b7bddb58f56567f5283cb155985614","bindings/js/PropertyValueNameToEnumMapper.d.ts":"5a269b56c49884ab3e3cbc33923f00c1eb3e79089164737e062fec67d747c88c","bindings/js/PropertyValueNameToEnumMapper.mjs":"54bae17dc2f24fd7558be3691cf3f5d1aebdb52fbfabe4a80d16a8e3531c9063","bindings/js/RegionDisplayNames.d.ts":"0e4825a22549db3ed489eb834f0cf7cd8c95836205a3721e9a268940062abcb6","bindings/js/RegionDisplayNames.mjs":"c9f36077f225ed5dfd485a20abd6ffc93d8b9ac7f9afa099e7ba37c288e1c48d","bindings/js/ReorderedIndexMap.d.ts":"e81bee47302cf6fdb273d3de6beba0855d438ac422e0982a7fc076779b261c5a","bindings/js/ReorderedIndexMap.mjs":"494cbbe0491e44a3ac92eabcfcc2ddf9e002423d987e9a53d6288e8222dac620","bindings/js/Script.d.ts":"311bc8c0aaf48c710d8a9e6831f7ea90ddd6f375d9fb0966b85226b5eaddb5cd","bindings/js/Script.mjs":"77444f3bdd4725726a1c9874709951f9bf9b882883413723bc6a011fa2742533","bindings/js/ScriptExtensionsSet.d.ts":"bc321ce28716dd57fcfa133d635a7e916e5eb2f14bbb982659707aa9241684bb","bindings/js/ScriptExtensionsSet.mjs":"a9aba16d6e807a82fdd5880e0ea1db71176241cf6fd8e6a314b9dae706a0c4d2","bindings/js/ScriptWithExtensions.d.ts":"97bdcb8318a315f323e2723763e5bd1b154cb489d114370db1c74b5c696c6aeb","bindings/js/ScriptWithExtensions.mjs":"110ba966e4cebfeeaa2f148cefa4cd41e9e48d3a5759f4b3dba9476735fd0e3b","bindings/js/ScriptWithExtensionsBorrowed.d.ts":"b966575185b3d82279bfc0fe5025e9ad618f24c9f21a8fbf17ddf5c659d151be","bindings/js/ScriptWithExtensionsBorrowed.mjs":"3d05de27e45f9a7a048746d93b83dd07ce06e89bde40551560f30c3dd9fb50e2","bindings/js/SegmenterWordType.d.ts":"d1e62e4a4ffe6ef550108f188c3f14569a108c746e0052bc976f42eaaaaebdad","bindings/js/SegmenterWordType.mjs":"0ddfc7291acd52c540a9af3497beb8b2bf80ab5add055e9e59b712450ee39c6b","bindings/js/SentenceBreak.d.ts":"3daf08230007beae2ce98bc11a83b92e27ecaf98286f645019e3188edb53fc74","bindings/js/SentenceBreak.mjs":"1454b25cb7999d46b81406ec7b08e620062ac9d7674a8e0fa796953d67520a1d","bindings/js/SentenceBreakIteratorLatin1.d.ts":"2d9db0bbf675f5ed2727b59cc4e0b13011162b0fcffd6896c7b77fdc839d3200","bindings/js/SentenceBreakIteratorLatin1.mjs":"79a11bb595e331c9561b2125fe3eba6645470ff3097a2749ab7b261321f586df","bindings/js/SentenceBreakIteratorUtf16.d.ts":"3c3aac44819b6f29876aef2bdf8d19571979193442da591e2f29d3a9b04581a4","bindings/js/SentenceBreakIteratorUtf16.mjs":"507e786ce560b52b8d817b6ae6695f98eb5d19157b894710634d1e4c1af2f9e6","bindings/js/SentenceBreakIteratorUtf8.d.ts":"6d17e320324ac7a2a1b648d14d1d828866d21b78071c9513c4678a6d800ebcfc","bindings/js/SentenceBreakIteratorUtf8.mjs":"cad1ffcb0c05b27d0406eaaec33adc9f33e566ecdf2024c69fed34b96f751b5b","bindings/js/SentenceSegmenter.d.ts":"fcd0d86bf01f7b48e186872a3a278283bb4967ebc1062ab3736e637f79eadf1e","bindings/js/SentenceSegmenter.mjs":"839f5d92a9058fc286c9dde465122121dc4de0671286ca396aed840786c0956f","bindings/js/Time.d.ts":"f0657006e69e55b35777eef0aee0d30d61ead0085484689aa4a921ddd4566f35","bindings/js/Time.mjs":"c3a49ffeec544f1b2366a07451f0c5da6258bfb0b6ce4e64e381e871e3451a72","bindings/js/TimePrecision.d.ts":"8a4705bb3fb8160c0c8447b182cae99cf09ecabcf894ade322ad821487a5bc93","bindings/js/TimePrecision.mjs":"c65f8dd9ea65b76475ed46205a2965f8e7fb133306ea0a7420d660557ba6cdcd","bindings/js/TimeZone.d.ts":"dac2ea5a0506afb6490ba03027fd25505d3fde74c94befd5ef287716202fcdeb","bindings/js/TimeZone.mjs":"4f6180978d9a02e3dd8f976d1b4ca155acd36198e206e78aca7c9fd4952974e8","bindings/js/TimeZoneAndCanonical.d.ts":"9f0bb8615f9c26cb024287af5d4faa50ee726df5e7ce3365fd5213a9c545254e","bindings/js/TimeZoneAndCanonical.mjs":"d047b32043ef0f79b774b1f222896f55b7781ee21cdda644c8e855d88f779c4e","bindings/js/TimeZoneAndCanonicalAndNormalized.d.ts":"36ecbc741b0a23ef5adbdebc1e8fe37db8902c364e9b5496a79d3e08b7a81719","bindings/js/TimeZoneAndCanonicalAndNormalized.mjs":"8a2450f9e671e6bd90e292719eabc569f5fcfe731a8199722cb9b1fab7c21483","bindings/js/TimeZoneAndCanonicalAndNormalizedIterator.d.ts":"f56d8f89395a79f284fae64b450991c223351c749873505fd7dfa497ae9f6030","bindings/js/TimeZoneAndCanonicalAndNormalizedIterator.mjs":"2680e863ac649592c061ab59f438ad7785a87768feb39645a4998ef7ab813a14","bindings/js/TimeZoneAndCanonicalIterator.d.ts":"1548d7136df6fafcd85bf19317bd506dada9c96e9792fe5ffc15ddf41f1f281a","bindings/js/TimeZoneAndCanonicalIterator.mjs":"38ede59aaeea4caefa9fe3a3f4b514bd67fb3dace23299178188d67308729b5d","bindings/js/TimeZoneInfo.d.ts":"6065e185a90f7e4e030130bfaa34e860027c7fc66bbb9b0de5d79a64348eb68a","bindings/js/TimeZoneInfo.mjs":"152d5c328673cd73e73612a8e1d332c91dee062e6336de4caa2787f32116b5b9","bindings/js/TimeZoneInvalidOffsetError.d.ts":"bbceaa68b1641feae9b85c2669f1e93d4389027daaa7054fd38e83dbc723c2b0","bindings/js/TimeZoneInvalidOffsetError.mjs":"25937dfae8fd56ec6a53ab757f49a57115733876a8453bb04d1e5691a22e3779","bindings/js/TimeZoneIterator.d.ts":"b187a389ce1ae5fc9acd4d8589aee4904ced657c941ab49e9ef54bbadb8d0d98","bindings/js/TimeZoneIterator.mjs":"05661dd88f26ff7b60a5547053e904068a7c98c35f173dea9d844bd4cb4e84a7","bindings/js/TimeZoneVariant.d.ts":"15e2c916e0b8a983d0d4ea56ac9403fed84267d588199b6b4ca9e5258fa51cb7","bindings/js/TimeZoneVariant.mjs":"08303814f6207c4839213ac11f289843b53ad8d6f7e0d3755c5cd585fc22eed2","bindings/js/TitlecaseMapper.d.ts":"371bedf285ffd5fe2862d8cbc8e037a8f0534a5a46a55865c98b2c987f5fb2d1","bindings/js/TitlecaseMapper.mjs":"92363ee92406235a434be2339d9e6aa53bf314357a72c8a6d476fbcb78e8237c","bindings/js/TitlecaseOptions.d.ts":"ac5911275bc34f446115a2f2544c4fd17660ac4060bd79de00946d17fd943920","bindings/js/TitlecaseOptions.mjs":"878055c7b63ce52a6b026438d7e51e09001ba802e4923122b7af6c05c4c8aebf","bindings/js/TrailingCase.d.ts":"f7c4bdfc7087391086f2e94ba84a4730a7542cb48657934f3a92f9d6f419d3a8","bindings/js/TrailingCase.mjs":"278881c853440fd67bb0f8b7fa655f0879bfbd53a1bfa391ea0b005f8450561e","bindings/js/TransformResult.d.ts":"fafd4b8585bcae4336cd6683647a20eb622a4dc1a06470da894ef6db1b44a4ef","bindings/js/TransformResult.mjs":"155f2874175b6cdf73470cbf97ce107d46dd496d1996d340437a394756bea74f","bindings/js/UnitsConverter.d.ts":"d4823894dbfd10205df399acae58383402b6db2506549b1947acc7e44f0b9ff7","bindings/js/UnitsConverter.mjs":"c97c6b88470c274fd3047038e70d4836d16931ae726b8b5156c05e1240660314","bindings/js/UnitsConverterFactory.d.ts":"6229d24a164167bcf2731d3ad3bd257996e299819842a8f42bdd9149cdbd4d4d","bindings/js/UnitsConverterFactory.mjs":"92163eacbd6d10b9e99e9f71599164a404679e6c2672222957fbb77104d5ba87","bindings/js/UtcOffset.d.ts":"93cfd26e6fd12a737be6e4c92ccc09ae25e7a016e8774aff6837a381eea44af4","bindings/js/UtcOffset.mjs":"f13ebc176ec74e3a0c2036adf561f85207578e62c8fa96e173f2aa7d72c9b18b","bindings/js/UtcOffsetCalculator.d.ts":"725fbb783d429f9747d3aad670eea41d680306e6d745ad2adab03eb1fedded6c","bindings/js/UtcOffsetCalculator.mjs":"aa9b1bef8c9677a0be139ff4cd99957e4c9f8fa8f4a5bd5d7e02e192247e9dd2","bindings/js/UtcOffsets.d.ts":"a7b4e1e4e5c0fa1a2d8d9286accf9b186a2af1f8468d4fa3eda18f0427a9b400","bindings/js/UtcOffsets.mjs":"af947bd6d1866b4a6b6dd75c57a26cc6f0c538d15a51bdafcbf72f5f77cccfa9","bindings/js/WeekCalculator.d.ts":"bb61f8b009754540c7b25a7201247c6ca38e1a74e562ffd57d823f9923289b68","bindings/js/WeekCalculator.mjs":"6cdd10bb7569505063d88798b87b433223606d07b9879d7580f6738c8667755d","bindings/js/WeekOf.d.ts":"10bb0566105381395a8fbd0d134de388689ba518e388e167d0a8b6f66ccf4df4","bindings/js/WeekOf.mjs":"9f85173e3eafcfd97b696d1c1ee596eaadfe21bf4444513c589602692115be5a","bindings/js/WeekRelativeUnit.d.ts":"c2d418576e8b885b802222eb56347900ecb9b3a21287fee7ef053bd750eb2ef5","bindings/js/WeekRelativeUnit.mjs":"2e70aa5777bd071df2d041517b45969f70870003c01a790fdaf96fdb593d4398","bindings/js/Weekday.d.ts":"6366ce7c98c394f567b11ce6e47be96ecf2da96caf97976360f45be6830dd376","bindings/js/Weekday.mjs":"57132bb8bf42314a5e112623ee0c40f096d91fbe45f3d73106ca86b25195adcc","bindings/js/WeekendContainsDay.d.ts":"2007292ec482152748106e12a2a694e44e5b46c7960ec029b5c0344fac462b13","bindings/js/WeekendContainsDay.mjs":"e4e3858f7824cace982ff45d2fec4f10c4e323ab8492c95d066169eb41277070","bindings/js/WindowsParser.d.ts":"f39af1f924db210b5b1247a3e247b6faf90e0b6d470f979992f6c95a6e005a32","bindings/js/WindowsParser.mjs":"e5959577a702df4f41a1f8eb1db4c268108e9dbf01e373b93964f4fd18f76df9","bindings/js/WordBreak.d.ts":"f425f7b4a67ede1c52432342471898cb8950c1f2d2e354b2dbc702a28b99cfb1","bindings/js/WordBreak.mjs":"9925d7288a8c0707148df4623788786dd0a41d519e87d4b6c447b3fc2a3fea64","bindings/js/WordBreakIteratorLatin1.d.ts":"5190edd290a1a395f756939d76ca85b41c2eed56b6e3261a59eac68a620b2cc6","bindings/js/WordBreakIteratorLatin1.mjs":"3d7f61b3b59ed0db429bf30e5647d43f36e05cbc631d89cb2e8e8ece91f6363f","bindings/js/WordBreakIteratorUtf16.d.ts":"2e9af96d59a605baf701853cc985dad734913eb5ddd1919a4ddb5117d460206c","bindings/js/WordBreakIteratorUtf16.mjs":"f6880afda0b2101ea691a71b55e9f580429531b61bcce048b712df72f55f1a2b","bindings/js/WordBreakIteratorUtf8.d.ts":"6f558f16dce5d13c700e0e29fe951c584627a0a99a96fe1e09062bd84e4c7f2e","bindings/js/WordBreakIteratorUtf8.mjs":"7dac226681d852feb23b8b7ec5dce2c2fc5cf1a3560c54cf93cf12124d549db6","bindings/js/WordSegmenter.d.ts":"fe05974d2c723e2946be5b809bda32fbd40a6ed7de83bb9fc2596ba5b083ce2f","bindings/js/WordSegmenter.mjs":"c4d6d3180a28d9590b807ef1d6984d3333308eec8fec5999f48143c37783fa7c","bindings/js/YearStyle.d.ts":"1d6e5e82bac5aaf8533f1316d3e2355eeeccddd7a6563fb72611deb5a286ca2d","bindings/js/YearStyle.mjs":"9d0568824e73ad1ab1048b540bda864cc1b629c691a46f62943b55083b9520fa","bindings/js/ZonedDateTime.d.ts":"5371ef2996a33cb08937417cc3209a04b67fbea08c2a8737cf6309d140103d23","bindings/js/ZonedDateTime.mjs":"2dd5a907b7d973dfd2780e5ae2cdf6b2d021364dbc4b4151145e297fd5981713","bindings/js/ZonedDateTimeFormatter.d.ts":"5feedd9459330b5e3d5f8338b35dcbcae4142c3543aebf7df92551ea7253c51e","bindings/js/ZonedDateTimeFormatter.mjs":"f980698a1cf6ea7522790b463a3c10cc701946513e6ad4dc84db6d3a0251e85a","bindings/js/ZonedIsoDateTime.d.ts":"dc587b0e1b76ee38144687b474e32bc6637e37883143e98dafd546622cbeec18","bindings/js/ZonedIsoDateTime.mjs":"115df327b835dd6c746f35ebab9942d9d233056b9d5c22152312acc222937b51","bindings/js/diplomat-runtime.d.ts":"1fe1807ca59455bc465dac763eb4d5987ae02c1b8a81d18fb40b51c49c24db81","bindings/js/diplomat-runtime.mjs":"6195a723fcde76b8450fddfb475cc8f60056ae8c083b05ab1da7477c978db6bd","bindings/js/diplomat-wasm.mjs":"9cd4c0177c37694f1944aee0f89e4f818fe79deba76f081807162e7f6ce8b57d","bindings/js/index.d.ts":"78e8f087b34f779766cfbd720d2d29d6cd6065d239fe2a1a0d7a779069964956","bindings/js/index.mjs":"56132630c5684c3282af520f74a9d821429520a091332cbe5a3705d9a4f307f4","cargo_embargo.json":"65d822af3f3634ba833082cbbc2fe3e090b6cd540d68192fdb8ef9024eb10a00","src/bidi.rs":"dcc07fcb2d9a19e5ca39e742c4d4649632843d2c9091f702548a5623f9af5949","src/calendar.rs":"94bb5e6ecd460b8a841b89c3af864be7cc76016f994687f68e612643bf9a46b0","src/casemap.rs":"6a36150138727ca30665e453d7b5d26f0896cf0afcb0295c92f96f1ff27e9a88","src/collator.rs":"047b2b572671fd707c513b6573f625d78db6cd4469dbabd818da90d66dfbb1df","src/collections_sets.rs":"2246b51a65fe94fdf8189d1c7b067fdbdbbfb56ee9aa002058361f160e455658","src/date.rs":"c26b38ecb12ec068a255cba6ed6e63654432c9d6764e0001bc19da0fd6d6271b","src/datetime.rs":"a3f2da2eb4877f61e2edebcfb951c3c81711455a49bd37138eb120800ea9fb5d","src/datetime_formatter.rs":"ba2bd517c1cd9f05792c3bdf1bac87dae8fc57972df308492d0e63687d2e2902","src/decimal.rs":"d5f4cb361de821e016e53353b1e9df58335152a193e3e7f8e843ef6f415d540d","src/displaynames.rs":"510dcef01a2ae3c6da52bc0948c6ae96d0e072931575ab94594502b30ebde848","src/errors.rs":"27c091a1470e7e13b0eb6fe7ed71a1437f7114fe13da77d1e06b6d9c631846a3","src/exemplar_chars.rs":"27000f47c868ac9d69cf13225b4d92b796600875baeb1d147c7f4f08a8224641","src/fallbacker.rs":"c2d019398abe663fec24b16cb513b70b2c89c35eb3883297acf937ee7daf0840","src/fixed_decimal.rs":"46f31d5596d13dea8ce86d1751ef868b3ad98edd72ce5ad91c8999038e26b7d6","src/iana_parser.rs":"67bdb2cb8287f2c7b2e069f9756dcc40792b67a207df0a3fdbfdee9f872ae0f5","src/lib.rs":"d6078a451aa13abc13ed07b2ee4cd7437c92d2cc9449bfe4d9973028568f80e1","src/list.rs":"eb8a0e9b5d090374d0d3928de604aaf52247874ee82cc19d1a8874f44e270325","src/locale.rs":"717932e6d89a76b3a6fb5bb02e94001170a393220389d027c434cdadd592de08","src/locale_core.rs":"a890fcd6a898f1a4b039423cf31f0c8d040732ea2ae9ed3664cca7a04d86fa53","src/locale_directionality.rs":"1c94e9892672c68a5b1e11cb6646844aeafd69247a7e0cf194635b4e3511035b","src/logging.rs":"2e786701a2638cbe36ec78cd12e7f7135e8285d10a13ac6289de99488ab12cec","src/neo_datetime.rs":"2420d0aed9b6a25e795027e7e943757c6f352dc059d387acb7a51cc3f811152b","src/normalizer.rs":"41df8db17eceb25257af46a1a9e89d6023787241965cfe4f63103e7f278801d9","src/normalizer_properties.rs":"03e69dd547501f15676deda4e2712c49fdd0e362a8d0aeb2b31a1d263e1d1277","src/pluralrules.rs":"2d33d38f51a35bbdb7c87b80a5290146a8b6c5007a9cf35850b44ed9b79138a8","src/properties_bidi.rs":"345c1a85b7bb305906b69100fee9063bdf0422e9238f264cb0be3258c98e8794","src/properties_enums.rs":"340b3f53d29ea4632dbcab3a5668d94649dffc45d4cc5acb4c5be0b154c79e1a","src/properties_iter.rs":"41b2012a2d6c559a453569e7833e818cd86dd551885a35137bff4c77a860c824","src/properties_maps.rs":"a0a2718df2802b5bf102c63f2df88418769d68d310630de1744eeb1ecb14a7e5","src/properties_names.rs":"c65d65f84092cf0ba798164863bb6cfa200ffb888803c825575dac6dbf320ac8","src/properties_sets.rs":"4bf859834c24c4f0fb9d4236c8688bcd9cd30b7c8e0af0b11cbff0a4431a6839","src/properties_unisets.rs":"7ac6948f12c13eb91755230dc6e1043a869954153db2fb5b9dcd1096058d985f","src/provider.rs":"737485e484a14634727e46d0ad9ee57c3493b2c45f3244e3b66c0d9d097e335c","src/script.rs":"74b6f4e6dd8d126711471ef19ea6327b900bf64ddc841a725e2b5e111ba87f85","src/segmenter_grapheme.rs":"a2c40ae1fdb37a2249cc282ac7cd85755a495feb0f2a55d539a765a7934423d9","src/segmenter_line.rs":"77fffe2dcf015823a79fd40cea65c96524c9e2fdda01c0be65e92de823f1ee54","src/segmenter_sentence.rs":"72a6e0ec6f33e4ebea79b8fc5831b337b89686728ca1de128cf0caee24fe6298","src/segmenter_word.rs":"b16a54debe676ba77cc7297a9148227f917295b388ba86f5c886aa5742c92852","src/time.rs":"29f00b3d8450323c9c112f72c1935861346152daa5d9ad84aeeef8c73cc4177b","src/timezone.rs":"92c4dec6e948383849555a4c0f4f40bb50757e26f926a902cc9865ce6d9f45b4","src/units_converter.rs":"567208c2c4655bdd4e8c3c168899df39412fcf535498eace0200aea733b89a16","src/utc_offset.rs":"4558f5aba36eedbbd0bdc390726aaa7e89a59e057b81c077c4ff5a293c4ce010","src/week.rs":"9dbe9a5a93b3fee50b61b8f0673139b93e216a3465f72f562a6ff5b1d48fec87","src/windows_parser.rs":"f5a6fd001e81fa7620b62852bd694bcefc1bd69194e403d154c639f3ddcc1079","src/zoned_datetime.rs":"22df2d9da1d141bd37e07fe5e81872408d1aaa47f3774ee19bbf299bf1241ec5","src/zoned_formatter.rs":"6dc881a59f6643e008eb6af75f0a231a38d6c953006f73f5365d9f2332d75030","tests/missing_apis.txt":"27697cfdd7f452dc829c94e1ba25864f0d259299f32a52d0c11a9d50501571d6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"66a09af622a7ebd59883a66a9311d3856e39d337dd23eedbf1629b9c85d06b9b","Android.bp":"4b334d43340cd96fc7ca8d2b3d0993117f91551dca1ab2ce12accc5e5dd61929","Cargo.toml":"d94ab3420ce97513d5b4abfbb77d250a60d2b02071f2fe596a99e5971839db3d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"e6bc796532941257287c39069ad4e01c747ae39dd259415adf4316fc72811d02","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2670823c47e9e82f9bbcfc3e682392f108c74d32ae05f0857d4963c64a0a9a07","bindings/c/AnyCalendarKind.d.h":"58d5597618a8e1757515d19a9f6cc2aff82fa5c468b9ce35dc599bf1ae5b9fb7","bindings/c/AnyCalendarKind.h":"aab2f7475ce548d4b3f1812f038ef1cf4a02d8665ed90cf2bd7410da18f38941","bindings/c/Bidi.d.h":"073792091332a40076685e852b4440a57f8ef137c9b405eeefc6a4449cd8b6ab","bindings/c/Bidi.h":"05deedf5ea0636feecfa1229a091cb7c09ece06ef71780578c1f6241ddd530e5","bindings/c/BidiClass.d.h":"e01bb02057b2f477399609c9017f790b9f826fcc5814d2011fd6866aba19e5aa","bindings/c/BidiClass.h":"f7051fc6ee4956555f2d95fd752d5fe181a2bf9f0b96391846dd5b7e848367ef","bindings/c/BidiDirection.d.h":"ec0109aec080552fae41b03425e7deb44173f2e9f42f1ae5d0a13abb06a82854","bindings/c/BidiDirection.h":"8ab22fa9ed18da07a05768c7c4d58874d68b34803c2f736778f6aa598ce268c1","bindings/c/BidiInfo.d.h":"095aa849828e517cd520608cfda6388a9c2ea71b91b8f69e8459f00a195013bb","bindings/c/BidiInfo.h":"1b00f2ef957d62964dea1dc3a6f9322d665fc99202ca8800aaa18c50e2ebdd8f","bindings/c/BidiMirroringGlyph.d.h":"32086184167f003d9f5c47951199016e1735cc55791490aeb9d0d4bc17dde6b9","bindings/c/BidiMirroringGlyph.h":"30de7fa506633805a95e017b6caf0059d75f7e7cc161408ecf8b1036e2ef4ccc","bindings/c/BidiPairedBracketType.d.h":"7cbda3d883ae81237bd737f2403522fcaab6e3962a6ec79cfe4ebd2b3ce432d8","bindings/c/BidiPairedBracketType.h":"09a8dbf38e23786449b35003f7302081aa2b267bb2fd2f58144a6443c2f302c4","bindings/c/BidiParagraph.d.h":"93280db65f594eeeec618ebafa0e51b84154551b210e2a59c7ebce85ccf6cbce","bindings/c/BidiParagraph.h":"7eecd06c77da4b379ca2a7d2134c9cf30065a06529fbb17b7f5d35a78be16474","bindings/c/Calendar.d.h":"0c7d94459f33b0e4aef8ff093fa9f74c9cc99fa4dea1c1f1eacaaafad0422027","bindings/c/Calendar.h":"1fa0e1563ae053bc1e820086eb474b8f7c95a643c6cf730f15a09fa4a8e0ec58","bindings/c/CalendarError.d.h":"1ba31481f240919c647d8a544b73b5893ab32dd40ba0059fc3535bbd975b90f1","bindings/c/CalendarError.h":"e5a785d6fb76fdc260ede5d18259cff4bfd26a7a93426c304866f456e1547f43","bindings/c/CalendarParseError.d.h":"d922b8273b0951891f99709abc74128bc353352a0972e9e2383ecdaa4df01def","bindings/c/CalendarParseError.h":"526f6e2dced962409757498eb11124f42695a5b13bb2854a9b4c791793325f9a","bindings/c/CanonicalCombiningClass.d.h":"579f345b90ba01684a6b9270fe51eefc523b93743af3727da1426e35c44871d0","bindings/c/CanonicalCombiningClass.h":"06ef1e55ed1b6e8e12f55abc9d1464138a0600af72b235509d613a6808c330f1","bindings/c/CanonicalCombiningClassMap.d.h":"c71dc0090663bc6b3a8d2e8434dba0d4cdc719aaa39cff421b497e43f661cbb8","bindings/c/CanonicalCombiningClassMap.h":"5c280a2a559f2576201bf0daa3d1a3eefab1d2927cfe31c444bed0ce6f432828","bindings/c/CanonicalComposition.d.h":"df925944c539a7e99efd763d93d8cbe9e1beffea01e4f922ab6078fe000046ab","bindings/c/CanonicalComposition.h":"0e2e431044eadcdf8ed088ff728d2faa1c0626cc642ee3fcff26753fb484f0b4","bindings/c/CanonicalDecomposition.d.h":"3cc831ee6a88c39800163bc4b2d5ddcf08834515f51054f2d7ad9d4f6008d6aa","bindings/c/CanonicalDecomposition.h":"af75880e6e1bbb289252db9794abb6e8cc3c0c11542b478963c693d70049f27d","bindings/c/CaseMapCloser.d.h":"de1acab22ca11e09c7cd6eb6a5664f6b2e845c2dffa276696099e479058f3796","bindings/c/CaseMapCloser.h":"a4ea5fd7c7f700cec2e307802b3a81980e433d878899633a464625a223c889c8","bindings/c/CaseMapper.d.h":"f93c65c2ff8d7d241d816d93f98d3a2d3b1b6a94ce8df54f2479e9417319e3c6","bindings/c/CaseMapper.h":"55e3afa7f2fed99427fac15aa9998734281f50eb5c2d2058087cdad216b27f5d","bindings/c/CodePointMapData16.d.h":"09f20e6e045e6bd418030883e6371ae58c8b41bed93e219c1d03ca4963e8bf62","bindings/c/CodePointMapData16.h":"892a4ec1ad7bbce86f876e1df97797648b6a7eff04d8ff690134365239e93bc0","bindings/c/CodePointMapData8.d.h":"cf96a7a5d179aa169766371f57bd304a4bae0f1fde042c527b5f4b9e4b20e43c","bindings/c/CodePointMapData8.h":"c1f975c1c6b59eec653d950fe0b36fc212f31149f55b22ddfedec63ee910ebb0","bindings/c/CodePointRangeIterator.d.h":"f7946729f8927c0c792f64b62a3f76790fed0e10b0704167b7474d889b3a36fd","bindings/c/CodePointRangeIterator.h":"f54360908e92f928e5ca85189a85b1346a6af0f7380b4854b522ccad35732b15","bindings/c/CodePointRangeIteratorResult.d.h":"abaab00f1d11a26d3bbd079de96f7dba49782246a41c13a4ee9c220d59286453","bindings/c/CodePointRangeIteratorResult.h":"5f89f714d149099d89ef399d04940e6c62ff849c9e56d99528efb505d987135c","bindings/c/CodePointSetBuilder.d.h":"af23b3c0dde53603346a764f1a47fd6846bd6eadd623bed54983902a91d94e3d","bindings/c/CodePointSetBuilder.h":"a024420b33ba95b217f21a6f863bc4b3ba738797b67f0861e5c24720da945957","bindings/c/CodePointSetData.d.h":"72f128435da98b357dcc5ef6324ceaa16a4d310c148bbe228389a81900472856","bindings/c/CodePointSetData.h":"76f2e86c8a336f0d4e4271cde62e45271b18ecc676b0c6706a7b81b8ef7ec48b","bindings/c/Collator.d.h":"2b3fc788e160ac0ff6f0898146e94505e3c4f986412704be440587c440a7de01","bindings/c/Collator.h":"76c748fd4498058890950b8d7c6f1dc2d9a4d810b26ff71eb043ae909f477fa0","bindings/c/CollatorAlternateHandling.d.h":"0e9f3e004fe39d7a96be0d8d7c38f6c474923e22ce0f33963297c3a997b4e60b","bindings/c/CollatorAlternateHandling.h":"8c20c79bdc996cef83dd1f70b77000f899f42f29b369adfccade9084208cc68a","bindings/c/CollatorBackwardSecondLevel.d.h":"0f537ad8e4d72c91cd1d932d1b540970f5a6849aa2fb404f326558bb209f189a","bindings/c/CollatorBackwardSecondLevel.h":"85921bca2d4b270a4ab24455c2774623e0732b2272143efc54c0640b3dc7d053","bindings/c/CollatorCaseFirst.d.h":"a2c195d8d79f51d560a2f83050aa03360a2069edb6b99cb585b97e7ad49afaca","bindings/c/CollatorCaseFirst.h":"4ee69c4377dcb0354b7d5d6ce421648226e41615afbb0d4626528f9f6cfd6277","bindings/c/CollatorCaseLevel.d.h":"8714081644ac527d19947724f06e9c4ad3e78ab475167afff84f476d18749e60","bindings/c/CollatorCaseLevel.h":"c8a2bbf52c555f09555ee7acb9a81f0074d7b0f28c31a86d647e201f94e67e63","bindings/c/CollatorMaxVariable.d.h":"d092c1104b8253192b37ed6a0456e7ab7c2aff86471a10d5ee55bc6c05de0be7","bindings/c/CollatorMaxVariable.h":"f3bec8626f0434c3594f9b62b6a918cbef9b3957b8a994eadf888c1c289c32bf","bindings/c/CollatorNumericOrdering.d.h":"64e2f25cd6808fb4071a526dedbfe65d6ce0c635d5437bb61e7026bd84aa1dcb","bindings/c/CollatorNumericOrdering.h":"91cc858f526134b0b13cf61c757464b280468822b29b8f9648e8423eb51a94a3","bindings/c/CollatorOptionsV1.d.h":"b6f6daf99dd55afed230b1f900fa5bdad4180c96057638eea96e09e92188e32e","bindings/c/CollatorOptionsV1.h":"93c6c3bd2ea764fafde60614ec5c15c5e3bd9253e5c87456a5ed8bd87beb8d11","bindings/c/CollatorResolvedOptionsV1.d.h":"65ad906eeac0f83ef355665001897217953298e04cc51aa0099bcc971a745b4a","bindings/c/CollatorResolvedOptionsV1.h":"6b681bea384cdd2e3ae0722812fcad7bc433d2618bad6355493ee078c9872a6b","bindings/c/CollatorStrength.d.h":"ad0e01118b23b8b24d60dc8dfc69e506609d6da91712330947b74316ba887924","bindings/c/CollatorStrength.h":"fc54908816a6ef1f363b5d49a52290831168d98b0947a9906864a6b65d4c43e8","bindings/c/ComposingNormalizer.d.h":"3e741c2b3fb3fcd0d45693843419dc84c1ca6b9a72d57f04818d5b20e26627f7","bindings/c/ComposingNormalizer.h":"b4b77e6ec4e28ebf7c42ca7af2f2f4a2c7345afeb572e5adfc56aab4c46d80f1","bindings/c/DataError.d.h":"410d226b611e2bf2a34b572ee2ea253faffd84d7ba264e212b618cfa0a5e64a6","bindings/c/DataError.h":"65079ad72837a9520cc1f0f2c16c1902428da3daee3c3476fa58bb51c8905206","bindings/c/DataProvider.d.h":"6f449a57da39594e8ba3a23b2f714f89c751995ebc62b8a9117eda8fccc89abe","bindings/c/DataProvider.h":"b549d19190446cf546e87935687f14741004b84b5f4db97d511f64e1dd6dbb68","bindings/c/Date.d.h":"3ebcf20c05f4c0f3ff9832f27dd695e9853cb088a5a3ac59c1d3827171e9dfab","bindings/c/Date.h":"05b9fd7a33900da757032f86032a53434994fb5d461b71f44fe829e425e2ed60","bindings/c/DateFormatter.d.h":"07cdee871d662ce4feb3fb0f5875e2f690018ed9aa88aae0438d87fae11e3278","bindings/c/DateFormatter.h":"884f377197a57bd7cf2aa52df93b8df38cbeec9b1e72452bb00b6b74184e6bfb","bindings/c/DateTime.d.h":"eadf17f2c681167f46c9bbf4eba53af93eadb64f799262d4624a37abc604b1e3","bindings/c/DateTime.h":"6b67ce2534ba98327b56faead4d58743bf0e9dd7725955684351ff0850e5647b","bindings/c/DateTimeAlignment.d.h":"60cd92e2eba663f7545f9344ccfa9dc4e94e698a23431aebe46dae1a7c6e2a78","bindings/c/DateTimeAlignment.h":"b17ae3d0b303cf6ccab169f3be03a7c4da750c7f445bb2f82fe60114032b810d","bindings/c/DateTimeFormatError.d.h":"1d3a225b8a18aacd771c66247f24591cb0100b6fd47a5e896b2c701b4f9d37f1","bindings/c/DateTimeFormatError.h":"15a8f5a42967a16fced48269fd2a18cea853445f1aa0d13bdedbc3024fafa96e","bindings/c/DateTimeFormatter.d.h":"48c8b126512c0dada4585ec42ef0bdccbe98b87ebad298e7ead0fe1d45d8a00b","bindings/c/DateTimeFormatter.h":"722b04e9034f1cef4e96f6ead2e638985761939b4b5b0ad0befc1ec69ab71605","bindings/c/DateTimeFormatterGregorian.d.h":"7ac9e878c7d1db9fcf5d124eba9e9fce3ac04ef08fd7452b5d8c5b49d40f4cdf","bindings/c/DateTimeFormatterGregorian.h":"b9d3c798533efe6261fd180d8bcb095f013de56ef1383fc654032361b085e677","bindings/c/DateTimeFormatterLoadError.d.h":"2feb218e20d72c3f7b11260932cf6009d9cb9030251d99555c6ac0de2e0b7980","bindings/c/DateTimeFormatterLoadError.h":"55cca2f545fbe3044834e7644fe8df7615cf737ce0263a6d71513996c264a9f7","bindings/c/DateTimeLength.d.h":"d2eb01bebf090988e9a76ae4fa8f354c73f19b75f362f3f86fdc14c07abd140a","bindings/c/DateTimeLength.h":"1b6ed2cfcc784d2df5b03aebe88b540c992c2937dda136987769fcdbca9e76bf","bindings/c/DateTimeMismatchedCalendarError.d.h":"fe9e51f48669533d804a0ed2cafb10e83a0aba3eb36a169c3f5dcf1871989874","bindings/c/DateTimeMismatchedCalendarError.h":"6f2abfb2c19dea178482b57727a42ee4c818b946ad5f14eee2c24d482f96b1de","bindings/c/Decimal.d.h":"db0c6caa8f326bb92f4596385cc1d7135c2d29987080515956aae654b82f1fbb","bindings/c/Decimal.h":"2c8b11f2a2aace29f6934097cc58ce6c978c1d0dae7c3b200aa06c7211ceb3f9","bindings/c/DecimalFormatter.d.h":"df6c8e87dc140044ab90326b1818a4eda262cd502f998a8a00481bed7f18f3f9","bindings/c/DecimalFormatter.h":"b83cfbce1895df61d7031265264c0e9491c25c3d1cab2419f94e916c411de94f","bindings/c/DecimalGroupingStrategy.d.h":"61872cd10b03ceb56a98239b57bd66f78e892879a9b78f83a50176c792346ae6","bindings/c/DecimalGroupingStrategy.h":"d67f0cfe264aee922739ba2408956f1beb386a72eb5ec54c5814e4ba987c660e","bindings/c/Decomposed.d.h":"7a808d17c60bd8301227f32cbf5f6e84b44a1a533b7a0c067c4f46b7a2d8af02","bindings/c/Decomposed.h":"267f19b30f0ee53666681d2c9dd2ec1a80f6ee69fba03a69575930ca0fd066ae","bindings/c/DecomposingNormalizer.d.h":"41be99150d9ae7a6568e511e3965be6aead54bd814eaa1e1dd259ed72d10884c","bindings/c/DecomposingNormalizer.h":"1b55edd68d52913d5e336b32e42bf200e14b4573f82451dbcd07927c94e339c2","bindings/c/DisplayNamesFallback.d.h":"e5453dbd7287ff1ee7ba37674b3dcbd140b07aa919c68c367f08aadfd8be3c8a","bindings/c/DisplayNamesFallback.h":"449f62462e77efe76a4a83b07c4308eacfefe613742d4ff80dc22d30ba0aa9aa","bindings/c/DisplayNamesOptionsV1.d.h":"4dd0d11f628539b2ff3f828e8cc9a608783779e9f7c7239412b3c50ee9b0fbf8","bindings/c/DisplayNamesOptionsV1.h":"66f60efa89de90c1ec5a09186057e8644c36416a1574bcd67d0302e1c829deda","bindings/c/DisplayNamesStyle.d.h":"2c871965e5faa8d174e4497a32a5e44d8c8f8224768b91bc6ea3a2970fb09a5d","bindings/c/DisplayNamesStyle.h":"bed723192bad0852d81cf406debb1b0e830ee145fd6969735a2a45640b5207b9","bindings/c/EastAsianWidth.d.h":"5ad0e8a4980599c1a45c431861c64936fe7a4047da0b621bd22d4c789efe583e","bindings/c/EastAsianWidth.h":"c9399b4afe7b4bd3b95503c03674f66893fcac787edf4ae5255ee3e9526525bd","bindings/c/EmojiSetData.d.h":"a52e9955a4c8847a6c1ffff33c5695e9b7a3ff8e7e4cc06359cd0740b055bdd3","bindings/c/EmojiSetData.h":"a21f72477248e56cc60092ec624643159d828bbfe7777715b875555fe862fad2","bindings/c/ExemplarCharacters.d.h":"867538134ec987de7c1af60c9b2e24741bd27dd161f544d9ec05939230e89e4c","bindings/c/ExemplarCharacters.h":"c20aa0c72ae8d2ab5b1500e7aff3780b9c88949bd2bf33f926f62a6207450e3a","bindings/c/FixedDecimalLimitError.d.h":"468446838f02fdd5fda459b5ea46ca77d8081e97f712f18362a6df7320f2f9ed","bindings/c/FixedDecimalLimitError.h":"a67742d9e9567bcf2d9d4ddef421b5d277daf230dc35df84a0b750d754a1665e","bindings/c/FixedDecimalParseError.d.h":"4373df4e6d41485dce498d76bd857bca9e774fef8e77ee6afbcfaaba3c2f9455","bindings/c/FixedDecimalParseError.h":"7a688354ce80fd0fbef04df57ecedaa82caf1a984eb433c80e379d8606190f0c","bindings/c/FixedDecimalRoundingIncrement.d.h":"e046aabebecc77489131a197cd68bd94c708e52ca42843513c8b25c891d05062","bindings/c/FixedDecimalRoundingIncrement.h":"857df203a09d9bb5ea149fcaca9d5390312f72d3c1367a181b72900b10f7bb36","bindings/c/FixedDecimalSign.d.h":"038ed0d1c2141e852ee2055c50fe864edfdab585ccb0943d72fc4ef09baefc67","bindings/c/FixedDecimalSign.h":"c4b90dcdc2ef9f0ed9fc669af113a3191bb8b34d45fe4444dff5ad12a8ac9137","bindings/c/FixedDecimalSignDisplay.d.h":"5458f146359a999ce40f3181979d3e841bacf6c8f10a77e592984a2a9712587d","bindings/c/FixedDecimalSignDisplay.h":"a85e13558206b977d1e4dc996575d3925b29a1374e5458528de41ebc4afc32ab","bindings/c/FixedDecimalSignedRoundingMode.d.h":"645b2722692672860a2249995d98914be147154182af88c797ce44587c9d47df","bindings/c/FixedDecimalSignedRoundingMode.h":"fd57747bf1d8eeafa194e1949ee6e4edc06e7b25b76946fc754d498486f2ba0e","bindings/c/GeneralCategory.d.h":"f1280e741602d9b632d406dbf6e367ecafc68cd3c20bd0da1e965e3e1a8ca0a8","bindings/c/GeneralCategory.h":"d9465189bf297ef2a3c2cfb42c66b80d0f74710c3a5f7b8450fb2f06a2070669","bindings/c/GeneralCategoryGroup.d.h":"998f5a9311c52942b8297c97f04bca43220dd2d127f4650ebaffbaa74445768a","bindings/c/GeneralCategoryGroup.h":"4fb11e61219a3fb652fc297cd64ebb3b91c29a3b093fdbf74f9b7ea82c9954c9","bindings/c/GeneralCategoryNameToGroupMapper.d.h":"c922fd1de237f8fc289cbe5f474f2bc738747fd5c3660b8e08ff90008cebe50f","bindings/c/GeneralCategoryNameToGroupMapper.h":"242f049a13c68a8d34af0a220bb2c43fe61b0d2f124afb3a1aab502e0308580a","bindings/c/GraphemeClusterBreak.d.h":"532a9110ad41cd0024f529490f40829e0b592cf23d63a5d92ec51c7719fbe97a","bindings/c/GraphemeClusterBreak.h":"b07edf9bbb00221bc98528c88d452a01f9aa6d58a93408fb5b421629820d4dce","bindings/c/GraphemeClusterBreakIteratorLatin1.d.h":"f3a923ca5a9083f546498ee63f194f25c5060880c142fcb166af6f51f6e6a97e","bindings/c/GraphemeClusterBreakIteratorLatin1.h":"1f849f4a214198e3891e97f7f9907ca603f39666dfafc2867b747d9bc20bf2c9","bindings/c/GraphemeClusterBreakIteratorUtf16.d.h":"00a005060b0a942a53060ad23bc049a54391a6d8edb4eeb13f72c91025edd989","bindings/c/GraphemeClusterBreakIteratorUtf16.h":"a460a793adb464838adafbf60c0fdb79d8b18eddd9481e3d36839779653ea7cf","bindings/c/GraphemeClusterBreakIteratorUtf8.d.h":"9f40d64b40c6a6c382b18409367ecd592c67f4c11ee52aabbf99251bc977f0de","bindings/c/GraphemeClusterBreakIteratorUtf8.h":"9065afc6a6f41014c12df111cf98acd5d8c8bc275b89b3fecac18d02603b1fd8","bindings/c/GraphemeClusterSegmenter.d.h":"775f86d097835b6739012327191c9ecaffec5d0f2361c82fde0bbb8bc8dc8b7a","bindings/c/GraphemeClusterSegmenter.h":"243cf69b0514ec989a4227f9ce77f3f753776bdf6862cb3642ea790abcdcca6f","bindings/c/GregorianDateFormatter.d.h":"1a78a5f739e0657752f4718a225c50b2573080b038b72f01ab1bae22752029b6","bindings/c/GregorianDateFormatter.h":"06e05a57213b028b45efaa6479da3665ef4693bf7a2476cd60732523c535ccb2","bindings/c/GregorianZonedDateTimeFormatter.d.h":"03faa20c127cfeea3f5d75b395cfe11da4aade2ef5ccc67984431e6ab32464f5","bindings/c/GregorianZonedDateTimeFormatter.h":"a179d7e44d534d1c8ae79e369fa31b38ee17552cfd70f6b332459fc05467fad8","bindings/c/HangulSyllableType.d.h":"bc6e07deffdce32ee49307a43341fb0c2f2ddec92f90d63620cd96f6277ebf6c","bindings/c/HangulSyllableType.h":"03e3eed78697ddee8ac3f743cf6e781a4e21339132d3f13f7378957c33e75f3d","bindings/c/IanaParser.d.h":"26dac759d54c9ba7b281fa5b9eeb8d024b1ee46f2b0f751c8c5193df04dc36c4","bindings/c/IanaParser.h":"bcf701ea986dc5eae430c8e9231a7dc978aaaa433fe25ee7d90485932c723de8","bindings/c/IanaParserExtended.d.h":"41af2883abfeb9a608b3d0d5dd082effee70eb4aaaa0d2327e42f70666a379d0","bindings/c/IanaParserExtended.h":"196ef30892e575059cb51fa7933d5969e64c083e3679069fb9ee6d78b676a140","bindings/c/IndicSyllabicCategory.d.h":"006b5e52ec5b6ad3bb587442e58e35a086496192d1347d442f0b15426df03d0d","bindings/c/IndicSyllabicCategory.h":"d5e762d5ea2e2cb69c1e78ac32ac047bf366978095152088241b401b932a8342","bindings/c/IsoDate.d.h":"a771160bb8262952150cbd5cbaaf30b9a9855344a4ef4af56f0c3efa488acc2d","bindings/c/IsoDate.h":"e06079f6d4eb6019cfbcca371b6cb1b79e4a47fe36bd1429e6d005fbfe197e86","bindings/c/IsoDateTime.d.h":"19093dc9fa8eec29116da6251b482b7aa05e47d3acd04749d8482d41f06cafe9","bindings/c/IsoDateTime.h":"64131217c8e9b16355851fa35871bfc9bfb900562877a8c350d763202b9998d8","bindings/c/JoiningType.d.h":"7397f42c2532e8545e2a4d1673011901269985811dda4ec1b56cc8b44f7e52f5","bindings/c/JoiningType.h":"4e2bd84595e82b1e41eacbcad56b00c34a9405744a7b21c32462f473fbede50f","bindings/c/LanguageDisplay.d.h":"ceadc5aa4dca459dc56577b279967021d219346154aefda2da8b45b9aa849f7f","bindings/c/LanguageDisplay.h":"f19aea03762f8f43b5f3d80b04e79f96d082466c2f00debf77a7cfc3ee5a1ef0","bindings/c/LeadingAdjustment.d.h":"acc66a9d4006c8e526fdee2d81d5c63ef5f0fd49ad6e3b5da636f2ea4ca31f88","bindings/c/LeadingAdjustment.h":"aefe7fd311cc281294b1b701a0a0206e1cbff693ab7863cffc4bec5106dafcb7","bindings/c/LineBreak.d.h":"daa1443b157ceefcbe14b2373c08ab435692673aa47ce043abc5ac6ecee96d78","bindings/c/LineBreak.h":"6ffc9d9cc514e659de87df0708c121f53378b8ea1a0b39e1708c97f6159e7d04","bindings/c/LineBreakIteratorLatin1.d.h":"0aa45cf2767089df2ca53d489219008d754f50a0b1c2ffd6f5b3886b83ce20c0","bindings/c/LineBreakIteratorLatin1.h":"bd5b3cbb51eaab7c1b96e97f2b859035df529bbe7a045e3562522951c7709d80","bindings/c/LineBreakIteratorUtf16.d.h":"fcb6eb61ee3a9c6f45352e3dd5dd4ae7d5e7560a27d73a03d299394fdcc1ccf7","bindings/c/LineBreakIteratorUtf16.h":"373d5e7ca6e32b19955587cbe345cbfdb0a927d35fc32762d060d8e2421fb19b","bindings/c/LineBreakIteratorUtf8.d.h":"99c0a179376ac1e107d76aa215601a89a730c5d1eb55bd8151950bab0b3e114c","bindings/c/LineBreakIteratorUtf8.h":"dadc41bff54d4df2de0c53ab14d4e3cfd86540fbea966d6f5b02f89b7516b30e","bindings/c/LineBreakOptionsV2.d.h":"0b99a855b22f4ff6a2ca38585d3467cd434491e71a17235395423e38bc89280f","bindings/c/LineBreakOptionsV2.h":"34af5152b3b9310b58f119f45a138fad68a0b6294f0cc92449c1b709553b9a0b","bindings/c/LineBreakStrictness.d.h":"02aa87c66ce05a93bfdca8c0ecd3a8362f5eaa6c6e8f1c52005fd07c73f56e38","bindings/c/LineBreakStrictness.h":"6d0c5e3f49b1f6662796a757349ac2f4e77ca90b29fe73c086221f3b25ceccf8","bindings/c/LineBreakWordOption.d.h":"2155ccbdbc2a6a09a6aeea35c3e107946c23b913624e66de524327826286abea","bindings/c/LineBreakWordOption.h":"bad420473feda04345d8d229256402bca8e45dda303925ffc017e13e551a566f","bindings/c/LineSegmenter.d.h":"0b600ed88e80d7a6dbc4b539a0c758b787218b5bb3af49e3ac9b19bfeaa2d690","bindings/c/LineSegmenter.h":"47d56372d2fca2dc4496a33626ecb5bd7d41f6a10caf430ac7fae99aeaadf85f","bindings/c/ListFormatter.d.h":"054fa689f2a3ac5349d1c22bf29c7caadb5acabe3a821a08e8efdf08af6b37a5","bindings/c/ListFormatter.h":"755b65c07c7488552a782bba0da40aae6b46be28936fe17098c8f4db137fa073","bindings/c/ListLength.d.h":"a2eb83b187df4208e60537b93cc4cc58763d737c62ecfa857493d298882c1dbc","bindings/c/ListLength.h":"66624dba5dd0e1254c386b18eb16a68c0db324ad4845c7ee07d15415d1c0131b","bindings/c/Locale.d.h":"3d541338593cfbc9ea6e635158226cf7e7f0e01db5fe6829abe811e89c27588e","bindings/c/Locale.h":"729b4cec1e1fd1a3dc55826cd65bbed404d9ae0fc866ca40d19f105271d34de4","bindings/c/LocaleCanonicalizer.d.h":"809043b3ed894ab459a04e9a0799e5b83255a91cd812e9e39ff4cce5dc38a18a","bindings/c/LocaleCanonicalizer.h":"3e21b8d7e6504ff6bdbcb3e394aa6d1406d10c11bebb7de309a3f8eb0a0e1934","bindings/c/LocaleDirection.d.h":"a70cc7a8a9118c1cdfa3faf9b6b244bd3a3f75e9c7b48da44bd7d290c9c2e68e","bindings/c/LocaleDirection.h":"0e9c2a6c85fba0f1a88799620f4e80d68b6dfa563df4f90963abcdd47140b4c3","bindings/c/LocaleDirectionality.d.h":"8251189ccc5dfd81d6e897daeb379c0b6a26a68faf6918f973d2430c1a233c62","bindings/c/LocaleDirectionality.h":"e5a2cc2cfd1f820257c65451f4e2e39138115f4ac65e586ded6bcc8059d01dd0","bindings/c/LocaleDisplayNamesFormatter.d.h":"b5b4714e9863a4d768a99f3e0beb148b8f15b74d95a370c6e81d253b00ceff09","bindings/c/LocaleDisplayNamesFormatter.h":"bf2c92523e55c34c19f41605db8fe349ff30d01e5c66daa2a28fe17e2b3e8c2f","bindings/c/LocaleExpander.d.h":"a978a0f44e5a7533e5dc6eb08d7bfdcd92d1baec6431f7e2ec9c358392a7a43f","bindings/c/LocaleExpander.h":"7c57a8f57a621aee3196adc35415cbff1bd2e27fa22acf9eb82c6a0ae882355a","bindings/c/LocaleFallbackConfig.d.h":"e4e8e09ef60093fd3c9eb0804ad7bdae63448b571fd643eb71ed831902c806ac","bindings/c/LocaleFallbackConfig.h":"a1dfeb2000c03a3d11417d1be7c18f063f91aaae56c3b27ab88c8afaf99a9178","bindings/c/LocaleFallbackIterator.d.h":"a898755072b245536e2a04f759206d1323920d4c42fe0dff7bf9d712e821bf39","bindings/c/LocaleFallbackIterator.h":"3b01efcce6a83f4643cd5db4f50e9cb13374b13437a72c54862d2b7423968a10","bindings/c/LocaleFallbackPriority.d.h":"36b3e6b48103498c0b33045f6aa46ac10bc1aea875fdd49e0a38fc8694443706","bindings/c/LocaleFallbackPriority.h":"fca13f7ba8c4c15380e1d0475bfef2082a0160215f340fedda50183d371c882b","bindings/c/LocaleFallbacker.d.h":"f799d9e26fb147b8099e32ee2a856224575a287e79d6cd81600e183982feb750","bindings/c/LocaleFallbacker.h":"01452d74ee98774d1d5e8f069507fbb5b185392f5819e10d66337005570f61cd","bindings/c/LocaleFallbackerWithConfig.d.h":"5c57e3b438d1398a943324ed5d2076971be241713cc9d244e99cc205a953e2ac","bindings/c/LocaleFallbackerWithConfig.h":"a9be61370a078ffe9aebc37f0440d5b99a40bcb00a52cea69ca0d219531c044c","bindings/c/LocaleParseError.d.h":"930e3428868e33dc9b71bb4182ddc8dd43f63c53e2ecc2e1ad3733a5deb4a099","bindings/c/LocaleParseError.h":"5a84815d554f1368c43d63ce078f8f5d99a24f96a9d1f42fcbf57b927aad5fec","bindings/c/Logger.d.h":"b76cb931edfa746a337586cda4c5ce03566b03f149ec427f1c8ee7789ed999ab","bindings/c/Logger.h":"0ea889697e8a5f7b60a13f1503f9ee4e036b131ab8136ef210bb74fb7e526afa","bindings/c/MeasureUnit.d.h":"a35f1755ab94e6fcaedd39be508d2cf7169cd514ec2d803f5ef8103045d88c2c","bindings/c/MeasureUnit.h":"c8e696bf308086ea2849b97d8c80244b1f1e13628a82b42e2737ecb3a7f78e3a","bindings/c/MeasureUnitParser.d.h":"424890f37efe31368f080ef338b28c1d2fc5d0c38e79dfba3b2d00a3e583e460","bindings/c/MeasureUnitParser.h":"dfcf5027d558bfd4b929747b24d237af96766e9dc6c43afd8346429e2adb7cf7","bindings/c/NoCalendarFormatter.d.h":"fc959bd0b6869662b68568b1fe86cd24096ecf8811f7b7a11834a60395830c68","bindings/c/NoCalendarFormatter.h":"1381b4f7437649d278a9b08b681f2e8161b4bbd8adc3c24ac11c12e5ada9daa3","bindings/c/PluralCategories.d.h":"f663c1c1eedacb82cd2b8cadbc62c305fc133811847ca7a85f0b436b9e06e1b4","bindings/c/PluralCategories.h":"61a8321675d9a71e3ae33129ee6af62c8790404d8f76417cd8baa3c0ca31f634","bindings/c/PluralCategory.d.h":"b5e6e2181cb8a4be5ecfdc51260e2093b7fef0dabdb10c2864d48253b9c2ccb8","bindings/c/PluralCategory.h":"5c70d452df21b1c2e1ca48d0be58ccd06c804a9c5caf7a8f57cd43ab70d04a78","bindings/c/PluralOperands.d.h":"05a423777a61fdc718615c00f5d062a2c4b9e740b70f3dd44479e415ba1c427e","bindings/c/PluralOperands.h":"c0682ceb5c386e7658da8b94a8d25319d2c0db86a80fce8fb04cead108e5d620","bindings/c/PluralRules.d.h":"4bfeb606c70c0d7fba618d763ea8dd110cac24f9be9f11a73ea6b0094b44b6c8","bindings/c/PluralRules.h":"858f53f6d5552730d566d6cd6523396f665b0c1202c5abeaae2fff84365260d9","bindings/c/PropertyValueNameToEnumMapper.d.h":"06a1e38f582fcad66cc45b3cfba6dc18342ca80addc3a21096ce8cd3bc1c13b3","bindings/c/PropertyValueNameToEnumMapper.h":"da89098f24ec1b2ea9c9e5c92d11bef50efd31b537f88349b725a344158ef610","bindings/c/RegionDisplayNames.d.h":"06e9479b628655ca1a4f0a3092496513641f7cd79af0dc08f4ece0453a1dbe06","bindings/c/RegionDisplayNames.h":"aa863d21c37df05720edb2346cd52eec8b6287c87c350a6144d5beed2d74009a","bindings/c/ReorderedIndexMap.d.h":"2beb1e614588093eed86962aa5b37b1ae68c0145443cc06e225ebe81b043b24e","bindings/c/ReorderedIndexMap.h":"7f7cbd2cb50f1be3770916f426c51e4f080f4813226041d1b6dc0667c44acbe4","bindings/c/Script.d.h":"dc919ea6b49c09d196940e55f97609468db722051c5871b5c3b672a84c642c67","bindings/c/Script.h":"e97aa81b73ca534903cda246564b4b638ba440bc8674e55e9f6a5d470f72e397","bindings/c/ScriptExtensionsSet.d.h":"dc3db152e0f57110232bed53bf071f5894b105751b018039d6c972fbe24f211e","bindings/c/ScriptExtensionsSet.h":"8dac11be3a978b9c4a7375d46c8c3f08c4a0d8ff890db852ee7a44b0d44d4031","bindings/c/ScriptWithExtensions.d.h":"afe711a8df58de36f02b05303ad26d2658b9d052857f09fb3e3ed901a0c8bf46","bindings/c/ScriptWithExtensions.h":"b8edfdef9a5aabb902a6e6f96fbeb32a2d6a8d3fe4ff7bcfc1f16d0a8b704227","bindings/c/ScriptWithExtensionsBorrowed.d.h":"b9cb9ac9f74de93757f2e9731863de2b781878c722312f0f802c23f7089c4ba7","bindings/c/ScriptWithExtensionsBorrowed.h":"de738d07a8b21c6ce541f77c6b171c7cab936cc74c8b5a24b4907c51a5837db3","bindings/c/SegmenterWordType.d.h":"2b787c9a44c886b88655776bf456364d7db46f2326f508e7e36de8ab084915a8","bindings/c/SegmenterWordType.h":"5dcc9f86e4f8ad4ef0a349c65c7628330c2a546aed9056ab527082db3cc8b6bf","bindings/c/SentenceBreak.d.h":"e840605dd501edb11ece4ed1057543aeac2630ea0d36eeddb8e7fedaf9a618be","bindings/c/SentenceBreak.h":"306ddd0c978b8d4d22fe1ec81a8bd942816d7d7bcba4613be12b7f461f5be85c","bindings/c/SentenceBreakIteratorLatin1.d.h":"ac90b663aaa4dd1b2e91202c6907afc6f46a6db757a027361b8ba0bd511f45e5","bindings/c/SentenceBreakIteratorLatin1.h":"6faf4cb92dfb2cd2b11e0952ebd6e68bbad71f0729385dfb48df616c1413213e","bindings/c/SentenceBreakIteratorUtf16.d.h":"963b946cc6634484a30d013843018d95df458e580db81efa45d32291773ab11a","bindings/c/SentenceBreakIteratorUtf16.h":"cbad37d5638975e5c8b8672d2289157c18d7d105aaca7f7ad00b3292ad311c44","bindings/c/SentenceBreakIteratorUtf8.d.h":"c1d174ab816004f3cb7aa9ee267ddcd994a70b12cf39a63703cc8b685e8117f3","bindings/c/SentenceBreakIteratorUtf8.h":"e8120635641944a6d0719e86b650d31dec5480112454b919d299366b8f25e063","bindings/c/SentenceSegmenter.d.h":"4fa5860d591dc8417612586f66b0266f20511d169f032a81edbe03136c70cc0d","bindings/c/SentenceSegmenter.h":"ed15288c9f7dbbd2c4776775d83b6f90b3512e48e469d562b99e94b04db9bc2f","bindings/c/Time.d.h":"dc04bb08b66ac72cfdf38961e6f517068292e8b90eb990577d362587fd7b8b66","bindings/c/Time.h":"e3897eb723ed0ca3b98b0bba25f6346bd82d360e6469e8d241649d0d23f69d8b","bindings/c/TimePrecision.d.h":"ccb08494f5774dd5864ea15606f49e802e4d2fbb4930627be0ff2665fe1b243a","bindings/c/TimePrecision.h":"9f77799453de782088ff745df8b080d8bd85d4594b38528fc057ef97390d8bc9","bindings/c/TimeZone.d.h":"ebca80e19e5b91a648ba3fdb5549371736c5e9e93adc811e010a8f0650a98de0","bindings/c/TimeZone.h":"70f0810d43e3f1213fc8b16a650bcd44a0d7400dba8b9376f0b94ae94ab960c4","bindings/c/TimeZoneAndCanonical.d.h":"990c1357a5401f2491ca4724c87576986d2701e57abc16d807f6037328171ecf","bindings/c/TimeZoneAndCanonical.h":"efd5fa7127392d34904682f02eb431738ea96c20383a5f32caf01cf8066087af","bindings/c/TimeZoneAndCanonicalAndNormalized.d.h":"5a3106dc3650d351803f3386c55e3f2d55c41db60e098b16d55e4a89bc9765a2","bindings/c/TimeZoneAndCanonicalAndNormalized.h":"6d75fbde2e9b9ceb0ca24d4ce44563a80cf73bfb54bd68d29d9b250a5f8f0a5a","bindings/c/TimeZoneAndCanonicalAndNormalizedIterator.d.h":"97fc2b52f6877a1d2e40d964ed8af2f4e86e5752a236478a430e2845055c21c8","bindings/c/TimeZoneAndCanonicalAndNormalizedIterator.h":"7f09dec071f6dcabecf8096d3c0b1a5ceb44afa4e12b8f309fefa58177806bfa","bindings/c/TimeZoneAndCanonicalIterator.d.h":"cb1b754721c7d6c232d53bab19988f13a90e1e493d33518402a6a676de498abd","bindings/c/TimeZoneAndCanonicalIterator.h":"306d968515d1d178e97cce9460d8eb7d30008bfea29ee66c4039e9bde203dab8","bindings/c/TimeZoneInfo.d.h":"db5edfaaec97f134ff5e383dc85368592d17a50fd9fe5486a4b51ee391a845a7","bindings/c/TimeZoneInfo.h":"5f24e051fa3b3633085083741debfa986d25b83a17b3a916ab43bb3aa70a26d1","bindings/c/TimeZoneInvalidOffsetError.d.h":"035fecd5d9883f58674ef0c334765f36acac3ec7bcb616a77cb751f5a6898345","bindings/c/TimeZoneInvalidOffsetError.h":"6674dab3e52fdb611d18ee6f109b524317eaf94dbb3d0b386e484eb9234eeecb","bindings/c/TimeZoneIterator.d.h":"83fadcc9034cb1f77dd7bdf7bb633ad158cbc1f5c8ba985561be402e986723d0","bindings/c/TimeZoneIterator.h":"e85a3fa34c196580e5675f844e0f5247f85163dc45a647f4f3cf66498ba95213","bindings/c/TimeZoneVariant.d.h":"5ae1d731fffcc049b350003ba6bad76b92a429e69df1af4fa5a1b987245939ff","bindings/c/TimeZoneVariant.h":"673d6656a373b04286f09b76bdfda96f77d8c4ccd4a85704ea6a3321a1e28791","bindings/c/TitlecaseMapper.d.h":"63bfe8125205195c7b958f35d915255f64e740e3f0b6e291824747f75cf4a592","bindings/c/TitlecaseMapper.h":"4356a77659b945298b1207975741ebe91a4ebbe501149cfe6fee3991e3347709","bindings/c/TitlecaseOptionsV1.d.h":"7f18347eb2ee28ffcf50bea10d53c111badd9a9b35b76f183ae111c1f9af8ba4","bindings/c/TitlecaseOptionsV1.h":"92817350aef1be95a223d1e897e727b16e0d6015320c27117650d7cb993f87d2","bindings/c/TrailingCase.d.h":"fd8309e7762e1f4b7f83b9a04f2f7e3232ee9bb20335660bae75e9d92374533b","bindings/c/TrailingCase.h":"5d97c2d32f91267b171da08b2a877641d67e9bb2be05647042e4879eefa71417","bindings/c/TransformResult.d.h":"760ec98a7bad1ad513e21d00ee9f66f65234964835884e1d05a98b4b36d1eb0d","bindings/c/TransformResult.h":"b73eb96eff48061f46a99bd8309e0479be690223dc6baf5d1f6434a241cf16d2","bindings/c/UnitsConverter.d.h":"10a415cd39aeb8bf9ad021955c8a2316d8411758bea2552cc344e80cc6b47bb5","bindings/c/UnitsConverter.h":"bce9f1318b66e196a888cb7fd419bd64bbe47fc7692fd2ced37bb858da5e2267","bindings/c/UnitsConverterFactory.d.h":"53c26878b47ac9ae88ba13e5acb893bcf9e74af18ed82375a7c4a3170e2a41d4","bindings/c/UnitsConverterFactory.h":"0d2944f8606a4da12f99e544add8dd9808b425f1867e75dcb3fcfe0efda3c297","bindings/c/UtcOffset.d.h":"586af5fb5d3ecd6a94ecea04d4afdab66b05b376cb63b6554e575fff8abf25a5","bindings/c/UtcOffset.h":"1ade4350fd5ea7bf975ce791b645f869b0732f4cd910d6d776a11fcab9beecc7","bindings/c/UtcOffsetCalculator.d.h":"603d074606d0968668af8a23b00b8051f4e0869cd606be140ee1e5256bf826a6","bindings/c/UtcOffsetCalculator.h":"303080010e914e6dab9add0b401c5cf88639632da4ce12dfaae51f31f4011b71","bindings/c/UtcOffsets.d.h":"f76244df30660a30807423e32ebc670e58aa3adff72b2f2b3779a9156cee3904","bindings/c/UtcOffsets.h":"1435f98c5d2bc4078d91ff22dfb2d45810af43490bcd023eee45ac7ec74737b3","bindings/c/WeekCalculator.d.h":"f1af470ce09e57fbd7d8745f82672f6770660342073d777fb99f18a4f212d636","bindings/c/WeekCalculator.h":"6120e30673d909857bc4b5158e1bbf6d5bbc46964482c415942d2308b09ec7c1","bindings/c/WeekOf.d.h":"ff1cb6440f4984aa682080b1c290716a9254077d963b85b47bab3972c11e5008","bindings/c/WeekOf.h":"0923d5cbdfc410862488767b116d21ee74bc3d8143d8bf34a3409d887f9af71b","bindings/c/WeekRelativeUnit.d.h":"e10be7cb57f8896102c8aef8fbf8d83f7e9ea17c1333c4c5b0018fd7f9637b71","bindings/c/WeekRelativeUnit.h":"729bb98fd6de0a9ea455d17214a40308d105a4d92cba9567595091aff273f4ef","bindings/c/Weekday.d.h":"be84025ccd4d2a61a7da79666c6001a1eb74a3a4140d7720d9bd94d18e213add","bindings/c/Weekday.h":"786e601726976843668079b67e5dc875b5473ea70f19b1b96de679b8a3aa56a1","bindings/c/WeekendContainsDay.d.h":"51489e01f5387240b941fae6e27148da69120c3d7751c69977b82973dff04b73","bindings/c/WeekendContainsDay.h":"66e0ba943ad2e826cefccd5dfef499547e29abbbf3e880676973f8d2760d2418","bindings/c/WindowsParser.d.h":"59532f6893b335df41b008bb9cb540f1d5ec99229178e06dbca2dea867b537b5","bindings/c/WindowsParser.h":"e7f6a47d72695038cdc09fe5ceabb172079aab4eb80558edb5d9a74d6f566050","bindings/c/WordBreak.d.h":"0653976cbcd6aa2e19e65cce713b1f6731bd07daa1a75c5e1746198bd3281ad7","bindings/c/WordBreak.h":"273fd8f166c527253f275557586bfbb0c600bc56b403b95b6a73bf1868c3a3ec","bindings/c/WordBreakIteratorLatin1.d.h":"4b28d154b04b0e30718e0ddad890b8b1d26f3cc093bd63a03061e1c8d7ad455b","bindings/c/WordBreakIteratorLatin1.h":"9e68264cd7099b117fff82610679a82128e8b4bd1fceae4a73ff048f476148b4","bindings/c/WordBreakIteratorUtf16.d.h":"5c1797c5e04cd9252ea3b727837306cfa677db9551c4b14bd1ef04bf9f333ba0","bindings/c/WordBreakIteratorUtf16.h":"ee941f03f3242112a7ae7694d69261331842065c0f488aa8cfbed00bbbdb52c9","bindings/c/WordBreakIteratorUtf8.d.h":"9c6ab4dfbc0770372a83610bd5c5883ef5636d53c0f0ccc308801d58e6d024b1","bindings/c/WordBreakIteratorUtf8.h":"6180cedd9e76fff0ef86f73ff555466ac185bb02715e48023542ad2ec447dcfc","bindings/c/WordSegmenter.d.h":"ee74b469e9540674e24ab8197091747b47d262d8421c32472deacc89c85123cf","bindings/c/WordSegmenter.h":"826e34f7f908b54f75a92d8c89f291ed87322e8c5559aca01f0a064bce5bdb1c","bindings/c/YearStyle.d.h":"566179c81519787dfe73d1b9b1bc5bada04477a8b4f6805a77f4749ceabd2397","bindings/c/YearStyle.h":"cba28e105b8a94f1fa3532be903fac4b9120098242a4147d65bbfeed83c86442","bindings/c/ZonedDateTime.d.h":"a9d3ce09cfbc53211ae002fb41ff3adad43567d5d51a023acf2d39c2875e1422","bindings/c/ZonedDateTime.h":"92f18e6f704203734889dbaf907e705905b5721bf41707db194910d9a464ef13","bindings/c/ZonedDateTimeFormatter.d.h":"435c1e7dd58eaf6743c678df39c111e59cc3898e311331f61bba4cde6a716bea","bindings/c/ZonedDateTimeFormatter.h":"8d3b4a6c99e45c19da3a915ee1a4fb075719018c6d9d3d18ea568f2f03086ebb","bindings/c/ZonedIsoDateTime.d.h":"3f4730a6778b7d736d734849ecccb60572dee9102e2feb8c5b346e99b0c49a1a","bindings/c/ZonedIsoDateTime.h":"216a68a5c6dd362d8cac514faed471e04b28917310743936a2043bad1c14ebfa","bindings/c/diplomat_runtime.h":"5bd680d2f579a8975a72c37aa00cf85444a47e18ffd3b12f0a6df21ca8ffd902","bindings/cpp/diplomat_runtime.hpp":"343a8186f3c5036db23b0895bb3e7a105c47d79c290dc0513ce5c0fb0adb2427","bindings/cpp/icu4x/AnyCalendarKind.d.hpp":"784684a36de9ae82e1610e3e9449b9c129ee154b2c9c982df75c6ff65e83add9","bindings/cpp/icu4x/AnyCalendarKind.hpp":"9cc1d3bf27dfc6c65af73d9b8b4ee18fb0b635b02c873b1f9225a73c723557da","bindings/cpp/icu4x/Bidi.d.hpp":"3e14af75808ec7f1f0c2518dfb76b3ffcdd074b367c7640801038a124e747734","bindings/cpp/icu4x/Bidi.hpp":"a8c050581f5b3a94a6c8f39a4dc1258e842b975b3cee8aefc684c64d934c89f5","bindings/cpp/icu4x/BidiClass.d.hpp":"894bb6f5ade9d1f0ddc7c0c30526d9f9c39c7542c40abc3630b1ef581b29ba49","bindings/cpp/icu4x/BidiClass.hpp":"183f5dcabc03e6884b15efa96f9a747af0b2f137fe91708472b630a930fadf9c","bindings/cpp/icu4x/BidiDirection.d.hpp":"f2f6caec86153e12f07ed48c4aae53c1316c202c808687732fd45f8598b472e0","bindings/cpp/icu4x/BidiDirection.hpp":"390f7d58d8f55f9f689483b959417369e50b2e1b43003c8064916785cb730f58","bindings/cpp/icu4x/BidiInfo.d.hpp":"329f3c009e90d23deb0fc602c34ccce09c0e5c74e26e9aa6414757bdd44d0fa8","bindings/cpp/icu4x/BidiInfo.hpp":"c1b848b2d140dd975e06336b1b6a0669e8ad91e6b5602d1e94d1e5e65ee74f51","bindings/cpp/icu4x/BidiMirroringGlyph.d.hpp":"77eef3c648c75e433ea20ec2ee108d63165af9ff36bafd2d4acab87948e97750","bindings/cpp/icu4x/BidiMirroringGlyph.hpp":"739a7ec181f27e68019f081bb63a772a0c6ffa7f8e4795674317e69efc865d18","bindings/cpp/icu4x/BidiPairedBracketType.d.hpp":"b9762ef016be88371344142984b79348a95a86dc1706413da3c102af489538ed","bindings/cpp/icu4x/BidiPairedBracketType.hpp":"d5ff84abb41aac41a2f89076153e5493d53a05eb7c639a356393adc0504a1eb7","bindings/cpp/icu4x/BidiParagraph.d.hpp":"f66d03827958347b56810e63b0619822b981ef2e59706559ee9cd6b24714bbd0","bindings/cpp/icu4x/BidiParagraph.hpp":"60f8c7c874b6a888a134383e4fcca5d63108037ddf77955e04d4a38339e8b219","bindings/cpp/icu4x/Calendar.d.hpp":"2b4e555ca53173b6983ae30587c0dfac43d375e129ccab4f6ca95be953a8e2d1","bindings/cpp/icu4x/Calendar.hpp":"8690e92b672e9a8261cfd4d56b2042fa9be24ddeb9795214dfc0174cd6b6b568","bindings/cpp/icu4x/CalendarError.d.hpp":"74ab4732caacf465d656274afefb7a2ff6044cabde6ff9b0e88152e95406d63e","bindings/cpp/icu4x/CalendarError.hpp":"443e05f24d4f985db760ccee03c8d7a0735679b2eb3f03adbeb5975f75fc10ff","bindings/cpp/icu4x/CalendarParseError.d.hpp":"1ddee88c9e3654d73ba550d8fd9e627cf1a1ea238c5888353f5f786fd556f2b4","bindings/cpp/icu4x/CalendarParseError.hpp":"9a5762b1ac8823bbb00f8ec38b783b86728d1c9ec8847b9d59b59e43e73380ec","bindings/cpp/icu4x/CanonicalCombiningClass.d.hpp":"12580e4d9ce624639370208f7c289fc8120fcb516f737cc0397dbc015eb1984e","bindings/cpp/icu4x/CanonicalCombiningClass.hpp":"eea21f45881db7924b87ed962f4576f7e12d87c251afbd6cd950e4cc93722b49","bindings/cpp/icu4x/CanonicalCombiningClassMap.d.hpp":"2309afdeccc4590b92e0b93910c7d13c43845db56cf1d9efd9724e54ede9e006","bindings/cpp/icu4x/CanonicalCombiningClassMap.hpp":"3e13ee95554b601a75537ea85e1bbbb210d92ce72b344ef83772731e65c6c5e6","bindings/cpp/icu4x/CanonicalComposition.d.hpp":"c02973be23c910849ada8a77e0200a381f6221c1d1c73ecfb1a8083e2e487a4c","bindings/cpp/icu4x/CanonicalComposition.hpp":"87070d22fe060ea636df9ee99832daf12531cdee68f697e36a0d025cd1f4af87","bindings/cpp/icu4x/CanonicalDecomposition.d.hpp":"8a619ed12cc17b80a6b92f6f0b398fc5752a021c321c92e72911ddf20240712d","bindings/cpp/icu4x/CanonicalDecomposition.hpp":"3a252a47920df23a2b4a36ce51cb6b47fc47704229f67716d76999f5c8002bc8","bindings/cpp/icu4x/CaseMapCloser.d.hpp":"261fc28ea19c84ffbc19473531c10137aad90c6ecbdce07552df69379b750bde","bindings/cpp/icu4x/CaseMapCloser.hpp":"1d09077f0376c2d17a7be5e2962243f98827b1cbeab208f7fefbf025f5cf6a2d","bindings/cpp/icu4x/CaseMapper.d.hpp":"6c8cbffc6e2725fe81cd5100783673c51f0748517422e71d729ae7bc3f901852","bindings/cpp/icu4x/CaseMapper.hpp":"170c64b9d5c014a1146db6b712c33bc592be699f916b9745d993274cab38d396","bindings/cpp/icu4x/CodePointMapData16.d.hpp":"a5170ff331e9aee8aad8e7310e80b6caabb5dc3b5968f0b3b60afe68b265462c","bindings/cpp/icu4x/CodePointMapData16.hpp":"7131aba265ec97f9f4cf7e034d39da74c8037ddbbb3f046e70ab78c372201589","bindings/cpp/icu4x/CodePointMapData8.d.hpp":"d7c90b1da2b656c8a39f5ddf8e74ddc023fe11b2134543a7e3e7d45881f16250","bindings/cpp/icu4x/CodePointMapData8.hpp":"e0376545e07569337b0e09614bc192dfb20da0229233461002e7caac78a00227","bindings/cpp/icu4x/CodePointRangeIterator.d.hpp":"927bb2fe1dcf263701fca58a5e7f99cd650706a5eac94a5f939b022c435302e4","bindings/cpp/icu4x/CodePointRangeIterator.hpp":"b24d0eb175acd2e4878ea5682013430737e3e17aa355d28c376aae399a5f14fc","bindings/cpp/icu4x/CodePointRangeIteratorResult.d.hpp":"5ed3ce8b11b09a5d1ca7464c0d7ad2f8d0b6c10ad00115b77070158418f27015","bindings/cpp/icu4x/CodePointRangeIteratorResult.hpp":"6bbf9d3d745a1b4410f5cff132642e882d1377ac2efd19bdf5129deb5f371bfe","bindings/cpp/icu4x/CodePointSetBuilder.d.hpp":"a73581b2252fca5291ad85667e6228a0632fe5ad52008877856faec0fdc5f8a7","bindings/cpp/icu4x/CodePointSetBuilder.hpp":"232d3259fcf6f76bbf41b9cd747ac964db748164bbda4bea9a7f035dc32eb252","bindings/cpp/icu4x/CodePointSetData.d.hpp":"9f7fc9c90e3f595c044e59b902eadc805e0965053354d6dfabb8a2d549b5f543","bindings/cpp/icu4x/CodePointSetData.hpp":"c7ee836a8fed25ee28cd385d9cf91e9f219a0fb3894a7d3a5f9a27184d863b1a","bindings/cpp/icu4x/Collator.d.hpp":"c029c225f065530919c1c7163299d4f1dd329c4f811af6bb22b5a01d432a5b15","bindings/cpp/icu4x/Collator.hpp":"f699de29a78a4410251118202494076fb6fcef41a9d460f124b56cf9853cc03b","bindings/cpp/icu4x/CollatorAlternateHandling.d.hpp":"b461df75d1c4a8cd63740453b87dbb90a22c09c20eefeb828dd2bca10fc5fb5c","bindings/cpp/icu4x/CollatorAlternateHandling.hpp":"de3a312f6352234af938044348cb6203e973041fea6892b3d42c30b63475bc04","bindings/cpp/icu4x/CollatorBackwardSecondLevel.d.hpp":"8f8a0cde93e2288b46fefd60efca4f51b9723f0253a490cda02ff2298b0ca14e","bindings/cpp/icu4x/CollatorBackwardSecondLevel.hpp":"658eea4655a42ae5d6abb759abe5c04c89767146c18f83ce04718788c2338edd","bindings/cpp/icu4x/CollatorCaseFirst.d.hpp":"4c6f0c03e979bef4da0b0d2903ed22e596e18b26c55487476e013413c7909016","bindings/cpp/icu4x/CollatorCaseFirst.hpp":"61c720fc9576aeca89ed2441228e0f022f29084973385e2fbb903eefc76877ac","bindings/cpp/icu4x/CollatorCaseLevel.d.hpp":"85df48d22ed1d869351a5ac182b9122ef29d9f50256f6bbb734596e64788180c","bindings/cpp/icu4x/CollatorCaseLevel.hpp":"ea84aa359fdb42a9f109ae79e0a5b06c649a28bd89c4886f0e798b38647c4eb3","bindings/cpp/icu4x/CollatorMaxVariable.d.hpp":"bf52df7a4732832dcab8037eca73b9107e95f541da0697cb278802e223cd0f37","bindings/cpp/icu4x/CollatorMaxVariable.hpp":"c5e0e1336c01038925a8b6ee8cdf99c9f10c6c3ae405d52647aa3af503a8424e","bindings/cpp/icu4x/CollatorNumericOrdering.d.hpp":"b195d15097a43e59affee60ac292a9ca2256b4b39bc6b9cedac7045d6fbf07f7","bindings/cpp/icu4x/CollatorNumericOrdering.hpp":"0e4ced139f3aa7b6a7d845bafc8ffc1c9e8dd4842c0888414482b0de06f3f66d","bindings/cpp/icu4x/CollatorOptionsV1.d.hpp":"e0eeb7a3f8f53094f3f90fe270c924524d72d2b2420950c01b44fb8154f74e44","bindings/cpp/icu4x/CollatorOptionsV1.hpp":"3220a4e55401d885bf9510e2684abb615f4d6f5709ba6a8882c3983fe2d2d80e","bindings/cpp/icu4x/CollatorResolvedOptionsV1.d.hpp":"ab6358cf7d58a5e279e2b16238dcb4cdf62128de7de5dab350ffc62bc73b931f","bindings/cpp/icu4x/CollatorResolvedOptionsV1.hpp":"f26e2b5be38e251df55969031d4b068a29dad7806653466b6f5934291676351b","bindings/cpp/icu4x/CollatorStrength.d.hpp":"aa059b7e10c9afbdcdbae6dcabf9e8797a1c313fc6e8a3eed67175c181b992ae","bindings/cpp/icu4x/CollatorStrength.hpp":"7219e875e4cedbbf7e2f9f1bd585a84ec1be2dbb5a092cc3597609d21f2714e6","bindings/cpp/icu4x/ComposingNormalizer.d.hpp":"a6c44ec90a3244312d7f3cc1e9f23377521adb90fcfbddf695912f78f705206c","bindings/cpp/icu4x/ComposingNormalizer.hpp":"3ea96b23b0f4ebfbe2f651684eceafa44b14707166e04c446dc6beac03b95ee6","bindings/cpp/icu4x/DataError.d.hpp":"fdb3cbbc6b8274574a27a4ac3a00f1a730d0f17b4b3ef22d332413f33d97dfbf","bindings/cpp/icu4x/DataError.hpp":"5862b7d7c9399cee273ec84ba0edb29ba51bc452e20be07519cf6572305ca230","bindings/cpp/icu4x/DataProvider.d.hpp":"7b6ddbcd114361ff63a5c714f7a8ed9635b27d16140e3a3c357386e27728b7f0","bindings/cpp/icu4x/DataProvider.hpp":"04fdedff7dd570572910bf74a2ce9dad041f1cc9849471bd245c1cd73567ff3a","bindings/cpp/icu4x/Date.d.hpp":"90a4e8e3c91238fb7bedf7a4bc8235c358d0279901f1b064ad85e9553ce49b0d","bindings/cpp/icu4x/Date.hpp":"ac0ac0460c1941a7440fb853bbae7563b46a82a8058e163308aa2a0f16dac141","bindings/cpp/icu4x/DateFormatter.d.hpp":"af15a07b771b1931f2d04f09c26cf88dbe58d4dd6f901555dd461b0a3e4352b2","bindings/cpp/icu4x/DateFormatter.hpp":"16df4c74b80919ed85a354368b77a93f547df835cb0155ec8cebb170bf9bc1ea","bindings/cpp/icu4x/DateTime.d.hpp":"b41445cde4add6d0fe806e7a276bbd42853a1a266280deb12d30c7a69e0658a2","bindings/cpp/icu4x/DateTime.hpp":"ce52ff001aa7d89caa613ec068020711fc877ae738a884cb5da1fa4d0c34222b","bindings/cpp/icu4x/DateTimeAlignment.d.hpp":"e615c2f16d1bcf84b066cdda86dd8d0f8fcce72131dfe062d99cfa23915f3e7b","bindings/cpp/icu4x/DateTimeAlignment.hpp":"01c42afd6c6ef67a15821cf535537307f80a3780cb2bde3bbe724e12e5ec111f","bindings/cpp/icu4x/DateTimeFormatError.d.hpp":"fb4fe21193d4b65747b61251ccba862d6d4e4eb4be7615cd1626fe111e661104","bindings/cpp/icu4x/DateTimeFormatError.hpp":"d7eedf3c6280ae40655b7b15e4d554394a39cf0363f06f99a99db3d261ffce6c","bindings/cpp/icu4x/DateTimeFormatter.d.hpp":"c27a840cd157fce86075b73a9eff0cd54792e7b612dac64a09e4181f51b0986c","bindings/cpp/icu4x/DateTimeFormatter.hpp":"30ccf8e29a962387a6a092ad673558aa71fd69cdbf7856b217c23277f6b38b0f","bindings/cpp/icu4x/DateTimeFormatterGregorian.d.hpp":"b4d78b81cddc9cd05ab63954bd1367f33536857bfbc255332f883177d2057705","bindings/cpp/icu4x/DateTimeFormatterGregorian.hpp":"80244e4ed7ef476c845c28e9578d5605b5829f817b1591a4fc5d26615a8f42d9","bindings/cpp/icu4x/DateTimeFormatterLoadError.d.hpp":"597f855849dd6412b7cdcd50b6a4b755055c83687c819b30815cea3ab7162e93","bindings/cpp/icu4x/DateTimeFormatterLoadError.hpp":"f3508942e72cd4945f78aaf02e95834baccc4fb071581367f0e7035b9a42400e","bindings/cpp/icu4x/DateTimeLength.d.hpp":"435f9b88529f3bdb96b7f9399e66bfb8fccde9365763609a00c8482e246814c8","bindings/cpp/icu4x/DateTimeLength.hpp":"fe91c83e94a2d616c3a8f96a64a518868d3d86ecff053efe9ab10520b27d3283","bindings/cpp/icu4x/DateTimeMismatchedCalendarError.d.hpp":"aef13086854a6afd504f1434a377ea8c16a3e41a07a6d274d28c54f7ce3c6fd9","bindings/cpp/icu4x/DateTimeMismatchedCalendarError.hpp":"85175b8f4859911f5201152919195bb57e9bdd0458aa0959986b26240ebcb731","bindings/cpp/icu4x/Decimal.d.hpp":"e8710acfb74a0f77d17a8eb2a49eb85e97275a1f8d455224d72926a928274b3c","bindings/cpp/icu4x/Decimal.hpp":"d7bbd79105fc266fda2fb0aedc6abdeafdb1a67367cd6385b0ce3dc878faa775","bindings/cpp/icu4x/DecimalFormatter.d.hpp":"b281a0b35f20a6a1789fadd51c7f3a88af276625295ebddbccfd908134598334","bindings/cpp/icu4x/DecimalFormatter.hpp":"66f8a19ccb49c335200e65d0db6db4b455cfcc49f970f4a5966e565b2780dd25","bindings/cpp/icu4x/DecimalGroupingStrategy.d.hpp":"8dde4e8248334d1c925eb74c08ef42fa0018600021787f49c969a03ef346cb40","bindings/cpp/icu4x/DecimalGroupingStrategy.hpp":"4f44e2d5dc4b0004e9eb832572023a86cb2802991fd49163465d095e753373bf","bindings/cpp/icu4x/Decomposed.d.hpp":"0dfb5844f8b8fc903b9f4abc7806200b4eba721f2ee57bd164bd116e9a84eeb8","bindings/cpp/icu4x/Decomposed.hpp":"bc4116836fccdc55374ce47990b3caf744216e2459fa4ef5ebc0125957615a8d","bindings/cpp/icu4x/DecomposingNormalizer.d.hpp":"1724db59c1165e324d19eba5e2cb090477de899798aefd3f613aad3c22858b47","bindings/cpp/icu4x/DecomposingNormalizer.hpp":"1e759ff518721bde73a45ee9edb93a5684ef316d56aacbaeeaeb1bb2982572fe","bindings/cpp/icu4x/DisplayNamesFallback.d.hpp":"67cd56c9502ff4d2f42486f2415a7d11a076e10e6a581762624fbc3479e16cec","bindings/cpp/icu4x/DisplayNamesFallback.hpp":"4cbfe354ffeb7f10eff2029175bde4cbafabec942d6b1c876960dc5ea8911de7","bindings/cpp/icu4x/DisplayNamesOptionsV1.d.hpp":"cadc0fadcf00ed5404f45a7a7157b277a55f82145967e94fcdc984e4f882322d","bindings/cpp/icu4x/DisplayNamesOptionsV1.hpp":"509afb488c7fe5789956672e40223a0ee1afe498913655ba1f7bc7ca5f13f30d","bindings/cpp/icu4x/DisplayNamesStyle.d.hpp":"7850f5e6d00759e126481730861459ae41d122c30a908f53e1e4a195041359ee","bindings/cpp/icu4x/DisplayNamesStyle.hpp":"0bb9db8c5cd0d3cda0f452992f3fede73d1e142a632c5dcd76369db3395e1c4c","bindings/cpp/icu4x/EastAsianWidth.d.hpp":"300c3780850a33b06ab6917410d921da115ebc6bf0fdcc12c924fa0f8716ff95","bindings/cpp/icu4x/EastAsianWidth.hpp":"9a1d58bab917c51b280ca12e28b1c80ed24d6e86607c6c3d96c2204c71cc3362","bindings/cpp/icu4x/EmojiSetData.d.hpp":"8c20324282eeb45c9ee0698343b2759a944274d8d4da52683a2edfc9ce4cb49b","bindings/cpp/icu4x/EmojiSetData.hpp":"e58f7571a7bb8613760f6f57dee232cbd8134f1d48af9b240aaa89b51e2607a6","bindings/cpp/icu4x/ExemplarCharacters.d.hpp":"13b836a0f2e12cd00fa552450739f1e3b8dfb5168981dfb09e433b7896bacf3d","bindings/cpp/icu4x/ExemplarCharacters.hpp":"7f7e61497ccf08dea427eff1c471f4cdea8d5f1c9571369d2817eedea575c0b1","bindings/cpp/icu4x/FixedDecimalLimitError.d.hpp":"012eae501f7deaf2f0b5f2bbad1918650c1820a9833128e17ee4c8f591fb4a54","bindings/cpp/icu4x/FixedDecimalLimitError.hpp":"22af65a280740f4c53103c391758c36ccfcbc7c7409836fb9d9dcf33c87b8374","bindings/cpp/icu4x/FixedDecimalParseError.d.hpp":"5b4dbb098febad30a3ae7afeb0ee4c0e58e05eb23dd0ccf0c7c330a9cd140018","bindings/cpp/icu4x/FixedDecimalParseError.hpp":"c0ffdf5dd3336b5d09f0b85d667317fd63ca565677e5a8259dc46eb15a4d698e","bindings/cpp/icu4x/FixedDecimalRoundingIncrement.d.hpp":"c4f038abe288bd317a8b784ac3edb54ec60751cb8312ce42bdad5ec7ff709647","bindings/cpp/icu4x/FixedDecimalRoundingIncrement.hpp":"da623c9a08bac9e5609b8369fc43e831fc35794ceb712f0ab47d3ef0a375b9bb","bindings/cpp/icu4x/FixedDecimalSign.d.hpp":"430581e96f57e8d495e851d1e996a877a3b84fa5e452c8ff3be8540b6993f112","bindings/cpp/icu4x/FixedDecimalSign.hpp":"fb1aa3cf9f1cbc529df500d9b1a9fd185f48ee33ab0f8c94a55b4c1c91163cc8","bindings/cpp/icu4x/FixedDecimalSignDisplay.d.hpp":"c0294ed2656a8752fccee9bd0ec68a837f809a0dd2135b84d4007347ef6357d7","bindings/cpp/icu4x/FixedDecimalSignDisplay.hpp":"5a01117b0378d9181e8ae91ba7acb9d17925bd11a9a05f9f746ef568970dc436","bindings/cpp/icu4x/FixedDecimalSignedRoundingMode.d.hpp":"dd3a4e5278894ba1fdc523c08578a16f35e55dce179efd09d4fff9dc3beb7de0","bindings/cpp/icu4x/FixedDecimalSignedRoundingMode.hpp":"a5f340d42a0efdb1baec33908dca57aaee53148d9c7abb952ccbbff3d9127074","bindings/cpp/icu4x/GeneralCategory.d.hpp":"c302aa553d0d9b6e5fba3e5b96c4ec8e9f3969273b440ca67312b2dc2eed7ba0","bindings/cpp/icu4x/GeneralCategory.hpp":"647e4d75e0e4c10aedd93597c76756639ecf3983c2623b7184d1ab3b9dca766d","bindings/cpp/icu4x/GeneralCategoryGroup.d.hpp":"e27f25a5bd4d918dba292d1435fabae1d832e6b11951c50c4b1d6ed279fbfae9","bindings/cpp/icu4x/GeneralCategoryGroup.hpp":"882893898a0fec56537aac7c619aaa3652ca5a203f021ff221094e319f0db0e1","bindings/cpp/icu4x/GeneralCategoryNameToGroupMapper.d.hpp":"be52a9bd3a6209385296230b172b8d7610b08156511a6911a63ad940f71de366","bindings/cpp/icu4x/GeneralCategoryNameToGroupMapper.hpp":"f6fa7a5e4915fbed67dfbfa5018ad64ab5017d75d7287945d1a32d577777908e","bindings/cpp/icu4x/GraphemeClusterBreak.d.hpp":"ce3fa8539104defb56505836cca5564591c08b774e017a83ca472a9ac6b119b3","bindings/cpp/icu4x/GraphemeClusterBreak.hpp":"c7b1d16fbd1a2891b279afa2277730e371b9e2fc8334d6d95e0cb7ba501d3d08","bindings/cpp/icu4x/GraphemeClusterBreakIteratorLatin1.d.hpp":"374ed31e684930ba9cf22f35bb12c20d742c6883568a2fe785af994c2ece10e4","bindings/cpp/icu4x/GraphemeClusterBreakIteratorLatin1.hpp":"b6765fd47250dc492cc6bef083bf178e0589d120924c53748b64a46eff4ae69f","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf16.d.hpp":"80c3ea778c75b58cd72038944935dbee99532b289d5579b4d72438ec387831df","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf16.hpp":"1c1bca878e4813c7fc0e9a9e06f66e1e1628aaa791cccd1c3ada5d069cc2d414","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf8.d.hpp":"5f9a14fccdd2891b91a587fbc9f5f7055dffd4d80f0fe25392a47971097debc1","bindings/cpp/icu4x/GraphemeClusterBreakIteratorUtf8.hpp":"12e4c1bc9cdeddf6eed8773c9fb6b04d40c74aa9f363c5e36d97ad0f5be75daf","bindings/cpp/icu4x/GraphemeClusterSegmenter.d.hpp":"4549cfeb90f251c41a635e980e4c7976933e0696eedc1c56405bfcefbb005ca7","bindings/cpp/icu4x/GraphemeClusterSegmenter.hpp":"194a78face91fbb82ee48579d435c1b63d01a04a0b62116bdef66d931fa952f5","bindings/cpp/icu4x/GregorianDateFormatter.d.hpp":"ba738d018619b6f710a6a500bce3c4490277b9ac22925055325e08ca0e246617","bindings/cpp/icu4x/GregorianDateFormatter.hpp":"061c3ad5353012a7dba23bba291b09a86ae4a1b7f968b8aaca89216fd65488c9","bindings/cpp/icu4x/GregorianZonedDateTimeFormatter.d.hpp":"284c4bc131ccf9f1f3ce7b95078dbe2d19b5cd9a695a6124c4aef8574065924f","bindings/cpp/icu4x/GregorianZonedDateTimeFormatter.hpp":"0204ba3674184bbbbc3f44af8e3588acbe791a75f4f8f7c5848842a4a94d19dc","bindings/cpp/icu4x/HangulSyllableType.d.hpp":"2d4d5a79ed0a0fc0d27c8e52db7e720d37442f1426719edd5fbba657bccd2bfa","bindings/cpp/icu4x/HangulSyllableType.hpp":"31e34f008de85ff1c5242d1f870a2d06ec2a74d436c1d48875019b706ad91a00","bindings/cpp/icu4x/IanaParser.d.hpp":"967e0d98dd4e977c90f2d1f647400340637c76f909d3c30e3e40e201a9898a02","bindings/cpp/icu4x/IanaParser.hpp":"86ebd5e54bf91c863b918df7a0786d57b06242594897ffb2cc2127837d5b691b","bindings/cpp/icu4x/IanaParserExtended.d.hpp":"f1aa9ecdc45ca4cec8975131f196afbe68615deb7288c529c252a2957da26033","bindings/cpp/icu4x/IanaParserExtended.hpp":"598d1f918c73a7c6fad2314c2b727e35a1f04e927fcb636259a22bf58c96912d","bindings/cpp/icu4x/IndicSyllabicCategory.d.hpp":"ac5fce5ccfa228036463cfb25c5fd48bc3f78817b9a2424847738924046c1fc9","bindings/cpp/icu4x/IndicSyllabicCategory.hpp":"2df9f8963edcdae6c7d5dd1c4ac6808cb0fd1e240b2f97d95e4b7f97b8a5d8ce","bindings/cpp/icu4x/IsoDate.d.hpp":"9c94583b7e70f69d00c895ee165cf09bb2d34aee681923f392260b98d5f2f1bc","bindings/cpp/icu4x/IsoDate.hpp":"7eed652388b52b3b5c34b6d9aed5bf84e0d319da0674a445c09a1792d309a122","bindings/cpp/icu4x/IsoDateTime.d.hpp":"7750280e1c04162683f7d992ed318d5c75e781c2e98e18c27ac1e200b8b0f5d5","bindings/cpp/icu4x/IsoDateTime.hpp":"2c2a7313d555a0a4fcc5ce934869c9856883afc44c48df3d19e951c86eda4573","bindings/cpp/icu4x/JoiningType.d.hpp":"01987ef0940a9213fd0a37a8033103a9d7954a0f3ecb9fc225f04aa47fe72d94","bindings/cpp/icu4x/JoiningType.hpp":"edd4b14b679bc381dc0aeaf36ad2601aad1cd67cd8cfa78bcbc0ddf78fd4c62e","bindings/cpp/icu4x/LanguageDisplay.d.hpp":"e41847952e219fcd00a9f07d162989f548bf14ffc878bf23f49658466ef73d2b","bindings/cpp/icu4x/LanguageDisplay.hpp":"dc5059fd07b0842e98c436b1e42581a38be5d910ac2c37aee6390df801e5a6e5","bindings/cpp/icu4x/LeadingAdjustment.d.hpp":"63a2eaa1df86b4c1e2792aeab1c6fe472bc40204bb8fbfdf3dc01e8ed96502f9","bindings/cpp/icu4x/LeadingAdjustment.hpp":"9c2e1943bdb4724e7b0e086144d9b1f6fcbbb1ef1a13899ad27d6f28f92b5554","bindings/cpp/icu4x/LineBreak.d.hpp":"e54bfcb6c828e079a2b8a89e596cebc059ea3828ce86b16f3d1bc3cbbe63b93e","bindings/cpp/icu4x/LineBreak.hpp":"9a326e45670e38424c2534bb3e4678667836d40d7d8a7fda353893b36aacf794","bindings/cpp/icu4x/LineBreakIteratorLatin1.d.hpp":"25a4f06c466646672b734e3668406a84fb014731b60c91abf7d0628ced09f81b","bindings/cpp/icu4x/LineBreakIteratorLatin1.hpp":"7440aa96ec7e1754cecb6eb35e8cab08725bfe396679067afcb1f92c1342df1d","bindings/cpp/icu4x/LineBreakIteratorUtf16.d.hpp":"a619a68d0b66533fecdd7a0a0ff0ed675105995fd8a0a5e75c9b1f748e38411b","bindings/cpp/icu4x/LineBreakIteratorUtf16.hpp":"65ee049fac5c05947f55ae7888fcebf05d80898449c2534870e4ff52eb635f96","bindings/cpp/icu4x/LineBreakIteratorUtf8.d.hpp":"3da5c0d53073b088fe7ee2ad778ac5ac2e545dd6f5282ddc31d530bd7ee0f7fb","bindings/cpp/icu4x/LineBreakIteratorUtf8.hpp":"ddc795324714c27436db8b0ffc03973982120fbf8de80d712d94c7db21c5a038","bindings/cpp/icu4x/LineBreakOptionsV2.d.hpp":"90c305a41cca24d0ede889cf8ea09a86dfd964cb4f3f29adf3cf8b844686a6d0","bindings/cpp/icu4x/LineBreakOptionsV2.hpp":"2ef2de5685e6eadb2aaeb3a74133e4877a1b258d55fb9aeb2bb2a33b912d599a","bindings/cpp/icu4x/LineBreakStrictness.d.hpp":"db8c8356262c50e474ad133ce951c9f6ed5f18584e060fa0b74e2b3980540952","bindings/cpp/icu4x/LineBreakStrictness.hpp":"9aa8de975e65837ae62c3ad7960e3563a260824304a6182896a451f80e803f87","bindings/cpp/icu4x/LineBreakWordOption.d.hpp":"3309e496c932b1175ba2df5909c15465e8ff43d92b5219b10fbb4960831233ff","bindings/cpp/icu4x/LineBreakWordOption.hpp":"78c793d8f8c30ff59e8b9780db78b927710b5d0e0c12ffc84475c8e0230890ca","bindings/cpp/icu4x/LineSegmenter.d.hpp":"550a11d0bcb53b13cd098b2ccdf3bd2fb5183ca7671c04815cb0b3dd5496a907","bindings/cpp/icu4x/LineSegmenter.hpp":"38621b075127b25d61beb18e113d955ea9d2bab86547f1d32197cb451cb98391","bindings/cpp/icu4x/ListFormatter.d.hpp":"0813ba0cfcf39623986636967a8c316a18d4759c386d2f7af50cd708302d5d53","bindings/cpp/icu4x/ListFormatter.hpp":"a9a18f811fefc51c031a63d285caf8720f35c6b3004d5c310b62bca0dc5e42ca","bindings/cpp/icu4x/ListLength.d.hpp":"80903eea1e50f6da03dc01e9900bbde4dc503b44a3a6ce1355e0ff5f2fe249ed","bindings/cpp/icu4x/ListLength.hpp":"4767e5a1f47cf9205ccbc82b94c1b84d5ac534d7b3d15ff62cf838fcab40ff67","bindings/cpp/icu4x/Locale.d.hpp":"2385f20805e345383ab0891ad9c2fdc5307b7218d164eca38e3cdecd73a32e87","bindings/cpp/icu4x/Locale.hpp":"af1ee05616edf7b231a179d3d11dbb8a6e6ae49cd6f7f8538cce61d336b01ce1","bindings/cpp/icu4x/LocaleCanonicalizer.d.hpp":"905a015dd60812529f2745870b13e52af0c33f18b656a5cbd25b1b3dbc80fd14","bindings/cpp/icu4x/LocaleCanonicalizer.hpp":"8e22851d614b8989688d8d6d8b8b391d83ab73ee69b7aaffe6d844db24890bd5","bindings/cpp/icu4x/LocaleDirection.d.hpp":"bfd2ed32155725b355bd2c7818c028a0b64f6a8d62ce33df481605fa4e57e97b","bindings/cpp/icu4x/LocaleDirection.hpp":"0b34c20f197f051a28c61d1d8657b3a12602c1159928aa6351fbd8722b746a00","bindings/cpp/icu4x/LocaleDirectionality.d.hpp":"e8abad66fa2b9819f4a87045738ec4e3987900205d591c38429a701dc3f9ae4f","bindings/cpp/icu4x/LocaleDirectionality.hpp":"cfb9096650b362cd2de502952ff067bd68d8a5d67b5cfdb3c423a5952e08a4e8","bindings/cpp/icu4x/LocaleDisplayNamesFormatter.d.hpp":"854b928ff4b5c3ad6667a12f07575521bd72a42504297acb2f159d51fc3ddb0f","bindings/cpp/icu4x/LocaleDisplayNamesFormatter.hpp":"db0fd8792ec4acc76da0364fbda0bdd13ec516ebe2872428e69a056a6f158123","bindings/cpp/icu4x/LocaleExpander.d.hpp":"cafb8b6d96a3c21196e727127f2d8eedc691a13802ff613a690a5e265da1815e","bindings/cpp/icu4x/LocaleExpander.hpp":"e00ade0a438be235f1aa2018d13f1df950ab65c414d602be51908ddefc00f047","bindings/cpp/icu4x/LocaleFallbackConfig.d.hpp":"078832c3ca6a0157bd96315e41acfe3be81d5e3c20f08a19f0c74f00f4af8365","bindings/cpp/icu4x/LocaleFallbackConfig.hpp":"7696ecef51ffc3693bef49c0f4246ffce40e05549d23a382799f556e28b17e98","bindings/cpp/icu4x/LocaleFallbackIterator.d.hpp":"940be5784fec9dc479137cceb21c176cf9f4466987585f66d818e3eebfa1f326","bindings/cpp/icu4x/LocaleFallbackIterator.hpp":"a8dd93399a84041721b6dbedcb7e692d75d7235163e9591b326a2befc5a05e1c","bindings/cpp/icu4x/LocaleFallbackPriority.d.hpp":"52bd8d8d596a7171276ba559960943b72523cc05132d36ece3729b86ee24ee6f","bindings/cpp/icu4x/LocaleFallbackPriority.hpp":"1451020b18e7fd46643d55a8ce239fb8416309bfcd5149a8f661fc46dc4ac019","bindings/cpp/icu4x/LocaleFallbacker.d.hpp":"5044cd2a129cab0820b1f7df206109e5445c50f4b4083c82fa1945384d8ffc08","bindings/cpp/icu4x/LocaleFallbacker.hpp":"0b27fd490785525a585dcc3d6e30391773d048ffadf45b081d63906fae67e8be","bindings/cpp/icu4x/LocaleFallbackerWithConfig.d.hpp":"5f99c6034a348c4ae486671c43572324a6daa75f296365d9ca01ee98e87fc286","bindings/cpp/icu4x/LocaleFallbackerWithConfig.hpp":"c7a09e7802401cfd98d14c2bf157062c5d7aba57e1e2380c29f9bd2e3a9ae891","bindings/cpp/icu4x/LocaleParseError.d.hpp":"20aca9b7480f33ec23846766ff929592600c7a8e8c93050d2c470426296e8f36","bindings/cpp/icu4x/LocaleParseError.hpp":"2a52497f428c49f3fa6f404930b65618917cb4c675f7946dad5d54242db3d653","bindings/cpp/icu4x/Logger.d.hpp":"ad6cad54946202ccede3a4248fe24a2a6a95954785a2a875e7e694e03294f079","bindings/cpp/icu4x/Logger.hpp":"24569d3546b6e3c8eb3c6bb0186549f068305122aa38aed32d82a767362d8d79","bindings/cpp/icu4x/MeasureUnit.d.hpp":"f38578b5f6ce9f211c287206eb52b0ef93fd1f510771be648ee7132807c5aabc","bindings/cpp/icu4x/MeasureUnit.hpp":"392822db290a37e167acd59bb54cdfa9b1718056d0e6b0414a116ae38a40fac8","bindings/cpp/icu4x/MeasureUnitParser.d.hpp":"c6ba5ecbf0d897be5e9da266d5cb943333d34b79aabf40405686f9a560f43131","bindings/cpp/icu4x/MeasureUnitParser.hpp":"e5afdb4d9473be449fb4b65670452b73747813ae675ae77d29ff6021ac45ce72","bindings/cpp/icu4x/NoCalendarFormatter.d.hpp":"1fdcff9df754785f2dea77f3a8cddf2d676182c0fc107383e7c81e3de753bfee","bindings/cpp/icu4x/NoCalendarFormatter.hpp":"59bd38e6db196c91402319b64705c187b497e4e946a6eea282d2cc1c61457088","bindings/cpp/icu4x/PluralCategories.d.hpp":"1a58a8e5b1b482c6c0dc15785e1de377fc567e18d0ac1b6bca26ccb2c5abc65a","bindings/cpp/icu4x/PluralCategories.hpp":"9b12dc447d07cb06f2b62b2d1148ccdf82dcc76c2c5a01844c424bddb45fc0e0","bindings/cpp/icu4x/PluralCategory.d.hpp":"3017f9de909bfbecb53550882ad9af0d848be29344c7ac4e2de540f9084d196e","bindings/cpp/icu4x/PluralCategory.hpp":"16376a3efefcc06237f7aec7b36b19c9e032dba6aa200d77ff1a3292635f1961","bindings/cpp/icu4x/PluralOperands.d.hpp":"e7bb2c06889bfbaf32a5f94d3b14778eb1f149964ae31aac042110732c8dc6e0","bindings/cpp/icu4x/PluralOperands.hpp":"2b03f93f1f15275fadf4837efeb5d9b7bd4db6e546fdee596c855e5060f0f7e7","bindings/cpp/icu4x/PluralRules.d.hpp":"3a259c1c13c33974876feec1e546cf816e83ec6068ad6ce8730b00c522fd9607","bindings/cpp/icu4x/PluralRules.hpp":"a6e508e3e6c6bece941eb7683b26fcc02e918daf60e75ca2f3e1fa7ffa03ce39","bindings/cpp/icu4x/PropertyValueNameToEnumMapper.d.hpp":"319311a1784b16382469af923612fb6ecdfb4ae80a0addb828e259f648d45e57","bindings/cpp/icu4x/PropertyValueNameToEnumMapper.hpp":"83b328e22d2ff2a33ca7b4c4f963fcd38043f7fa20490ac2f9977cdbe1067804","bindings/cpp/icu4x/RegionDisplayNames.d.hpp":"3272d4f77b17f4422e652a70be4e20905e6425f02ee633d3adfd2c4733cb7dad","bindings/cpp/icu4x/RegionDisplayNames.hpp":"ed2f49af95c5c48fc642362c1859e9d54d92b7ece3efe0e0cf4252b7daabfe2e","bindings/cpp/icu4x/ReorderedIndexMap.d.hpp":"d75ce824369081a7cd62d240f2cbd71c1a122323e9daae2d537ef02cec689b04","bindings/cpp/icu4x/ReorderedIndexMap.hpp":"7424d1cf61c43cafc8d3e3d802eb34e7bec33595e2aa70e893c7d1ad390e3540","bindings/cpp/icu4x/Script.d.hpp":"758d048e5a407d2ec5f1dd3357a014e5e60d77305e1477abcf683bd2d1c4ff0f","bindings/cpp/icu4x/Script.hpp":"0a2d52c5930a332894227db08ccea27d290600ac77fc3215126c13d3e28d6f47","bindings/cpp/icu4x/ScriptExtensionsSet.d.hpp":"78be1205f4871285afd2f856c60921142ce0321e2415047f4d77f1739cac4729","bindings/cpp/icu4x/ScriptExtensionsSet.hpp":"f7b9c7502955ab4321ffeb9aab8456f670e4ba54e1c5883029b03206030aa2f7","bindings/cpp/icu4x/ScriptWithExtensions.d.hpp":"85537899784ac1f4d531a3219721dc2a6d9432dd8850440838f038e9ed294a14","bindings/cpp/icu4x/ScriptWithExtensions.hpp":"32329a5f496d430db9c0c2614b51802dc13ec156ee9f8486b219e888c2740dc3","bindings/cpp/icu4x/ScriptWithExtensionsBorrowed.d.hpp":"2eff03ca26d3ec079d027cb920576f925d3e44b2689cbcd2dbd4edba595c98b1","bindings/cpp/icu4x/ScriptWithExtensionsBorrowed.hpp":"abc45b6af4431267a13ec16b3de846af86e5ea81cbac5a222ece8ad329f9c13f","bindings/cpp/icu4x/SegmenterWordType.d.hpp":"f9574775bd5eae7c53c0c23daecfc33896aadf70911dc5ada6326c4b3f6a1042","bindings/cpp/icu4x/SegmenterWordType.hpp":"2ee73b27aaa442cea122104657b8a031f3ad094d2f15001a137e54c3d4c91351","bindings/cpp/icu4x/SentenceBreak.d.hpp":"021fe7e6a987a7d552ed2316d621b4d7748800b26934a87e6cecc9114a27d93d","bindings/cpp/icu4x/SentenceBreak.hpp":"20576a6de86670a2320d7e514ba4378201f52f035ab694126a553f81247a85f3","bindings/cpp/icu4x/SentenceBreakIteratorLatin1.d.hpp":"6d5711954112bc922c155f769eb19a08bf627f3a96377be9db13e70d5c149e32","bindings/cpp/icu4x/SentenceBreakIteratorLatin1.hpp":"0ab44c165ab9308e05ee8105fd13e3b22a314e7474a2aa92898c23bc200f95f8","bindings/cpp/icu4x/SentenceBreakIteratorUtf16.d.hpp":"d8e0a822c05af8a92caa23b8f87332e811012c4485a7d34908e635b4b4a0323d","bindings/cpp/icu4x/SentenceBreakIteratorUtf16.hpp":"63e9d412364396dcec469e6a345130967ee4c6768fd2864707e2fead4a5bc576","bindings/cpp/icu4x/SentenceBreakIteratorUtf8.d.hpp":"4e6c6aab303d1800646e31522d43232c8212424776037edbc0d6709e3eb7226c","bindings/cpp/icu4x/SentenceBreakIteratorUtf8.hpp":"509bc7a8f7c7ba5fb521734c208f638720a507993c84371adf9d32cc1ac44fc1","bindings/cpp/icu4x/SentenceSegmenter.d.hpp":"55426e22476ecfefce5a27d64114d61a0f9d26749b3d0d4f5528d5a73e497be7","bindings/cpp/icu4x/SentenceSegmenter.hpp":"b8347394703781dace7a8de1ed3f1b0fc68b3b3ebe811b8f050ad31f4a5519e5","bindings/cpp/icu4x/Time.d.hpp":"8b6991f8773b689a940fcc09f8380d9585c5486d4f00ef854515652b3049ab90","bindings/cpp/icu4x/Time.hpp":"5f34e54bb6f30ee10d4ae7005d8307af26f273db92d1232190df14e23e545f69","bindings/cpp/icu4x/TimePrecision.d.hpp":"000e6838954d3c0b871ddb5ffd782bbfdb88f34df4aca56a683c3df5143b600d","bindings/cpp/icu4x/TimePrecision.hpp":"47bc229a5dcf46e5fc7d2abd5033ea5f6c9453fc5b3f2e3ee82d99ce70156fba","bindings/cpp/icu4x/TimeZone.d.hpp":"363bb9bd6d0a9a084c1bd7df06bde3184973a09de6e6c12d57deeb82b4c268cf","bindings/cpp/icu4x/TimeZone.hpp":"1f915ee122a3458243c1fe9b1701b0ebb1ce78f9d0be1e9dbb0b5328cf7370fb","bindings/cpp/icu4x/TimeZoneAndCanonical.d.hpp":"5eac2b90e3ca807e70de69018deda59bf83b0dd813ebfd7239f7e0788098d655","bindings/cpp/icu4x/TimeZoneAndCanonical.hpp":"33f2d7b8b0a71f3053d79432c403164ed418f1b2723bebe576727640a308257e","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalized.d.hpp":"15bbfb751d660dc47758ed3d691f9b78f7f3574f649f1b918313d50ea823e18f","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalized.hpp":"90f38429ff91044147be8403dfc6c6f8a071eb587d1a22bc6405c0c4aedff042","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalizedIterator.d.hpp":"6a4d4b82b312c1eabc0ce5bcf706c657982c3862e6001d5097fdbf83d63e3f0b","bindings/cpp/icu4x/TimeZoneAndCanonicalAndNormalizedIterator.hpp":"2576c042d8c048939f6f15f70d983d2d6977e9cd6b1bef4a1657083603e8b9be","bindings/cpp/icu4x/TimeZoneAndCanonicalIterator.d.hpp":"362b1af47cf9063440bc26d9505411cae028b29ac835663c41ab04c25c05bf2f","bindings/cpp/icu4x/TimeZoneAndCanonicalIterator.hpp":"b6643f8b60d03f5cf3c77f54455af77966563852f85408bd6753405861ceedd7","bindings/cpp/icu4x/TimeZoneInfo.d.hpp":"2df70d87a18bceeea7d044f254df9ee737dcd4486da74b61831d62e187dac8c8","bindings/cpp/icu4x/TimeZoneInfo.hpp":"039b6408413c12b89f44a6024afe152f71c75fe4f5d0c78f3eb494b18dededc2","bindings/cpp/icu4x/TimeZoneInvalidOffsetError.d.hpp":"fc6cd1cb0c8fda5405297ee6811a10bcf20fbed75be11952f637ec5e0b488421","bindings/cpp/icu4x/TimeZoneInvalidOffsetError.hpp":"1be5d7cba83a8287a00f4fef8e00526fc900341ae731aadb0070a30ce99fb3f4","bindings/cpp/icu4x/TimeZoneIterator.d.hpp":"2285937ec22ca7d24c090efa82b07bf61f4c0f0cb232d8fe5c148c9283b34fe5","bindings/cpp/icu4x/TimeZoneIterator.hpp":"8df669878a973ea58f967057143e34a898b4245cf77c95e361a0a35735446d16","bindings/cpp/icu4x/TimeZoneVariant.d.hpp":"36a6a81d822fa3cb79953ad3496b051795436ac8731a7c5e86ed487dad2cded2","bindings/cpp/icu4x/TimeZoneVariant.hpp":"ce92808f208d245d29bf8a4e2b0a1fa93270859555eb60102fdfd621b05ba9ee","bindings/cpp/icu4x/TitlecaseMapper.d.hpp":"54a3d3f3021c3cfe5a927da6c34af0ee163c97a63952813d5489b4f0e507e18f","bindings/cpp/icu4x/TitlecaseMapper.hpp":"3f83b1b074c30d1b094affebadcfede4d2d76997ba893f587c0c55cfae965bb2","bindings/cpp/icu4x/TitlecaseOptionsV1.d.hpp":"58da939614d2e8613e1be34b5c2aacbdd10f05dc5343b925faa1af2a7c4fcb9c","bindings/cpp/icu4x/TitlecaseOptionsV1.hpp":"16e13dcf51bf5a910ff0751c28e0ad685b31bb171edc005bb8e3ce848d3fa699","bindings/cpp/icu4x/TrailingCase.d.hpp":"7251a1e929d8db9f8eeac3d5e62fef312a7c6e971171697d0499f83a371bd4e6","bindings/cpp/icu4x/TrailingCase.hpp":"96e77400d02755cb48033b3437c625cbf19859ffbf42e78a1a9840ae9629a38c","bindings/cpp/icu4x/TransformResult.d.hpp":"dd1e3504ea9c56bec86ed141e87a3b736034559ecff0778d69bd849cdf77fef7","bindings/cpp/icu4x/TransformResult.hpp":"6145cabacc972f6cdd22c40414cecd91feb80a812ea4b5d6a55f2b5cb03eae30","bindings/cpp/icu4x/UnitsConverter.d.hpp":"2bc1704dd51095c279fa162e5e49cfbf5f7c1bc307e490d143ca0a637496e3fa","bindings/cpp/icu4x/UnitsConverter.hpp":"e0857ca590221e94e508ba0dcc07f47353505555b4bc734654f5be43dccca242","bindings/cpp/icu4x/UnitsConverterFactory.d.hpp":"07240e9218b4c2c202fbc39a6bcbe3aa97a389b51429d5972301f1932637fbe5","bindings/cpp/icu4x/UnitsConverterFactory.hpp":"3d3527fe64be4f11eba3e4ea680923ef4c06fe888d5f1bb75aa035e6a22428ba","bindings/cpp/icu4x/UtcOffset.d.hpp":"03310aa18e90117665719d7a829d5d62fef6cc340e6a20c890dafdce99c9ff76","bindings/cpp/icu4x/UtcOffset.hpp":"1a7fb8a562331476388974b2982216587fa1cb10e3a5b5baa97be841532df090","bindings/cpp/icu4x/UtcOffsetCalculator.d.hpp":"16dd34d56fc6e743f76fbccbb221596e5cc79fe6243b3eca3a9af40a7024e23a","bindings/cpp/icu4x/UtcOffsetCalculator.hpp":"69ba66badcd2f3816596c643289ebe572bfc667c7ab817319a33867b11e9e2af","bindings/cpp/icu4x/UtcOffsets.d.hpp":"42b5be16bb2f2a93b00d80899e934cb6a8e573e087e99696b0741a1023d11556","bindings/cpp/icu4x/UtcOffsets.hpp":"58557ea4d7c529439cab6637988d995223f59e2ec6c1f59633d9d4d116ae41c8","bindings/cpp/icu4x/WeekCalculator.d.hpp":"126acf1b2cce017c4a4a034966b22f023693cc2eadfc4c14b6f3a122b99e6957","bindings/cpp/icu4x/WeekCalculator.hpp":"e55d860feaffb16fbe6db47fe1679d94a03ddbb4663083e728a4cb9a2757b279","bindings/cpp/icu4x/WeekOf.d.hpp":"de88e56b6930c767e757993429767f0751daa956bfe51c6ae2c25051bd5a968f","bindings/cpp/icu4x/WeekOf.hpp":"ba8052e96d4c85d732e1825675d7b937420d3f7a5349651e63fdc7a80e2213d2","bindings/cpp/icu4x/WeekRelativeUnit.d.hpp":"7760d841de3bc292c79e0cbd1b30aa6c08bc7ced13ebc3167e37ca9f9eaf1aec","bindings/cpp/icu4x/WeekRelativeUnit.hpp":"cf3e9830e3ab2e3d88b56b813bde13b901cd3cbcfbab8a2f90f3b8ad3f1dfd52","bindings/cpp/icu4x/Weekday.d.hpp":"06b0a5f5183240f42659837bb2bfb151abca09e2551733d02ec56c5dc49d0235","bindings/cpp/icu4x/Weekday.hpp":"4982e41691fbbec333c886ce2ceb06d3e9ddc4f71bab75979017ec823a4ee188","bindings/cpp/icu4x/WeekendContainsDay.d.hpp":"103a37e7cfa778602180eaaca75efe5a824716965081c05b66ec616b1385d7f5","bindings/cpp/icu4x/WeekendContainsDay.hpp":"9cf9435b232a5ec1adb908da1c46c36a69978282d0e19592fdfcbf09fd8eb710","bindings/cpp/icu4x/WindowsParser.d.hpp":"ab6f2f98cf28cbc73186d45df754c2747541d885a5760182e7fb739c761489f9","bindings/cpp/icu4x/WindowsParser.hpp":"d2cc046ab0000b1199818aca036c635810219af49f741286a26c2756c68d8899","bindings/cpp/icu4x/WordBreak.d.hpp":"88fbf3fae7404d9e9a9eed2b342b49d0ec63ed7ece3bb55284764f2797e1e993","bindings/cpp/icu4x/WordBreak.hpp":"0cfebc0e362dd26384ee770559be312a560927491379fe4141656ac86176bbcf","bindings/cpp/icu4x/WordBreakIteratorLatin1.d.hpp":"385f3788965e0cf0caf6ed08f6acbe067d4bd5e7c7d916a5e1d212684a0955fb","bindings/cpp/icu4x/WordBreakIteratorLatin1.hpp":"5a3e10b6946cc30acd1eb7e3042bcf8c909e943a80b8ecac548b8509b12d474a","bindings/cpp/icu4x/WordBreakIteratorUtf16.d.hpp":"5875f93babfbcf7073f4ec248195571afa4d5a2f9781c44946140826be9b4ac0","bindings/cpp/icu4x/WordBreakIteratorUtf16.hpp":"cde1ad5825a05d7b51b4bf6760b27e5bce9cd59f51ba04b6c0c19d77af3e4427","bindings/cpp/icu4x/WordBreakIteratorUtf8.d.hpp":"518534d358de76f7c290da09adc59e7961e67cb7a170e6a768a99658fc22c182","bindings/cpp/icu4x/WordBreakIteratorUtf8.hpp":"f67c96baba5b448adcdcbf627b908cfc7b32372142f9f0eb6436bdebd50b2f8f","bindings/cpp/icu4x/WordSegmenter.d.hpp":"8179a00f8f2f8385e89ef2539d42ba07b162812d7c134310b824f171d76b2e28","bindings/cpp/icu4x/WordSegmenter.hpp":"001199415c49b77dd1da050b0d48fb16e92358c0658d5b5e0597f010297768f1","bindings/cpp/icu4x/YearStyle.d.hpp":"50f794f1b245fa3644b4f3a9d72b062d93406b37ba5d2078767ef53c2d08107f","bindings/cpp/icu4x/YearStyle.hpp":"8e7144d507d6cd02cd569563a6ec925f426a5335ce903c009b7916d85a729efc","bindings/cpp/icu4x/ZonedDateTime.d.hpp":"11d509bad35472c982ab2653bc62c51abe190b6d164edb21cd020a2248701dab","bindings/cpp/icu4x/ZonedDateTime.hpp":"d58346a4e68cfdeb96cf8ab5e4a03f02886bfe97fa4f49ae93ce86387b30ceda","bindings/cpp/icu4x/ZonedDateTimeFormatter.d.hpp":"42ae6d65aff5654ce9ad41a31b7ae1fc66d1eafa18681e625fa8d72cddba9cfe","bindings/cpp/icu4x/ZonedDateTimeFormatter.hpp":"4d04e6fdfa1b0e1c9ead6b435906c7ab160675bb35adff62eded9d710431feab","bindings/cpp/icu4x/ZonedIsoDateTime.d.hpp":"4f65ad50c3d0f4f1265aa5f9f23f0cfdd5c2dc4ecc9906f3bccf1fdfdec47416","bindings/cpp/icu4x/ZonedIsoDateTime.hpp":"79045b200856f34373fc9eff853b00a3e95360af6447b618378bf69602cdb67f","bindings/demo_gen/AnyCalendarKind.d.ts":"24af227a7530df10ddb0d4eba27cefb7e87cd6806ccf5c04dbdb1ec16fcb9baa","bindings/demo_gen/AnyCalendarKind.mjs":"1e64eae6ed38394ce5f1adcb91ca98f0f359cd77b2ea83d534e161be94b416b2","bindings/demo_gen/CaseMapper.d.ts":"537c909adbf3da4451b5cd3bc05cb6c11f472005cc6a5a1be38d84a06ceb8dcf","bindings/demo_gen/CaseMapper.mjs":"6c9bc0b9343df5b5ba0937c3bc0b9e4a6c66febd0dd19b95208b73bd1997c01f","bindings/demo_gen/ComposingNormalizer.d.ts":"73479c803f68003566e868c3bac28ba75f6124ee083e7aa831c4e6bcc549b1fc","bindings/demo_gen/ComposingNormalizer.mjs":"c5eb13ff72b46056ccf017f352eb3667a700a8d9d6f461baced669d34e44e295","bindings/demo_gen/Date.d.ts":"42ebe6ea708bffcd8ccdc104bf13705e4b97d8d2fde2cac2825fa4e19864e1d1","bindings/demo_gen/Date.mjs":"3ffb986cd44b34a1e41a5b83e4882d1200cdb4c14fd604228e05935da13783e9","bindings/demo_gen/DateFormatter.d.ts":"774765e6ea1b8f1df0d01d6b7ae2047a300c69b6d5ac95e2a7d08c22f27af195","bindings/demo_gen/DateFormatter.mjs":"7ede9f26fc38abb799dfdbfacb4eaea156865a743ce1ad5407f5fadf44f135a3","bindings/demo_gen/DateTimeFormatter.d.ts":"4bc3c59ea6fcc7d2b9f0bde8e8c6988c66d2dcab690e3a47e807c2f1ae8afcf1","bindings/demo_gen/DateTimeFormatter.mjs":"2a1e9ceac84e3f1a25a1a2f8e3b794c82e0f16067645d9ac2c95a1ed11ee6341","bindings/demo_gen/DateTimeFormatterGregorian.d.ts":"54f5f7afecaa569f41714876ab563114e576ac4740ae245efdaa12b916d14561","bindings/demo_gen/DateTimeFormatterGregorian.mjs":"a6360dd501e9b5c38cb963a2d808d6d0b80c284683cfc31174e63c505383630c","bindings/demo_gen/Decimal.d.ts":"1cbffe9e2e32ed220abda9c50eacbaaee4dc2d8652de9461133ad4893e3a9701","bindings/demo_gen/Decimal.mjs":"8424cf0790e88e601afe247f13640b1cc9ffcd006610a024c1bd8a2c273dca82","bindings/demo_gen/DecimalFormatter.d.ts":"f5c529d04a83f9e985d9d28a9cadfe3115ac68c1d8b9a78689df2f17a21b0be6","bindings/demo_gen/DecimalFormatter.mjs":"62b1f88f8bcef543ca3b6540aa651dc0a27127578ca260abfe4094bfb445ce30","bindings/demo_gen/DecomposingNormalizer.d.ts":"9ec46211e19800c4269fdaa650f12240159455043669b0e33bebafd8be19948a","bindings/demo_gen/DecomposingNormalizer.mjs":"83bf095c78986edd4753c28c15ed4eaa52a93122ba68143676cae0889a905c58","bindings/demo_gen/GregorianDateFormatter.d.ts":"f32cb24ec9f7ada75067c038fef24815bd8d63edf96cbbd51c581537f8abe664","bindings/demo_gen/GregorianDateFormatter.mjs":"fee675d74b8918bd5708b6d5aced48d66b72950f21486a01b788908d7df4c040","bindings/demo_gen/GregorianZonedDateTimeFormatter.d.ts":"62001852e9f54c64493d1cd007760598024679596df92a09b14188c1d44ad288","bindings/demo_gen/GregorianZonedDateTimeFormatter.mjs":"eb40d52ca25bf0995b83fcfd4b9544ed66fd586e71a1d89961f7e59a97fc15a9","bindings/demo_gen/ListFormatter.d.ts":"2c4cb2c816d285bdc9eb8844b21693dad9515b446b4cc17b5172d9a0f8479299","bindings/demo_gen/ListFormatter.mjs":"143223eab5db01551875700cd026e5d820cb6fab4a7880d0ca588047031abb7b","bindings/demo_gen/Locale.d.ts":"5c3541bf9d8f1a248d26b0774bd86df314619274e4df68411faf85cd0a469407","bindings/demo_gen/Locale.mjs":"88e42ab39387dd0b9b47cecd180d6c52ece3d5e932c136435fb19f874cb0d89f","bindings/demo_gen/NoCalendarFormatter.d.ts":"1275024e0f98b0cd511648d270037e8244dd969d98f5e67538103e361c11d5a9","bindings/demo_gen/NoCalendarFormatter.mjs":"6d27626fa32b36a8cff8044257f68e9954c9c5232fd3f2d35f4ce68f75753d3c","bindings/demo_gen/TitlecaseMapper.d.ts":"13dc92eab39c47147c8c2e61ac27a5ff8b820bd7339630515257da4e722d296d","bindings/demo_gen/TitlecaseMapper.mjs":"c39327661f78c57736ee233368b0f88065d4c5560b4c12dbff5769f0cbde70f6","bindings/demo_gen/WordSegmenter.mjs":"7c86a07cd81434f0c9a57331e6585830fadcfce360a76f0b5b8a5bb08296c274","bindings/demo_gen/ZonedDateTimeFormatter.d.ts":"8d66bc156a4a7eb605e72efcd9bc1071f9de607fb17e8ce86ac4afae493a0cb6","bindings/demo_gen/ZonedDateTimeFormatter.mjs":"760784b7963ba034a7864fb8e51b3dc0c6143545b3555adb73aa32e08257509b","bindings/demo_gen/index.mjs":"2d7369a2e12628304b6b3b2bf2372ed9912fedd75d66608323dd3484b96df843","bindings/demo_gen/rendering/rendering.mjs":"b719f01566258a474ab7a3adb3f582ebc96b728d8b74917a7b24e45ad6bee6b8","bindings/demo_gen/rendering/runtime.mjs":"d83e6fcea07664206843c38558371343a2e88a90b9a8b96bb45a5d2e00b00777","bindings/demo_gen/rendering/template.html":"9fbe3205d857d8429c0621211bf3060dcb8c5c300c217772debe1cc0b2ca0b19","bindings/js/AnyCalendarKind.d.ts":"cb30eb79a1ab0d1ffb209a3cc1d5fc143ded60bd2b6ead502853e596ce617452","bindings/js/AnyCalendarKind.mjs":"7e97295a02e7057a21148893ed658d30974699bb75d8fd835f2175bdb7dc53d1","bindings/js/Bidi.d.ts":"3b76a8175cb1e18d69f970e9160d8bd88a3e89e6d6c27f427c37db72c2ae02fd","bindings/js/Bidi.mjs":"a22bfe94598fb3454b893d76319d690d5d4c98afa5245dab6b729c72b2486cfc","bindings/js/BidiClass.d.ts":"a949782343f9d8ed9efccd7ec7fcebdfa4338006701c3f4143d904ba04a82245","bindings/js/BidiClass.mjs":"e0048ffa8a27f731ea92a5f8dde934fdab20cccf116d879394c52885726698ea","bindings/js/BidiDirection.d.ts":"205d1795e130435688cecdb19d52f8104654abe00b171e5497d7df3354a08c17","bindings/js/BidiDirection.mjs":"4adaa12879696e2885358818e118cb351d87c3775dac1196d535a82241ffe261","bindings/js/BidiInfo.d.ts":"0781309bcd2ac4522dc1eeae988c27bc62e625bf98f80d12cc212ed2728bbb8a","bindings/js/BidiInfo.mjs":"97acb7b8116c915ac65dec19be58befffa753ad3250be59e344f42fb7450d14a","bindings/js/BidiMirroringGlyph.d.ts":"3156160305cb732a6b4d6147e6a1dd214fe02641f12d699b1492d677f3edbea2","bindings/js/BidiMirroringGlyph.mjs":"3c115f6f8bf1f0ad25d7db423eaa66d1244eff0a736c4807c39157901d20ad8d","bindings/js/BidiPairedBracketType.d.ts":"9116acdabae1f499793309b7f7fdd5fb5f07afb545e0ded40eee05faa95abe00","bindings/js/BidiPairedBracketType.mjs":"b870fcea31b1eaad0d69ea4508dabb141169d6e73d54609e358810bd434f1b0b","bindings/js/BidiParagraph.d.ts":"9fc8b580e8937c0afbbeeaf049c1e2e2eab79595596f7b1a0915f6ee024c1fa0","bindings/js/BidiParagraph.mjs":"a43d73406c8b072836e9067c5a978205ebc8282dde63e07e55b8680eded8b867","bindings/js/Calendar.d.ts":"af3ca6627b267d8bd532bbf25e15e25095056da30d3335770222fdac1686956b","bindings/js/Calendar.mjs":"e6daf3dae4e8913dd8e2d61332a59ddcd5ba2d09ae8b6e472922d58bd24dc7e8","bindings/js/CalendarError.d.ts":"0d50a165e5c459e9ead758ae749792391e822a6cd8086ad43fa572da305c20c6","bindings/js/CalendarError.mjs":"55fee40e5e4fd4f5406051695b16289b5d17111c0318a9332d68980d0ff548c2","bindings/js/CalendarParseError.d.ts":"bbd864e2293c437208135b51f2c17e69156cd655b49e79683978c496e3e3bdf6","bindings/js/CalendarParseError.mjs":"dc94217aec6a37477bfef898492912233185ad1303082f7fa52a186aa0bab540","bindings/js/CanonicalCombiningClass.d.ts":"a401a93da888c22a242fa24e8343c7186102697e6f67df6f61de2416e90d2afb","bindings/js/CanonicalCombiningClass.mjs":"467e81760a02e0c7a253c922e7f28ef0c260c66da857c105543bb376d34e369f","bindings/js/CanonicalCombiningClassMap.d.ts":"2c594e26c77ef964bede701cae0a4b09a008fbcbb36584e6f102954a1ea79b9b","bindings/js/CanonicalCombiningClassMap.mjs":"ac438a061320d8e228cb25a0ee9fc248d43360528a2a5c745ddd9429854d3220","bindings/js/CanonicalComposition.d.ts":"34afe9f3e6f1adbf2a663f8734edb81f461eb7c82fd1ae15fe7266e6507c1981","bindings/js/CanonicalComposition.mjs":"2745f4d1a7e82c121c5cac37477686cda387fb129f6e801c3c703cda8168822a","bindings/js/CanonicalDecomposition.d.ts":"6d8f8344b305b4b8f20587ef25069295a1216153a5a44941d4efce13ae778a4e","bindings/js/CanonicalDecomposition.mjs":"84b170ae405e14fa0bcf6dc9339c94580a7978595619f7790627aaccad89ec32","bindings/js/CaseMapCloser.d.ts":"824899eecaecd9a6827f6ccf1415a586140530efdc6a789946994af25b249c8b","bindings/js/CaseMapCloser.mjs":"916a30e5f9622ef8b34db5b58f9641ac48141d3cb75742343171f9da22bfabc3","bindings/js/CaseMapper.d.ts":"68230d1bc4bdcef4003e64a26ffbccf598d978eae3870ebeb6881b32bfa0bd86","bindings/js/CaseMapper.mjs":"7e53e0ee0d83cc352c29f2394e8c9a1103e7cbc3504ba62cc6f8dbefcecce386","bindings/js/CodePointMapData16.d.ts":"f38d87b223ade4a45a94a9ed2dd6d54703ae4c4e7fabaa6df9f6d804b6ec8003","bindings/js/CodePointMapData16.mjs":"da97e9b2bd8b0fe0b13a631873a4e88706783b36d2c925bef39fbec94ed1681d","bindings/js/CodePointMapData8.d.ts":"bfaee1884641be9d3fc4154cc70739f44ab428b22e91e93368447c6e45892078","bindings/js/CodePointMapData8.mjs":"0ab2f2ec6ff2401d292712f6463d57b5c8a2231cbc5f9b461d720af6ed305322","bindings/js/CodePointRangeIterator.d.ts":"33fe628655e1db883f5434225a10b6f51a7266ccb978f4a7e0a238897bb93b3b","bindings/js/CodePointRangeIterator.mjs":"0753f244bd34e05e5ed749c41642aad00c1821724f70337e335c617d343edbd5","bindings/js/CodePointRangeIteratorResult.d.ts":"ee6b2c180812b8111b4a4a8c0f9477051c37b63f5241e7f4d71a3871838f48ca","bindings/js/CodePointRangeIteratorResult.mjs":"66a403c320388a6a7ea5981cfb354bb15c2891686dfb886eaffe453da970e2d8","bindings/js/CodePointSetBuilder.d.ts":"43875b3524c4b824153df6c3fa279692cb4be8e614882e4b7cc12538d7c94d5b","bindings/js/CodePointSetBuilder.mjs":"20b069365a7a94632cd3d08aace534ee5432263f88f45d5ebd14474721e50225","bindings/js/CodePointSetData.d.ts":"8f60facf863231a0c22ff9903df9854aa981f163385aae829b1a9d43e840422e","bindings/js/CodePointSetData.mjs":"59cdc133c5902e8dd5a9e135e87b6f747cd35a40acb9bbae6e2c6eafbc5e2e8a","bindings/js/Collator.d.ts":"43f8ee940d2bfef14ea43977cc5679ceb20588b1784fcbd72b3eca8a06ff0ba4","bindings/js/Collator.mjs":"fb49aa28278d7174f2e15beaa18c1be5c8a960eadbb7489942d319c5c68aa035","bindings/js/CollatorAlternateHandling.d.ts":"ab78c2362b9c9d0cc680c178a268ae38ece3a3a669e86cf3a4a8f5f4938961df","bindings/js/CollatorAlternateHandling.mjs":"16bdc3418fb09ee2b049943db52587e8789a03f7fe8efc5c844035f1db2211e2","bindings/js/CollatorBackwardSecondLevel.d.ts":"e8625849347843d72047a81a4b7ea8ea888608062e6bef99b96723b0bf0f8cec","bindings/js/CollatorBackwardSecondLevel.mjs":"ff0c5a80d6487b78d46277b931696b8fd03111015509eb0998d1e8e0ebcbd7c7","bindings/js/CollatorCaseFirst.d.ts":"592d55d6e2107341180baec52614dbbb5a921e73c4a15e47e3d43dccf73443c6","bindings/js/CollatorCaseFirst.mjs":"054184e92448a8caf7a7387ff0d588d58157e9dcb60f72ea2f2ace446562d653","bindings/js/CollatorCaseLevel.d.ts":"50e2a73a515f7feabf57b261f035ccf5651541807522629765490ba213459717","bindings/js/CollatorCaseLevel.mjs":"765ca60774b2c1ca1fe7b63d88a75b4280de897851c5a4821bd15042e9779494","bindings/js/CollatorMaxVariable.d.ts":"fc4dfcba1c853187e28e122bfd564a2bdd50226e43c519470074255049a48900","bindings/js/CollatorMaxVariable.mjs":"79041e3a2fbe78e83d94d5b08c6ed32c41a135343e8824b69f5f043afd42c73f","bindings/js/CollatorNumericOrdering.d.ts":"6486316384a0ff4bf77b836c2b0d0c61afe59d3fb89674a4c08f7feae299ab35","bindings/js/CollatorNumericOrdering.mjs":"1d506076f28e11ad5667f7281f9b617eb50bad62ead2de6d1aa516e91508ed70","bindings/js/CollatorOptions.d.ts":"a837507fc9ec455b18c78a1cd5eb1f70c6ee6d2c0c7bced6bf9951be501a1253","bindings/js/CollatorOptions.mjs":"2015414170847673e4717c3b1d860982d21b723eb1751ec5f1d498db4ecd8fc5","bindings/js/CollatorResolvedOptions.d.ts":"ebfb3bb347b12fddf779e5fa0645e1299973ba9ad92aab96d4eb3ba0e32672b8","bindings/js/CollatorResolvedOptions.mjs":"bc964247ac8f9c869218f0a8beede347b60b24c59cb982c32011c3282ae91d25","bindings/js/CollatorStrength.d.ts":"cb5e3f71bbc1b97a20558d4430a8d73c91a585c4d49c9d54ecfaeb9fc07fbd27","bindings/js/CollatorStrength.mjs":"07d30cad729540f48617b3761defcb2a0ba4ce9bb9ba195348b8437e3c5ae0b3","bindings/js/ComposingNormalizer.d.ts":"70fe5410634cb78d15b2fde44a67b1112a2de2d1d0ca347802f4988420d34990","bindings/js/ComposingNormalizer.mjs":"cb129139fdc4aed7ceb17814998d783d936c387596353f9c0c601f9cfce01121","bindings/js/DataError.d.ts":"5024532df87073c3d4784edb83c37573c2139924456b1f6c3f47fe34f7040267","bindings/js/DataError.mjs":"7f90130dbf19bac798de99ac12fbd34d04d52cd0f21dc9cc833c2b008aa15629","bindings/js/DataProvider.d.ts":"97cadfd93d07cbc1dc95160ba4ebb74f4de05fbda6adb9468536a59a0ff6af1c","bindings/js/DataProvider.mjs":"deee39f1c06e661eabbf9d3c341eb17f99e1370c81f08a7058b8048e1a4ced8d","bindings/js/Date.d.ts":"d487ad233c1273815363054ceb4d8a83a66f4d12c42b74fccdc9f937899e850c","bindings/js/Date.mjs":"e425e468a994578d93eb7fa8c5118e139cbb707b80b1974ad7a6de3c25a8f78b","bindings/js/DateFormatter.d.ts":"a8545a713ee5fffc762f3fab2b7d69fa1a73b4cd2a1c7979159a5dbbc90a14c3","bindings/js/DateFormatter.mjs":"ab318a50cf8917236972b0c3ba18e324c68fca0b748e121eea2be6bb9cb27d67","bindings/js/DateTime.d.ts":"0b9d054a12ec409d64bb12fa832b8ec058878205d408b269c3f45b9003d989c9","bindings/js/DateTime.mjs":"981e265744649876526a9bbc6248d6ccb6b2fff878bf5cf6cd5adf127e992b7b","bindings/js/DateTimeAlignment.d.ts":"e0cebb28a861f14ffa645c323ad10aabd8fc761c6a19d31dd2e7f25d10ad1edf","bindings/js/DateTimeAlignment.mjs":"adf628206c0c8ea8e29b4e5ebbb10caeb66244bfd55da021cd2cfbe3f3a37146","bindings/js/DateTimeFormatError.d.ts":"f14cb3d229602da80d051989b50ced239dcd7aa038ffc04fbefcf4588afbf8a7","bindings/js/DateTimeFormatError.mjs":"a285f725645ea3a9d1ca347b90c776a4d16f6f9fb49a65899a85f752fc5a6c2f","bindings/js/DateTimeFormatter.d.ts":"6c18048adfdafb7567855d9d5540dc6829827bce5318d72a8d0f491e80e40b4d","bindings/js/DateTimeFormatter.mjs":"95e381d385455d002e3d7ba180ad7c2adb0dd2111a533aebdb0431cb407dff12","bindings/js/DateTimeFormatterGregorian.d.ts":"a0ef36bae5b33a001d16336b45fe02842b70bd5dd7a2baafb76452f68f2ca478","bindings/js/DateTimeFormatterGregorian.mjs":"d43c5f78ac4f3b81fd96f29eefdcb8bca810615815f04ac366fdd5ad799d5ff9","bindings/js/DateTimeFormatterLoadError.d.ts":"9693ab26a035af74f63d5efaad37b9436cf507b9279147e147941e56c4f8cdbb","bindings/js/DateTimeFormatterLoadError.mjs":"2c6cd1a65d9ced093215e0a7da0edd25d26cd0d7bf37a4a7e74ffd576cbfc382","bindings/js/DateTimeLength.d.ts":"37175c7f56c21ad2f51051cca24231b046cd382604c7f97d9bd04304cc338123","bindings/js/DateTimeLength.mjs":"e2849ea36049b3ffb1929893c85427cd21ffe022f2ab86d6e23f67f40d9ee9cb","bindings/js/DateTimeMismatchedCalendarError.d.ts":"5d2fa41322e9d06517880d5e6ac7647bb01d52e404120c606e294bc898269c9d","bindings/js/DateTimeMismatchedCalendarError.mjs":"140d3b2f15b13e34dce04106464f68c14c47ee4cb66b08852f8d40eeeb867c74","bindings/js/Decimal.d.ts":"a8012d7703815d41a51ce5ff5dcf2ec58daf01f70b3c3839da0b526b0dade290","bindings/js/Decimal.mjs":"f26726cef565bef033c0910a7530d244429399cef38764e78ffe1ad08444edb1","bindings/js/DecimalFormatter.d.ts":"451c1f990a0db607f40173db26bdde6922233671810ff738fb162b4532ff2b1d","bindings/js/DecimalFormatter.mjs":"17cdf8634a7d6509bba0a2b48fc459913286df03a7490b7b92ad5153107d98c4","bindings/js/DecimalGroupingStrategy.d.ts":"f7b369cd361674a6d13bf5af240d6a484158e05f14bcf14817c02dd6da6d7b9e","bindings/js/DecimalGroupingStrategy.mjs":"1eff0462ac7ef0765226385e7f72bd5d3afc466599ace1cc5404268a48d99fa3","bindings/js/Decomposed.d.ts":"73fc400b8a53d64703d9802f3dad7be417eddca336fd201ea4c47489255e8f4b","bindings/js/Decomposed.mjs":"f8108932aee01aa94d9d180c6afd3a02d479101b39c278975ed586b70fb6e77e","bindings/js/DecomposingNormalizer.d.ts":"deed5f2356724025e9753a70fdbcbdb28545624fae212e1b318084aadfadcd59","bindings/js/DecomposingNormalizer.mjs":"63521dda5018f24b77b6d924cb14b47c5b2d75a54747a32d56c4c223c1bef02e","bindings/js/DisplayNamesFallback.d.ts":"1380001c785771bba53f515881d136d860ac4f62ece92667e797e90facaba8da","bindings/js/DisplayNamesFallback.mjs":"d43ac28ac4df5693f5425e9ad54f1852933d95072d2f71c4f896a61f3559e2f8","bindings/js/DisplayNamesOptions.d.ts":"9a73203ba93f8f896edbd5d8d873af0f874bed6bb03f792bf185c76b0de28665","bindings/js/DisplayNamesOptions.mjs":"f9ba688f51a3b6b1611246c7d03ecad9afc70082d8cb0d4ae4a949c3e1ab7c89","bindings/js/DisplayNamesStyle.d.ts":"98c0557ed884e07ef59713cd729a276a0ded9b9dc20662324303ce945fe54236","bindings/js/DisplayNamesStyle.mjs":"d672f52b24634ae1de1bd0482ec7c25a559ddfb3e5e5ef7f5a5023f2d1d45bc4","bindings/js/EastAsianWidth.d.ts":"2dfdd8f29840fdc9a8aaea490e5577ee787b845e253c925fb5e9d2ee9bb05696","bindings/js/EastAsianWidth.mjs":"16b777d0a625b7ce46bee317bfc4a5bf26431962bd671c6a3c0eeec4660a732e","bindings/js/EmojiSetData.d.ts":"e72540b4c18795278259d22fbc00edd5856b26ed59002925b86d6adac322a767","bindings/js/EmojiSetData.mjs":"93ad7994f3f69ffac93a0d718d32213474c71fe71fc4841ed99ebca3234b935b","bindings/js/ExemplarCharacters.d.ts":"5e4d393eaa0a38c1d1f975a252e553efea594a013a6de9588fa860b55662b9d9","bindings/js/ExemplarCharacters.mjs":"d9e6d8b7696208ba33c187d5348c94c0985996aa892837f15a29ce3251aa3641","bindings/js/FixedDecimalLimitError.d.ts":"cefc353294e8cb7e479fe6176991af133b2d2fe52d36292d9bf8eb888a133e7a","bindings/js/FixedDecimalLimitError.mjs":"3901edb8bdd6f17bfa0a170158604490199b3b381d5018841627fd0d74d09c11","bindings/js/FixedDecimalParseError.d.ts":"bf89dee9e1d618e5730cc5e5f7c11de328c712470ea8504fadb589435db17b52","bindings/js/FixedDecimalParseError.mjs":"c0d70b7f4baa087efb28075b309e6cea2e50aeb91a6f24de9ee423fce905fa43","bindings/js/FixedDecimalRoundingIncrement.d.ts":"d20d642e3ca87887275dabb0eb3a4a9852605dafb6db69e39a9c1a80b3c70a97","bindings/js/FixedDecimalRoundingIncrement.mjs":"7d1ccc59b259848b590351bed84f34e19cee2c4be8f1f32cedd6bcf99be9094d","bindings/js/FixedDecimalSign.d.ts":"8f0fc371839b864dcf788a17c919f76c750e63eca10302b456368acd17d96a64","bindings/js/FixedDecimalSign.mjs":"b51d34d52fdb0da597f3a90d3e4bd55444c21a9479bec03965a738ffafe97951","bindings/js/FixedDecimalSignDisplay.d.ts":"1e786a1c8a36e1da3f2a3691fc113a63b372dc18990f07d6be9935208c74ffc5","bindings/js/FixedDecimalSignDisplay.mjs":"d0e1dc7eba034e9243906eb1ccdc0e68f008aff87d4bb13c9327ac6ba3737a29","bindings/js/FixedDecimalSignedRoundingMode.d.ts":"37f070140d20bec86ab4f62200b9120e8a9a8c217a564707425bc7aba65b2b82","bindings/js/FixedDecimalSignedRoundingMode.mjs":"f99da07189f1999290bdd3c10c557f593907fe53f44bfe63c371ce598d8a0afb","bindings/js/GeneralCategory.d.ts":"0d40cc67188496be4fd6023e526e41e9345c2b3e097c683e38af5a6d2ee7c77b","bindings/js/GeneralCategory.mjs":"4ac0aa324ea8ab062d334fed78628ecce699043cefadd4b9a61f92b194da6045","bindings/js/GeneralCategoryGroup.d.ts":"40fd3b6874c33fca3f4cf9e9ae7f2c8497b7cd758e79a8c2ac7a82a2c947c0c6","bindings/js/GeneralCategoryGroup.mjs":"53bda98ff0bdfcf3f8f002ddd25cebdbb857a0a4df683bc96cb5f71d276856c9","bindings/js/GeneralCategoryNameToGroupMapper.d.ts":"75be15a2d123550917a599ae9e565b66f610bde29fdbee12ace861541fa46f4e","bindings/js/GeneralCategoryNameToGroupMapper.mjs":"1565db164be015d8d42d7b20734e477632be10a920233b1c95ddbb9bb4bdda4c","bindings/js/GraphemeClusterBreak.d.ts":"828f08153f0d2de82962d12d288480e54383b1b88eb520705948466ec6c905eb","bindings/js/GraphemeClusterBreak.mjs":"f3df3a96e87b60a8d3accce3a44aff24558573ed6639221339728fb4e9d87e62","bindings/js/GraphemeClusterBreakIteratorLatin1.d.ts":"cbdb84dcfb31c54e7768259f25e7fc6770e3412b51cfce81a17ec2f04f52cdfe","bindings/js/GraphemeClusterBreakIteratorLatin1.mjs":"991f5f96ba4cced4ebcc30b3e4e15593dc8b99197aff59fd09595d230f627ddb","bindings/js/GraphemeClusterBreakIteratorUtf16.d.ts":"82ff06634f0ea07c32444b813b8ca14e3c3d61d7a5dc3eb63079e948051f4037","bindings/js/GraphemeClusterBreakIteratorUtf16.mjs":"eeabc65267ec03b8e91d0980c499d02660215c431e8b0b803ed1a606cc2a3b4c","bindings/js/GraphemeClusterBreakIteratorUtf8.d.ts":"b2f4d166bf03749d578623eb20b3a29e9ceca60f2ebba180124ab317a38d8b72","bindings/js/GraphemeClusterBreakIteratorUtf8.mjs":"18500dc7676755ff905b345f7417853851ae0b73caeac2eb22c6a10fbb60200d","bindings/js/GraphemeClusterSegmenter.d.ts":"d7344f6d0bc11ad150cefbe61cd699d9bb9539e3fdc22353f934dd63deaf5f38","bindings/js/GraphemeClusterSegmenter.mjs":"af8d9a2988d5ef66ca99140834b79231e2511accd3314c4f6de3c16b0b850348","bindings/js/GregorianDateFormatter.d.ts":"ae353899730a649ff5796eb740b7133ff29db0ecf06a74a67bfb50edcbd94f51","bindings/js/GregorianDateFormatter.mjs":"e1571b9066b0e191c4c4bc1de78c450e81192b986af08105e76088538b7e0886","bindings/js/GregorianZonedDateTimeFormatter.d.ts":"7f6c991da331041c9b68430ae59774a94c266082ba4a009e4b1658618ebd8ada","bindings/js/GregorianZonedDateTimeFormatter.mjs":"ffbfe7316bcdb3ad0e074e23018127f51f4de6048fd48968449197cd04f805f9","bindings/js/HangulSyllableType.d.ts":"4b9878cc7d8d4ce609171691caf300b03b094227d79a53db2db9d30e286c4775","bindings/js/HangulSyllableType.mjs":"40131302fe4c73c4faf3fd07d9022d822cb90c3f33cbeea115ebf1e9775610c7","bindings/js/IanaParser.d.ts":"1d646d92ff9c714356cf28261bdc9ade36cbcf9a42a28a97f9b6d8174df73bac","bindings/js/IanaParser.mjs":"d91b0ce0555ecac89fd46c05b6ae77e95b7b4755b01837cb02a04450db3bdddd","bindings/js/IanaParserExtended.d.ts":"6c4249c5e4c5baeb326aa6016fd19f7ddf5cff475ffdf94b6dca7123537bf8e0","bindings/js/IanaParserExtended.mjs":"5f68bca36a05057daa958bd3b960dadda475af4569a43cabc02d4e7cb090693d","bindings/js/IndicSyllabicCategory.d.ts":"cb508ab7768410d99fb913272a5827a8175b1f479fec2fbb5294b62bf7245bdd","bindings/js/IndicSyllabicCategory.mjs":"7e25bde0f81ec947dbb1abc40d2ad12f960814da7d19c31e6ecf4a88a34b74f7","bindings/js/IsoDate.d.ts":"fdc714f61fa3ac3a098aa2903d7ca1f102128f3c504a6a220f464189e4c1d822","bindings/js/IsoDate.mjs":"05108537f960a675860365ee7149541f79faca200ae5057c1d0d94ffdd2b0883","bindings/js/IsoDateTime.d.ts":"148604e94bcdf6e9f670df255f5d33d19e93154fe1a41900564817c714c58269","bindings/js/IsoDateTime.mjs":"dc903dd42fb3cf1fd87eba7c9aa386c344ffed6be7f45aac8b9f49db8167e82b","bindings/js/JoiningType.d.ts":"dd3da96cd8d364a001c86f2cff189255bed6217a6dfa3edb703dbb3da34f2ca5","bindings/js/JoiningType.mjs":"80cca8a4f71399583d25b2c92726d82a09f9c3e251d41e6432fa3c7cb9ef3594","bindings/js/LanguageDisplay.d.ts":"f8e58cb6a4f1def577273bb0a9534e11b79f2b711e002c80ce1385288a951b45","bindings/js/LanguageDisplay.mjs":"d31637811d466a45fc39c4d3baa7a901240b7ddbb491050d535543544661fe91","bindings/js/LeadingAdjustment.d.ts":"5bbe5cd7885bbe486702c8db4d64c117622895e816d3d2594cf9ead82faf4a62","bindings/js/LeadingAdjustment.mjs":"cec06847c13afeb530b11c2a94d16ad864585278d51125e010ebd886a1a48748","bindings/js/LineBreak.d.ts":"c793390e6c1043d80742aeba67b1d396bbe685b926d47e96644b2dd3bc85d33b","bindings/js/LineBreak.mjs":"f08d57bf3e13c7c98263ada34623a12395b3c7c2361a9d32edd202b25c62eda1","bindings/js/LineBreakIteratorLatin1.d.ts":"735abaf522eee94b1b7f29b664468e76e44b1493eb8e9ffa653d2965cec3e1d2","bindings/js/LineBreakIteratorLatin1.mjs":"19e7d0529c6ef92f0873802a7ba231ba2aadb673a430e6dda6882fbe8373d333","bindings/js/LineBreakIteratorUtf16.d.ts":"32b35ccedff17d0c8c0bc3672212e01b4ee21bd52b6f9510259faa9ff4445f12","bindings/js/LineBreakIteratorUtf16.mjs":"b28279c6d8830564705de5486112a8cdf0b44d59df683f7661c72dcfa9129618","bindings/js/LineBreakIteratorUtf8.d.ts":"3d542d8c663e14518c9d2573861d3383a013514dd19152c13732c8d3f85141ac","bindings/js/LineBreakIteratorUtf8.mjs":"d89e22abb4424dc11d1796d2a2cc63d35cb504e1b8e78274fd835710f538e62d","bindings/js/LineBreakOptions.d.ts":"fe418a67ae56d84fa912365dfc98d7cbdb2a804ed33b5c134051de3d756a1382","bindings/js/LineBreakOptions.mjs":"79bd1b5d54f00c79112ac54fdffbf5c270a90d8d107f7c0dfff47e2189ce57d5","bindings/js/LineBreakStrictness.d.ts":"bdfbc9d65f3507383c75bc86b9b329486a3e8873b107698bf902c1d6d950f461","bindings/js/LineBreakStrictness.mjs":"65cbcc7eb70291a1e206e4dbe91eebe9efac265863df354b2079bcdf7f0bd42c","bindings/js/LineBreakWordOption.d.ts":"2c33e2cc6f945f07a3bd14cdeebad9c7e6e36c8a2b1f1a86f9b5a26d75e7da82","bindings/js/LineBreakWordOption.mjs":"ef1dc54cba1838f4ac493413c516fc42c79c43fef89a9e5a7cefeedd3d3ce411","bindings/js/LineSegmenter.d.ts":"d63e166882f3c9ec6818c318a4a36bf20071acf7afff270e3047643ea9d84ea6","bindings/js/LineSegmenter.mjs":"5be931fe55f91c2653b4ef06a520d99572ea428af906c7108a56945b47083476","bindings/js/ListFormatter.d.ts":"c3011b09cabe838b7af949c7196fe3f9fc6e2986a2f9c8cb998857f1fe93913e","bindings/js/ListFormatter.mjs":"4569c5b29c0a3e1bd8140e165ebfe90f5a081f02716a6697479187fe8020f0be","bindings/js/ListLength.d.ts":"3423b19531b8a9906fb3989e367e4f6af68a1107c7a5e6d1cdbbdc4fc25632c1","bindings/js/ListLength.mjs":"5a1628d73f0d94650d5927b23fa15a2fefaf22d0d4c1afb2a9d8f4ef1cf46f4e","bindings/js/Locale.d.ts":"20e441146201aebacec7f44440df9a5b27abd8a94e21f0e441c8944080ff8bb9","bindings/js/Locale.mjs":"408c22a414feac938392116587fe4dbd5348fe947e4f18f9ec9cec9a392140de","bindings/js/LocaleCanonicalizer.d.ts":"71315fd9efcaaa04a551125b76e4a610700cac79efe3338de67d4dac6272fbbb","bindings/js/LocaleCanonicalizer.mjs":"a58910b0eedf0c829c996428e5aeacdaab2783799b8342d70c6f73994bf721fe","bindings/js/LocaleDirection.d.ts":"5dba05f6c1d002e69a5572aac98439ff94f6e60d1e7547e0ab2c77bc9d40da2e","bindings/js/LocaleDirection.mjs":"ecb917a5b1ffb9e568dadcadaf6bef997c2b75b4380e73c65d18544f19aff505","bindings/js/LocaleDirectionality.d.ts":"fcf8717abd7cbd9f4297c6a5a6dabd4436d45ce154784320dddf3976a45047b6","bindings/js/LocaleDirectionality.mjs":"ff7c6426c62675eacc1bafa3813cb4ef74d8e24009416892a85febd74cae4e88","bindings/js/LocaleDisplayNamesFormatter.d.ts":"ca4e5192c71faf9483723f2a5684e6f036ac6b5d26bd1c79eb53b0a1267384ca","bindings/js/LocaleDisplayNamesFormatter.mjs":"499ab1a2de638c0ec455b4bca7636e357198b6d12f1ab22bad9e4185e49cee5a","bindings/js/LocaleExpander.d.ts":"7bd397b1441622a469e3701876bc0ded6d63e9ede728efe762105704e9f17760","bindings/js/LocaleExpander.mjs":"f2c707b1bc581490ae4823b2e34bbfd2e8bcd865e71a0e8205378e517e1c4ba0","bindings/js/LocaleFallbackConfig.d.ts":"437e6151f967e9d90fda07a361c9cce907069c7b7a157d05ece9184c45901be8","bindings/js/LocaleFallbackConfig.mjs":"e6621ec4f9b87b284e9cfbfee4bd23ef583c0fe1fb7665f8b2c330b79292f0a1","bindings/js/LocaleFallbackIterator.d.ts":"317f462c9d0166b1fc6f184247f2c3aae135ae1422e60685ce0d897c0ba00300","bindings/js/LocaleFallbackIterator.mjs":"74cab78e9980debb0936ee8367a5b3480730b5641ec987aa3cd32d8ac867d8cc","bindings/js/LocaleFallbackPriority.d.ts":"0a5c7d07f9fe3a415394e36aac9a97e74dfb62007f649489425d598baad711a2","bindings/js/LocaleFallbackPriority.mjs":"694365106c9a5cdebfc52cf1e0ea3807b8de7bc2628778125db472f2a2fea65c","bindings/js/LocaleFallbacker.d.ts":"f660a129af891639cd0adc0343e2c8d5c77146ab2bcd5dc26782d9b14fa52955","bindings/js/LocaleFallbacker.mjs":"0c602de4241d5fdf953e1de6d2c241c7dfdd87ebc13f28972d72fab3f48529ef","bindings/js/LocaleFallbackerWithConfig.d.ts":"4f7eef3781a11b0a258e068322b935d4a867a723cdd0fa379f0c0414f6bed024","bindings/js/LocaleFallbackerWithConfig.mjs":"eb87e6184e302198d1bd78a82652e234cc4c99b5e2d2c55b32e5dfafa2749447","bindings/js/LocaleParseError.d.ts":"f047d9288cf7c5bc8eba6ba410f57c79a3a3dff84300e0cf357251566ec4fb9b","bindings/js/LocaleParseError.mjs":"3a67129811f34caa8fea29646571a64437ceb4784fff9d4f6dd7ab0f329eee4b","bindings/js/Logger.d.ts":"daabac769c0cf192bf6d504e7c968375ace0462740c63ab6d0dd1261a34aae4a","bindings/js/Logger.mjs":"e92544e1f3f00c919895cc8d0dafe15237c2e17933cae11ee157c8e42f8112e5","bindings/js/MeasureUnit.d.ts":"b09de5c47af2b49304012c05eedbaa9b74deec89b9eb308aa7d77ef2fc1fcf2f","bindings/js/MeasureUnit.mjs":"5b7e077a25315b1a567984e768ea5733f59317db080778648ea132a9fb6ba0c4","bindings/js/MeasureUnitParser.d.ts":"af6397fecb0cbac576d46fb1f951b2b09c38d51550ad19baf931685395465437","bindings/js/MeasureUnitParser.mjs":"6dbf6c6a5e7639d8c8f71164eb6cb733eb609050c90a3d607f4c207f07cd711a","bindings/js/NoCalendarFormatter.d.ts":"e8cd7cdf72697fb4a37639abf24b774bb3cc219015699034bfc19b848a37e5a8","bindings/js/NoCalendarFormatter.mjs":"595e93414b916aa000036d2e693a9304b93968ab523efc648a964cfb0b45226b","bindings/js/PluralCategories.d.ts":"4d6f45c41521901714e54519d6888279aa813120817033674c3a35bf71850bfb","bindings/js/PluralCategories.mjs":"8765c895afb984961f1658a4321a002935e5cf1ea892e1c004e89e3d794e359c","bindings/js/PluralCategory.d.ts":"78f1d503dff1d85af17fe107559c9632890c3a43e5e4d7afd05f52166b235d6d","bindings/js/PluralCategory.mjs":"8c84d94ae4eac9fb650f7ecee72c7ea40d4b34af0a893d57c44b264105515817","bindings/js/PluralOperands.d.ts":"eb7b87500437dad8b19a735b8bfd1f9983597bd3a5a2ad591e505dc4b182d8e1","bindings/js/PluralOperands.mjs":"791d0fe206fce5f64b38401f14802b6302f3a379f56a8cf5435741f94407cc1e","bindings/js/PluralRules.d.ts":"46947356d326312d84a7db21047f1c10ad21c7664a21a55f99b30494536efbe8","bindings/js/PluralRules.mjs":"684a3d0106bcda780677fab4ddde7dd4c6b7bddb58f56567f5283cb155985614","bindings/js/PropertyValueNameToEnumMapper.d.ts":"5a269b56c49884ab3e3cbc33923f00c1eb3e79089164737e062fec67d747c88c","bindings/js/PropertyValueNameToEnumMapper.mjs":"54bae17dc2f24fd7558be3691cf3f5d1aebdb52fbfabe4a80d16a8e3531c9063","bindings/js/RegionDisplayNames.d.ts":"0e4825a22549db3ed489eb834f0cf7cd8c95836205a3721e9a268940062abcb6","bindings/js/RegionDisplayNames.mjs":"c9f36077f225ed5dfd485a20abd6ffc93d8b9ac7f9afa099e7ba37c288e1c48d","bindings/js/ReorderedIndexMap.d.ts":"e81bee47302cf6fdb273d3de6beba0855d438ac422e0982a7fc076779b261c5a","bindings/js/ReorderedIndexMap.mjs":"494cbbe0491e44a3ac92eabcfcc2ddf9e002423d987e9a53d6288e8222dac620","bindings/js/Script.d.ts":"311bc8c0aaf48c710d8a9e6831f7ea90ddd6f375d9fb0966b85226b5eaddb5cd","bindings/js/Script.mjs":"77444f3bdd4725726a1c9874709951f9bf9b882883413723bc6a011fa2742533","bindings/js/ScriptExtensionsSet.d.ts":"bc321ce28716dd57fcfa133d635a7e916e5eb2f14bbb982659707aa9241684bb","bindings/js/ScriptExtensionsSet.mjs":"a9aba16d6e807a82fdd5880e0ea1db71176241cf6fd8e6a314b9dae706a0c4d2","bindings/js/ScriptWithExtensions.d.ts":"97bdcb8318a315f323e2723763e5bd1b154cb489d114370db1c74b5c696c6aeb","bindings/js/ScriptWithExtensions.mjs":"110ba966e4cebfeeaa2f148cefa4cd41e9e48d3a5759f4b3dba9476735fd0e3b","bindings/js/ScriptWithExtensionsBorrowed.d.ts":"b966575185b3d82279bfc0fe5025e9ad618f24c9f21a8fbf17ddf5c659d151be","bindings/js/ScriptWithExtensionsBorrowed.mjs":"3d05de27e45f9a7a048746d93b83dd07ce06e89bde40551560f30c3dd9fb50e2","bindings/js/SegmenterWordType.d.ts":"d1e62e4a4ffe6ef550108f188c3f14569a108c746e0052bc976f42eaaaaebdad","bindings/js/SegmenterWordType.mjs":"0ddfc7291acd52c540a9af3497beb8b2bf80ab5add055e9e59b712450ee39c6b","bindings/js/SentenceBreak.d.ts":"3daf08230007beae2ce98bc11a83b92e27ecaf98286f645019e3188edb53fc74","bindings/js/SentenceBreak.mjs":"1454b25cb7999d46b81406ec7b08e620062ac9d7674a8e0fa796953d67520a1d","bindings/js/SentenceBreakIteratorLatin1.d.ts":"2d9db0bbf675f5ed2727b59cc4e0b13011162b0fcffd6896c7b77fdc839d3200","bindings/js/SentenceBreakIteratorLatin1.mjs":"79a11bb595e331c9561b2125fe3eba6645470ff3097a2749ab7b261321f586df","bindings/js/SentenceBreakIteratorUtf16.d.ts":"3c3aac44819b6f29876aef2bdf8d19571979193442da591e2f29d3a9b04581a4","bindings/js/SentenceBreakIteratorUtf16.mjs":"507e786ce560b52b8d817b6ae6695f98eb5d19157b894710634d1e4c1af2f9e6","bindings/js/SentenceBreakIteratorUtf8.d.ts":"6d17e320324ac7a2a1b648d14d1d828866d21b78071c9513c4678a6d800ebcfc","bindings/js/SentenceBreakIteratorUtf8.mjs":"cad1ffcb0c05b27d0406eaaec33adc9f33e566ecdf2024c69fed34b96f751b5b","bindings/js/SentenceSegmenter.d.ts":"fcd0d86bf01f7b48e186872a3a278283bb4967ebc1062ab3736e637f79eadf1e","bindings/js/SentenceSegmenter.mjs":"839f5d92a9058fc286c9dde465122121dc4de0671286ca396aed840786c0956f","bindings/js/Time.d.ts":"f0657006e69e55b35777eef0aee0d30d61ead0085484689aa4a921ddd4566f35","bindings/js/Time.mjs":"c3a49ffeec544f1b2366a07451f0c5da6258bfb0b6ce4e64e381e871e3451a72","bindings/js/TimePrecision.d.ts":"8a4705bb3fb8160c0c8447b182cae99cf09ecabcf894ade322ad821487a5bc93","bindings/js/TimePrecision.mjs":"c65f8dd9ea65b76475ed46205a2965f8e7fb133306ea0a7420d660557ba6cdcd","bindings/js/TimeZone.d.ts":"dac2ea5a0506afb6490ba03027fd25505d3fde74c94befd5ef287716202fcdeb","bindings/js/TimeZone.mjs":"4f6180978d9a02e3dd8f976d1b4ca155acd36198e206e78aca7c9fd4952974e8","bindings/js/TimeZoneAndCanonical.d.ts":"9f0bb8615f9c26cb024287af5d4faa50ee726df5e7ce3365fd5213a9c545254e","bindings/js/TimeZoneAndCanonical.mjs":"d047b32043ef0f79b774b1f222896f55b7781ee21cdda644c8e855d88f779c4e","bindings/js/TimeZoneAndCanonicalAndNormalized.d.ts":"36ecbc741b0a23ef5adbdebc1e8fe37db8902c364e9b5496a79d3e08b7a81719","bindings/js/TimeZoneAndCanonicalAndNormalized.mjs":"8a2450f9e671e6bd90e292719eabc569f5fcfe731a8199722cb9b1fab7c21483","bindings/js/TimeZoneAndCanonicalAndNormalizedIterator.d.ts":"f56d8f89395a79f284fae64b450991c223351c749873505fd7dfa497ae9f6030","bindings/js/TimeZoneAndCanonicalAndNormalizedIterator.mjs":"2680e863ac649592c061ab59f438ad7785a87768feb39645a4998ef7ab813a14","bindings/js/TimeZoneAndCanonicalIterator.d.ts":"1548d7136df6fafcd85bf19317bd506dada9c96e9792fe5ffc15ddf41f1f281a","bindings/js/TimeZoneAndCanonicalIterator.mjs":"38ede59aaeea4caefa9fe3a3f4b514bd67fb3dace23299178188d67308729b5d","bindings/js/TimeZoneInfo.d.ts":"6065e185a90f7e4e030130bfaa34e860027c7fc66bbb9b0de5d79a64348eb68a","bindings/js/TimeZoneInfo.mjs":"152d5c328673cd73e73612a8e1d332c91dee062e6336de4caa2787f32116b5b9","bindings/js/TimeZoneInvalidOffsetError.d.ts":"bbceaa68b1641feae9b85c2669f1e93d4389027daaa7054fd38e83dbc723c2b0","bindings/js/TimeZoneInvalidOffsetError.mjs":"25937dfae8fd56ec6a53ab757f49a57115733876a8453bb04d1e5691a22e3779","bindings/js/TimeZoneIterator.d.ts":"b187a389ce1ae5fc9acd4d8589aee4904ced657c941ab49e9ef54bbadb8d0d98","bindings/js/TimeZoneIterator.mjs":"05661dd88f26ff7b60a5547053e904068a7c98c35f173dea9d844bd4cb4e84a7","bindings/js/TimeZoneVariant.d.ts":"15e2c916e0b8a983d0d4ea56ac9403fed84267d588199b6b4ca9e5258fa51cb7","bindings/js/TimeZoneVariant.mjs":"08303814f6207c4839213ac11f289843b53ad8d6f7e0d3755c5cd585fc22eed2","bindings/js/TitlecaseMapper.d.ts":"371bedf285ffd5fe2862d8cbc8e037a8f0534a5a46a55865c98b2c987f5fb2d1","bindings/js/TitlecaseMapper.mjs":"92363ee92406235a434be2339d9e6aa53bf314357a72c8a6d476fbcb78e8237c","bindings/js/TitlecaseOptions.d.ts":"ac5911275bc34f446115a2f2544c4fd17660ac4060bd79de00946d17fd943920","bindings/js/TitlecaseOptions.mjs":"878055c7b63ce52a6b026438d7e51e09001ba802e4923122b7af6c05c4c8aebf","bindings/js/TrailingCase.d.ts":"f7c4bdfc7087391086f2e94ba84a4730a7542cb48657934f3a92f9d6f419d3a8","bindings/js/TrailingCase.mjs":"278881c853440fd67bb0f8b7fa655f0879bfbd53a1bfa391ea0b005f8450561e","bindings/js/TransformResult.d.ts":"fafd4b8585bcae4336cd6683647a20eb622a4dc1a06470da894ef6db1b44a4ef","bindings/js/TransformResult.mjs":"155f2874175b6cdf73470cbf97ce107d46dd496d1996d340437a394756bea74f","bindings/js/UnitsConverter.d.ts":"d4823894dbfd10205df399acae58383402b6db2506549b1947acc7e44f0b9ff7","bindings/js/UnitsConverter.mjs":"c97c6b88470c274fd3047038e70d4836d16931ae726b8b5156c05e1240660314","bindings/js/UnitsConverterFactory.d.ts":"6229d24a164167bcf2731d3ad3bd257996e299819842a8f42bdd9149cdbd4d4d","bindings/js/UnitsConverterFactory.mjs":"92163eacbd6d10b9e99e9f71599164a404679e6c2672222957fbb77104d5ba87","bindings/js/UtcOffset.d.ts":"93cfd26e6fd12a737be6e4c92ccc09ae25e7a016e8774aff6837a381eea44af4","bindings/js/UtcOffset.mjs":"f13ebc176ec74e3a0c2036adf561f85207578e62c8fa96e173f2aa7d72c9b18b","bindings/js/UtcOffsetCalculator.d.ts":"725fbb783d429f9747d3aad670eea41d680306e6d745ad2adab03eb1fedded6c","bindings/js/UtcOffsetCalculator.mjs":"aa9b1bef8c9677a0be139ff4cd99957e4c9f8fa8f4a5bd5d7e02e192247e9dd2","bindings/js/UtcOffsets.d.ts":"a7b4e1e4e5c0fa1a2d8d9286accf9b186a2af1f8468d4fa3eda18f0427a9b400","bindings/js/UtcOffsets.mjs":"af947bd6d1866b4a6b6dd75c57a26cc6f0c538d15a51bdafcbf72f5f77cccfa9","bindings/js/WeekCalculator.d.ts":"bb61f8b009754540c7b25a7201247c6ca38e1a74e562ffd57d823f9923289b68","bindings/js/WeekCalculator.mjs":"6cdd10bb7569505063d88798b87b433223606d07b9879d7580f6738c8667755d","bindings/js/WeekOf.d.ts":"10bb0566105381395a8fbd0d134de388689ba518e388e167d0a8b6f66ccf4df4","bindings/js/WeekOf.mjs":"9f85173e3eafcfd97b696d1c1ee596eaadfe21bf4444513c589602692115be5a","bindings/js/WeekRelativeUnit.d.ts":"c2d418576e8b885b802222eb56347900ecb9b3a21287fee7ef053bd750eb2ef5","bindings/js/WeekRelativeUnit.mjs":"2e70aa5777bd071df2d041517b45969f70870003c01a790fdaf96fdb593d4398","bindings/js/Weekday.d.ts":"6366ce7c98c394f567b11ce6e47be96ecf2da96caf97976360f45be6830dd376","bindings/js/Weekday.mjs":"57132bb8bf42314a5e112623ee0c40f096d91fbe45f3d73106ca86b25195adcc","bindings/js/WeekendContainsDay.d.ts":"2007292ec482152748106e12a2a694e44e5b46c7960ec029b5c0344fac462b13","bindings/js/WeekendContainsDay.mjs":"e4e3858f7824cace982ff45d2fec4f10c4e323ab8492c95d066169eb41277070","bindings/js/WindowsParser.d.ts":"f39af1f924db210b5b1247a3e247b6faf90e0b6d470f979992f6c95a6e005a32","bindings/js/WindowsParser.mjs":"e5959577a702df4f41a1f8eb1db4c268108e9dbf01e373b93964f4fd18f76df9","bindings/js/WordBreak.d.ts":"f425f7b4a67ede1c52432342471898cb8950c1f2d2e354b2dbc702a28b99cfb1","bindings/js/WordBreak.mjs":"9925d7288a8c0707148df4623788786dd0a41d519e87d4b6c447b3fc2a3fea64","bindings/js/WordBreakIteratorLatin1.d.ts":"5190edd290a1a395f756939d76ca85b41c2eed56b6e3261a59eac68a620b2cc6","bindings/js/WordBreakIteratorLatin1.mjs":"3d7f61b3b59ed0db429bf30e5647d43f36e05cbc631d89cb2e8e8ece91f6363f","bindings/js/WordBreakIteratorUtf16.d.ts":"2e9af96d59a605baf701853cc985dad734913eb5ddd1919a4ddb5117d460206c","bindings/js/WordBreakIteratorUtf16.mjs":"f6880afda0b2101ea691a71b55e9f580429531b61bcce048b712df72f55f1a2b","bindings/js/WordBreakIteratorUtf8.d.ts":"6f558f16dce5d13c700e0e29fe951c584627a0a99a96fe1e09062bd84e4c7f2e","bindings/js/WordBreakIteratorUtf8.mjs":"7dac226681d852feb23b8b7ec5dce2c2fc5cf1a3560c54cf93cf12124d549db6","bindings/js/WordSegmenter.d.ts":"fe05974d2c723e2946be5b809bda32fbd40a6ed7de83bb9fc2596ba5b083ce2f","bindings/js/WordSegmenter.mjs":"c4d6d3180a28d9590b807ef1d6984d3333308eec8fec5999f48143c37783fa7c","bindings/js/YearStyle.d.ts":"1d6e5e82bac5aaf8533f1316d3e2355eeeccddd7a6563fb72611deb5a286ca2d","bindings/js/YearStyle.mjs":"9d0568824e73ad1ab1048b540bda864cc1b629c691a46f62943b55083b9520fa","bindings/js/ZonedDateTime.d.ts":"5371ef2996a33cb08937417cc3209a04b67fbea08c2a8737cf6309d140103d23","bindings/js/ZonedDateTime.mjs":"2dd5a907b7d973dfd2780e5ae2cdf6b2d021364dbc4b4151145e297fd5981713","bindings/js/ZonedDateTimeFormatter.d.ts":"5feedd9459330b5e3d5f8338b35dcbcae4142c3543aebf7df92551ea7253c51e","bindings/js/ZonedDateTimeFormatter.mjs":"f980698a1cf6ea7522790b463a3c10cc701946513e6ad4dc84db6d3a0251e85a","bindings/js/ZonedIsoDateTime.d.ts":"dc587b0e1b76ee38144687b474e32bc6637e37883143e98dafd546622cbeec18","bindings/js/ZonedIsoDateTime.mjs":"115df327b835dd6c746f35ebab9942d9d233056b9d5c22152312acc222937b51","bindings/js/diplomat-runtime.d.ts":"1fe1807ca59455bc465dac763eb4d5987ae02c1b8a81d18fb40b51c49c24db81","bindings/js/diplomat-runtime.mjs":"6195a723fcde76b8450fddfb475cc8f60056ae8c083b05ab1da7477c978db6bd","bindings/js/diplomat-wasm.mjs":"9cd4c0177c37694f1944aee0f89e4f818fe79deba76f081807162e7f6ce8b57d","bindings/js/index.d.ts":"78e8f087b34f779766cfbd720d2d29d6cd6065d239fe2a1a0d7a779069964956","bindings/js/index.mjs":"56132630c5684c3282af520f74a9d821429520a091332cbe5a3705d9a4f307f4","cargo_embargo.json":"cb7245fd6486ee6d0d1bd5390d15d34d92ee3c808f50b861076be39553456017","src/bidi.rs":"dcc07fcb2d9a19e5ca39e742c4d4649632843d2c9091f702548a5623f9af5949","src/calendar.rs":"94bb5e6ecd460b8a841b89c3af864be7cc76016f994687f68e612643bf9a46b0","src/casemap.rs":"6a36150138727ca30665e453d7b5d26f0896cf0afcb0295c92f96f1ff27e9a88","src/collator.rs":"047b2b572671fd707c513b6573f625d78db6cd4469dbabd818da90d66dfbb1df","src/collections_sets.rs":"2246b51a65fe94fdf8189d1c7b067fdbdbbfb56ee9aa002058361f160e455658","src/date.rs":"c26b38ecb12ec068a255cba6ed6e63654432c9d6764e0001bc19da0fd6d6271b","src/datetime.rs":"a3f2da2eb4877f61e2edebcfb951c3c81711455a49bd37138eb120800ea9fb5d","src/datetime_formatter.rs":"ba2bd517c1cd9f05792c3bdf1bac87dae8fc57972df308492d0e63687d2e2902","src/decimal.rs":"d5f4cb361de821e016e53353b1e9df58335152a193e3e7f8e843ef6f415d540d","src/displaynames.rs":"510dcef01a2ae3c6da52bc0948c6ae96d0e072931575ab94594502b30ebde848","src/errors.rs":"27c091a1470e7e13b0eb6fe7ed71a1437f7114fe13da77d1e06b6d9c631846a3","src/exemplar_chars.rs":"27000f47c868ac9d69cf13225b4d92b796600875baeb1d147c7f4f08a8224641","src/fallbacker.rs":"c2d019398abe663fec24b16cb513b70b2c89c35eb3883297acf937ee7daf0840","src/fixed_decimal.rs":"46f31d5596d13dea8ce86d1751ef868b3ad98edd72ce5ad91c8999038e26b7d6","src/iana_parser.rs":"67bdb2cb8287f2c7b2e069f9756dcc40792b67a207df0a3fdbfdee9f872ae0f5","src/lib.rs":"d6078a451aa13abc13ed07b2ee4cd7437c92d2cc9449bfe4d9973028568f80e1","src/list.rs":"eb8a0e9b5d090374d0d3928de604aaf52247874ee82cc19d1a8874f44e270325","src/locale.rs":"717932e6d89a76b3a6fb5bb02e94001170a393220389d027c434cdadd592de08","src/locale_core.rs":"a890fcd6a898f1a4b039423cf31f0c8d040732ea2ae9ed3664cca7a04d86fa53","src/locale_directionality.rs":"1c94e9892672c68a5b1e11cb6646844aeafd69247a7e0cf194635b4e3511035b","src/logging.rs":"2e786701a2638cbe36ec78cd12e7f7135e8285d10a13ac6289de99488ab12cec","src/neo_datetime.rs":"2420d0aed9b6a25e795027e7e943757c6f352dc059d387acb7a51cc3f811152b","src/normalizer.rs":"41df8db17eceb25257af46a1a9e89d6023787241965cfe4f63103e7f278801d9","src/normalizer_properties.rs":"03e69dd547501f15676deda4e2712c49fdd0e362a8d0aeb2b31a1d263e1d1277","src/pluralrules.rs":"2d33d38f51a35bbdb7c87b80a5290146a8b6c5007a9cf35850b44ed9b79138a8","src/properties_bidi.rs":"345c1a85b7bb305906b69100fee9063bdf0422e9238f264cb0be3258c98e8794","src/properties_enums.rs":"340b3f53d29ea4632dbcab3a5668d94649dffc45d4cc5acb4c5be0b154c79e1a","src/properties_iter.rs":"41b2012a2d6c559a453569e7833e818cd86dd551885a35137bff4c77a860c824","src/properties_maps.rs":"a0a2718df2802b5bf102c63f2df88418769d68d310630de1744eeb1ecb14a7e5","src/properties_names.rs":"c65d65f84092cf0ba798164863bb6cfa200ffb888803c825575dac6dbf320ac8","src/properties_sets.rs":"4bf859834c24c4f0fb9d4236c8688bcd9cd30b7c8e0af0b11cbff0a4431a6839","src/properties_unisets.rs":"7ac6948f12c13eb91755230dc6e1043a869954153db2fb5b9dcd1096058d985f","src/provider.rs":"737485e484a14634727e46d0ad9ee57c3493b2c45f3244e3b66c0d9d097e335c","src/script.rs":"74b6f4e6dd8d126711471ef19ea6327b900bf64ddc841a725e2b5e111ba87f85","src/segmenter_grapheme.rs":"a2c40ae1fdb37a2249cc282ac7cd85755a495feb0f2a55d539a765a7934423d9","src/segmenter_line.rs":"77fffe2dcf015823a79fd40cea65c96524c9e2fdda01c0be65e92de823f1ee54","src/segmenter_sentence.rs":"72a6e0ec6f33e4ebea79b8fc5831b337b89686728ca1de128cf0caee24fe6298","src/segmenter_word.rs":"b16a54debe676ba77cc7297a9148227f917295b388ba86f5c886aa5742c92852","src/time.rs":"29f00b3d8450323c9c112f72c1935861346152daa5d9ad84aeeef8c73cc4177b","src/timezone.rs":"92c4dec6e948383849555a4c0f4f40bb50757e26f926a902cc9865ce6d9f45b4","src/units_converter.rs":"567208c2c4655bdd4e8c3c168899df39412fcf535498eace0200aea733b89a16","src/utc_offset.rs":"4558f5aba36eedbbd0bdc390726aaa7e89a59e057b81c077c4ff5a293c4ce010","src/week.rs":"9dbe9a5a93b3fee50b61b8f0673139b93e216a3465f72f562a6ff5b1d48fec87","src/windows_parser.rs":"f5a6fd001e81fa7620b62852bd694bcefc1bd69194e403d154c639f3ddcc1079","src/zoned_datetime.rs":"22df2d9da1d141bd37e07fe5e81872408d1aaa47f3774ee19bbf299bf1241ec5","src/zoned_formatter.rs":"6dc881a59f6643e008eb6af75f0a231a38d6c953006f73f5365d9f2332d75030","tests/missing_apis.txt":"27697cfdd7f452dc829c94e1ba25864f0d259299f32a52d0c11a9d50501571d6"}}
\ No newline at end of file
diff --git a/crates/icu_capi/Android.bp b/crates/icu_capi/Android.bp
index b231402..8443563 100644
--- a/crates/icu_capi/Android.bp
+++ b/crates/icu_capi/Android.bp
@@ -50,4 +50,5 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/icu_capi/cargo_embargo.json b/crates/icu_capi/cargo_embargo.json
index f2023b3..a7cfcc3 100644
--- a/crates/icu_capi/cargo_embargo.json
+++ b/crates/icu_capi/cargo_embargo.json
@@ -13,5 +13,6 @@
"ramdisk_available": true,
"recovery_available": true,
"vendor_ramdisk_available": true,
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_casemap/.android-checksum.json b/crates/icu_casemap/.android-checksum.json
index ab28d59..b7892ef 100644
--- a/crates/icu_casemap/.android-checksum.json
+++ b/crates/icu_casemap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3aa3edd5efc95d59c26cafdd2d0dc1815825e48027dc47477b1145e3aac0d55f","Android.bp":"7f4b31ff83d4875651645e3e38dd929272a18d342321e00eb23078b0ccd7b481","Cargo.lock":"5885c099d179f1f5fededa52e838d81e1f38139c875d7501149e342e8ee77d21","Cargo.toml":"794cd5890fef3cb50037b93635eec290cca3809b33ebf40dc1ea100e4d7d263f","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"fe98a1355e001f17f21a6a17ca52f1b865f54ea693d214eac537e7e0702aff33","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"84ac74b6100cd96b311e48fee8a16809e23789f62b859a78f7056af9a7ef4f26","benches/casemap.rs":"e2a6dd3b99a6f2beed63bccf671fd33b6ff1b4d86d3104299d53bd333a015d9e","benches/data/Iliad.txt":"670de56f18e541dbe45e710e204d62aa02aee104634b8638d070a11d9a6102af","cargo_embargo.json":"eff85c93de63a76ccdf80d19f9e2cfcf3197523bce8bc556b34a626691f96188","examples/casemapping.rs":"09c3d8c32860dc1c8447e05313516346ed6c8473a42baa9298b9a1d53dd3cb8c","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/casemapper.rs":"18b35606b75cc8f6665ac53de43b7b64465c2ae3983ca829792f520071593e0a","src/closer.rs":"17c766d4d570a6d1f052c3170feb096020bd4da2d82407cfc4eb17cab12153c7","src/greek_to_me/data.rs":"b8e598094bf64e493f25355e2e3b012bb5813a2428d0793a1c46d2877ff352f0","src/greek_to_me/mod.rs":"354073d021be8cf570feff4a760d407534fe552aa7c5448529cb47724a466a00","src/internals.rs":"0fe2d6de26461de1bf9d8b885493a61a1514a015f39a7a935cab73c6a37f85ff","src/lib.rs":"72cac0282cb138d87eea38796428be604aaebbd820f592585cbbec7504b13cd5","src/provider/data.rs":"edd73b0858db22fb5e44a7df2dc23892a51f3f7fb9fc387c298cc9e4883ef7c3","src/provider/exception_helpers.rs":"80cbfb52aa928c8e8d57226abd6f11c62b3522ab99685b338210ec845b42e581","src/provider/exceptions.rs":"8ef31eaf328bc4b5b666923682d7fbe6a83e411a62610b7cf0062adde392c749","src/provider/exceptions_builder.rs":"0e3ff6b841ba0ec1c143f2f472473c6c5145b6f5b36c8359bc3bf586d33fe8ae","src/provider/mod.rs":"e2d5e3d3d659db212cb43c8abd437495f1c6b32dc526b976f054a6d2cbbfc02d","src/provider/unfold.rs":"8135af45bf4786dbe0285485ef1eb25f7ca492bd3a1b2a8e77e1db00c8f66ce6","src/set.rs":"0bd1a28e21513177d839844e20178d9b0ce1191c3d94de29a121927e1ce8076e","src/titlecase.rs":"da721a3effef6864d074cbe71d4d2d0c9a34a60deb58707bdc6f56b899b37f7a","tests/conversions.rs":"f270320fbb25bdada7a7b5b5668b7e09fb1ac024bce5b0fa1f68bb3b099f3135","tests/gen_greek_to_me.rs":"dc57cc6bb2172107531916be02d41c9b2c8e930b8f6d94a1a272e740c46c5f2d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3aa3edd5efc95d59c26cafdd2d0dc1815825e48027dc47477b1145e3aac0d55f","Android.bp":"d48588522b61d0dfc0810032635a8f13a0379ab3a7d0fc6ee0b95f35fa72f25f","Cargo.lock":"5885c099d179f1f5fededa52e838d81e1f38139c875d7501149e342e8ee77d21","Cargo.toml":"794cd5890fef3cb50037b93635eec290cca3809b33ebf40dc1ea100e4d7d263f","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"fe98a1355e001f17f21a6a17ca52f1b865f54ea693d214eac537e7e0702aff33","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"84ac74b6100cd96b311e48fee8a16809e23789f62b859a78f7056af9a7ef4f26","benches/casemap.rs":"e2a6dd3b99a6f2beed63bccf671fd33b6ff1b4d86d3104299d53bd333a015d9e","benches/data/Iliad.txt":"670de56f18e541dbe45e710e204d62aa02aee104634b8638d070a11d9a6102af","cargo_embargo.json":"92b0036c184e1611949b0887791c08900a12416f4c66cec851ea115c29a02513","examples/casemapping.rs":"09c3d8c32860dc1c8447e05313516346ed6c8473a42baa9298b9a1d53dd3cb8c","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/casemapper.rs":"18b35606b75cc8f6665ac53de43b7b64465c2ae3983ca829792f520071593e0a","src/closer.rs":"17c766d4d570a6d1f052c3170feb096020bd4da2d82407cfc4eb17cab12153c7","src/greek_to_me/data.rs":"b8e598094bf64e493f25355e2e3b012bb5813a2428d0793a1c46d2877ff352f0","src/greek_to_me/mod.rs":"354073d021be8cf570feff4a760d407534fe552aa7c5448529cb47724a466a00","src/internals.rs":"0fe2d6de26461de1bf9d8b885493a61a1514a015f39a7a935cab73c6a37f85ff","src/lib.rs":"72cac0282cb138d87eea38796428be604aaebbd820f592585cbbec7504b13cd5","src/provider/data.rs":"edd73b0858db22fb5e44a7df2dc23892a51f3f7fb9fc387c298cc9e4883ef7c3","src/provider/exception_helpers.rs":"80cbfb52aa928c8e8d57226abd6f11c62b3522ab99685b338210ec845b42e581","src/provider/exceptions.rs":"8ef31eaf328bc4b5b666923682d7fbe6a83e411a62610b7cf0062adde392c749","src/provider/exceptions_builder.rs":"0e3ff6b841ba0ec1c143f2f472473c6c5145b6f5b36c8359bc3bf586d33fe8ae","src/provider/mod.rs":"e2d5e3d3d659db212cb43c8abd437495f1c6b32dc526b976f054a6d2cbbfc02d","src/provider/unfold.rs":"8135af45bf4786dbe0285485ef1eb25f7ca492bd3a1b2a8e77e1db00c8f66ce6","src/set.rs":"0bd1a28e21513177d839844e20178d9b0ce1191c3d94de29a121927e1ce8076e","src/titlecase.rs":"da721a3effef6864d074cbe71d4d2d0c9a34a60deb58707bdc6f56b899b37f7a","tests/conversions.rs":"f270320fbb25bdada7a7b5b5668b7e09fb1ac024bce5b0fa1f68bb3b099f3135","tests/gen_greek_to_me.rs":"dc57cc6bb2172107531916be02d41c9b2c8e930b8f6d94a1a272e740c46c5f2d"}}
\ No newline at end of file
diff --git a/crates/icu_casemap/Android.bp b/crates/icu_casemap/Android.bp
index 16d332b..538f270 100644
--- a/crates/icu_casemap/Android.bp
+++ b/crates/icu_casemap/Android.bp
@@ -43,6 +43,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_casemap/cargo_embargo.json b/crates/icu_casemap/cargo_embargo.json
index cdc8fc2..5d352b1 100644
--- a/crates/icu_casemap/cargo_embargo.json
+++ b/crates/icu_casemap/cargo_embargo.json
@@ -10,5 +10,6 @@
"icu_casemap": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_casemap_data/.android-checksum.json b/crates/icu_casemap_data/.android-checksum.json
index 8ad383b..20b144b 100644
--- a/crates/icu_casemap_data/.android-checksum.json
+++ b/crates/icu_casemap_data/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"23dc7e6151907bf53474ca2b2e0499d14a6c8826b1e0d2a594dd8ecbe5222e59","Android.bp":"837a6c0b0b684fed002bc5ba281f35b3ec1439499fefbc3b4b41810d3724ede9","Cargo.toml":"2a4471e9401052c7981319cec2376b43dbab13874280d6ed3146d0988117147d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"cfe345f833403f7f65f7b3c16e55d345cba07e39d6b85954ff9b00997371c8e6","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dac577090ec05589fa7736c88521d665bc3768629ee137746f2badf2438f0118","cargo_embargo.json":"0d93168047ba9c2c018d1b07e87c4aee8a46cbf33bb9fc41338803e1a4174420","data/case_map_unfold_v1.rs.data":"1c32b7665ef9501dbac258e74a4eecb86917f421dd30d13e1d97526009b5acba","data/case_map_v1.rs.data":"39b72d8b6c8b61c316ea38ffdbcd89d87e69bfa95a37c27f89ab42cef2406f3d","data/mod.rs":"23e84c61efd9c39be66851cdf03358af43db0646074f9d7e6806cdfd43649129","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"46ac252c6cee560b0748b87e6879aaa9c013f470df3be37577c26b3bd02d68c1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"23dc7e6151907bf53474ca2b2e0499d14a6c8826b1e0d2a594dd8ecbe5222e59","Android.bp":"44cdba25432c103049044426eca8cf47cae4bc725e91c950d95421ff8931269f","Cargo.toml":"2a4471e9401052c7981319cec2376b43dbab13874280d6ed3146d0988117147d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"cfe345f833403f7f65f7b3c16e55d345cba07e39d6b85954ff9b00997371c8e6","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dac577090ec05589fa7736c88521d665bc3768629ee137746f2badf2438f0118","cargo_embargo.json":"965dc011f3ff4e5090109b146effda850a3e8874c2eb77fd8b7c2654972fd354","data/case_map_unfold_v1.rs.data":"1c32b7665ef9501dbac258e74a4eecb86917f421dd30d13e1d97526009b5acba","data/case_map_v1.rs.data":"39b72d8b6c8b61c316ea38ffdbcd89d87e69bfa95a37c27f89ab42cef2406f3d","data/mod.rs":"23e84c61efd9c39be66851cdf03358af43db0646074f9d7e6806cdfd43649129","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"46ac252c6cee560b0748b87e6879aaa9c013f470df3be37577c26b3bd02d68c1"}}
\ No newline at end of file
diff --git a/crates/icu_casemap_data/Android.bp b/crates/icu_casemap_data/Android.bp
index 8ce3b53..97c8aaf 100644
--- a/crates/icu_casemap_data/Android.bp
+++ b/crates/icu_casemap_data/Android.bp
@@ -32,6 +32,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_casemap_data/cargo_embargo.json b/crates/icu_casemap_data/cargo_embargo.json
index 985e9b0..3487cb5 100644
--- a/crates/icu_casemap_data/cargo_embargo.json
+++ b/crates/icu_casemap_data/cargo_embargo.json
@@ -7,5 +7,6 @@
"icu_casemap_data": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_collections/.android-checksum.json b/crates/icu_collections/.android-checksum.json
index 81da959..03e2d29 100644
--- a/crates/icu_collections/.android-checksum.json
+++ b/crates/icu_collections/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d1cfdcf721c77a0cbcee333182be375acd1d766564dc5c59f5b51d00475b28b5","Android.bp":"af0a7510da9b1e8a25f0458cc6b48cd2078a1f07e0f28dbe101b33542d89d5ac","Cargo.lock":"feb8c727aa5dea5b250c07a3a57d0d8c9379d7b3f87ecad5efea9092468c5c60","Cargo.toml":"d906bfd9d7b6ee043994d18e57f54ce162fb31b634e5b3dcc2ef927f4fef074d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"0ba9286c00b0f8f6974d3a1a0a277eb223ba373a081bc9714cf6f7d7e7993ecb","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"376fc0fef90ab1f72d76d95619b7442d72d81d0fe825a33507e6100598a677d4","benches/codepointtrie.rs":"27432996fe739ceb59c2327c70b1c80d2fcbe0f50704bfedb5ef3a58344e0ac2","benches/iai_cpt.rs":"9a2bc3f9d01b7549c036f88e99f710fa8d88fe308aa13dc161b90bd60163fca9","benches/inv_list.rs":"52ecad5f37db6ce4412fd10daa541b78c26bc8995b6f4e181af927a71bc485d3","benches/tries/gc_fast.rs":"04d4987368db96fb88938bdf971fc9f6ec4d979793aae98ad18cd12b6d8c1303","benches/tries/gc_small.rs":"bd4091aa648f0d3903d2b9ea50ac4f36df5be0cd8ede1fec912fd1e1d23baa00","benches/tries/mod.rs":"05982091e34cb8471ea805d88dfa1e17105092cb68f3bae78c27029abc1e5444","cargo_embargo.json":"cfa3e95d978e8d795897043f8e3e510369c6428d5856507d9ec1ac9c1110b980","examples/unicode_bmp_blocks_selector.rs":"0c2f81321df6923c2eab5ffa0a5dc9921790265836158051ff117036d39855b3","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","patches/6204-remove-panics.patch":"99b436d7993441ec1ba4109d4fe2a5aa40c356d8e406e5e4c3c5518f6839559c","src/char16trie/mod.rs":"be24ad99707fccfb1da866cafb671893e5d56ea819275bb13ae90ffb5818c2cd","src/char16trie/trie.rs":"a5b6039f4770455cd29cb156d99dbeba1a1489e4290deb6afb39d227b28d42fa","src/codepointinvlist/builder.rs":"317135218dff41b9f8aecd0a17e6129db39c69f8d4c74fcce3019feeda2a4f72","src/codepointinvlist/conversions.rs":"7fc659e51345a7fc46034c0f135d1ce510e63173e62d63708cc179af8ff0229a","src/codepointinvlist/cpinvlist.rs":"444da98f921d1402593b0daf420e1eaa73314d31251973066db777096070fcda","src/codepointinvlist/mod.rs":"5c562e5831e29b4e33b89cf6101c4c2714011a1fbea0ab715dfafe6702ebf1fc","src/codepointinvlist/utils.rs":"0e3dfe7f1a0daf08a2ebbd0ff832d9b49674cb4621248d7bf7843050e5583211","src/codepointinvliststringlist/mod.rs":"16ac36bd0bf9c2ca6340dff49c010e6e90b4fc3b4c6f6f1cdf8b28dfacc96715","src/codepointtrie/cptrie.rs":"4b7f4e5f4ff8d3a0ffd6b881e0073c956bd828857f50a373852ff9cbf4de3050","src/codepointtrie/error.rs":"0f678c9afb9de20aa8c229db5864053abb2f1348be3488f77fd934125dac8d38","src/codepointtrie/impl_const.rs":"6c272cd327ca10679214c8b9c6b8d0d7f33d72a75bba26e2411df5160ae5609f","src/codepointtrie/mod.rs":"542410f19df8260b46eada54af7384771b09b1792fd5bffd414a8f9fc4ba817f","src/codepointtrie/planes.rs":"7cb92a992fd1772ca501d182dbec169034b2d8993eeacae11466335bcdbbee1c","src/codepointtrie/serde.rs":"c388c8b00161123b951c2a45e3eb2e94ce54763793e86041a726e39d0f27d1c3","src/codepointtrie/toml.rs":"739a838a5012e711c77b7ace4a496a4d10c18c13e82fea978d6bc0a5ff4706b3","src/iterator_utils.rs":"9337e3a14071585aa6c06332ce16d5afe0547037e3b3f9b12e59edd02ea38622","src/lib.rs":"3819021bdbe478a9f6f3aa218c4ff54e09c075722c87a63c988725278c3857a9","tests/char16trie.rs":"d9c6741b068ac7c5825965dee68e3244c87c4cd0ed63e49720a904e08fd35d8d","tests/cpt.rs":"e4450f3fdf80d36a4570a190659ba2d3f1705d760e40338a0dde70ae1fd0a8fc","tests/data/char16trie/empty.toml":"c229d09d23713f750d081fd4730944411a2c81f37fdc4bc8d00b3e6ee39e5ab1","tests/data/char16trie/months.toml":"d809bda6a56b10dea07da3e706b651dfe51934e66adfa014f27b9ea0fe8a5f86","tests/data/char16trie/test_a.toml":"b4bce2330cfaf2feb7360c6b5f2c011c6aba70d99c8bc2684103b8d09678a836","tests/data/char16trie/test_a_ab.toml":"cb59a8d825d49f4ce9742a1569001320821067a13e7b5d5931b8db8b5a0a7d06","tests/data/char16trie/test_branches.toml":"a0ad93f2e6decfbde0794cb7415f1b51ab3e0781d157debff7958e8ccfcc8a02","tests/data/char16trie/test_compact.toml":"30a5f46d60ae36086b5f71096d40c5d8f4425022e6153b58c77b63175dd0275c","tests/data/char16trie/test_long_branch.toml":"91f117132fd0e237deb67052ff5f692a89ec2808afa40a44e1d6503b51aaf4da","tests/data/char16trie/test_long_sequence.toml":"00d9531daad9baf44d454a0084a2eccf04839b6b6eaef507fb853030416569fa","tests/data/char16trie/test_shortest_branch.toml":"4e26e868ef92993f6ad682174b0258431713e55c592990d7faef0b1dcfbb6c43","tests/data/cpt/free-blocks.16.toml":"77c93f60e4ac5c06a13fe4b35296e015d024a523b91ad4f5b46328b5af9c4e12","tests/data/cpt/free-blocks.32.toml":"84578a22c756c61e3d8e727d75b69e72da1444743a7aff5f445a1d8385996662","tests/data/cpt/free-blocks.8.toml":"a7ee191d2c7ae66a01fd473d4608f88a3db4401ef2e37b6f7de14a0f89368141","tests/data/cpt/free-blocks.small16.toml":"3a1df03f336ab3b36e848bc948aa2f01ee070eda3ed5b92494e45029e829e5c9","tests/data/cpt/grow-data.16.toml":"34e6b4ea52135a88e3f3fcc2f96551055c49285f5982c5d8d18e3293cd5bb131","tests/data/cpt/grow-data.32.toml":"e17ec4cffbfb0964358a289e9d12ba984decaebbc112be83850378a6a462243e","tests/data/cpt/grow-data.8.toml":"b4a1f39fedf8d3dc5770c3de64dc3cde287509aa88168c012d125fe37b9023d0","tests/data/cpt/grow-data.small16.toml":"d539f776aace2022117282a9351e04492b201f7825f12f15598aefa8ab93622e","tests/data/cpt/planes.toml":"1fd9147c91604137b47a73aa5669b59332538269e666b6a37fec69889eb2e8fc","tests/data/cpt/set-empty.16.toml":"2caed73ff2fb2a1e4693f48e4351ac58a9f1b99ee9b6fca2579b4766defaa654","tests/data/cpt/set-empty.32.toml":"21c0e730578e13e9417224ceecd5a176e55421500be8f8aaba87aaff69ac006c","tests/data/cpt/set-empty.8.toml":"c8bc25d6dc36e59e2c025a2672cf446ab7cec53c39f88e1febd2ce435494d1e9","tests/data/cpt/set-empty.small16.toml":"1e5c566b012e6ae9414bb1e1463293ba29399f31c625efde1c3eeea11f330239","tests/data/cpt/set-single-value.16.toml":"3be7ee2492d73daf25741ca8dba274296d08252ad26aed124aec92d341c6ca08","tests/data/cpt/set-single-value.32.toml":"ee1afa4c3e03cf96509f5ab19672351ff48490be05e9c42b3b1a8bc6f5404e9e","tests/data/cpt/set-single-value.8.toml":"711cabb29a8eb4d3967125ef05ba28d2380a534dc9b11e8e0a2ca82057dbe817","tests/data/cpt/set-single-value.small16.toml":"be1b33f9b20851c4000545fee2174b9753211df002eafd968c58b2de9a815526","tests/data/cpt/set1.16.toml":"61fb05b2fdebb406a0f2709b7f4234b500f626e32367e7bdbd99ec37d141fa57","tests/data/cpt/set1.32.toml":"ce46a0f3105d3819dd174837121ef6d9f0f48939b9d59f4439bee561020e61aa","tests/data/cpt/set1.8.toml":"942f21d433006b3a07df237e72a5ccf121394675e91b4cbfaf7dacb20aa03771","tests/data/cpt/set1.small16.toml":"d118f8e3e4432205bd5e492cd69062d2a1195640f5a8c2cfc5f3dc86b3d59027","tests/data/cpt/set2-overlap.16.toml":"8784aac1b9afaaedea69d98e06a0292805cba75f378f5097eefaf194d57c95ee","tests/data/cpt/set2-overlap.32.toml":"fada6e7600b1fbc5f198d13cf02fed56d11a8794d6baa48647b066a1ed5790b4","tests/data/cpt/set2-overlap.small16.toml":"85672dfbadd32b64fc8b78007e0fe197b6d101ee80d8cba26b1e407701aeb8f1","tests/data/cpt/set3-initial-9.16.toml":"f4d938265c26e7526a98ebf529fecad203322e61528bdd294d28add2acfd2968","tests/data/cpt/set3-initial-9.32.toml":"e263f2f2efe127e3bb2a7ad203c27206aa35b376781d1bb484f64c535eebb1d3","tests/data/cpt/set3-initial-9.8.toml":"3bcdc32a13578de915b8b33691a746ca23863452838ebe03fb58a2218bf82d1d","tests/data/cpt/set3-initial-9.small16.toml":"19040a9dd6ae4c6e1f26cfc75c63aec455f7d432691a1920e8a0a52f036890ec","tests/data/cpt/short-all-same.16.toml":"de42f2a1e22706466fdcdf1d54f2e95d2496196ee9ebfe7c49c58457ab5085ab","tests/data/cpt/short-all-same.8.toml":"1a4ce667875ebca85ef2880b7190d901946dc8ea9de45b6b2d8c94640a69b34a","tests/data/cpt/short-all-same.small16.toml":"de42f2a1e22706466fdcdf1d54f2e95d2496196ee9ebfe7c49c58457ab5085ab","tests/data/cpt/small0-in-fast.16.toml":"27376fd8f6066e69bcf6b2ff9b02756b27f03917e37d95cea861fc4166a554d5","tests/data/cpt/small0-in-fast.32.toml":"990380ae996e7ec920cda766e8265dd61e297777db564db65d9a5ce9a051f1f4","tests/data/cpt/small0-in-fast.8.toml":"669f72893b5534135a0276e7f4c11af2eacae36154c96df57d7b5a69f65c2568","tests/data/cpt/small0-in-fast.small16.toml":"b8883f7ffdb5264a223a6a30d408774671de4a245d1cb2e2c7364b558ad7f696"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d1cfdcf721c77a0cbcee333182be375acd1d766564dc5c59f5b51d00475b28b5","Android.bp":"b8a41c651a27ee39ed4166d41d41cb3e219338abd6206f47d7ecebe23e48e0dc","Cargo.lock":"feb8c727aa5dea5b250c07a3a57d0d8c9379d7b3f87ecad5efea9092468c5c60","Cargo.toml":"d906bfd9d7b6ee043994d18e57f54ce162fb31b634e5b3dcc2ef927f4fef074d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"0ba9286c00b0f8f6974d3a1a0a277eb223ba373a081bc9714cf6f7d7e7993ecb","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"376fc0fef90ab1f72d76d95619b7442d72d81d0fe825a33507e6100598a677d4","benches/codepointtrie.rs":"27432996fe739ceb59c2327c70b1c80d2fcbe0f50704bfedb5ef3a58344e0ac2","benches/iai_cpt.rs":"9a2bc3f9d01b7549c036f88e99f710fa8d88fe308aa13dc161b90bd60163fca9","benches/inv_list.rs":"52ecad5f37db6ce4412fd10daa541b78c26bc8995b6f4e181af927a71bc485d3","benches/tries/gc_fast.rs":"04d4987368db96fb88938bdf971fc9f6ec4d979793aae98ad18cd12b6d8c1303","benches/tries/gc_small.rs":"bd4091aa648f0d3903d2b9ea50ac4f36df5be0cd8ede1fec912fd1e1d23baa00","benches/tries/mod.rs":"05982091e34cb8471ea805d88dfa1e17105092cb68f3bae78c27029abc1e5444","cargo_embargo.json":"d343885ee1f6077423c29efe615b98feb7a2cd22ac088f3521e37f562740e31c","examples/unicode_bmp_blocks_selector.rs":"0c2f81321df6923c2eab5ffa0a5dc9921790265836158051ff117036d39855b3","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","patches/6204-remove-panics.patch":"99b436d7993441ec1ba4109d4fe2a5aa40c356d8e406e5e4c3c5518f6839559c","src/char16trie/mod.rs":"be24ad99707fccfb1da866cafb671893e5d56ea819275bb13ae90ffb5818c2cd","src/char16trie/trie.rs":"a5b6039f4770455cd29cb156d99dbeba1a1489e4290deb6afb39d227b28d42fa","src/codepointinvlist/builder.rs":"317135218dff41b9f8aecd0a17e6129db39c69f8d4c74fcce3019feeda2a4f72","src/codepointinvlist/conversions.rs":"7fc659e51345a7fc46034c0f135d1ce510e63173e62d63708cc179af8ff0229a","src/codepointinvlist/cpinvlist.rs":"444da98f921d1402593b0daf420e1eaa73314d31251973066db777096070fcda","src/codepointinvlist/mod.rs":"5c562e5831e29b4e33b89cf6101c4c2714011a1fbea0ab715dfafe6702ebf1fc","src/codepointinvlist/utils.rs":"0e3dfe7f1a0daf08a2ebbd0ff832d9b49674cb4621248d7bf7843050e5583211","src/codepointinvliststringlist/mod.rs":"16ac36bd0bf9c2ca6340dff49c010e6e90b4fc3b4c6f6f1cdf8b28dfacc96715","src/codepointtrie/cptrie.rs":"4b7f4e5f4ff8d3a0ffd6b881e0073c956bd828857f50a373852ff9cbf4de3050","src/codepointtrie/error.rs":"0f678c9afb9de20aa8c229db5864053abb2f1348be3488f77fd934125dac8d38","src/codepointtrie/impl_const.rs":"6c272cd327ca10679214c8b9c6b8d0d7f33d72a75bba26e2411df5160ae5609f","src/codepointtrie/mod.rs":"542410f19df8260b46eada54af7384771b09b1792fd5bffd414a8f9fc4ba817f","src/codepointtrie/planes.rs":"7cb92a992fd1772ca501d182dbec169034b2d8993eeacae11466335bcdbbee1c","src/codepointtrie/serde.rs":"c388c8b00161123b951c2a45e3eb2e94ce54763793e86041a726e39d0f27d1c3","src/codepointtrie/toml.rs":"739a838a5012e711c77b7ace4a496a4d10c18c13e82fea978d6bc0a5ff4706b3","src/iterator_utils.rs":"9337e3a14071585aa6c06332ce16d5afe0547037e3b3f9b12e59edd02ea38622","src/lib.rs":"3819021bdbe478a9f6f3aa218c4ff54e09c075722c87a63c988725278c3857a9","tests/char16trie.rs":"d9c6741b068ac7c5825965dee68e3244c87c4cd0ed63e49720a904e08fd35d8d","tests/cpt.rs":"e4450f3fdf80d36a4570a190659ba2d3f1705d760e40338a0dde70ae1fd0a8fc","tests/data/char16trie/empty.toml":"c229d09d23713f750d081fd4730944411a2c81f37fdc4bc8d00b3e6ee39e5ab1","tests/data/char16trie/months.toml":"d809bda6a56b10dea07da3e706b651dfe51934e66adfa014f27b9ea0fe8a5f86","tests/data/char16trie/test_a.toml":"b4bce2330cfaf2feb7360c6b5f2c011c6aba70d99c8bc2684103b8d09678a836","tests/data/char16trie/test_a_ab.toml":"cb59a8d825d49f4ce9742a1569001320821067a13e7b5d5931b8db8b5a0a7d06","tests/data/char16trie/test_branches.toml":"a0ad93f2e6decfbde0794cb7415f1b51ab3e0781d157debff7958e8ccfcc8a02","tests/data/char16trie/test_compact.toml":"30a5f46d60ae36086b5f71096d40c5d8f4425022e6153b58c77b63175dd0275c","tests/data/char16trie/test_long_branch.toml":"91f117132fd0e237deb67052ff5f692a89ec2808afa40a44e1d6503b51aaf4da","tests/data/char16trie/test_long_sequence.toml":"00d9531daad9baf44d454a0084a2eccf04839b6b6eaef507fb853030416569fa","tests/data/char16trie/test_shortest_branch.toml":"4e26e868ef92993f6ad682174b0258431713e55c592990d7faef0b1dcfbb6c43","tests/data/cpt/free-blocks.16.toml":"77c93f60e4ac5c06a13fe4b35296e015d024a523b91ad4f5b46328b5af9c4e12","tests/data/cpt/free-blocks.32.toml":"84578a22c756c61e3d8e727d75b69e72da1444743a7aff5f445a1d8385996662","tests/data/cpt/free-blocks.8.toml":"a7ee191d2c7ae66a01fd473d4608f88a3db4401ef2e37b6f7de14a0f89368141","tests/data/cpt/free-blocks.small16.toml":"3a1df03f336ab3b36e848bc948aa2f01ee070eda3ed5b92494e45029e829e5c9","tests/data/cpt/grow-data.16.toml":"34e6b4ea52135a88e3f3fcc2f96551055c49285f5982c5d8d18e3293cd5bb131","tests/data/cpt/grow-data.32.toml":"e17ec4cffbfb0964358a289e9d12ba984decaebbc112be83850378a6a462243e","tests/data/cpt/grow-data.8.toml":"b4a1f39fedf8d3dc5770c3de64dc3cde287509aa88168c012d125fe37b9023d0","tests/data/cpt/grow-data.small16.toml":"d539f776aace2022117282a9351e04492b201f7825f12f15598aefa8ab93622e","tests/data/cpt/planes.toml":"1fd9147c91604137b47a73aa5669b59332538269e666b6a37fec69889eb2e8fc","tests/data/cpt/set-empty.16.toml":"2caed73ff2fb2a1e4693f48e4351ac58a9f1b99ee9b6fca2579b4766defaa654","tests/data/cpt/set-empty.32.toml":"21c0e730578e13e9417224ceecd5a176e55421500be8f8aaba87aaff69ac006c","tests/data/cpt/set-empty.8.toml":"c8bc25d6dc36e59e2c025a2672cf446ab7cec53c39f88e1febd2ce435494d1e9","tests/data/cpt/set-empty.small16.toml":"1e5c566b012e6ae9414bb1e1463293ba29399f31c625efde1c3eeea11f330239","tests/data/cpt/set-single-value.16.toml":"3be7ee2492d73daf25741ca8dba274296d08252ad26aed124aec92d341c6ca08","tests/data/cpt/set-single-value.32.toml":"ee1afa4c3e03cf96509f5ab19672351ff48490be05e9c42b3b1a8bc6f5404e9e","tests/data/cpt/set-single-value.8.toml":"711cabb29a8eb4d3967125ef05ba28d2380a534dc9b11e8e0a2ca82057dbe817","tests/data/cpt/set-single-value.small16.toml":"be1b33f9b20851c4000545fee2174b9753211df002eafd968c58b2de9a815526","tests/data/cpt/set1.16.toml":"61fb05b2fdebb406a0f2709b7f4234b500f626e32367e7bdbd99ec37d141fa57","tests/data/cpt/set1.32.toml":"ce46a0f3105d3819dd174837121ef6d9f0f48939b9d59f4439bee561020e61aa","tests/data/cpt/set1.8.toml":"942f21d433006b3a07df237e72a5ccf121394675e91b4cbfaf7dacb20aa03771","tests/data/cpt/set1.small16.toml":"d118f8e3e4432205bd5e492cd69062d2a1195640f5a8c2cfc5f3dc86b3d59027","tests/data/cpt/set2-overlap.16.toml":"8784aac1b9afaaedea69d98e06a0292805cba75f378f5097eefaf194d57c95ee","tests/data/cpt/set2-overlap.32.toml":"fada6e7600b1fbc5f198d13cf02fed56d11a8794d6baa48647b066a1ed5790b4","tests/data/cpt/set2-overlap.small16.toml":"85672dfbadd32b64fc8b78007e0fe197b6d101ee80d8cba26b1e407701aeb8f1","tests/data/cpt/set3-initial-9.16.toml":"f4d938265c26e7526a98ebf529fecad203322e61528bdd294d28add2acfd2968","tests/data/cpt/set3-initial-9.32.toml":"e263f2f2efe127e3bb2a7ad203c27206aa35b376781d1bb484f64c535eebb1d3","tests/data/cpt/set3-initial-9.8.toml":"3bcdc32a13578de915b8b33691a746ca23863452838ebe03fb58a2218bf82d1d","tests/data/cpt/set3-initial-9.small16.toml":"19040a9dd6ae4c6e1f26cfc75c63aec455f7d432691a1920e8a0a52f036890ec","tests/data/cpt/short-all-same.16.toml":"de42f2a1e22706466fdcdf1d54f2e95d2496196ee9ebfe7c49c58457ab5085ab","tests/data/cpt/short-all-same.8.toml":"1a4ce667875ebca85ef2880b7190d901946dc8ea9de45b6b2d8c94640a69b34a","tests/data/cpt/short-all-same.small16.toml":"de42f2a1e22706466fdcdf1d54f2e95d2496196ee9ebfe7c49c58457ab5085ab","tests/data/cpt/small0-in-fast.16.toml":"27376fd8f6066e69bcf6b2ff9b02756b27f03917e37d95cea861fc4166a554d5","tests/data/cpt/small0-in-fast.32.toml":"990380ae996e7ec920cda766e8265dd61e297777db564db65d9a5ce9a051f1f4","tests/data/cpt/small0-in-fast.8.toml":"669f72893b5534135a0276e7f4c11af2eacae36154c96df57d7b5a69f65c2568","tests/data/cpt/small0-in-fast.small16.toml":"b8883f7ffdb5264a223a6a30d408774671de4a245d1cb2e2c7364b558ad7f696"}}
\ No newline at end of file
diff --git a/crates/icu_collections/Android.bp b/crates/icu_collections/Android.bp
index 339566b..3d525f9 100644
--- a/crates/icu_collections/Android.bp
+++ b/crates/icu_collections/Android.bp
@@ -39,6 +39,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_collections/cargo_embargo.json b/crates/icu_collections/cargo_embargo.json
index 557b77d..2988493 100644
--- a/crates/icu_collections/cargo_embargo.json
+++ b/crates/icu_collections/cargo_embargo.json
@@ -10,5 +10,6 @@
"icu_collections": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_locale/.android-checksum.json b/crates/icu_locale/.android-checksum.json
index 0dd267b..454bacd 100644
--- a/crates/icu_locale/.android-checksum.json
+++ b/crates/icu_locale/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"90281f79dd27a7e00f418a04f4b703153a15cd495e0eda7fcd4f216c1bc6c565","Android.bp":"fd3676ea4ceeec70622e7db1172c199ff923d1b8f1cebd018ff5d1194de71697","Cargo.toml":"480cfdfaf625c52c6c365f5be6b383b209af14a6b2d4fdb56c6f3f7a0e57420e","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"35b147fae0361ed311e3ab923982d1fe2ec8716d2c76156661df7b9931d49f4d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"92eae2074f8e720e936a2a1e1e19dea1232f674f50b4be2f4bd3fe62b0e96e09","benches/fixtures/locales.json":"b17464ac31084cd125c68eac8f4e5ea0f2c3596826eba14349c0965e0e9f50a8","benches/fixtures/uncanonicalized-locales.json":"0dd8f02fa1e84f22debf7903e79404f573a110e599a97c94edcdb2d8a18b331a","benches/locale_canonicalizer.rs":"68cb7122cba3513bf49137c12e31e66424c813e700bdab91c278e17cd88420fa","cargo_embargo.json":"5db03b983b81d98a0f5cac506f217247b7d7234a10742429427b5d60b1a320b7","src/canonicalizer.rs":"d21d30cff9b73ff2e5d99219bfd542f68bbbe368e44df45a1e57f5680b86c69f","src/directionality.rs":"d5f9a857baeb87f2eee2a2a7582db6ce5e786f17b158173de6b94a56986f6042","src/exemplar_chars.rs":"aaef8225032d65a870531f87ee8780a599470890a7af68442e41a283dd6df93b","src/expander.rs":"d00d8af7b764d142f539450ffe298522101a5455f86aa4192fa61afe8bf847bc","src/fallback/algorithms.rs":"14e71bd1dbdf6dfebd2f03b64eb77b4756fa84187936ba4d884f84a73dfa956e","src/fallback/mod.rs":"8d94397ee873bd12ee76efd3d4eabba1db1fb2b7ac23e7aa176f2f80acce5da9","src/lib.rs":"b0bf09072929336ac60138e2ae032b551a3dbc8d20c319abe306595c5ac50538","src/provider.rs":"a31c42e77821be45c8778a828ed8255c2436dd18eeb40c146bde238537b5b4a3","tests/fixtures/canonicalize.json":"8b5c6577141f72d869e6837fd50ac2c34cd39f2912146021da63d0e937a62212","tests/fixtures/maximize.json":"9d503a8631302c8863c5d30164f550da6e769aedd9ed246182e673e7155e1a0f","tests/fixtures/minimize.json":"fbeff504d2b94dff632e9d895ff04bc26b2ae2bd51eb241180b76ff25b02c235","tests/fixtures/mod.rs":"221770d6aec7a203656922d349fe76647e4b6e6803c315d6c4de8172d0b25748","tests/locale_canonicalizer.rs":"ea74cbf80bf18277a7db41a0dea44b708bcc63e66842476ff39559e53429e4e0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"90281f79dd27a7e00f418a04f4b703153a15cd495e0eda7fcd4f216c1bc6c565","Android.bp":"d5cbdefdb969f6b4cdf4a79fd74f5e8a7dc427dcd9e8b232a9c424a20900f95e","Cargo.toml":"480cfdfaf625c52c6c365f5be6b383b209af14a6b2d4fdb56c6f3f7a0e57420e","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"35b147fae0361ed311e3ab923982d1fe2ec8716d2c76156661df7b9931d49f4d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"92eae2074f8e720e936a2a1e1e19dea1232f674f50b4be2f4bd3fe62b0e96e09","benches/fixtures/locales.json":"b17464ac31084cd125c68eac8f4e5ea0f2c3596826eba14349c0965e0e9f50a8","benches/fixtures/uncanonicalized-locales.json":"0dd8f02fa1e84f22debf7903e79404f573a110e599a97c94edcdb2d8a18b331a","benches/locale_canonicalizer.rs":"68cb7122cba3513bf49137c12e31e66424c813e700bdab91c278e17cd88420fa","cargo_embargo.json":"c1898c8d7a2e08c070ae59504b91b8dd22618bb26feeb3b94bd9bb6a6124e795","src/canonicalizer.rs":"d21d30cff9b73ff2e5d99219bfd542f68bbbe368e44df45a1e57f5680b86c69f","src/directionality.rs":"d5f9a857baeb87f2eee2a2a7582db6ce5e786f17b158173de6b94a56986f6042","src/exemplar_chars.rs":"aaef8225032d65a870531f87ee8780a599470890a7af68442e41a283dd6df93b","src/expander.rs":"d00d8af7b764d142f539450ffe298522101a5455f86aa4192fa61afe8bf847bc","src/fallback/algorithms.rs":"14e71bd1dbdf6dfebd2f03b64eb77b4756fa84187936ba4d884f84a73dfa956e","src/fallback/mod.rs":"8d94397ee873bd12ee76efd3d4eabba1db1fb2b7ac23e7aa176f2f80acce5da9","src/lib.rs":"b0bf09072929336ac60138e2ae032b551a3dbc8d20c319abe306595c5ac50538","src/provider.rs":"a31c42e77821be45c8778a828ed8255c2436dd18eeb40c146bde238537b5b4a3","tests/fixtures/canonicalize.json":"8b5c6577141f72d869e6837fd50ac2c34cd39f2912146021da63d0e937a62212","tests/fixtures/maximize.json":"9d503a8631302c8863c5d30164f550da6e769aedd9ed246182e673e7155e1a0f","tests/fixtures/minimize.json":"fbeff504d2b94dff632e9d895ff04bc26b2ae2bd51eb241180b76ff25b02c235","tests/fixtures/mod.rs":"221770d6aec7a203656922d349fe76647e4b6e6803c315d6c4de8172d0b25748","tests/locale_canonicalizer.rs":"ea74cbf80bf18277a7db41a0dea44b708bcc63e66842476ff39559e53429e4e0"}}
\ No newline at end of file
diff --git a/crates/icu_locale/Android.bp b/crates/icu_locale/Android.bp
index 2b92aff..b3ee7f9 100644
--- a/crates/icu_locale/Android.bp
+++ b/crates/icu_locale/Android.bp
@@ -42,4 +42,5 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/icu_locale/cargo_embargo.json b/crates/icu_locale/cargo_embargo.json
index 36aa41b..c4d73e6 100644
--- a/crates/icu_locale/cargo_embargo.json
+++ b/crates/icu_locale/cargo_embargo.json
@@ -5,5 +5,6 @@
"ramdisk_available": true,
"recovery_available": true,
"vendor_ramdisk_available": true,
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_locale_core/.android-checksum.json b/crates/icu_locale_core/.android-checksum.json
index 2d81e16..1671e83 100644
--- a/crates/icu_locale_core/.android-checksum.json
+++ b/crates/icu_locale_core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"390fbcce98ace71121f05f431867a995495ddf1d8c833b561443eaf3c2b83353","Android.bp":"af30585b898af817acca2a0db9e7fccb745d9cab6e7aa79381f57892c51334a2","Cargo.lock":"5c7418dcf794ceeccb097944445f790d6af339286b736c324f9d6a005ab431c6","Cargo.toml":"e8af9b3f2717a7f94d9b28bdae12c0a367263aee76a798475a69a4e13df95282","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"4f8c2d52b5fa5605fb9161837e20f89c04c97ad0e0c029345b2e258fade73f5c","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c17fe367e24111ba828942734f1f681d85db46683d635cfeae4539eb784d0af0","benches/fixtures/langid.json":"3847206945dcb6a132fcc539022382d6a1b9b251131133a6dc73336136df1654","benches/fixtures/locale.json":"4975d05ed877230d99b631655999a6c3a4a3cf0715444c7598f16212e2912285","benches/fixtures/mod.rs":"9ad9f9e5280bbe5ddc0cb50c7c7eb5b34e0186fe10f7faea3ed5e758cc78b477","benches/fixtures/subtags.json":"033b8c83596a5bfa6f56514bfda2b6b37db024a38078c3ab96b5b63e2199cdf2","benches/helpers/macros.rs":"ffa04652bcc705710b44a76073b1c4f8330fcd8b6f881996f6bd372b7c18a1da","benches/helpers/mod.rs":"220de8a715c486d42749c6b97e8c11179513716076c26cca37336013128b1179","benches/iai_langid.rs":"02eedff5aacb48df8aaa4669f3f96dca21d215b97c4295dffb1545fc6177f54b","benches/langid.rs":"6f5dca4024945a15afc7403971e7cfe9e821e577fbd988cd43d04ee453b19ef7","benches/locale.rs":"570d5f3cf0dc873c06b612b021dd88cd43db92ccbf83d73862adcc445858c4d9","benches/subtags.rs":"4dc0b3894c20da309e4776c9c0a8d3d14e508ba9830d942e026d11a07bb7d9ae","cargo_embargo.json":"dad36af3357cdde67e04b6d02cda3b4ab70eca175b68ebc7b1f3afe4714080c6","examples/filter_langids.rs":"de5d355d52e8462437ab977fcb4b481cebb2ced95e2f27c0a1cd49fa51607b29","examples/syntatically_canonicalize_locales.rs":"f4b649b2de0335aeb217936c89078333ee1de636654348b6449cd571d1832fdd","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/data.rs":"5dbdbdb905d71e3ef7c739d29533b022fa5e4390f89c4ef9f8ec610cd816b641","src/databake.rs":"3414643e694247a28f99eeb569f26c317404a84181b8e3d4edb3f94c2764264f","src/extensions/mod.rs":"39135987987c859d3d37a9282589227545d8a801ffa19e905766e8c185297a52","src/extensions/other/mod.rs":"4b64a385ecbe12a4a996d7584edea95daefba252a1fd6caff095b46936461e06","src/extensions/private/mod.rs":"bbc63879b587bca49cd34431f6f6c6620e3a27fa547d1b60366c43ca7c7e698a","src/extensions/private/other.rs":"92f7f87762cb05cb3220e9e0937b954a78c909ef092d4371ea8a91eb47111989","src/extensions/transform/fields.rs":"f5b3ad9b9617f58bc7db199fb06a7e33fd6af72d2dfbdef1bf234a4179200c3d","src/extensions/transform/key.rs":"e3837a1f374fd7e279f13e25b6f99f0e421af6a1badbf2d34bb26fd29cd13324","src/extensions/transform/mod.rs":"332849210f2c0b2e42b0d30cc8882bf1eda1be66f24364e90f1df1af93cd5dc9","src/extensions/transform/value.rs":"a81f045a4aac6c1e3afcdc78c18f8cb3130dd6bbab58ffe8c636cb1d233f337e","src/extensions/unicode/attribute.rs":"63d9174486097c786e9375613321c170c47199b817736e7a20f46cc193ab94f6","src/extensions/unicode/attributes.rs":"025c3a7d30d62b14cf293e4b52132521b1b2edc122acee0777aa103dc838c04b","src/extensions/unicode/key.rs":"7a7f406e1e033cd6305d1cac8d1e71dfb6de0c9f4b5e4123aa53dc604bde32c3","src/extensions/unicode/keywords.rs":"136de7ad58866585f0c250f47ebf1ac8ab5379dcb0bf9f80d2c82667ebfa062b","src/extensions/unicode/mod.rs":"eb5ae90601fbb26e34ce77332b15e3e4f3a51870f4780719234bf26b90f03979","src/extensions/unicode/subdivision.rs":"a081cffb611fd90978a799549c08b8e5e698fe5a713759b8da2a79213d1a32fe","src/extensions/unicode/value.rs":"1a761a667c034d4528ffd2b988933c7cef01bd229cca35dc5c6f24e863ea7cb3","src/helpers.rs":"5475fecc3ac964925d096068a164a444ac4df80188e006f1a19ce27026988a59","src/langid.rs":"9ba5c806c924137705e2bc324bb1c2099497fd4c9b0b66dfa6c9d68dc229235e","src/lib.rs":"4c0f750da75ef7ad0c662627c0ea73c037b0a809a7fead687f62a2a9e7eb15dd","src/locale.rs":"a253c550bb85ba10dc9c8cf65f4ad7ab8e3c621c4793b308edba7be400babdb5","src/macros.rs":"4e60c5a7795cbe81a0b4ca56d90017728932819e9b8599e7efc6759dfda87268","src/parser/errors.rs":"e27c9e9ea99294d719848654afd191252202ba701b7f8e2751cf763357fd027e","src/parser/langid.rs":"eac24216a49728e6baac8b7ea0eeb913c71c3ed8388f0465dab90d3a3b48e656","src/parser/locale.rs":"964233b452c56671b51c476ab2631479bdd748a3483acc2a0bbb34daa4de9a1b","src/parser/mod.rs":"bbc262345547a7c0381c9dd1079e9d7ab7b7c603c9b8d2c04bc08da8c203aaab","src/preferences/extensions/mod.rs":"406d5307d94990a8a1c08bfa7efc2a3f059174a69cd7e44090e0448a3e04c8e3","src/preferences/extensions/unicode/errors.rs":"9d0defeee42ee59b825e2d7e5842dc407a809b3aec10a2a59348cd4e768cfe5c","src/preferences/extensions/unicode/keywords/calendar.rs":"c0c28b0acfcc848b42a854c9c85664032821369b585bd6a036d7aa1abf488d92","src/preferences/extensions/unicode/keywords/collation.rs":"7e938cd6ea1eade8a6b4787f458cc52909e3006d4005ce14a1a2f9d039254810","src/preferences/extensions/unicode/keywords/currency.rs":"8609aa1ee3c558b6fdc84c16ebdc685a4a0e557e91affda98974ff2bc480bc84","src/preferences/extensions/unicode/keywords/currency_format.rs":"65e7761d3ec03b8a16768663856f7538cade4fa05f6f23ee09aa9f922152d4ec","src/preferences/extensions/unicode/keywords/dictionary_break.rs":"2ec8904200bf6d249d6a270c43d860d8908dc993c968e2144964274794adec09","src/preferences/extensions/unicode/keywords/emoji.rs":"2d7e9a9d62c046e1af57718038f004db7fef64f1b39a83f7c511131b6cd0cb4e","src/preferences/extensions/unicode/keywords/first_day.rs":"3571b3c4fdd714ef9b5febca3b6ba3a3e0af721c975f63ca50f9f6ddc3230c30","src/preferences/extensions/unicode/keywords/hour_cycle.rs":"c3c0858897608f3ccd89deda0c7fa33080b42010beffcff47a524c3e3926cb6d","src/preferences/extensions/unicode/keywords/line_break.rs":"b00e2146dad1351496c99e71efa72ffecf8e25b52fa7ccabfe2692d7d32fb3c7","src/preferences/extensions/unicode/keywords/line_break_word.rs":"eed1474a6deef5ea28028d532fc0412c8548d8e9c4352978f6fe9eb47368b165","src/preferences/extensions/unicode/keywords/measurement_system.rs":"5d495d25dfc86bd1998f436cd027b93435101767933598a27923b19fbf38b16b","src/preferences/extensions/unicode/keywords/measurement_unit_override.rs":"2d4c4120da1b542ec04fcbffd974aee730e5ab5f80b12caddd94645e55b941ad","src/preferences/extensions/unicode/keywords/mod.rs":"1840a8d9ebd0b75152eec2c30d1296f1f5c731d4e4ef1b1daffce96260de2a5f","src/preferences/extensions/unicode/keywords/numbering_system.rs":"f4877119878e5a868e3f63de3577011c4b1e53e912a1422406144b12d8193310","src/preferences/extensions/unicode/keywords/region_override.rs":"6d93f14652ba797cba855327e76a4b617c6a517acc0e57c7b4aac5573c4717c2","src/preferences/extensions/unicode/keywords/regional_subdivision.rs":"a1f14e1c2ca3d5ec60d78f94bff51c6cd6eca878e5fcb49fd8e5cde48ff66e8e","src/preferences/extensions/unicode/keywords/sentence_supression.rs":"a3b177ca26c91dcc160473bd43abf2a1f247f0ade9a7890b193a0594af38f047","src/preferences/extensions/unicode/keywords/timezone.rs":"964aa07a14e148a57e1630433b96ac4c7ee5cf593d487d12dbb1ee8bc4c069c7","src/preferences/extensions/unicode/keywords/variant.rs":"a71cb9f1dd146ee4269362ff3cf2d4372b5cbc8cf1fb0930832ad05d3db43042","src/preferences/extensions/unicode/macros/enum_keyword.rs":"75e3f400d07674fbe6afd87aa5bd097012efffc8bc4540cad60af4e90de41122","src/preferences/extensions/unicode/macros/mod.rs":"95c48c3803e8527044578e55e7f4cf7a01fb6a7fd6304ba806fdc3b7fe3030fc","src/preferences/extensions/unicode/macros/struct_keyword.rs":"e2d7989c0094089f239b0f05d9bc466a255d207e29ea4a3526d1a7a28a67af5e","src/preferences/extensions/unicode/mod.rs":"25c0a985c340cf19aa758718e1d6534188a36f7e244f90a2c905ea5ab2ab7c9f","src/preferences/locale.rs":"c9eed3c8307f1d3868d7e0bda0569c9bf98c10e49d9840b05ca877a5f2075cd1","src/preferences/mod.rs":"65db4ee169e33d1380b0682cb6ee6c2352d1d007218e8ff16297c14ac76ba990","src/serde.rs":"401c2573f8985e65045dc45fe7a073f3f739712667eacb7d6ff85911da6f03d4","src/shortvec/litemap.rs":"517c1e0e8ad8f0130e7b41b54341fdb7b0449c405dd4a8c31640fac8f86290a3","src/shortvec/mod.rs":"750165b48ee8826285f02ed03af73ffae04cd62c36d176c94fb29818900df7c4","src/subtags/language.rs":"1424b6448b62a484fc725571ed3a1e0958e8e36a2f476dc90e986622b04042b4","src/subtags/mod.rs":"8c9b17634b700bb21b9940c1780089578c909b394e5bc3f98b0c8ecb7b1bb92c","src/subtags/region.rs":"f20d0d0da53043364f5df12959a8dfb14cb3f1bce188c68657c612403a10d24c","src/subtags/script.rs":"2997387e9d398e3bf726698e733b761242778d99b9f35907566aa60491b54f9e","src/subtags/variant.rs":"2c950f61d5ced6f690f87fba2fd1643a7483e9d96e046ceb57772ae61a29f684","src/subtags/variants.rs":"4652e4929a0dd8ca4373650775bedb830f31bcd01e95c35beb52260729378955","src/zerovec.rs":"8d64668cc7e5fdc44f3d67377f2201abf1f65186b221af5adb5bd0019825b32e","tests/fixtures/canonicalize.json":"0dc4d740927984104dee1f6cbf26e04fdec5e4f13a190d9fd8a8b0bab146d63d","tests/fixtures/invalid-extensions.json":"bd8d4339176b443f946d3e6052fb7df662e714ae302ffb5538df5081a6398b0b","tests/fixtures/invalid.json":"65db375d050db281abba0b9d4f473b32d4c5451dccc0413aaa36a712e8fc366d","tests/fixtures/langid.json":"64173e65f934c70b7ce6171723f2dd0cab78ff6eb87a85c7cbdd8d0b29144a66","tests/fixtures/locale.json":"4eecd5d2f3ed86fe72aa6d92a47f0f2f874b38bfabb795b930fa7cd3d6033b4f","tests/fixtures/mod.rs":"023ebcfc26b765e9d8d4b1f280e9af7e2a183819de7dc3894b4e73ea7b0f43eb","tests/langid.rs":"b1a54f8229cff31a215649d4ff19deb2b589cc954f6879ffc0c7ce6623ce8f7b","tests/locale.rs":"f09f0b420e0b34166cc4304ac8c4142d56fea9bf53ae303b905ec708fdada839"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"390fbcce98ace71121f05f431867a995495ddf1d8c833b561443eaf3c2b83353","Android.bp":"0168878e63968d18b7417493cc6c3a8a6fe64fb818a80f6887ecb418e4600984","Cargo.lock":"5c7418dcf794ceeccb097944445f790d6af339286b736c324f9d6a005ab431c6","Cargo.toml":"e8af9b3f2717a7f94d9b28bdae12c0a367263aee76a798475a69a4e13df95282","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"4f8c2d52b5fa5605fb9161837e20f89c04c97ad0e0c029345b2e258fade73f5c","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c17fe367e24111ba828942734f1f681d85db46683d635cfeae4539eb784d0af0","benches/fixtures/langid.json":"3847206945dcb6a132fcc539022382d6a1b9b251131133a6dc73336136df1654","benches/fixtures/locale.json":"4975d05ed877230d99b631655999a6c3a4a3cf0715444c7598f16212e2912285","benches/fixtures/mod.rs":"9ad9f9e5280bbe5ddc0cb50c7c7eb5b34e0186fe10f7faea3ed5e758cc78b477","benches/fixtures/subtags.json":"033b8c83596a5bfa6f56514bfda2b6b37db024a38078c3ab96b5b63e2199cdf2","benches/helpers/macros.rs":"ffa04652bcc705710b44a76073b1c4f8330fcd8b6f881996f6bd372b7c18a1da","benches/helpers/mod.rs":"220de8a715c486d42749c6b97e8c11179513716076c26cca37336013128b1179","benches/iai_langid.rs":"02eedff5aacb48df8aaa4669f3f96dca21d215b97c4295dffb1545fc6177f54b","benches/langid.rs":"6f5dca4024945a15afc7403971e7cfe9e821e577fbd988cd43d04ee453b19ef7","benches/locale.rs":"570d5f3cf0dc873c06b612b021dd88cd43db92ccbf83d73862adcc445858c4d9","benches/subtags.rs":"4dc0b3894c20da309e4776c9c0a8d3d14e508ba9830d942e026d11a07bb7d9ae","cargo_embargo.json":"93fe5dc22506dca91163df1bff5842821c80fbab869f99070bd2bc2ab59fa5ba","examples/filter_langids.rs":"de5d355d52e8462437ab977fcb4b481cebb2ced95e2f27c0a1cd49fa51607b29","examples/syntatically_canonicalize_locales.rs":"f4b649b2de0335aeb217936c89078333ee1de636654348b6449cd571d1832fdd","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/data.rs":"5dbdbdb905d71e3ef7c739d29533b022fa5e4390f89c4ef9f8ec610cd816b641","src/databake.rs":"3414643e694247a28f99eeb569f26c317404a84181b8e3d4edb3f94c2764264f","src/extensions/mod.rs":"39135987987c859d3d37a9282589227545d8a801ffa19e905766e8c185297a52","src/extensions/other/mod.rs":"4b64a385ecbe12a4a996d7584edea95daefba252a1fd6caff095b46936461e06","src/extensions/private/mod.rs":"bbc63879b587bca49cd34431f6f6c6620e3a27fa547d1b60366c43ca7c7e698a","src/extensions/private/other.rs":"92f7f87762cb05cb3220e9e0937b954a78c909ef092d4371ea8a91eb47111989","src/extensions/transform/fields.rs":"f5b3ad9b9617f58bc7db199fb06a7e33fd6af72d2dfbdef1bf234a4179200c3d","src/extensions/transform/key.rs":"e3837a1f374fd7e279f13e25b6f99f0e421af6a1badbf2d34bb26fd29cd13324","src/extensions/transform/mod.rs":"332849210f2c0b2e42b0d30cc8882bf1eda1be66f24364e90f1df1af93cd5dc9","src/extensions/transform/value.rs":"a81f045a4aac6c1e3afcdc78c18f8cb3130dd6bbab58ffe8c636cb1d233f337e","src/extensions/unicode/attribute.rs":"63d9174486097c786e9375613321c170c47199b817736e7a20f46cc193ab94f6","src/extensions/unicode/attributes.rs":"025c3a7d30d62b14cf293e4b52132521b1b2edc122acee0777aa103dc838c04b","src/extensions/unicode/key.rs":"7a7f406e1e033cd6305d1cac8d1e71dfb6de0c9f4b5e4123aa53dc604bde32c3","src/extensions/unicode/keywords.rs":"136de7ad58866585f0c250f47ebf1ac8ab5379dcb0bf9f80d2c82667ebfa062b","src/extensions/unicode/mod.rs":"eb5ae90601fbb26e34ce77332b15e3e4f3a51870f4780719234bf26b90f03979","src/extensions/unicode/subdivision.rs":"a081cffb611fd90978a799549c08b8e5e698fe5a713759b8da2a79213d1a32fe","src/extensions/unicode/value.rs":"1a761a667c034d4528ffd2b988933c7cef01bd229cca35dc5c6f24e863ea7cb3","src/helpers.rs":"5475fecc3ac964925d096068a164a444ac4df80188e006f1a19ce27026988a59","src/langid.rs":"9ba5c806c924137705e2bc324bb1c2099497fd4c9b0b66dfa6c9d68dc229235e","src/lib.rs":"4c0f750da75ef7ad0c662627c0ea73c037b0a809a7fead687f62a2a9e7eb15dd","src/locale.rs":"a253c550bb85ba10dc9c8cf65f4ad7ab8e3c621c4793b308edba7be400babdb5","src/macros.rs":"4e60c5a7795cbe81a0b4ca56d90017728932819e9b8599e7efc6759dfda87268","src/parser/errors.rs":"e27c9e9ea99294d719848654afd191252202ba701b7f8e2751cf763357fd027e","src/parser/langid.rs":"eac24216a49728e6baac8b7ea0eeb913c71c3ed8388f0465dab90d3a3b48e656","src/parser/locale.rs":"964233b452c56671b51c476ab2631479bdd748a3483acc2a0bbb34daa4de9a1b","src/parser/mod.rs":"bbc262345547a7c0381c9dd1079e9d7ab7b7c603c9b8d2c04bc08da8c203aaab","src/preferences/extensions/mod.rs":"406d5307d94990a8a1c08bfa7efc2a3f059174a69cd7e44090e0448a3e04c8e3","src/preferences/extensions/unicode/errors.rs":"9d0defeee42ee59b825e2d7e5842dc407a809b3aec10a2a59348cd4e768cfe5c","src/preferences/extensions/unicode/keywords/calendar.rs":"c0c28b0acfcc848b42a854c9c85664032821369b585bd6a036d7aa1abf488d92","src/preferences/extensions/unicode/keywords/collation.rs":"7e938cd6ea1eade8a6b4787f458cc52909e3006d4005ce14a1a2f9d039254810","src/preferences/extensions/unicode/keywords/currency.rs":"8609aa1ee3c558b6fdc84c16ebdc685a4a0e557e91affda98974ff2bc480bc84","src/preferences/extensions/unicode/keywords/currency_format.rs":"65e7761d3ec03b8a16768663856f7538cade4fa05f6f23ee09aa9f922152d4ec","src/preferences/extensions/unicode/keywords/dictionary_break.rs":"2ec8904200bf6d249d6a270c43d860d8908dc993c968e2144964274794adec09","src/preferences/extensions/unicode/keywords/emoji.rs":"2d7e9a9d62c046e1af57718038f004db7fef64f1b39a83f7c511131b6cd0cb4e","src/preferences/extensions/unicode/keywords/first_day.rs":"3571b3c4fdd714ef9b5febca3b6ba3a3e0af721c975f63ca50f9f6ddc3230c30","src/preferences/extensions/unicode/keywords/hour_cycle.rs":"c3c0858897608f3ccd89deda0c7fa33080b42010beffcff47a524c3e3926cb6d","src/preferences/extensions/unicode/keywords/line_break.rs":"b00e2146dad1351496c99e71efa72ffecf8e25b52fa7ccabfe2692d7d32fb3c7","src/preferences/extensions/unicode/keywords/line_break_word.rs":"eed1474a6deef5ea28028d532fc0412c8548d8e9c4352978f6fe9eb47368b165","src/preferences/extensions/unicode/keywords/measurement_system.rs":"5d495d25dfc86bd1998f436cd027b93435101767933598a27923b19fbf38b16b","src/preferences/extensions/unicode/keywords/measurement_unit_override.rs":"2d4c4120da1b542ec04fcbffd974aee730e5ab5f80b12caddd94645e55b941ad","src/preferences/extensions/unicode/keywords/mod.rs":"1840a8d9ebd0b75152eec2c30d1296f1f5c731d4e4ef1b1daffce96260de2a5f","src/preferences/extensions/unicode/keywords/numbering_system.rs":"f4877119878e5a868e3f63de3577011c4b1e53e912a1422406144b12d8193310","src/preferences/extensions/unicode/keywords/region_override.rs":"6d93f14652ba797cba855327e76a4b617c6a517acc0e57c7b4aac5573c4717c2","src/preferences/extensions/unicode/keywords/regional_subdivision.rs":"a1f14e1c2ca3d5ec60d78f94bff51c6cd6eca878e5fcb49fd8e5cde48ff66e8e","src/preferences/extensions/unicode/keywords/sentence_supression.rs":"a3b177ca26c91dcc160473bd43abf2a1f247f0ade9a7890b193a0594af38f047","src/preferences/extensions/unicode/keywords/timezone.rs":"964aa07a14e148a57e1630433b96ac4c7ee5cf593d487d12dbb1ee8bc4c069c7","src/preferences/extensions/unicode/keywords/variant.rs":"a71cb9f1dd146ee4269362ff3cf2d4372b5cbc8cf1fb0930832ad05d3db43042","src/preferences/extensions/unicode/macros/enum_keyword.rs":"75e3f400d07674fbe6afd87aa5bd097012efffc8bc4540cad60af4e90de41122","src/preferences/extensions/unicode/macros/mod.rs":"95c48c3803e8527044578e55e7f4cf7a01fb6a7fd6304ba806fdc3b7fe3030fc","src/preferences/extensions/unicode/macros/struct_keyword.rs":"e2d7989c0094089f239b0f05d9bc466a255d207e29ea4a3526d1a7a28a67af5e","src/preferences/extensions/unicode/mod.rs":"25c0a985c340cf19aa758718e1d6534188a36f7e244f90a2c905ea5ab2ab7c9f","src/preferences/locale.rs":"c9eed3c8307f1d3868d7e0bda0569c9bf98c10e49d9840b05ca877a5f2075cd1","src/preferences/mod.rs":"65db4ee169e33d1380b0682cb6ee6c2352d1d007218e8ff16297c14ac76ba990","src/serde.rs":"401c2573f8985e65045dc45fe7a073f3f739712667eacb7d6ff85911da6f03d4","src/shortvec/litemap.rs":"517c1e0e8ad8f0130e7b41b54341fdb7b0449c405dd4a8c31640fac8f86290a3","src/shortvec/mod.rs":"750165b48ee8826285f02ed03af73ffae04cd62c36d176c94fb29818900df7c4","src/subtags/language.rs":"1424b6448b62a484fc725571ed3a1e0958e8e36a2f476dc90e986622b04042b4","src/subtags/mod.rs":"8c9b17634b700bb21b9940c1780089578c909b394e5bc3f98b0c8ecb7b1bb92c","src/subtags/region.rs":"f20d0d0da53043364f5df12959a8dfb14cb3f1bce188c68657c612403a10d24c","src/subtags/script.rs":"2997387e9d398e3bf726698e733b761242778d99b9f35907566aa60491b54f9e","src/subtags/variant.rs":"2c950f61d5ced6f690f87fba2fd1643a7483e9d96e046ceb57772ae61a29f684","src/subtags/variants.rs":"4652e4929a0dd8ca4373650775bedb830f31bcd01e95c35beb52260729378955","src/zerovec.rs":"8d64668cc7e5fdc44f3d67377f2201abf1f65186b221af5adb5bd0019825b32e","tests/fixtures/canonicalize.json":"0dc4d740927984104dee1f6cbf26e04fdec5e4f13a190d9fd8a8b0bab146d63d","tests/fixtures/invalid-extensions.json":"bd8d4339176b443f946d3e6052fb7df662e714ae302ffb5538df5081a6398b0b","tests/fixtures/invalid.json":"65db375d050db281abba0b9d4f473b32d4c5451dccc0413aaa36a712e8fc366d","tests/fixtures/langid.json":"64173e65f934c70b7ce6171723f2dd0cab78ff6eb87a85c7cbdd8d0b29144a66","tests/fixtures/locale.json":"4eecd5d2f3ed86fe72aa6d92a47f0f2f874b38bfabb795b930fa7cd3d6033b4f","tests/fixtures/mod.rs":"023ebcfc26b765e9d8d4b1f280e9af7e2a183819de7dc3894b4e73ea7b0f43eb","tests/langid.rs":"b1a54f8229cff31a215649d4ff19deb2b589cc954f6879ffc0c7ce6623ce8f7b","tests/locale.rs":"f09f0b420e0b34166cc4304ac8c4142d56fea9bf53ae303b905ec708fdada839"}}
\ No newline at end of file
diff --git a/crates/icu_locale_core/Android.bp b/crates/icu_locale_core/Android.bp
index 4fbe38f..b5a81e8 100644
--- a/crates/icu_locale_core/Android.bp
+++ b/crates/icu_locale_core/Android.bp
@@ -42,6 +42,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_locale_core/cargo_embargo.json b/crates/icu_locale_core/cargo_embargo.json
index 8b7d41c..ab266a6 100644
--- a/crates/icu_locale_core/cargo_embargo.json
+++ b/crates/icu_locale_core/cargo_embargo.json
@@ -11,5 +11,6 @@
"icu_locale_core": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_locale_data/.android-checksum.json b/crates/icu_locale_data/.android-checksum.json
index 0d736c0..40c6799 100644
--- a/crates/icu_locale_data/.android-checksum.json
+++ b/crates/icu_locale_data/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"67a7cee38de0461aacfd846ffa76f88985cc62663a7917e5b9573bf22485ebd8","Android.bp":"455dee2aabfcf38b5cc4b8283f7bed8d7045b4f753feeece9f7f3674ca656cce","Cargo.toml":"156ae203f94691ed3f1d4e662241c10962e2c8310dad57a42cd5e7cfb61fab9a","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"899da25aed23b073f692fef95e4b6a0fbbb24dedc160a459a1d0ffdb842c8820","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b57a2a56c612ac16c42e11c8ec014a096ec2b1f624970c7d8974c6ee7a43a8ec","cargo_embargo.json":"16143b4a3b2b7e237c4df336ea0f1acaf8b933191c4edf5c60465abef731cb71","data/locale_aliases_v1.rs.data":"7a771378322c5c2384aa42745ab2853b5c8c27a2aff7c86c74e923f8b5f283e0","data/locale_exemplar_characters_auxiliary_v1.rs.data":"86e0367bd97f05596b8806c0f96b8317400a42d414be336223fab3b94432ce66","data/locale_exemplar_characters_index_v1.rs.data":"86f03fdc283affb5c7c4a39ace47cdadf603f1692f71b705ae235e285ea90464","data/locale_exemplar_characters_main_v1.rs.data":"2aa1b5a4e86999a176ad6104c4456e9b35a4d0cd007723fee7e719f5d92843d5","data/locale_exemplar_characters_numbers_v1.rs.data":"b4fbdd57b9e1d195bf93bc7b116662271f50b021d0c77204cda1067c7215e882","data/locale_exemplar_characters_punctuation_v1.rs.data":"920e1907cee5039b7ac219cdb28390faf0c87f3863e55258169890bbcde2b350","data/locale_likely_subtags_extended_v1.rs.data":"cb557fe654363ffbf696875618765cdd2089a2e2b3bc9d8854015a450d633c70","data/locale_likely_subtags_language_v1.rs.data":"a22fb58d16ebec7ebdac81acdc5dded249b498c3509609bd09c90b3880601b28","data/locale_likely_subtags_script_region_v1.rs.data":"636c8c44bd7ed01dbbeae0e19e1c795ca55a29bb67c2565817bb0971e2399a8d","data/locale_parents_v1.rs.data":"2e9180847c7a3ed30869b0e1c6ae9d82cf29d23bef0b89c98abb80fa2deb2aef","data/locale_script_direction_v1.rs.data":"6c3011f7e39f186f172cb711fcec54ae946e286828ea92c6f9ec55a5cb390219","data/mod.rs":"6671cd9c168b6d95899906e814fbb5c7c178d4c95f7b4f025a65f2abac7017ec","src/lib.rs":"f38c38ecb48b9fe0568c9930da54b8e6d4add5b627d2e26ed3ed99137349455f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"67a7cee38de0461aacfd846ffa76f88985cc62663a7917e5b9573bf22485ebd8","Android.bp":"bb8cb21848bb6bb15b0ab5a0c5f691656386d47df3d7715dd149822cf4986b32","Cargo.toml":"156ae203f94691ed3f1d4e662241c10962e2c8310dad57a42cd5e7cfb61fab9a","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"899da25aed23b073f692fef95e4b6a0fbbb24dedc160a459a1d0ffdb842c8820","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b57a2a56c612ac16c42e11c8ec014a096ec2b1f624970c7d8974c6ee7a43a8ec","cargo_embargo.json":"8f0124dd7aa24024f315985571b34a18127946f7599074a4a281123feb6a1195","data/locale_aliases_v1.rs.data":"7a771378322c5c2384aa42745ab2853b5c8c27a2aff7c86c74e923f8b5f283e0","data/locale_exemplar_characters_auxiliary_v1.rs.data":"86e0367bd97f05596b8806c0f96b8317400a42d414be336223fab3b94432ce66","data/locale_exemplar_characters_index_v1.rs.data":"86f03fdc283affb5c7c4a39ace47cdadf603f1692f71b705ae235e285ea90464","data/locale_exemplar_characters_main_v1.rs.data":"2aa1b5a4e86999a176ad6104c4456e9b35a4d0cd007723fee7e719f5d92843d5","data/locale_exemplar_characters_numbers_v1.rs.data":"b4fbdd57b9e1d195bf93bc7b116662271f50b021d0c77204cda1067c7215e882","data/locale_exemplar_characters_punctuation_v1.rs.data":"920e1907cee5039b7ac219cdb28390faf0c87f3863e55258169890bbcde2b350","data/locale_likely_subtags_extended_v1.rs.data":"cb557fe654363ffbf696875618765cdd2089a2e2b3bc9d8854015a450d633c70","data/locale_likely_subtags_language_v1.rs.data":"a22fb58d16ebec7ebdac81acdc5dded249b498c3509609bd09c90b3880601b28","data/locale_likely_subtags_script_region_v1.rs.data":"636c8c44bd7ed01dbbeae0e19e1c795ca55a29bb67c2565817bb0971e2399a8d","data/locale_parents_v1.rs.data":"2e9180847c7a3ed30869b0e1c6ae9d82cf29d23bef0b89c98abb80fa2deb2aef","data/locale_script_direction_v1.rs.data":"6c3011f7e39f186f172cb711fcec54ae946e286828ea92c6f9ec55a5cb390219","data/mod.rs":"6671cd9c168b6d95899906e814fbb5c7c178d4c95f7b4f025a65f2abac7017ec","src/lib.rs":"f38c38ecb48b9fe0568c9930da54b8e6d4add5b627d2e26ed3ed99137349455f"}}
\ No newline at end of file
diff --git a/crates/icu_locale_data/Android.bp b/crates/icu_locale_data/Android.bp
index e20a10d..4b6a4a0 100644
--- a/crates/icu_locale_data/Android.bp
+++ b/crates/icu_locale_data/Android.bp
@@ -32,4 +32,5 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/icu_locale_data/cargo_embargo.json b/crates/icu_locale_data/cargo_embargo.json
index 6e7b85f..8e5cc25 100644
--- a/crates/icu_locale_data/cargo_embargo.json
+++ b/crates/icu_locale_data/cargo_embargo.json
@@ -2,5 +2,6 @@
"ramdisk_available": true,
"recovery_available": true,
"vendor_ramdisk_available": true,
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_properties/.android-checksum.json b/crates/icu_properties/.android-checksum.json
index c4a32a5..6bfffa6 100644
--- a/crates/icu_properties/.android-checksum.json
+++ b/crates/icu_properties/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d4afa1bb81d9aef672528e8c65ba2e98c0e0e9db6aff6a5934a26e2d62957b34","Android.bp":"25a84e3885711b9fad0190f76b5d9d94a3fd63177aa401f58e82b6cecf98d25d","Cargo.toml":"240fa6af34253f244d47fec9fbce6d653bcc1dc6ceaf2a7b80cbf6e2c855e1c6","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"39dd3e52f5843ad020a8dfee3b09e68fd62366ce1ef23fad9ee274b5bc20699d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ec27e937ea2a1ec6f693727d476e67c2050e4fead9c8baf3bbb2d1d3eac262c4","cargo_embargo.json":"7c0b27071d70e34552ff11a98fb5ebc6ba4caea6d063089e38ae9df26ef3d6f3","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/bidi.rs":"cb3546ccfb9bf9d3062cafefc5ea6f42415b7a4ab020c4b7ea6e3da5fa89866c","src/code_point_map.rs":"c5e6ba80f374c0b5e1491a35b0e95033eacd862a29a56b63446f08dc66c8db02","src/code_point_set.rs":"f33d4a984624a854f6c86158de12b79ad14f9aa1a961bd86821d8db8362a6ce9","src/emoji.rs":"bf3e65f3e338723d17b95fadb911b3a4144f9607a85598d0cc5a692ed6038ecf","src/lib.rs":"823306d80a70873b37b9976628f1a3dfff43c8e212b79935d623d1e155b95e63","src/names.rs":"c2f98cb7cf3f9a7a22669fb1ae14341b84a6e12a5d3c8dccb244208918a90083","src/props.rs":"c92d1dc28fbcf1d92e0bcdc0a1c11654028856b046cf49be876f3ce2b40e0e12","src/provider.rs":"6bfd48febee0b91dfe6ac10a2607cdd9cfb193eddfa725b54d07693204204611","src/provider/names.rs":"34cfeee986a5a2db873837716ce21a27db2fc1a3916fe4dfde406b8885c3aed5","src/runtime.rs":"e2c942ba4f5e3df849f651c65dda17b12a1ff8f1d154f5f879892e3514caf27d","src/script.rs":"4d74e2016abbf7e52c7b15f892dcd03d3324b2fd1ca940b643567e064da4905f","src/trievalue.rs":"d8878538eaad87c7a8d115936ea4a60381729ba8150a3b3209de5ee502d1ba39"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d4afa1bb81d9aef672528e8c65ba2e98c0e0e9db6aff6a5934a26e2d62957b34","Android.bp":"b0c54e3fb8c9538bcad8294b3ba49e5d1a5938b681f5df055e4c85513727a9f6","Cargo.toml":"240fa6af34253f244d47fec9fbce6d653bcc1dc6ceaf2a7b80cbf6e2c855e1c6","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"39dd3e52f5843ad020a8dfee3b09e68fd62366ce1ef23fad9ee274b5bc20699d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ec27e937ea2a1ec6f693727d476e67c2050e4fead9c8baf3bbb2d1d3eac262c4","cargo_embargo.json":"e3b253a8d539dc86f33e09480e6b11d345f14c1b9560d95aa129a9b74d109ab1","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/bidi.rs":"cb3546ccfb9bf9d3062cafefc5ea6f42415b7a4ab020c4b7ea6e3da5fa89866c","src/code_point_map.rs":"c5e6ba80f374c0b5e1491a35b0e95033eacd862a29a56b63446f08dc66c8db02","src/code_point_set.rs":"f33d4a984624a854f6c86158de12b79ad14f9aa1a961bd86821d8db8362a6ce9","src/emoji.rs":"bf3e65f3e338723d17b95fadb911b3a4144f9607a85598d0cc5a692ed6038ecf","src/lib.rs":"823306d80a70873b37b9976628f1a3dfff43c8e212b79935d623d1e155b95e63","src/names.rs":"c2f98cb7cf3f9a7a22669fb1ae14341b84a6e12a5d3c8dccb244208918a90083","src/props.rs":"c92d1dc28fbcf1d92e0bcdc0a1c11654028856b046cf49be876f3ce2b40e0e12","src/provider.rs":"6bfd48febee0b91dfe6ac10a2607cdd9cfb193eddfa725b54d07693204204611","src/provider/names.rs":"34cfeee986a5a2db873837716ce21a27db2fc1a3916fe4dfde406b8885c3aed5","src/runtime.rs":"e2c942ba4f5e3df849f651c65dda17b12a1ff8f1d154f5f879892e3514caf27d","src/script.rs":"4d74e2016abbf7e52c7b15f892dcd03d3324b2fd1ca940b643567e064da4905f","src/trievalue.rs":"d8878538eaad87c7a8d115936ea4a60381729ba8150a3b3209de5ee502d1ba39"}}
\ No newline at end of file
diff --git a/crates/icu_properties/Android.bp b/crates/icu_properties/Android.bp
index 86ea65b..f1ab879 100644
--- a/crates/icu_properties/Android.bp
+++ b/crates/icu_properties/Android.bp
@@ -47,6 +47,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_properties/cargo_embargo.json b/crates/icu_properties/cargo_embargo.json
index 0d0d342..9260e74 100644
--- a/crates/icu_properties/cargo_embargo.json
+++ b/crates/icu_properties/cargo_embargo.json
@@ -8,9 +8,10 @@
"recovery_available": true,
"vendor_ramdisk_available": true,
"package": {
- "icu_properties" : {
+ "icu_properties": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
},
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_properties_data/.android-checksum.json b/crates/icu_properties_data/.android-checksum.json
index 954992b..18fa229 100644
--- a/crates/icu_properties_data/.android-checksum.json
+++ b/crates/icu_properties_data/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"cfb68f391915b095229635728f09fe288616f5672bd443705040026ba5a088e7","Android.bp":"013f5a4e6d5e349add8a200c3211c21eafe87cd57a4ea3fc356c901f8cebb756","Cargo.toml":"4b75bf2acc417d78dfe14e537850049b73e875f57ca86a39b5b31da9c2347315","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"84e75914ddc4d68f87227494689cd2748a0fa68a958bce9310a5911ee3fda0e5","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"146de90fddb3f2e1196f285c63503d0d52f817222974d57a7c49811fc0dd5170","cargo_embargo.json":"a8a37c776279e27c17610d83c9089fea6463bc052c3239d22afe2c6221117279","data/alnum_v1.rs.data":"fdc5c0a51b7810df925b76baf6ba849aaebddbc18e9cb9c8c795b4697fd56a68","data/alphabetic_v1.rs.data":"8cb254bb527a7a36932943dd63c5515dc6acd1336a22c2e6751a9cb4855f9ca3","data/ascii_hex_digit_v1.rs.data":"e76af21874b6fcf517a5afa14729a5457e68b4564ab7e0fc8f7041848baa1b4f","data/basic_emoji_v1.rs.data":"fd9ae540e2402e90fbd1d0e98c63b7d7db6d497a511ef0d3712193d6e360971e","data/bidi_class_name_to_value_v2.rs.data":"0d0af557d7fdf8abbe71b1c2d379fc0e64ebd12a6931c90685a0d174d911723c","data/bidi_class_v1.rs.data":"4a91d7d22d4242148b1a58f7a064e353bd7068d091a932efa2f7ded7087701f9","data/bidi_class_value_to_long_name_v1.rs.data":"012f254cd7a7b569596def0abbc4ffa027dbdad83745cf7f7e98983b2ac94359","data/bidi_class_value_to_short_name_v1.rs.data":"9eb8a6ad92398de7813d030a75a33b6c3768df43c4f3b656eef2ae19e07cf682","data/bidi_control_v1.rs.data":"5b9e655dc4b0839817e0df2368287ded0187c89784ba980d5558b4114276d3a0","data/bidi_mirrored_v1.rs.data":"556fbd3b8a1131872903564ad1df546fee1207314c35ec921912084550e0b87f","data/bidi_mirroring_glyph_v1.rs.data":"4a6614280c38547752bd2a87b7f52ee80dcbea3863a0e396b60ce9e5b914d405","data/blank_v1.rs.data":"6b8b1600feefee3200e35eb2713db886faba27f75a77841a6a6379b5678fa03d","data/canonical_combining_class_name_to_value_v2.rs.data":"0f23d1ebda29dbc9b27385991c5a007eef1f73db6a530a3c3ab20cd9dcfc487f","data/canonical_combining_class_v1.rs.data":"93ad6cf76c4a09c8e2006e2728249494c5e11c99a6fb69d0d63cbad3f238207d","data/canonical_combining_class_value_to_long_name_v1.rs.data":"f71a113f0648872f4bce36ab62e584b0f1a3abad7840fee7b7acad10fc717c3d","data/canonical_combining_class_value_to_short_name_v1.rs.data":"b3342bb28865fac49145feae7edb8b0fbb077bf12da029d9076121aacecfacb0","data/case_ignorable_v1.rs.data":"3aa0ea01d795bcd775b96dfa11a0ed866b671d6cedd1b9877eab2786e5f2d560","data/case_sensitive_v1.rs.data":"0bd37766c5b154bbbce78a3158fab6017e3a92ec4d5facf214442341c5be054c","data/cased_v1.rs.data":"ddc5ce3160f590c11efa1068d9fa02b004c4b1179f95264b1636dc2203f96821","data/changes_when_casefolded_v1.rs.data":"e0c55a12f337dbccb1ad4488d83bd7f5f39f015af6690646f2ce562f2318f17a","data/changes_when_casemapped_v1.rs.data":"df37b2382feb3246152327acfcfc66c43e9147f34f63327954a2656807608a56","data/changes_when_lowercased_v1.rs.data":"df245a0eb48e47a7650052ffe28c1b40dd223e9c710da57a7807c15e7fccdd03","data/changes_when_nfkc_casefolded_v1.rs.data":"971285feb01d9286b4b422aaca779998b48e1bab208cd6daa788d9ee658cc14e","data/changes_when_titlecased_v1.rs.data":"5fb2803b520422c65cc5a2dd2e747ec2f2b788a66a32c09dfbc4065c3dc0a3c0","data/changes_when_uppercased_v1.rs.data":"59a69ce076ba4b2be47eb49010f02653a8898c4550496e71758e5154a04340ce","data/dash_v1.rs.data":"432955129c9079a83394dde62cf85332f6d72050cc71835e1b5b451cd66d2076","data/default_ignorable_code_point_v1.rs.data":"36c6e07bbf68478a602782efbdcc2f09b232a03a51632d116b12ad6fad3da595","data/deprecated_v1.rs.data":"8d65c3dfa0113ff3cb2ded3db90fd57d9c1df6c73ac237d295fa707a3932f950","data/diacritic_v1.rs.data":"78a3a5fab1a20d84496e8af1a40d8595250026dc3212a88927a515e11c9460f4","data/east_asian_width_name_to_value_v2.rs.data":"4f018ec75fd07c69cda518ad59eb36fd4061ba1e19daf6ec2181f57693f287ee","data/east_asian_width_v1.rs.data":"e1d4d259fa3d7106864b306da9ca48b1639189fb80527f7cf8985db65a145601","data/east_asian_width_value_to_long_name_v1.rs.data":"6955b4639641ada4ced7f1193a5c4863336681426c24da0e465866e57bf5f9d2","data/east_asian_width_value_to_short_name_v1.rs.data":"943186ec75c8349f4450e3094e15cfaf496ff8796b413195654b18877ea8ef7c","data/emoji_component_v1.rs.data":"b026ae6dc1991d6feef7241e5c940d935ccafed7fdbc91fb28d1ed1e170f3c37","data/emoji_modifier_base_v1.rs.data":"9fd7c61b0c2926e75536e307675449f8121bb4309652b74750d33a188b5d1651","data/emoji_modifier_v1.rs.data":"257d686ebc5d3d4a74fe7e94f16452fa4e718536c12888bef1e206b552196414","data/emoji_presentation_v1.rs.data":"be90d6839c6652887899a426f46930931f85ac3a78bb331f012f781a6c79e2e3","data/emoji_v1.rs.data":"01511caded39c13902f52e9d9ab92934502822f14621a98b361b7ae67e993de6","data/extended_pictographic_v1.rs.data":"e05dbc0d4c5dc3503c29cc5a610454407cdbd84c26ae382d993e4a67ecd218fe","data/extender_v1.rs.data":"9e1bc0efd677e51de2b565e3d4192d8df2661c4e60478a0974c4485a72d7134e","data/full_composition_exclusion_v1.rs.data":"019af0dac78aa58a296ef686c884144d7082e75e55698b7e793d083d59e90d81","data/general_category_mask_name_to_value_v2.rs.data":"71160a0dfc5fa071e693e63c320bfa59e2df5f923eda250634629ab868dcb057","data/general_category_name_to_value_v2.rs.data":"42fc51755d66d66c5301919d0ac922142d64fa1ddb54f68754c188bce63b6908","data/general_category_v1.rs.data":"8a73378551baf0be1b442e170e00c4415a847761920247e3a0ec4c1ed04ccdb6","data/general_category_value_to_long_name_v1.rs.data":"095e7586b98662f09d5f59666fe1a31dd951c009acad7fb6dfa0954d6bf5004e","data/general_category_value_to_short_name_v1.rs.data":"e92d39ba56916a326eea094c0c2a261a447adcc1075668bff69a2e4ac429c18b","data/graph_v1.rs.data":"28a6773d65d35208a3770ca7406c9f844ee3f62d351cacfdc0fbf79358d1e3bc","data/grapheme_base_v1.rs.data":"1bb26ed0b8c7af04d47adea9f35a689b697fa86a846ffc415f5f8d4bdac1580f","data/grapheme_cluster_break_name_to_value_v2.rs.data":"5661eed75d895928c68c56eee2a2fb12409fc714c0f0f49076cf20990f3189d1","data/grapheme_cluster_break_v1.rs.data":"e226963f246ee9ac3b18f80f4edfa8183dccd31acfde0f8adfe970b935293e27","data/grapheme_cluster_break_value_to_long_name_v1.rs.data":"b882b9cb77b2726b8fe05d7a04e6b05e3052461070009bb8e67a5d3bdb0018d0","data/grapheme_cluster_break_value_to_short_name_v1.rs.data":"4812d716d14cb85ab5e85e18cd0d4541712303614119e37869bd0022fd2f25c5","data/grapheme_extend_v1.rs.data":"8103b0d47edd2a0fdf2bbe122f81dd2de4c05f1e5db05a11a8e24cb35f347dfc","data/grapheme_link_v1.rs.data":"382a16b8ddae94c8c2da798f5380f2bde4def02d16bacf03ba96bd659815ddca","data/hangul_syllable_type_name_to_value_v2.rs.data":"5051943e4051ae11f6e33548d09a7817a4e270a3e3131850af402a804741bbf4","data/hangul_syllable_type_v1.rs.data":"6096f4d7879a59cc514e7487a2c185427f28c538cceeaf7678b2d9a4234f8886","data/hangul_syllable_type_value_to_long_name_v1.rs.data":"2f1252eaa0d03f8aa5765f3dd423bedbb42f3903b4da3cc3055b2746d92170ee","data/hangul_syllable_type_value_to_short_name_v1.rs.data":"17f5e92a5ac20d8007a70b261fb827450f35791a035a4ed9fcedd451b0459864","data/hex_digit_v1.rs.data":"d5ddc07be8ad649eba703190acc6faf46b71c1a47178c8a36ab8d32288633766","data/hyphen_v1.rs.data":"8cbe474974ef8c6a54e89a963fdfc8e7320c77e37caf12651f8ce011cf86b291","data/id_continue_v1.rs.data":"11a954344e643cb6bea225888cf89aa5706224d27affb31eaddfeea1670b5cf9","data/id_start_v1.rs.data":"e376cd94ee903d885085aa852c4533f6b665f2b335860002f7ab607b67c4d432","data/ideographic_v1.rs.data":"25e0d44d5d8f473159f0cc1335aff8543850ea8ab778485b48e788fbf7c514c1","data/ids_binary_operator_v1.rs.data":"7a40aa3d26037dbf795023bd9b3b457d6ee425f4cba60db50ee495a127a5206b","data/ids_trinary_operator_v1.rs.data":"9f13a0502f513093c5e3ebd157a9c49a0f9d8824ebfae779177f6ed56e510d85","data/indic_syllabic_category_name_to_value_v2.rs.data":"2ed585be79538f3f5ab25986227ecf2332973510339148b418c7ec45b9a10f71","data/indic_syllabic_category_v1.rs.data":"6b59898d840f1ac27e49add9bc369ed93d331b48a3958cb27bc25781726b8301","data/indic_syllabic_category_value_to_long_name_v1.rs.data":"a95d7ba8ffee6eb37f83ad27eed26ab295be1d8b5d008714782e4f6a5181437d","data/indic_syllabic_category_value_to_short_name_v1.rs.data":"4544486f49adee390f661a2868474d1b17b2c129161fb263f361de2f3756671b","data/join_control_v1.rs.data":"5900234bef657cb6f91ad9464c11857a947aebd3f8319fca84f23517a64807c3","data/joining_type_name_to_value_v2.rs.data":"5c58788220c7bc08aa398366dc90c80ea2dfaf54642df98556cb64fc1a53ab7a","data/joining_type_v1.rs.data":"315e015611477a26d1f7497052759c33821dc606f15c312a35e9e94c7c661256","data/joining_type_value_to_long_name_v1.rs.data":"08a9582120d62cd80f29e6485b7ab842a1a315896735ce5eec0de3cb46672ea4","data/joining_type_value_to_short_name_v1.rs.data":"7b3b8ade7485ba115eb811b1a65b891abd53d6f8b2c4adc28fba40a76cd31951","data/line_break_name_to_value_v2.rs.data":"06a0868893e5a5b1fe5a6d1a2f6e05dd9a9632219b2f3cc989e77788334b10d8","data/line_break_v1.rs.data":"d927b223ae5afc6c82751c19dca04cd31ae621cb6cbca27e505370b43acf75f5","data/line_break_value_to_long_name_v1.rs.data":"1e372e849076e67c5d16ba1f9b0642c5c97a75979a003ac78d5d0ede4e2db362","data/line_break_value_to_short_name_v1.rs.data":"6990e48a7f1ab0df48c0486981f789c7011cb8c4b231830a9dd35f3cd7f324b1","data/logical_order_exception_v1.rs.data":"016579df630fd8fc082b31993f663f727e8b46ebaea78caa940bd37716ca43b6","data/lowercase_v1.rs.data":"fecde2d6cd1d70aaf6fd1e5303e0f6d724cc6c456bf758f233c6703aab3ae07a","data/math_v1.rs.data":"18cab6132f894ac765bd914926427bc2b9d5badb9b1f918ac5f1587efebffce9","data/mod.rs":"b2b27fb573d1b59746c3694732795012d172a71babe36e9ca6ba08912b3fcb80","data/nfc_inert_v1.rs.data":"de476765ed3c5b49ab85f2bf1aaafd632e6590ba819236887efaeb3ad53853b4","data/nfd_inert_v1.rs.data":"2576b765fa7b2a561ab6e789848ecac80b59551f2b64e3d81e5acbdcae3d6ef9","data/nfkc_inert_v1.rs.data":"0a78a02451d6d766138a951e779ba4bf4dd4dda16fb3c8cb8e9e405a6e4dcc5f","data/nfkd_inert_v1.rs.data":"76128d55bf6c4c2eeaa4116fd3a96f6790b1af217831ff55f6d7b09bb6533099","data/noncharacter_code_point_v1.rs.data":"dec900b82c2beaff42b2f13ec3be7baaa457bc65af569d660ee56382875de7a1","data/pattern_syntax_v1.rs.data":"8119a3c88fb2fca0687b1d2d9d656a30f337314f286bcadd54203c1482dfcb4b","data/pattern_white_space_v1.rs.data":"3488a7e2b5dd3520804240721b2945b8ae9a8db3e8d2cb00898866a3371b222f","data/prepended_concatenation_mark_v1.rs.data":"6da697d0b97f8a4621c030fac95c0d70ef49d54588d97aacf98af71b035174f7","data/print_v1.rs.data":"d2ad0a29e32352be4cbd3716a84798635e67a6450fd58f77ea1c61121537da29","data/quotation_mark_v1.rs.data":"d7228475ce06789455df2813f4daed6481e88c3e9e45f062ed579227c901fe23","data/radical_v1.rs.data":"a3aa192e450c32f05389ba2491b9b61e9027a2aa07f57c60c4a043fdefd719de","data/regional_indicator_v1.rs.data":"7d8e465fd5929b27528448c223553a9204be10bae199627a1635962fd546fc92","data/script_name_to_value_v2.rs.data":"096ab0f9a055d2494018cebe910f425f890f29a30219c9a5e4dc753c53336e09","data/script_v1.rs.data":"f6132ce4c856e56dc6730ec9d3858644d77ca9c9517db552c3f1682bcc46629e","data/script_value_to_long_name_v1.rs.data":"e904d44003fd087e33a2a20ab80dd45371b1262cfcab5790365f5a5d6050f83a","data/script_value_to_short_name_v1.rs.data":"e1485bc9164b1f64ff7b24521ecc976d6c30f0f3161c03c155111b8b1798bb67","data/script_with_extensions_property_v1.rs.data":"79daff836db20354a7dd05607f8438e36aad5b8cf8aca9bb1fd22c807679e220","data/segment_starter_v1.rs.data":"7e0f1eb2e3c09a45756d7c7e55ee82b28327ed3a4e8da70f01fa7e292050a761","data/sentence_break_name_to_value_v2.rs.data":"1f4afee7cc04120cc87ab2be02eb390c8ecd747c6c66180e6d1235f3f22a859d","data/sentence_break_v1.rs.data":"ce99fd9c4857cfc4d82ab5eba42040451147c1f10839763e131b30c49dd64671","data/sentence_break_value_to_long_name_v1.rs.data":"3e02830506b04239aa865d15148af62351454c21458b6aae673433a2fa320e67","data/sentence_break_value_to_short_name_v1.rs.data":"48920154e51d12e5e3fae99769a32b2058bef5b8b99a7dd5203265f737208d6c","data/sentence_terminal_v1.rs.data":"d26f9d99ba8078ddad4386f2be0c87852635694fb8b456a5577fdec828ae5a91","data/soft_dotted_v1.rs.data":"2eca02f8ae86434edace3e30fabf41dfdff803f4bde8f0e4236801759f494e0b","data/terminal_punctuation_v1.rs.data":"520cd4e1e9a7218e3db2bd762ecde59a10ff698c783c6a50f9e3b9249ba08f6c","data/unified_ideograph_v1.rs.data":"0b44000b1e146c3a92f5033db2f72090027612ea6de198f4ff6985318f0dd6b9","data/uppercase_v1.rs.data":"8e23f9eacdb569853bb6edd892d402de9ed2da3f73b3925f00a2765c7f1c59d0","data/variation_selector_v1.rs.data":"3b677afce4ae13cb174f6d5e67df2ec22e0095eac16697b968cfb8a4843535d0","data/white_space_v1.rs.data":"e7fd6cde3c359ff843a10531e94f09ad85902b3d96b2f8beca14ecc5c6476461","data/word_break_name_to_value_v2.rs.data":"79f8dfc115b7165a2c80bceee68223ccfdd80bbf9e1658c897ee0dcdbb652f15","data/word_break_v1.rs.data":"a70efb1c7aac589984d483b2ebbd0e8aaa1c2fee1c67d41fb2e987cf02b05db8","data/word_break_value_to_long_name_v1.rs.data":"54eee5f4445c49f2b5817c8c57dcab67a73ee085d6e5e4779acffa34dd84150f","data/word_break_value_to_short_name_v1.rs.data":"e7fa8d5e7d7eb4c54915436d749a9f739bc98225baaf3f0d0f0f1b625d08cd56","data/xdigit_v1.rs.data":"fba7c715a5e91ef2ecdbd84e6e4c3cd6335c1a9ab584e987cea08d1285f4de93","data/xid_continue_v1.rs.data":"6588e46ffe92c684042633e78401145705d67e4c89d92038ea15af06853ac96c","data/xid_start_v1.rs.data":"a7cfd93ea4d1c0f94a0a075a75d4839cd2bf0a0a4437f3993d7362602b655bb1","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"9b38ec2c9b296561bb929dee1b04dea285c75b1ef77bc85707f1f33bf01ba90d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"cfb68f391915b095229635728f09fe288616f5672bd443705040026ba5a088e7","Android.bp":"babf902ab58a00b215a28bd50edf6a38f332bd8c05908bdedc3ad53c3068a9cc","Cargo.toml":"4b75bf2acc417d78dfe14e537850049b73e875f57ca86a39b5b31da9c2347315","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"84e75914ddc4d68f87227494689cd2748a0fa68a958bce9310a5911ee3fda0e5","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"146de90fddb3f2e1196f285c63503d0d52f817222974d57a7c49811fc0dd5170","cargo_embargo.json":"1cffa4d8a57ef965ce882ada3f4e4c228a32243d3dcfeb0748b313c82e136f9f","data/alnum_v1.rs.data":"fdc5c0a51b7810df925b76baf6ba849aaebddbc18e9cb9c8c795b4697fd56a68","data/alphabetic_v1.rs.data":"8cb254bb527a7a36932943dd63c5515dc6acd1336a22c2e6751a9cb4855f9ca3","data/ascii_hex_digit_v1.rs.data":"e76af21874b6fcf517a5afa14729a5457e68b4564ab7e0fc8f7041848baa1b4f","data/basic_emoji_v1.rs.data":"fd9ae540e2402e90fbd1d0e98c63b7d7db6d497a511ef0d3712193d6e360971e","data/bidi_class_name_to_value_v2.rs.data":"0d0af557d7fdf8abbe71b1c2d379fc0e64ebd12a6931c90685a0d174d911723c","data/bidi_class_v1.rs.data":"4a91d7d22d4242148b1a58f7a064e353bd7068d091a932efa2f7ded7087701f9","data/bidi_class_value_to_long_name_v1.rs.data":"012f254cd7a7b569596def0abbc4ffa027dbdad83745cf7f7e98983b2ac94359","data/bidi_class_value_to_short_name_v1.rs.data":"9eb8a6ad92398de7813d030a75a33b6c3768df43c4f3b656eef2ae19e07cf682","data/bidi_control_v1.rs.data":"5b9e655dc4b0839817e0df2368287ded0187c89784ba980d5558b4114276d3a0","data/bidi_mirrored_v1.rs.data":"556fbd3b8a1131872903564ad1df546fee1207314c35ec921912084550e0b87f","data/bidi_mirroring_glyph_v1.rs.data":"4a6614280c38547752bd2a87b7f52ee80dcbea3863a0e396b60ce9e5b914d405","data/blank_v1.rs.data":"6b8b1600feefee3200e35eb2713db886faba27f75a77841a6a6379b5678fa03d","data/canonical_combining_class_name_to_value_v2.rs.data":"0f23d1ebda29dbc9b27385991c5a007eef1f73db6a530a3c3ab20cd9dcfc487f","data/canonical_combining_class_v1.rs.data":"93ad6cf76c4a09c8e2006e2728249494c5e11c99a6fb69d0d63cbad3f238207d","data/canonical_combining_class_value_to_long_name_v1.rs.data":"f71a113f0648872f4bce36ab62e584b0f1a3abad7840fee7b7acad10fc717c3d","data/canonical_combining_class_value_to_short_name_v1.rs.data":"b3342bb28865fac49145feae7edb8b0fbb077bf12da029d9076121aacecfacb0","data/case_ignorable_v1.rs.data":"3aa0ea01d795bcd775b96dfa11a0ed866b671d6cedd1b9877eab2786e5f2d560","data/case_sensitive_v1.rs.data":"0bd37766c5b154bbbce78a3158fab6017e3a92ec4d5facf214442341c5be054c","data/cased_v1.rs.data":"ddc5ce3160f590c11efa1068d9fa02b004c4b1179f95264b1636dc2203f96821","data/changes_when_casefolded_v1.rs.data":"e0c55a12f337dbccb1ad4488d83bd7f5f39f015af6690646f2ce562f2318f17a","data/changes_when_casemapped_v1.rs.data":"df37b2382feb3246152327acfcfc66c43e9147f34f63327954a2656807608a56","data/changes_when_lowercased_v1.rs.data":"df245a0eb48e47a7650052ffe28c1b40dd223e9c710da57a7807c15e7fccdd03","data/changes_when_nfkc_casefolded_v1.rs.data":"971285feb01d9286b4b422aaca779998b48e1bab208cd6daa788d9ee658cc14e","data/changes_when_titlecased_v1.rs.data":"5fb2803b520422c65cc5a2dd2e747ec2f2b788a66a32c09dfbc4065c3dc0a3c0","data/changes_when_uppercased_v1.rs.data":"59a69ce076ba4b2be47eb49010f02653a8898c4550496e71758e5154a04340ce","data/dash_v1.rs.data":"432955129c9079a83394dde62cf85332f6d72050cc71835e1b5b451cd66d2076","data/default_ignorable_code_point_v1.rs.data":"36c6e07bbf68478a602782efbdcc2f09b232a03a51632d116b12ad6fad3da595","data/deprecated_v1.rs.data":"8d65c3dfa0113ff3cb2ded3db90fd57d9c1df6c73ac237d295fa707a3932f950","data/diacritic_v1.rs.data":"78a3a5fab1a20d84496e8af1a40d8595250026dc3212a88927a515e11c9460f4","data/east_asian_width_name_to_value_v2.rs.data":"4f018ec75fd07c69cda518ad59eb36fd4061ba1e19daf6ec2181f57693f287ee","data/east_asian_width_v1.rs.data":"e1d4d259fa3d7106864b306da9ca48b1639189fb80527f7cf8985db65a145601","data/east_asian_width_value_to_long_name_v1.rs.data":"6955b4639641ada4ced7f1193a5c4863336681426c24da0e465866e57bf5f9d2","data/east_asian_width_value_to_short_name_v1.rs.data":"943186ec75c8349f4450e3094e15cfaf496ff8796b413195654b18877ea8ef7c","data/emoji_component_v1.rs.data":"b026ae6dc1991d6feef7241e5c940d935ccafed7fdbc91fb28d1ed1e170f3c37","data/emoji_modifier_base_v1.rs.data":"9fd7c61b0c2926e75536e307675449f8121bb4309652b74750d33a188b5d1651","data/emoji_modifier_v1.rs.data":"257d686ebc5d3d4a74fe7e94f16452fa4e718536c12888bef1e206b552196414","data/emoji_presentation_v1.rs.data":"be90d6839c6652887899a426f46930931f85ac3a78bb331f012f781a6c79e2e3","data/emoji_v1.rs.data":"01511caded39c13902f52e9d9ab92934502822f14621a98b361b7ae67e993de6","data/extended_pictographic_v1.rs.data":"e05dbc0d4c5dc3503c29cc5a610454407cdbd84c26ae382d993e4a67ecd218fe","data/extender_v1.rs.data":"9e1bc0efd677e51de2b565e3d4192d8df2661c4e60478a0974c4485a72d7134e","data/full_composition_exclusion_v1.rs.data":"019af0dac78aa58a296ef686c884144d7082e75e55698b7e793d083d59e90d81","data/general_category_mask_name_to_value_v2.rs.data":"71160a0dfc5fa071e693e63c320bfa59e2df5f923eda250634629ab868dcb057","data/general_category_name_to_value_v2.rs.data":"42fc51755d66d66c5301919d0ac922142d64fa1ddb54f68754c188bce63b6908","data/general_category_v1.rs.data":"8a73378551baf0be1b442e170e00c4415a847761920247e3a0ec4c1ed04ccdb6","data/general_category_value_to_long_name_v1.rs.data":"095e7586b98662f09d5f59666fe1a31dd951c009acad7fb6dfa0954d6bf5004e","data/general_category_value_to_short_name_v1.rs.data":"e92d39ba56916a326eea094c0c2a261a447adcc1075668bff69a2e4ac429c18b","data/graph_v1.rs.data":"28a6773d65d35208a3770ca7406c9f844ee3f62d351cacfdc0fbf79358d1e3bc","data/grapheme_base_v1.rs.data":"1bb26ed0b8c7af04d47adea9f35a689b697fa86a846ffc415f5f8d4bdac1580f","data/grapheme_cluster_break_name_to_value_v2.rs.data":"5661eed75d895928c68c56eee2a2fb12409fc714c0f0f49076cf20990f3189d1","data/grapheme_cluster_break_v1.rs.data":"e226963f246ee9ac3b18f80f4edfa8183dccd31acfde0f8adfe970b935293e27","data/grapheme_cluster_break_value_to_long_name_v1.rs.data":"b882b9cb77b2726b8fe05d7a04e6b05e3052461070009bb8e67a5d3bdb0018d0","data/grapheme_cluster_break_value_to_short_name_v1.rs.data":"4812d716d14cb85ab5e85e18cd0d4541712303614119e37869bd0022fd2f25c5","data/grapheme_extend_v1.rs.data":"8103b0d47edd2a0fdf2bbe122f81dd2de4c05f1e5db05a11a8e24cb35f347dfc","data/grapheme_link_v1.rs.data":"382a16b8ddae94c8c2da798f5380f2bde4def02d16bacf03ba96bd659815ddca","data/hangul_syllable_type_name_to_value_v2.rs.data":"5051943e4051ae11f6e33548d09a7817a4e270a3e3131850af402a804741bbf4","data/hangul_syllable_type_v1.rs.data":"6096f4d7879a59cc514e7487a2c185427f28c538cceeaf7678b2d9a4234f8886","data/hangul_syllable_type_value_to_long_name_v1.rs.data":"2f1252eaa0d03f8aa5765f3dd423bedbb42f3903b4da3cc3055b2746d92170ee","data/hangul_syllable_type_value_to_short_name_v1.rs.data":"17f5e92a5ac20d8007a70b261fb827450f35791a035a4ed9fcedd451b0459864","data/hex_digit_v1.rs.data":"d5ddc07be8ad649eba703190acc6faf46b71c1a47178c8a36ab8d32288633766","data/hyphen_v1.rs.data":"8cbe474974ef8c6a54e89a963fdfc8e7320c77e37caf12651f8ce011cf86b291","data/id_continue_v1.rs.data":"11a954344e643cb6bea225888cf89aa5706224d27affb31eaddfeea1670b5cf9","data/id_start_v1.rs.data":"e376cd94ee903d885085aa852c4533f6b665f2b335860002f7ab607b67c4d432","data/ideographic_v1.rs.data":"25e0d44d5d8f473159f0cc1335aff8543850ea8ab778485b48e788fbf7c514c1","data/ids_binary_operator_v1.rs.data":"7a40aa3d26037dbf795023bd9b3b457d6ee425f4cba60db50ee495a127a5206b","data/ids_trinary_operator_v1.rs.data":"9f13a0502f513093c5e3ebd157a9c49a0f9d8824ebfae779177f6ed56e510d85","data/indic_syllabic_category_name_to_value_v2.rs.data":"2ed585be79538f3f5ab25986227ecf2332973510339148b418c7ec45b9a10f71","data/indic_syllabic_category_v1.rs.data":"6b59898d840f1ac27e49add9bc369ed93d331b48a3958cb27bc25781726b8301","data/indic_syllabic_category_value_to_long_name_v1.rs.data":"a95d7ba8ffee6eb37f83ad27eed26ab295be1d8b5d008714782e4f6a5181437d","data/indic_syllabic_category_value_to_short_name_v1.rs.data":"4544486f49adee390f661a2868474d1b17b2c129161fb263f361de2f3756671b","data/join_control_v1.rs.data":"5900234bef657cb6f91ad9464c11857a947aebd3f8319fca84f23517a64807c3","data/joining_type_name_to_value_v2.rs.data":"5c58788220c7bc08aa398366dc90c80ea2dfaf54642df98556cb64fc1a53ab7a","data/joining_type_v1.rs.data":"315e015611477a26d1f7497052759c33821dc606f15c312a35e9e94c7c661256","data/joining_type_value_to_long_name_v1.rs.data":"08a9582120d62cd80f29e6485b7ab842a1a315896735ce5eec0de3cb46672ea4","data/joining_type_value_to_short_name_v1.rs.data":"7b3b8ade7485ba115eb811b1a65b891abd53d6f8b2c4adc28fba40a76cd31951","data/line_break_name_to_value_v2.rs.data":"06a0868893e5a5b1fe5a6d1a2f6e05dd9a9632219b2f3cc989e77788334b10d8","data/line_break_v1.rs.data":"d927b223ae5afc6c82751c19dca04cd31ae621cb6cbca27e505370b43acf75f5","data/line_break_value_to_long_name_v1.rs.data":"1e372e849076e67c5d16ba1f9b0642c5c97a75979a003ac78d5d0ede4e2db362","data/line_break_value_to_short_name_v1.rs.data":"6990e48a7f1ab0df48c0486981f789c7011cb8c4b231830a9dd35f3cd7f324b1","data/logical_order_exception_v1.rs.data":"016579df630fd8fc082b31993f663f727e8b46ebaea78caa940bd37716ca43b6","data/lowercase_v1.rs.data":"fecde2d6cd1d70aaf6fd1e5303e0f6d724cc6c456bf758f233c6703aab3ae07a","data/math_v1.rs.data":"18cab6132f894ac765bd914926427bc2b9d5badb9b1f918ac5f1587efebffce9","data/mod.rs":"b2b27fb573d1b59746c3694732795012d172a71babe36e9ca6ba08912b3fcb80","data/nfc_inert_v1.rs.data":"de476765ed3c5b49ab85f2bf1aaafd632e6590ba819236887efaeb3ad53853b4","data/nfd_inert_v1.rs.data":"2576b765fa7b2a561ab6e789848ecac80b59551f2b64e3d81e5acbdcae3d6ef9","data/nfkc_inert_v1.rs.data":"0a78a02451d6d766138a951e779ba4bf4dd4dda16fb3c8cb8e9e405a6e4dcc5f","data/nfkd_inert_v1.rs.data":"76128d55bf6c4c2eeaa4116fd3a96f6790b1af217831ff55f6d7b09bb6533099","data/noncharacter_code_point_v1.rs.data":"dec900b82c2beaff42b2f13ec3be7baaa457bc65af569d660ee56382875de7a1","data/pattern_syntax_v1.rs.data":"8119a3c88fb2fca0687b1d2d9d656a30f337314f286bcadd54203c1482dfcb4b","data/pattern_white_space_v1.rs.data":"3488a7e2b5dd3520804240721b2945b8ae9a8db3e8d2cb00898866a3371b222f","data/prepended_concatenation_mark_v1.rs.data":"6da697d0b97f8a4621c030fac95c0d70ef49d54588d97aacf98af71b035174f7","data/print_v1.rs.data":"d2ad0a29e32352be4cbd3716a84798635e67a6450fd58f77ea1c61121537da29","data/quotation_mark_v1.rs.data":"d7228475ce06789455df2813f4daed6481e88c3e9e45f062ed579227c901fe23","data/radical_v1.rs.data":"a3aa192e450c32f05389ba2491b9b61e9027a2aa07f57c60c4a043fdefd719de","data/regional_indicator_v1.rs.data":"7d8e465fd5929b27528448c223553a9204be10bae199627a1635962fd546fc92","data/script_name_to_value_v2.rs.data":"096ab0f9a055d2494018cebe910f425f890f29a30219c9a5e4dc753c53336e09","data/script_v1.rs.data":"f6132ce4c856e56dc6730ec9d3858644d77ca9c9517db552c3f1682bcc46629e","data/script_value_to_long_name_v1.rs.data":"e904d44003fd087e33a2a20ab80dd45371b1262cfcab5790365f5a5d6050f83a","data/script_value_to_short_name_v1.rs.data":"e1485bc9164b1f64ff7b24521ecc976d6c30f0f3161c03c155111b8b1798bb67","data/script_with_extensions_property_v1.rs.data":"79daff836db20354a7dd05607f8438e36aad5b8cf8aca9bb1fd22c807679e220","data/segment_starter_v1.rs.data":"7e0f1eb2e3c09a45756d7c7e55ee82b28327ed3a4e8da70f01fa7e292050a761","data/sentence_break_name_to_value_v2.rs.data":"1f4afee7cc04120cc87ab2be02eb390c8ecd747c6c66180e6d1235f3f22a859d","data/sentence_break_v1.rs.data":"ce99fd9c4857cfc4d82ab5eba42040451147c1f10839763e131b30c49dd64671","data/sentence_break_value_to_long_name_v1.rs.data":"3e02830506b04239aa865d15148af62351454c21458b6aae673433a2fa320e67","data/sentence_break_value_to_short_name_v1.rs.data":"48920154e51d12e5e3fae99769a32b2058bef5b8b99a7dd5203265f737208d6c","data/sentence_terminal_v1.rs.data":"d26f9d99ba8078ddad4386f2be0c87852635694fb8b456a5577fdec828ae5a91","data/soft_dotted_v1.rs.data":"2eca02f8ae86434edace3e30fabf41dfdff803f4bde8f0e4236801759f494e0b","data/terminal_punctuation_v1.rs.data":"520cd4e1e9a7218e3db2bd762ecde59a10ff698c783c6a50f9e3b9249ba08f6c","data/unified_ideograph_v1.rs.data":"0b44000b1e146c3a92f5033db2f72090027612ea6de198f4ff6985318f0dd6b9","data/uppercase_v1.rs.data":"8e23f9eacdb569853bb6edd892d402de9ed2da3f73b3925f00a2765c7f1c59d0","data/variation_selector_v1.rs.data":"3b677afce4ae13cb174f6d5e67df2ec22e0095eac16697b968cfb8a4843535d0","data/white_space_v1.rs.data":"e7fd6cde3c359ff843a10531e94f09ad85902b3d96b2f8beca14ecc5c6476461","data/word_break_name_to_value_v2.rs.data":"79f8dfc115b7165a2c80bceee68223ccfdd80bbf9e1658c897ee0dcdbb652f15","data/word_break_v1.rs.data":"a70efb1c7aac589984d483b2ebbd0e8aaa1c2fee1c67d41fb2e987cf02b05db8","data/word_break_value_to_long_name_v1.rs.data":"54eee5f4445c49f2b5817c8c57dcab67a73ee085d6e5e4779acffa34dd84150f","data/word_break_value_to_short_name_v1.rs.data":"e7fa8d5e7d7eb4c54915436d749a9f739bc98225baaf3f0d0f0f1b625d08cd56","data/xdigit_v1.rs.data":"fba7c715a5e91ef2ecdbd84e6e4c3cd6335c1a9ab584e987cea08d1285f4de93","data/xid_continue_v1.rs.data":"6588e46ffe92c684042633e78401145705d67e4c89d92038ea15af06853ac96c","data/xid_start_v1.rs.data":"a7cfd93ea4d1c0f94a0a075a75d4839cd2bf0a0a4437f3993d7362602b655bb1","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"9b38ec2c9b296561bb929dee1b04dea285c75b1ef77bc85707f1f33bf01ba90d"}}
\ No newline at end of file
diff --git a/crates/icu_properties_data/Android.bp b/crates/icu_properties_data/Android.bp
index 6ea7693..406903d 100644
--- a/crates/icu_properties_data/Android.bp
+++ b/crates/icu_properties_data/Android.bp
@@ -32,6 +32,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_properties_data/cargo_embargo.json b/crates/icu_properties_data/cargo_embargo.json
index 0f74d8a..ba56120 100644
--- a/crates/icu_properties_data/cargo_embargo.json
+++ b/crates/icu_properties_data/cargo_embargo.json
@@ -7,5 +7,6 @@
"icu_properties_data": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_provider/.android-checksum.json b/crates/icu_provider/.android-checksum.json
index 35c08b3..6502bf5 100644
--- a/crates/icu_provider/.android-checksum.json
+++ b/crates/icu_provider/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c23b940bbf6db32a44f663bbd2ebc3f6b37ff1febf4df5107980962b6bfadc33","Android.bp":"90a9fcd314540e2bbd51a6ff8be5169bd82fb2f7b834d2af7f38581fd9ffb398","Cargo.toml":"3e35fbc3717d067539ddd4bcd9b15e5971a7819c8ad38bc0feb5ae789a50e25a","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"aaf92c9943745bd8be778fea3a0c623d0572a5c7bf29bbb816a3cf37c0d444b7","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"afa1f90b419fdbff5c47c409a137e9fca1571bb18518640925e20fec84d6b64a","benches/data_locale_bench.rs":"5283516b6157f67502bfd3d4fc9cc5accb7a2ff80ae1f44261c5b1046ea526bf","cargo_embargo.json":"2c0cfe3681fd5cb5f37368a867e83be99d291fb72d41b957747825ed635ba8a2","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/buf.rs":"94f196d3f9e51dd06a0407b4d0f89b5d1c499d1b58ec24430cf4068963ed7b37","src/buf/serde.rs":"ff06957951c38acaa1ad262cb25303e898279e1eee00caa7ef1eccc60b9954e9","src/constructors.rs":"f018f8879dd74dbd44ff2b5126e68cff3e6220b13f6532cdc4526b9808b1d233","src/data_provider.rs":"d3323cffa5231d91b6d8cd4a56baab10148a8da7c547d7b67ca26fc3e9f49a2e","src/dynutil.rs":"016f98222139bfa616202d220d2d7499e25f562689122116f7e8a4913e03f338","src/error.rs":"5db7b983c66c371e8363dcc689b4ad7c52fa47b995f5387b774cf81cbeec226a","src/export/mod.rs":"0e8604a79dea8affb197aaddae621ddbefe82a94908caf6820bff269e42d200f","src/export/payload.rs":"7f62596eba04db5a8142d2adf32f2d8c9532332b7bd4bf8da76742ffcc4cfee7","src/fallback.rs":"ab87312928c7924f1d6dcd8b65be1d42ebd2099c7428833ce3077258cb7f1294","src/hello_world.rs":"59b3905f25d0f2eeb170437f220ebfea06b451bd3bb3ae476eb36fe705bd137f","src/lib.rs":"f4c79d74be620bf314d25a2ed142ca48a5390983b5139e618f5ced154d12b85d","src/marker.rs":"ff20abc47cf667096d8152b88c6a0f86589f9b24d4c5677e2e611c61ac890bf3","src/request.rs":"9b7144dc143f76df9660bc9ebd0b9ceeb7b5aeb41e90f53e1290799d0a024543","src/response.rs":"907e84d2b4a333c3c6805d2ce847609b86593311c23644ae2d85e31110d3ff59","src/serde_borrow_de_utils.rs":"e4dedfc650be77d214398cdd4a6cda48faadd803b2e48838a56a69f19ab80e01","src/varule_traits.rs":"3e9e35e64ba62362b0223a97614724216092f1caa9c16feedb11a60112a5b60d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c23b940bbf6db32a44f663bbd2ebc3f6b37ff1febf4df5107980962b6bfadc33","Android.bp":"8f1a2cb67474edfe654f46ea72f64e7b1aca5394a1fec5e1ba8b9c5fe1d30cd9","Cargo.toml":"3e35fbc3717d067539ddd4bcd9b15e5971a7819c8ad38bc0feb5ae789a50e25a","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"aaf92c9943745bd8be778fea3a0c623d0572a5c7bf29bbb816a3cf37c0d444b7","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"afa1f90b419fdbff5c47c409a137e9fca1571bb18518640925e20fec84d6b64a","benches/data_locale_bench.rs":"5283516b6157f67502bfd3d4fc9cc5accb7a2ff80ae1f44261c5b1046ea526bf","cargo_embargo.json":"3f03b9125aa6a7fcc9ee217e5caa4951a36e90ff4d31456de170df126ab9a6b4","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/buf.rs":"94f196d3f9e51dd06a0407b4d0f89b5d1c499d1b58ec24430cf4068963ed7b37","src/buf/serde.rs":"ff06957951c38acaa1ad262cb25303e898279e1eee00caa7ef1eccc60b9954e9","src/constructors.rs":"f018f8879dd74dbd44ff2b5126e68cff3e6220b13f6532cdc4526b9808b1d233","src/data_provider.rs":"d3323cffa5231d91b6d8cd4a56baab10148a8da7c547d7b67ca26fc3e9f49a2e","src/dynutil.rs":"016f98222139bfa616202d220d2d7499e25f562689122116f7e8a4913e03f338","src/error.rs":"5db7b983c66c371e8363dcc689b4ad7c52fa47b995f5387b774cf81cbeec226a","src/export/mod.rs":"0e8604a79dea8affb197aaddae621ddbefe82a94908caf6820bff269e42d200f","src/export/payload.rs":"7f62596eba04db5a8142d2adf32f2d8c9532332b7bd4bf8da76742ffcc4cfee7","src/fallback.rs":"ab87312928c7924f1d6dcd8b65be1d42ebd2099c7428833ce3077258cb7f1294","src/hello_world.rs":"59b3905f25d0f2eeb170437f220ebfea06b451bd3bb3ae476eb36fe705bd137f","src/lib.rs":"f4c79d74be620bf314d25a2ed142ca48a5390983b5139e618f5ced154d12b85d","src/marker.rs":"ff20abc47cf667096d8152b88c6a0f86589f9b24d4c5677e2e611c61ac890bf3","src/request.rs":"9b7144dc143f76df9660bc9ebd0b9ceeb7b5aeb41e90f53e1290799d0a024543","src/response.rs":"907e84d2b4a333c3c6805d2ce847609b86593311c23644ae2d85e31110d3ff59","src/serde_borrow_de_utils.rs":"e4dedfc650be77d214398cdd4a6cda48faadd803b2e48838a56a69f19ab80e01","src/varule_traits.rs":"3e9e35e64ba62362b0223a97614724216092f1caa9c16feedb11a60112a5b60d"}}
\ No newline at end of file
diff --git a/crates/icu_provider/Android.bp b/crates/icu_provider/Android.bp
index 300d28e..ad2e04e 100644
--- a/crates/icu_provider/Android.bp
+++ b/crates/icu_provider/Android.bp
@@ -42,6 +42,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_provider/cargo_embargo.json b/crates/icu_provider/cargo_embargo.json
index ccc0649..30210a0 100644
--- a/crates/icu_provider/cargo_embargo.json
+++ b/crates/icu_provider/cargo_embargo.json
@@ -10,5 +10,6 @@
"icu_provider": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_provider_adapters/.android-checksum.json b/crates/icu_provider_adapters/.android-checksum.json
index 8da08d0..90fdcbe 100644
--- a/crates/icu_provider_adapters/.android-checksum.json
+++ b/crates/icu_provider_adapters/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"458381216c46e25637f9cdc05f8822aab2fc288b61d4d4a79b149fbe73824f6e","Android.bp":"9539253a80d532669a40a0a2af98534a39fadd0a29abeb5698bdaafd1525e735","Cargo.toml":"e13483c89bca04570fd70dd6ace9a463b09836626ab95b12fdde853e966a4ad7","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"961d39a0b5d161d059e52066f7baacdacf14bb1f22aa99c975dc2340f0af5b45","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d2be127f02e7ecdedb6749af17bb3cda5255c6b8fedff6d6c44ea1512ad9f552","cargo_embargo.json":"16143b4a3b2b7e237c4df336ea0f1acaf8b933191c4edf5c60465abef731cb71","src/either.rs":"5785380e15bfdebbee65c1d772853dfe33572f0a2545f7b517fd9a9bbacf2027","src/empty.rs":"596d100b2bc681abc873ee9b5d782ed6fa2daac5b6ace250d4b52f67353b639d","src/fallback/mod.rs":"907bcf61c2db090183c2f5e9729c3d05f3f6920ea6ca63c7aa9fde6f4dc525d1","src/filter/impls.rs":"ad28e553c45dba78f293eabadff3450f2a0032f04a104de5bdc10f4efba2d954","src/filter/mod.rs":"b18151a4eaaa8ab5e91a2abacd10c8e1c4e23fc4b908cb2698b1fd35f4f3c324","src/fixed.rs":"6d2acd1dd30ee3cac4b90616885ac2d258a8c6967d6694465817b1306ea96bba","src/fork/by_error.rs":"2e898d7601a3fe1491a763283076480fe26261e54a0be0e66a6eb57dd784ea74","src/fork/mod.rs":"b878673dc439b92e082939bf2ea6eada4a537424c158070d4c0447a2ac5adb6c","src/fork/predicates.rs":"107da54d9dc9671ab6a2fe054d914c22957fca141dd44d493229bafaa4e61541","src/lib.rs":"99ee38732723c4cc1a90b60eb11d8c2a0fb42238368806c72e4b597597a53c76"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"458381216c46e25637f9cdc05f8822aab2fc288b61d4d4a79b149fbe73824f6e","Android.bp":"fc2326c6fe6909251da1fcc60a232a0a22216a9ad090b78300796cded20b35ef","Cargo.toml":"e13483c89bca04570fd70dd6ace9a463b09836626ab95b12fdde853e966a4ad7","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"961d39a0b5d161d059e52066f7baacdacf14bb1f22aa99c975dc2340f0af5b45","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d2be127f02e7ecdedb6749af17bb3cda5255c6b8fedff6d6c44ea1512ad9f552","cargo_embargo.json":"8f0124dd7aa24024f315985571b34a18127946f7599074a4a281123feb6a1195","src/either.rs":"5785380e15bfdebbee65c1d772853dfe33572f0a2545f7b517fd9a9bbacf2027","src/empty.rs":"596d100b2bc681abc873ee9b5d782ed6fa2daac5b6ace250d4b52f67353b639d","src/fallback/mod.rs":"907bcf61c2db090183c2f5e9729c3d05f3f6920ea6ca63c7aa9fde6f4dc525d1","src/filter/impls.rs":"ad28e553c45dba78f293eabadff3450f2a0032f04a104de5bdc10f4efba2d954","src/filter/mod.rs":"b18151a4eaaa8ab5e91a2abacd10c8e1c4e23fc4b908cb2698b1fd35f4f3c324","src/fixed.rs":"6d2acd1dd30ee3cac4b90616885ac2d258a8c6967d6694465817b1306ea96bba","src/fork/by_error.rs":"2e898d7601a3fe1491a763283076480fe26261e54a0be0e66a6eb57dd784ea74","src/fork/mod.rs":"b878673dc439b92e082939bf2ea6eada4a537424c158070d4c0447a2ac5adb6c","src/fork/predicates.rs":"107da54d9dc9671ab6a2fe054d914c22957fca141dd44d493229bafaa4e61541","src/lib.rs":"99ee38732723c4cc1a90b60eb11d8c2a0fb42238368806c72e4b597597a53c76"}}
\ No newline at end of file
diff --git a/crates/icu_provider_adapters/Android.bp b/crates/icu_provider_adapters/Android.bp
index 3475424..bd954e4 100644
--- a/crates/icu_provider_adapters/Android.bp
+++ b/crates/icu_provider_adapters/Android.bp
@@ -37,4 +37,5 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/icu_provider_adapters/cargo_embargo.json b/crates/icu_provider_adapters/cargo_embargo.json
index 6e7b85f..8e5cc25 100644
--- a/crates/icu_provider_adapters/cargo_embargo.json
+++ b/crates/icu_provider_adapters/cargo_embargo.json
@@ -2,5 +2,6 @@
"ramdisk_available": true,
"recovery_available": true,
"vendor_ramdisk_available": true,
- "native_bridge_supported": true
-}
+ "native_bridge_supported": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/icu_provider_baked/.android-checksum.json b/crates/icu_provider_baked/.android-checksum.json
index 18e64a1..e5197e7 100644
--- a/crates/icu_provider_baked/.android-checksum.json
+++ b/crates/icu_provider_baked/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"65a5c065e7d0ff27a6de50df98dfc81564311c9710a512ffbd902a73c6e74d5b","Android.bp":"30d616c1c4d60ac2c531e45a002134ba633e18ee98484a1d7c2c7bf27808bdfc","Cargo.toml":"0a29f26f1b01f05e983cd95a3a986b26f7ef0924f10c945ac0c27a1ad5aef4b4","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"425c988c71ea00dd5268f811431ec3516e0f3cdf40405f53f215232c980cb32d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e0a9ed504caaecebf1909420bd3ddc4361acd13255dc1c919ed50972079fd895","cargo_embargo.json":"d7b596eca92acce627e93c831f18aba66aa77baf137f25aebd659921c3d111e4","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/binary_search.rs":"0f566e8100f4b92250d3cbda94f2dcb2f1774f032f10a37f47bc59547be3d3d9","src/export.rs":"9b04a17783df8ddd9fb7113b586089cbf06caf81a4382ad257ffea6d238938a8","src/lib.rs":"5d2d00a9c5d311c414287f9f9f08134fdd72b87d58d111138d648a815146545d","src/zerotrie.rs":"2f6c56d3ce333e11b6ac1a07ebfc7ef61b961cfb5ae2f766dcf6f2f9edbe276c","tests/data/hello_world_v1.rs.data":"1188d13509e116783e47d77926a1ff2e199981d586f41644dfd4f35087fd05f1","tests/data/mod.rs":"ec6c0b3f607b711c7b0a40dbae8696be4104ad3ed1d0616ef0d971aee8c419d1","tests/test-baked-source.rs":"05d0175db0e54cad0b11aea741a800bacdd7dd1443bea17b1a9a3a903e24086c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"65a5c065e7d0ff27a6de50df98dfc81564311c9710a512ffbd902a73c6e74d5b","Android.bp":"1779f57bb0d55ed16840fbe144786e875665b3454548c8eb89f1eeb15d0f5683","Cargo.toml":"0a29f26f1b01f05e983cd95a3a986b26f7ef0924f10c945ac0c27a1ad5aef4b4","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"425c988c71ea00dd5268f811431ec3516e0f3cdf40405f53f215232c980cb32d","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e0a9ed504caaecebf1909420bd3ddc4361acd13255dc1c919ed50972079fd895","cargo_embargo.json":"8ff4ee2bfd2774b239e24c23fdf75d8f6c45f52926cb2e7333f1faea136b4dbd","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/binary_search.rs":"0f566e8100f4b92250d3cbda94f2dcb2f1774f032f10a37f47bc59547be3d3d9","src/export.rs":"9b04a17783df8ddd9fb7113b586089cbf06caf81a4382ad257ffea6d238938a8","src/lib.rs":"5d2d00a9c5d311c414287f9f9f08134fdd72b87d58d111138d648a815146545d","src/zerotrie.rs":"2f6c56d3ce333e11b6ac1a07ebfc7ef61b961cfb5ae2f766dcf6f2f9edbe276c","tests/data/hello_world_v1.rs.data":"1188d13509e116783e47d77926a1ff2e199981d586f41644dfd4f35087fd05f1","tests/data/mod.rs":"ec6c0b3f607b711c7b0a40dbae8696be4104ad3ed1d0616ef0d971aee8c419d1","tests/test-baked-source.rs":"05d0175db0e54cad0b11aea741a800bacdd7dd1443bea17b1a9a3a903e24086c"}}
\ No newline at end of file
diff --git a/crates/icu_provider_baked/Android.bp b/crates/icu_provider_baked/Android.bp
index 86bb2f0..978eba1 100644
--- a/crates/icu_provider_baked/Android.bp
+++ b/crates/icu_provider_baked/Android.bp
@@ -37,6 +37,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/icu_provider_baked/cargo_embargo.json b/crates/icu_provider_baked/cargo_embargo.json
index 666bd4c..ec4836d 100644
--- a/crates/icu_provider_baked/cargo_embargo.json
+++ b/crates/icu_provider_baked/cargo_embargo.json
@@ -7,5 +7,6 @@
"icu_provider_baked": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ident_case/.android-checksum.json b/crates/ident_case/.android-checksum.json
index b8fa6ce..2f644f9 100644
--- a/crates/ident_case/.android-checksum.json
+++ b/crates/ident_case/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"be4b8c31ba41077a5b33187f0f28690d16750f3e539964cf522fc7c1455fe09c","Android.bp":"2f792684f58b8c91c1b96488b2602ad2e1aa6075a68ec35472fe4c7535d82121","CHANGELOG.md":"fca2e6c967e4ab17c3cbc9fd97dc9d7b796709d9287149911a05a21149602e20","Cargo.toml":"0b29eb5e149a2759a4147e0d0d0d6b3d60dc3c0c23931224a2846a41c46137c9","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"6f7830f72e1e0b30151e0c8e12caecaa66affe73a8d8b672c8d9ec2c2059eaeb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9e9378bb9cf3188a2753f5bcabd515de17d7eb92b29cc12acdaae1e1511a5bc1","TEST_MAPPING":"4d8e9ad78779e979203fce22fc030d24edb2791bf29b4ef2c90f8f57c11319b5","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","patches/LICENSE.patch":"ed005f1812a229a94f9bc3f7c4c15913f719e05b464d61a146c34286a64f9ba7","src/lib.rs":"032de4435da8dfaad3aaf06d1f3ea03ab4d0e57678be34c06cdd0d024394bdeb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"be4b8c31ba41077a5b33187f0f28690d16750f3e539964cf522fc7c1455fe09c","Android.bp":"b25221f27559e1672ee6ddfa7899912cc3d55a403ea83c2395305f6ef12aed5b","CHANGELOG.md":"fca2e6c967e4ab17c3cbc9fd97dc9d7b796709d9287149911a05a21149602e20","Cargo.toml":"0b29eb5e149a2759a4147e0d0d0d6b3d60dc3c0c23931224a2846a41c46137c9","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"6f7830f72e1e0b30151e0c8e12caecaa66affe73a8d8b672c8d9ec2c2059eaeb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9e9378bb9cf3188a2753f5bcabd515de17d7eb92b29cc12acdaae1e1511a5bc1","TEST_MAPPING":"4d8e9ad78779e979203fce22fc030d24edb2791bf29b4ef2c90f8f57c11319b5","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","patches/LICENSE.patch":"ed005f1812a229a94f9bc3f7c4c15913f719e05b464d61a146c34286a64f9ba7","src/lib.rs":"032de4435da8dfaad3aaf06d1f3ea03ab4d0e57678be34c06cdd0d024394bdeb"}}
\ No newline at end of file
diff --git a/crates/ident_case/Android.bp b/crates/ident_case/Android.bp
index 054c37e..2c81544 100644
--- a/crates/ident_case/Android.bp
+++ b/crates/ident_case/Android.bp
@@ -42,4 +42,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ident_case/cargo_embargo.json b/crates/ident_case/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/ident_case/cargo_embargo.json
+++ b/crates/ident_case/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/inotify-sys/.android-checksum.json b/crates/inotify-sys/.android-checksum.json
index 0871226..5dd137e 100644
--- a/crates/inotify-sys/.android-checksum.json
+++ b/crates/inotify-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0a0d17f5c8dd58b52a4d5e717175f792ede40ce5c6866d61d25492b86f31978b","Android.bp":"4498ed23b85b0c2720a3336d0231f541ebc0c55bf317473ad9dcc8513040cf57","CHANGELOG.md":"88d118b87853320f7d5896fa8112cd883af2e2306f3b2aa1f5ae8c107f7578ba","CONTRIBUTING.md":"903615a28d3cd291969fd64f862320104a0d3b9a195232b842ac43b36fd4db3e","Cargo.toml":"4684ace80ad280b039c83037d40fd90536656e0f3a37c23b7e8317ba279c3c55","LICENSE":"afb92ffad09755e40e596aa5cccdd0ef045dc4f11caa580a9ef3cd1fec27f0dc","METADATA":"250ef9cfe5afd10e6630244159d3e4fe47f9a2aa1f29c2cd9283011065b4f103","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"faabe36b691c2ebf702a265aef76f2f8e4a392f0cc91aee844d10d3ed9868f4e","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"f17d94d95dbc50e0d2830ae4f29e1e947a76f071d6451a20645178f42680b0bb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0a0d17f5c8dd58b52a4d5e717175f792ede40ce5c6866d61d25492b86f31978b","Android.bp":"384bb7f0c6a3c6bdf12551518598e2e57fccf81c53fbf8f5252144c228d97b8e","CHANGELOG.md":"88d118b87853320f7d5896fa8112cd883af2e2306f3b2aa1f5ae8c107f7578ba","CONTRIBUTING.md":"903615a28d3cd291969fd64f862320104a0d3b9a195232b842ac43b36fd4db3e","Cargo.toml":"4684ace80ad280b039c83037d40fd90536656e0f3a37c23b7e8317ba279c3c55","LICENSE":"afb92ffad09755e40e596aa5cccdd0ef045dc4f11caa580a9ef3cd1fec27f0dc","METADATA":"250ef9cfe5afd10e6630244159d3e4fe47f9a2aa1f29c2cd9283011065b4f103","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"faabe36b691c2ebf702a265aef76f2f8e4a392f0cc91aee844d10d3ed9868f4e","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"f17d94d95dbc50e0d2830ae4f29e1e947a76f071d6451a20645178f42680b0bb"}}
\ No newline at end of file
diff --git a/crates/inotify-sys/Android.bp b/crates/inotify-sys/Android.bp
index 274bed0..876ff8f 100644
--- a/crates/inotify-sys/Android.bp
+++ b/crates/inotify-sys/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/inotify-sys/cargo_embargo.json b/crates/inotify-sys/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/inotify-sys/cargo_embargo.json
+++ b/crates/inotify-sys/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/inotify/.android-checksum.json b/crates/inotify/.android-checksum.json
index b79b57c..7a18c26 100644
--- a/crates/inotify/.android-checksum.json
+++ b/crates/inotify/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0d9706ef5d373938da2aa7d4614d1f4dcf9ff6e2371ead9c58d28441687f8618","Android.bp":"791845197a6ab656064a71eb1ca5a1eea1c160885d348b45fa07c84b0def118a","CHANGELOG.md":"6741d951a7b741c56d109f35cd5268006984aa429ff173b278368a8f223b3603","CONTRIBUTING.md":"903615a28d3cd291969fd64f862320104a0d3b9a195232b842ac43b36fd4db3e","Cargo.lock":"66cc74d61ad532389ddd4d973d81aeb058f7d14aaafd3b79b4ef5a4c0bfe4e68","Cargo.toml":"1cf43ba6b2af411a443e6993a852f59ab6398b67937e880c85b18418ae003850","LICENSE":"827af61e671db65655482be1fe90882b836403fdec06746b03bdd935c869c71a","METADATA":"194953508a17b9051ee02011c12e184f10654cd70e6d8d7544196682948cc972","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"125060d459975be258596f1df8386a9f4b4fbcbecbddaebeadbf634e2090de51","TEST_MAPPING":"c0145f928abec387f02c33dfb55b21fa952e5088b5c415d604ee3d8c0fdc965e","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","examples/stream.rs":"57246cc24a83cc6f57bd3be52eaeab2fa799d5006970f1312ebb937ceabc810d","examples/watch.rs":"c833b8f7951536c4e5d5643494487cc6b547472faa8d9851a5fc56b905301adc","src/events.rs":"04d951288983fd669fb0a564c80e4c9020d6597ffadf61e85a185057aaf495ce","src/fd_guard.rs":"1332a0d16207474a81e8e294f2a76e6ff6939f55f6111f6a6ee7e9385d3cc2e1","src/inotify.rs":"a0adfee86e9a7d8f00d1f245ce47c37e4df0e465a7683dfce16983e409273e88","src/lib.rs":"6cb02efc6fcfbb91bf3029f8a03e685ab66139f6fade7837f49eab7411cdb04a","src/stream.rs":"b1e929261395ab0b81efe7a7e70881333b32c4e26872a9090a6c8743bf63da92","src/util.rs":"a64770266cffdad1ec275b331677e3da18ac206820a7682c2b140e0fbab412bc","src/watches.rs":"8033907cbc312ba322e2936dd91876249c9e4749936007b90b505da3130b176c","tests/main.rs":"268d6edfe319dab75b0bc54908995f22f3ebe2becd63d9ba076972b501c24df1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0d9706ef5d373938da2aa7d4614d1f4dcf9ff6e2371ead9c58d28441687f8618","Android.bp":"faf1f5b1da338d6083ec63ec5ef024273682915a80463fa864cc2bfc92532dbb","CHANGELOG.md":"6741d951a7b741c56d109f35cd5268006984aa429ff173b278368a8f223b3603","CONTRIBUTING.md":"903615a28d3cd291969fd64f862320104a0d3b9a195232b842ac43b36fd4db3e","Cargo.lock":"66cc74d61ad532389ddd4d973d81aeb058f7d14aaafd3b79b4ef5a4c0bfe4e68","Cargo.toml":"1cf43ba6b2af411a443e6993a852f59ab6398b67937e880c85b18418ae003850","LICENSE":"827af61e671db65655482be1fe90882b836403fdec06746b03bdd935c869c71a","METADATA":"194953508a17b9051ee02011c12e184f10654cd70e6d8d7544196682948cc972","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"125060d459975be258596f1df8386a9f4b4fbcbecbddaebeadbf634e2090de51","TEST_MAPPING":"c0145f928abec387f02c33dfb55b21fa952e5088b5c415d604ee3d8c0fdc965e","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","examples/stream.rs":"57246cc24a83cc6f57bd3be52eaeab2fa799d5006970f1312ebb937ceabc810d","examples/watch.rs":"c833b8f7951536c4e5d5643494487cc6b547472faa8d9851a5fc56b905301adc","src/events.rs":"04d951288983fd669fb0a564c80e4c9020d6597ffadf61e85a185057aaf495ce","src/fd_guard.rs":"1332a0d16207474a81e8e294f2a76e6ff6939f55f6111f6a6ee7e9385d3cc2e1","src/inotify.rs":"a0adfee86e9a7d8f00d1f245ce47c37e4df0e465a7683dfce16983e409273e88","src/lib.rs":"6cb02efc6fcfbb91bf3029f8a03e685ab66139f6fade7837f49eab7411cdb04a","src/stream.rs":"b1e929261395ab0b81efe7a7e70881333b32c4e26872a9090a6c8743bf63da92","src/util.rs":"a64770266cffdad1ec275b331677e3da18ac206820a7682c2b140e0fbab412bc","src/watches.rs":"8033907cbc312ba322e2936dd91876249c9e4749936007b90b505da3130b176c","tests/main.rs":"268d6edfe319dab75b0bc54908995f22f3ebe2becd63d9ba076972b501c24df1"}}
\ No newline at end of file
diff --git a/crates/inotify/Android.bp b/crates/inotify/Android.bp
index 61f9b03..18aa0c4 100644
--- a/crates/inotify/Android.bp
+++ b/crates/inotify/Android.bp
@@ -105,4 +105,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/inotify/cargo_embargo.json b/crates/inotify/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/inotify/cargo_embargo.json
+++ b/crates/inotify/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/intrusive-collections/.android-checksum.json b/crates/intrusive-collections/.android-checksum.json
index 9f49d37..06635df 100644
--- a/crates/intrusive-collections/.android-checksum.json
+++ b/crates/intrusive-collections/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0bc824bb23028676949e8bb1dd167b5dc01ea6c110b0551cca3b2dccf2a24693","Android.bp":"accb92564ad25b73f86cbf6799c9bda89ef23d3a36af549ecac303c4117070bb","Cargo.toml":"38b2af9b5c5eedd87fdd28fb61e051c197c2bc3ff7d194592267e37516515c5b","DESIGN.md":"4097b89aa53bdb2e94eef3dac9085961696b9a78e4fe25fff9cdbdbbfab8f763","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1eb8f1563980f5b42aa4fa3c437403dea08e58212646852dbf84829a247aee07","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a7195d1334c347d45d192169bcd32bc8d33fe0a8010cee0f7d3c78e4d40b2d60","TEST_MAPPING":"1a1458459b18016ed8a1661f3645520444a1f087cc619dbbee9442c759e97091","cargo_embargo.json":"906b0459617002fe5fd6917e1de04a3870578eef2145167feb102cad79b84212","src/adapter.rs":"dff6f74bf8989051543b97de15cd1e04601790e4f49ec70b2e03e197d3233905","src/key_adapter.rs":"c61c1976c1332097bac0bea151ac28c62f253e6126249ae35c388204a8cd70eb","src/lib.rs":"e4f952f8694c5a210bffd2c809da0412d39e500eb477e3631a94e208cd8ee4bb","src/link_ops.rs":"f53dffffbc6d0eda8c3334cfed0d6034c9d0aaae288ed58b355db48f3638fcc5","src/linked_list.rs":"fb22f90983a6572ff679caf56285e8c3a8fe61903f0420d4974b5410c47a77c1","src/pointer_ops.rs":"694462d80202960003b89a14bb02f5e404537c2b088a16b3a7d5a7b3038a0cba","src/rbtree.rs":"969d9058f91396c120d7985bb552118138504a8831952fccfeb21a8e70dea73d","src/singly_linked_list.rs":"9c99ce5fa707fb3d1113d75c2b8b1e47230924a564313f49b85a1b3fb3cfa4f9","src/unchecked_option.rs":"dc6ca559b77f36d5bf29b41ca3964bdb10408e0a2793571fcec208a6e4518350","src/unsafe_ref.rs":"2ef346348772231b1534f3871113c2666d01758bc28f7592275d9a03e2b5c097","src/xor_linked_list.rs":"c50725994f365aa2054f0e750653ce008c7f447816e3f3fe41930a98ef0f7645"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0bc824bb23028676949e8bb1dd167b5dc01ea6c110b0551cca3b2dccf2a24693","Android.bp":"8a2d28cc6f929b1b74ddebc6e6ec6a67c9c68af9b327af68f6d4305b46ed93ac","Cargo.toml":"38b2af9b5c5eedd87fdd28fb61e051c197c2bc3ff7d194592267e37516515c5b","DESIGN.md":"4097b89aa53bdb2e94eef3dac9085961696b9a78e4fe25fff9cdbdbbfab8f763","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1eb8f1563980f5b42aa4fa3c437403dea08e58212646852dbf84829a247aee07","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a7195d1334c347d45d192169bcd32bc8d33fe0a8010cee0f7d3c78e4d40b2d60","TEST_MAPPING":"1a1458459b18016ed8a1661f3645520444a1f087cc619dbbee9442c759e97091","cargo_embargo.json":"eda680b31f50ed39bbe4eb98da4d2f7c7651fb7ee1e29c7d233205aa67b03c96","src/adapter.rs":"dff6f74bf8989051543b97de15cd1e04601790e4f49ec70b2e03e197d3233905","src/key_adapter.rs":"c61c1976c1332097bac0bea151ac28c62f253e6126249ae35c388204a8cd70eb","src/lib.rs":"e4f952f8694c5a210bffd2c809da0412d39e500eb477e3631a94e208cd8ee4bb","src/link_ops.rs":"f53dffffbc6d0eda8c3334cfed0d6034c9d0aaae288ed58b355db48f3638fcc5","src/linked_list.rs":"fb22f90983a6572ff679caf56285e8c3a8fe61903f0420d4974b5410c47a77c1","src/pointer_ops.rs":"694462d80202960003b89a14bb02f5e404537c2b088a16b3a7d5a7b3038a0cba","src/rbtree.rs":"969d9058f91396c120d7985bb552118138504a8831952fccfeb21a8e70dea73d","src/singly_linked_list.rs":"9c99ce5fa707fb3d1113d75c2b8b1e47230924a564313f49b85a1b3fb3cfa4f9","src/unchecked_option.rs":"dc6ca559b77f36d5bf29b41ca3964bdb10408e0a2793571fcec208a6e4518350","src/unsafe_ref.rs":"2ef346348772231b1534f3871113c2666d01758bc28f7592275d9a03e2b5c097","src/xor_linked_list.rs":"c50725994f365aa2054f0e750653ce008c7f447816e3f3fe41930a98ef0f7645"}}
\ No newline at end of file
diff --git a/crates/intrusive-collections/Android.bp b/crates/intrusive-collections/Android.bp
index 5c11143..101499f 100644
--- a/crates/intrusive-collections/Android.bp
+++ b/crates/intrusive-collections/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/intrusive-collections/cargo_embargo.json b/crates/intrusive-collections/cargo_embargo.json
index fbb9fcd..1d9bb64 100644
--- a/crates/intrusive-collections/cargo_embargo.json
+++ b/crates/intrusive-collections/cargo_embargo.json
@@ -3,5 +3,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ipnet/.android-checksum.json b/crates/ipnet/.android-checksum.json
index 5712ee4..3a500bf 100644
--- a/crates/ipnet/.android-checksum.json
+++ b/crates/ipnet/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"4e391fa2f8d789d7dc67467c2ba10c97ad6b4914ce032b95beae6b797483e291","Android.bp":"3092deed3cdfe1a1f1e40540522213b6e07cd52f75e1e47391bcfef332f28fb2","Cargo.toml":"53fc0de162ee8e2b24ba8018ae1aa8364dda34e4eb3759c9d9978ff2d6f0f4c8","LICENSE":"88a9f74a85511411076041d2bcd6e5cf087474fcf2afe6ffcdffa6505ca28fe6","LICENSE-APACHE":"88a9f74a85511411076041d2bcd6e5cf087474fcf2afe6ffcdffa6505ca28fe6","METADATA":"f40a00b379cca0d857c17e6c9754902acb1e8c85267a3f2d36602c54c85f6d46","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"961303b9bf94ed5dcdcdcd00a91444e2d31e9c6eccdf0cde1510ef60ec6965e1","RELEASES.md":"d60a1f6dddfd672682fef156f2909d001288667e5829f8d83a3e084b5ee5527d","TEST_MAPPING":"c66ef635c61eccf5ae0024813610361ebf1d9adc30be04885a14da6d5f3be0a6","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","src/ipext.rs":"3295d8ba1813e0d6f5ad450a9ad70c6e025f43e8123742db6a155232da5499ee","src/ipnet.rs":"5a1e5343d2ee47ff7ef349e89a3c0413f2f92390a5b8527863ac08a9f11b5bff","src/ipnet_schemars.rs":"1eb0d5da9c8d2a22139576ca63a0cd8e517c08c4fc977b1e2048fd607ae26e93","src/ipnet_serde.rs":"b8c204f1de889b0e255a2d7690e8f03a15242e4bf0610005dc8724101670994e","src/lib.rs":"528e20492c5b3a9ffff6f074ed2513fb879abda044b781aad2cb222023e10587","src/mask.rs":"bf0773afeceebb4c64d5ad64d3f0559af54a03ec5954bcd7888ea79a30f61db1","src/parser.rs":"4777d13348df4928808ddbf0a2c328d0516cfbd354145d53503168b840d84403"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"4e391fa2f8d789d7dc67467c2ba10c97ad6b4914ce032b95beae6b797483e291","Android.bp":"8ad0d0036de65ec44b631171062636c199c46914ae7cb6d48f0f1bd1997fa82f","Cargo.toml":"53fc0de162ee8e2b24ba8018ae1aa8364dda34e4eb3759c9d9978ff2d6f0f4c8","LICENSE":"88a9f74a85511411076041d2bcd6e5cf087474fcf2afe6ffcdffa6505ca28fe6","LICENSE-APACHE":"88a9f74a85511411076041d2bcd6e5cf087474fcf2afe6ffcdffa6505ca28fe6","METADATA":"f40a00b379cca0d857c17e6c9754902acb1e8c85267a3f2d36602c54c85f6d46","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"961303b9bf94ed5dcdcdcd00a91444e2d31e9c6eccdf0cde1510ef60ec6965e1","RELEASES.md":"d60a1f6dddfd672682fef156f2909d001288667e5829f8d83a3e084b5ee5527d","TEST_MAPPING":"c66ef635c61eccf5ae0024813610361ebf1d9adc30be04885a14da6d5f3be0a6","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","src/ipext.rs":"3295d8ba1813e0d6f5ad450a9ad70c6e025f43e8123742db6a155232da5499ee","src/ipnet.rs":"5a1e5343d2ee47ff7ef349e89a3c0413f2f92390a5b8527863ac08a9f11b5bff","src/ipnet_schemars.rs":"1eb0d5da9c8d2a22139576ca63a0cd8e517c08c4fc977b1e2048fd607ae26e93","src/ipnet_serde.rs":"b8c204f1de889b0e255a2d7690e8f03a15242e4bf0610005dc8724101670994e","src/lib.rs":"528e20492c5b3a9ffff6f074ed2513fb879abda044b781aad2cb222023e10587","src/mask.rs":"bf0773afeceebb4c64d5ad64d3f0559af54a03ec5954bcd7888ea79a30f61db1","src/parser.rs":"4777d13348df4928808ddbf0a2c328d0516cfbd354145d53503168b840d84403"}}
\ No newline at end of file
diff --git a/crates/ipnet/Android.bp b/crates/ipnet/Android.bp
index e8ef93a..3ba9569 100644
--- a/crates/ipnet/Android.bp
+++ b/crates/ipnet/Android.bp
@@ -51,4 +51,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ipnet/cargo_embargo.json b/crates/ipnet/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/ipnet/cargo_embargo.json
+++ b/crates/ipnet/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/is-terminal/.android-checksum.json b/crates/is-terminal/.android-checksum.json
index 2060cc2..095a650 100644
--- a/crates/is-terminal/.android-checksum.json
+++ b/crates/is-terminal/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7b0de7844a02cd7de3ff4d1826edd03389a18b374bc9a4e353523b44ffa3b70a","Android.bp":"32fb71873cbab85fb35c6584b5de86e429310063eb08c0b21eed49fbd9b75661","Cargo.toml":"d39959f22dd526747ddbbe9e99004a6148156415574ae6f055e9c0c041ad7e9d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT-atty":"f8460b39b385b3cbe2fbfd924304813edbf06a23cb47c82d1f11eca2a005e2e8","METADATA":"7e09f752a9b90286295412e4ffec2fbd1e0086dd8696638d896542513feb0fcf","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1f03823c5bb2a51b7a7cbdde6feaf8992142cf1caecddece7999bf63871f9f8b","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/lib.rs":"c3d9f4a7dc68f7eae4387c2878753938ce1cb965d79cb435112c58cf354ba318"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7b0de7844a02cd7de3ff4d1826edd03389a18b374bc9a4e353523b44ffa3b70a","Android.bp":"e2d21ee788b96596837f82fd21d4221b94af639f267f83fe8e2a7e0aa3da585b","Cargo.toml":"d39959f22dd526747ddbbe9e99004a6148156415574ae6f055e9c0c041ad7e9d","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT-atty":"f8460b39b385b3cbe2fbfd924304813edbf06a23cb47c82d1f11eca2a005e2e8","METADATA":"7e09f752a9b90286295412e4ffec2fbd1e0086dd8696638d896542513feb0fcf","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1f03823c5bb2a51b7a7cbdde6feaf8992142cf1caecddece7999bf63871f9f8b","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/lib.rs":"c3d9f4a7dc68f7eae4387c2878753938ce1cb965d79cb435112c58cf354ba318"}}
\ No newline at end of file
diff --git a/crates/is-terminal/Android.bp b/crates/is-terminal/Android.bp
index 33085b6..eb748da 100644
--- a/crates/is-terminal/Android.bp
+++ b/crates/is-terminal/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/is-terminal/cargo_embargo.json b/crates/is-terminal/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/is-terminal/cargo_embargo.json
+++ b/crates/is-terminal/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/json-strip-comments/.android-checksum.json b/crates/json-strip-comments/.android-checksum.json
index dd76990..69d9773 100644
--- a/crates/json-strip-comments/.android-checksum.json
+++ b/crates/json-strip-comments/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6b8ade6a732a03726b5d8bfb1ee5701172a930111afb83bc4d13a55a9f3a2eaf","Android.bp":"ad1ee5e3e67f0863bc3c9a594064cb5ad4380cf1d4aff8c3b2d11e74e437c8c6","Cargo.lock":"89f1eed2fe171d5f6fc45dabd32c1159d2f845006bcdaf0486d5921dd6bf86a6","Cargo.toml":"6be161edf89ea4f405ba7375953378ed7456a9fec12af86f03836d3ac4d6923b","LICENSE":"2294bb5989f525c583736ae0b6775f4ec8d56d8645842e454e2beefdc1b1b2a4","METADATA":"6d3a124f37454a3179cfc4c3ce8c8292286046e5bfd04dd729a301db0fb68599","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"994fe62ae602100aac8ce879c902004a25e858ab934b51700a547e71eb35ebc3","benches/strip.rs":"7381c3eaf66ffcf4744aef6bfa4ca3884dddfa5b9f612ed833a53a975ebb112d","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/example.rs":"3458a8f2a463cc604283dc5aa1d92fb2ba96d9a7c36290fc879606020bfe2101","rust-toolchain.toml":"ccf56f9d8d313dc5d702864ae06f2719940cb2d21703ea8569742f8fe70e9902","src/lib.rs":"a3fac792c442757aa38354424cb2304d6699ae6e2410581f283416bd2b703972"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6b8ade6a732a03726b5d8bfb1ee5701172a930111afb83bc4d13a55a9f3a2eaf","Android.bp":"34ee9058a3f2c79fbd3a2f9dc84c730fae5676d939ac8854a53a80cea52d3ea4","Cargo.lock":"89f1eed2fe171d5f6fc45dabd32c1159d2f845006bcdaf0486d5921dd6bf86a6","Cargo.toml":"6be161edf89ea4f405ba7375953378ed7456a9fec12af86f03836d3ac4d6923b","LICENSE":"2294bb5989f525c583736ae0b6775f4ec8d56d8645842e454e2beefdc1b1b2a4","METADATA":"6d3a124f37454a3179cfc4c3ce8c8292286046e5bfd04dd729a301db0fb68599","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"994fe62ae602100aac8ce879c902004a25e858ab934b51700a547e71eb35ebc3","benches/strip.rs":"7381c3eaf66ffcf4744aef6bfa4ca3884dddfa5b9f612ed833a53a975ebb112d","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/example.rs":"3458a8f2a463cc604283dc5aa1d92fb2ba96d9a7c36290fc879606020bfe2101","rust-toolchain.toml":"ccf56f9d8d313dc5d702864ae06f2719940cb2d21703ea8569742f8fe70e9902","src/lib.rs":"a3fac792c442757aa38354424cb2304d6699ae6e2410581f283416bd2b703972"}}
\ No newline at end of file
diff --git a/crates/json-strip-comments/Android.bp b/crates/json-strip-comments/Android.bp
index e91d095..2fcb16a 100644
--- a/crates/json-strip-comments/Android.bp
+++ b/crates/json-strip-comments/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/json-strip-comments/cargo_embargo.json b/crates/json-strip-comments/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/json-strip-comments/cargo_embargo.json
+++ b/crates/json-strip-comments/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/kernlog/.android-checksum.json b/crates/kernlog/.android-checksum.json
index caf9ca5..124f6ea 100644
--- a/crates/kernlog/.android-checksum.json
+++ b/crates/kernlog/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"affcef9d34f4f575a2e135a36bb67bfa890e8f8a253194cc4b547dcd014dbba5","Android.bp":"fc28e870cb8ae3419d7bbed60ec88205977a010f847733b83d36be6fe701f993","Cargo.toml":"e9214558a28cbe9e2b9310c163cd8c2ec4f3e6669d4a20447c04ef1269243ee9","LICENSE":"925e0214c6f24a5f8ef1d7a3dac21f9babc5a8fc13f07a15a0140f5abda4ad36","METADATA":"ea603c5ae6287c6e44aa4966091cf56ab2f38f3334bd0f00652eb4742aee46db","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b728b7fabe2b8238180f3ed68d713792d2d0fee9ab8f2aa70a8cef50ca5ff0c3","TEST_MAPPING":"bc5e4b291bf6b760d7fb5fa4cbd1bc472d280c71040275da49c64c997dcf834f","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/0001-Open-dev-kmsg-in-Android.patch":"f2d3d8b2b18f0c7870959b039dde2d222f21b92af1014bbb362baddb0e9bf8df","patches/license.patch":"b7e7e907d59ac4f64bcbd7e706f8c5470270b8c7043f9af32a8e927126f59cc2","src/lib.rs":"092c9e28b2847e983d711442f06ac1572be6158352b3611b7970fc61525482a2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"affcef9d34f4f575a2e135a36bb67bfa890e8f8a253194cc4b547dcd014dbba5","Android.bp":"2ced12989ea2139fa2b5c0ef6e3eb08980ef6103ce7ce05b9fc98bac814f8f15","Cargo.toml":"e9214558a28cbe9e2b9310c163cd8c2ec4f3e6669d4a20447c04ef1269243ee9","LICENSE":"925e0214c6f24a5f8ef1d7a3dac21f9babc5a8fc13f07a15a0140f5abda4ad36","METADATA":"ea603c5ae6287c6e44aa4966091cf56ab2f38f3334bd0f00652eb4742aee46db","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b728b7fabe2b8238180f3ed68d713792d2d0fee9ab8f2aa70a8cef50ca5ff0c3","TEST_MAPPING":"bc5e4b291bf6b760d7fb5fa4cbd1bc472d280c71040275da49c64c997dcf834f","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/0001-Open-dev-kmsg-in-Android.patch":"f2d3d8b2b18f0c7870959b039dde2d222f21b92af1014bbb362baddb0e9bf8df","patches/license.patch":"b7e7e907d59ac4f64bcbd7e706f8c5470270b8c7043f9af32a8e927126f59cc2","src/lib.rs":"092c9e28b2847e983d711442f06ac1572be6158352b3611b7970fc61525482a2"}}
\ No newline at end of file
diff --git a/crates/kernlog/Android.bp b/crates/kernlog/Android.bp
index 604471c..5d5c398 100644
--- a/crates/kernlog/Android.bp
+++ b/crates/kernlog/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/kernlog/cargo_embargo.json b/crates/kernlog/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/kernlog/cargo_embargo.json
+++ b/crates/kernlog/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/khronos-egl/.android-checksum.json b/crates/khronos-egl/.android-checksum.json
index 6ca298e..cdbaa6c 100644
--- a/crates/khronos-egl/.android-checksum.json
+++ b/crates/khronos-egl/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"28a3793ab10543973071c2a45e3754110cd76923f7f09b4ff45237ed5483bc22","Android.bp":"4578eca49204a9aa390bc8a51ce6866b3fd9b30abb54d9a8c348b26c99411fd8","CHANGELOG.md":"104a6f31b98216ef10948b43b80654e02d6c11bbe45dfb83fd2f6897d71b47ca","Cargo.lock":"4aff132f05419f74928d387eeb23a78ebb5b8742ca357b538701cb99c9dcff78","Cargo.toml":"d5398c9a13af2d48b93484b693e483300a1b1b64bb8554384698098aec696642","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"84860d40b51fd8163af7de6b6dde1a9e1d3ee12801a84b5880bb44381c989dc2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"556bf5979dbd4153468a87bce45204f96956af3414f7784d28e52642ecb1b4df","build.rs":"a7adbd07cd3bbba1de7d5beeadbcbf89e5461f3dbf55559ef1f842a8d8408067","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/load-minimal.rs":"a202f5060ca11648f609bb36cbb7b8d64155c65ee448bd8843d55630e80025f2","examples/wayland-dynamic.rs":"e8e9b3966a3d86734782a0d753067aac9fb8f2643fe7c623a8f5b6a48edb4e24","examples/wayland-static.rs":"8d0e5c6a5d1d32fdc569c50a16b78463d163c2095b147418b4d8d2b3e6f5470d","shell-wayland.nix":"d3aeeab90397f26389421da718608c983ba128548e6adf3436db61613afdb369","shell.nix":"5495552a1f4c9f87f27f5379081aa2b5f316de228139ecbc1b6fec78ddb855e4","src/lib.rs":"16000f5b456d5989a488860db7f4f68c5bbfeca3cb945ff5524f639661be0522"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"28a3793ab10543973071c2a45e3754110cd76923f7f09b4ff45237ed5483bc22","Android.bp":"1e1b9cdd2c2dc9501253ae5343b780cb3ce2b692f44faefd02881669c035c401","CHANGELOG.md":"104a6f31b98216ef10948b43b80654e02d6c11bbe45dfb83fd2f6897d71b47ca","Cargo.lock":"4aff132f05419f74928d387eeb23a78ebb5b8742ca357b538701cb99c9dcff78","Cargo.toml":"d5398c9a13af2d48b93484b693e483300a1b1b64bb8554384698098aec696642","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"84860d40b51fd8163af7de6b6dde1a9e1d3ee12801a84b5880bb44381c989dc2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"556bf5979dbd4153468a87bce45204f96956af3414f7784d28e52642ecb1b4df","build.rs":"a7adbd07cd3bbba1de7d5beeadbcbf89e5461f3dbf55559ef1f842a8d8408067","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/load-minimal.rs":"a202f5060ca11648f609bb36cbb7b8d64155c65ee448bd8843d55630e80025f2","examples/wayland-dynamic.rs":"e8e9b3966a3d86734782a0d753067aac9fb8f2643fe7c623a8f5b6a48edb4e24","examples/wayland-static.rs":"8d0e5c6a5d1d32fdc569c50a16b78463d163c2095b147418b4d8d2b3e6f5470d","shell-wayland.nix":"d3aeeab90397f26389421da718608c983ba128548e6adf3436db61613afdb369","shell.nix":"5495552a1f4c9f87f27f5379081aa2b5f316de228139ecbc1b6fec78ddb855e4","src/lib.rs":"16000f5b456d5989a488860db7f4f68c5bbfeca3cb945ff5524f639661be0522"}}
\ No newline at end of file
diff --git a/crates/khronos-egl/Android.bp b/crates/khronos-egl/Android.bp
index 40976a2..5a5783e 100644
--- a/crates/khronos-egl/Android.bp
+++ b/crates/khronos-egl/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/khronos-egl/cargo_embargo.json b/crates/khronos-egl/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/khronos-egl/cargo_embargo.json
+++ b/crates/khronos-egl/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/khronos/.android-checksum.json b/crates/khronos/.android-checksum.json
index 6c55732..554a294 100644
--- a/crates/khronos/.android-checksum.json
+++ b/crates/khronos/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"81f3cecb5edbbddd3c6ec2b6a2334e907dedbd58580ac19bd48ab8bff83415e9","Android.bp":"fe0bd373b8f030fcd5045d693f788f36b91af52903e3bebe0b6599183e2e1135","Cargo.toml":"36a879dbe842c8fad759e5a3db67e0dececb7638a068bfc9287f8f8265a48c77","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"e78649e17b3ed97608a542acc96850180c3b94ce9eb1a0609a0ebd8a47a37d37","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1cd8c7213ff414d8e1d44c5eaa9e037ca3bf6d07c9486fefbbbba82e8d79dcae","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","patches/LICENSE.patch":"4dadf03cc753ae7019233219a00d973ac8444aa6f5bf9dda85df88b83388d0b9","src/lib.rs":"9c0a01786e3ca350646170f78d2e9fc47135c9eb72a414f40224c8fe9e3ac5bb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"81f3cecb5edbbddd3c6ec2b6a2334e907dedbd58580ac19bd48ab8bff83415e9","Android.bp":"4dd6a96ce21bfeb2cce2e6905aa58f0a79e3d6b66ba4cb5cff335414b366159a","Cargo.toml":"36a879dbe842c8fad759e5a3db67e0dececb7638a068bfc9287f8f8265a48c77","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"e78649e17b3ed97608a542acc96850180c3b94ce9eb1a0609a0ebd8a47a37d37","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1cd8c7213ff414d8e1d44c5eaa9e037ca3bf6d07c9486fefbbbba82e8d79dcae","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","patches/LICENSE.patch":"4dadf03cc753ae7019233219a00d973ac8444aa6f5bf9dda85df88b83388d0b9","src/lib.rs":"9c0a01786e3ca350646170f78d2e9fc47135c9eb72a414f40224c8fe9e3ac5bb"}}
\ No newline at end of file
diff --git a/crates/khronos/Android.bp b/crates/khronos/Android.bp
index 6e991a4..7ea4ca6 100644
--- a/crates/khronos/Android.bp
+++ b/crates/khronos/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/khronos/cargo_embargo.json b/crates/khronos/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/khronos/cargo_embargo.json
+++ b/crates/khronos/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/lazycell/.android-checksum.json b/crates/lazycell/.android-checksum.json
index 0a93ac4..6199651 100644
--- a/crates/lazycell/.android-checksum.json
+++ b/crates/lazycell/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2283b1072dbeacf879c7a32d3da14245a99faea82700db01ebca88e5cd65a8e5","Android.bp":"4115093f4012bd91d5a3d101d7fe1bde07884b1f9725987c5075efc5998c9541","CHANGELOG.md":"d101c48fccbfa3ec1806a81dd9dbcc3d1a5df303375f289d1d9c2586650fb550","Cargo.toml":"c469c0301002a9e0af57e4747d6893263c97b5b8225890ce6e948f034642cc8b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"55e9b736ac00e7a8b131499d8b9517608a3b2abcce3d24604ee2590a50aa4e18","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a27d5d2b29ca0b27dc44e5823c41f8fa4c359a6160688a810b04c57ba264afc4","TEST_MAPPING":"969ec968a2af1901034a1a88373f8f35de60b225b04b6f731bdc19d8a9130e3c","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","src/lib.rs":"defc3b6615125807801c6645e5ecf634d67b52474e7f88ba94cf118f65009e7b","src/serde_impl.rs":"c27029c03a802c82d18a59a39bf93f252592708afa7ec9cfaa81b157dd0a4855"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2283b1072dbeacf879c7a32d3da14245a99faea82700db01ebca88e5cd65a8e5","Android.bp":"eac0160c1a89350bf025938e9d995e4133c4deaa6e66d16d4dcdcdc4e8c77c87","CHANGELOG.md":"d101c48fccbfa3ec1806a81dd9dbcc3d1a5df303375f289d1d9c2586650fb550","Cargo.toml":"c469c0301002a9e0af57e4747d6893263c97b5b8225890ce6e948f034642cc8b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"55e9b736ac00e7a8b131499d8b9517608a3b2abcce3d24604ee2590a50aa4e18","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a27d5d2b29ca0b27dc44e5823c41f8fa4c359a6160688a810b04c57ba264afc4","TEST_MAPPING":"969ec968a2af1901034a1a88373f8f35de60b225b04b6f731bdc19d8a9130e3c","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","src/lib.rs":"defc3b6615125807801c6645e5ecf634d67b52474e7f88ba94cf118f65009e7b","src/serde_impl.rs":"c27029c03a802c82d18a59a39bf93f252592708afa7ec9cfaa81b157dd0a4855"}}
\ No newline at end of file
diff --git a/crates/lazycell/Android.bp b/crates/lazycell/Android.bp
index 1f32a66..f6894d6 100644
--- a/crates/lazycell/Android.bp
+++ b/crates/lazycell/Android.bp
@@ -42,4 +42,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/lazycell/cargo_embargo.json b/crates/lazycell/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/lazycell/cargo_embargo.json
+++ b/crates/lazycell/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/libbpf-rs/.android-checksum.json b/crates/libbpf-rs/.android-checksum.json
index d153b25..9441625 100644
--- a/crates/libbpf-rs/.android-checksum.json
+++ b/crates/libbpf-rs/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"38d78fa8c8c655a4efabc4929f94ff58a4b1cc1d21706ad987b74c06593d28ab","Android.bp":"234fcb502c0502a74f5d0ba2249e5b3073b6b9e5a7a60d320dd0dffc02e76461","CHANGELOG.md":"0a46907331158fbb83e518399dcfdccba30ecaf3a3552bcdae6f5c1c136e4a69","Cargo.toml":"cf347a9e1419589edd7dc6327852ef009896af21c9be80f2089a29ccb542baad","LICENSE":"528a6f3f0cd12bff12093a8dce28c1963651ddebf3d6f987f6465a392f6f6541","LICENSE.BSD-2-Clause":"528a6f3f0cd12bff12093a8dce28c1963651ddebf3d6f987f6465a392f6f6541","METADATA":"c19f4b0ef260e74822d4ce5f562140784ae69ffc6f8d660445b0086fa2d4a6d0","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2d7e5faaff4d3e44d68222bfa93853e9292200157e02070ba566e00a2bfce196","android_config.toml":"53e8cc7f17499d62edaa6484cbd9a211da54936a0eef49a3aa9103f6c1e76cd7","cargo_embargo.json":"080222c311f7934fa2371b4e97a21a57e979aae209baeea78f2a00514aee9571","patches/Android.bp.patch":"dfa799cc16b93e126ac3600982ba2059e22ff20ee8d167209c65faaf9de92a0f","src/btf/mod.rs":"b2e36035b4f013b5781ffe140010275750ce141b350439b148774ecad93535d2","src/btf/types.rs":"bfea207cc02ccc1cd127cbefd70b94c45872405750891ba11fc5701ba2c1102a","src/error.rs":"74c53f045f3ca1c8dc3ef7d7e2fc622da67a4058d14da1118af4e4757462fe85","src/iter.rs":"5b5d9711fc9c478d26ded9a96f407d53b78a1d81caa966e88a217a6f70d1c02a","src/lib.rs":"f8e6187e5b72ce597cdfaeb438243aaed77a8b7794771a5b6694565c785b1f7f","src/link.rs":"67b36aa6a129708b5db11b516115f2d319c4a740403e83194f0919ae5e3dfcf0","src/linker.rs":"a644f3714e73dfa7f7ba0f4c025a1b2d236bdec1f99e39816c2c3eac140bde4f","src/map.rs":"72d8deea556fe1ad96e9069a327600a90ad4470dffdbc8e593242d3d28150730","src/netfilter.rs":"ed1c4d68b72328a6a09d3d5321fcdb9c3915c9eca2c89ce540e0c7597c4aa7ac","src/object.rs":"9f45ee35b31ae4947f72292f077801c4085e57f2ca6fee73a55d992ed46ec94a","src/perf_buffer.rs":"3fbbc49ea587e7dc881e2f4425caddcd9efedaa6b3fa326b00553f13b74159b0","src/print.rs":"b44dddd7cfbfaf40530dada73ea4d77f0b41fec18db49a93797e01400dab6ad3","src/program.rs":"f9d1939b57cc4e7deb25605e990c63583d415ab6a9d46cc88c2038a224080304","src/query.rs":"103ca906d1f9270af32c37902d25141f76ce5e959bb0180fd6fd8826b1b138fa","src/ringbuf.rs":"507dc6e717a338581908f33d380a8495bff07dfe2efa473b5a3a5a99296bf3e3","src/skeleton.rs":"216018ff9124d63d43fcee6ca5126a2c9345269cbfb76d238d78e7f37395c635","src/tc.rs":"57a892f38626c1289f75e7a9807aa143b4c03fe11f48284cfe6c6380c63c23f7","src/user_ringbuf.rs":"2676e2535da17fb0f6dd9a19263ce6fe8be8865f3027af722c3210f0539fa33f","src/util.rs":"31180a1b31c04cdff1fba887602d8f508d3804c7b104470ce62e0cf4582b44f2","src/xdp.rs":"9a0fdd9c67ab8274a752845bdef6fbf43b965fd0b85fd9e0845003ecccfe0c74","tests/README.md":"7bbe904d453387456f21b546f8b3e2c64364679e87d2a5572d915f4299ac092a","tests/bin/src/ksyscall.bpf.c":"4a8ab8b7e5ecfd690074890f0d8e22598109c68c5e50c47b8b702b7a5f564b3b","tests/bin/src/map_auto_pin.bpf.c":"dd609d179d78bd6d7601aa4d010e47b1482624fa9a662aaeb8048906027b5edc","tests/bin/src/mapiter.bpf.c":"130fd1ed907efd55e09bfe449731ab86281c6ffe9d2d2561c6ecd282e34a4563","tests/bin/src/netfilter.bpf.c":"5a453be18628abe6c9296dd6ffa231804123051534935327afcd74acfd14fb99","tests/bin/src/percpu_map.bpf.c":"8138eab03b2d01d302ec1e6d1d4da1a6be1449bedc7acc9360cc8eec00c5bda0","tests/bin/src/ringbuf.bpf.c":"1414fde2bdb67c7a3fc79dee417be3cbc9e66878a3afbd4ecb2260de1f4203a2","tests/bin/src/run_prog.bpf.c":"38c802f514598dec4f7458625f18dea0f609662c75e59de370fc0cd9989350bc","tests/bin/src/runqslower.bpf.c":"864aa19538b956d777a38def11fcca0fb39e5e930cba77a8dba1170c85d09de9","tests/bin/src/runqslower.h":"54e088c803bb6637d6c68edef415a002d4821f8ae4095089d6e5a5456695968e","tests/bin/src/taskiter.bpf.c":"2097b9508346d4fc996012e81ed2bcd1e7c51e121bddfbd94821611aef576b95","tests/bin/src/tc-unit.bpf.c":"c199c484a4286d2044337c5ba700711ebb00f2f7b7f975ff582dba7701d6f787","tests/bin/src/tracepoint.bpf.c":"a3efc5432ecb9329d2ce54260d7e4906ff254f560015d885653a2f1325a78c80","tests/bin/src/uprobe.bpf.c":"89918e37889fc1cc30c0fdba013cd15af462a198c53722a1fbb139a0a1a61ddb","tests/bin/src/usdt.bpf.c":"7ffd18c53f242ba2d3deabd6e345135e521904ce1e7421388c184418850c4597","tests/bin/src/user_ringbuf.bpf.c":"44ebfdc0070e75eb2c291c695e66f4a3b2bf6f82e036d1a9f5a4625930389492","tests/bin/src/xdp.bpf.c":"502dfc24c3c2533354a13a48510ce5d29f2386a53d8e35a01cc7a38939d7f37b","tests/common/mod.rs":"a55b557e9b13101ae6f161b8136045c60b2773597282fbbed303762525a697d3","tests/test.rs":"41a11762acee796a1a36f4a59461ca2baba520a7c4751d72cba075906a8bff37","tests/test_netfilter.rs":"5c53965fb7a79658ab2c8c0d1da04d1288406de3dac5fd135a53d151a58025a2","tests/test_print.rs":"bac97c919bcd27eb2b97f8d8cc6434ec8d18e634edc86caa478d2b8ac1411055","tests/test_tc.rs":"bcd01edc4960e3b05a248ae1ecf43579a62f1c8c536aa5db48b2d341257ef6aa","tests/test_xdp.rs":"2a9f27e3df96eba0fe2d06d5e01745966e6d8f3f59c72344c861e92548c8a65b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"38d78fa8c8c655a4efabc4929f94ff58a4b1cc1d21706ad987b74c06593d28ab","Android.bp":"93680533998aebb8cfc168679447a29ef75f8c4008ee09c93d3f0030d2fb87fe","CHANGELOG.md":"0a46907331158fbb83e518399dcfdccba30ecaf3a3552bcdae6f5c1c136e4a69","Cargo.toml":"cf347a9e1419589edd7dc6327852ef009896af21c9be80f2089a29ccb542baad","LICENSE":"528a6f3f0cd12bff12093a8dce28c1963651ddebf3d6f987f6465a392f6f6541","LICENSE.BSD-2-Clause":"528a6f3f0cd12bff12093a8dce28c1963651ddebf3d6f987f6465a392f6f6541","METADATA":"c19f4b0ef260e74822d4ce5f562140784ae69ffc6f8d660445b0086fa2d4a6d0","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2d7e5faaff4d3e44d68222bfa93853e9292200157e02070ba566e00a2bfce196","android_config.toml":"53e8cc7f17499d62edaa6484cbd9a211da54936a0eef49a3aa9103f6c1e76cd7","cargo_embargo.json":"c20cdfe42d7091aa73254ff5df3f20a5a578b48f15ebb2dd40d5238ba09a70d3","patches/Android.bp.patch":"dfa799cc16b93e126ac3600982ba2059e22ff20ee8d167209c65faaf9de92a0f","src/btf/mod.rs":"b2e36035b4f013b5781ffe140010275750ce141b350439b148774ecad93535d2","src/btf/types.rs":"bfea207cc02ccc1cd127cbefd70b94c45872405750891ba11fc5701ba2c1102a","src/error.rs":"74c53f045f3ca1c8dc3ef7d7e2fc622da67a4058d14da1118af4e4757462fe85","src/iter.rs":"5b5d9711fc9c478d26ded9a96f407d53b78a1d81caa966e88a217a6f70d1c02a","src/lib.rs":"f8e6187e5b72ce597cdfaeb438243aaed77a8b7794771a5b6694565c785b1f7f","src/link.rs":"67b36aa6a129708b5db11b516115f2d319c4a740403e83194f0919ae5e3dfcf0","src/linker.rs":"a644f3714e73dfa7f7ba0f4c025a1b2d236bdec1f99e39816c2c3eac140bde4f","src/map.rs":"72d8deea556fe1ad96e9069a327600a90ad4470dffdbc8e593242d3d28150730","src/netfilter.rs":"ed1c4d68b72328a6a09d3d5321fcdb9c3915c9eca2c89ce540e0c7597c4aa7ac","src/object.rs":"9f45ee35b31ae4947f72292f077801c4085e57f2ca6fee73a55d992ed46ec94a","src/perf_buffer.rs":"3fbbc49ea587e7dc881e2f4425caddcd9efedaa6b3fa326b00553f13b74159b0","src/print.rs":"b44dddd7cfbfaf40530dada73ea4d77f0b41fec18db49a93797e01400dab6ad3","src/program.rs":"f9d1939b57cc4e7deb25605e990c63583d415ab6a9d46cc88c2038a224080304","src/query.rs":"103ca906d1f9270af32c37902d25141f76ce5e959bb0180fd6fd8826b1b138fa","src/ringbuf.rs":"507dc6e717a338581908f33d380a8495bff07dfe2efa473b5a3a5a99296bf3e3","src/skeleton.rs":"216018ff9124d63d43fcee6ca5126a2c9345269cbfb76d238d78e7f37395c635","src/tc.rs":"57a892f38626c1289f75e7a9807aa143b4c03fe11f48284cfe6c6380c63c23f7","src/user_ringbuf.rs":"2676e2535da17fb0f6dd9a19263ce6fe8be8865f3027af722c3210f0539fa33f","src/util.rs":"31180a1b31c04cdff1fba887602d8f508d3804c7b104470ce62e0cf4582b44f2","src/xdp.rs":"9a0fdd9c67ab8274a752845bdef6fbf43b965fd0b85fd9e0845003ecccfe0c74","tests/README.md":"7bbe904d453387456f21b546f8b3e2c64364679e87d2a5572d915f4299ac092a","tests/bin/src/ksyscall.bpf.c":"4a8ab8b7e5ecfd690074890f0d8e22598109c68c5e50c47b8b702b7a5f564b3b","tests/bin/src/map_auto_pin.bpf.c":"dd609d179d78bd6d7601aa4d010e47b1482624fa9a662aaeb8048906027b5edc","tests/bin/src/mapiter.bpf.c":"130fd1ed907efd55e09bfe449731ab86281c6ffe9d2d2561c6ecd282e34a4563","tests/bin/src/netfilter.bpf.c":"5a453be18628abe6c9296dd6ffa231804123051534935327afcd74acfd14fb99","tests/bin/src/percpu_map.bpf.c":"8138eab03b2d01d302ec1e6d1d4da1a6be1449bedc7acc9360cc8eec00c5bda0","tests/bin/src/ringbuf.bpf.c":"1414fde2bdb67c7a3fc79dee417be3cbc9e66878a3afbd4ecb2260de1f4203a2","tests/bin/src/run_prog.bpf.c":"38c802f514598dec4f7458625f18dea0f609662c75e59de370fc0cd9989350bc","tests/bin/src/runqslower.bpf.c":"864aa19538b956d777a38def11fcca0fb39e5e930cba77a8dba1170c85d09de9","tests/bin/src/runqslower.h":"54e088c803bb6637d6c68edef415a002d4821f8ae4095089d6e5a5456695968e","tests/bin/src/taskiter.bpf.c":"2097b9508346d4fc996012e81ed2bcd1e7c51e121bddfbd94821611aef576b95","tests/bin/src/tc-unit.bpf.c":"c199c484a4286d2044337c5ba700711ebb00f2f7b7f975ff582dba7701d6f787","tests/bin/src/tracepoint.bpf.c":"a3efc5432ecb9329d2ce54260d7e4906ff254f560015d885653a2f1325a78c80","tests/bin/src/uprobe.bpf.c":"89918e37889fc1cc30c0fdba013cd15af462a198c53722a1fbb139a0a1a61ddb","tests/bin/src/usdt.bpf.c":"7ffd18c53f242ba2d3deabd6e345135e521904ce1e7421388c184418850c4597","tests/bin/src/user_ringbuf.bpf.c":"44ebfdc0070e75eb2c291c695e66f4a3b2bf6f82e036d1a9f5a4625930389492","tests/bin/src/xdp.bpf.c":"502dfc24c3c2533354a13a48510ce5d29f2386a53d8e35a01cc7a38939d7f37b","tests/common/mod.rs":"a55b557e9b13101ae6f161b8136045c60b2773597282fbbed303762525a697d3","tests/test.rs":"41a11762acee796a1a36f4a59461ca2baba520a7c4751d72cba075906a8bff37","tests/test_netfilter.rs":"5c53965fb7a79658ab2c8c0d1da04d1288406de3dac5fd135a53d151a58025a2","tests/test_print.rs":"bac97c919bcd27eb2b97f8d8cc6434ec8d18e634edc86caa478d2b8ac1411055","tests/test_tc.rs":"bcd01edc4960e3b05a248ae1ecf43579a62f1c8c536aa5db48b2d341257ef6aa","tests/test_xdp.rs":"2a9f27e3df96eba0fe2d06d5e01745966e6d8f3f59c72344c861e92548c8a65b"}}
\ No newline at end of file
diff --git a/crates/libbpf-rs/Android.bp b/crates/libbpf-rs/Android.bp
index 64ac9cb..c39f174 100644
--- a/crates/libbpf-rs/Android.bp
+++ b/crates/libbpf-rs/Android.bp
@@ -34,6 +34,7 @@
"//apex_available:platform",
"//apex_available:anyapex",
],
+ min_sdk_version: "29",
visibility: ["//system/bpf/loader"],
shared_libs: ["libbpf"],
}
diff --git a/crates/libbpf-rs/cargo_embargo.json b/crates/libbpf-rs/cargo_embargo.json
index 832e168..3818bf2 100644
--- a/crates/libbpf-rs/cargo_embargo.json
+++ b/crates/libbpf-rs/cargo_embargo.json
@@ -12,5 +12,6 @@
]
},
"product_available": false,
- "vendor_available": false
-}
+ "vendor_available": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/libfuzzer-sys/.android-checksum.json b/crates/libfuzzer-sys/.android-checksum.json
index f8d410b..de36363 100644
--- a/crates/libfuzzer-sys/.android-checksum.json
+++ b/crates/libfuzzer-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7ac946290518a40bb3de5fa3eec53e67b75de3838a66cdc39ee8639c32257532","Android.bp":"d51144854ee2424e0322d7d0fdf10b208ad1ad49a95d38cd60b81da7eb9f5886","CHANGELOG.md":"17a5aa69c20bee890d8d2272acf0e4879d40699c355c12a82ae83d8b82b8f6fb","Cargo.toml":"ab66b7310e4b8a35a558e61fc28c6380b4fd02c86b293d83266967c992974848","LICENSE":"48c3145c8841c75ef872c5b247de9e4798543958828bc06465fdc09ff07ac21e","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"ad98c276a25eb3689cd02e28d2b6fa303792b8be44c04af6e57bf58cb1c4a083","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_NCSA":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c6e572c60d0322db5f3f2589f8efbe09a85c9542b40a24d91615fd78754bbb46","build.rs":"06c842b1733ba96885ee7207e21c650f675d5a73ad781e992c31f8fedc787dcb","cargo_embargo.json":"dd3c7662cc45c3cfea2b438f43e91b15c07a5235d851c2d693e56d07b9800a91","ci/script.sh":"d5cbfdb568117064a28db8c8a13490cce35c8f6a5871924b05f6a170aeaafcb2","libfuzzer/CMakeLists.txt":"42bcd62edbb157c22e8ac07fcbdceb0853f6e66677c0b7fd7ba2b3da96ed6681","libfuzzer/FuzzerBuiltins.h":"b54314c80ba87a5fd00a8441196d2c56b71106c28f57c506d05f701fb1d8e33c","libfuzzer/FuzzerBuiltinsMsvc.h":"56dccfbba14bef292da8e5502f7e6483097fec507125091c145f13f41b1ec16c","libfuzzer/FuzzerCommand.h":"74bb7d7e847d278b5ab7eedb298063632be7c1f434aa5a7859b42d0d44fc2fe8","libfuzzer/FuzzerCorpus.h":"bab69e277e7ae9c34c2a7a1dc37e26323cb7590e33cd15e6914e3d2e3a3d3900","libfuzzer/FuzzerCrossOver.cpp":"f22daafb79954ea68b6d1bbfd863943df217ff03c60d1999b813c3138b5ef804","libfuzzer/FuzzerDataFlowTrace.cpp":"152ac1d01113787b575debea88bc822f4a9eadcf2b6969262bf9d0b2c6738d3c","libfuzzer/FuzzerDataFlowTrace.h":"014bd6a1b182e54e3a9b4b11a36656bf93a920382c01b643c5a74463426373fc","libfuzzer/FuzzerDefs.h":"120426d966b9cd83499a8acb9b1fbccd083b9ba02eb2e960d7e03cc4a4203707","libfuzzer/FuzzerDictionary.h":"922a293600ac5012e851f8bb3d021902dfd69b2a7a0c93f1d4df697b3862af9c","libfuzzer/FuzzerDriver.cpp":"ab608696a904bbb42f19b6af7e6b4bc18103b36ba2dbd02c17ef10c9ad3cd2e6","libfuzzer/FuzzerExtFunctions.def":"cbb6288d94adac559aa11e97a93eba6ef68d9b513591fea4c911b671f2753a93","libfuzzer/FuzzerExtFunctions.h":"5fcdaf2a90fe42987d1db75822b34996f1e051768eb37168fc662c7417816492","libfuzzer/FuzzerExtFunctionsDlsym.cpp":"83d3c2e1ea0e3924b11661cd60881cce86d29c2ff5c404286dc3697357ff2375","libfuzzer/FuzzerExtFunctionsWeak.cpp":"3dffb5713a3f4c213aea0239a4f0f39560b5b7c95df5965489083ad5a3845cbe","libfuzzer/FuzzerExtFunctionsWindows.cpp":"b8bcbff84a2fbe21a9ac41560eee792bf516d00201d2216b4bf67c64c5877b3e","libfuzzer/FuzzerExtraCounters.cpp":"07cce5a55b887c7a0abfc0716694c9cba9acc61349f2e42cd8106f27226467d3","libfuzzer/FuzzerExtraCountersDarwin.cpp":"9a3389de6967581e66c3ed956262ec3ee7329188bc9f8b5daf3c67aaf2e17a97","libfuzzer/FuzzerExtraCountersWindows.cpp":"ae59311e1a59df9186437b40f43e1d26561ed0d478a777a10c79597ec30788cb","libfuzzer/FuzzerFlags.def":"35490287179a581f750a4422dd13ed435441eef6a20adc7123313d317bb13853","libfuzzer/FuzzerFork.cpp":"073958d8d47e506a47a140c0a032bcdc9adb5045e5f0fb45b700e45f7e3a5c1e","libfuzzer/FuzzerFork.h":"ba9e944760e277b7ee169163a84c88168e58545a11e3116493f8bfc28cfcbd76","libfuzzer/FuzzerIO.cpp":"cc8069b2673d9549876c915cce7339b73cc930d5db96d3d4cb6afad3f60cf3b8","libfuzzer/FuzzerIO.h":"5c11b0064a0a277f6639c573b2012ccfb663c6e40586c83c72296899f857a9f0","libfuzzer/FuzzerIOPosix.cpp":"9d0af3bc77681e67660ab48a50eb554c97a16db1d28df4521b544445c8371907","libfuzzer/FuzzerIOWindows.cpp":"f33f07d4057a95b1ee4f66d64dbe272494892c624a7a1946713b8103db98e7f6","libfuzzer/FuzzerInterceptors.cpp":"01dc2caafac89c317c2827e186d0c189a3d8c902d766654bf2e8fa367ae3061c","libfuzzer/FuzzerInterface.h":"ed5718e546bab78ec761f11b44dcd1d99e1db01f8b5f13fa1f1fd5938332cb00","libfuzzer/FuzzerInternal.h":"a3e54f781ebcebb2a602bac69fa120ff8d5aa2cf2037508494af62bd4aab1d62","libfuzzer/FuzzerLoop.cpp":"f9c8631c010e9f055b18dcd5a9d14bd85c28081bab76eee61c3428baa700b767","libfuzzer/FuzzerMain.cpp":"d45c7c743732b98f985b8a0e5aac8ec7e24094936a6d8e421529e0d199992c09","libfuzzer/FuzzerMerge.cpp":"682ea47e21ceeeace16b2f98229c24a6eac479babab7902324df3a693cefe47b","libfuzzer/FuzzerMerge.h":"8285aa1828aa2860fb245dd375476fee827def47123905cb20cbf009d8ed053e","libfuzzer/FuzzerMutate.cpp":"61aa9a164115a390af88415e6f49976fc2601963cc0c1746cb1f3b5b9a82062f","libfuzzer/FuzzerMutate.h":"d518d755d880d0b6740e4fcf096263163ee7d37fc9fc780ff6c99e5a81f46ae2","libfuzzer/FuzzerOptions.h":"80a4811229396d8a45c30ca3bdb32a518c8b1f833e449b0adfbb57e08c5eadbc","libfuzzer/FuzzerPlatform.h":"fb593ac44f20675df3344f33b259e664fb76fa440a9fa8ea58a0caa02fee7f60","libfuzzer/FuzzerRandom.h":"b7d1528dec4266685a2f51fc5a384ec76cd6b8a4662c45a224c3eea71bff818d","libfuzzer/FuzzerSHA1.cpp":"2ef36d5f6a8cf824f90b672606b8a806fc5be64845408f48f3f2118a1464155b","libfuzzer/FuzzerSHA1.h":"ab9a660b68f7087b66c1976ec243111064c6ad72191af9c6fcff03df087f51ef","libfuzzer/FuzzerTracePC.cpp":"74ce66ba812bfccadccff03c89ca006007c4b331e83989d6e5655099f222b1ac","libfuzzer/FuzzerTracePC.h":"1d2ef187beca132043d80c85ded7f64945aa4b378d395f9c50d5292504b4ed02","libfuzzer/FuzzerUtil.cpp":"32aad17154928ceb6a5e83cc49694375bf78190ec02ea1b7ed5a005388c09c24","libfuzzer/FuzzerUtil.h":"fa55c3adce79f19a64df5a3d29aa9f59888b9d111dff8858c0ba17708362d0bf","libfuzzer/FuzzerUtilDarwin.cpp":"3993f3bcd404571a40df3b426a20d1f06f2a2edcf78eb20735746617e2beb08c","libfuzzer/FuzzerUtilFuchsia.cpp":"023f6a39177ef6e87a99c11af2764847b7a7284f1ab8364715eb2ef572d49158","libfuzzer/FuzzerUtilLinux.cpp":"afa567d9023a94b0730d481bdb80901bb003669dad6e195798de68d2d9fe3f75","libfuzzer/FuzzerUtilPosix.cpp":"80491a3501035bbd160985cf1cbb8701b35df655358d49e891a6b9c8c757a97f","libfuzzer/FuzzerUtilWindows.cpp":"0dbf738b96ac62c967e3e51149514968acc509240f5e5e08ebdcf422d3f82b6e","libfuzzer/FuzzerValueBitMap.h":"2473d0b5565a91eaaf7d8ba2b4b50de7334c499d4b7acc35d756f7313a5f48ab","libfuzzer/README.txt":"85c0d212c9d87f73ce5bad8b106edd7ed0614ad362426e1da20eec98261edd54","libfuzzer/afl/afl_driver.cpp":"2d975ce6579e57c9ad01a0746a606acc6df79cb92c835b67bc97f0aa954f05bf","libfuzzer/build.sh":"84648000e6849752bef27f06dc39a2883bc1456c40886b907ef7c75628b84e64","libfuzzer/dataflow/DataFlow.cpp":"7629b3ed2eb6721759c5160c15afee1fdbcb4a5ac35c50ec3fdc93c474820d7f","libfuzzer/dataflow/DataFlow.h":"9228b36ef55f4bd7b2a3624a9ae03bc117a67a01496561beb8755d613b1b2fcf","libfuzzer/dataflow/DataFlowCallbacks.cpp":"fe884f5408bcbbd1ac9812aaf0153ac5c53fc94cad789a7e85b46808e65426a4","libfuzzer/scripts/unbalanced_allocs.py":"57f0d2d9ca282b5398705da529fc28974b40b3aee13558d5e1717c55f985f77f","libfuzzer/standalone/StandaloneFuzzTargetMain.c":"7a3d376f71f77500c94f6e0bb122008695a166dc090c5d3ba91db857f11a0eb7","libfuzzer/tests/CMakeLists.txt":"c4de7cc9fcf9b72cc357850fe53b26a0013cc488ae730979249286ef0adbcab4","libfuzzer/tests/FuzzedDataProviderUnittest.cpp":"b862b4f405122c237a6bcb41a9e84724b3cf3a7a41d286b32757cbb70fcd939c","libfuzzer/tests/FuzzerUnittest.cpp":"b9bfb2a8293facbe0cedfbf0d6fa74163ddaa26b704891c07480cd07994d3333","patches/LICENSE.patch":"31bf9cb565edceae1dc6a34161047bf58d9107375eaa23626b92f3973e8a7e05","rust-toolchain":"ae1deb8794e54871652511296e7897093a557a1ad037a2399a87ae56d4f7019f","src/lib.rs":"2ccd9eb7881376ac7d282bec20f361fe3e770d66a909347623981711c5c5def1","update-libfuzzer.sh":"c7293f3f32918fda2eea8e8aa72c44655b45ef419777ce460e9168bf281f01a6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7ac946290518a40bb3de5fa3eec53e67b75de3838a66cdc39ee8639c32257532","Android.bp":"429123ba39047bafbbe2d47ea956fd31b6593494ecd0b3fd7a704df6a0475d61","CHANGELOG.md":"17a5aa69c20bee890d8d2272acf0e4879d40699c355c12a82ae83d8b82b8f6fb","Cargo.toml":"ab66b7310e4b8a35a558e61fc28c6380b4fd02c86b293d83266967c992974848","LICENSE":"48c3145c8841c75ef872c5b247de9e4798543958828bc06465fdc09ff07ac21e","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"ad98c276a25eb3689cd02e28d2b6fa303792b8be44c04af6e57bf58cb1c4a083","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_NCSA":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c6e572c60d0322db5f3f2589f8efbe09a85c9542b40a24d91615fd78754bbb46","build.rs":"06c842b1733ba96885ee7207e21c650f675d5a73ad781e992c31f8fedc787dcb","cargo_embargo.json":"70bc1f6fe8a3b3d8e4303a25a0fbe27247dabfb2aa86049145be6a3dcedcb17d","ci/script.sh":"d5cbfdb568117064a28db8c8a13490cce35c8f6a5871924b05f6a170aeaafcb2","libfuzzer/CMakeLists.txt":"42bcd62edbb157c22e8ac07fcbdceb0853f6e66677c0b7fd7ba2b3da96ed6681","libfuzzer/FuzzerBuiltins.h":"b54314c80ba87a5fd00a8441196d2c56b71106c28f57c506d05f701fb1d8e33c","libfuzzer/FuzzerBuiltinsMsvc.h":"56dccfbba14bef292da8e5502f7e6483097fec507125091c145f13f41b1ec16c","libfuzzer/FuzzerCommand.h":"74bb7d7e847d278b5ab7eedb298063632be7c1f434aa5a7859b42d0d44fc2fe8","libfuzzer/FuzzerCorpus.h":"bab69e277e7ae9c34c2a7a1dc37e26323cb7590e33cd15e6914e3d2e3a3d3900","libfuzzer/FuzzerCrossOver.cpp":"f22daafb79954ea68b6d1bbfd863943df217ff03c60d1999b813c3138b5ef804","libfuzzer/FuzzerDataFlowTrace.cpp":"152ac1d01113787b575debea88bc822f4a9eadcf2b6969262bf9d0b2c6738d3c","libfuzzer/FuzzerDataFlowTrace.h":"014bd6a1b182e54e3a9b4b11a36656bf93a920382c01b643c5a74463426373fc","libfuzzer/FuzzerDefs.h":"120426d966b9cd83499a8acb9b1fbccd083b9ba02eb2e960d7e03cc4a4203707","libfuzzer/FuzzerDictionary.h":"922a293600ac5012e851f8bb3d021902dfd69b2a7a0c93f1d4df697b3862af9c","libfuzzer/FuzzerDriver.cpp":"ab608696a904bbb42f19b6af7e6b4bc18103b36ba2dbd02c17ef10c9ad3cd2e6","libfuzzer/FuzzerExtFunctions.def":"cbb6288d94adac559aa11e97a93eba6ef68d9b513591fea4c911b671f2753a93","libfuzzer/FuzzerExtFunctions.h":"5fcdaf2a90fe42987d1db75822b34996f1e051768eb37168fc662c7417816492","libfuzzer/FuzzerExtFunctionsDlsym.cpp":"83d3c2e1ea0e3924b11661cd60881cce86d29c2ff5c404286dc3697357ff2375","libfuzzer/FuzzerExtFunctionsWeak.cpp":"3dffb5713a3f4c213aea0239a4f0f39560b5b7c95df5965489083ad5a3845cbe","libfuzzer/FuzzerExtFunctionsWindows.cpp":"b8bcbff84a2fbe21a9ac41560eee792bf516d00201d2216b4bf67c64c5877b3e","libfuzzer/FuzzerExtraCounters.cpp":"07cce5a55b887c7a0abfc0716694c9cba9acc61349f2e42cd8106f27226467d3","libfuzzer/FuzzerExtraCountersDarwin.cpp":"9a3389de6967581e66c3ed956262ec3ee7329188bc9f8b5daf3c67aaf2e17a97","libfuzzer/FuzzerExtraCountersWindows.cpp":"ae59311e1a59df9186437b40f43e1d26561ed0d478a777a10c79597ec30788cb","libfuzzer/FuzzerFlags.def":"35490287179a581f750a4422dd13ed435441eef6a20adc7123313d317bb13853","libfuzzer/FuzzerFork.cpp":"073958d8d47e506a47a140c0a032bcdc9adb5045e5f0fb45b700e45f7e3a5c1e","libfuzzer/FuzzerFork.h":"ba9e944760e277b7ee169163a84c88168e58545a11e3116493f8bfc28cfcbd76","libfuzzer/FuzzerIO.cpp":"cc8069b2673d9549876c915cce7339b73cc930d5db96d3d4cb6afad3f60cf3b8","libfuzzer/FuzzerIO.h":"5c11b0064a0a277f6639c573b2012ccfb663c6e40586c83c72296899f857a9f0","libfuzzer/FuzzerIOPosix.cpp":"9d0af3bc77681e67660ab48a50eb554c97a16db1d28df4521b544445c8371907","libfuzzer/FuzzerIOWindows.cpp":"f33f07d4057a95b1ee4f66d64dbe272494892c624a7a1946713b8103db98e7f6","libfuzzer/FuzzerInterceptors.cpp":"01dc2caafac89c317c2827e186d0c189a3d8c902d766654bf2e8fa367ae3061c","libfuzzer/FuzzerInterface.h":"ed5718e546bab78ec761f11b44dcd1d99e1db01f8b5f13fa1f1fd5938332cb00","libfuzzer/FuzzerInternal.h":"a3e54f781ebcebb2a602bac69fa120ff8d5aa2cf2037508494af62bd4aab1d62","libfuzzer/FuzzerLoop.cpp":"f9c8631c010e9f055b18dcd5a9d14bd85c28081bab76eee61c3428baa700b767","libfuzzer/FuzzerMain.cpp":"d45c7c743732b98f985b8a0e5aac8ec7e24094936a6d8e421529e0d199992c09","libfuzzer/FuzzerMerge.cpp":"682ea47e21ceeeace16b2f98229c24a6eac479babab7902324df3a693cefe47b","libfuzzer/FuzzerMerge.h":"8285aa1828aa2860fb245dd375476fee827def47123905cb20cbf009d8ed053e","libfuzzer/FuzzerMutate.cpp":"61aa9a164115a390af88415e6f49976fc2601963cc0c1746cb1f3b5b9a82062f","libfuzzer/FuzzerMutate.h":"d518d755d880d0b6740e4fcf096263163ee7d37fc9fc780ff6c99e5a81f46ae2","libfuzzer/FuzzerOptions.h":"80a4811229396d8a45c30ca3bdb32a518c8b1f833e449b0adfbb57e08c5eadbc","libfuzzer/FuzzerPlatform.h":"fb593ac44f20675df3344f33b259e664fb76fa440a9fa8ea58a0caa02fee7f60","libfuzzer/FuzzerRandom.h":"b7d1528dec4266685a2f51fc5a384ec76cd6b8a4662c45a224c3eea71bff818d","libfuzzer/FuzzerSHA1.cpp":"2ef36d5f6a8cf824f90b672606b8a806fc5be64845408f48f3f2118a1464155b","libfuzzer/FuzzerSHA1.h":"ab9a660b68f7087b66c1976ec243111064c6ad72191af9c6fcff03df087f51ef","libfuzzer/FuzzerTracePC.cpp":"74ce66ba812bfccadccff03c89ca006007c4b331e83989d6e5655099f222b1ac","libfuzzer/FuzzerTracePC.h":"1d2ef187beca132043d80c85ded7f64945aa4b378d395f9c50d5292504b4ed02","libfuzzer/FuzzerUtil.cpp":"32aad17154928ceb6a5e83cc49694375bf78190ec02ea1b7ed5a005388c09c24","libfuzzer/FuzzerUtil.h":"fa55c3adce79f19a64df5a3d29aa9f59888b9d111dff8858c0ba17708362d0bf","libfuzzer/FuzzerUtilDarwin.cpp":"3993f3bcd404571a40df3b426a20d1f06f2a2edcf78eb20735746617e2beb08c","libfuzzer/FuzzerUtilFuchsia.cpp":"023f6a39177ef6e87a99c11af2764847b7a7284f1ab8364715eb2ef572d49158","libfuzzer/FuzzerUtilLinux.cpp":"afa567d9023a94b0730d481bdb80901bb003669dad6e195798de68d2d9fe3f75","libfuzzer/FuzzerUtilPosix.cpp":"80491a3501035bbd160985cf1cbb8701b35df655358d49e891a6b9c8c757a97f","libfuzzer/FuzzerUtilWindows.cpp":"0dbf738b96ac62c967e3e51149514968acc509240f5e5e08ebdcf422d3f82b6e","libfuzzer/FuzzerValueBitMap.h":"2473d0b5565a91eaaf7d8ba2b4b50de7334c499d4b7acc35d756f7313a5f48ab","libfuzzer/README.txt":"85c0d212c9d87f73ce5bad8b106edd7ed0614ad362426e1da20eec98261edd54","libfuzzer/afl/afl_driver.cpp":"2d975ce6579e57c9ad01a0746a606acc6df79cb92c835b67bc97f0aa954f05bf","libfuzzer/build.sh":"84648000e6849752bef27f06dc39a2883bc1456c40886b907ef7c75628b84e64","libfuzzer/dataflow/DataFlow.cpp":"7629b3ed2eb6721759c5160c15afee1fdbcb4a5ac35c50ec3fdc93c474820d7f","libfuzzer/dataflow/DataFlow.h":"9228b36ef55f4bd7b2a3624a9ae03bc117a67a01496561beb8755d613b1b2fcf","libfuzzer/dataflow/DataFlowCallbacks.cpp":"fe884f5408bcbbd1ac9812aaf0153ac5c53fc94cad789a7e85b46808e65426a4","libfuzzer/scripts/unbalanced_allocs.py":"57f0d2d9ca282b5398705da529fc28974b40b3aee13558d5e1717c55f985f77f","libfuzzer/standalone/StandaloneFuzzTargetMain.c":"7a3d376f71f77500c94f6e0bb122008695a166dc090c5d3ba91db857f11a0eb7","libfuzzer/tests/CMakeLists.txt":"c4de7cc9fcf9b72cc357850fe53b26a0013cc488ae730979249286ef0adbcab4","libfuzzer/tests/FuzzedDataProviderUnittest.cpp":"b862b4f405122c237a6bcb41a9e84724b3cf3a7a41d286b32757cbb70fcd939c","libfuzzer/tests/FuzzerUnittest.cpp":"b9bfb2a8293facbe0cedfbf0d6fa74163ddaa26b704891c07480cd07994d3333","patches/LICENSE.patch":"31bf9cb565edceae1dc6a34161047bf58d9107375eaa23626b92f3973e8a7e05","rust-toolchain":"ae1deb8794e54871652511296e7897093a557a1ad037a2399a87ae56d4f7019f","src/lib.rs":"2ccd9eb7881376ac7d282bec20f361fe3e770d66a909347623981711c5c5def1","update-libfuzzer.sh":"c7293f3f32918fda2eea8e8aa72c44655b45ef419777ce460e9168bf281f01a6"}}
\ No newline at end of file
diff --git a/crates/libfuzzer-sys/Android.bp b/crates/libfuzzer-sys/Android.bp
index 0b77fa8..b4230f4 100644
--- a/crates/libfuzzer-sys/Android.bp
+++ b/crates/libfuzzer-sys/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/libfuzzer-sys/cargo_embargo.json b/crates/libfuzzer-sys/cargo_embargo.json
index 1369b28..7f2e131 100644
--- a/crates/libfuzzer-sys/cargo_embargo.json
+++ b/crates/libfuzzer-sys/cargo_embargo.json
@@ -11,5 +11,6 @@
"force_rlib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/libloading/.android-checksum.json b/crates/libloading/.android-checksum.json
index 192795a..0f6dbf2 100644
--- a/crates/libloading/.android-checksum.json
+++ b/crates/libloading/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b15db011fd386cac81326440f3025fc7e4d6acf596d83bd54fc540bd09ba1030","Android.bp":"c18a92b514543687319af73756c1b75142cacc712da31d803fda4ad3160fc14e","Cargo.toml":"4c8bb2c51de9c9006ac8c79f9e4d4c195c8e17eba91d2cf109356ef9a8d6fca3","LICENSE":"42fbed7b5a4cc5fb244c3f87d92bcfefc1c53ee4f3278f39cdee35378e7ca934","METADATA":"866f7232ee0890f5f02208327ac3a053febf4d1735827a8e22e39388e206512c","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.mkd":"02587f124d47b5eff6d16bb0921ea42e00f25281e5978f6f363f4ad20f254eb8","TEST_MAPPING":"89814c90b1caef628a0b3aa975b6babf81d227905ed1f17e4afa2ad4597a1e28","cargo_embargo.json":"906b0459617002fe5fd6917e1de04a3870578eef2145167feb102cad79b84212","src/changelog.rs":"07fb265c7753662a249e195b9480f376e1c4b7ed47127d3ce2ec653961607b92","src/error.rs":"cfa6b7730a51d85d6e51bdb177c22da10b3eb37fb8efdeec821b8f814fe79346","src/lib.rs":"5d3f219342c54b5f780edcc9f2f3f8607d3193141b29495544beaed35ea6cba9","src/os/mod.rs":"119417c298a4a0f9794459b5c4033b4d1ca9fff5a969308a11a88118fc58a15b","src/os/unix/consts.rs":"4c50894076b2fc25c748d1aa119ba8c1906a55408b08bf585022fe18181ead7f","src/os/unix/mod.rs":"8ce2eafee2d0bacdf5d282af779b8b0ab4eb6c6d1d8997dae1c206a6aa71c8b0","src/os/windows/mod.rs":"f08cd92dbc3b06ce2002f6a52c40aef743fa19b141ffbee4b80db57805b87ffd","src/safe.rs":"a59a7dc4b13199206d0390a812b11c17e363d7f2b5c634a86864f7ca81c9f7be","src/test_helpers.rs":"dd98f0898c197625d4e1a34a2d818c1b2f0ab684498573ac52f31e1183e829df","src/util.rs":"449d095827785da0b06bbc42ddf3b01375a82657ac3a8291231483f75b1e5fc4","tests/constants.rs":"166627565f81c20bc89352537c49cd7a724575e8842abe6c1a0a7c72ca938391","tests/functions.rs":"f06c269c6fbbed403248a73a90b487584aa8013601c14aadff81a8f1fd872e1e","tests/library_filename.rs":"31189764525caa9d8afc31a1b6a5529a491aa5a9ea9e91b812621f5e9d5cd641","tests/markers.rs":"cc0b9435ef5271bf8a8da763a51ac856d781417f9c84f2f83deb78568d72a0f2","tests/nagisa32.dll":"17e85f75bdf71f41386a151111adf19c7d0a4bdbf8873124b54dd7d391a70194","tests/nagisa64.dll":"985e09406a9ba701cae629c26451a57a58c0a4e2cdf367c62824f53be0add480","tests/windows.rs":"b3a15c46cfa8a334dff4d830f50db74f05af86a22567f292d0eba90e9f1529bc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b15db011fd386cac81326440f3025fc7e4d6acf596d83bd54fc540bd09ba1030","Android.bp":"1898021272feca5250c6f047b9ba59c8acae47e5148ec27eec38f706be6ab127","Cargo.toml":"4c8bb2c51de9c9006ac8c79f9e4d4c195c8e17eba91d2cf109356ef9a8d6fca3","LICENSE":"42fbed7b5a4cc5fb244c3f87d92bcfefc1c53ee4f3278f39cdee35378e7ca934","METADATA":"866f7232ee0890f5f02208327ac3a053febf4d1735827a8e22e39388e206512c","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.mkd":"02587f124d47b5eff6d16bb0921ea42e00f25281e5978f6f363f4ad20f254eb8","TEST_MAPPING":"89814c90b1caef628a0b3aa975b6babf81d227905ed1f17e4afa2ad4597a1e28","cargo_embargo.json":"eda680b31f50ed39bbe4eb98da4d2f7c7651fb7ee1e29c7d233205aa67b03c96","src/changelog.rs":"07fb265c7753662a249e195b9480f376e1c4b7ed47127d3ce2ec653961607b92","src/error.rs":"cfa6b7730a51d85d6e51bdb177c22da10b3eb37fb8efdeec821b8f814fe79346","src/lib.rs":"5d3f219342c54b5f780edcc9f2f3f8607d3193141b29495544beaed35ea6cba9","src/os/mod.rs":"119417c298a4a0f9794459b5c4033b4d1ca9fff5a969308a11a88118fc58a15b","src/os/unix/consts.rs":"4c50894076b2fc25c748d1aa119ba8c1906a55408b08bf585022fe18181ead7f","src/os/unix/mod.rs":"8ce2eafee2d0bacdf5d282af779b8b0ab4eb6c6d1d8997dae1c206a6aa71c8b0","src/os/windows/mod.rs":"f08cd92dbc3b06ce2002f6a52c40aef743fa19b141ffbee4b80db57805b87ffd","src/safe.rs":"a59a7dc4b13199206d0390a812b11c17e363d7f2b5c634a86864f7ca81c9f7be","src/test_helpers.rs":"dd98f0898c197625d4e1a34a2d818c1b2f0ab684498573ac52f31e1183e829df","src/util.rs":"449d095827785da0b06bbc42ddf3b01375a82657ac3a8291231483f75b1e5fc4","tests/constants.rs":"166627565f81c20bc89352537c49cd7a724575e8842abe6c1a0a7c72ca938391","tests/functions.rs":"f06c269c6fbbed403248a73a90b487584aa8013601c14aadff81a8f1fd872e1e","tests/library_filename.rs":"31189764525caa9d8afc31a1b6a5529a491aa5a9ea9e91b812621f5e9d5cd641","tests/markers.rs":"cc0b9435ef5271bf8a8da763a51ac856d781417f9c84f2f83deb78568d72a0f2","tests/nagisa32.dll":"17e85f75bdf71f41386a151111adf19c7d0a4bdbf8873124b54dd7d391a70194","tests/nagisa64.dll":"985e09406a9ba701cae629c26451a57a58c0a4e2cdf367c62824f53be0add480","tests/windows.rs":"b3a15c46cfa8a334dff4d830f50db74f05af86a22567f292d0eba90e9f1529bc"}}
\ No newline at end of file
diff --git a/crates/libloading/Android.bp b/crates/libloading/Android.bp
index 3717f8c..1ba35bf 100644
--- a/crates/libloading/Android.bp
+++ b/crates/libloading/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/libloading/cargo_embargo.json b/crates/libloading/cargo_embargo.json
index fbb9fcd..1d9bb64 100644
--- a/crates/libloading/cargo_embargo.json
+++ b/crates/libloading/cargo_embargo.json
@@ -3,5 +3,6 @@
"//apex_available:platform",
"com.android.virt"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/libtest-mimic/.android-checksum.json b/crates/libtest-mimic/.android-checksum.json
index 7d04ab6..767a9a3 100644
--- a/crates/libtest-mimic/.android-checksum.json
+++ b/crates/libtest-mimic/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"979dd5e65d12cd69777a3387db46a9ac49e647e91e626035cf4f68db47f82d85","Android.bp":"093254e85a5a1e13237e12f55d54d2d2b236413f22ff82cad7e15258f7c6864c","CHANGELOG.md":"042faf3861ae1189907c6f1c0708c871f4c067b012872a90990735c93d0904db","Cargo.lock":"07e44042fa86a0263395000f9276de07e206221e2f6693d20757ed0d21bf6acd","Cargo.toml":"38014b3720bcafbd6b40e58ef8ff9023689ef6ff20fcd4f73bd395a10bb70393","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"5d21ed63d7eff730f91125009eaa392f3037f233ca94fc40e43b1073cb42fd1f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"51ca7c93392206c3dbc7db979d3c960b8374be67397818580b24af13bae3aba0","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/README.md":"d73d818957b248a1e11eca23fb9babafac25a4f73938153086161725e9e50c31","examples/simple.rs":"a2e9be76ffa17dd69fcf58e99fe0ab7b4d9fd5b12e99c37f6b11f9a4623d222f","examples/tidy.rs":"864fb390b2a14a7f53f980a3b942a6ace7a10950b63ecd8e81c7aca80d8adc39","src/args.rs":"4b6161e60bf7135564f634d27777987e9b9175d8368cddb13a492e070d01c01e","src/lib.rs":"526b862d093c23e13657d2717a6f22a1f5f7a91144a2b86a0ea8ea37e09139dc","src/printer.rs":"7ecb71e0a61f620b1ca4246a15f0f22fe61546380392cf000d0f4b84cd88fdbf","tests/all_passing.rs":"80b147b1d1e701ae96c6abf1fced8546563834aa62e6a918af9c6e75b65a94e2","tests/common/mod.rs":"3e08c83c11cf3fd9d9936e0f934da43450e8008e1c928639d4e7e6f09adf6497","tests/main_thread.rs":"999352f00779a0a269711b37b5f6d73dbdfb517da122dec82bef585462f97afc","tests/mixed_bag.rs":"db5287bb6f9fb61bb00b60a75f0f31beba8886ad76044b7278040979b5a01d80","tests/panic.rs":"d59e74b4e5edb79825b11a79eff09366f21538c752303cd21ef5c9afad9bd303","tests/real/README.md":"c12388c7e0ba31cc28fc150a99c85c4488961f05467ef84ee332c4d8046bfdb4","tests/real/ignored.rs":"b747e0548e30c264fb6ac1f1486ba062769f2e74d2fda0efba21a00659a6f99f","tests/real/mixed_bag.rs":"1809d8bdab3e40295a0619c0e562a090287fe61eabaeb07cd8b2831b7e2304d2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"979dd5e65d12cd69777a3387db46a9ac49e647e91e626035cf4f68db47f82d85","Android.bp":"f02ab296693720dc4c7fa9812f20cb266bc90ff6ac928beac28d1bc9d0790f2b","CHANGELOG.md":"042faf3861ae1189907c6f1c0708c871f4c067b012872a90990735c93d0904db","Cargo.lock":"07e44042fa86a0263395000f9276de07e206221e2f6693d20757ed0d21bf6acd","Cargo.toml":"38014b3720bcafbd6b40e58ef8ff9023689ef6ff20fcd4f73bd395a10bb70393","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"5d21ed63d7eff730f91125009eaa392f3037f233ca94fc40e43b1073cb42fd1f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"51ca7c93392206c3dbc7db979d3c960b8374be67397818580b24af13bae3aba0","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/README.md":"d73d818957b248a1e11eca23fb9babafac25a4f73938153086161725e9e50c31","examples/simple.rs":"a2e9be76ffa17dd69fcf58e99fe0ab7b4d9fd5b12e99c37f6b11f9a4623d222f","examples/tidy.rs":"864fb390b2a14a7f53f980a3b942a6ace7a10950b63ecd8e81c7aca80d8adc39","src/args.rs":"4b6161e60bf7135564f634d27777987e9b9175d8368cddb13a492e070d01c01e","src/lib.rs":"526b862d093c23e13657d2717a6f22a1f5f7a91144a2b86a0ea8ea37e09139dc","src/printer.rs":"7ecb71e0a61f620b1ca4246a15f0f22fe61546380392cf000d0f4b84cd88fdbf","tests/all_passing.rs":"80b147b1d1e701ae96c6abf1fced8546563834aa62e6a918af9c6e75b65a94e2","tests/common/mod.rs":"3e08c83c11cf3fd9d9936e0f934da43450e8008e1c928639d4e7e6f09adf6497","tests/main_thread.rs":"999352f00779a0a269711b37b5f6d73dbdfb517da122dec82bef585462f97afc","tests/mixed_bag.rs":"db5287bb6f9fb61bb00b60a75f0f31beba8886ad76044b7278040979b5a01d80","tests/panic.rs":"d59e74b4e5edb79825b11a79eff09366f21538c752303cd21ef5c9afad9bd303","tests/real/README.md":"c12388c7e0ba31cc28fc150a99c85c4488961f05467ef84ee332c4d8046bfdb4","tests/real/ignored.rs":"b747e0548e30c264fb6ac1f1486ba062769f2e74d2fda0efba21a00659a6f99f","tests/real/mixed_bag.rs":"1809d8bdab3e40295a0619c0e562a090287fe61eabaeb07cd8b2831b7e2304d2"}}
\ No newline at end of file
diff --git a/crates/libtest-mimic/Android.bp b/crates/libtest-mimic/Android.bp
index f025c47..dcb3e16 100644
--- a/crates/libtest-mimic/Android.bp
+++ b/crates/libtest-mimic/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/libtest-mimic/cargo_embargo.json b/crates/libtest-mimic/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/libtest-mimic/cargo_embargo.json
+++ b/crates/libtest-mimic/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/libusb1-sys/.android-checksum.json b/crates/libusb1-sys/.android-checksum.json
index 96b17d4..f473269 100644
--- a/crates/libusb1-sys/.android-checksum.json
+++ b/crates/libusb1-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"21989bd62697ceba4d5a6c4764f2358aa638a3a3a0489811e213f91cf106ffe0","Android.bp":"f8c133fa5cde3d40eeeeb0ece5f2bab4515e98a080276f7b8e30d9841e3e3c21","CHANGELOG.md":"fb2818f01db9ac3394a228fe0ed8d484f4a5e08b3e791793bffb6933cf7e7ee6","Cargo.toml":"958bbd8c1404a3d5cb81c90fcdfe5bc02019d0ee49e7ff175b3e30eed1f1b28f","LICENSE":"e8eb6936b649c573dbf8acdf063b5e2720f3f601146881aa96c8e915e66f2b97","METADATA":"e3ca0621e55cbd93fd981d969a8f06f0e0bf80096f0048b9360f75b420ecc963","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cdf70a2c21f2bc2ecb6cb2757af8d5d0b215206a76afb4b3366ec9e84294fe48","android_config.toml":"1972728c22d15d3d3a599f45d9d21fba9d3b5f4289b4aa83fda864fc8169b6b1","build.rs":"bb2a047e84ae6f00a066444ba4559cababfbd18706d8b8541d42c8062db5d755","cargo_embargo.json":"70a9044919cc361d9006db3ffa248fef6c7a41f58d16ef6f28edee6ac01dcf4b","module_block.bp.fragment":"a11f9189234c1b48386a2ec7d3a2867ef726c1a189810cece892664882c0c537","module_block_platform.bp.fragment":"4c53e41a62008fb3f4bf3f02a238ab6dce36a5f0099974dc4e3aec0de96b3a9f","src/constants.rs":"55d773e86057ae53283376e5c6f91b10fb234fc2effb62c3c4c276f1a2c0c431","src/lib.rs":"b1c3f5a0d43814572c31d16adf71f998286ec18002d8c5e7d39d36de47f3f162","tests/test.rs":"fe8b44ec5057ed9b57d38b66d73144294f8cec297c086de2082f44de321c014f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"21989bd62697ceba4d5a6c4764f2358aa638a3a3a0489811e213f91cf106ffe0","Android.bp":"ae9483c4da60801f84c2daf5af727c6c3239f338dd57673d099fb1ac5c8d09fd","CHANGELOG.md":"fb2818f01db9ac3394a228fe0ed8d484f4a5e08b3e791793bffb6933cf7e7ee6","Cargo.toml":"958bbd8c1404a3d5cb81c90fcdfe5bc02019d0ee49e7ff175b3e30eed1f1b28f","LICENSE":"e8eb6936b649c573dbf8acdf063b5e2720f3f601146881aa96c8e915e66f2b97","METADATA":"e3ca0621e55cbd93fd981d969a8f06f0e0bf80096f0048b9360f75b420ecc963","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cdf70a2c21f2bc2ecb6cb2757af8d5d0b215206a76afb4b3366ec9e84294fe48","android_config.toml":"1972728c22d15d3d3a599f45d9d21fba9d3b5f4289b4aa83fda864fc8169b6b1","build.rs":"bb2a047e84ae6f00a066444ba4559cababfbd18706d8b8541d42c8062db5d755","cargo_embargo.json":"71f596143c43dcacc5bbe218e181fe9ac774717ca3940976f453fa00b08957dc","module_block.bp.fragment":"a11f9189234c1b48386a2ec7d3a2867ef726c1a189810cece892664882c0c537","module_block_platform.bp.fragment":"4c53e41a62008fb3f4bf3f02a238ab6dce36a5f0099974dc4e3aec0de96b3a9f","src/constants.rs":"55d773e86057ae53283376e5c6f91b10fb234fc2effb62c3c4c276f1a2c0c431","src/lib.rs":"b1c3f5a0d43814572c31d16adf71f998286ec18002d8c5e7d39d36de47f3f162","tests/test.rs":"fe8b44ec5057ed9b57d38b66d73144294f8cec297c086de2082f44de321c014f"}}
\ No newline at end of file
diff --git a/crates/libusb1-sys/Android.bp b/crates/libusb1-sys/Android.bp
index 8e9ee67..90e0b7c 100644
--- a/crates/libusb1-sys/Android.bp
+++ b/crates/libusb1-sys/Android.bp
@@ -27,6 +27,7 @@
"//apex_available:anyapex",
],
vendor_available: true,
+ min_sdk_version: "29",
shared_libs: ["libusb"],
}
@@ -44,6 +45,7 @@
"//apex_available:anyapex",
],
vendor_available: true,
+ min_sdk_version: "29",
// This library should be depended upon only by programs
// running on Android at OS level (e.g. Android platform
// services). The reason is that programs using "libusb_platform"
diff --git a/crates/libusb1-sys/cargo_embargo.json b/crates/libusb1-sys/cargo_embargo.json
index f7006a2..04e205c 100644
--- a/crates/libusb1-sys/cargo_embargo.json
+++ b/crates/libusb1-sys/cargo_embargo.json
@@ -19,5 +19,6 @@
}
}
}
- ]
+ ],
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/libz-sys/.android-checksum.json b/crates/libz-sys/.android-checksum.json
index 66e2f0c..64b6732 100644
--- a/crates/libz-sys/.android-checksum.json
+++ b/crates/libz-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"417629c6dd69ad445b45e7d6629347e3980ceb398e9685ea73b47148d8e59a2c","Android.bp":"a0579e6b621066ba7b6e0469908dd558b94037b21e159b141539d94ff1d0c593","Cargo.toml":"f8c6f45da773c88ccc42ea4e26aee2965b82ec257e0b61ffa8c3fbe33ab7d493","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3bdbb19e21f75d3030608f4a1af9064cd0843e0b17da4970343e19e284e0ecf7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README-zng.md":"c62c6212742dd832a865b48962c3a91d0d3f9970032a1694abc637ae937abd31","README.android":"4707eda9b9853468d6af947830a72232157afa13f2fb6ad78a04d7a502d61e57","README.md":"5fd98319253bcb37a530ce6c9d9875b2ee6b5998fa2a4ae770864e5969acefb0","TEST_MAPPING":"16dc7654734aa1b0b24e6311107dfd5fc00f51292b2fcf45b2764cfcce3c71c5","android_config.toml":"a67b666814f714342a6fec7917e38e73b62f60cc14eab3fd96da4dfe85dcc20f","build.rs":"ca55ca0092f79d9a71c76f59f2cfb1063031c9e674f2c2e2ccff7b3aecf61afe","cargo_embargo.json":"c3e1f34bad0ee501484da7e2ede9f8be6de2c26b2ae7e9f9bfd8251f6a797db0","patches/readme.patch":"6bf296bb117f72606ba7be2db46bdea6e4401bca977bb09a592d5c514cd7016b","src/lib.rs":"3f2fef03049e672d896fe93b382c19b50badc4851a76b260ceaffeee3ab0a319","src/smoke.c":"4a36cb1d00aaf9ef21958dad2e46a2bdae4e5f309c32bf58b9ac447d3eb189ea","zng/cc.rs":"f7f1bedf6d219b4ed0b26a4c31b65be29f71fb0fd35a0850940c5913864254e7","zng/cmake.rs":"ec760bd7e1619cfdc36f751ae91c9c7b01fb1fc6fa0a12860bf2c01378013d52"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e70807c70eed8cdfe4caff730029f983bf8df1aac223af995f49273020afe1ae","Android.bp":"07147e2addd8271a282101fd282e7aaae9a109d9e5f2f7f7c0f5a21e41c6fe3f","Cargo.toml":"8e35697be2878e53bbcd83a5b6f7fa3bee30215cf0512540c374ae4be3d2709a","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"c15a6bc04be6e0235c2be362753e2f91966fded59449c1225ac0db3163adc9e1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README-zng.md":"c62c6212742dd832a865b48962c3a91d0d3f9970032a1694abc637ae937abd31","README.android":"4707eda9b9853468d6af947830a72232157afa13f2fb6ad78a04d7a502d61e57","README.md":"5fd98319253bcb37a530ce6c9d9875b2ee6b5998fa2a4ae770864e5969acefb0","TEST_MAPPING":"16dc7654734aa1b0b24e6311107dfd5fc00f51292b2fcf45b2764cfcce3c71c5","android_config.toml":"a67b666814f714342a6fec7917e38e73b62f60cc14eab3fd96da4dfe85dcc20f","build.rs":"ca55ca0092f79d9a71c76f59f2cfb1063031c9e674f2c2e2ccff7b3aecf61afe","cargo_embargo.json":"c3e1f34bad0ee501484da7e2ede9f8be6de2c26b2ae7e9f9bfd8251f6a797db0","patches/readme.patch":"6bf296bb117f72606ba7be2db46bdea6e4401bca977bb09a592d5c514cd7016b","src/lib.rs":"3f2fef03049e672d896fe93b382c19b50badc4851a76b260ceaffeee3ab0a319","src/smoke.c":"4a36cb1d00aaf9ef21958dad2e46a2bdae4e5f309c32bf58b9ac447d3eb189ea","zng/cc.rs":"f7f1bedf6d219b4ed0b26a4c31b65be29f71fb0fd35a0850940c5913864254e7","zng/cmake.rs":"3c37050353b440202153075e23ff594a54a933ab2345b52bf1e2d389febd0836"}}
\ No newline at end of file
diff --git a/crates/libz-sys/.cargo-checksum.json b/crates/libz-sys/.cargo-checksum.json
index 69a5d40..eb694e3 100644
--- a/crates/libz-sys/.cargo-checksum.json
+++ b/crates/libz-sys/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"9affea24b897d2a1fe6b091c89429cd78821d8a580f0ef5da85224172f145c29","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"34c467b6945a22696d060b8fdd2379d464acb3408d4c599d3dc5fe4fa1b4c84f","README-zng.md":"438ab65416835d72c7dd168338af3db6f1a3d8ccee455af4e1d75438a781eb71","README.md":"3607fa398947cdc3cfba6cc985fd8191fcbf2699d89d3a36e3500eb27a0ca17e","build.rs":"98c443fc279a2d2c692278c1ae7f511641cefe41f9499f8cd85886b5cb15c237","src/lib.rs":"8f9f42e8c80e134fa6f5724c677a341689e2e16cbe93a15495a1b4d8bfa90c49","src/smoke.c":"10607c81b73811bfcb9718767312bf97ba2ccf7048ea2f18a2085aa06ad7f91b","src/zlib-ng/CMakeLists.txt":"532107d240318e3ebe90f1ec8ab48423fb10053a94123cda88c645f98a148bff","src/zlib-ng/LICENSE.md":"6c9f0d975b41afaa34d22f55bb8986ce69e5cb7ad327cb2b28820cd425edf5ee","src/zlib-ng/adler32.c":"bc5308ff3ea584bf13b626e39ad261abbaf7f87e6eb92a9195c8cef70bc0bf9d","src/zlib-ng/adler32_p.h":"fa8b96371128c54ed9c2a06175006738d395d380672b4894c32fece37b8a96a0","src/zlib-ng/arch/arm/acle_intrins.h":"313646b741417269d175b2620c7bd2cf1cb5bfc940c5bb3dd600189fce27cd79","src/zlib-ng/arch/arm/adler32_neon.c":"4bbe8993b785c2aba95425e9ebc15fe62f798617b6e10c440c60570e130b89db","src/zlib-ng/arch/arm/arm_features.c":"b34274724ff07a524f78ca54d3e94391503979e6e37100ab6cbf6378225e84fd","src/zlib-ng/arch/arm/arm_features.h":"9895f303d1b23652cd3a0d08491be3ca832b9a19e874e710bd6818827424efb7","src/zlib-ng/arch/arm/arm_functions.h":"4eaa8497424cb1cb8f0245639c4a20d4d78afb09da2f6d866d2d1b4d8fc512cf","src/zlib-ng/arch/arm/chunkset_neon.c":"75fc5cb9c1a930c32bc3fc429b00ec7d904d34c140ef73d70d45d5bb24b6a91b","src/zlib-ng/arch/arm/compare256_neon.c":"233a8cb35b3f9e268e05537e461f296cf36703a18513eacd97d7c2f58588ab43","src/zlib-ng/arch/arm/crc32_acle.c":"9aa12fe604e9ce3c0bd62be7ecb5869aec885f62a7de585f742dad6b24355d70","src/zlib-ng/arch/arm/neon_intrins.h":"6b04dee63a9567b49f644b9b0a7090ab07a3d599712946ef09abf8687c714d28","src/zlib-ng/arch/arm/slide_hash_armv6.c":"70326137b64e6a0d044676eff2cfdb45609e0fe5a76221b87fff0b8e2d07b523","src/zlib-ng/arch/arm/slide_hash_neon.c":"3de55f47a361f2fa80ec2ddfff27b2112ceadcf6d146fad041be5a99c5e52e39","src/zlib-ng/arch/generic/adler32_c.c":"fe5f072fa62d9ce954b26c8eaa6bef1954f457d6c2e5bb7d19eabdf97006c781","src/zlib-ng/arch/generic/adler32_fold_c.c":"49795041bcf43d71eda2c0a025bd61206ae293aeecee5f26a746a2e570b3a9e9","src/zlib-ng/arch/generic/chunk_permute_table.h":"3f1e09e697a9b2dff4395aca356e61765c44511a9dc653abb6998671afd20ae6","src/zlib-ng/arch/generic/chunkset_c.c":"b04b8a75613884f7cf7277865c642eadbff496683b5d6a20fb55255264cf13f8","src/zlib-ng/arch/generic/compare256_c.c":"0ddb8cf1ddc7ea54a6082c1ddd19f338537ccb26cf9c4c45536c5e24526034c1","src/zlib-ng/arch/generic/compare256_p.h":"42b893a97505f69880b90905eb187510dd5dd42323f8f360e6ff5620c107fac9","src/zlib-ng/arch/generic/crc32_braid_c.c":"b9dac546c3eeef8f35cedd6ca43a5e933bdd326d55c4572f79b6c4c5ec6529b2","src/zlib-ng/arch/generic/crc32_fold_c.c":"fd551264bb8b71b611af698c28b3fd7dc49c2a19280e52332e5e2ab78ed886c9","src/zlib-ng/arch/generic/generic_functions.h":"31ae76a4e15e388107a3ec655a0677b5f0c91b92cc27b96a8cba950b35b01ae1","src/zlib-ng/arch/generic/slide_hash_c.c":"016e4b5a12a174f8f01619f778107ada5fe6c88cd836117954e4a16e9b14a3db","src/zlib-ng/arch/power/adler32_power8.c":"e5a5bfdd9963e8f906e36978f1a655139908740559da2b382ddd5f3e2ffe6f56","src/zlib-ng/arch/power/adler32_vmx.c":"841a7e3792d1f68a0925969d6f9737cfb2b650b3a82721a88f1e5648f7b0a58a","src/zlib-ng/arch/power/chunkset_power8.c":"06e7329d761c5660e29e7b1e61e77dae378f34beb2037ffd4dfc36e4b486ca10","src/zlib-ng/arch/power/compare256_power9.c":"3e1a4c9ffa94663facc566054bc406e513aa2740ace3700cd77780628eba41c1","src/zlib-ng/arch/power/crc32_constants.h":"d73e3b9025de9fade7fa3ba2bbf5f56a1499a84c53d8ca7f5e744a0714d8599b","src/zlib-ng/arch/power/crc32_power8.c":"add20ee86ff5c28396ee2e7f77d825d7e425b89467331953690c40f40b5dba41","src/zlib-ng/arch/power/fallback_builtins.h":"78a8da60bad8ba01278e495482108adabf9e96bdb214e869b61ab1f63f518c9b","src/zlib-ng/arch/power/power_features.c":"8a2beeb8d2b9ee2d64727d1cf1bdee9735e8251c80e8b667f179f8d662a907a9","src/zlib-ng/arch/power/power_features.h":"cb47038eb9acbbdcc1b7f93d15fa992d2af3990416dd4f9d9aca38019c396dad","src/zlib-ng/arch/power/power_functions.h":"22bd6a1ada49631fb7d9910b582c70ba282bbeac8ff0cc6e7df597729d4fa76a","src/zlib-ng/arch/power/slide_hash_power8.c":"58d93cee1a2cf14f13a8e9e31ba5149fe2b1e069846f52ac1f11c42cfcbd49a4","src/zlib-ng/arch/power/slide_hash_vmx.c":"1b6297a9616456ba534bc1d93afcb99e36dac357be68aed106bb71dfea621a86","src/zlib-ng/arch/power/slide_ppc_tpl.h":"f34012da966b633e0f20152387d9d17fd809ae8c1981a861ce3ee482c1baf8fb","src/zlib-ng/arch/riscv/adler32_rvv.c":"6e5997f3c762a8e82eedae540452dd5db32c2de49b403fc7b1caea7dc3a19f7c","src/zlib-ng/arch/riscv/chunkset_rvv.c":"d5b0fd27dcc8d4b3773caae16290014fdbc0011cf62e7f63a4e5d897149b165e","src/zlib-ng/arch/riscv/compare256_rvv.c":"bd459a91bdc4940c4ba74c7dea22cc217b16ca1ab8223a29ff07263061a4d1af","src/zlib-ng/arch/riscv/riscv_features.c":"23f597cf4c8e39903e79490ca50abcf350912cef1db625300324244530f1476b","src/zlib-ng/arch/riscv/riscv_features.h":"b740c857e9107b306a03f39bfbc13bcb4d0180a36ac1eb5242fb73ea16ea9fb3","src/zlib-ng/arch/riscv/riscv_functions.h":"8580367dfb55010555593f4bb530051a4091fa0f8a4c64b85015638ab8a2bc73","src/zlib-ng/arch/riscv/slide_hash_rvv.c":"695ce98aec96954a3ef8013cbefe2849073d681bb93a9e30109dfe8899ce01b9","src/zlib-ng/arch/s390/crc32-vx.c":"744eb192500461bf570e8d5241b958a4978d95f9eb39cc91e0d2f95f3ff7b965","src/zlib-ng/arch/s390/dfltcc_common.h":"824733339cbecbd8acc67aff67d49f8e7dcdf2100eaaeba5762e2de4a3ed32ce","src/zlib-ng/arch/s390/dfltcc_deflate.c":"067b13655f7dc540733094e5059649fd5ba3616093e51c2fc34a3a79b362fd47","src/zlib-ng/arch/s390/dfltcc_deflate.h":"afc4627159a3e11b7e65100f33d8feee1dd16ec1b6d2d179bdbc534aa3abc284","src/zlib-ng/arch/s390/dfltcc_detail.h":"1878d49f17c45efcff99fc8ea03554dcc344dbd615b64606c27c0160aa02c9bf","src/zlib-ng/arch/s390/dfltcc_inflate.c":"38a93f793eded1a81e7513ff5d11efe9396ebca55fbb8f892e2ab3663bae81d3","src/zlib-ng/arch/s390/dfltcc_inflate.h":"1279bbfd9103477b3f42af82edaa848dec06ba6ebc8e88ac685ff2c3e8412744","src/zlib-ng/arch/s390/s390_features.c":"fdcb9e518e410bb98bd073ab66cde2be6b1806720b64df049b2af5a3ff8e44ee","src/zlib-ng/arch/s390/s390_features.h":"01a7ff49a0ba3729035e781d462f6d432ff3bfa2358673287f238a75a036e606","src/zlib-ng/arch/s390/s390_functions.h":"274b90fd8f3a7488161c3714757da45ddd75942869b21eb8f3c1651e98e5f0ee","src/zlib-ng/arch/x86/adler32_avx2.c":"01dd4d9331c073067d8be3e7186d8e37b10074f0e7f817da373779fb39df6cc2","src/zlib-ng/arch/x86/adler32_avx2_p.h":"45e6264edffc737081f55a5b5e85b28d9db0b27b63183ffbb492f8c11bc670a2","src/zlib-ng/arch/x86/adler32_avx512.c":"359f2288d59e238b24aa0d3311276ca6996ab25bc4b021635004241cf43be03a","src/zlib-ng/arch/x86/adler32_avx512_p.h":"8c5699448448633f5a864877649df9c8c80cddacadaeb90c977f855b18f6f9e6","src/zlib-ng/arch/x86/adler32_avx512_vnni.c":"149ab3c8b94d82a8ffb312b87718ca7f690afaaef8b8f1cfd14d288cd8b2755e","src/zlib-ng/arch/x86/adler32_sse42.c":"3b57c435550bfe7147a8f6a33d8fc489b20cb2cb69218fcb00471125c86797fe","src/zlib-ng/arch/x86/adler32_ssse3.c":"456f5eaa60d72383467b29fff0c95a82dc9f0a0a542376136d7e18d3ac0ae046","src/zlib-ng/arch/x86/adler32_ssse3_p.h":"5aab2f802ba6bdebc63b411018e5116fe26d38e90adf353646b65af4ebe7fa40","src/zlib-ng/arch/x86/avx2_tables.h":"cc6797bf3d9e216744b781c841378776693dcefa7cf0650b5c3f40e43c005d57","src/zlib-ng/arch/x86/chunkset_avx2.c":"81b1e92cd923a8e18fe27bae2b96a70c766e64c19e8744be2e08a8ba939e102a","src/zlib-ng/arch/x86/chunkset_avx512.c":"8fd6c0997cdb1629b207459ded24171f80c103f4f9a8d647f21a6218e8883ed0","src/zlib-ng/arch/x86/chunkset_sse2.c":"ea07a9dade5a61940b1aa941303dfca2730bbce43fb678947203df948b80dfb8","src/zlib-ng/arch/x86/chunkset_ssse3.c":"0a7e7e5b378fd7095acbd852b2c69a9dbc347f71c62fdb3017dd57f1842e2384","src/zlib-ng/arch/x86/compare256_avx2.c":"10d391424b98136e49fdc8a0ded736f4cc41348b16ee2631a244052972d6680f","src/zlib-ng/arch/x86/compare256_sse2.c":"bc0786a039af3564ce2c91ad1401cd8f367ca10e6cc946f05fd4a311ee68aad0","src/zlib-ng/arch/x86/crc32_fold_pclmulqdq_tpl.h":"c611b1bb190707b2ef7af532a8391505249ad6c3e7bcaa5b7251019bcd9539bd","src/zlib-ng/arch/x86/crc32_fold_vpclmulqdq_tpl.h":"7eddba31e3d1b1808fc6df9f96ada03c59952961af895d8538f5a8292392b5cc","src/zlib-ng/arch/x86/crc32_pclmulqdq.c":"f247408c353bbd0fcafff23fb97aeb4d9a72e0a416effea566183b9b5dbedf7c","src/zlib-ng/arch/x86/crc32_pclmulqdq_tpl.h":"5ebf202814edcfe33de19a14f44b3369dd9bff9a75e19b2f26caaa4e1e84fdbb","src/zlib-ng/arch/x86/crc32_vpclmulqdq.c":"8fb658d1faabac53352b04252e12598a9bfa89f9b5154b5fa1f89e5a55293ed3","src/zlib-ng/arch/x86/slide_hash_avx2.c":"7429fa11aaf843ed5c34eada302d66bd25014f8399ad1ff6892901478fc1823b","src/zlib-ng/arch/x86/slide_hash_sse2.c":"ecfeb98984fabd57219879717ce2344b203f65364e7062a1b9e6ec8d87241f93","src/zlib-ng/arch/x86/x86_features.c":"1e55149f0cea646ad9f124cf3e16662777e911680b3088644a137735387a3a33","src/zlib-ng/arch/x86/x86_features.h":"8777f2bcba84b09bb31b42a172ec7dacf2d26316e610f1db48740385f672bf1b","src/zlib-ng/arch/x86/x86_functions.h":"724df517ea45b3d6152ed0db9ba09974fc17ba1aa49d0ee3d30e5b3d5ec0aa42","src/zlib-ng/arch/x86/x86_intrins.h":"984c222d7df4ca0a9d27f3b33d210c164b1f26ab4158448c851b7dda96ae674b","src/zlib-ng/arch_functions.h":"eb9a65b78dee631eba43ecd8028835ff1e19b534336a7f6021223008db0c909e","src/zlib-ng/chunkset_tpl.h":"a8056c93df6bd2253936d105bc089e5a49b84239b4d7c4c56061f09e57e00d49","src/zlib-ng/cmake/detect-arch.c":"8c8d32ccda6e4a06c9ca6548bb386a2645f9e24683c91b33b06af6af6e01c378","src/zlib-ng/cmake/detect-arch.cmake":"85a2eed469fc7765e51c382f475868a644036f057f5b749d3ef59eec2b4b2748","src/zlib-ng/cmake/detect-coverage.cmake":"4664d51152d51282ae50621f4d510ab72cf8978b266c614b7c5361750db6d1a9","src/zlib-ng/cmake/detect-install-dirs.cmake":"4c8e72cee23ce9c6db02566a31fc7a78f0beeac6f09c61c2d90a1cff3c083db1","src/zlib-ng/cmake/detect-intrinsics.cmake":"f18f8b5d431a0d48e97caf8c510ccb6bf3db2ed6571d91fa8c0525b2d56177cb","src/zlib-ng/cmake/detect-sanitizer.cmake":"1a029f2f0a10249a9e0e9dd10f458a3172444ed80ded7d5e883d48cdac5d09e2","src/zlib-ng/cmake/fallback-macros.cmake":"a8c8f70e5483177280cbebf99f929a7cf5ffe2b79fedb79eed570ecafc78effc","src/zlib-ng/cmake/toolchain-aarch64.cmake":"46be0bf580a49a528c72005484655afad1de3705b39a66a7b0c213b0fa81cee6","src/zlib-ng/cmake/toolchain-arm.cmake":"05e38076fd6ffb9785ff9844ccecd26436c9dc4c25b7777b62e5f52e788c3882","src/zlib-ng/cmake/toolchain-armhf.cmake":"1a2029163a57415eec9a5dd5f45d3254d349e97b1beb5d16876b741717673341","src/zlib-ng/cmake/toolchain-llvm-mingw-aarch64.cmake":"4deffb541ecd21ade019daa2e96e832ead8c2c62b633bedb8688d0e7c7012d33","src/zlib-ng/cmake/toolchain-llvm-mingw-armv7.cmake":"3e95adbade93ec162478de3339427ed88b12c922f4975c2918977859325f5459","src/zlib-ng/cmake/toolchain-llvm-mingw-i686.cmake":"1064a1ff2bab21489c184c1cc2b07181ebbbcc32e45c13cf8ed6b9ec60560c2e","src/zlib-ng/cmake/toolchain-llvm-mingw-x86_64.cmake":"577d333ad70cf27ededc75554428368e84c334cc7b716e18113620f5e7edf305","src/zlib-ng/cmake/toolchain-mingw-i686.cmake":"df9000354b820d3713d1469edc9f94cd095389b0cca83965730b8e64857fdf3f","src/zlib-ng/cmake/toolchain-mingw-x86_64.cmake":"ee316e6e3202919da5d497f9e246466fd715fcf079cb5b4afc4774089d1fefad","src/zlib-ng/cmake/toolchain-mips.cmake":"0d0d00b809a30021bb4b9e3ace7371200bb4bfa6509813c829ca0cb569c7af68","src/zlib-ng/cmake/toolchain-mips64.cmake":"f19574aa068ca4374b657ce7bd0517b9297c622144814a095e26db05f0a1cd20","src/zlib-ng/cmake/toolchain-powerpc.cmake":"9bd6fc58ce5b70603657f2c195c4a5cf52fae96ad63ac787978831c5858f762c","src/zlib-ng/cmake/toolchain-powerpc64-clang.cmake":"aab0b9e0f19a281dc99f4dfa5675976c40b5fb7f8139dd2eb0901fdf3cedc952","src/zlib-ng/cmake/toolchain-powerpc64-power9.cmake":"57c789c468e733971c2654faf34f7dfc9dd1e0e5bcabbd609dcd01dcbd25c487","src/zlib-ng/cmake/toolchain-powerpc64.cmake":"917fc5eef84921d8b38f43c2b4f60870965b4eecc8f018c7b3499e1142c715af","src/zlib-ng/cmake/toolchain-powerpc64le-clang.cmake":"47ac4a05b61210a83c7845a5522b91740bc8a7bb897312cc37131f85bae9e1b5","src/zlib-ng/cmake/toolchain-powerpc64le-power9.cmake":"b295b61ea248d8ef98d9276fad3db143a6fb80ab738c54bf88cb594d82c70a8d","src/zlib-ng/cmake/toolchain-powerpc64le.cmake":"5b2edd36d62de513db2d32bfbf779979d81ac527b981cc3379a4e933fc5a94d1","src/zlib-ng/cmake/toolchain-riscv.cmake":"d7b4ac4be3651aec2e55788d815141482d4fe92713713fdaba9215dbbbc9b88a","src/zlib-ng/cmake/toolchain-s390x.cmake":"cf52cecea7bd2a9d1ff5fd8edcb03c531e3b404bbcd15a15dec2e0e19936f2ac","src/zlib-ng/cmake/toolchain-sparc64.cmake":"e543062485d06a7e0fec8135887c5e73363517fa4babc23ef7b780916d75afda","src/zlib-ng/compare256_rle.h":"44a389770300038430119e69a411554a4297f4cdf61077a3eb535a440b348956","src/zlib-ng/compress.c":"f7c69a4d2f3b87ff0094115977dde1cd17703cc9856ba19489dd94e0ed16b646","src/zlib-ng/cpu_features.c":"aec359d85d64c2ff88132a123406726bd966e0d56d0dc8ce1d5c3f25e1801440","src/zlib-ng/cpu_features.h":"68d78c197f71fe79582f26c0791a5cb8309eb5b84b0fe729231f80f1c211e425","src/zlib-ng/crc32.c":"daa3ec2a02ad1319cbfeaa143bbc3d3ae026e8e41f76534e96b13afecebe9551","src/zlib-ng/crc32.h":"de204765b3b1dea07edd80baa37271992aa9a0355d1a406f076bd63b570e12f4","src/zlib-ng/crc32_braid_comb.c":"b996400fb30a700a4f563deb1d33c683a00a8564b1ebb0e440877009f1aca73e","src/zlib-ng/crc32_braid_comb_p.h":"6c8035e05d30a6241be55467fc59e4d7deda6b618b955a11339ffee08a39c75a","src/zlib-ng/crc32_braid_p.h":"cf846b91731a03edb039531a2fdc3760eb971258ae26adda2f11e4fdc759e469","src/zlib-ng/crc32_braid_tbl.h":"e22af112e3c1c8bb4065d39fe678eba71dd08893eb06f9414b02f4cf5a6f46de","src/zlib-ng/deflate.c":"e3dcc5e23c7a156fb91a4f52bc1556f7402d4343fd6be15955645dd85d1b1d5d","src/zlib-ng/deflate.h":"1eba0fb1b204d3154e278fef2f06db0cc0bba290c3cfc7ed77e67694f8a337ba","src/zlib-ng/deflate_fast.c":"83ffb6bf7c7f68362a517b9c270c295c967e03d86556febbc7cc959559ad8b79","src/zlib-ng/deflate_huff.c":"b9bacb3a11e3bae0c4d29ef87acfe3cb007f4006d781585665722f1667f236f9","src/zlib-ng/deflate_medium.c":"589cfe6627d6c31cc5abfb3a7aa9160e770d389ea10079be383f8194431fae17","src/zlib-ng/deflate_p.h":"5d355ea2ef859a0e1bd5e9950b6daa1428e3c9713f2f8db0c36eecd9dbef3bab","src/zlib-ng/deflate_quick.c":"0f30392f3eeab4205eaee1a76d7bd1bf3bdd49e6dc2013d8f78af62b7044c474","src/zlib-ng/deflate_rle.c":"053a87930f687adc685a8dfaf78b9190c82cd93085ff9cf04bf5b33482e92c35","src/zlib-ng/deflate_slow.c":"aa04cab55c4cf8340df849cbfff02569ebd732ddaaa6b45015a735e7ae898d7a","src/zlib-ng/deflate_stored.c":"e3d1d04bb154a862c972bab49120c1333feae1dc6bbbda41ae0c1b8c55627c79","src/zlib-ng/fallback_builtins.h":"25fe7dbe1fe172a901b2a51aa5626fc33d275fb89cd32602567c2d57db24790d","src/zlib-ng/functable.c":"7bb233ea3e1fc3d3ec7fc408227bce5234a794a92b613a80398deb5723f55e33","src/zlib-ng/functable.h":"3e20198377b0b2eec0af815864957e814d4cd2171bff1f40229aea1ee54e106c","src/zlib-ng/gzguts.h":"64a75ccd16303dfb3db99fbdb9d89f427f9925e00ae526274e00bb959c7f2dd6","src/zlib-ng/gzlib.c":"606f63dd04367055505f19ff6dde7e72e02fdf16f89e12ee4cda84caf3c420f2","src/zlib-ng/gzread.c.in":"3501e5124923207b2603d9695c3bad1815ca2dc8f18b6525bdd5dfea60313acd","src/zlib-ng/gzwrite.c":"9f474aeefaf0150d8871eb9202ebd43a28f18bdf39eaca4f35cfb52227e74c63","src/zlib-ng/infback.c":"3df879c466c963c0143e123abd31a7b75f910eca81caaf4ef482ca94cfa751e6","src/zlib-ng/inffast_tpl.h":"7d0c8ecc079ab25e05e6c13e6d5b52179ef185f75e5d1a6acbfe0f7da9fd8cf0","src/zlib-ng/inffixed_tbl.h":"a94225335396245e9f0ccb2e9b4b334fe7ee0111ed8e32a26bcd52187f364314","src/zlib-ng/inflate.c":"a76652db45c399104087412800102fb188cfe6d132e54067da0f4e0b8e64c23b","src/zlib-ng/inflate.h":"10c134cc9d597fb729310c4c8b626144322e3db9682881443bea143d6afdfeda","src/zlib-ng/inflate_p.h":"7ca493af3e9430d866d34518b17e0358177744e306839d1ad962054da0e129c1","src/zlib-ng/inftrees.c":"d5776b7ec068ac9077aafd8a74e10ea0f2f0951c386ac867b7a1e7e697dfc758","src/zlib-ng/inftrees.h":"2ba1beb76d7922fcb37708809e31f62ee366827da80faf09a7e461b439afd291","src/zlib-ng/insert_string.c":"3c53671ca6f86e80733d7a2582c009ea62a99a62240f6226ed64bd7b8c5e2071","src/zlib-ng/insert_string_roll.c":"36fe2b8cc54d20f31e18543683364cc44da8553a07f93e26ef788f4c8422f115","src/zlib-ng/insert_string_tpl.h":"f6db0d1589c0966547f910caddbc405b79d009417d51744b0a5525fb0043f484","src/zlib-ng/match_tpl.h":"e6b357742ed862a5cd1b3ea9eedff5a0e95d4d1d57a2e7e8a37316ce122363b0","src/zlib-ng/trees.c":"b5a494db42b84b21d31cfdc86492ee8ded1894f70cf463635be860d65fcc88b0","src/zlib-ng/trees.h":"24174f3543b01ee1ef370bbf6d15551a21871cded18b2aadf09a71e7904b6f99","src/zlib-ng/trees_emit.h":"6c541dcf01eecf393d4eab7800bc558ad524114bb5a8deb86f13376fbef88754","src/zlib-ng/trees_tbl.h":"022736ff3362ef3591d1f8fc3b7fede5927c0d25ab0813d7ef8cd95efd6ea242","src/zlib-ng/uncompr.c":"bb03a6ae65e1395f3cb2fba1dee63246a1fcd30683fd3348e320e789521055a6","src/zlib-ng/zbuild.h":"fb21be3ec8597a960ca9a1083fde1a58a55c1e359cddbd16b46fd586856f5768","src/zlib-ng/zconf-ng.h.in":"ef5b25e964fc2aff0fccac38e412b4d2e30d105d5ee0bfc63e50eb675794f5c9","src/zlib-ng/zconf.h.in":"df1730a639dc0efa42fbc81aff55e09e14843a08b61f5fc30affc22b9df3f275","src/zlib-ng/zendian.h":"5be3e2989524198f13b68cc083b1502747effe92325edee59e3c4ad93cc3c62f","src/zlib-ng/zlib-config.cmake.in":"f906031d0c77404e455f8d348718f28ac37e79e18fa3ac0827ad1e5c321259f5","src/zlib-ng/zlib-ng-config.cmake.in":"a21981baf1ae9fb9589a9c7e11d2972da5cbbc9255361247393337ef2b293eea","src/zlib-ng/zlib-ng.h.in":"3a3dd4edc95fc9f526351044ec6bdc177799849821c7d607e8c9ec92747cd7a8","src/zlib-ng/zlib.h.in":"08da38b67ccd17130eedffb7a4f61914695918bc95c265d8ed579bfdc27b27b0","src/zlib-ng/zlib.pc.cmakein":"a97486fcab3f191d807ec04d4487d6a428053ab452b59687ee1f71cf52b02a31","src/zlib-ng/zlib.pc.in":"848e017a079b14853df8d19699f4edac2304767ef4eb2cf525a06ceb60d301b3","src/zlib-ng/zlib_name_mangling-ng.h.in":"a829fd869339579afe7ce8c1f8a5473598c608f3427c3cbbc1800088d6640e7a","src/zlib-ng/zlib_name_mangling.h.empty":"38e51a846d6c2bd6100298c55328dba4437c08fa1dceda4eb2e06ecb1d142058","src/zlib-ng/zlib_name_mangling.h.in":"16e9ede4821d873647bf105b12e71245d3b7cb79ed318fed0a8ab5aa63b2b4da","src/zlib-ng/zmemory.h":"9af58a7808e197dda7bdc18d1f9bfca6acc322339cd7825830ae8bb0a2c6f666","src/zlib-ng/zutil.c":"af3e88b13d69780a18844704c372011d15a10098a2f713dc7102e4d64f6449a7","src/zlib-ng/zutil.h":"138cdc6c947b9a91b4d79115e324e28f319d4359d472caeb9b8f9263fde30971","src/zlib-ng/zutil_p.h":"cb7a59697185547f6d32d05d169480f6ff18863e48db1cb93a84b0706c578ee2","src/zlib/LICENSE":"845efc77857d485d91fb3e0b884aaa929368c717ae8186b66fe1ed2495753243","src/zlib/adler32.c":"9cd1443a24ff2a3053961695bd432035c58347386a420d3388232376ebabe211","src/zlib/compress.c":"86f802c16a965e7a28737e3730b4e576c5ba40981753967e3e30916f4dc1b4b1","src/zlib/contrib/dotzlib/LICENSE_1_0.txt":"36266a8fd073568394cb81cdb2b124f7fdae2c64c1a7ed09db34b4d22efa2951","src/zlib/crc32.c":"8fd16f0a7714d51c89c2eb37eb98ec15e8a4dc57ba343e7b7398b19144039fda","src/zlib/crc32.h":"9a2223575183ac2ee8a247f20bf3ac066e8bd0140369556bdbdffc777435749e","src/zlib/deflate.c":"3b956337350f94c34987750f785587ef33d9c89ceaebb7c2afb189c956360cbe","src/zlib/deflate.h":"48baf016326d8d5e3e32ac8153cc7e22f854b8e6834830b167b998a7fb1e7989","src/zlib/gzclose.c":"35ea6e991a63095f797d8c4cc25817fac7a7155c2ba7dcdbbf648f7871c7ea40","src/zlib/gzguts.h":"716fa648aca1bb06c219d7b97ad4846d8479206143bc39557bfd8283f5783e04","src/zlib/gzlib.c":"042c2be8ec67ad525a2812e508de7381c6766dde903acf5ae6ac4fa6b541946d","src/zlib/gzread.c":"72e481aca07b0b85a9783237b85dc67ff3a4c1d19878d0cec69f58d38634867b","src/zlib/gzwrite.c":"469b1e58932ea11bdda2a153f6655f7b3c13254240fae157181b49ed1bc93b47","src/zlib/infback.c":"62df9a6dd3eef126f1d81d0ad7a534504610dec44482b0a472b61c93cbab6554","src/zlib/inffast.c":"e6ef64ce5dc0a4cd5c7ad08ceeb2b2a698b8447f6bd156057caeb2edab68c0cb","src/zlib/inffast.h":"05cc5dc9ff1da7b8b52a4bd8bda0d8a5c236a2f39efe84b941516ea13857e6c5","src/zlib/inffixed.h":"237ba710f090e432b62ebf963bee8b302867e9691406b2d3f8ee89ee7bfef9b0","src/zlib/inflate.c":"34c998ce0037c0537c04b03b276f680b945f9b2c9d1e01b287605bd6879f7fd2","src/zlib/inflate.h":"e8d4a51b07694bf48cb91979c19974cf6a5ab0b8a09d26ec0d14df349230673e","src/zlib/inftrees.c":"5d4f335221d2dc76f17abd2577d92c2d7baf68fa6d7f23373b360830493d1563","src/zlib/inftrees.h":"0a0fcaf2ae2fae57426bdc06637270e9bba974f35202cadbdba479d946e6409d","src/zlib/trees.c":"f63c68c16c05fcd196050529d1a0e7657960e4136b9987d90a6ac3e58a964b0f","src/zlib/trees.h":"bb0a9d3ca88ee00c81adb7c636e73b97085f6ef1b52d6d58edbe2b6dc3adeb4d","src/zlib/uncompr.c":"04dca5e31b3b8a17d1806426f66f0c539f4184d657e149d40be07070c6227b52","src/zlib/zconf.h":"f5134250a67d57459234b63858f0d9d3ef8dcc48e9e1028d3f4fdcf6eae677ae","src/zlib/zlib.h":"8a5579af72ea4f427ff00a4150f0ccb3fc5c1e4379f726e101133b1ab9fc600c","src/zlib/zlib.pc.in":"04c01cc2e1a0ed123518b5855f585c93a24526dd88982c414111ea1fc9f07997","src/zlib/zutil.c":"8ced40d8c88588811edd2bdb35b7439983d5e1f8e9e32b8a3b244731f3c317b7","src/zlib/zutil.h":"dddb2dc7a1dc339ecf2c8e089b366f08bb731c0839c7110240d17ce731bb4fea","zng/cc.rs":"97a158aaa45c8ef8902fcdececc56271a1985b9fca05c70bbe801864847c574e","zng/cmake.rs":"0af9a27eace82c80058bb8d393fbb38a5d1b9437215fd831bfe360e2e163c0b1"},"package":"df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa"}
\ No newline at end of file
+{"files":{"Cargo.toml":"71a6b0858b47640eabb00d784c743915bf82256e224a6b2d7b7abd1c5a1e5dd8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"34c467b6945a22696d060b8fdd2379d464acb3408d4c599d3dc5fe4fa1b4c84f","README-zng.md":"438ab65416835d72c7dd168338af3db6f1a3d8ccee455af4e1d75438a781eb71","README.md":"3607fa398947cdc3cfba6cc985fd8191fcbf2699d89d3a36e3500eb27a0ca17e","build.rs":"98c443fc279a2d2c692278c1ae7f511641cefe41f9499f8cd85886b5cb15c237","src/lib.rs":"8f9f42e8c80e134fa6f5724c677a341689e2e16cbe93a15495a1b4d8bfa90c49","src/smoke.c":"10607c81b73811bfcb9718767312bf97ba2ccf7048ea2f18a2085aa06ad7f91b","src/zlib-ng/CMakeLists.txt":"c866fd377a44ab2aacd4ea2404e2faa4107d7debc087252e62f1aae369799b80","src/zlib-ng/LICENSE.md":"6c9f0d975b41afaa34d22f55bb8986ce69e5cb7ad327cb2b28820cd425edf5ee","src/zlib-ng/adler32.c":"bc5308ff3ea584bf13b626e39ad261abbaf7f87e6eb92a9195c8cef70bc0bf9d","src/zlib-ng/adler32_p.h":"fa8b96371128c54ed9c2a06175006738d395d380672b4894c32fece37b8a96a0","src/zlib-ng/arch/arm/acle_intrins.h":"313646b741417269d175b2620c7bd2cf1cb5bfc940c5bb3dd600189fce27cd79","src/zlib-ng/arch/arm/adler32_neon.c":"4bbe8993b785c2aba95425e9ebc15fe62f798617b6e10c440c60570e130b89db","src/zlib-ng/arch/arm/arm_features.c":"b34274724ff07a524f78ca54d3e94391503979e6e37100ab6cbf6378225e84fd","src/zlib-ng/arch/arm/arm_features.h":"9895f303d1b23652cd3a0d08491be3ca832b9a19e874e710bd6818827424efb7","src/zlib-ng/arch/arm/arm_functions.h":"4eaa8497424cb1cb8f0245639c4a20d4d78afb09da2f6d866d2d1b4d8fc512cf","src/zlib-ng/arch/arm/chunkset_neon.c":"75fc5cb9c1a930c32bc3fc429b00ec7d904d34c140ef73d70d45d5bb24b6a91b","src/zlib-ng/arch/arm/compare256_neon.c":"233a8cb35b3f9e268e05537e461f296cf36703a18513eacd97d7c2f58588ab43","src/zlib-ng/arch/arm/crc32_acle.c":"9aa12fe604e9ce3c0bd62be7ecb5869aec885f62a7de585f742dad6b24355d70","src/zlib-ng/arch/arm/neon_intrins.h":"6b04dee63a9567b49f644b9b0a7090ab07a3d599712946ef09abf8687c714d28","src/zlib-ng/arch/arm/slide_hash_armv6.c":"70326137b64e6a0d044676eff2cfdb45609e0fe5a76221b87fff0b8e2d07b523","src/zlib-ng/arch/arm/slide_hash_neon.c":"3de55f47a361f2fa80ec2ddfff27b2112ceadcf6d146fad041be5a99c5e52e39","src/zlib-ng/arch/generic/adler32_c.c":"fe5f072fa62d9ce954b26c8eaa6bef1954f457d6c2e5bb7d19eabdf97006c781","src/zlib-ng/arch/generic/adler32_fold_c.c":"49795041bcf43d71eda2c0a025bd61206ae293aeecee5f26a746a2e570b3a9e9","src/zlib-ng/arch/generic/chunk_permute_table.h":"3f1e09e697a9b2dff4395aca356e61765c44511a9dc653abb6998671afd20ae6","src/zlib-ng/arch/generic/chunkset_c.c":"b04b8a75613884f7cf7277865c642eadbff496683b5d6a20fb55255264cf13f8","src/zlib-ng/arch/generic/compare256_c.c":"0ddb8cf1ddc7ea54a6082c1ddd19f338537ccb26cf9c4c45536c5e24526034c1","src/zlib-ng/arch/generic/compare256_p.h":"42b893a97505f69880b90905eb187510dd5dd42323f8f360e6ff5620c107fac9","src/zlib-ng/arch/generic/crc32_braid_c.c":"b9dac546c3eeef8f35cedd6ca43a5e933bdd326d55c4572f79b6c4c5ec6529b2","src/zlib-ng/arch/generic/crc32_fold_c.c":"fd551264bb8b71b611af698c28b3fd7dc49c2a19280e52332e5e2ab78ed886c9","src/zlib-ng/arch/generic/generic_functions.h":"31ae76a4e15e388107a3ec655a0677b5f0c91b92cc27b96a8cba950b35b01ae1","src/zlib-ng/arch/generic/slide_hash_c.c":"016e4b5a12a174f8f01619f778107ada5fe6c88cd836117954e4a16e9b14a3db","src/zlib-ng/arch/power/adler32_power8.c":"e5a5bfdd9963e8f906e36978f1a655139908740559da2b382ddd5f3e2ffe6f56","src/zlib-ng/arch/power/adler32_vmx.c":"841a7e3792d1f68a0925969d6f9737cfb2b650b3a82721a88f1e5648f7b0a58a","src/zlib-ng/arch/power/chunkset_power8.c":"06e7329d761c5660e29e7b1e61e77dae378f34beb2037ffd4dfc36e4b486ca10","src/zlib-ng/arch/power/compare256_power9.c":"3e1a4c9ffa94663facc566054bc406e513aa2740ace3700cd77780628eba41c1","src/zlib-ng/arch/power/crc32_constants.h":"d73e3b9025de9fade7fa3ba2bbf5f56a1499a84c53d8ca7f5e744a0714d8599b","src/zlib-ng/arch/power/crc32_power8.c":"f658f7355ccb8337523a8fe774d74e438f26e2828bd2108ae490819accec5f06","src/zlib-ng/arch/power/power_features.c":"8a2beeb8d2b9ee2d64727d1cf1bdee9735e8251c80e8b667f179f8d662a907a9","src/zlib-ng/arch/power/power_features.h":"cb47038eb9acbbdcc1b7f93d15fa992d2af3990416dd4f9d9aca38019c396dad","src/zlib-ng/arch/power/power_functions.h":"22bd6a1ada49631fb7d9910b582c70ba282bbeac8ff0cc6e7df597729d4fa76a","src/zlib-ng/arch/power/power_intrins.h":"eaee8b265451843117019bce0715ee54d8e325b5606135abd45fb20f3129f669","src/zlib-ng/arch/power/slide_hash_power8.c":"58d93cee1a2cf14f13a8e9e31ba5149fe2b1e069846f52ac1f11c42cfcbd49a4","src/zlib-ng/arch/power/slide_hash_vmx.c":"1b6297a9616456ba534bc1d93afcb99e36dac357be68aed106bb71dfea621a86","src/zlib-ng/arch/power/slide_ppc_tpl.h":"f34012da966b633e0f20152387d9d17fd809ae8c1981a861ce3ee482c1baf8fb","src/zlib-ng/arch/riscv/adler32_rvv.c":"6e5997f3c762a8e82eedae540452dd5db32c2de49b403fc7b1caea7dc3a19f7c","src/zlib-ng/arch/riscv/chunkset_rvv.c":"d5b0fd27dcc8d4b3773caae16290014fdbc0011cf62e7f63a4e5d897149b165e","src/zlib-ng/arch/riscv/compare256_rvv.c":"bd459a91bdc4940c4ba74c7dea22cc217b16ca1ab8223a29ff07263061a4d1af","src/zlib-ng/arch/riscv/riscv_features.c":"033e0a962d680b6da8811cd4fec73981e3d71b181e54b8370a23ebeaf410b300","src/zlib-ng/arch/riscv/riscv_features.h":"b740c857e9107b306a03f39bfbc13bcb4d0180a36ac1eb5242fb73ea16ea9fb3","src/zlib-ng/arch/riscv/riscv_functions.h":"8580367dfb55010555593f4bb530051a4091fa0f8a4c64b85015638ab8a2bc73","src/zlib-ng/arch/riscv/slide_hash_rvv.c":"695ce98aec96954a3ef8013cbefe2849073d681bb93a9e30109dfe8899ce01b9","src/zlib-ng/arch/s390/crc32-vx.c":"744eb192500461bf570e8d5241b958a4978d95f9eb39cc91e0d2f95f3ff7b965","src/zlib-ng/arch/s390/dfltcc_common.h":"824733339cbecbd8acc67aff67d49f8e7dcdf2100eaaeba5762e2de4a3ed32ce","src/zlib-ng/arch/s390/dfltcc_deflate.c":"067b13655f7dc540733094e5059649fd5ba3616093e51c2fc34a3a79b362fd47","src/zlib-ng/arch/s390/dfltcc_deflate.h":"afc4627159a3e11b7e65100f33d8feee1dd16ec1b6d2d179bdbc534aa3abc284","src/zlib-ng/arch/s390/dfltcc_detail.h":"1878d49f17c45efcff99fc8ea03554dcc344dbd615b64606c27c0160aa02c9bf","src/zlib-ng/arch/s390/dfltcc_inflate.c":"38a93f793eded1a81e7513ff5d11efe9396ebca55fbb8f892e2ab3663bae81d3","src/zlib-ng/arch/s390/dfltcc_inflate.h":"1279bbfd9103477b3f42af82edaa848dec06ba6ebc8e88ac685ff2c3e8412744","src/zlib-ng/arch/s390/s390_features.c":"fdcb9e518e410bb98bd073ab66cde2be6b1806720b64df049b2af5a3ff8e44ee","src/zlib-ng/arch/s390/s390_features.h":"01a7ff49a0ba3729035e781d462f6d432ff3bfa2358673287f238a75a036e606","src/zlib-ng/arch/s390/s390_functions.h":"9262c917a55d791534aff84c001ca57883cc200a310a01ca63e4562c4a0d8a6e","src/zlib-ng/arch/x86/adler32_avx2.c":"01dd4d9331c073067d8be3e7186d8e37b10074f0e7f817da373779fb39df6cc2","src/zlib-ng/arch/x86/adler32_avx2_p.h":"45e6264edffc737081f55a5b5e85b28d9db0b27b63183ffbb492f8c11bc670a2","src/zlib-ng/arch/x86/adler32_avx512.c":"359f2288d59e238b24aa0d3311276ca6996ab25bc4b021635004241cf43be03a","src/zlib-ng/arch/x86/adler32_avx512_p.h":"8c5699448448633f5a864877649df9c8c80cddacadaeb90c977f855b18f6f9e6","src/zlib-ng/arch/x86/adler32_avx512_vnni.c":"149ab3c8b94d82a8ffb312b87718ca7f690afaaef8b8f1cfd14d288cd8b2755e","src/zlib-ng/arch/x86/adler32_sse42.c":"3b57c435550bfe7147a8f6a33d8fc489b20cb2cb69218fcb00471125c86797fe","src/zlib-ng/arch/x86/adler32_ssse3.c":"456f5eaa60d72383467b29fff0c95a82dc9f0a0a542376136d7e18d3ac0ae046","src/zlib-ng/arch/x86/adler32_ssse3_p.h":"5aab2f802ba6bdebc63b411018e5116fe26d38e90adf353646b65af4ebe7fa40","src/zlib-ng/arch/x86/avx2_tables.h":"cc6797bf3d9e216744b781c841378776693dcefa7cf0650b5c3f40e43c005d57","src/zlib-ng/arch/x86/chunkset_avx2.c":"9309c4b902cfca576f2053f6708424fc51fc6b166c7dc873179e73af02d00403","src/zlib-ng/arch/x86/chunkset_avx512.c":"ec963219121dd435fb6991ea6a104140ed277fe5a259b2c0c6fba78092ec3b2a","src/zlib-ng/arch/x86/chunkset_sse2.c":"ea07a9dade5a61940b1aa941303dfca2730bbce43fb678947203df948b80dfb8","src/zlib-ng/arch/x86/chunkset_ssse3.c":"0a7e7e5b378fd7095acbd852b2c69a9dbc347f71c62fdb3017dd57f1842e2384","src/zlib-ng/arch/x86/compare256_avx2.c":"10d391424b98136e49fdc8a0ded736f4cc41348b16ee2631a244052972d6680f","src/zlib-ng/arch/x86/compare256_sse2.c":"bc0786a039af3564ce2c91ad1401cd8f367ca10e6cc946f05fd4a311ee68aad0","src/zlib-ng/arch/x86/crc32_fold_pclmulqdq_tpl.h":"c611b1bb190707b2ef7af532a8391505249ad6c3e7bcaa5b7251019bcd9539bd","src/zlib-ng/arch/x86/crc32_fold_vpclmulqdq_tpl.h":"7eddba31e3d1b1808fc6df9f96ada03c59952961af895d8538f5a8292392b5cc","src/zlib-ng/arch/x86/crc32_pclmulqdq.c":"f247408c353bbd0fcafff23fb97aeb4d9a72e0a416effea566183b9b5dbedf7c","src/zlib-ng/arch/x86/crc32_pclmulqdq_tpl.h":"5ebf202814edcfe33de19a14f44b3369dd9bff9a75e19b2f26caaa4e1e84fdbb","src/zlib-ng/arch/x86/crc32_vpclmulqdq.c":"8fb658d1faabac53352b04252e12598a9bfa89f9b5154b5fa1f89e5a55293ed3","src/zlib-ng/arch/x86/slide_hash_avx2.c":"7429fa11aaf843ed5c34eada302d66bd25014f8399ad1ff6892901478fc1823b","src/zlib-ng/arch/x86/slide_hash_sse2.c":"ecfeb98984fabd57219879717ce2344b203f65364e7062a1b9e6ec8d87241f93","src/zlib-ng/arch/x86/x86_features.c":"1e55149f0cea646ad9f124cf3e16662777e911680b3088644a137735387a3a33","src/zlib-ng/arch/x86/x86_features.h":"8777f2bcba84b09bb31b42a172ec7dacf2d26316e610f1db48740385f672bf1b","src/zlib-ng/arch/x86/x86_functions.h":"724df517ea45b3d6152ed0db9ba09974fc17ba1aa49d0ee3d30e5b3d5ec0aa42","src/zlib-ng/arch/x86/x86_intrins.h":"984c222d7df4ca0a9d27f3b33d210c164b1f26ab4158448c851b7dda96ae674b","src/zlib-ng/arch_functions.h":"eb9a65b78dee631eba43ecd8028835ff1e19b534336a7f6021223008db0c909e","src/zlib-ng/chunkset_tpl.h":"a8056c93df6bd2253936d105bc089e5a49b84239b4d7c4c56061f09e57e00d49","src/zlib-ng/cmake/detect-arch.c":"8c8d32ccda6e4a06c9ca6548bb386a2645f9e24683c91b33b06af6af6e01c378","src/zlib-ng/cmake/detect-arch.cmake":"85a2eed469fc7765e51c382f475868a644036f057f5b749d3ef59eec2b4b2748","src/zlib-ng/cmake/detect-coverage.cmake":"4664d51152d51282ae50621f4d510ab72cf8978b266c614b7c5361750db6d1a9","src/zlib-ng/cmake/detect-install-dirs.cmake":"4c8e72cee23ce9c6db02566a31fc7a78f0beeac6f09c61c2d90a1cff3c083db1","src/zlib-ng/cmake/detect-intrinsics.cmake":"f18f8b5d431a0d48e97caf8c510ccb6bf3db2ed6571d91fa8c0525b2d56177cb","src/zlib-ng/cmake/detect-sanitizer.cmake":"1a029f2f0a10249a9e0e9dd10f458a3172444ed80ded7d5e883d48cdac5d09e2","src/zlib-ng/cmake/fallback-macros.cmake":"a8c8f70e5483177280cbebf99f929a7cf5ffe2b79fedb79eed570ecafc78effc","src/zlib-ng/cmake/toolchain-aarch64.cmake":"46be0bf580a49a528c72005484655afad1de3705b39a66a7b0c213b0fa81cee6","src/zlib-ng/cmake/toolchain-arm.cmake":"05e38076fd6ffb9785ff9844ccecd26436c9dc4c25b7777b62e5f52e788c3882","src/zlib-ng/cmake/toolchain-armhf.cmake":"1a2029163a57415eec9a5dd5f45d3254d349e97b1beb5d16876b741717673341","src/zlib-ng/cmake/toolchain-llvm-mingw-aarch64.cmake":"4deffb541ecd21ade019daa2e96e832ead8c2c62b633bedb8688d0e7c7012d33","src/zlib-ng/cmake/toolchain-llvm-mingw-armv7.cmake":"3e95adbade93ec162478de3339427ed88b12c922f4975c2918977859325f5459","src/zlib-ng/cmake/toolchain-llvm-mingw-i686.cmake":"1064a1ff2bab21489c184c1cc2b07181ebbbcc32e45c13cf8ed6b9ec60560c2e","src/zlib-ng/cmake/toolchain-llvm-mingw-x86_64.cmake":"577d333ad70cf27ededc75554428368e84c334cc7b716e18113620f5e7edf305","src/zlib-ng/cmake/toolchain-mingw-i686.cmake":"df9000354b820d3713d1469edc9f94cd095389b0cca83965730b8e64857fdf3f","src/zlib-ng/cmake/toolchain-mingw-x86_64.cmake":"ee316e6e3202919da5d497f9e246466fd715fcf079cb5b4afc4774089d1fefad","src/zlib-ng/cmake/toolchain-mips.cmake":"0d0d00b809a30021bb4b9e3ace7371200bb4bfa6509813c829ca0cb569c7af68","src/zlib-ng/cmake/toolchain-mips64.cmake":"f19574aa068ca4374b657ce7bd0517b9297c622144814a095e26db05f0a1cd20","src/zlib-ng/cmake/toolchain-powerpc.cmake":"9bd6fc58ce5b70603657f2c195c4a5cf52fae96ad63ac787978831c5858f762c","src/zlib-ng/cmake/toolchain-powerpc64-clang.cmake":"aab0b9e0f19a281dc99f4dfa5675976c40b5fb7f8139dd2eb0901fdf3cedc952","src/zlib-ng/cmake/toolchain-powerpc64-power9.cmake":"57c789c468e733971c2654faf34f7dfc9dd1e0e5bcabbd609dcd01dcbd25c487","src/zlib-ng/cmake/toolchain-powerpc64.cmake":"917fc5eef84921d8b38f43c2b4f60870965b4eecc8f018c7b3499e1142c715af","src/zlib-ng/cmake/toolchain-powerpc64le-clang.cmake":"47ac4a05b61210a83c7845a5522b91740bc8a7bb897312cc37131f85bae9e1b5","src/zlib-ng/cmake/toolchain-powerpc64le-power9.cmake":"b295b61ea248d8ef98d9276fad3db143a6fb80ab738c54bf88cb594d82c70a8d","src/zlib-ng/cmake/toolchain-powerpc64le.cmake":"5b2edd36d62de513db2d32bfbf779979d81ac527b981cc3379a4e933fc5a94d1","src/zlib-ng/cmake/toolchain-riscv.cmake":"d7b4ac4be3651aec2e55788d815141482d4fe92713713fdaba9215dbbbc9b88a","src/zlib-ng/cmake/toolchain-s390x.cmake":"cf52cecea7bd2a9d1ff5fd8edcb03c531e3b404bbcd15a15dec2e0e19936f2ac","src/zlib-ng/cmake/toolchain-sparc64.cmake":"e543062485d06a7e0fec8135887c5e73363517fa4babc23ef7b780916d75afda","src/zlib-ng/compare256_rle.h":"44a389770300038430119e69a411554a4297f4cdf61077a3eb535a440b348956","src/zlib-ng/compress.c":"f7c69a4d2f3b87ff0094115977dde1cd17703cc9856ba19489dd94e0ed16b646","src/zlib-ng/cpu_features.c":"aec359d85d64c2ff88132a123406726bd966e0d56d0dc8ce1d5c3f25e1801440","src/zlib-ng/cpu_features.h":"68d78c197f71fe79582f26c0791a5cb8309eb5b84b0fe729231f80f1c211e425","src/zlib-ng/crc32.c":"daa3ec2a02ad1319cbfeaa143bbc3d3ae026e8e41f76534e96b13afecebe9551","src/zlib-ng/crc32.h":"de204765b3b1dea07edd80baa37271992aa9a0355d1a406f076bd63b570e12f4","src/zlib-ng/crc32_braid_comb.c":"b996400fb30a700a4f563deb1d33c683a00a8564b1ebb0e440877009f1aca73e","src/zlib-ng/crc32_braid_comb_p.h":"6c8035e05d30a6241be55467fc59e4d7deda6b618b955a11339ffee08a39c75a","src/zlib-ng/crc32_braid_p.h":"cf846b91731a03edb039531a2fdc3760eb971258ae26adda2f11e4fdc759e469","src/zlib-ng/crc32_braid_tbl.h":"e22af112e3c1c8bb4065d39fe678eba71dd08893eb06f9414b02f4cf5a6f46de","src/zlib-ng/deflate.c":"e3dcc5e23c7a156fb91a4f52bc1556f7402d4343fd6be15955645dd85d1b1d5d","src/zlib-ng/deflate.h":"1eba0fb1b204d3154e278fef2f06db0cc0bba290c3cfc7ed77e67694f8a337ba","src/zlib-ng/deflate_fast.c":"83ffb6bf7c7f68362a517b9c270c295c967e03d86556febbc7cc959559ad8b79","src/zlib-ng/deflate_huff.c":"b9bacb3a11e3bae0c4d29ef87acfe3cb007f4006d781585665722f1667f236f9","src/zlib-ng/deflate_medium.c":"589cfe6627d6c31cc5abfb3a7aa9160e770d389ea10079be383f8194431fae17","src/zlib-ng/deflate_p.h":"5d355ea2ef859a0e1bd5e9950b6daa1428e3c9713f2f8db0c36eecd9dbef3bab","src/zlib-ng/deflate_quick.c":"0f30392f3eeab4205eaee1a76d7bd1bf3bdd49e6dc2013d8f78af62b7044c474","src/zlib-ng/deflate_rle.c":"053a87930f687adc685a8dfaf78b9190c82cd93085ff9cf04bf5b33482e92c35","src/zlib-ng/deflate_slow.c":"aa04cab55c4cf8340df849cbfff02569ebd732ddaaa6b45015a735e7ae898d7a","src/zlib-ng/deflate_stored.c":"e3d1d04bb154a862c972bab49120c1333feae1dc6bbbda41ae0c1b8c55627c79","src/zlib-ng/fallback_builtins.h":"25fe7dbe1fe172a901b2a51aa5626fc33d275fb89cd32602567c2d57db24790d","src/zlib-ng/functable.c":"7bb233ea3e1fc3d3ec7fc408227bce5234a794a92b613a80398deb5723f55e33","src/zlib-ng/functable.h":"3e20198377b0b2eec0af815864957e814d4cd2171bff1f40229aea1ee54e106c","src/zlib-ng/gzguts.h":"64a75ccd16303dfb3db99fbdb9d89f427f9925e00ae526274e00bb959c7f2dd6","src/zlib-ng/gzlib.c":"606f63dd04367055505f19ff6dde7e72e02fdf16f89e12ee4cda84caf3c420f2","src/zlib-ng/gzread.c.in":"3501e5124923207b2603d9695c3bad1815ca2dc8f18b6525bdd5dfea60313acd","src/zlib-ng/gzwrite.c":"9f474aeefaf0150d8871eb9202ebd43a28f18bdf39eaca4f35cfb52227e74c63","src/zlib-ng/infback.c":"ade994134e9ba4a82c9d8a21077ce0c56e91daebaca4fd8dacfe3a5a105356e5","src/zlib-ng/inffast_tpl.h":"7d0c8ecc079ab25e05e6c13e6d5b52179ef185f75e5d1a6acbfe0f7da9fd8cf0","src/zlib-ng/inffixed_tbl.h":"a94225335396245e9f0ccb2e9b4b334fe7ee0111ed8e32a26bcd52187f364314","src/zlib-ng/inflate.c":"4e5850aafeca873ffbfad5ceef9de4ae05191d54018bb074658e8edb93a8640e","src/zlib-ng/inflate.h":"ff11aa102721cf2b3a41c18eb2f3ea766a9d926ad304458ee57e2280f75a9c72","src/zlib-ng/inflate_p.h":"7ca493af3e9430d866d34518b17e0358177744e306839d1ad962054da0e129c1","src/zlib-ng/inftrees.c":"d5776b7ec068ac9077aafd8a74e10ea0f2f0951c386ac867b7a1e7e697dfc758","src/zlib-ng/inftrees.h":"2ba1beb76d7922fcb37708809e31f62ee366827da80faf09a7e461b439afd291","src/zlib-ng/insert_string.c":"3c53671ca6f86e80733d7a2582c009ea62a99a62240f6226ed64bd7b8c5e2071","src/zlib-ng/insert_string_roll.c":"36fe2b8cc54d20f31e18543683364cc44da8553a07f93e26ef788f4c8422f115","src/zlib-ng/insert_string_tpl.h":"f6db0d1589c0966547f910caddbc405b79d009417d51744b0a5525fb0043f484","src/zlib-ng/match_tpl.h":"e6b357742ed862a5cd1b3ea9eedff5a0e95d4d1d57a2e7e8a37316ce122363b0","src/zlib-ng/trees.c":"b5a494db42b84b21d31cfdc86492ee8ded1894f70cf463635be860d65fcc88b0","src/zlib-ng/trees.h":"24174f3543b01ee1ef370bbf6d15551a21871cded18b2aadf09a71e7904b6f99","src/zlib-ng/trees_emit.h":"257f960d71a0078161482dcc12d27aab495875dd606f86cc9696bbe6e6628281","src/zlib-ng/trees_tbl.h":"022736ff3362ef3591d1f8fc3b7fede5927c0d25ab0813d7ef8cd95efd6ea242","src/zlib-ng/uncompr.c":"bb03a6ae65e1395f3cb2fba1dee63246a1fcd30683fd3348e320e789521055a6","src/zlib-ng/zbuild.h":"fb21be3ec8597a960ca9a1083fde1a58a55c1e359cddbd16b46fd586856f5768","src/zlib-ng/zconf-ng.h.in":"ef5b25e964fc2aff0fccac38e412b4d2e30d105d5ee0bfc63e50eb675794f5c9","src/zlib-ng/zconf.h.in":"df1730a639dc0efa42fbc81aff55e09e14843a08b61f5fc30affc22b9df3f275","src/zlib-ng/zendian.h":"5be3e2989524198f13b68cc083b1502747effe92325edee59e3c4ad93cc3c62f","src/zlib-ng/zlib-config.cmake.in":"f906031d0c77404e455f8d348718f28ac37e79e18fa3ac0827ad1e5c321259f5","src/zlib-ng/zlib-ng-config.cmake.in":"a21981baf1ae9fb9589a9c7e11d2972da5cbbc9255361247393337ef2b293eea","src/zlib-ng/zlib-ng.h.in":"5b518c16cd9282274bbe984144a484a06a0be6de48fae061cfeede79e3586c6e","src/zlib-ng/zlib.h.in":"84f30204c8601dcf007547fc88e2f5dc47eac0c6b2a5743ad4c11fff11a2f6c5","src/zlib-ng/zlib.pc.cmakein":"a97486fcab3f191d807ec04d4487d6a428053ab452b59687ee1f71cf52b02a31","src/zlib-ng/zlib.pc.in":"848e017a079b14853df8d19699f4edac2304767ef4eb2cf525a06ceb60d301b3","src/zlib-ng/zlib_name_mangling-ng.h.in":"a829fd869339579afe7ce8c1f8a5473598c608f3427c3cbbc1800088d6640e7a","src/zlib-ng/zlib_name_mangling.h.empty":"38e51a846d6c2bd6100298c55328dba4437c08fa1dceda4eb2e06ecb1d142058","src/zlib-ng/zlib_name_mangling.h.in":"16e9ede4821d873647bf105b12e71245d3b7cb79ed318fed0a8ab5aa63b2b4da","src/zlib-ng/zmemory.h":"9af58a7808e197dda7bdc18d1f9bfca6acc322339cd7825830ae8bb0a2c6f666","src/zlib-ng/zutil.c":"5ae6a829a8d2932b13b03c3be0cd2bac75199a24c1ad1beddaceab4a2fdc015f","src/zlib-ng/zutil.h":"138cdc6c947b9a91b4d79115e324e28f319d4359d472caeb9b8f9263fde30971","src/zlib-ng/zutil_p.h":"cb7a59697185547f6d32d05d169480f6ff18863e48db1cb93a84b0706c578ee2","src/zlib/LICENSE":"845efc77857d485d91fb3e0b884aaa929368c717ae8186b66fe1ed2495753243","src/zlib/adler32.c":"9cd1443a24ff2a3053961695bd432035c58347386a420d3388232376ebabe211","src/zlib/compress.c":"86f802c16a965e7a28737e3730b4e576c5ba40981753967e3e30916f4dc1b4b1","src/zlib/contrib/dotzlib/LICENSE_1_0.txt":"36266a8fd073568394cb81cdb2b124f7fdae2c64c1a7ed09db34b4d22efa2951","src/zlib/crc32.c":"8fd16f0a7714d51c89c2eb37eb98ec15e8a4dc57ba343e7b7398b19144039fda","src/zlib/crc32.h":"9a2223575183ac2ee8a247f20bf3ac066e8bd0140369556bdbdffc777435749e","src/zlib/deflate.c":"3b956337350f94c34987750f785587ef33d9c89ceaebb7c2afb189c956360cbe","src/zlib/deflate.h":"48baf016326d8d5e3e32ac8153cc7e22f854b8e6834830b167b998a7fb1e7989","src/zlib/gzclose.c":"35ea6e991a63095f797d8c4cc25817fac7a7155c2ba7dcdbbf648f7871c7ea40","src/zlib/gzguts.h":"716fa648aca1bb06c219d7b97ad4846d8479206143bc39557bfd8283f5783e04","src/zlib/gzlib.c":"042c2be8ec67ad525a2812e508de7381c6766dde903acf5ae6ac4fa6b541946d","src/zlib/gzread.c":"72e481aca07b0b85a9783237b85dc67ff3a4c1d19878d0cec69f58d38634867b","src/zlib/gzwrite.c":"469b1e58932ea11bdda2a153f6655f7b3c13254240fae157181b49ed1bc93b47","src/zlib/infback.c":"62df9a6dd3eef126f1d81d0ad7a534504610dec44482b0a472b61c93cbab6554","src/zlib/inffast.c":"e6ef64ce5dc0a4cd5c7ad08ceeb2b2a698b8447f6bd156057caeb2edab68c0cb","src/zlib/inffast.h":"05cc5dc9ff1da7b8b52a4bd8bda0d8a5c236a2f39efe84b941516ea13857e6c5","src/zlib/inffixed.h":"237ba710f090e432b62ebf963bee8b302867e9691406b2d3f8ee89ee7bfef9b0","src/zlib/inflate.c":"34c998ce0037c0537c04b03b276f680b945f9b2c9d1e01b287605bd6879f7fd2","src/zlib/inflate.h":"e8d4a51b07694bf48cb91979c19974cf6a5ab0b8a09d26ec0d14df349230673e","src/zlib/inftrees.c":"5d4f335221d2dc76f17abd2577d92c2d7baf68fa6d7f23373b360830493d1563","src/zlib/inftrees.h":"0a0fcaf2ae2fae57426bdc06637270e9bba974f35202cadbdba479d946e6409d","src/zlib/trees.c":"f63c68c16c05fcd196050529d1a0e7657960e4136b9987d90a6ac3e58a964b0f","src/zlib/trees.h":"bb0a9d3ca88ee00c81adb7c636e73b97085f6ef1b52d6d58edbe2b6dc3adeb4d","src/zlib/uncompr.c":"04dca5e31b3b8a17d1806426f66f0c539f4184d657e149d40be07070c6227b52","src/zlib/zconf.h":"f5134250a67d57459234b63858f0d9d3ef8dcc48e9e1028d3f4fdcf6eae677ae","src/zlib/zlib.h":"8a5579af72ea4f427ff00a4150f0ccb3fc5c1e4379f726e101133b1ab9fc600c","src/zlib/zlib.pc.in":"04c01cc2e1a0ed123518b5855f585c93a24526dd88982c414111ea1fc9f07997","src/zlib/zutil.c":"8ced40d8c88588811edd2bdb35b7439983d5e1f8e9e32b8a3b244731f3c317b7","src/zlib/zutil.h":"dddb2dc7a1dc339ecf2c8e089b366f08bb731c0839c7110240d17ce731bb4fea","zng/cc.rs":"97a158aaa45c8ef8902fcdececc56271a1985b9fca05c70bbe801864847c574e","zng/cmake.rs":"11130d756cc7e794fe4d7b3e418e32facaefd7bda6d8516c4265517d7082e97a"},"package":"8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d"}
\ No newline at end of file
diff --git a/crates/libz-sys/Android.bp b/crates/libz-sys/Android.bp
index 6e12f2f..c0b87e2 100644
--- a/crates/libz-sys/Android.bp
+++ b/crates/libz-sys/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "libz_sys",
cargo_env_compat: true,
- cargo_pkg_version: "1.1.21",
+ cargo_pkg_version: "1.1.22",
crate_root: "src/lib.rs",
edition: "2018",
features: [
diff --git a/crates/libz-sys/Cargo.toml b/crates/libz-sys/Cargo.toml
index b414ab0..19b89cf 100644
--- a/crates/libz-sys/Cargo.toml
+++ b/crates/libz-sys/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "libz-sys"
-version = "1.1.21"
+version = "1.1.22"
authors = [
"Alex Crichton <[email protected]>",
"Josh Triplett <[email protected]>",
@@ -65,6 +65,20 @@
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/libz-sys"
+[features]
+asm = []
+default = [
+ "libc",
+ "stock-zlib",
+]
+static = []
+stock-zlib = []
+zlib-ng = [
+ "libc",
+ "cmake",
+]
+zlib-ng-no-cmake-experimental-community-maintained = ["libc"]
+
[lib]
name = "libz_sys"
path = "src/lib.rs"
@@ -86,20 +100,6 @@
[build-dependencies.vcpkg]
version = "0.2.11"
-[features]
-asm = []
-default = [
- "libc",
- "stock-zlib",
-]
-static = []
-stock-zlib = []
-zlib-ng = [
- "libc",
- "cmake",
-]
-zlib-ng-no-cmake-experimental-community-maintained = ["libc"]
-
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
diff --git a/crates/libz-sys/METADATA b/crates/libz-sys/METADATA
index 823d38b..39008a6 100644
--- a/crates/libz-sys/METADATA
+++ b/crates/libz-sys/METADATA
@@ -1,17 +1,17 @@
name: "libz-sys"
description: "Low-level bindings to the system libz library (also known as zlib)."
third_party {
- version: "1.1.21"
+ version: "1.1.22"
license_type: NOTICE
last_upgrade_date {
year: 2025
- month: 1
- day: 17
+ month: 3
+ day: 19
}
homepage: "https://crates.io/crates/libz-sys"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/libz-sys/libz-sys-1.1.21.crate"
- version: "1.1.21"
+ value: "https://static.crates.io/crates/libz-sys/libz-sys-1.1.22.crate"
+ version: "1.1.22"
}
}
diff --git a/crates/libz-sys/zng/cmake.rs b/crates/libz-sys/zng/cmake.rs
index 5d6b6eb..614bf94 100644
--- a/crates/libz-sys/zng/cmake.rs
+++ b/crates/libz-sys/zng/cmake.rs
@@ -39,19 +39,19 @@
cmake.define("CMAKE_GENERATOR_PLATFORM", "Win32");
}
+ // libz-ng uses the GNUInstallDirs convention, so we can use the following
+ // to ensure libraries are placed in a consistent place in the
+ // installation dir.
+ cmake.define("CMAKE_INSTALL_LIBDIR", "lib");
+
let install_dir = cmake.build();
let includedir = install_dir.join("include");
let libdir = install_dir.join("lib");
- let libdir64 = install_dir.join("lib64");
println!(
"cargo:rustc-link-search=native={}",
libdir.to_str().unwrap()
);
- println!(
- "cargo:rustc-link-search=native={}",
- libdir64.to_str().unwrap()
- );
let mut debug_suffix = "";
let libname = if target.contains("windows") && target.contains("msvc") {
if env::var("OPT_LEVEL").unwrap() == "0" {
diff --git a/crates/linked-hash-map/.android-checksum.json b/crates/linked-hash-map/.android-checksum.json
index a3b0683..9a3d169 100644
--- a/crates/linked-hash-map/.android-checksum.json
+++ b/crates/linked-hash-map/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"604f45f3e5f798846c13f7d0092f9120255b949caa0e361dbdf4e538009f5bdb","Android.bp":"6dbd864379945abd166cbdfb6a57df2f292f5e9bd0593b31c2990eff5d9d4dd7","Cargo.toml":"2064ebb89b3937c637d0ec63f3cf67aa7b0bfa0c4acba527652cf1a36501620b","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"0b45c51f463826905bba3a2d6526c50cacfd79a4518c072d2ba548980fcfafc8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"63afa81e0f5733b17aef9d6303759c2677f9d4782848876c47f6cb5d78618711","TEST_MAPPING":"7224500a69c6de440ac76b7beeae346959bedb616e4eecc921f1839990505314","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/heapsize.rs":"282118281c4c63a8f05bbcdab8bb2682ac6c495f4d13f96018a8460747a29d8e","src/lib.rs":"8685ff653e5575527e24fd95f59369ab87d6926919f03340e09deb228c18dca0","src/serde.rs":"a9c73643fc2cd459aa862fc1fbfc0f348507c510fc9a07a46ed0a8767692fb8a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"604f45f3e5f798846c13f7d0092f9120255b949caa0e361dbdf4e538009f5bdb","Android.bp":"6ede549d6ad8df9f0fe147cb79ba71e38a867b4a241b7a2e7f2332c015755312","Cargo.toml":"2064ebb89b3937c637d0ec63f3cf67aa7b0bfa0c4acba527652cf1a36501620b","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"0b45c51f463826905bba3a2d6526c50cacfd79a4518c072d2ba548980fcfafc8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"63afa81e0f5733b17aef9d6303759c2677f9d4782848876c47f6cb5d78618711","TEST_MAPPING":"7224500a69c6de440ac76b7beeae346959bedb616e4eecc921f1839990505314","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/heapsize.rs":"282118281c4c63a8f05bbcdab8bb2682ac6c495f4d13f96018a8460747a29d8e","src/lib.rs":"8685ff653e5575527e24fd95f59369ab87d6926919f03340e09deb228c18dca0","src/serde.rs":"a9c73643fc2cd459aa862fc1fbfc0f348507c510fc9a07a46ed0a8767692fb8a"}}
\ No newline at end of file
diff --git a/crates/linked-hash-map/Android.bp b/crates/linked-hash-map/Android.bp
index eb7e115..7edbf18 100644
--- a/crates/linked-hash-map/Android.bp
+++ b/crates/linked-hash-map/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/linked-hash-map/cargo_embargo.json b/crates/linked-hash-map/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/linked-hash-map/cargo_embargo.json
+++ b/crates/linked-hash-map/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/linkme-impl/.android-checksum.json b/crates/linkme-impl/.android-checksum.json
index a7b0ac3..234bd4e 100644
--- a/crates/linkme-impl/.android-checksum.json
+++ b/crates/linkme-impl/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"747ba7b13a35cd9827a86a5a7932ad2e27397081c82378400592b4eaf5d7bf0a","Android.bp":"2720b2f54cff7af45694e907dcd612588f852da933dd9a2910c33aea5b138dd1","Cargo.toml":"306e83437877ad04598faca66929bf605907f2b98812bcce5207667aebc90936","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"6d4f92154d216770256b80197d9831732382d0ade393c8f94ac0f925ad784bf4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","build.rs":"f25cd4e235ca45167f433cf6f617b6f2b8e99217621f65b0d7f1dcf60914c36e","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/LICENSE.patch":"09cc706c0a547f25f23300db8ce6766c6c6ba9ab8038791dbec6fc710d76fa47","src/args.rs":"14bc47b5aa39d6dbfe5a1ae918f97de484120a9b0f41b21a95a0b6367dae1b9b","src/attr.rs":"32c11c13f51ef80810b5c742d2a3a3fd4f2e6d55ec47b79f99d87c0c02fe0d2c","src/declaration.rs":"64113dc9324b222fc23d6f5c2333b2a656038bbaad5f584cb108356d853bbf29","src/element.rs":"e1073e447c89712d9db61a920a2dd34c74fea222351a7303cc210558fa75faff","src/hash.rs":"b5925e872cf52fd508c28d86f98c5ccff420536a94335b7bfd7fe19a4378ffe4","src/lib.rs":"35c50803a2b28ca1e2322f4e2a8e266d6eafd7e175e102e4cc8f558f085484c5","src/linker.rs":"e0ebf146b8cdbe781ba31f782e9775542e1ba6d5bce5764cb402cca96fbdbfc0","src/ty.rs":"78ca0c477687fb943c7bc2871131e1e7d245cc372038080b91196d03ec3ceacf"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"747ba7b13a35cd9827a86a5a7932ad2e27397081c82378400592b4eaf5d7bf0a","Android.bp":"acca13f92b5065eb5f549f379754a860bc5447e63b13ccc815206f22a0b2ce6c","Cargo.toml":"306e83437877ad04598faca66929bf605907f2b98812bcce5207667aebc90936","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"6d4f92154d216770256b80197d9831732382d0ade393c8f94ac0f925ad784bf4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","build.rs":"f25cd4e235ca45167f433cf6f617b6f2b8e99217621f65b0d7f1dcf60914c36e","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/LICENSE.patch":"09cc706c0a547f25f23300db8ce6766c6c6ba9ab8038791dbec6fc710d76fa47","src/args.rs":"14bc47b5aa39d6dbfe5a1ae918f97de484120a9b0f41b21a95a0b6367dae1b9b","src/attr.rs":"32c11c13f51ef80810b5c742d2a3a3fd4f2e6d55ec47b79f99d87c0c02fe0d2c","src/declaration.rs":"64113dc9324b222fc23d6f5c2333b2a656038bbaad5f584cb108356d853bbf29","src/element.rs":"e1073e447c89712d9db61a920a2dd34c74fea222351a7303cc210558fa75faff","src/hash.rs":"b5925e872cf52fd508c28d86f98c5ccff420536a94335b7bfd7fe19a4378ffe4","src/lib.rs":"35c50803a2b28ca1e2322f4e2a8e266d6eafd7e175e102e4cc8f558f085484c5","src/linker.rs":"e0ebf146b8cdbe781ba31f782e9775542e1ba6d5bce5764cb402cca96fbdbfc0","src/ty.rs":"78ca0c477687fb943c7bc2871131e1e7d245cc372038080b91196d03ec3ceacf"}}
\ No newline at end of file
diff --git a/crates/linkme-impl/Android.bp b/crates/linkme-impl/Android.bp
index 6d153fd..2818fbc 100644
--- a/crates/linkme-impl/Android.bp
+++ b/crates/linkme-impl/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/linkme-impl/cargo_embargo.json b/crates/linkme-impl/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/linkme-impl/cargo_embargo.json
+++ b/crates/linkme-impl/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/linkme/.android-checksum.json b/crates/linkme/.android-checksum.json
index 1f3ac0a..4e3683e 100644
--- a/crates/linkme/.android-checksum.json
+++ b/crates/linkme/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"21f48f30ff2bcdcd154673e0162166d6e5be6aba6aee4a09c29edd321e14eb62","Android.bp":"6db72639a0c260eaf2685e7f9b24708cd400f665ccff84e775cadb557481320f","Cargo.toml":"6126ddbf3c92b18ad2c238dbf2e4a27ba887b1cac0f40e3b8fc0e45b84500fe0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"939e9d658f4eb716c18ac1f531e332c04aa6108df1a80dae0a629785abdf78d5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3ed710de606cf36723c4390ad979a4001c9bb30466897b561b1f9e69121b0351","android_config.toml":"ca5a84e24c703310a2c5862205674bafb01a8c65d52fcfeeccb543a9f8c96b76","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/distributed_slice.rs":"e7d45eecd466c158c20abcdf2a7e6d214c6b256eb7a7a85145ff35ac50de1654","src/lib.rs":"87c30e3a6f361617e065a870f1e67fdf33d591b7b65950f1ea545a44248088c5","src/private.rs":"86534a07ab4ab440f0559dd2e30ed11c86aa59882b4a5c6901a47f0620a0ce64","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/custom_linkme_path.rs":"e5654dd57009463688456235deff2588ef0961016ac24fede5f1b1a9f2b6248e","tests/distributed_slice.rs":"8269fc15fb9c00629838ef8f647cb27cd0b3e48edc32181601e5877aea0bf613","tests/example.rs":"caf9d2c0d3eda94bca8c34e6f27dcc3ca83ea011185a4908d9c0bfc65b54be39","tests/fn_element.rs":"24d6514351d9b39d9e86fce4ff9f3d707d68c9bc65f19a1d0a1748ca6b7117b0","tests/module/mod.rs":"b5a84f0d8bba52e092aa8ba422eccf8556750e982f78e395dff0fec18d591d47","tests/module_2015.rs":"4d507fea5c9bcf7250d67e03da0d4f893bcece3ff533edd763d4ccb119969d53","tests/module_2021.rs":"80054a9ee8c1d06bcdaf08583466ef608a321b530aa07630c4b4892b8c76ac5f","tests/ui/attempted_coercion.rs":"986f5668062a143834f7e667bee36ffc24ba1bc70a1834d11084b3d537c3aba1","tests/ui/attempted_coercion.stderr":"e750de4022dcd582651c99684053b4b12e22e3c0528d9572df34a21e2b5a0988","tests/ui/bad_crate_path.rs":"5f2b43f8ee28631f9ce3d28847ee3d080ef6c797538829b7ea1eeb86ea559660","tests/ui/bad_crate_path.stderr":"2a7c6c247881dc83808397e3057738bdd4cc465eb0c917d593603585660a456f","tests/ui/generic_fn.rs":"11008ff7c4c085f7ae62ed6d592ffc050d9fa6cc74bfdb1a47ced5f6cb87138d","tests/ui/generic_fn.stderr":"1a5b6d74d35a3f9d8de58dc338ab9ba7d4c2f43c17e420e146022799c3e84ed7","tests/ui/mismatched_types.rs":"5f952c777838b515f0a096b6cca9ed307df0518f769bdc177549a75c2c101f0c","tests/ui/mismatched_types.stderr":"24637e5d728a9d892e00db93b0491d4d23260a6f1f0ac38e3313bd34501b0c58","tests/ui/mutable.rs":"ee87f2093b55d9de41e1d9934f529b33b72f7f4d0d3c14a65df346be96183c01","tests/ui/mutable.stderr":"daa9acd6fd3527081150820267e8432a40b4cf6a36371a52c56c4b6968f75b37","tests/ui/unsupported_item.rs":"23378fd486b711a8f3d07b619c9d652a5071f6a1960a99aee372ba95a37765fb","tests/ui/unsupported_item.stderr":"ccaf4715155fd6669dab25718efbcc0a0c241408d972a67ae20459f4851c74c4","tests/ui/zerosized.rs":"e4da6f91ce6d03d8a01a8a004295afe9a4385c43602309629b2990a5db6e12fa","tests/ui/zerosized.stderr":"d7d7fa31e99deff19e9b5a40ab199aab29f16fc3466857f48993291d85e83358","tests/win_status_access_violation.rs":"c68795b1d59d1980e6c0ba5b2e900346db642865d2b10ad4194a9cbdbb2b2b61","tests/win_status_illegal_instruction.rs":"cbb4795abddc60e3ce099cb9dcfdb0ba658a49ed5a6924853be4236538d70db8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"21f48f30ff2bcdcd154673e0162166d6e5be6aba6aee4a09c29edd321e14eb62","Android.bp":"2b57389122aef401d465d296cb7888a46850d0f94816b3eaf92ff4298e468222","Cargo.toml":"6126ddbf3c92b18ad2c238dbf2e4a27ba887b1cac0f40e3b8fc0e45b84500fe0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"939e9d658f4eb716c18ac1f531e332c04aa6108df1a80dae0a629785abdf78d5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3ed710de606cf36723c4390ad979a4001c9bb30466897b561b1f9e69121b0351","android_config.toml":"ca5a84e24c703310a2c5862205674bafb01a8c65d52fcfeeccb543a9f8c96b76","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/distributed_slice.rs":"e7d45eecd466c158c20abcdf2a7e6d214c6b256eb7a7a85145ff35ac50de1654","src/lib.rs":"87c30e3a6f361617e065a870f1e67fdf33d591b7b65950f1ea545a44248088c5","src/private.rs":"86534a07ab4ab440f0559dd2e30ed11c86aa59882b4a5c6901a47f0620a0ce64","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/custom_linkme_path.rs":"e5654dd57009463688456235deff2588ef0961016ac24fede5f1b1a9f2b6248e","tests/distributed_slice.rs":"8269fc15fb9c00629838ef8f647cb27cd0b3e48edc32181601e5877aea0bf613","tests/example.rs":"caf9d2c0d3eda94bca8c34e6f27dcc3ca83ea011185a4908d9c0bfc65b54be39","tests/fn_element.rs":"24d6514351d9b39d9e86fce4ff9f3d707d68c9bc65f19a1d0a1748ca6b7117b0","tests/module/mod.rs":"b5a84f0d8bba52e092aa8ba422eccf8556750e982f78e395dff0fec18d591d47","tests/module_2015.rs":"4d507fea5c9bcf7250d67e03da0d4f893bcece3ff533edd763d4ccb119969d53","tests/module_2021.rs":"80054a9ee8c1d06bcdaf08583466ef608a321b530aa07630c4b4892b8c76ac5f","tests/ui/attempted_coercion.rs":"986f5668062a143834f7e667bee36ffc24ba1bc70a1834d11084b3d537c3aba1","tests/ui/attempted_coercion.stderr":"e750de4022dcd582651c99684053b4b12e22e3c0528d9572df34a21e2b5a0988","tests/ui/bad_crate_path.rs":"5f2b43f8ee28631f9ce3d28847ee3d080ef6c797538829b7ea1eeb86ea559660","tests/ui/bad_crate_path.stderr":"2a7c6c247881dc83808397e3057738bdd4cc465eb0c917d593603585660a456f","tests/ui/generic_fn.rs":"11008ff7c4c085f7ae62ed6d592ffc050d9fa6cc74bfdb1a47ced5f6cb87138d","tests/ui/generic_fn.stderr":"1a5b6d74d35a3f9d8de58dc338ab9ba7d4c2f43c17e420e146022799c3e84ed7","tests/ui/mismatched_types.rs":"5f952c777838b515f0a096b6cca9ed307df0518f769bdc177549a75c2c101f0c","tests/ui/mismatched_types.stderr":"24637e5d728a9d892e00db93b0491d4d23260a6f1f0ac38e3313bd34501b0c58","tests/ui/mutable.rs":"ee87f2093b55d9de41e1d9934f529b33b72f7f4d0d3c14a65df346be96183c01","tests/ui/mutable.stderr":"daa9acd6fd3527081150820267e8432a40b4cf6a36371a52c56c4b6968f75b37","tests/ui/unsupported_item.rs":"23378fd486b711a8f3d07b619c9d652a5071f6a1960a99aee372ba95a37765fb","tests/ui/unsupported_item.stderr":"ccaf4715155fd6669dab25718efbcc0a0c241408d972a67ae20459f4851c74c4","tests/ui/zerosized.rs":"e4da6f91ce6d03d8a01a8a004295afe9a4385c43602309629b2990a5db6e12fa","tests/ui/zerosized.stderr":"d7d7fa31e99deff19e9b5a40ab199aab29f16fc3466857f48993291d85e83358","tests/win_status_access_violation.rs":"c68795b1d59d1980e6c0ba5b2e900346db642865d2b10ad4194a9cbdbb2b2b61","tests/win_status_illegal_instruction.rs":"cbb4795abddc60e3ce099cb9dcfdb0ba658a49ed5a6924853be4236538d70db8"}}
\ No newline at end of file
diff --git a/crates/linkme/Android.bp b/crates/linkme/Android.bp
index 5e05ffd..cee1050 100644
--- a/crates/linkme/Android.bp
+++ b/crates/linkme/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/linkme/cargo_embargo.json b/crates/linkme/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/linkme/cargo_embargo.json
+++ b/crates/linkme/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/litemap/.android-checksum.json b/crates/litemap/.android-checksum.json
index f3369f4..6fa7f98 100644
--- a/crates/litemap/.android-checksum.json
+++ b/crates/litemap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"89d39adf10f5f0113dcaa97fe75a6e0d3f32a79e1942f0f16957cf24889a1c41","Android.bp":"5f4104789f7b91c0ecc415c8ec3e1b8139340ff7bfa32a54fd179ef495d40ac6","Cargo.lock":"6a42ecf168fb79c576bff1f221f57bed428bd1a4d6898a2d5a2bbce7148d25bd","Cargo.toml":"c2bd74b512772c8a8ce21a1ecd976f620968dcaa3210ea6e3f5dde54ba83db9d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"af7ca43d8c2389845e58e2bced6b1698e5c073209b5db77a3416e4744d612f73","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"83e55219f542658c308aa0cdfcc124e02d8ef6d63ac002423a28a0ec6327620c","benches/litemap.rs":"7faf9a098575a6accceaaf6ee246f4005baca4887447606ecf96b79ed6a4d12f","cargo_embargo.json":"a4cf808fd38ddabb8bfc9280e427b9e8e49d34d1e0281e12f9df71bc887c1a83","examples/language_names_hash_map.rs":"77e69d33d85906ad5b8c534bc0896dc69c3251ff6cf98de7cf24a06b67019814","examples/language_names_lite_map.rs":"e1a93e107556363b1d99a22841850b80ce99e937b8eaac135e0e5b2115ce0686","examples/litemap_bincode.rs":"85cfad7cd45c1c5ef9e3b76327c93962afff2c6901a04035576e86d9437c2007","examples/litemap_postcard.rs":"ec9bcc53121fe04a8114c884ee4e3649870e48055ad6a06354f7394cf399e2d2","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/databake.rs":"5d60423ae51b38aa26758b471b4e301b6705d1071935e641f824dd6dbed42ec0","src/lib.rs":"79c8f0e82ac767f063ab46c6383a30c67b2a03cb65cb9371e3bfe76413d03152","src/map.rs":"ae5b1bcf6d3e8c8d9ff02fa2ed353732c5623bc32b91e23461fe87da09d697c5","src/serde.rs":"1caebbc09a238f9fcb2affa0f90375952dd47fb7328b8a75c728cc7f6a605192","src/serde_helpers.rs":"5badf682b07f958da369283090aba12a4ca4c769e72c2335da86db39f3707afb","src/store/mod.rs":"3916c38a22e0b5f61a5980166427578425069986eb1242ff677224aa9f700aab","src/store/slice_impl.rs":"bd6dcf65ae1a729cefca7110fc5f444c00f188bf0a24517ca5cf2666a5036764","src/store/vec_impl.rs":"4f58abb5248e67c2de747d24c849a14e85968d1f3a416fda8cba05cc3735f70d","src/testing.rs":"a2f9e8caa8d8be5bfb5edd88f81afb6300a73fc859f4a0fed261da0bbce54860","tests/rkyv.rs":"f8e5a24c9f5b798c43bacc546e668317ad437d7541a3af27267f869f2290ccdf","tests/serde.rs":"06762155b558395ee51136a39b19da9b7d5b2e488959e631e168ec6a84d6cde0","tests/store.rs":"f9e3446d5ec91f0ba2b33fc97c1d7b56b0446ee28c5309da6269959cac54a5d8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"89d39adf10f5f0113dcaa97fe75a6e0d3f32a79e1942f0f16957cf24889a1c41","Android.bp":"f991af5c6b58fada0517ced98249a014790c0ae4d9505ec0d936ae44ff2a3529","Cargo.lock":"6a42ecf168fb79c576bff1f221f57bed428bd1a4d6898a2d5a2bbce7148d25bd","Cargo.toml":"c2bd74b512772c8a8ce21a1ecd976f620968dcaa3210ea6e3f5dde54ba83db9d","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"af7ca43d8c2389845e58e2bced6b1698e5c073209b5db77a3416e4744d612f73","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"83e55219f542658c308aa0cdfcc124e02d8ef6d63ac002423a28a0ec6327620c","benches/litemap.rs":"7faf9a098575a6accceaaf6ee246f4005baca4887447606ecf96b79ed6a4d12f","cargo_embargo.json":"e968cc80dd45c5483bf53b2678a8e0205cdf23e2ff85a2e93d894c446c3bff25","examples/language_names_hash_map.rs":"77e69d33d85906ad5b8c534bc0896dc69c3251ff6cf98de7cf24a06b67019814","examples/language_names_lite_map.rs":"e1a93e107556363b1d99a22841850b80ce99e937b8eaac135e0e5b2115ce0686","examples/litemap_bincode.rs":"85cfad7cd45c1c5ef9e3b76327c93962afff2c6901a04035576e86d9437c2007","examples/litemap_postcard.rs":"ec9bcc53121fe04a8114c884ee4e3649870e48055ad6a06354f7394cf399e2d2","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/databake.rs":"5d60423ae51b38aa26758b471b4e301b6705d1071935e641f824dd6dbed42ec0","src/lib.rs":"79c8f0e82ac767f063ab46c6383a30c67b2a03cb65cb9371e3bfe76413d03152","src/map.rs":"ae5b1bcf6d3e8c8d9ff02fa2ed353732c5623bc32b91e23461fe87da09d697c5","src/serde.rs":"1caebbc09a238f9fcb2affa0f90375952dd47fb7328b8a75c728cc7f6a605192","src/serde_helpers.rs":"5badf682b07f958da369283090aba12a4ca4c769e72c2335da86db39f3707afb","src/store/mod.rs":"3916c38a22e0b5f61a5980166427578425069986eb1242ff677224aa9f700aab","src/store/slice_impl.rs":"bd6dcf65ae1a729cefca7110fc5f444c00f188bf0a24517ca5cf2666a5036764","src/store/vec_impl.rs":"4f58abb5248e67c2de747d24c849a14e85968d1f3a416fda8cba05cc3735f70d","src/testing.rs":"a2f9e8caa8d8be5bfb5edd88f81afb6300a73fc859f4a0fed261da0bbce54860","tests/rkyv.rs":"f8e5a24c9f5b798c43bacc546e668317ad437d7541a3af27267f869f2290ccdf","tests/serde.rs":"06762155b558395ee51136a39b19da9b7d5b2e488959e631e168ec6a84d6cde0","tests/store.rs":"f9e3446d5ec91f0ba2b33fc97c1d7b56b0446ee28c5309da6269959cac54a5d8"}}
\ No newline at end of file
diff --git a/crates/litemap/Android.bp b/crates/litemap/Android.bp
index 0c095d2..2ae6a6e 100644
--- a/crates/litemap/Android.bp
+++ b/crates/litemap/Android.bp
@@ -40,6 +40,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/litemap/cargo_embargo.json b/crates/litemap/cargo_embargo.json
index 2fdff35..85a848e 100644
--- a/crates/litemap/cargo_embargo.json
+++ b/crates/litemap/cargo_embargo.json
@@ -12,5 +12,6 @@
"litemap": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/litrs/.android-checksum.json b/crates/litrs/.android-checksum.json
index 6d29974..a154d0f 100644
--- a/crates/litrs/.android-checksum.json
+++ b/crates/litrs/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"50fb0bbf2ab1fa41c81d92e0651fa50d7076eeaca866edca951ca95432d4bc2c","Android.bp":"81d21178cae96cc70509f5b5a317b2943cd372ef720d71d31c840be3fc830e8a","CHANGELOG.md":"57622d3aebf3ea223e1b92561e374e3ded461292fae9c6be0244c9367e2aedb1","Cargo.toml":"d19d08af5f35eb5793025f964a61c9d7ea9c36bbd0d269928314c305ab1a4525","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"2a7ebebaa896b165f41504d1a70155e7b86f3e706ca04751b0788047f258c22e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9f9515dd556a269baffa43606eafffaa016b0fdd128b901b02cb90f2a6418a26","cargo_embargo.json":"e6e87d4bcbbf3f832b3f7823f0ddbc381fbe35c52e24d4a4fbf3aeb09b89c50e","src/bool/mod.rs":"f3bb8b87219ba2d5d8d059f43580bce3408275061a8bd82f1a0d666a7015685e","src/bool/tests.rs":"87c439a0f5b4cabedbcdec467225af1480ebe42f04eaf73a4f29e90932f293b4","src/byte/mod.rs":"d9cb0a1a672f74380178c0307f4e91330b4a3b417d5397e43202dbfb95addbf2","src/byte/tests.rs":"34cc7732900a98e821c8cab370628b8990f9ced3fa90e353093beccaa36aea25","src/bytestr/mod.rs":"1d00041ac52052001f4b57561b1014578943d6bcc2b78bc0e47ac500c372a551","src/bytestr/tests.rs":"6261f1242d34bc479ae8fbbc29b49a72e3c8bb4969e14b0201ac4c6e7827a241","src/char/mod.rs":"1316ba70e7ea6eae0c98b4c49ee329f4c3bbba32b668ab7df55af867eac43f93","src/char/tests.rs":"c9ae0118a17e9735f25a78b80f3eefcdb1529a586755ee8440dab7e4ec42fa1d","src/err.rs":"f8ebb5e07ae94849b80d4b113deae04c5003bb1ebaffa0af3754b9861dae27ed","src/escape.rs":"b58e9d7b692b9180719e4c9ef42a197800307230c7d21ac14d2594b283c9cca9","src/float/mod.rs":"9c6c5e6d723fc4af01523ff28141c993f9b70e9448d84f016f8057aac9fc9636","src/float/tests.rs":"353b1f9ae589d21d145423a77360e082860094247dc72f97c86f43e495d054e9","src/impls.rs":"af2e13e91d8c7964a713e9d74f23f82015e4a2afa423f8e3638a82aa40fa512a","src/integer/mod.rs":"f27fce2145c73993313e1a65a8fd754b397756f1ba360d2be5ef9fdbc10e6f6e","src/integer/tests.rs":"d281932d124b89d41ed52fa240d8fdd61fa0fa6cffc841641a29630150c1f0db","src/lib.rs":"ac74e7b61e3330f4c28ea74379c2201a4e5b5fc6be558d538d3e55195eff5549","src/parse.rs":"aa2b773ff1a3f25cba8728415b951743fe0f4467f7a126603e20ccefeb7c85e5","src/string/mod.rs":"58c01076f8b59fdd19fef39daf5310a62d3c8b2d01967479c0e1b67716981741","src/string/tests.rs":"0c2fb0957858ee8661a7613926fbfd2aac3e9c391eec1d82c2dfcb004ebab7e0","src/test_util.rs":"f9bfe2a53a3480c3149b3264d68ccf76d493103de1d447579b3008d85b388a83","src/tests.rs":"498423bcb9e40531b3a6e9d0e1d6694b813b9b9554bb8ce7a80b9b83b4bbbc07"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"50fb0bbf2ab1fa41c81d92e0651fa50d7076eeaca866edca951ca95432d4bc2c","Android.bp":"81d21178cae96cc70509f5b5a317b2943cd372ef720d71d31c840be3fc830e8a","CHANGELOG.md":"57622d3aebf3ea223e1b92561e374e3ded461292fae9c6be0244c9367e2aedb1","Cargo.toml":"d19d08af5f35eb5793025f964a61c9d7ea9c36bbd0d269928314c305ab1a4525","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"2a7ebebaa896b165f41504d1a70155e7b86f3e706ca04751b0788047f258c22e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9f9515dd556a269baffa43606eafffaa016b0fdd128b901b02cb90f2a6418a26","cargo_embargo.json":"b7b6c0de317f49a9186634764ad7c98bf08352870bbc1fcd109d2c6a176a2f27","src/bool/mod.rs":"f3bb8b87219ba2d5d8d059f43580bce3408275061a8bd82f1a0d666a7015685e","src/bool/tests.rs":"87c439a0f5b4cabedbcdec467225af1480ebe42f04eaf73a4f29e90932f293b4","src/byte/mod.rs":"d9cb0a1a672f74380178c0307f4e91330b4a3b417d5397e43202dbfb95addbf2","src/byte/tests.rs":"34cc7732900a98e821c8cab370628b8990f9ced3fa90e353093beccaa36aea25","src/bytestr/mod.rs":"1d00041ac52052001f4b57561b1014578943d6bcc2b78bc0e47ac500c372a551","src/bytestr/tests.rs":"6261f1242d34bc479ae8fbbc29b49a72e3c8bb4969e14b0201ac4c6e7827a241","src/char/mod.rs":"1316ba70e7ea6eae0c98b4c49ee329f4c3bbba32b668ab7df55af867eac43f93","src/char/tests.rs":"c9ae0118a17e9735f25a78b80f3eefcdb1529a586755ee8440dab7e4ec42fa1d","src/err.rs":"f8ebb5e07ae94849b80d4b113deae04c5003bb1ebaffa0af3754b9861dae27ed","src/escape.rs":"b58e9d7b692b9180719e4c9ef42a197800307230c7d21ac14d2594b283c9cca9","src/float/mod.rs":"9c6c5e6d723fc4af01523ff28141c993f9b70e9448d84f016f8057aac9fc9636","src/float/tests.rs":"353b1f9ae589d21d145423a77360e082860094247dc72f97c86f43e495d054e9","src/impls.rs":"af2e13e91d8c7964a713e9d74f23f82015e4a2afa423f8e3638a82aa40fa512a","src/integer/mod.rs":"f27fce2145c73993313e1a65a8fd754b397756f1ba360d2be5ef9fdbc10e6f6e","src/integer/tests.rs":"d281932d124b89d41ed52fa240d8fdd61fa0fa6cffc841641a29630150c1f0db","src/lib.rs":"ac74e7b61e3330f4c28ea74379c2201a4e5b5fc6be558d538d3e55195eff5549","src/parse.rs":"aa2b773ff1a3f25cba8728415b951743fe0f4467f7a126603e20ccefeb7c85e5","src/string/mod.rs":"58c01076f8b59fdd19fef39daf5310a62d3c8b2d01967479c0e1b67716981741","src/string/tests.rs":"0c2fb0957858ee8661a7613926fbfd2aac3e9c391eec1d82c2dfcb004ebab7e0","src/test_util.rs":"f9bfe2a53a3480c3149b3264d68ccf76d493103de1d447579b3008d85b388a83","src/tests.rs":"498423bcb9e40531b3a6e9d0e1d6694b813b9b9554bb8ce7a80b9b83b4bbbc07"}}
\ No newline at end of file
diff --git a/crates/litrs/cargo_embargo.json b/crates/litrs/cargo_embargo.json
index c68a096..67db41d 100644
--- a/crates/litrs/cargo_embargo.json
+++ b/crates/litrs/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/log/.android-checksum.json b/crates/log/.android-checksum.json
index 2f82573..ca9e78b 100644
--- a/crates/log/.android-checksum.json
+++ b/crates/log/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ee3ad93200c48c2607fe57bb3eee1e8f61acb6782ca66b3ea5a9f43efcc20605","Android.bp":"74a8bf2cdc207c6a36dd9447cdc18333bcb950b76bed1c6c1bfe95c6751fece3","CHANGELOG.md":"cb76d65a74740fe7683003828e8888c02109e3923234f252e9f895c157a225bd","Cargo.toml":"5317e2b71f5fb66016ccfe1d090bf14ff02f8833b2a186f882ed7d9503319f30","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"2c34b818b5b6d0e5f12c94e95baa6c685df60c7bb2fa3374bc9b878c506bbd58","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6ac60ad741da342e5268a81306dc526cdcfb6dc5a90e1a4cb3609bf61728842f","TEST_MAPPING":"2cca18092e102f1fad318ff0d1fe5bf890b1215547d011a3c87eecd489974eaf","android_impl.bp.fragment":"0e6ba30b8dfb5ac9264fc817ed88cb6be0aecc6cd6ca3529cab6c00e24e3cc1b","benches/value.rs":"384a0d275f1a51798fa50b8814eaffd04d82959c3d4fbb1a5396316ac19ea512","cargo_embargo.json":"58a279782543521e3d42a11f8103a9061bd98a558c55dc2bd83ff504313cea84","patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch":"d1d5b5125a828cf8228733bc862b4249fb1dd133cef67fb2eef911ca60c083d9","patches/rules.mk.diff":"b1903a2e732bd7be430fc3fa75a3a84ac71e7f8a009169b58ccba8bd495f047a","rules.mk":"5de4d2344b08632b2edd4888eb40c33f5f2df6acc02cf84d2d6984811d409e28","src/__private_api.rs":"0789ef184fa5395965506963763b0a51dfd0137a9ebef20af272acf51ef62d79","src/kv/error.rs":"6a78c87679603250deb04078e12187e8c0f4bb201109de8b35d029d921ec4e14","src/kv/key.rs":"826900e7d97eacbf5a8e478faaf2a637ce6b2813a12ba998a3fa0ffdc1713a32","src/kv/mod.rs":"0d7204886b190af0e48e24d7bebb8367ae5b97b1ecd258aa60c2f3f0319a5086","src/kv/source.rs":"a0ea12425d42dd6d9f9850d66d02e26ea1d40dbe2cb4bfdfe8716f17d6cac3b2","src/kv/value.rs":"edcd00ad9a36c8dc0a1c809f5665435467e2575bd2341efb033fa23a20da4fac","src/lib.rs":"ee8944d2eeaf7d9256af9ce5811655d82e5723b92834717385b42c71f60c698d","src/macros.rs":"7f9931177a095ee937f6ef685de7b1acf925f2b99edd1dd52a1738291084b812","src/serde.rs":"e3bd5e114c74855c6dfd5c9c0a803ca4daa89132c59ce5e4a6d95beba2e7e7f9","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ee3ad93200c48c2607fe57bb3eee1e8f61acb6782ca66b3ea5a9f43efcc20605","Android.bp":"74a8bf2cdc207c6a36dd9447cdc18333bcb950b76bed1c6c1bfe95c6751fece3","CHANGELOG.md":"cb76d65a74740fe7683003828e8888c02109e3923234f252e9f895c157a225bd","Cargo.toml":"5317e2b71f5fb66016ccfe1d090bf14ff02f8833b2a186f882ed7d9503319f30","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"2c34b818b5b6d0e5f12c94e95baa6c685df60c7bb2fa3374bc9b878c506bbd58","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6ac60ad741da342e5268a81306dc526cdcfb6dc5a90e1a4cb3609bf61728842f","TEST_MAPPING":"2cca18092e102f1fad318ff0d1fe5bf890b1215547d011a3c87eecd489974eaf","android_impl.bp.fragment":"0e6ba30b8dfb5ac9264fc817ed88cb6be0aecc6cd6ca3529cab6c00e24e3cc1b","benches/value.rs":"384a0d275f1a51798fa50b8814eaffd04d82959c3d4fbb1a5396316ac19ea512","cargo_embargo.json":"58a279782543521e3d42a11f8103a9061bd98a558c55dc2bd83ff504313cea84","patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch":"78b617d1d4d76f32424ad43c909ca85183de087527ef052fd57d497458077d95","patches/rules.mk.diff":"b1903a2e732bd7be430fc3fa75a3a84ac71e7f8a009169b58ccba8bd495f047a","rules.mk":"5de4d2344b08632b2edd4888eb40c33f5f2df6acc02cf84d2d6984811d409e28","src/__private_api.rs":"0789ef184fa5395965506963763b0a51dfd0137a9ebef20af272acf51ef62d79","src/kv/error.rs":"6a78c87679603250deb04078e12187e8c0f4bb201109de8b35d029d921ec4e14","src/kv/key.rs":"826900e7d97eacbf5a8e478faaf2a637ce6b2813a12ba998a3fa0ffdc1713a32","src/kv/mod.rs":"0d7204886b190af0e48e24d7bebb8367ae5b97b1ecd258aa60c2f3f0319a5086","src/kv/source.rs":"a0ea12425d42dd6d9f9850d66d02e26ea1d40dbe2cb4bfdfe8716f17d6cac3b2","src/kv/value.rs":"edcd00ad9a36c8dc0a1c809f5665435467e2575bd2341efb033fa23a20da4fac","src/lib.rs":"12cc4647fd5b71236832c8bfeadd07a9b3f38cdf0c505eac097db919c7af2803","src/macros.rs":"7f9931177a095ee937f6ef685de7b1acf925f2b99edd1dd52a1738291084b812","src/serde.rs":"e3bd5e114c74855c6dfd5c9c0a803ca4daa89132c59ce5e4a6d95beba2e7e7f9","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
diff --git a/crates/log/patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch b/crates/log/patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch
index bdd191e..06cdd89 100644
--- a/crates/log/patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch
+++ b/crates/log/patches/0001-Enable-default-initializing-liblog_rust-to-write-to-.patch
@@ -1,6 +1,6 @@
-From cd85e49c438e3aa9dbe2989f91e5ad7d3f4816de Mon Sep 17 00:00:00 2001
+From 5463a7be6408ee158c1fe2bea948af785d45b9dc Mon Sep 17 00:00:00 2001
From: Marcin Radomski <[email protected]>
-Date: Thu, 17 Aug 2023 16:11:56 +0000
+Date: Thu, 20 Mar 2025 13:37:51 +0000
Subject: [PATCH] Enable default-initializing liblog_rust to write to logcat on
Android
@@ -22,37 +22,27 @@
Test: observe logcat logs on all level from FFI call
Test: observe all logs on non-FFI call without initializing the logger
Test: observe set log filter applying only to non-FFI call
-Change-Id: I04dd334c66e5a2be8cfb19e87be3afb9146e5aa6
+Change-Id: I027e3ed859718aa3aaf3ed9703466f7a9df9d1d7
---
- src/android_logger.rs | 1 +
- src/lib.rs | 23 +++++++++++++++++++++++
- 2 files changed, 24 insertions(+)
+ src/lib.rs | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
-diff --git b/src/android_logger.rs a/src/android_logger.rs
-new file mode 120000
-index 00000000..84b8625c
---- /dev/null
-+++ a/src/android_logger.rs
-@@ -0,0 +1 @@
-+../../android_logger/src/lib.rs
-\ No newline at end of file
-diff --git b/src/lib.rs a/src/lib.rs
-index 6b43a9ae..799b88e1 100644
---- b/src/lib.rs
-+++ a/src/lib.rs
-@@ -397,6 +397,11 @@ mod serde;
+diff --git a/src/lib.rs b/src/lib.rs
+index 843893d0..09507729 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -405,6 +405,10 @@ mod serde;
#[cfg(feature = "kv")]
pub mod kv;
+#[cfg(default_log_impl)]
-+extern crate once_cell;
-+#[cfg(default_log_impl)]
++#[path = "../../android_logger/src/lib.rs"]
+mod android_logger;
+
#[cfg(target_has_atomic = "ptr")]
use std::sync::atomic::{AtomicUsize, Ordering};
-@@ -458,7 +463,10 @@ const UNINITIALIZED: usize = 0;
+@@ -466,7 +470,10 @@ const UNINITIALIZED: usize = 0;
const INITIALIZING: usize = 1;
const INITIALIZED: usize = 2;
@@ -63,7 +53,7 @@
static LOG_LEVEL_NAMES: [&str; 6] = ["OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE"];
-@@ -1505,6 +1513,21 @@ pub fn logger() -> &'static dyn Log {
+@@ -1513,6 +1520,21 @@ pub fn logger() -> &'static dyn Log {
// write to the `LOGGER` static and initialization of the logger
// internal state synchronized with current thread.
if STATE.load(Ordering::Acquire) != INITIALIZED {
@@ -86,5 +76,5 @@
&NOP
} else {
--
-2.42.0.rc1.204.g551eb34607-goog
+2.49.0.rc1.451.g8f38331e32-goog
diff --git a/crates/log/src/android_logger.rs b/crates/log/src/android_logger.rs
deleted file mode 120000
index 84b8625..0000000
--- a/crates/log/src/android_logger.rs
+++ /dev/null
@@ -1 +0,0 @@
-../../android_logger/src/lib.rs
\ No newline at end of file
diff --git a/crates/log/src/lib.rs b/crates/log/src/lib.rs
index 3e1f5c0..0950772 100644
--- a/crates/log/src/lib.rs
+++ b/crates/log/src/lib.rs
@@ -406,8 +406,7 @@
pub mod kv;
#[cfg(default_log_impl)]
-extern crate once_cell;
-#[cfg(default_log_impl)]
+#[path = "../../android_logger/src/lib.rs"]
mod android_logger;
#[cfg(target_has_atomic = "ptr")]
diff --git a/crates/lru-cache/.android-checksum.json b/crates/lru-cache/.android-checksum.json
index ea04ee3..b12e7bc 100644
--- a/crates/lru-cache/.android-checksum.json
+++ b/crates/lru-cache/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ddb78a93bcbce50566bb209c2f9a8399838209fbf19215c0007574872fd4ce0e","Android.bp":"5a21011aef057234aec8e6c3d17976e7f015ce73a4887fb58f20df09339bcf94","Cargo.toml":"66f7eb1d9184fe75c264d865aa483f7743cc5e2c74dd59472325afe5e2609a66","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"781041f606d859be8f1b5fe3c3445925d225140eca18ffc90fd279defb1345a9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3bcbdbb8e1f4a791c93bb25a7f2956585297314ef506cd327cc341558708fb5e","TEST_MAPPING":"d8b2dc72bf1eae48508078ba7a62a7124c9e8a6f06f2ba82cb60dfe9bf0c5ae4","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","deploy-docs.sh":"ac16cb4077155f70e07be1f76597b660de2e161ce6da9659d22c18b73a1adbe1","src/heapsize.rs":"9da99c52cfc1435cabe3c2ed2ceee2fcb1b0acbb560ca4b2294d13a1d62f9649","src/lib.rs":"255a7f4d9c3fa4328d80159bb8a8505f58300b1e2349e8874406de4137b1c0c0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ddb78a93bcbce50566bb209c2f9a8399838209fbf19215c0007574872fd4ce0e","Android.bp":"14d71e86a0c20fa065a74e4bcd949302d35b9a63973ff5022cb3d425f382cc33","Cargo.toml":"66f7eb1d9184fe75c264d865aa483f7743cc5e2c74dd59472325afe5e2609a66","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"781041f606d859be8f1b5fe3c3445925d225140eca18ffc90fd279defb1345a9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3bcbdbb8e1f4a791c93bb25a7f2956585297314ef506cd327cc341558708fb5e","TEST_MAPPING":"d8b2dc72bf1eae48508078ba7a62a7124c9e8a6f06f2ba82cb60dfe9bf0c5ae4","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","deploy-docs.sh":"ac16cb4077155f70e07be1f76597b660de2e161ce6da9659d22c18b73a1adbe1","src/heapsize.rs":"9da99c52cfc1435cabe3c2ed2ceee2fcb1b0acbb560ca4b2294d13a1d62f9649","src/lib.rs":"255a7f4d9c3fa4328d80159bb8a8505f58300b1e2349e8874406de4137b1c0c0"}}
\ No newline at end of file
diff --git a/crates/lru-cache/Android.bp b/crates/lru-cache/Android.bp
index 4b86ada..5ee8d3e 100644
--- a/crates/lru-cache/Android.bp
+++ b/crates/lru-cache/Android.bp
@@ -28,6 +28,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/lru-cache/cargo_embargo.json b/crates/lru-cache/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/lru-cache/cargo_embargo.json
+++ b/crates/lru-cache/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/lz4_flex/.android-checksum.json b/crates/lz4_flex/.android-checksum.json
index 16b3618..3052166 100644
--- a/crates/lz4_flex/.android-checksum.json
+++ b/crates/lz4_flex/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ba47c5abf4a9d6e75d4e3e9ddfcbe3ab9c83d6cd42df7efe0e03811d1ff89a1e","Android.bp":"d06c9dd49cf4362a74688639c57fd7a18490083cc956163bb68392b0954b97c9","Cargo.toml":"0f2847b0a93648fbf89739c47780e4e2ec0cc1379661f494cbb99fc2a8d254cc","LICENSE":"2781ac2a0be1c8ac76b3137e8e6fed9e93a9ec1f8e07b261338b2b8314de6a5d","METADATA":"d777edcb93f8a26a0bb0d072d02bf1f983e7b8d05f0a7026f8acde7434322cf2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ffe9c9e6c1638a07d1efacf361b52ce8c26218c4b576f6b1f94028db56a2611d","cargo_embargo.json":"762c744fbd4c3e924a9d034fd3c3e4e1399622b96d67058be0ca151ee0b63ba0","src/block/compress.rs":"08bc3ecb1dca7c7152553793f36f0829ddadca890527b95a1026df13b2f5ab93","src/block/decompress.rs":"d8f92f4e55cd974db17f5d13099fbe09b5c91601fdd9eff99f912bcc7289306c","src/block/decompress_safe.rs":"db394030ef77acc10b0e77b0f8d16eafe60bfa1b61452d46605df8d51c8229e0","src/block/hashtable.rs":"3457bc72e98ed3e2d23a449c5fd7ddfee7d283ae2c65dc6fe3578bfac6fcb7e0","src/block/mod.rs":"0b41c2954fd51ffe9c1d095e4d75e26d1b25f9df843b1c51f138ebda06fe4037","src/fastcpy.rs":"5e9a16c2f789ec30f59d1c60d6f6cf6102cb8cb95cb5b226f03460eb8ce1d2da","src/fastcpy_unsafe.rs":"cb9bc012f23c94c33042049aef622d997d37fc710f73fe4a9eea9c5b244ee58d","src/frame/compress.rs":"9941c0413ec889987aba77a4a53dd0010d4860930578aabf4928cb76a1eb144b","src/frame/decompress.rs":"9a4423684ff93c9ed31e8924b52be5bfc4effafcc98c6f177e0c868613041af6","src/frame/header.rs":"68455e5a5e4ca440d9fc854870eacd805439d10f25de9cd43db5579fb6a78cee","src/frame/mod.rs":"9b869402f2c80f02207eee5ea0e8e66021c799bf8a1d4f1bc49b8a551bac809e","src/lib.rs":"75344ae380eba8727873ddec7996ee2948d6e32438b915f85303e9dce05771e4","src/sink.rs":"9d65fdf5e15053c812b4d46734c91791175bc4272cc4c87e5994ad3306ed4fee"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ba47c5abf4a9d6e75d4e3e9ddfcbe3ab9c83d6cd42df7efe0e03811d1ff89a1e","Android.bp":"1a4d7558d9bcd372b5d9ca96357aa3e4675a35563515078334a97a1371bfc387","Cargo.toml":"0f2847b0a93648fbf89739c47780e4e2ec0cc1379661f494cbb99fc2a8d254cc","LICENSE":"2781ac2a0be1c8ac76b3137e8e6fed9e93a9ec1f8e07b261338b2b8314de6a5d","METADATA":"d777edcb93f8a26a0bb0d072d02bf1f983e7b8d05f0a7026f8acde7434322cf2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ffe9c9e6c1638a07d1efacf361b52ce8c26218c4b576f6b1f94028db56a2611d","cargo_embargo.json":"513f06b1f39e3f9aaabbebac0b427376b3dd80a7286cf43bfdf5436d4151c696","src/block/compress.rs":"08bc3ecb1dca7c7152553793f36f0829ddadca890527b95a1026df13b2f5ab93","src/block/decompress.rs":"d8f92f4e55cd974db17f5d13099fbe09b5c91601fdd9eff99f912bcc7289306c","src/block/decompress_safe.rs":"db394030ef77acc10b0e77b0f8d16eafe60bfa1b61452d46605df8d51c8229e0","src/block/hashtable.rs":"3457bc72e98ed3e2d23a449c5fd7ddfee7d283ae2c65dc6fe3578bfac6fcb7e0","src/block/mod.rs":"0b41c2954fd51ffe9c1d095e4d75e26d1b25f9df843b1c51f138ebda06fe4037","src/fastcpy.rs":"5e9a16c2f789ec30f59d1c60d6f6cf6102cb8cb95cb5b226f03460eb8ce1d2da","src/fastcpy_unsafe.rs":"cb9bc012f23c94c33042049aef622d997d37fc710f73fe4a9eea9c5b244ee58d","src/frame/compress.rs":"9941c0413ec889987aba77a4a53dd0010d4860930578aabf4928cb76a1eb144b","src/frame/decompress.rs":"9a4423684ff93c9ed31e8924b52be5bfc4effafcc98c6f177e0c868613041af6","src/frame/header.rs":"68455e5a5e4ca440d9fc854870eacd805439d10f25de9cd43db5579fb6a78cee","src/frame/mod.rs":"9b869402f2c80f02207eee5ea0e8e66021c799bf8a1d4f1bc49b8a551bac809e","src/lib.rs":"75344ae380eba8727873ddec7996ee2948d6e32438b915f85303e9dce05771e4","src/sink.rs":"9d65fdf5e15053c812b4d46734c91791175bc4272cc4c87e5994ad3306ed4fee"}}
\ No newline at end of file
diff --git a/crates/lz4_flex/Android.bp b/crates/lz4_flex/Android.bp
index 8643424..0f839c9 100644
--- a/crates/lz4_flex/Android.bp
+++ b/crates/lz4_flex/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/lz4_flex/cargo_embargo.json b/crates/lz4_flex/cargo_embargo.json
index 1bbaa25..bc7882c 100644
--- a/crates/lz4_flex/cargo_embargo.json
+++ b/crates/lz4_flex/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": false
-}
+ "tests": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/macaddr/.android-checksum.json b/crates/macaddr/.android-checksum.json
index 3b12bcf..f39042e 100644
--- a/crates/macaddr/.android-checksum.json
+++ b/crates/macaddr/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3cde041875bbc17a422b0c87666e13a3d80aff44c90c12965256e1008901dde1","Android.bp":"04b7fb476f36ce1ee4709d442ddba8068c64318f6bd45e69f1e2188c1a1eb930","CHANGELOG.md":"a1b734e0a31edf2611a8ccf384db2fa98241b36dc16907e0377cccd1e47ed037","Cargo.toml":"641ed3f3b32ab1a2819c9f38a8fe12704f7c35484b2751f298321c9c84457c27","LICENSE":"49c18125df34e06604b6c927c9ae3fa8596d84308184db7714d19149aa2c14db","LICENSE-APACHE":"49c18125df34e06604b6c927c9ae3fa8596d84308184db7714d19149aa2c14db","METADATA":"33cd9061119abf029f2f59f2d9795c7252fbf6776b1c81fbb5d41404b31f121a","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bfebd4257596a35f8333a88432b1f04af3ee1da58d8cb2c9a3526a93674b3aae","cargo_embargo.json":"366680e072e66ed19404fe58bd974d841447d11a84c1c65f881ab0d6a5f9460c","rustfmt.toml":"1c67b5217eb92a9fdcb4efdec185e48a8e7b89bd215109db4a3cc68fdad44ce7","src/addr.rs":"955120007ceedadd03ed2855c8f82478867bed58a37d54059d21aa07e12a3ccc","src/addr6.rs":"0704f5d3a1bed9cf96ac97def29b3f95110e09168bfdafc83ad20e5948838777","src/addr8.rs":"bcc290541d9dfa2b9f9530a147f2a6c8f450d6ac81e603c9d892b934c43d19f7","src/lib.rs":"0a07df75fcc2fc4a0ee67256438260091a7d2fe2a35f27cecdb99579d82de4f7","src/parser/mod.rs":"2c6a4e06f2a28d0e35a1061bbc793f860f08cf1145ede3c117fcc8a53002ca70","src/parser/tests.rs":"a4cf5f747b886ee1b4d90d090538389c2ff22576f890c9b87493d169be4b89e5"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3cde041875bbc17a422b0c87666e13a3d80aff44c90c12965256e1008901dde1","Android.bp":"1d2ab1930a1219e595e57ffaaa50697bcad9dd08649de9c3af75730f48adceef","CHANGELOG.md":"a1b734e0a31edf2611a8ccf384db2fa98241b36dc16907e0377cccd1e47ed037","Cargo.toml":"641ed3f3b32ab1a2819c9f38a8fe12704f7c35484b2751f298321c9c84457c27","LICENSE":"49c18125df34e06604b6c927c9ae3fa8596d84308184db7714d19149aa2c14db","LICENSE-APACHE":"49c18125df34e06604b6c927c9ae3fa8596d84308184db7714d19149aa2c14db","METADATA":"33cd9061119abf029f2f59f2d9795c7252fbf6776b1c81fbb5d41404b31f121a","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bfebd4257596a35f8333a88432b1f04af3ee1da58d8cb2c9a3526a93674b3aae","cargo_embargo.json":"7813edde42dfb0f1237ed9e69d1e9d4f2f0b2641307f247500985f161f349670","rustfmt.toml":"1c67b5217eb92a9fdcb4efdec185e48a8e7b89bd215109db4a3cc68fdad44ce7","src/addr.rs":"955120007ceedadd03ed2855c8f82478867bed58a37d54059d21aa07e12a3ccc","src/addr6.rs":"0704f5d3a1bed9cf96ac97def29b3f95110e09168bfdafc83ad20e5948838777","src/addr8.rs":"bcc290541d9dfa2b9f9530a147f2a6c8f450d6ac81e603c9d892b934c43d19f7","src/lib.rs":"0a07df75fcc2fc4a0ee67256438260091a7d2fe2a35f27cecdb99579d82de4f7","src/parser/mod.rs":"2c6a4e06f2a28d0e35a1061bbc793f860f08cf1145ede3c117fcc8a53002ca70","src/parser/tests.rs":"a4cf5f747b886ee1b4d90d090538389c2ff22576f890c9b87493d169be4b89e5"}}
\ No newline at end of file
diff --git a/crates/macaddr/Android.bp b/crates/macaddr/Android.bp
index b0ea7de..b16efdd 100644
--- a/crates/macaddr/Android.bp
+++ b/crates/macaddr/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/macaddr/cargo_embargo.json b/crates/macaddr/cargo_embargo.json
index 4af1a9a..60c8e70 100644
--- a/crates/macaddr/cargo_embargo.json
+++ b/crates/macaddr/cargo_embargo.json
@@ -3,5 +3,6 @@
"serde",
"std"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/managed/.android-checksum.json b/crates/managed/.android-checksum.json
index 603a004..d21624d 100644
--- a/crates/managed/.android-checksum.json
+++ b/crates/managed/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b14d04e7a4a4737933dd240c7323dd31d8842e4ebbe178ded4e90aee3a5e74bf","Android.bp":"328181ac4525d4d3acefe3494b10a2de7f9d315aa7b87075596f465bf55025d4","Cargo.toml":"64a856d747dd47e9de119d5972d1167b0bd38c4c0b1f52932f1526345dd91123","LICENSE":"0ec023412478ca5760dc4060a95fa74af863f2b72efb85b725d002893c7220d3","LICENSE-0BSD.txt":"0ec023412478ca5760dc4060a95fa74af863f2b72efb85b725d002893c7220d3","METADATA":"a40e5c65f44d92cddf69e518b9bc39e02185912b68c8a00b92822794449d8d72","MODULE_LICENSE_PERMISSIVE":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"912c8993add52d8e5bc885bb974e88a88ac7358bba4003c7f648dc1fb520f37c","TEST_MAPPING":"ab230f2da50dd127287e352118a12b6a04c82052d0bd1d2c5ecf562a045612ad","cargo_embargo.json":"3c1e1d20399b03bdf55f18d6015a4094345e1520ee0c54e21b2c4c0f8cbb7536","coverage.sh":"0f0bc3d2b6df82f128aa9ad65e136290091a784bcf796ea0df8b6e6f7801c4ba","src/lib.rs":"fa3b6ba7bce7090f80e23ace1a9b58f6d5440e9f00578af11af9bee4d9be8a71","src/map.rs":"b86acc46ed982f3aed77172e88277c1541a9cfc621cffaac2d6165996da0e579","src/object.rs":"714b47379677b5a514f9460d2239766d6bcc7930fe25fba84940c2a9bbd8caf2","src/slice.rs":"e63a2bd59db0d89a7fc76b549df15eccfde1bd0f6ed3ed515223839393e80474","src/slotmap.rs":"618e34d0b27d46e7a58d4410748b116b870b81a938c10072abf79ab04c989cb1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b14d04e7a4a4737933dd240c7323dd31d8842e4ebbe178ded4e90aee3a5e74bf","Android.bp":"7d07ee074feb40e4e8f29f882fc13cbef4072f9841256c7bbb215bed279e353e","Cargo.toml":"64a856d747dd47e9de119d5972d1167b0bd38c4c0b1f52932f1526345dd91123","LICENSE":"0ec023412478ca5760dc4060a95fa74af863f2b72efb85b725d002893c7220d3","LICENSE-0BSD.txt":"0ec023412478ca5760dc4060a95fa74af863f2b72efb85b725d002893c7220d3","METADATA":"a40e5c65f44d92cddf69e518b9bc39e02185912b68c8a00b92822794449d8d72","MODULE_LICENSE_PERMISSIVE":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"912c8993add52d8e5bc885bb974e88a88ac7358bba4003c7f648dc1fb520f37c","TEST_MAPPING":"ab230f2da50dd127287e352118a12b6a04c82052d0bd1d2c5ecf562a045612ad","cargo_embargo.json":"50e8e8ab3603fba8f92d10fef7134328fbcff2eb41ec44050567f63bcbd82c49","coverage.sh":"0f0bc3d2b6df82f128aa9ad65e136290091a784bcf796ea0df8b6e6f7801c4ba","src/lib.rs":"fa3b6ba7bce7090f80e23ace1a9b58f6d5440e9f00578af11af9bee4d9be8a71","src/map.rs":"b86acc46ed982f3aed77172e88277c1541a9cfc621cffaac2d6165996da0e579","src/object.rs":"714b47379677b5a514f9460d2239766d6bcc7930fe25fba84940c2a9bbd8caf2","src/slice.rs":"e63a2bd59db0d89a7fc76b549df15eccfde1bd0f6ed3ed515223839393e80474","src/slotmap.rs":"618e34d0b27d46e7a58d4410748b116b870b81a938c10072abf79ab04c989cb1"}}
\ No newline at end of file
diff --git a/crates/managed/Android.bp b/crates/managed/Android.bp
index e3818bb..1f7a43b 100644
--- a/crates/managed/Android.bp
+++ b/crates/managed/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/managed/cargo_embargo.json b/crates/managed/cargo_embargo.json
index 246281d..1498c29 100644
--- a/crates/managed/cargo_embargo.json
+++ b/crates/managed/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"tests": true,
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/maplit/.android-checksum.json b/crates/maplit/.android-checksum.json
index bc58bbd..30fef96 100644
--- a/crates/maplit/.android-checksum.json
+++ b/crates/maplit/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"57d75b1f8b4d6f04ae6bbfe06c9dca420b7767c7ddfc12baa9909f6828aa6c6d","Android.bp":"6b7d1d4e48627450dfc0b6cfae1bb62cbedb6ad9edd97113fadbe69f5d584325","Cargo.toml":"9ead68a86ae6a94a698d67d83ee7c1161be6cbc031d5f8489e25816e6493337b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"dbc543e441767b06ba0cdd54647496216b52720060a02e090374f1065f8d9556","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.rst":"67555a05bc2fdfcf303ca098d68dd0f12cee4582f35a6ddcfd4ff10632759b4a","TEST_MAPPING":"a921d5883143432706de1e49ff3f31f65e57983427abe9c250bad3c4bddc10a1","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","src/lib.rs":"d05a41c93137cd8128cfe5e6eb97b0395be8898a7733f78eed36cb17e0f236ce","tests/tests.rs":"d8716b250cae0d9869c4d979f532dfc59850fc9e8ef26661ac18b7c8980116f6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"57d75b1f8b4d6f04ae6bbfe06c9dca420b7767c7ddfc12baa9909f6828aa6c6d","Android.bp":"0a90a421df86d689da2c14d9cfee6dce9aa822e96008172deaf2e2ed41eecb64","Cargo.toml":"9ead68a86ae6a94a698d67d83ee7c1161be6cbc031d5f8489e25816e6493337b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"dbc543e441767b06ba0cdd54647496216b52720060a02e090374f1065f8d9556","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.rst":"67555a05bc2fdfcf303ca098d68dd0f12cee4582f35a6ddcfd4ff10632759b4a","TEST_MAPPING":"a921d5883143432706de1e49ff3f31f65e57983427abe9c250bad3c4bddc10a1","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/lib.rs":"d05a41c93137cd8128cfe5e6eb97b0395be8898a7733f78eed36cb17e0f236ce","tests/tests.rs":"d8716b250cae0d9869c4d979f532dfc59850fc9e8ef26661ac18b7c8980116f6"}}
\ No newline at end of file
diff --git a/crates/maplit/Android.bp b/crates/maplit/Android.bp
index 288e377..576e04f 100644
--- a/crates/maplit/Android.bp
+++ b/crates/maplit/Android.bp
@@ -27,6 +27,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/maplit/cargo_embargo.json b/crates/maplit/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/maplit/cargo_embargo.json
+++ b/crates/maplit/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/maybe-async/.android-checksum.json b/crates/maybe-async/.android-checksum.json
index 5cdf93d..e8b1f65 100644
--- a/crates/maybe-async/.android-checksum.json
+++ b/crates/maybe-async/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2928a84e2eefd91fa5998119dc6e4fab82c27df9a953e2c365f4ef684cab7ea0","Android.bp":"11fe33cabbda29901bb9612c9a5e762f9708ad919a2bf28e0a32e72767ecc910","CHANGELOG.md":"1447830c6ccd0aeace43382f6003dde9720c98213482b858230496b748d23bd7","Cargo.lock":"a2a3438ebf545ed11be11d088cc2206bd48414992b57e5c2fea8933bec17e63a","Cargo.toml":"aaf1109d8ffd430492f5579f7745f541f9ee0f6ad71364cab9507af2c9203c2f","LICENSE":"6c8f7a48bf4b777943333881303b0f6120d5bf1cddcf142770320d076501075d","METADATA":"421e6c4d2c885aeb79381c42bcc71b7ff73734c9a043fb57d6d21e9f25e1c57a","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cdaa4d8837046400848de9223f04929309c57333dbe7099477ac6b5106249096","README.tpl":"8fc0071e4325301e1441ee762ebe1eb22e877e751699f5fc2a2141f4b8045ff6","cargo_embargo.json":"c96dee9f52d6efd20fe199ed37352f4717188454f95bc1532710a71833d6bbc2","examples/service_client.rs":"abf26e2e901ac45a1bad07f14f8dd797916e631c09be2f124f9f44d94f35646d","src/lib.rs":"3f48632b910fc385005fdee27df30772897d4c0ec1bcd3c363ce48ec51edfc10","src/parse.rs":"1b83c60724d7690083444e6af626411ad3b49d576991944b82770cf136f35aea","src/visit.rs":"43d53d5c5d982330e17309416fcf4152b37cb5e6aa1ecef22afe05b323739d14","tests/test.rs":"1c2106144c9142b659a19579cfc09a4f2a866929fa5ce8ff178d769773bbda05","tests/ui/01-maybe-async.rs":"f369fde5ba4c42d6ac591ac4eaa92b11f9886ac5367986c7d588f1440f6e9975","tests/ui/02-must-be-async.rs":"5d3274830c1f9b61126d4e842e900efab46652a6eb8af132d2ef14c1e51229a1","tests/ui/03-must-be-sync.rs":"19d75b9e55b8346763361a0279371d864a1728d544ba707f839d5e6f00a8df17","tests/ui/04-unit-test-util.rs":"096e49e2d4f0e4a63e30a8b009411599a10e0d379174ec2644fe5454af7ddfcb","tests/ui/05-replace-future-generic-type-with-output.rs":"181f1120ae574d71ef16ad8b861a0766459fbbcf57798f76e4dcc46f98c6d3d1","tests/ui/06-sync_impl_async_impl.rs":"3adc60468bdc3819328751bdb648d39e460f53da5a163e0c744f3044e2ab71a0","tests/ui/test_fail/01-empty-test.rs":"2616c8fe7bbc1294d39a697170bf1df3961815d90abbefa8604d10d3e0409a7b","tests/ui/test_fail/01-empty-test.stderr":"81ba36129197249cc2f3ce50c6c3747debfcdaee40eef1e5540e16825797a730","tests/ui/test_fail/02-unknown-path.rs":"fa02c6bb0c2ea92f54d22c1b21918a7a8f8ed0295b0e49e96cc5a93e96a9c4f4","tests/ui/test_fail/02-unknown-path.stderr":"ab81f3ec66919981c4ea27b55a381648bbd054920c283408fb53e297fe8bcff8","tests/ui/test_fail/03-async-gt2.rs":"81854fe19bb869dadd730986dd108987544aaea79b36477c42e022a249184391","tests/ui/test_fail/03-async-gt2.stderr":"c58184cf8f7a48512b40e41f5448e49f46f81393360acd714411b2ad1d035c73","tests/ui/test_fail/04-bad-sync-cond.rs":"4a310cb8cf35892c4f88d295bd7a8d475b8d13841636d3249959628d87ce739b","tests/ui/test_fail/04-bad-sync-cond.stderr":"13fff92dd2986c1db1d0ac9f1b77a389412d1749c6765a7b278fd7c4ab06cfb1","tests/unit-test-util.rs":"f93156585622d787c5dd558655cfb260f3eb741611fe04369f7ee7b02d287b54"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2928a84e2eefd91fa5998119dc6e4fab82c27df9a953e2c365f4ef684cab7ea0","Android.bp":"3dc17e5b072ca6c409b5aa74cb19c127076eab243f3d25aa29f4ef14483e095b","CHANGELOG.md":"1447830c6ccd0aeace43382f6003dde9720c98213482b858230496b748d23bd7","Cargo.lock":"a2a3438ebf545ed11be11d088cc2206bd48414992b57e5c2fea8933bec17e63a","Cargo.toml":"aaf1109d8ffd430492f5579f7745f541f9ee0f6ad71364cab9507af2c9203c2f","LICENSE":"6c8f7a48bf4b777943333881303b0f6120d5bf1cddcf142770320d076501075d","METADATA":"421e6c4d2c885aeb79381c42bcc71b7ff73734c9a043fb57d6d21e9f25e1c57a","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cdaa4d8837046400848de9223f04929309c57333dbe7099477ac6b5106249096","README.tpl":"8fc0071e4325301e1441ee762ebe1eb22e877e751699f5fc2a2141f4b8045ff6","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/service_client.rs":"abf26e2e901ac45a1bad07f14f8dd797916e631c09be2f124f9f44d94f35646d","src/lib.rs":"3f48632b910fc385005fdee27df30772897d4c0ec1bcd3c363ce48ec51edfc10","src/parse.rs":"1b83c60724d7690083444e6af626411ad3b49d576991944b82770cf136f35aea","src/visit.rs":"43d53d5c5d982330e17309416fcf4152b37cb5e6aa1ecef22afe05b323739d14","tests/test.rs":"1c2106144c9142b659a19579cfc09a4f2a866929fa5ce8ff178d769773bbda05","tests/ui/01-maybe-async.rs":"f369fde5ba4c42d6ac591ac4eaa92b11f9886ac5367986c7d588f1440f6e9975","tests/ui/02-must-be-async.rs":"5d3274830c1f9b61126d4e842e900efab46652a6eb8af132d2ef14c1e51229a1","tests/ui/03-must-be-sync.rs":"19d75b9e55b8346763361a0279371d864a1728d544ba707f839d5e6f00a8df17","tests/ui/04-unit-test-util.rs":"096e49e2d4f0e4a63e30a8b009411599a10e0d379174ec2644fe5454af7ddfcb","tests/ui/05-replace-future-generic-type-with-output.rs":"181f1120ae574d71ef16ad8b861a0766459fbbcf57798f76e4dcc46f98c6d3d1","tests/ui/06-sync_impl_async_impl.rs":"3adc60468bdc3819328751bdb648d39e460f53da5a163e0c744f3044e2ab71a0","tests/ui/test_fail/01-empty-test.rs":"2616c8fe7bbc1294d39a697170bf1df3961815d90abbefa8604d10d3e0409a7b","tests/ui/test_fail/01-empty-test.stderr":"81ba36129197249cc2f3ce50c6c3747debfcdaee40eef1e5540e16825797a730","tests/ui/test_fail/02-unknown-path.rs":"fa02c6bb0c2ea92f54d22c1b21918a7a8f8ed0295b0e49e96cc5a93e96a9c4f4","tests/ui/test_fail/02-unknown-path.stderr":"ab81f3ec66919981c4ea27b55a381648bbd054920c283408fb53e297fe8bcff8","tests/ui/test_fail/03-async-gt2.rs":"81854fe19bb869dadd730986dd108987544aaea79b36477c42e022a249184391","tests/ui/test_fail/03-async-gt2.stderr":"c58184cf8f7a48512b40e41f5448e49f46f81393360acd714411b2ad1d035c73","tests/ui/test_fail/04-bad-sync-cond.rs":"4a310cb8cf35892c4f88d295bd7a8d475b8d13841636d3249959628d87ce739b","tests/ui/test_fail/04-bad-sync-cond.stderr":"13fff92dd2986c1db1d0ac9f1b77a389412d1749c6765a7b278fd7c4ab06cfb1","tests/unit-test-util.rs":"f93156585622d787c5dd558655cfb260f3eb741611fe04369f7ee7b02d287b54"}}
\ No newline at end of file
diff --git a/crates/maybe-async/Android.bp b/crates/maybe-async/Android.bp
index baf6a11..a2061de 100644
--- a/crates/maybe-async/Android.bp
+++ b/crates/maybe-async/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/maybe-async/cargo_embargo.json b/crates/maybe-async/cargo_embargo.json
index fca634f..b6c35c7 100644
--- a/crates/maybe-async/cargo_embargo.json
+++ b/crates/maybe-async/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/memoffset/.android-checksum.json b/crates/memoffset/.android-checksum.json
index 5cb5e61..29e0ae5 100644
--- a/crates/memoffset/.android-checksum.json
+++ b/crates/memoffset/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e4d160493a4e5edd93e9a6699f0a307b3e560c2aa685d3b5b01d5daf96953e72","Android.bp":"ef70d00b40cca5ed16c946f66c7c4cfa2f06cd9c167b601ad90818fc02ce6600","CHANGELOG.md":"d1a767f0b72b210c2fdfd5261e6854db96ade400fa899607e61f31eb797c2f4e","Cargo.toml":"8c76315525b109f283da051f625af5823a8272ecbfff0e9c7df8e8136d26cad8","LICENSE":"ac13cdaa1e9ba8b68a3dbd3136fcaf5d1c22e8cc0d310b58547c60e25f5b1ca8","METADATA":"7fe8c50e491fca8c5fc591fd593f9b58ee600fe4fc2158ed004c39924ffbac60","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"162bcfe670b608fd58ec3838443e75f6ba4c703a34afc6e6cc8095a0641eb1d4","TEST_MAPPING":"c528eb3aae8a5dc27dfd693486b9d23b2d472810667c67c894a2778bbb5d2bf5","build.rs":"f7acdb973b2a1cca0d70c4262ac0eee605d0310523890d12ca115eb533609703","cargo_embargo.json":"2c90cb26c44ebcd52241cce56e0f18ef2af9e79d024d78839a05609503a53993","src/lib.rs":"efe36c6a27ecdcfbf94473cda3e0ec992706fcd8f0046a617050b1aee2de2a13","src/offset_of.rs":"4be8782618b7675601ab0d8068f92c62219f5231c641f4fe6d1b40be2972d874","src/raw_field.rs":"97e9bdc23899594d1ba2bb1d43b8d7da46b2ce2983da88da86e0fd0ea3bcf3f9","src/span_of.rs":"067f813fa8ded3cb0f74c2d759186ced99e267e747ce777e6a8923a885e281ce"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e4d160493a4e5edd93e9a6699f0a307b3e560c2aa685d3b5b01d5daf96953e72","Android.bp":"99d99e016b678a2e8ec86b03cf73ffd67a8eb1aeb3872f249c20ade1ce52ebc8","CHANGELOG.md":"d1a767f0b72b210c2fdfd5261e6854db96ade400fa899607e61f31eb797c2f4e","Cargo.toml":"8c76315525b109f283da051f625af5823a8272ecbfff0e9c7df8e8136d26cad8","LICENSE":"ac13cdaa1e9ba8b68a3dbd3136fcaf5d1c22e8cc0d310b58547c60e25f5b1ca8","METADATA":"7fe8c50e491fca8c5fc591fd593f9b58ee600fe4fc2158ed004c39924ffbac60","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"162bcfe670b608fd58ec3838443e75f6ba4c703a34afc6e6cc8095a0641eb1d4","TEST_MAPPING":"c528eb3aae8a5dc27dfd693486b9d23b2d472810667c67c894a2778bbb5d2bf5","build.rs":"f7acdb973b2a1cca0d70c4262ac0eee605d0310523890d12ca115eb533609703","cargo_embargo.json":"56875f40ba6d27e84d9e1ef4ffad3ecd8f7061f53a22cec656300f90693cbf14","src/lib.rs":"efe36c6a27ecdcfbf94473cda3e0ec992706fcd8f0046a617050b1aee2de2a13","src/offset_of.rs":"4be8782618b7675601ab0d8068f92c62219f5231c641f4fe6d1b40be2972d874","src/raw_field.rs":"97e9bdc23899594d1ba2bb1d43b8d7da46b2ce2983da88da86e0fd0ea3bcf3f9","src/span_of.rs":"067f813fa8ded3cb0f74c2d759186ced99e267e747ce777e6a8923a885e281ce"}}
\ No newline at end of file
diff --git a/crates/memoffset/Android.bp b/crates/memoffset/Android.bp
index 9302556..9fdf5f2 100644
--- a/crates/memoffset/Android.bp
+++ b/crates/memoffset/Android.bp
@@ -97,4 +97,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/memoffset/cargo_embargo.json b/crates/memoffset/cargo_embargo.json
index a503b0a..ed0fded 100644
--- a/crates/memoffset/cargo_embargo.json
+++ b/crates/memoffset/cargo_embargo.json
@@ -27,5 +27,6 @@
}
}
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/merge/.android-checksum.json b/crates/merge/.android-checksum.json
index 71efe71..842f406 100644
--- a/crates/merge/.android-checksum.json
+++ b/crates/merge/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1e1cf1797877ab7576a24ced845b2c0d70ed3e6d6150f9a16f982268c242aed7","Android.bp":"1086b2f5177cb93a4c622b84f0fbb0a15b28d06435865a1f4961390212757996","CHANGELOG.md":"a13c7bac87b478e96a8d5187323f6e740e1f0b2d605089097a5a18d4ddbc4b80","Cargo.lock":"6f9ab960cec660c7e8b772618f5df9a8108488d1e8163b8c10b65faffa94fec3","Cargo.toml":"9186a51d564e0b0d7316aeddf44d0fab2631ae5c1201e1f1803369d8298d7ce7","LICENSE":"a202ab0d5c52d112293c9e98c1304d9b23c1fa9773b7c633b02c60e8fac58771","LICENSES/Apache-2.0.txt":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSES/CC0-1.0.txt":"444ceb00c6887c163b2b7fcc162d6629694c2f78d44b976fa19abdc147c506eb","METADATA":"60029093063ba877df3cbedd75d9dd088af96633aad3265a464d9e8c28a0bc13","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"95258d9e82dc2c24161ada6dc18b12fa4ae4e7ae88fb3c954d0f99d8a3a1f10c","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/args.rs":"fa6912dad6acb79997d8238409330287526c186b3888894d525ebd802da8eb7c","examples/user.rs":"5d0debfa5f51ab1b8c1b419e3bd8450319047f553263e58df91ab64b2ac976a1","src/lib.rs":"567db83f4d45ca8f6ddd9678bf572a6135217a5ef72a141e90d6f1b485f96e94","tests/compile.rs":"34d3ee45f9faae059649f68aa41011d6045b21fd5ddbfe29fb4b46fb56a9f40d","tests/compile/derive-enum.rs":"ddc9ae9a6dc39be912464340a8096cfa8879a1ea36952be7d6936c4fc77fc4ca","tests/compile/derive-enum.stderr":"954102c07a6a0366db0cd6da270e48fcf693f9db30a8b083a1f37a24c5f69dc6","tests/compile/derive-invalid-attribute.rs":"b2f875797f5deec58e7a842532117dfe8dc541e045eee54d453d4a3839a9fa12","tests/compile/derive-invalid-attribute.stderr":"2802f8410981df67c01d4e56776c1fda0331b4931a3c590d0d23dff3d2df0735","tests/compile/derive-invalid-skip.rs":"68e6dc60c200d8cb72e34dc59026da5c6910ae914d8907c2b06aa088727815a0","tests/compile/derive-invalid-skip.stderr":"c8f4cb1d273da6cd292fe8a182edbb9a3072db53bc84ebe20be72b53ea4ecb02","tests/compile/derive-invalid-strategy.rs":"25f8ff0400f8e9a5b4cff0a4f07bc609a7ec2a423477935d3c76b60065323234","tests/compile/derive-invalid-strategy.stderr":"873145349c21ec14d4f9c064dcf1ea6ba621a4bc310e7adcebb98dbd6974891d","tests/compile/derive-missing-strategy.rs":"af4789123fad459706a9db4b611897c795c4e7007142aae0c53cb5634e4e3e65","tests/compile/derive-missing-strategy.stderr":"78d6a359fdb8527337b6944a77ba9a223d655d576ed82d0aa31fd58f8396db9c","tests/compile/derive-no-strategy.rs":"a9e4f71b4260c3536c73b9c499f98281ec0429197c4cca3d37be2a901846e575","tests/compile/derive-no-strategy.stderr":"a2fce73795ba14321a184ef2eab564fb6d1bd5f100b8cccec5cd0249b8b5d9e8","tests/compile/derive-u8.rs":"2349c61d7dd86d6cbc8220f50a090e489ba138d35a28814029764c3e5aa54c68","tests/compile/derive-u8.stderr":"ff398c45e4afa2c3f9940dc5be5ccc49a7a2ee378c9c1f1fb3474d03097e2908","tests/derive.rs":"b13bb8778edcac5fc1984e4cf6d1ee3a079cfece6a3b8a04bb2f3d492b97eea7","tests/impls.rs":"080fc918f1427ab4bdd7eda34d6d0d82768580c99a31faca8fe6824e03177cb3","tests/strategies.rs":"f1f72fe6e50b841d6834164b7f52b3dd98982ebd3da9f40dbc734025c81e5742"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1e1cf1797877ab7576a24ced845b2c0d70ed3e6d6150f9a16f982268c242aed7","Android.bp":"ea1f43635a923c7467ade5daeacd9514862feceb6f7fbcd9120938d47685d68d","CHANGELOG.md":"a13c7bac87b478e96a8d5187323f6e740e1f0b2d605089097a5a18d4ddbc4b80","Cargo.lock":"6f9ab960cec660c7e8b772618f5df9a8108488d1e8163b8c10b65faffa94fec3","Cargo.toml":"9186a51d564e0b0d7316aeddf44d0fab2631ae5c1201e1f1803369d8298d7ce7","LICENSE":"a202ab0d5c52d112293c9e98c1304d9b23c1fa9773b7c633b02c60e8fac58771","LICENSES/Apache-2.0.txt":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSES/CC0-1.0.txt":"444ceb00c6887c163b2b7fcc162d6629694c2f78d44b976fa19abdc147c506eb","METADATA":"60029093063ba877df3cbedd75d9dd088af96633aad3265a464d9e8c28a0bc13","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"95258d9e82dc2c24161ada6dc18b12fa4ae4e7ae88fb3c954d0f99d8a3a1f10c","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/args.rs":"fa6912dad6acb79997d8238409330287526c186b3888894d525ebd802da8eb7c","examples/user.rs":"5d0debfa5f51ab1b8c1b419e3bd8450319047f553263e58df91ab64b2ac976a1","src/lib.rs":"567db83f4d45ca8f6ddd9678bf572a6135217a5ef72a141e90d6f1b485f96e94","tests/compile.rs":"34d3ee45f9faae059649f68aa41011d6045b21fd5ddbfe29fb4b46fb56a9f40d","tests/compile/derive-enum.rs":"ddc9ae9a6dc39be912464340a8096cfa8879a1ea36952be7d6936c4fc77fc4ca","tests/compile/derive-enum.stderr":"954102c07a6a0366db0cd6da270e48fcf693f9db30a8b083a1f37a24c5f69dc6","tests/compile/derive-invalid-attribute.rs":"b2f875797f5deec58e7a842532117dfe8dc541e045eee54d453d4a3839a9fa12","tests/compile/derive-invalid-attribute.stderr":"2802f8410981df67c01d4e56776c1fda0331b4931a3c590d0d23dff3d2df0735","tests/compile/derive-invalid-skip.rs":"68e6dc60c200d8cb72e34dc59026da5c6910ae914d8907c2b06aa088727815a0","tests/compile/derive-invalid-skip.stderr":"c8f4cb1d273da6cd292fe8a182edbb9a3072db53bc84ebe20be72b53ea4ecb02","tests/compile/derive-invalid-strategy.rs":"25f8ff0400f8e9a5b4cff0a4f07bc609a7ec2a423477935d3c76b60065323234","tests/compile/derive-invalid-strategy.stderr":"873145349c21ec14d4f9c064dcf1ea6ba621a4bc310e7adcebb98dbd6974891d","tests/compile/derive-missing-strategy.rs":"af4789123fad459706a9db4b611897c795c4e7007142aae0c53cb5634e4e3e65","tests/compile/derive-missing-strategy.stderr":"78d6a359fdb8527337b6944a77ba9a223d655d576ed82d0aa31fd58f8396db9c","tests/compile/derive-no-strategy.rs":"a9e4f71b4260c3536c73b9c499f98281ec0429197c4cca3d37be2a901846e575","tests/compile/derive-no-strategy.stderr":"a2fce73795ba14321a184ef2eab564fb6d1bd5f100b8cccec5cd0249b8b5d9e8","tests/compile/derive-u8.rs":"2349c61d7dd86d6cbc8220f50a090e489ba138d35a28814029764c3e5aa54c68","tests/compile/derive-u8.stderr":"ff398c45e4afa2c3f9940dc5be5ccc49a7a2ee378c9c1f1fb3474d03097e2908","tests/derive.rs":"b13bb8778edcac5fc1984e4cf6d1ee3a079cfece6a3b8a04bb2f3d492b97eea7","tests/impls.rs":"080fc918f1427ab4bdd7eda34d6d0d82768580c99a31faca8fe6824e03177cb3","tests/strategies.rs":"f1f72fe6e50b841d6834164b7f52b3dd98982ebd3da9f40dbc734025c81e5742"}}
\ No newline at end of file
diff --git a/crates/merge/Android.bp b/crates/merge/Android.bp
index f6619b1..af8255d 100644
--- a/crates/merge/Android.bp
+++ b/crates/merge/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/merge/cargo_embargo.json b/crates/merge/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/merge/cargo_embargo.json
+++ b/crates/merge/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/merge_derive/.android-checksum.json b/crates/merge_derive/.android-checksum.json
index 8b8d659..8315d67 100644
--- a/crates/merge_derive/.android-checksum.json
+++ b/crates/merge_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f1c7849279fc4e150fb1fccc9c8c8fc5907bad33883f462580b7572977c74d56","Android.bp":"ef84f6a93590898a2494324bacd0d90877a8e2589508fc6d1ad7b030e62175e4","CHANGELOG.md":"8d44f396a0f7e7926742fadd163e986f5aaafb712322008c1e2b89a153f737ac","Cargo.toml":"e17f7566ef72cea260aec755b0f466efb32035f0e9161ac8b64587b18bc1419a","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSES/Apache-2.0.txt":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"38b46eef082545db2435cbc98a8e08947f436ba6cb073d8a3208a7df2db52464","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"77d7318955ed92147465f93ead560c5e51b94be0bd1071d157a638b7abb8033e","cargo_embargo.json":"959dd19638554e04caf1075d80b656ea7d43f90e44a3fd259447f092bd8a4f2c","patches/license.patch":"28f4008e3da517c3defa4964b8d2a5026770f3805f4509427a548b53b3223587","patches/syn-2.patch":"33991b2069ea8e6719a97e1499bccc7acc84fccd298c64b34946a43e28bd6f02","src/lib.rs":"d829c1e1af59c06a676a04b6d334b06a82184f44a58b43bf3fe886fda54076e9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f1c7849279fc4e150fb1fccc9c8c8fc5907bad33883f462580b7572977c74d56","Android.bp":"ef84f6a93590898a2494324bacd0d90877a8e2589508fc6d1ad7b030e62175e4","CHANGELOG.md":"8d44f396a0f7e7926742fadd163e986f5aaafb712322008c1e2b89a153f737ac","Cargo.toml":"e17f7566ef72cea260aec755b0f466efb32035f0e9161ac8b64587b18bc1419a","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSES/Apache-2.0.txt":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"38b46eef082545db2435cbc98a8e08947f436ba6cb073d8a3208a7df2db52464","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"77d7318955ed92147465f93ead560c5e51b94be0bd1071d157a638b7abb8033e","cargo_embargo.json":"76da6c9af09e12d0abfc6239277cf55b8752f7c5b0215b6b68bb3c2767266c63","patches/license.patch":"28f4008e3da517c3defa4964b8d2a5026770f3805f4509427a548b53b3223587","patches/syn-2.patch":"33991b2069ea8e6719a97e1499bccc7acc84fccd298c64b34946a43e28bd6f02","src/lib.rs":"d829c1e1af59c06a676a04b6d334b06a82184f44a58b43bf3fe886fda54076e9"}}
\ No newline at end of file
diff --git a/crates/merge_derive/cargo_embargo.json b/crates/merge_derive/cargo_embargo.json
index 0742578..9fe6845 100644
--- a/crates/merge_derive/cargo_embargo.json
+++ b/crates/merge_derive/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/miette-derive/.android-checksum.json b/crates/miette-derive/.android-checksum.json
index d0f5ea0..4e3251b 100644
--- a/crates/miette-derive/.android-checksum.json
+++ b/crates/miette-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0dc70120bfc5380119fdcb3079b533a3d2fd68ea6381c7496c4fcd3d460a669d","Android.bp":"29af978d63b6898e465b98ae30692c13c93258ec049a8c5913050a87c67e7601","Cargo.toml":"ac7e7f8878a251954538417da23110fcf4cbb6da1e0bc346c5ba18b7c2f5acdb","LICENSE":"5281d46044d26df9efdd5588d65aad4d49c29e46f7f720d727c9d33cd6b4644d","METADATA":"b32972e105176fe1ada6ec3f6d11f32b2547c0f7a826e62247cfd6d183441891","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"d17b8bd25b48dae259fb01e76a2efeb790fc436fe351c2ac40912800d1647777","src/code.rs":"ff1c86d9cbe87f54f0de905a5274b4c703a228168b64753a6bf3acfe1bd18356","src/diagnostic.rs":"04811edb4086d614f727fe2e098298a9414489de6e5eeb63b809ec7783e38177","src/diagnostic_arg.rs":"db4788b8b301024401b46f21eb4e29118e59ad9d6790bc0fdec897d1d0dfcffa","src/diagnostic_source.rs":"e6012c7f6b8154ac36006d2a10eddf1311c322e504a9534b870bedb0ce36bd5c","src/fmt.rs":"a6dff276ccdd09a19f9d04ad1a2f3ffa56872c402c94da57c9c8fb3bc891e70f","src/forward.rs":"b344a6a48a90cb9832b8ffa9ca0f913539b1df0c2d34c4975235c5dc39c4a23a","src/help.rs":"cb79fa64bd5e1f9c57ad7995614da1ef461298c20d8c962be4454e2c0f318b49","src/label.rs":"2170aade3cd887d81d472528bb8931542d0a2845c00dd559f30fdabb6a555402","src/lib.rs":"d56635c4293a3f4a9264cec62706d2ae2fb4819dadaf598875baeabcdc47013d","src/related.rs":"113fb18b30ad2f05a3552fecb45f01b27bca569494fedfe9471f99a0467d7677","src/severity.rs":"1f24380a911a143517cf48c170798dea1e36e56c32b4e2309b93840385df65c5","src/source_code.rs":"5593661da6ae95bf91b150de64963136cc19c05e0f736761012b225647a4259c","src/url.rs":"4aacdfe28f9a1259ceb59368832c1a601906d64f268024d30856b6196c62aaeb","src/utils.rs":"249eb5284572fe97d24e0c1fff3009100a1fd2739414f70e4fe1542b73e8bbc2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0dc70120bfc5380119fdcb3079b533a3d2fd68ea6381c7496c4fcd3d460a669d","Android.bp":"29af978d63b6898e465b98ae30692c13c93258ec049a8c5913050a87c67e7601","Cargo.toml":"ac7e7f8878a251954538417da23110fcf4cbb6da1e0bc346c5ba18b7c2f5acdb","LICENSE":"5281d46044d26df9efdd5588d65aad4d49c29e46f7f720d727c9d33cd6b4644d","METADATA":"b32972e105176fe1ada6ec3f6d11f32b2547c0f7a826e62247cfd6d183441891","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"cf906d37e7791d2eeeabd970987a331ec03348a5e66795b77b761b89485a61ed","src/code.rs":"ff1c86d9cbe87f54f0de905a5274b4c703a228168b64753a6bf3acfe1bd18356","src/diagnostic.rs":"04811edb4086d614f727fe2e098298a9414489de6e5eeb63b809ec7783e38177","src/diagnostic_arg.rs":"db4788b8b301024401b46f21eb4e29118e59ad9d6790bc0fdec897d1d0dfcffa","src/diagnostic_source.rs":"e6012c7f6b8154ac36006d2a10eddf1311c322e504a9534b870bedb0ce36bd5c","src/fmt.rs":"a6dff276ccdd09a19f9d04ad1a2f3ffa56872c402c94da57c9c8fb3bc891e70f","src/forward.rs":"b344a6a48a90cb9832b8ffa9ca0f913539b1df0c2d34c4975235c5dc39c4a23a","src/help.rs":"cb79fa64bd5e1f9c57ad7995614da1ef461298c20d8c962be4454e2c0f318b49","src/label.rs":"2170aade3cd887d81d472528bb8931542d0a2845c00dd559f30fdabb6a555402","src/lib.rs":"d56635c4293a3f4a9264cec62706d2ae2fb4819dadaf598875baeabcdc47013d","src/related.rs":"113fb18b30ad2f05a3552fecb45f01b27bca569494fedfe9471f99a0467d7677","src/severity.rs":"1f24380a911a143517cf48c170798dea1e36e56c32b4e2309b93840385df65c5","src/source_code.rs":"5593661da6ae95bf91b150de64963136cc19c05e0f736761012b225647a4259c","src/url.rs":"4aacdfe28f9a1259ceb59368832c1a601906d64f268024d30856b6196c62aaeb","src/utils.rs":"249eb5284572fe97d24e0c1fff3009100a1fd2739414f70e4fe1542b73e8bbc2"}}
\ No newline at end of file
diff --git a/crates/miette-derive/cargo_embargo.json b/crates/miette-derive/cargo_embargo.json
index 2c0a03c..4e20c1d 100644
--- a/crates/miette-derive/cargo_embargo.json
+++ b/crates/miette-derive/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/miette/.android-checksum.json b/crates/miette/.android-checksum.json
index eda9479..740511e 100644
--- a/crates/miette/.android-checksum.json
+++ b/crates/miette/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"98c3eda8c26d80e1320080b55ccb10ed8b6436f4bb0b6221c0a6069a283d3f94","Android.bp":"2aa20c2a6dd4001ecca96fd5b58b8e0c7e0efd1e72de580f6499f3c24d539b7d","CHANGELOG.md":"65c6979bd66b80aa37756269e96dcc86cfff0100e5c034b2cd685dd5674e245a","CODE_OF_CONDUCT.md":"a4bd04c90895c800d5662d75e618bace729c69ec2f922f45c9e60a4fc3e04e96","CONTRIBUTING.md":"c2aca4ba28d37a84e35806c4f0c329fb9518ff40906d73cebb947b495202ee53","Cargo.toml":"ecf8546a7b5d78acf498f88f89d8e56438b9b508d3515555421d519af18d7597","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"18859bbb85332f892a9319cce94d9f263422c3ffba8a110a0b083f5bc328f5a5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile.toml":"e789bcdd20135e93c4532dce514faed0759635735485ca31ad3a2f02b747dd27","README.md":"631553a4ca4335fac29631fb1d132c76f4bda351affa89ca4fd892565366cee9","README.tpl":"5697d6b6d27e4ddbb06bd91d6e23883302933a969d3b5573bac44b010b1202f3","android_config.toml":"0f390735e2ee04b3a9d1130bbaca72c29c58ad34322f9ed6b1a22a4763d6fd5f","cargo_embargo.json":"7191eedf1302c4727641965be2efc8ebb1baa210b39476f7d6efe67540763f54","cliff.toml":"9422e51f9349abcfa54e6d9deb0622352a5d29041eb6d1329f5fa4c72da22e7d","clippy.toml":"74d6d343eeb86889927c2bf9290cbc67dc83f2e520519afae082da3dc8fda69c","rustfmt.toml":"b2f9d730640bc5428434fedcff3caf3e1675fd9f4b9ba5b78fc7a880c6f4e2a5","src/chain.rs":"c193750bbb0deb1ce6bd711bd5c1a6edc97cf2421fd4eb54e1a65bed37917928","src/diagnostic_chain.rs":"aa2d4965f0e3e326d254d3bba384fe1b9492d504e77467a6adb5266053e57485","src/error.rs":"3d717cf74c5b796b07f8a09192dda4abaa087915ee0d181733ec9678635e09f1","src/eyreish/context.rs":"daa066a03c7609c7d62bddb047ea54cdc084258788247f143e04645efd217145","src/eyreish/error.rs":"7ca2a397116b08953920e5ff3bd75e26d0aa1faf2cdb19c3ebdcd69af2026bd6","src/eyreish/fmt.rs":"3a65c1dcf3cadb01b6609a4ae69998f95a917b73d26c0900b3fd262bcca1e5f9","src/eyreish/into_diagnostic.rs":"365fb842e4570630d9b612edc528bcf95df08aaec0dd8db50d2ebe2265f5fe75","src/eyreish/kind.rs":"8acfce5634ac76d912bf1039d3f59f03fc59f4a76d6fb31378768eec2d220271","src/eyreish/macros.rs":"9caa49bfc6c9d034a552e5e468a66a62b8ac330b20e50b9e4f30a62d5634c269","src/eyreish/mod.rs":"fcb558244877211acc1e89e19682f726dfb4ffd3923c1b7bac25b9bb49fbce70","src/eyreish/ptr.rs":"793928e7b6f9fc5a636448059e94debdb2938c0a27636045b1b4bb1742a0a7e7","src/eyreish/wrapper.rs":"5c0a555aa3ae8b593012aad03bbf086715a6cd55f70168beeb691f1cb4c092d0","src/handler.rs":"aed1f872d61fd54c62457dfd3e18626fffae9a3ad1194752da33ee43c5ee5cb8","src/handlers/debug.rs":"1839488cd311ac9499971bcc0b0cd0afdc6566669608e9958c6e80675406acdf","src/handlers/graphical.rs":"c292e0177f37564b4b8f695b26265dfb88fd12b65f2cfb41eeea14aaba176ef1","src/handlers/json.rs":"aa20e185318125eea7abf6a26bc55953e833102ce8ace5f63243c5895139f679","src/handlers/mod.rs":"4ab817f09f1a85d35286910e0930a0ecc70969f8fbe61069b76ebf55264673ab","src/handlers/narratable.rs":"88a61e3cefa991700fcea5a7afacdab37dc4981fd67554db96e36f4c2169b791","src/handlers/theme.rs":"e42eadd69467f92271fc75a3204d39497bce98f196d448f308ed6582e8e1cb6c","src/highlighters/blank.rs":"70cfe07316e5c99cd05f8fb2071702129891270381df4cf9588194209513a34b","src/highlighters/mod.rs":"69d37156ca38f5f1ed757ca36bc471f53187451bf6a332119082f0f6c5bac2ef","src/highlighters/syntect.rs":"1996f20a367c4846d2e38d74f9eadf0c22f6d3c8aaab32eeac2004572fe69f39","src/lib.rs":"9515fd47618a74bb8e877e9311168576f502d456551fb666c700552e1904cd6f","src/macro_helpers.rs":"2a125e4b19c69a344affac9964f32d6c04c380bea50d4643e9973e2a7935382f","src/miette_diagnostic.rs":"adfa35237cdda9c071de07218f542926f47981732a7c044fc6fb78b433a3cf8e","src/named_source.rs":"7b29bce74d1459ff1dc0b84e1c3a7417eac72c497d03ec29d3159291c8169ca9","src/panic.rs":"49d2f5dcaf1308ef787b40e7174d80492a049f05ed52e379aee10b1bfb71470b","src/protocol.rs":"1e0ceeeae1e8f2ca1bf034a7e88c07b105f1a16179e5e2ce90d02545c8abd23f","src/source_impls.rs":"ec9e5689f088c960ba753d91568267a0bd1f29941d53990b5845ffd70b65681e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"98c3eda8c26d80e1320080b55ccb10ed8b6436f4bb0b6221c0a6069a283d3f94","Android.bp":"2aa20c2a6dd4001ecca96fd5b58b8e0c7e0efd1e72de580f6499f3c24d539b7d","CHANGELOG.md":"65c6979bd66b80aa37756269e96dcc86cfff0100e5c034b2cd685dd5674e245a","CODE_OF_CONDUCT.md":"a4bd04c90895c800d5662d75e618bace729c69ec2f922f45c9e60a4fc3e04e96","CONTRIBUTING.md":"c2aca4ba28d37a84e35806c4f0c329fb9518ff40906d73cebb947b495202ee53","Cargo.toml":"ecf8546a7b5d78acf498f88f89d8e56438b9b508d3515555421d519af18d7597","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"18859bbb85332f892a9319cce94d9f263422c3ffba8a110a0b083f5bc328f5a5","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile.toml":"e789bcdd20135e93c4532dce514faed0759635735485ca31ad3a2f02b747dd27","README.md":"631553a4ca4335fac29631fb1d132c76f4bda351affa89ca4fd892565366cee9","README.tpl":"5697d6b6d27e4ddbb06bd91d6e23883302933a969d3b5573bac44b010b1202f3","android_config.toml":"0f390735e2ee04b3a9d1130bbaca72c29c58ad34322f9ed6b1a22a4763d6fd5f","cargo_embargo.json":"d935a67fbb2a17f298afcbcb6ecdf2b5fefd2e9d07b41a155f177820619890f0","cliff.toml":"9422e51f9349abcfa54e6d9deb0622352a5d29041eb6d1329f5fa4c72da22e7d","clippy.toml":"74d6d343eeb86889927c2bf9290cbc67dc83f2e520519afae082da3dc8fda69c","rustfmt.toml":"b2f9d730640bc5428434fedcff3caf3e1675fd9f4b9ba5b78fc7a880c6f4e2a5","src/chain.rs":"c193750bbb0deb1ce6bd711bd5c1a6edc97cf2421fd4eb54e1a65bed37917928","src/diagnostic_chain.rs":"aa2d4965f0e3e326d254d3bba384fe1b9492d504e77467a6adb5266053e57485","src/error.rs":"3d717cf74c5b796b07f8a09192dda4abaa087915ee0d181733ec9678635e09f1","src/eyreish/context.rs":"daa066a03c7609c7d62bddb047ea54cdc084258788247f143e04645efd217145","src/eyreish/error.rs":"7ca2a397116b08953920e5ff3bd75e26d0aa1faf2cdb19c3ebdcd69af2026bd6","src/eyreish/fmt.rs":"3a65c1dcf3cadb01b6609a4ae69998f95a917b73d26c0900b3fd262bcca1e5f9","src/eyreish/into_diagnostic.rs":"365fb842e4570630d9b612edc528bcf95df08aaec0dd8db50d2ebe2265f5fe75","src/eyreish/kind.rs":"8acfce5634ac76d912bf1039d3f59f03fc59f4a76d6fb31378768eec2d220271","src/eyreish/macros.rs":"9caa49bfc6c9d034a552e5e468a66a62b8ac330b20e50b9e4f30a62d5634c269","src/eyreish/mod.rs":"fcb558244877211acc1e89e19682f726dfb4ffd3923c1b7bac25b9bb49fbce70","src/eyreish/ptr.rs":"793928e7b6f9fc5a636448059e94debdb2938c0a27636045b1b4bb1742a0a7e7","src/eyreish/wrapper.rs":"5c0a555aa3ae8b593012aad03bbf086715a6cd55f70168beeb691f1cb4c092d0","src/handler.rs":"aed1f872d61fd54c62457dfd3e18626fffae9a3ad1194752da33ee43c5ee5cb8","src/handlers/debug.rs":"1839488cd311ac9499971bcc0b0cd0afdc6566669608e9958c6e80675406acdf","src/handlers/graphical.rs":"c292e0177f37564b4b8f695b26265dfb88fd12b65f2cfb41eeea14aaba176ef1","src/handlers/json.rs":"aa20e185318125eea7abf6a26bc55953e833102ce8ace5f63243c5895139f679","src/handlers/mod.rs":"4ab817f09f1a85d35286910e0930a0ecc70969f8fbe61069b76ebf55264673ab","src/handlers/narratable.rs":"88a61e3cefa991700fcea5a7afacdab37dc4981fd67554db96e36f4c2169b791","src/handlers/theme.rs":"e42eadd69467f92271fc75a3204d39497bce98f196d448f308ed6582e8e1cb6c","src/highlighters/blank.rs":"70cfe07316e5c99cd05f8fb2071702129891270381df4cf9588194209513a34b","src/highlighters/mod.rs":"69d37156ca38f5f1ed757ca36bc471f53187451bf6a332119082f0f6c5bac2ef","src/highlighters/syntect.rs":"1996f20a367c4846d2e38d74f9eadf0c22f6d3c8aaab32eeac2004572fe69f39","src/lib.rs":"9515fd47618a74bb8e877e9311168576f502d456551fb666c700552e1904cd6f","src/macro_helpers.rs":"2a125e4b19c69a344affac9964f32d6c04c380bea50d4643e9973e2a7935382f","src/miette_diagnostic.rs":"adfa35237cdda9c071de07218f542926f47981732a7c044fc6fb78b433a3cf8e","src/named_source.rs":"7b29bce74d1459ff1dc0b84e1c3a7417eac72c497d03ec29d3159291c8169ca9","src/panic.rs":"49d2f5dcaf1308ef787b40e7174d80492a049f05ed52e379aee10b1bfb71470b","src/protocol.rs":"1e0ceeeae1e8f2ca1bf034a7e88c07b105f1a16179e5e2ce90d02545c8abd23f","src/source_impls.rs":"ec9e5689f088c960ba753d91568267a0bd1f29941d53990b5845ffd70b65681e"}}
\ No newline at end of file
diff --git a/crates/miette/cargo_embargo.json b/crates/miette/cargo_embargo.json
index 3a614af..b65a56c 100644
--- a/crates/miette/cargo_embargo.json
+++ b/crates/miette/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mls-rs-codec-derive/.android-checksum.json b/crates/mls-rs-codec-derive/.android-checksum.json
index 8cdeae3..df19a2c 100644
--- a/crates/mls-rs-codec-derive/.android-checksum.json
+++ b/crates/mls-rs-codec-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c94c512d1517491bdcf656c194115d209748d112749f2922f5347b262382921a","Android.bp":"e147a50148ed887682b68fbb54cd58d0e21e6dc1a6c80109aa01eae84ef30b73","Cargo.toml":"cf46f1f8545b73ce4229e8f342dbfe68783d63a40fee86d963341d16e4f79b51","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"20d292f7509da80e42b61b9e96ab1a4d18dfa62be00ae3aba26d4e9b1c2d3624","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"37201d3336696490a39532638c48a5acee79725e198e3a28a8a2cad726300701","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/lib.rs":"7cf4674197dbd916096e4c43e9599548497392be2ff53b53420741b48e4fb92d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c94c512d1517491bdcf656c194115d209748d112749f2922f5347b262382921a","Android.bp":"faf1b33bdf9244e795c18f01f0d5247560426284c53a730b201b125af9148380","Cargo.toml":"cf46f1f8545b73ce4229e8f342dbfe68783d63a40fee86d963341d16e4f79b51","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"20d292f7509da80e42b61b9e96ab1a4d18dfa62be00ae3aba26d4e9b1c2d3624","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"e67b7f191a1da80397bc0d6ccb40c9b2483a8ffb843c44463720f7c632f062cf","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/lib.rs":"7cf4674197dbd916096e4c43e9599548497392be2ff53b53420741b48e4fb92d"}}
\ No newline at end of file
diff --git a/crates/mls-rs-codec-derive/Android.bp b/crates/mls-rs-codec-derive/Android.bp
index b42340d..f0ab427 100644
--- a/crates/mls-rs-codec-derive/Android.bp
+++ b/crates/mls-rs-codec-derive/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/mls-rs-codec-derive/cargo_embargo.json b/crates/mls-rs-codec-derive/cargo_embargo.json
index d0bed4a..03625ac 100644
--- a/crates/mls-rs-codec-derive/cargo_embargo.json
+++ b/crates/mls-rs-codec-derive/cargo_embargo.json
@@ -1,4 +1,7 @@
{
"run_cargo": false,
- "extra_cfg": ["mls_build_async"]
-}
+ "extra_cfg": [
+ "mls_build_async"
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mls-rs-codec/.android-checksum.json b/crates/mls-rs-codec/.android-checksum.json
index aff7a17..69fb62d 100644
--- a/crates/mls-rs-codec/.android-checksum.json
+++ b/crates/mls-rs-codec/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"35501a1d75af336fdaa8ffa9d377ef553f5f816c828e36a505f5f93596441c60","Android.bp":"b29f0a9efdd2ed68606a6a79a48b5981160e5eafcd09759cd95abe3edb41ad2d","Cargo.toml":"3eefe07cc6a4f6d85582706ec441984877d1770c92cb8aa5a762fc49b4aea636","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"9a417b54790636433f9682045babd37d56f45a6f845e91b13e8dcabb28069613","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"37201d3336696490a39532638c48a5acee79725e198e3a28a8a2cad726300701","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/array.rs":"e3f8f316e343db23b4f7107fbf549e330df4571a7f5c43335bd838af6e276a0e","src/bool.rs":"76c6d72ae175ee509fd8adc293645e0698b59438c06f519663364c4aa8076e78","src/byte_vec.rs":"8a876bfbe28837a7de726ec06297ad6f11894d48449c5b55a912b52fe9fb3eca","src/cow.rs":"e2cc202efc3bd4872903d0365ec24f05198b1518de133aefd7c445d0f1075594","src/iter.rs":"db4bb7f31abc61d6d0ed07c593b960e8398ac98317f66c0c9e86d5c495a2deae","src/lib.rs":"0da9c5f9165f3502bb76e4448927cc8623124bad53a3caf7092a24d2b8a709e7","src/map.rs":"f5f0cbaf77686fa1282b4ffa6147dc82ac5d57a8bc28084e711873b7aa66194f","src/option.rs":"bd0281764a8750781e85ecbb631c129db678be98cf180655ef4efd00aef2c55c","src/stdint.rs":"f45a5b6932aa9c2641ee2627c7870b3c7f470d4a3c9ed965858e2678c73ea34a","src/string.rs":"94ea51b36b25ee4f4582b06108eb096b9bb4805febfd125a4429db325bdc0d94","src/tuple.rs":"859c020a423c78153d728a590fc99d70a4f6561b2c93e1c248ccaa0e4ba2c7b0","src/varint.rs":"27a451c285ee14cda6736c54ebc54ba64af1580c7b83f0a4082de26caa1d5e4a","src/vec.rs":"258b5373c8b829da53743195270a479b1d04e0e1dc8588d2bb5998672cddebb1","src/writer.rs":"d5cc084cab7b22f8dec7ab251a36a69155ed75e3ba4e6fe1259890d3b2d9f034","tests/macro_usage.rs":"36b0d352c05d94e53c6e4494f5258256b47483772c33490ea2a900114e67a545"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"35501a1d75af336fdaa8ffa9d377ef553f5f816c828e36a505f5f93596441c60","Android.bp":"3b7d857109c100cd1bd123969e90a4525a340caa95682ed808d88b41198f36f9","Cargo.toml":"3eefe07cc6a4f6d85582706ec441984877d1770c92cb8aa5a762fc49b4aea636","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"9a417b54790636433f9682045babd37d56f45a6f845e91b13e8dcabb28069613","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"e67b7f191a1da80397bc0d6ccb40c9b2483a8ffb843c44463720f7c632f062cf","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/array.rs":"e3f8f316e343db23b4f7107fbf549e330df4571a7f5c43335bd838af6e276a0e","src/bool.rs":"76c6d72ae175ee509fd8adc293645e0698b59438c06f519663364c4aa8076e78","src/byte_vec.rs":"8a876bfbe28837a7de726ec06297ad6f11894d48449c5b55a912b52fe9fb3eca","src/cow.rs":"e2cc202efc3bd4872903d0365ec24f05198b1518de133aefd7c445d0f1075594","src/iter.rs":"db4bb7f31abc61d6d0ed07c593b960e8398ac98317f66c0c9e86d5c495a2deae","src/lib.rs":"0da9c5f9165f3502bb76e4448927cc8623124bad53a3caf7092a24d2b8a709e7","src/map.rs":"f5f0cbaf77686fa1282b4ffa6147dc82ac5d57a8bc28084e711873b7aa66194f","src/option.rs":"bd0281764a8750781e85ecbb631c129db678be98cf180655ef4efd00aef2c55c","src/stdint.rs":"f45a5b6932aa9c2641ee2627c7870b3c7f470d4a3c9ed965858e2678c73ea34a","src/string.rs":"94ea51b36b25ee4f4582b06108eb096b9bb4805febfd125a4429db325bdc0d94","src/tuple.rs":"859c020a423c78153d728a590fc99d70a4f6561b2c93e1c248ccaa0e4ba2c7b0","src/varint.rs":"27a451c285ee14cda6736c54ebc54ba64af1580c7b83f0a4082de26caa1d5e4a","src/vec.rs":"258b5373c8b829da53743195270a479b1d04e0e1dc8588d2bb5998672cddebb1","src/writer.rs":"d5cc084cab7b22f8dec7ab251a36a69155ed75e3ba4e6fe1259890d3b2d9f034","tests/macro_usage.rs":"36b0d352c05d94e53c6e4494f5258256b47483772c33490ea2a900114e67a545"}}
\ No newline at end of file
diff --git a/crates/mls-rs-codec/Android.bp b/crates/mls-rs-codec/Android.bp
index ddcd349..91d116f 100644
--- a/crates/mls-rs-codec/Android.bp
+++ b/crates/mls-rs-codec/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/mls-rs-codec/cargo_embargo.json b/crates/mls-rs-codec/cargo_embargo.json
index d0bed4a..03625ac 100644
--- a/crates/mls-rs-codec/cargo_embargo.json
+++ b/crates/mls-rs-codec/cargo_embargo.json
@@ -1,4 +1,7 @@
{
"run_cargo": false,
- "extra_cfg": ["mls_build_async"]
-}
+ "extra_cfg": [
+ "mls_build_async"
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mls-rs-core/.android-checksum.json b/crates/mls-rs-core/.android-checksum.json
index b47cac2..d14fd68 100644
--- a/crates/mls-rs-core/.android-checksum.json
+++ b/crates/mls-rs-core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8383009559e852ca965caf02c51c9fc8a14d69983775df94066997bcafcd403a","Android.bp":"c5439892662a5ba427699f3a9395a418c4df365fd290e73eab35c71d052b2359","Cargo.toml":"178be534c630eb0a22e57bdd8ce3967c316aff259b8316c0312256f0dc9e87b3","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"450bea0d643291c807aa504c19acdb7ff0a251b9c8c83fb995f8c688d43502e4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"1f604e6d28c764ebd8f6f5a46023e4a6906879eebec7af4bf4116cfde4335574","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/crypto.rs":"55f388b3c5300fac80f2df5d7f08f7be6a3bb876b3bdc7e9489aeaa00780960e","src/crypto/cipher_suite.rs":"139ac0853d15ef476edba126caa0668dfc8bc55bce7223dea432b96e8066dc01","src/crypto/test_suite.rs":"77bbe1ec94cb1f508bdfb932434c552cbb1508f7fed4089e61198cebfaf8ca5e","src/debug.rs":"af56fc779c214c18790afd49ed0d9ce26c929a252e8cfa7719318b3163341581","src/error.rs":"b795328fe34d9d5acd0afa2295676f14512cc9f8b9518bdd44582896b0db02b4","src/extension.rs":"0d30dbce83446b57bf16dc63cd6c84734b1ff2e93256645b49eff9fb0117a0ca","src/extension/list.rs":"5cb746eb706f4edd96488fb6a45b391bb1316b1779a2f60198af363794ac2cf7","src/group.rs":"87b963207c0133fbe8d895e9b3f67d40dfb70b6d0b8c2659285368ef24e978c0","src/group/group_state.rs":"8f18d18a8a75ac9e451b615bd793210951cde295ce8e9da0c68a1d7d7cc5e64c","src/group/proposal_type.rs":"08461e5dafa9b038c8c6a59fad8c74b66efe78a145bd298a73d4a85cc90165be","src/group/roster.rs":"8f7baf6a766b1184c8841a358cb3b5b79dbaa7b5efcdde48151cff3e38e7f791","src/identity.rs":"2335618073d3c19f043bb90198a5d49bb693cb552e56eab9f576864e1f34cdf1","src/identity/basic.rs":"f6f61609409b6d8de49a3ed5a442b5859d369b89b97e009a2583a77bebf96325","src/identity/credential.rs":"83e7ba62f88993fb7f7f6071647935f3eb5df9e0fc4ed81967c924788aa30e6c","src/identity/provider.rs":"a0ff3bed939427da782c83a3a9427ce6a76026ed9904e743b6e120d0365cecb3","src/identity/signing_identity.rs":"c5d0cfb3df28d578db552f92abcf5b51291f3c6048997549bf9422f3d1d292d3","src/identity/x509.rs":"d874cc773fa07988f995995f676487f8cc8a2b83f148bb2670f7281d4f2f27e8","src/key_package.rs":"3e6631701ae4985f330367df513ec508edb31823f2d0df1787d77c03c5b49fcf","src/lib.rs":"614cbeefbf2e92e9e1baa9c0eb99d11f0b362525af8ba7c3065d43f6b0d6de19","src/protocol_version.rs":"ccd032c6ae903b1ad0fab7468769885658f637f48773e383ea08efd041e485f3","src/psk.rs":"4811495b3694c69c7138ba692c91cbd2c653b1c86c931f9f723faa57ab093d35","src/secret.rs":"2cac05bde218a1e9ecf47fb8d6d3ba0b5af9336748a70ebab481d8028f53878f","src/time.rs":"3e31ca5ab7f504a3cdfe38b29cef4b2c66ac73ce93511524d78f77e1e9dca618"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8383009559e852ca965caf02c51c9fc8a14d69983775df94066997bcafcd403a","Android.bp":"15f5ef2ca952456e7debeb327b82543912d8ef5b818f4880d58eb45f7b09e2a8","Cargo.toml":"178be534c630eb0a22e57bdd8ce3967c316aff259b8316c0312256f0dc9e87b3","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"450bea0d643291c807aa504c19acdb7ff0a251b9c8c83fb995f8c688d43502e4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"5d09140813d5c0f1f648685757c239773783ce3876b040047352bdacac0d04ee","patches/add-license-files.patch":"2d68d337c5d10c5cdb40efe8a6a66ffc3e3e48b1f92ff30e8f0605e3ce5b8698","src/crypto.rs":"55f388b3c5300fac80f2df5d7f08f7be6a3bb876b3bdc7e9489aeaa00780960e","src/crypto/cipher_suite.rs":"139ac0853d15ef476edba126caa0668dfc8bc55bce7223dea432b96e8066dc01","src/crypto/test_suite.rs":"77bbe1ec94cb1f508bdfb932434c552cbb1508f7fed4089e61198cebfaf8ca5e","src/debug.rs":"af56fc779c214c18790afd49ed0d9ce26c929a252e8cfa7719318b3163341581","src/error.rs":"b795328fe34d9d5acd0afa2295676f14512cc9f8b9518bdd44582896b0db02b4","src/extension.rs":"0d30dbce83446b57bf16dc63cd6c84734b1ff2e93256645b49eff9fb0117a0ca","src/extension/list.rs":"5cb746eb706f4edd96488fb6a45b391bb1316b1779a2f60198af363794ac2cf7","src/group.rs":"87b963207c0133fbe8d895e9b3f67d40dfb70b6d0b8c2659285368ef24e978c0","src/group/group_state.rs":"8f18d18a8a75ac9e451b615bd793210951cde295ce8e9da0c68a1d7d7cc5e64c","src/group/proposal_type.rs":"08461e5dafa9b038c8c6a59fad8c74b66efe78a145bd298a73d4a85cc90165be","src/group/roster.rs":"8f7baf6a766b1184c8841a358cb3b5b79dbaa7b5efcdde48151cff3e38e7f791","src/identity.rs":"2335618073d3c19f043bb90198a5d49bb693cb552e56eab9f576864e1f34cdf1","src/identity/basic.rs":"f6f61609409b6d8de49a3ed5a442b5859d369b89b97e009a2583a77bebf96325","src/identity/credential.rs":"83e7ba62f88993fb7f7f6071647935f3eb5df9e0fc4ed81967c924788aa30e6c","src/identity/provider.rs":"a0ff3bed939427da782c83a3a9427ce6a76026ed9904e743b6e120d0365cecb3","src/identity/signing_identity.rs":"c5d0cfb3df28d578db552f92abcf5b51291f3c6048997549bf9422f3d1d292d3","src/identity/x509.rs":"d874cc773fa07988f995995f676487f8cc8a2b83f148bb2670f7281d4f2f27e8","src/key_package.rs":"3e6631701ae4985f330367df513ec508edb31823f2d0df1787d77c03c5b49fcf","src/lib.rs":"614cbeefbf2e92e9e1baa9c0eb99d11f0b362525af8ba7c3065d43f6b0d6de19","src/protocol_version.rs":"ccd032c6ae903b1ad0fab7468769885658f637f48773e383ea08efd041e485f3","src/psk.rs":"4811495b3694c69c7138ba692c91cbd2c653b1c86c931f9f723faa57ab093d35","src/secret.rs":"2cac05bde218a1e9ecf47fb8d6d3ba0b5af9336748a70ebab481d8028f53878f","src/time.rs":"3e31ca5ab7f504a3cdfe38b29cef4b2c66ac73ce93511524d78f77e1e9dca618"}}
\ No newline at end of file
diff --git a/crates/mls-rs-core/Android.bp b/crates/mls-rs-core/Android.bp
index fbbd9a3..91f37b7 100644
--- a/crates/mls-rs-core/Android.bp
+++ b/crates/mls-rs-core/Android.bp
@@ -45,4 +45,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/mls-rs-core/cargo_embargo.json b/crates/mls-rs-core/cargo_embargo.json
index de66107..1e1a816 100644
--- a/crates/mls-rs-core/cargo_embargo.json
+++ b/crates/mls-rs-core/cargo_embargo.json
@@ -1,4 +1,7 @@
{
- "extra_cfg": ["mls_build_async"],
- "run_cargo": false
-}
+ "extra_cfg": [
+ "mls_build_async"
+ ],
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mls-rs-crypto-traits/.android-checksum.json b/crates/mls-rs-crypto-traits/.android-checksum.json
index 8a13184..868ee7b 100644
--- a/crates/mls-rs-crypto-traits/.android-checksum.json
+++ b/crates/mls-rs-crypto-traits/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6a57a6e75d0f32df5cf4a70eef2b785b8bb2bd5466d3d3f75ef2076e2ebd4a9d","Android.bp":"0abd0d167b93ee71beaceabdc68f50569d925f43efd4b02953761d81da3e3de4","Cargo.toml":"5b5745c3237fceae8b1fe103f7093eb6dacade9b97f66d94b564ceb9bdcd6bc9","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"2534ddf9e92b55b906710a18a5a55fcb958615c82e3d887832dddec5fccac3c8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"1f604e6d28c764ebd8f6f5a46023e4a6906879eebec7af4bf4116cfde4335574","patches/license.patch":"41b78ae2f7cabe5a6dfb44db224536f366cd94258fce1aab925588b0280a04ac","src/aead.rs":"15486f6e2f5d4a155b8aa94e6fd7b968c61a9dc7be435904aa75d93d08d1e696","src/dh.rs":"0d4b7e8627b908619f6d989e01cc6f6e4ba085c17bc908869637166a41d77344","src/ec.rs":"4a345a3a4dd4d65710f21ec1367390e31632374c5f7bbbd5a902d89fe114553f","src/kdf.rs":"b39f18af6268b40bcf2469ebf1f9bfe126e096d9ed485ce3d2b0f45153948892","src/kem.rs":"4516b38f4f30e1b611990df20e1c904c73e5cc5f0a689aa3a35afc14480bc0ea","src/lib.rs":"42fe24adebb24113db132aeddfa062d251aaa7848769fa69ad36578701c70fa2","src/mock.rs":"57d76d041e63a2fc2312f07527b7875ee7be0ba98857588311bbe8d1cfa1a415"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6a57a6e75d0f32df5cf4a70eef2b785b8bb2bd5466d3d3f75ef2076e2ebd4a9d","Android.bp":"7960c6ec84f6431fa8a1b3a5bde876e7a9decb53c999d7635c52f786f9eea80d","Cargo.toml":"5b5745c3237fceae8b1fe103f7093eb6dacade9b97f66d94b564ceb9bdcd6bc9","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"2534ddf9e92b55b906710a18a5a55fcb958615c82e3d887832dddec5fccac3c8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"5d09140813d5c0f1f648685757c239773783ce3876b040047352bdacac0d04ee","patches/license.patch":"41b78ae2f7cabe5a6dfb44db224536f366cd94258fce1aab925588b0280a04ac","src/aead.rs":"15486f6e2f5d4a155b8aa94e6fd7b968c61a9dc7be435904aa75d93d08d1e696","src/dh.rs":"0d4b7e8627b908619f6d989e01cc6f6e4ba085c17bc908869637166a41d77344","src/ec.rs":"4a345a3a4dd4d65710f21ec1367390e31632374c5f7bbbd5a902d89fe114553f","src/kdf.rs":"b39f18af6268b40bcf2469ebf1f9bfe126e096d9ed485ce3d2b0f45153948892","src/kem.rs":"4516b38f4f30e1b611990df20e1c904c73e5cc5f0a689aa3a35afc14480bc0ea","src/lib.rs":"42fe24adebb24113db132aeddfa062d251aaa7848769fa69ad36578701c70fa2","src/mock.rs":"57d76d041e63a2fc2312f07527b7875ee7be0ba98857588311bbe8d1cfa1a415"}}
\ No newline at end of file
diff --git a/crates/mls-rs-crypto-traits/Android.bp b/crates/mls-rs-crypto-traits/Android.bp
index 354f108..9c6f5d9 100644
--- a/crates/mls-rs-crypto-traits/Android.bp
+++ b/crates/mls-rs-crypto-traits/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/mls-rs-crypto-traits/cargo_embargo.json b/crates/mls-rs-crypto-traits/cargo_embargo.json
index de66107..1e1a816 100644
--- a/crates/mls-rs-crypto-traits/cargo_embargo.json
+++ b/crates/mls-rs-crypto-traits/cargo_embargo.json
@@ -1,4 +1,7 @@
{
- "extra_cfg": ["mls_build_async"],
- "run_cargo": false
-}
+ "extra_cfg": [
+ "mls_build_async"
+ ],
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mls-rs/.android-checksum.json b/crates/mls-rs/.android-checksum.json
index 632b2be..f4e0d48 100644
--- a/crates/mls-rs/.android-checksum.json
+++ b/crates/mls-rs/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"debc1c35942bd526f2bbaf91ea0b2216c0ad43474dc4cf9786c1a8db0d43e519","Android.bp":"6d3f0d0c36f412fd231cfa062a180c1598d77c99626a225b888a80bda234f920","Cargo.lock":"f5ac75a0c61e5755ad85f2d1c08d36314f9783403c43e5608e9372947815155d","Cargo.toml":"2077f23528a59a254fecd4e5d6e5853967a39c131654efd915b761e2aac3cc00","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"3134a9a46d7d6c85b87b5599766bf09ca643dea1b37e3e37829ba39a5a455a71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"20b39efed6a8df10a3730fdc617e834661c1424e76ed120fb12669a5546d4810","benches/group_add.rs":"a5abef9953f337823e954ae50e0e1fbe0fe75b03c8027213c81cff4b3aed2c43","benches/group_application.rs":"037d2620735a1c8e75844a916b5b003f4d28c583834e8d10053daf07db7dbffb","benches/group_commit.rs":"df005938b97cd4d60c61f10179c3dabc4e261122780620402e96ea4186ac37ca","benches/group_receive_commit.rs":"28854fe8a60ffb56ed0bda320a3799b300c2b354c7000d3bd5d392faef5e41d1","benches/group_serialize.rs":"46403e3ba0f1beb79436a876abb08adf4d56af2bf369dac7dea057191d75a0af","cargo_embargo.json":"3205f4913da7c89b511d83f21d6a697c03687a98ad870477b934aa32dfd126d8","examples/basic_server_usage.rs":"7b251cc8cc7f2b9ea4ea3c4de0dd18049469fa5bc8daf75175ebef1cd9e0ae7d","examples/basic_usage.rs":"cf2e66ac45a08db78a5c4f6319c1fa0eb7c2732862a35ccfac7beaf74db32e81","examples/custom.rs":"11bf48000ee6410407eb59ca4ecfdfe9dbda7d0e069f21ea5d089a870a6e86a2","examples/large_group.rs":"41172e26425c36331d938711fdf8b4bb1841f03be7af56d3e6a398b0bda19001","examples/x509.rs":"eebc92b6a22cce5d075543b448a78395fcfe55ed2b8f376a26f0352b7f6ab1b3","patches/license.patch":"41b78ae2f7cabe5a6dfb44db224536f366cd94258fce1aab925588b0280a04ac","src/client.rs":"7fc07f5d785a778554e5d9beb09d6e74adb515e26d6fd417c309e36e444d6a4c","src/client_builder.rs":"a4ae1605ff9584a6ae63871989dec3b6dcc32a54e12be337a98e82d65426360e","src/client_config.rs":"2b7c7b56fe2c61f34f4da9a036b5b8df1aab8f3f6fba5b968bc8f0a19f6e1220","src/crypto.rs":"ca1f5a7af4619d4393b14bf8e2f3a4772c90d91d6ce2f625ea0f3e4af96bf8f5","src/extension.rs":"80281c020371f1a399303713f0c9c21319436f90164dab9cfab1c836312092c7","src/extension/built_in.rs":"ae5ae697aaf7a14c1b4b7efe9a92a75dcbbf425b6102d3f2ef26727dc5d83854","src/external_client.rs":"4500f191ab71986021dc2c1dfaaadcaffb8159317498c5d69b3c0c73fc172595","src/external_client/builder.rs":"1a94e17d1fc2b6afd659674697d1213992f77cfec52c89079febee15dbe72d72","src/external_client/config.rs":"1d7034c639eb23a7a761535d09443ce10d17e0c1f6bf09444325823a62973f80","src/external_client/group.rs":"10e9b568bf58c5fdd944eed29452e7b88ce108add841e21cf39b882ad098d56c","src/grease.rs":"e2bf52041739473b16f1ec8bd1966af081763d29fbaff0b9c5f4476ab58458be","src/group/ciphertext_processor.rs":"2f15439c6c5e09fd9b2a42195fa59846e5113c4b52078f99f15072106616ff73","src/group/ciphertext_processor/message_key.rs":"d8ff5f7892d653b671d0def08d1253634f04e91ae41a016f1c2d16e6e9c185c3","src/group/ciphertext_processor/reuse_guard.rs":"3efdcd4d7655307c8b22f45ddda27046854d622b50d42971a381872bf6033e93","src/group/ciphertext_processor/sender_data_key.rs":"eeb33081eb2a605260566048229d275479aaaf715fce30829660337f8355dfd0","src/group/commit.rs":"c98ba836490368472444a621117ad7484c30321823bdaa4987e0cc349a17b631","src/group/confirmation_tag.rs":"fc8d7e90b4da6f606790614c19a92ee772fe5ed093205bae67b04c71cedef076","src/group/context.rs":"27b50020ed92d98131f2e4662826f4a51600fc9246772add10be40dc214c73f0","src/group/epoch.rs":"8e7b349072dd4048f5cf9082b1505af00953f4e911dfebe22126d5f7a82478d2","src/group/exported_tree.rs":"ba0c2aa4eb7c85be960ce62d9c924346bfe815e47e1bcb69a50915cfb63807d9","src/group/external_commit.rs":"3d299ee3de8b54865c7b694787a05765a72e2d9f246e4c3565eaae7eefde9c50","src/group/framing.rs":"c0132c3ff44f06a135ea6e42d22b2a153d00d8152763b90a82d2b39b78ec9ba0","src/group/group_info.rs":"cd8764c383ac5611dd6e3172f5ea30a6c1b44565b56dc875d820b0d8dbe1e0a7","src/group/interop_test_vectors.rs":"e3cd101aed37839104a161e36e02ca7ec1831f007d65eb9b5793d569703aa37d","src/group/interop_test_vectors/framing.rs":"d9464c82efe928508aa901df7be8658165957cd44be567954ec900195008b99c","src/group/interop_test_vectors/passive_client.rs":"f3a6afc814956fac2b301763a77e3bc39e7fe6a8a05e3e4ec48547600276f4fe","src/group/interop_test_vectors/serialization.rs":"be7889c2aa22707414f81848f12dd9068aff0b40f11f3f55879f5fcf2be27658","src/group/interop_test_vectors/tree_kem.rs":"d775a874706e414c40373f0d79621c0f57a0962ccf0b82dcf3fd4111265c3dcc","src/group/interop_test_vectors/tree_modifications.rs":"719d0c834f4f2b58aea69293812e2d37e826271eea8d564d9d0b5423c35623f6","src/group/key_schedule.rs":"b4c022327dfd730a4c85ce55f2334a42c35b9d6dc8ea0bc037c5248d5cf628b9","src/group/membership_tag.rs":"00d516501095388f4475e5db07314d4222087f8607d7bd7fac4f26baf2a6725e","src/group/message_hash.rs":"fd87b7c61a007693aacff05fc70732c778a41ac21fa0bf03f3cac6b28f46192f","src/group/message_processor.rs":"07d79ce4bba721730f1c5560a9b133f6550df6fc7a96c6ac1ffdd0f256778b6b","src/group/message_signature.rs":"88917571637b8870239f84c19536797e55533667027a1e7dbbae8543e56e0469","src/group/message_verifier.rs":"cccdf67382bc9c6d729560d091f4742589f821355d6313489f1d43fc864f7aca","src/group/mls_rules.rs":"73a8fc86648f257d2c01adbbb21697c3093b5ecfa098c53a17bee9db4b64c7ab","src/group/mod.rs":"881e19b00132f952b98e26fcb1500a70643f148de72bd7dad2de8b466154ac60","src/group/padding.rs":"f0ab2b06be9ef858a9572313ccc377379c64e20cdaab0a092cada6352aacaa17","src/group/proposal.rs":"083909d6b07026ebfbeb7717c0d7223a27edc82b47702110dff49dd5c216840c","src/group/proposal_cache.rs":"6d52cc8efa7e52362cc9f8781d44120f94b33ea2288da8b1c92e41af49ea92f7","src/group/proposal_filter.rs":"d3c8061daef5121debb6f662a4842678ced4e8b196735699d725f5a066328b44","src/group/proposal_filter/bundle.rs":"8a6b0ab7b68b1a86623fdf9311c5dc30d895a63c22cba716614af0155d46a8f1","src/group/proposal_filter/filtering.rs":"843b166cea97ada5a36da5085b4c62ce236c309dba6bf58067deee6a4151186b","src/group/proposal_filter/filtering_common.rs":"6bdcff8d2f50c5a27e325bd5d75fc154963d20027d85ab7c9b28e317dba6ae47","src/group/proposal_filter/filtering_lite.rs":"ffc71fe59f6fc23cbbb6956fc7e7b89d6286bafca051e8a2480ae1ec8a6db0cd","src/group/proposal_ref.rs":"f9026c3ed6edc22a7d9415084b0d48ca7cbefc37eb312ff8e585a23b7c7e09e3","src/group/resumption.rs":"6e1657913e240468ec8a4af792b464c51d1807e85b8a911d378c55af85427a9d","src/group/roster.rs":"a383ef769cd176c43750d7715de291c93ec9883916e436431d190a677009dec6","src/group/secret_tree.rs":"9fc863eb80b14fdab42eac2c94caa0344be6a126a472c54049e22538ce5608ba","src/group/snapshot.rs":"d4e584650d07768b813aa8f5413dfd71f156918ef5d806447cf4bb96f3899a35","src/group/state.rs":"ea2c36e94c2c0d037e6a99c5a43c7a483a2d5bec951e80ac3880d340ae3a2854","src/group/state_repo.rs":"482212d37e9b898de824df685ef06bb0a0178e003a46c6fa875b291c518fbd45","src/group/state_repo_light.rs":"f966aad0ab9a89baacdf897a62b70bb1b3140012eedb82947bb51406502e18d4","src/group/test_utils.rs":"18216671a9e709be305fb8b87984cf2b81934f48201e78b8586aefc0748647f1","src/group/transcript_hash.rs":"857056e9357fb959c1cbc63d1233d5fbbd55fdbc1412cdeeba7928a3bd84631c","src/group/util.rs":"4d74c3d2567cc9df3cf6e9e7efe03de3b36b86146cf9c65fa988e9b1a0624bf6","src/hash_reference.rs":"66077ffe90a7aaebbfaac4376715e6dd1a6350820ab8651bf5e2d11307fa973e","src/identity.rs":"94a3d11b842ecf06d7397edfff296ea06fa8efa79ae3ef4ab15c298ed12eaad8","src/identity/basic.rs":"a92aeec59ec88dac6585c3302383e3795e432fe739ac3a84274f5a9db65dcdf7","src/iter.rs":"88dd212f9137abf666a853e323fa0458c85db48815ea3d920d669b756c4d7f6d","src/key_package/generator.rs":"c2412562468afd05ceecf9f7c7ee428ab46342b4bf87318b4b1afe2c11739878","src/key_package/mod.rs":"54bce2ef337cb3b023c06c99e8db7eb971f3b70ac6bd2726278531ef45de75a6","src/key_package/validator.rs":"4590578259c6dbd09f3371cd02eb3e0d1651f4eac5cd04d43dd4c0c7d1074891","src/lib.rs":"fbe457d6efb47aa6a0483f1ba45142f1422259db54e73e4bd7362f7ec33cd372","src/map.rs":"204693cb83b638f2f8c76eb724d06f1594c3369b6c7a317d36df510b22b4d009","src/message.rs":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/psk.rs":"6c2ed11709c61c0f53e0d5d21a39bdc4fd4ef52112205cd43a581149b847706b","src/psk/resolver.rs":"9674e59da08cbc91a1d490b768da7712513bf4fc99fa14cd5e2146377a7229d3","src/psk/secret.rs":"70c34c5be9e83253ab40ee799bced945841dd3c17e6edf9868d397f07fdf4139","src/signer.rs":"a2b7d933a68be1d1d8abb35233b6b0d1eca3eb6a59ccdfc2508cb6d6c40a4da7","src/storage_provider.rs":"d13087df80652262cfa1cb0b82a88cdb911a8a8bfa3227f670b017b98d8ced39","src/storage_provider/in_memory.rs":"5fefe16966700e791417cc47d9fe7641015999b802771dc838dc2b708a537d54","src/storage_provider/in_memory/group_state_storage.rs":"21481acc4e61a898dc6d008553195ef96832a426011f544a12bcee872f7f3ac8","src/storage_provider/in_memory/key_package_storage.rs":"6d55ecc20634addf01a3aef8203b38564f2306e78db56670f016361a48e15e2f","src/storage_provider/in_memory/psk_storage.rs":"2818c4dd5825db7c6e20bd3eb40419ba1a2c28357aa6ddd16070730b7e3e23a0","src/storage_provider/key_package.rs":"fbab27c82f8a872712f50d5773a6197ee39883357d3ffca2c683a6feda63f71d","src/storage_provider/sqlite.rs":"2a72f312bbeb6f9cff677d992491effa31127efdebab7d7c806a50bbaa709c48","src/test_utils/benchmarks.rs":"c1018517417e507bd2935f6fc637685c687190ca0fbcc23ff7e4a46f0ab8c023","src/test_utils/fuzz_tests.rs":"2a3926c8628c162382c59bff4c00e8e5bd498f409e7c85a4c48f8737c6bfc7ed","src/test_utils/mod.rs":"e13ffa335ea63f8ac1aa1aaaba7b5ee9f860e423f598ec3b051714f345a7f7ad","src/tree_kem/capabilities.rs":"974f62d07bbb8bb17f2cd348578a4538c89f7c24468794c9174434de8423a57f","src/tree_kem/hpke_encryption.rs":"d4293d29ed0a65d1b7ccab6f6f471fe5fde58df3c4ed32cff459e2725079c5e8","src/tree_kem/interop_test_vectors.rs":"0efb39b9bf042af3cd39750a682452cee8252af3a484c68660e1e72caaad1113","src/tree_kem/kem.rs":"436d2608b3dd75cb10f7ba6df7e7e1abf386832ce4ff68da7ac924e8227eb79f","src/tree_kem/leaf_node.rs":"ccdc3786414e1752e90c25c6a061b49e013c61923b9d6f9d949e9dfb63207b74","src/tree_kem/leaf_node_validator.rs":"81df6dc8e4577c7593b2b4e1646bf84f58b0dab97e35bd748a099c6718203c8c","src/tree_kem/lifetime.rs":"9c3c1c4e7157fb9381c84dae8754dfedf715b1eaf7d8ad2583f48817d3fba051","src/tree_kem/math.rs":"9fb32c9ff4170a6c854aaff71594c98fcc29d108359fa303c8c3ac11f520ca54","src/tree_kem/mod.rs":"f1ca75381da2d0e34f59a78ba6c147275b0456f7b437d5b7d54ee2cfcf05eb06","src/tree_kem/node.rs":"cf27313dc6ac40a04aa0cc385b2208c83208b71f5583d3c9f2b021ffc091512f","src/tree_kem/parent_hash.rs":"1256d2c22131a0b243ffe971b7b04ffea0b4e4049e336a78537501ba70799778","src/tree_kem/path_secret.rs":"7d33ffbe65f7d263108fd7a2d20468a33f7fddc5b5a1329e3c6086ee2dbbc07a","src/tree_kem/private.rs":"364e42885c9466d8303f69f29192f8c65f0c5ab692faf21ed2010d1c183fe720","src/tree_kem/tree_hash.rs":"d47e45c9259f907e7019207301b7a8cc5a3519cf6e167aa4df8dfc0548ceb723","src/tree_kem/tree_index.rs":"11b9bf1d2b47442d04668928bf45fae8c5ea9d97fd6dd4cb50a43df29e26d206","src/tree_kem/tree_utils.rs":"c81369a023416f6dd5f53e5a9f33fb0e8625be176f01b77d787828605abd6f6b","src/tree_kem/tree_validator.rs":"a904a85d4702f13c88801eaa9f7dfcfc51f981cf863690e5a194356e171b6539","src/tree_kem/update_path.rs":"9f9a43eef7dc37eeae33964af104dd950de2238a87f170fd39eaebcc00997aca","test_utils/src/scenario_utils.rs":"a0ee7dd5eefb2af3eed103aea924099a4a912fcc1647ea8e9c15a2180d52eb6a","tests/client_tests.rs":"9db7e544e170ba6aed82750c081b616691f27ba77645f61a4b7ee99edd557ff4","webdriver.json":"ab1403b2bd55925bf66f9d5a8361d21d2ae7142ae2b0f467462b027cd2d3be03"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"debc1c35942bd526f2bbaf91ea0b2216c0ad43474dc4cf9786c1a8db0d43e519","Android.bp":"f2c1769117aa215fba3e92392a61cef461d40cc23711122ff8e65e2c2f7ae43b","Cargo.lock":"f5ac75a0c61e5755ad85f2d1c08d36314f9783403c43e5608e9372947815155d","Cargo.toml":"2077f23528a59a254fecd4e5d6e5853967a39c131654efd915b761e2aac3cc00","LICENSE":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","LICENSE-apache":"460b3e42c3a98e850844bbd8cc6a08dc41377999a26c98e3b4cf777da53dec1b","METADATA":"3134a9a46d7d6c85b87b5599766bf09ca643dea1b37e3e37829ba39a5a455a71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"20b39efed6a8df10a3730fdc617e834661c1424e76ed120fb12669a5546d4810","benches/group_add.rs":"a5abef9953f337823e954ae50e0e1fbe0fe75b03c8027213c81cff4b3aed2c43","benches/group_application.rs":"037d2620735a1c8e75844a916b5b003f4d28c583834e8d10053daf07db7dbffb","benches/group_commit.rs":"df005938b97cd4d60c61f10179c3dabc4e261122780620402e96ea4186ac37ca","benches/group_receive_commit.rs":"28854fe8a60ffb56ed0bda320a3799b300c2b354c7000d3bd5d392faef5e41d1","benches/group_serialize.rs":"46403e3ba0f1beb79436a876abb08adf4d56af2bf369dac7dea057191d75a0af","cargo_embargo.json":"8eab1bc3ffd6d6120ac036dd460b76859595b4e5bffa2e0880b8965f6dab3dcb","examples/basic_server_usage.rs":"7b251cc8cc7f2b9ea4ea3c4de0dd18049469fa5bc8daf75175ebef1cd9e0ae7d","examples/basic_usage.rs":"cf2e66ac45a08db78a5c4f6319c1fa0eb7c2732862a35ccfac7beaf74db32e81","examples/custom.rs":"11bf48000ee6410407eb59ca4ecfdfe9dbda7d0e069f21ea5d089a870a6e86a2","examples/large_group.rs":"41172e26425c36331d938711fdf8b4bb1841f03be7af56d3e6a398b0bda19001","examples/x509.rs":"eebc92b6a22cce5d075543b448a78395fcfe55ed2b8f376a26f0352b7f6ab1b3","patches/license.patch":"41b78ae2f7cabe5a6dfb44db224536f366cd94258fce1aab925588b0280a04ac","src/client.rs":"7fc07f5d785a778554e5d9beb09d6e74adb515e26d6fd417c309e36e444d6a4c","src/client_builder.rs":"a4ae1605ff9584a6ae63871989dec3b6dcc32a54e12be337a98e82d65426360e","src/client_config.rs":"2b7c7b56fe2c61f34f4da9a036b5b8df1aab8f3f6fba5b968bc8f0a19f6e1220","src/crypto.rs":"ca1f5a7af4619d4393b14bf8e2f3a4772c90d91d6ce2f625ea0f3e4af96bf8f5","src/extension.rs":"80281c020371f1a399303713f0c9c21319436f90164dab9cfab1c836312092c7","src/extension/built_in.rs":"ae5ae697aaf7a14c1b4b7efe9a92a75dcbbf425b6102d3f2ef26727dc5d83854","src/external_client.rs":"4500f191ab71986021dc2c1dfaaadcaffb8159317498c5d69b3c0c73fc172595","src/external_client/builder.rs":"1a94e17d1fc2b6afd659674697d1213992f77cfec52c89079febee15dbe72d72","src/external_client/config.rs":"1d7034c639eb23a7a761535d09443ce10d17e0c1f6bf09444325823a62973f80","src/external_client/group.rs":"10e9b568bf58c5fdd944eed29452e7b88ce108add841e21cf39b882ad098d56c","src/grease.rs":"e2bf52041739473b16f1ec8bd1966af081763d29fbaff0b9c5f4476ab58458be","src/group/ciphertext_processor.rs":"2f15439c6c5e09fd9b2a42195fa59846e5113c4b52078f99f15072106616ff73","src/group/ciphertext_processor/message_key.rs":"d8ff5f7892d653b671d0def08d1253634f04e91ae41a016f1c2d16e6e9c185c3","src/group/ciphertext_processor/reuse_guard.rs":"3efdcd4d7655307c8b22f45ddda27046854d622b50d42971a381872bf6033e93","src/group/ciphertext_processor/sender_data_key.rs":"eeb33081eb2a605260566048229d275479aaaf715fce30829660337f8355dfd0","src/group/commit.rs":"c98ba836490368472444a621117ad7484c30321823bdaa4987e0cc349a17b631","src/group/confirmation_tag.rs":"fc8d7e90b4da6f606790614c19a92ee772fe5ed093205bae67b04c71cedef076","src/group/context.rs":"27b50020ed92d98131f2e4662826f4a51600fc9246772add10be40dc214c73f0","src/group/epoch.rs":"8e7b349072dd4048f5cf9082b1505af00953f4e911dfebe22126d5f7a82478d2","src/group/exported_tree.rs":"ba0c2aa4eb7c85be960ce62d9c924346bfe815e47e1bcb69a50915cfb63807d9","src/group/external_commit.rs":"3d299ee3de8b54865c7b694787a05765a72e2d9f246e4c3565eaae7eefde9c50","src/group/framing.rs":"c0132c3ff44f06a135ea6e42d22b2a153d00d8152763b90a82d2b39b78ec9ba0","src/group/group_info.rs":"cd8764c383ac5611dd6e3172f5ea30a6c1b44565b56dc875d820b0d8dbe1e0a7","src/group/interop_test_vectors.rs":"e3cd101aed37839104a161e36e02ca7ec1831f007d65eb9b5793d569703aa37d","src/group/interop_test_vectors/framing.rs":"d9464c82efe928508aa901df7be8658165957cd44be567954ec900195008b99c","src/group/interop_test_vectors/passive_client.rs":"f3a6afc814956fac2b301763a77e3bc39e7fe6a8a05e3e4ec48547600276f4fe","src/group/interop_test_vectors/serialization.rs":"be7889c2aa22707414f81848f12dd9068aff0b40f11f3f55879f5fcf2be27658","src/group/interop_test_vectors/tree_kem.rs":"d775a874706e414c40373f0d79621c0f57a0962ccf0b82dcf3fd4111265c3dcc","src/group/interop_test_vectors/tree_modifications.rs":"719d0c834f4f2b58aea69293812e2d37e826271eea8d564d9d0b5423c35623f6","src/group/key_schedule.rs":"b4c022327dfd730a4c85ce55f2334a42c35b9d6dc8ea0bc037c5248d5cf628b9","src/group/membership_tag.rs":"00d516501095388f4475e5db07314d4222087f8607d7bd7fac4f26baf2a6725e","src/group/message_hash.rs":"fd87b7c61a007693aacff05fc70732c778a41ac21fa0bf03f3cac6b28f46192f","src/group/message_processor.rs":"07d79ce4bba721730f1c5560a9b133f6550df6fc7a96c6ac1ffdd0f256778b6b","src/group/message_signature.rs":"88917571637b8870239f84c19536797e55533667027a1e7dbbae8543e56e0469","src/group/message_verifier.rs":"cccdf67382bc9c6d729560d091f4742589f821355d6313489f1d43fc864f7aca","src/group/mls_rules.rs":"73a8fc86648f257d2c01adbbb21697c3093b5ecfa098c53a17bee9db4b64c7ab","src/group/mod.rs":"881e19b00132f952b98e26fcb1500a70643f148de72bd7dad2de8b466154ac60","src/group/padding.rs":"f0ab2b06be9ef858a9572313ccc377379c64e20cdaab0a092cada6352aacaa17","src/group/proposal.rs":"083909d6b07026ebfbeb7717c0d7223a27edc82b47702110dff49dd5c216840c","src/group/proposal_cache.rs":"6d52cc8efa7e52362cc9f8781d44120f94b33ea2288da8b1c92e41af49ea92f7","src/group/proposal_filter.rs":"d3c8061daef5121debb6f662a4842678ced4e8b196735699d725f5a066328b44","src/group/proposal_filter/bundle.rs":"8a6b0ab7b68b1a86623fdf9311c5dc30d895a63c22cba716614af0155d46a8f1","src/group/proposal_filter/filtering.rs":"843b166cea97ada5a36da5085b4c62ce236c309dba6bf58067deee6a4151186b","src/group/proposal_filter/filtering_common.rs":"6bdcff8d2f50c5a27e325bd5d75fc154963d20027d85ab7c9b28e317dba6ae47","src/group/proposal_filter/filtering_lite.rs":"ffc71fe59f6fc23cbbb6956fc7e7b89d6286bafca051e8a2480ae1ec8a6db0cd","src/group/proposal_ref.rs":"f9026c3ed6edc22a7d9415084b0d48ca7cbefc37eb312ff8e585a23b7c7e09e3","src/group/resumption.rs":"6e1657913e240468ec8a4af792b464c51d1807e85b8a911d378c55af85427a9d","src/group/roster.rs":"a383ef769cd176c43750d7715de291c93ec9883916e436431d190a677009dec6","src/group/secret_tree.rs":"9fc863eb80b14fdab42eac2c94caa0344be6a126a472c54049e22538ce5608ba","src/group/snapshot.rs":"d4e584650d07768b813aa8f5413dfd71f156918ef5d806447cf4bb96f3899a35","src/group/state.rs":"ea2c36e94c2c0d037e6a99c5a43c7a483a2d5bec951e80ac3880d340ae3a2854","src/group/state_repo.rs":"482212d37e9b898de824df685ef06bb0a0178e003a46c6fa875b291c518fbd45","src/group/state_repo_light.rs":"f966aad0ab9a89baacdf897a62b70bb1b3140012eedb82947bb51406502e18d4","src/group/test_utils.rs":"18216671a9e709be305fb8b87984cf2b81934f48201e78b8586aefc0748647f1","src/group/transcript_hash.rs":"857056e9357fb959c1cbc63d1233d5fbbd55fdbc1412cdeeba7928a3bd84631c","src/group/util.rs":"4d74c3d2567cc9df3cf6e9e7efe03de3b36b86146cf9c65fa988e9b1a0624bf6","src/hash_reference.rs":"66077ffe90a7aaebbfaac4376715e6dd1a6350820ab8651bf5e2d11307fa973e","src/identity.rs":"94a3d11b842ecf06d7397edfff296ea06fa8efa79ae3ef4ab15c298ed12eaad8","src/identity/basic.rs":"a92aeec59ec88dac6585c3302383e3795e432fe739ac3a84274f5a9db65dcdf7","src/iter.rs":"88dd212f9137abf666a853e323fa0458c85db48815ea3d920d669b756c4d7f6d","src/key_package/generator.rs":"c2412562468afd05ceecf9f7c7ee428ab46342b4bf87318b4b1afe2c11739878","src/key_package/mod.rs":"54bce2ef337cb3b023c06c99e8db7eb971f3b70ac6bd2726278531ef45de75a6","src/key_package/validator.rs":"4590578259c6dbd09f3371cd02eb3e0d1651f4eac5cd04d43dd4c0c7d1074891","src/lib.rs":"fbe457d6efb47aa6a0483f1ba45142f1422259db54e73e4bd7362f7ec33cd372","src/map.rs":"204693cb83b638f2f8c76eb724d06f1594c3369b6c7a317d36df510b22b4d009","src/message.rs":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/psk.rs":"6c2ed11709c61c0f53e0d5d21a39bdc4fd4ef52112205cd43a581149b847706b","src/psk/resolver.rs":"9674e59da08cbc91a1d490b768da7712513bf4fc99fa14cd5e2146377a7229d3","src/psk/secret.rs":"70c34c5be9e83253ab40ee799bced945841dd3c17e6edf9868d397f07fdf4139","src/signer.rs":"a2b7d933a68be1d1d8abb35233b6b0d1eca3eb6a59ccdfc2508cb6d6c40a4da7","src/storage_provider.rs":"d13087df80652262cfa1cb0b82a88cdb911a8a8bfa3227f670b017b98d8ced39","src/storage_provider/in_memory.rs":"5fefe16966700e791417cc47d9fe7641015999b802771dc838dc2b708a537d54","src/storage_provider/in_memory/group_state_storage.rs":"21481acc4e61a898dc6d008553195ef96832a426011f544a12bcee872f7f3ac8","src/storage_provider/in_memory/key_package_storage.rs":"6d55ecc20634addf01a3aef8203b38564f2306e78db56670f016361a48e15e2f","src/storage_provider/in_memory/psk_storage.rs":"2818c4dd5825db7c6e20bd3eb40419ba1a2c28357aa6ddd16070730b7e3e23a0","src/storage_provider/key_package.rs":"fbab27c82f8a872712f50d5773a6197ee39883357d3ffca2c683a6feda63f71d","src/storage_provider/sqlite.rs":"2a72f312bbeb6f9cff677d992491effa31127efdebab7d7c806a50bbaa709c48","src/test_utils/benchmarks.rs":"c1018517417e507bd2935f6fc637685c687190ca0fbcc23ff7e4a46f0ab8c023","src/test_utils/fuzz_tests.rs":"2a3926c8628c162382c59bff4c00e8e5bd498f409e7c85a4c48f8737c6bfc7ed","src/test_utils/mod.rs":"e13ffa335ea63f8ac1aa1aaaba7b5ee9f860e423f598ec3b051714f345a7f7ad","src/tree_kem/capabilities.rs":"974f62d07bbb8bb17f2cd348578a4538c89f7c24468794c9174434de8423a57f","src/tree_kem/hpke_encryption.rs":"d4293d29ed0a65d1b7ccab6f6f471fe5fde58df3c4ed32cff459e2725079c5e8","src/tree_kem/interop_test_vectors.rs":"0efb39b9bf042af3cd39750a682452cee8252af3a484c68660e1e72caaad1113","src/tree_kem/kem.rs":"436d2608b3dd75cb10f7ba6df7e7e1abf386832ce4ff68da7ac924e8227eb79f","src/tree_kem/leaf_node.rs":"ccdc3786414e1752e90c25c6a061b49e013c61923b9d6f9d949e9dfb63207b74","src/tree_kem/leaf_node_validator.rs":"81df6dc8e4577c7593b2b4e1646bf84f58b0dab97e35bd748a099c6718203c8c","src/tree_kem/lifetime.rs":"9c3c1c4e7157fb9381c84dae8754dfedf715b1eaf7d8ad2583f48817d3fba051","src/tree_kem/math.rs":"9fb32c9ff4170a6c854aaff71594c98fcc29d108359fa303c8c3ac11f520ca54","src/tree_kem/mod.rs":"f1ca75381da2d0e34f59a78ba6c147275b0456f7b437d5b7d54ee2cfcf05eb06","src/tree_kem/node.rs":"cf27313dc6ac40a04aa0cc385b2208c83208b71f5583d3c9f2b021ffc091512f","src/tree_kem/parent_hash.rs":"1256d2c22131a0b243ffe971b7b04ffea0b4e4049e336a78537501ba70799778","src/tree_kem/path_secret.rs":"7d33ffbe65f7d263108fd7a2d20468a33f7fddc5b5a1329e3c6086ee2dbbc07a","src/tree_kem/private.rs":"364e42885c9466d8303f69f29192f8c65f0c5ab692faf21ed2010d1c183fe720","src/tree_kem/tree_hash.rs":"d47e45c9259f907e7019207301b7a8cc5a3519cf6e167aa4df8dfc0548ceb723","src/tree_kem/tree_index.rs":"11b9bf1d2b47442d04668928bf45fae8c5ea9d97fd6dd4cb50a43df29e26d206","src/tree_kem/tree_utils.rs":"c81369a023416f6dd5f53e5a9f33fb0e8625be176f01b77d787828605abd6f6b","src/tree_kem/tree_validator.rs":"a904a85d4702f13c88801eaa9f7dfcfc51f981cf863690e5a194356e171b6539","src/tree_kem/update_path.rs":"9f9a43eef7dc37eeae33964af104dd950de2238a87f170fd39eaebcc00997aca","test_utils/src/scenario_utils.rs":"a0ee7dd5eefb2af3eed103aea924099a4a912fcc1647ea8e9c15a2180d52eb6a","tests/client_tests.rs":"9db7e544e170ba6aed82750c081b616691f27ba77645f61a4b7ee99edd557ff4","webdriver.json":"ab1403b2bd55925bf66f9d5a8361d21d2ae7142ae2b0f467462b027cd2d3be03"}}
\ No newline at end of file
diff --git a/crates/mls-rs/Android.bp b/crates/mls-rs/Android.bp
index 6255d18..4ca84e6 100644
--- a/crates/mls-rs/Android.bp
+++ b/crates/mls-rs/Android.bp
@@ -58,4 +58,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/mls-rs/cargo_embargo.json b/crates/mls-rs/cargo_embargo.json
index 90952f3..101eaa6 100644
--- a/crates/mls-rs/cargo_embargo.json
+++ b/crates/mls-rs/cargo_embargo.json
@@ -1,16 +1,19 @@
{
- "extra_cfg": ["mls_build_async"],
- "features": [
- "std",
- "rayon",
- "state_update",
- "private_message",
- "custom_proposal",
- "out_of_order",
- "psk",
- "prior_epoch",
- "by_ref_proposal",
- "tree_index",
- "fast_serialize"
- ]
-}
+ "extra_cfg": [
+ "mls_build_async"
+ ],
+ "features": [
+ "std",
+ "rayon",
+ "state_update",
+ "private_message",
+ "custom_proposal",
+ "out_of_order",
+ "psk",
+ "prior_epoch",
+ "by_ref_proposal",
+ "tree_index",
+ "fast_serialize"
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/mockall_derive/.android-checksum.json b/crates/mockall_derive/.android-checksum.json
index 5c18296..fe1e9b4 100644
--- a/crates/mockall_derive/.android-checksum.json
+++ b/crates/mockall_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"385bf3db33cdafb5f22fd1a3d16de56ac98e48d95e214caab5b6eb48a07d67e2","Android.bp":"770513271f487a6ec48ad5affa5bd249d897e5bb4913c8f141619b6659143598","Cargo.toml":"328e2dfc7c3fcc8c97cda40bc54b7c02cd138d067e4057f993a326027b7fff10","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3663df21a02327e6560260977707bc3b0a547603a37199e3f2e2a3b51453d088","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8d1155c52f3e671e731002853cea80641eb1a8e898ecf34f63ecb03fe850f5b6","TEST_MAPPING":"f4687c88200126b2f9b2cf876f850930c46fa96979dd3b785a13307164c7e287","build.rs":"fe367e082d0e2980b9c210a53d52a7e322010dca391a08d5da8139bdfe3a73ab","cargo_embargo.json":"f97c7ee5a3dd9d16e7efffd7c47369141e8bb13aec2e219a7ea95a18b12027eb","patches/remove-pretty-assertions-dep.patch":"c4246aa3066a517dc67c580202dfd65f8ac95b31347165342bcd7fbf744787f5","patches/use-explicit-extern-crate-proc-macro.patch":"055ed89f02485efe2d4dadae0da34d01d771cc76f10450e1d97d8571c4584b25","src/automock.rs":"6b14611d14658db658ac9afb7fc1ec2fc55d9885704449a19f5f2b2b72b102ad","src/lib.rs":"34fbed96e39cac0b6673d4f625f1adf82d7cabd836f9fa6a28608c7b724f8c49","src/mock_function.rs":"2ccb7d9eddb665f8f52e5e3449f2d189ee1bfe9d72ffd82ec88a95d72a63c38c","src/mock_item.rs":"79db9767e3b55998ee75943a46b3b90ad7f20720562ce2c310044849aae37197","src/mock_item_struct.rs":"d60e13c18af0ee7d562b8260d850ae0a92ebd1cbba48e42c0f7269655d4616f3","src/mock_trait.rs":"8f84abc36a96d89916e3bae410c23a867f1a521ccf3b9b19d0691db2903961e9","src/mockable_item.rs":"c6c771829a3f9e2cda8dee57abd3f611ddd0835bc037b0b3a72d33b98f2b3676","src/mockable_struct.rs":"75f62c4b1e4dfc304a6d16019bf4c5734eb288c7c5c5e886b1124d70d73d7906"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"385bf3db33cdafb5f22fd1a3d16de56ac98e48d95e214caab5b6eb48a07d67e2","Android.bp":"770513271f487a6ec48ad5affa5bd249d897e5bb4913c8f141619b6659143598","Cargo.toml":"328e2dfc7c3fcc8c97cda40bc54b7c02cd138d067e4057f993a326027b7fff10","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3663df21a02327e6560260977707bc3b0a547603a37199e3f2e2a3b51453d088","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8d1155c52f3e671e731002853cea80641eb1a8e898ecf34f63ecb03fe850f5b6","TEST_MAPPING":"f4687c88200126b2f9b2cf876f850930c46fa96979dd3b785a13307164c7e287","build.rs":"fe367e082d0e2980b9c210a53d52a7e322010dca391a08d5da8139bdfe3a73ab","cargo_embargo.json":"c81b635c470c70932bdba7a81ca0625ccbbff001ad66ef0e83901eb2df18d45f","patches/remove-pretty-assertions-dep.patch":"c4246aa3066a517dc67c580202dfd65f8ac95b31347165342bcd7fbf744787f5","patches/use-explicit-extern-crate-proc-macro.patch":"055ed89f02485efe2d4dadae0da34d01d771cc76f10450e1d97d8571c4584b25","src/automock.rs":"6b14611d14658db658ac9afb7fc1ec2fc55d9885704449a19f5f2b2b72b102ad","src/lib.rs":"34fbed96e39cac0b6673d4f625f1adf82d7cabd836f9fa6a28608c7b724f8c49","src/mock_function.rs":"2ccb7d9eddb665f8f52e5e3449f2d189ee1bfe9d72ffd82ec88a95d72a63c38c","src/mock_item.rs":"79db9767e3b55998ee75943a46b3b90ad7f20720562ce2c310044849aae37197","src/mock_item_struct.rs":"d60e13c18af0ee7d562b8260d850ae0a92ebd1cbba48e42c0f7269655d4616f3","src/mock_trait.rs":"8f84abc36a96d89916e3bae410c23a867f1a521ccf3b9b19d0691db2903961e9","src/mockable_item.rs":"c6c771829a3f9e2cda8dee57abd3f611ddd0835bc037b0b3a72d33b98f2b3676","src/mockable_struct.rs":"75f62c4b1e4dfc304a6d16019bf4c5734eb288c7c5c5e886b1124d70d73d7906"}}
\ No newline at end of file
diff --git a/crates/mockall_derive/cargo_embargo.json b/crates/mockall_derive/cargo_embargo.json
index e86c1ef..ee43522 100644
--- a/crates/mockall_derive/cargo_embargo.json
+++ b/crates/mockall_derive/cargo_embargo.json
@@ -8,5 +8,6 @@
"libpretty_assertions"
]
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/moveit/.android-checksum.json b/crates/moveit/.android-checksum.json
index 9f66535..c1a6ed6 100644
--- a/crates/moveit/.android-checksum.json
+++ b/crates/moveit/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"df2a32fd8d26287750036edb2f191c8c76dfaa2fb5ef89bfa8a79c8878f55f06","Android.bp":"014eed7cd2e509462c9625f1286da337130ee7826361d69ec43548701f1e7e82","CONTRIBUTING.md":"151e6daae711abd63e75d7797b06ee893c9f74fdd7ba0f62575e16d787af0cc6","Cargo.toml":"6c5fea20e710cfbd1bb36472ad7af4eca0668131863654f77a82f1e479440328","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE-2.0":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"0444850f05b23e89c82974f9792aaf3add68959f259dd5efa5303fe582b91d71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.crates-io.md":"d2281da85a370a6f4f2898cd32db0e80414ac6ef6b4e4c8a45fe3ab4da8a0d9e","README.md":"6779127e15ad8d56e3141b07c0a14bc73563efb3581d138603a38122056d1e53","cargo_embargo.json":"8009316c6d8a9ef8ffed1f782a0031bfa1336dffaf3fe1e59d497fb03fe01dd2","rust-toolchain.toml":"0416787da97b879b9433e3b46a21a879ebddd77d017735b7d9bbc12c720c67ba","rustfmt.toml":"d16e74a795dde6bdaf0b921241a28a1aa40f46097f0bb70469d4fbe7d0449511","src/alloc_support.rs":"3c33e084799606974b44c670914dd948798d2da0c1dbe824c6071699d637c546","src/cxx_support.rs":"11b7898ab9d302d138580ee48e69c3d43d5efc50aa7cb5ff1d6f3bfa2e95093a","src/drop_flag.rs":"4f3e521febff1ad8a52fd5ab3786b620b8a61cb02057cb6f243413237ccb10a5","src/lib.rs":"7858203df84a5f1aa12ca16c77861c30b7c3e8c4b7e5acbc79f03e3979862a17","src/move_ref.rs":"7ed133ac5e55fd0ff41e116fcb6868b5087f49a6225a689ce7ff2cf90ac9f0ff","src/new/copy_new.rs":"c852e851f803245cfa194dea2ea64a02a340e670eb53a67a88f2d26e2acb51f4","src/new/factories.rs":"c9219e5c45765d517652ec3d05fa4bccc0daca17937dc65db681226537e587ea","src/new/impls.rs":"3a87504737d15da7c98679ca00d3b66e6f03f01f8953df6e3cfda818c95adbd5","src/new/mod.rs":"9ce14c16ca5e286c4dcfaac3f525e68e7ae8253eb6b8923ec5cabcce2a754313","src/new/move_new.rs":"a7f2c530ffcd6b7e238428830207aaf8f932452b1ec50b80ef704c770a339210","src/slot.rs":"e45522c575c87ccabeebb234c38e5bb357ebf1156fbe419d7910051baf51b7fd"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"df2a32fd8d26287750036edb2f191c8c76dfaa2fb5ef89bfa8a79c8878f55f06","Android.bp":"014eed7cd2e509462c9625f1286da337130ee7826361d69ec43548701f1e7e82","CONTRIBUTING.md":"151e6daae711abd63e75d7797b06ee893c9f74fdd7ba0f62575e16d787af0cc6","Cargo.toml":"6c5fea20e710cfbd1bb36472ad7af4eca0668131863654f77a82f1e479440328","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE-2.0":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"0444850f05b23e89c82974f9792aaf3add68959f259dd5efa5303fe582b91d71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.crates-io.md":"d2281da85a370a6f4f2898cd32db0e80414ac6ef6b4e4c8a45fe3ab4da8a0d9e","README.md":"6779127e15ad8d56e3141b07c0a14bc73563efb3581d138603a38122056d1e53","cargo_embargo.json":"0814db08054719cb1c5fe724d45b5c384ce99b80984585e834ba2c09207bce70","rust-toolchain.toml":"0416787da97b879b9433e3b46a21a879ebddd77d017735b7d9bbc12c720c67ba","rustfmt.toml":"d16e74a795dde6bdaf0b921241a28a1aa40f46097f0bb70469d4fbe7d0449511","src/alloc_support.rs":"3c33e084799606974b44c670914dd948798d2da0c1dbe824c6071699d637c546","src/cxx_support.rs":"11b7898ab9d302d138580ee48e69c3d43d5efc50aa7cb5ff1d6f3bfa2e95093a","src/drop_flag.rs":"4f3e521febff1ad8a52fd5ab3786b620b8a61cb02057cb6f243413237ccb10a5","src/lib.rs":"7858203df84a5f1aa12ca16c77861c30b7c3e8c4b7e5acbc79f03e3979862a17","src/move_ref.rs":"7ed133ac5e55fd0ff41e116fcb6868b5087f49a6225a689ce7ff2cf90ac9f0ff","src/new/copy_new.rs":"c852e851f803245cfa194dea2ea64a02a340e670eb53a67a88f2d26e2acb51f4","src/new/factories.rs":"c9219e5c45765d517652ec3d05fa4bccc0daca17937dc65db681226537e587ea","src/new/impls.rs":"3a87504737d15da7c98679ca00d3b66e6f03f01f8953df6e3cfda818c95adbd5","src/new/mod.rs":"9ce14c16ca5e286c4dcfaac3f525e68e7ae8253eb6b8923ec5cabcce2a754313","src/new/move_new.rs":"a7f2c530ffcd6b7e238428830207aaf8f932452b1ec50b80ef704c770a339210","src/slot.rs":"e45522c575c87ccabeebb234c38e5bb357ebf1156fbe419d7910051baf51b7fd"}}
\ No newline at end of file
diff --git a/crates/moveit/cargo_embargo.json b/crates/moveit/cargo_embargo.json
index b8b58a2..3625914 100644
--- a/crates/moveit/cargo_embargo.json
+++ b/crates/moveit/cargo_embargo.json
@@ -8,5 +8,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/named-lock/.android-checksum.json b/crates/named-lock/.android-checksum.json
index 27507d4..345bd27 100644
--- a/crates/named-lock/.android-checksum.json
+++ b/crates/named-lock/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"724b249e6cb63cedd04f2e34b0f0eaf26670574385f7f1ce336dee7596bffc70","Android.bp":"e09e59b03e5f8fd968946ac58f33c329fe8e67491594d9a281d229a0a22ce245","CHANGELOG.md":"138c7e5379019cd7e601ed3b153767c5429a5207924e2d7b40b603ad680e0619","Cargo.toml":"5495c32952f4c76d4e004a6a0be40c137f86c17c16dda03aaaeec0115a08e68d","LICENSE":"1d1ff43937b3f5127bea03b47ead9a564d530002eff1a9a054408735e15aad4b","METADATA":"d7d3bb9fbbc4dfbf593b38e686339c71159001e53099ab8f9a18eb3a5f4dd38b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5241ef9cfa9fa5bc0c34a817a8f37ca2bbc124a93b0611b6fb4261d8ae2a44db","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","rustfmt.toml":"fe47677b59563be043e83c392e8d2592deb1f91fdd4ed7c341fa54c6d962afbb","src/error.rs":"f5dc5940ba4d807ccc57827cb76eb020ee3e5a0caf3fbbc90d84aa803b81aef9","src/lib.rs":"c9fe8ab699d6dd612c96e187a9811cea6d915588cde928315283a414cf8efa3f","src/unix.rs":"fd1480f1472ff469a08202b700203a5c80517d260204d083c004167076428068","src/windows.rs":"db189d443492a9977206a5e833f4ba7e113a555079dbe625d880748eafefcf13"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"724b249e6cb63cedd04f2e34b0f0eaf26670574385f7f1ce336dee7596bffc70","Android.bp":"348c8d3a234d37bf2da2ef7851697c0311aa58d7dfda6d6dbbe81af5a6bd1473","CHANGELOG.md":"138c7e5379019cd7e601ed3b153767c5429a5207924e2d7b40b603ad680e0619","Cargo.toml":"5495c32952f4c76d4e004a6a0be40c137f86c17c16dda03aaaeec0115a08e68d","LICENSE":"1d1ff43937b3f5127bea03b47ead9a564d530002eff1a9a054408735e15aad4b","METADATA":"d7d3bb9fbbc4dfbf593b38e686339c71159001e53099ab8f9a18eb3a5f4dd38b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5241ef9cfa9fa5bc0c34a817a8f37ca2bbc124a93b0611b6fb4261d8ae2a44db","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","rustfmt.toml":"fe47677b59563be043e83c392e8d2592deb1f91fdd4ed7c341fa54c6d962afbb","src/error.rs":"f5dc5940ba4d807ccc57827cb76eb020ee3e5a0caf3fbbc90d84aa803b81aef9","src/lib.rs":"c9fe8ab699d6dd612c96e187a9811cea6d915588cde928315283a414cf8efa3f","src/unix.rs":"fd1480f1472ff469a08202b700203a5c80517d260204d083c004167076428068","src/windows.rs":"db189d443492a9977206a5e833f4ba7e113a555079dbe625d880748eafefcf13"}}
\ No newline at end of file
diff --git a/crates/named-lock/Android.bp b/crates/named-lock/Android.bp
index 0750f61..6acd607 100644
--- a/crates/named-lock/Android.bp
+++ b/crates/named-lock/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/named-lock/cargo_embargo.json b/crates/named-lock/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/named-lock/cargo_embargo.json
+++ b/crates/named-lock/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/no-panic/.android-checksum.json b/crates/no-panic/.android-checksum.json
index 3228fb0..a34135a 100644
--- a/crates/no-panic/.android-checksum.json
+++ b/crates/no-panic/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"869cf81d75b5a6264c134d2fe342b12bacb38cf7abc7d8449e071c9a0ab14811","Android.bp":"a1c2c0cf6978359cf2b704cb8289577f76db3e3f83d85a6c10d1b2b784a9efa1","Cargo.toml":"aa0eeabb4ac95a95e7a162a254d3cd84b15329d5bd866c550aa7c19db7cb4efa","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"d78795d44bf387a1d40d2bbbdb95009b52c419b21b58b18cd0b46ae734c43fc9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b520e5d0bea02ad6dd8b52f193fc2a7adc5eee9a299b8691046c95865b170a56","TEST_MAPPING":"a1d98c3cfd1bbd4748193f02060efba5b9a53bbf4ed3e75fd1a46df8f344ad6d","build.rs":"85708d6adece84c1c1666595a6b9501f02cc5e1016aae8582e43c934f84b19cc","cargo_embargo.json":"e83649ca23319b8752e6eb8e784d06555c52745f166d66677beaac3d52b48eb4","src/lib.rs":"aac92ca1bafaca509603d9f92060427479d0282090ba6ac325154ff1bb9dd02c","tests/compiletest/mod.rs":"7e88f1c0dbd4e53138120be073eb944a2d33ee72f65eac203788a36743e1e278","tests/test.rs":"d9c3a19160b58e69b4eebcd2f5cb2d1c59f20672ba599de36cbca6e1d3eb7bb6","tests/ui/async-fn.rs":"f9444d0296ee3bb19c25996a1fdeb402f0c6a0ad982857eed4060fbd06aef7f6","tests/ui/async-fn.stderr":"403d15b204d7703d477afc27167bf7bf112b33433f8a75aebfd1e00020dcbfa5","tests/ui/const-fn.rs":"f6aec18d4f08916f163f167cd4f83cdfe95a6b4f4019de5060d3e1d63428f1e0","tests/ui/const-fn.stderr":"fe08ebdf618720b6bf204d829de7cd8f4b259e99fb4d5b5591880a928259d7c5","tests/ui/trait-fn.rs":"906b5ac0a2c1a4df474b358784ad725e3d7abb2b61e60857e31c834a7637a1da","tests/ui/trait-fn.stderr":"9e2cd40a327a9c9e58124ec1b3dc3b1a37005724c5aa73e4aa92d8b2634b7917"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8c929a4c0ed39d38ffba96b542c49720cd59895db49aa5cbd9aeb43e159f07a1","Android.bp":"475b565e298a0577b61d7f12f71355c20fe6e2e13f92c96ddf1f541a012d3263","Cargo.toml":"78cc348de01884b022ba15e79ecdde7a7912e304e4bb0352ca0546ff8f57307c","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"4da591de4b27df945a9ee1a1fc6219920a5c39ef30820691be872e05c6395605","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b520e5d0bea02ad6dd8b52f193fc2a7adc5eee9a299b8691046c95865b170a56","TEST_MAPPING":"a1d98c3cfd1bbd4748193f02060efba5b9a53bbf4ed3e75fd1a46df8f344ad6d","build.rs":"85708d6adece84c1c1666595a6b9501f02cc5e1016aae8582e43c934f84b19cc","cargo_embargo.json":"f2da3638894af289fe481666c6da7336df6505e28718e120f296bd7c37316a73","src/lib.rs":"63e123d5c34fd48c1b3983a42d59ddf35cc3ce3cd39db2295f7ecc472d050eab","tests/compiletest/mod.rs":"7e88f1c0dbd4e53138120be073eb944a2d33ee72f65eac203788a36743e1e278","tests/test.rs":"d9c3a19160b58e69b4eebcd2f5cb2d1c59f20672ba599de36cbca6e1d3eb7bb6","tests/ui/async-fn.rs":"f9444d0296ee3bb19c25996a1fdeb402f0c6a0ad982857eed4060fbd06aef7f6","tests/ui/async-fn.stderr":"403d15b204d7703d477afc27167bf7bf112b33433f8a75aebfd1e00020dcbfa5","tests/ui/const-fn.rs":"f6aec18d4f08916f163f167cd4f83cdfe95a6b4f4019de5060d3e1d63428f1e0","tests/ui/const-fn.stderr":"fe08ebdf618720b6bf204d829de7cd8f4b259e99fb4d5b5591880a928259d7c5","tests/ui/trait-fn.rs":"906b5ac0a2c1a4df474b358784ad725e3d7abb2b61e60857e31c834a7637a1da","tests/ui/trait-fn.stderr":"9e2cd40a327a9c9e58124ec1b3dc3b1a37005724c5aa73e4aa92d8b2634b7917"}}
\ No newline at end of file
diff --git a/crates/no-panic/.cargo-checksum.json b/crates/no-panic/.cargo-checksum.json
index 0fc7a36..58fc193 100644
--- a/crates/no-panic/.cargo-checksum.json
+++ b/crates/no-panic/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"08f701a7b81e31ba31bcbe6269cef1820232722417020c8fe68bf9682dea402e","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"fde5df1ff2201ae6b6b01e6964b34040220f5c342b36ac3efe1beb542a6c8e17","build.rs":"d183bf1e325fcd8e132ec95105fdd90ef204818485b9d8ac3334f11ae2f0b6ca","src/lib.rs":"74c4e304278950c9e5b6018e884231bc3b8ca1016b4659ac89334f4d910473d7","tests/compiletest/mod.rs":"3150e73da18b506c070ea7c085380d6e6a2a00860af2a2f96554b26319b3fd0a","tests/test.rs":"5a82f041a9bed6ef3752337e8833921eebeb73fc7f26c73badc97211b00dc7fc","tests/ui/async-fn.rs":"152d5e8546b0b2016315486dddfd0cbe2d3b1a6c629faac6c8e8e645c96d6f78","tests/ui/async-fn.stderr":"2e797f13df99acd49d88c52b0d570e049f03e590f538e91409120b5a11cd3812","tests/ui/const-fn.rs":"b5e4d1d0ae2290d7bbd3a671d3dae2e44c4931b8ca61a7c0cbf9683d9a634866","tests/ui/const-fn.stderr":"e62e6fb411e8faea2879875a2f1c463fa1b41e50d3ff9126bbb0bd69cb6e4530","tests/ui/trait-fn.rs":"129f4d0dc4a227fe6cd3313a2e1835f3b1d4cec4dabb2f811e02a2a59e5e0a29","tests/ui/trait-fn.stderr":"0d7eedcce3e9d876cf2ef2940bd20224a5c0163c672ce05f8af86227347fe301"},"package":"8f7da86466fe446079286ef4b2f6d789755b610a9d85da8477633f734d2697e8"}
\ No newline at end of file
+{"files":{"Cargo.toml":"3fbbc9a0e8717eacacddc99066e8c8e98333064be5f905cf3e713081f2f0496f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"fde5df1ff2201ae6b6b01e6964b34040220f5c342b36ac3efe1beb542a6c8e17","build.rs":"d183bf1e325fcd8e132ec95105fdd90ef204818485b9d8ac3334f11ae2f0b6ca","src/lib.rs":"6d6589d5eed552ff46f48c8dedc73c2a6857ebace16420176ee4867ca0397fc2","tests/compiletest/mod.rs":"3150e73da18b506c070ea7c085380d6e6a2a00860af2a2f96554b26319b3fd0a","tests/test.rs":"5a82f041a9bed6ef3752337e8833921eebeb73fc7f26c73badc97211b00dc7fc","tests/ui/async-fn.rs":"152d5e8546b0b2016315486dddfd0cbe2d3b1a6c629faac6c8e8e645c96d6f78","tests/ui/async-fn.stderr":"2e797f13df99acd49d88c52b0d570e049f03e590f538e91409120b5a11cd3812","tests/ui/const-fn.rs":"b5e4d1d0ae2290d7bbd3a671d3dae2e44c4931b8ca61a7c0cbf9683d9a634866","tests/ui/const-fn.stderr":"e62e6fb411e8faea2879875a2f1c463fa1b41e50d3ff9126bbb0bd69cb6e4530","tests/ui/trait-fn.rs":"129f4d0dc4a227fe6cd3313a2e1835f3b1d4cec4dabb2f811e02a2a59e5e0a29","tests/ui/trait-fn.stderr":"0d7eedcce3e9d876cf2ef2940bd20224a5c0163c672ce05f8af86227347fe301"},"package":"113d1abd5bb3dc25a75d9b3a973f40e31eb03e0bae23c172b32cca4bcb9cfad2"}
\ No newline at end of file
diff --git a/crates/no-panic/Android.bp b/crates/no-panic/Android.bp
index 0c73578..b906dcf 100644
--- a/crates/no-panic/Android.bp
+++ b/crates/no-panic/Android.bp
@@ -17,7 +17,7 @@
name: "libno_panic",
crate_name: "no_panic",
cargo_env_compat: true,
- cargo_pkg_version: "0.1.33",
+ cargo_pkg_version: "0.1.35",
crate_root: "src/lib.rs",
edition: "2021",
rustlibs: [
diff --git a/crates/no-panic/Cargo.toml b/crates/no-panic/Cargo.toml
index 0a4222a..5be7f2d 100644
--- a/crates/no-panic/Cargo.toml
+++ b/crates/no-panic/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "no-panic"
-version = "0.1.33"
+version = "0.1.35"
authors = ["David Tolnay <[email protected]>"]
build = "build.rs"
autolib = false
@@ -32,7 +32,13 @@
repository = "https://github.com/dtolnay/no-panic"
[package.metadata.docs.rs]
-rustdoc-args = ["--generate-link-to-definition"]
+rustdoc-args = [
+ "--generate-link-to-definition",
+ "--extern-html-root-url=core=https://doc.rust-lang.org",
+ "--extern-html-root-url=alloc=https://doc.rust-lang.org",
+ "--extern-html-root-url=std=https://doc.rust-lang.org",
+ "--extern-html-root-url=proc_macro=https://doc.rust-lang.org",
+]
targets = ["x86_64-unknown-linux-gnu"]
[lib]
diff --git a/crates/no-panic/METADATA b/crates/no-panic/METADATA
index f762493..61b0b89 100644
--- a/crates/no-panic/METADATA
+++ b/crates/no-panic/METADATA
@@ -1,17 +1,17 @@
name: "no-panic"
description: "Attribute macro to require that the compiler prove a function can\'t ever panic."
third_party {
- version: "0.1.33"
+ version: "0.1.35"
license_type: NOTICE
last_upgrade_date {
year: 2025
- month: 1
- day: 14
+ month: 3
+ day: 13
}
homepage: "https://crates.io/crates/no-panic"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/no-panic/no-panic-0.1.33.crate"
- version: "0.1.33"
+ value: "https://static.crates.io/crates/no-panic/no-panic-0.1.35.crate"
+ version: "0.1.35"
}
}
diff --git a/crates/no-panic/cargo_embargo.json b/crates/no-panic/cargo_embargo.json
index e1d0b7d..dfb0933 100644
--- a/crates/no-panic/cargo_embargo.json
+++ b/crates/no-panic/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/no-panic/src/lib.rs b/crates/no-panic/src/lib.rs
index 65d0608..d5f0e79 100644
--- a/crates/no-panic/src/lib.rs
+++ b/crates/no-panic/src/lib.rs
@@ -132,7 +132,7 @@
//! [Kixunil]: https://github.com/Kixunil
//! [`dont_panic`]: https://github.com/Kixunil/dont_panic
-#![doc(html_root_url = "https://docs.rs/no-panic/0.1.33")]
+#![doc(html_root_url = "https://docs.rs/no-panic/0.1.35")]
#![allow(
clippy::doc_markdown,
clippy::match_same_arms,
@@ -155,14 +155,25 @@
pub fn no_panic(args: TokenStream, input: TokenStream) -> TokenStream {
let args = TokenStream2::from(args);
let input = TokenStream2::from(input);
- let expanded = match parse(args, input.clone()) {
- Ok(function) => expand_no_panic(function),
+ TokenStream::from(match parse(args, input.clone()) {
+ Ok(function) => {
+ let expanded = expand_no_panic(function);
+ quote! {
+ #[cfg(not(doc))]
+ #expanded
+ // Keep generated parameter names out of doc builds.
+ #[cfg(doc)]
+ #input
+ }
+ }
Err(parse_error) => {
let compile_error = parse_error.to_compile_error();
- quote!(#compile_error #input)
+ quote! {
+ #compile_error
+ #input
+ }
}
- };
- TokenStream::from(expanded)
+ })
}
fn parse(args: TokenStream2, input: TokenStream2) -> Result<ItemFn> {
@@ -229,7 +240,6 @@
let mut arg_pat = Vec::new();
let mut arg_val = Vec::new();
for (i, input) in function.sig.inputs.iter_mut().enumerate() {
- let numbered = Ident::new(&format!("__arg{}", i), Span::call_site());
match input {
FnArg::Typed(PatType { pat, .. })
if match pat.as_ref() {
@@ -237,9 +247,14 @@
_ => true,
} =>
{
+ let arg_name = if let Pat::Ident(original_name) = &**pat {
+ original_name.ident.clone()
+ } else {
+ Ident::new(&format!("__arg{}", i), Span::call_site())
+ };
arg_pat.push(quote!(#pat));
- arg_val.push(quote!(#numbered));
- *pat = parse_quote!(mut #numbered);
+ arg_val.push(quote!(#arg_name));
+ *pat = parse_quote!(mut #arg_name);
}
FnArg::Typed(_) | FnArg::Receiver(_) => {
move_self = Some(quote! {
diff --git a/crates/num-bigint/.android-checksum.json b/crates/num-bigint/.android-checksum.json
index 6d5f98c..f22e42b 100644
--- a/crates/num-bigint/.android-checksum.json
+++ b/crates/num-bigint/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"626b607b73b3e005fe49806848857f387f5d6222276fde1628eb5f37de94cca5","Android.bp":"862279e0c8dbab3d68e6ca66cec24f617cd8c57d4cf712489da2b9f79eef31cb","Cargo.toml":"c192cc08038c59c085bc092ae6d73182d8e16c4fc41c88477aa943c33eb7d692","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7de11c53a3a58ad7394dfa79b309e07bdec5ae6322ca3972f06a5fd83607a5f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"50e069a2328fc53a4c2b4186f9cb22f80271c4eba13bb65fe30966c76657ea11","RELEASES.md":"36c08807a67002d7fa82327ca5ebcf6553dc981b3471f11ab82ee3af2be3dce1","TEST_MAPPING":"c7bad5ec6f7bf48bb856a231acfacaa7f39e438507a269c058f5250421ed683e","benches/bigint.rs":"11044fe6ee2c8c7a0f827d42187496689c78a5f168684bde57f7d7ce5ce8fd93","benches/factorial.rs":"6a0d78154597de3d3a469e661a2d0d29b0c095696d5387ddd6be4f0cc3da236b","benches/gcd.rs":"e66e9488678528c5386f43bcd1498da579a18b0d7a203b90e459f3fae80ba435","benches/rng/mod.rs":"9d49b4584c9bc6b3b1cbab51b08e00334b09b26b7a758491e8208ec7f21fe0b8","benches/roots.rs":"5d83ab3461ba7ed36b1a6c1250d73519f72bfd7309f2046b5d5437c8d3e68ae5","benches/shootout-pidigits.rs":"1393ffbdc2555e34818ba81a5bf9eb28c8568b71196bad4e811b504d145bea2e","cargo_embargo.json":"be3a30d8e5d9126130b453bb35f83bfeaf4275f85e8209865cca2a6609eb4b2d","patches/disable_tests.patch":"8e6908c72054213761d720a7fea46347042fb14b322f1d02216d7c4739a516da","src/bigint.rs":"7f392985a5791a611c4facd493788ace49e57900ef3a31264725a8ce915c2bef","src/bigint/addition.rs":"e6a2946eb8721b9c777593d72bb4057bfa5fb1ea11bf73878640352f02960dbe","src/bigint/arbitrary.rs":"51f6937e59f386953ebf2733823be04c0f1861590bfc070888c36e7c3a610d1b","src/bigint/bits.rs":"b76d7abeaf07ebd1255b297590fa9d6b05c963cbc46f9610df728f99dc0a17ae","src/bigint/convert.rs":"98a6ddb01599bee9c1cb09264650a0ae3955cd1e8b22a6ac325315937e20f2a9","src/bigint/division.rs":"b75b3244b354a9cd6df59bed20b0128dcec401ce243de58f8b2bd772fa0f5ac3","src/bigint/multiplication.rs":"10605872fae3ee6e6af13ab7588151b390a11bd0c1b8234947334ffb2d4a0bc8","src/bigint/power.rs":"119ec879b2b65de573c9eb23955fc75655c8b0b05791a808d76c66de9fe78d14","src/bigint/serde.rs":"e49e01da48214a17de01f18b9a37c4787b91858513763af4d086b17d1f2bb411","src/bigint/shift.rs":"7090e677289786c25e0a6ec13e89b9775dda240e624e4add5ac34f8ff08d70e1","src/bigint/subtraction.rs":"687febaa35535cb0f8b81115020d17c09295b474030778500f584957ba0ffc74","src/bigrand.rs":"2a2c352e57d2dd95b40e116675ce2214e9a8f1c100667dac91965942a0564e28","src/biguint.rs":"67707669c4d99453131d8641d02919a4991392bc33bd6fbd3818f006cb6e6a19","src/biguint/addition.rs":"3de84c1c94bc3ea8e427026f3ec266e651144f4cd87354c8d6f7c89abd4c231c","src/biguint/arbitrary.rs":"007e5185a2e909fb7881b7cb4718fa3de31e9f841f192887d30a4075b8d3fac2","src/biguint/bits.rs":"07fef255da30a2bb10d5c34dacb3c2b2a84c872dcefcaaa5c41bcd1519fe97e8","src/biguint/convert.rs":"540bdd333542f54bb52466dc849d7a73503512cf44bb0a10b131dc820ff2b97f","src/biguint/division.rs":"a00701225783744cbe8fb11536f4851c09a39d9c82f41f67996519de76089f17","src/biguint/iter.rs":"e5c10ed11fc11fa2bda75bb1b884b89475626e983545d99132068a2d761792b1","src/biguint/monty.rs":"19ca69a11d0c580510dd65299374cd501feecb712da4b7bdc17d7ac0bba37071","src/biguint/multiplication.rs":"eecc40e564117990e853fe4b088d2f0dd85a1611e57758210d7ab6613cf28ab3","src/biguint/power.rs":"b7bf53f58cabd6ef581c4c5caa4e38407939e438dafcda780aab0e8205151443","src/biguint/serde.rs":"47b8f666ddeda66ea7ca7ff745edbd3543a57221e14ad27e46275a02f52deff7","src/biguint/shift.rs":"a6cfcc0476fd2cff0268614718f7e135b71899f208138293fe7ca99db0199638","src/biguint/subtraction.rs":"75cbdb772971330a27aee32fecf0dcb23e93886b9c4b5cffd5906ac25010a1f3","src/lib.rs":"8d98cc2ac5c23d00d35bcc7971a5ce9bcae0c11070bf462dc8c143de8dd6796a","src/macros.rs":"e5f1c3c3b455c6178e7448cb499d5304bb8e3683f6796aee02496ff7599907a5","tests/bigint.rs":"6b4e118d09fe901ab9ffdcee9e5d40aa0b26e27954db592408bb996b7578633b","tests/bigint_bitwise.rs":"dbc1ccd93320f427ffb84af856b1ba923e911038d5e34d9482dcd9d5b95d870b","tests/bigint_scalar.rs":"0ac683c29a4b8f883eca986b3234530fc493fb3e6f0cc16858093f49846492cc","tests/biguint.rs":"0ee251ef674fa9803281e90cc5b8ab190408418d93a68c4a73d31baf9fa5304f","tests/biguint_scalar.rs":"c8d90abf23d75f603c7b2e8f475959319a2374bd285fc7fc9a9d31e7f7ee4bab","tests/consts/mod.rs":"31035c244b43702f9751c8e48f45eb2a007a40585c3c50083e4054e78c732206","tests/fuzzed.rs":"b01ddbada1bdee35563ccb953deee3476f1a8cd6daa7de0e1a708bd0845c56fa","tests/macros/mod.rs":"20098c9bd76d007dec91fddf9a99196f9e3455485ca1f7165528597b18b39975","tests/modpow.rs":"fa80f4701af352e301161a465a9f4d374eed799a7de7f239bb4ec0857b1b9377","tests/roots.rs":"c632b43665d471a12c0cbfb4eecb9fa010fe3bf4c9df182aad10d206dd324ecb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"626b607b73b3e005fe49806848857f387f5d6222276fde1628eb5f37de94cca5","Android.bp":"6265539a4c6e83e0ab2a21e8a1c9c401d0e9b5e4984c16f222111a872b68156a","Cargo.toml":"c192cc08038c59c085bc092ae6d73182d8e16c4fc41c88477aa943c33eb7d692","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7de11c53a3a58ad7394dfa79b309e07bdec5ae6322ca3972f06a5fd83607a5f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"50e069a2328fc53a4c2b4186f9cb22f80271c4eba13bb65fe30966c76657ea11","RELEASES.md":"36c08807a67002d7fa82327ca5ebcf6553dc981b3471f11ab82ee3af2be3dce1","TEST_MAPPING":"c7bad5ec6f7bf48bb856a231acfacaa7f39e438507a269c058f5250421ed683e","benches/bigint.rs":"11044fe6ee2c8c7a0f827d42187496689c78a5f168684bde57f7d7ce5ce8fd93","benches/factorial.rs":"6a0d78154597de3d3a469e661a2d0d29b0c095696d5387ddd6be4f0cc3da236b","benches/gcd.rs":"e66e9488678528c5386f43bcd1498da579a18b0d7a203b90e459f3fae80ba435","benches/rng/mod.rs":"9d49b4584c9bc6b3b1cbab51b08e00334b09b26b7a758491e8208ec7f21fe0b8","benches/roots.rs":"5d83ab3461ba7ed36b1a6c1250d73519f72bfd7309f2046b5d5437c8d3e68ae5","benches/shootout-pidigits.rs":"1393ffbdc2555e34818ba81a5bf9eb28c8568b71196bad4e811b504d145bea2e","cargo_embargo.json":"8891ae285e1d3a39d688405d42fd825ec85d06d4f8981c494e10c30305a678bf","patches/disable_tests.patch":"8e6908c72054213761d720a7fea46347042fb14b322f1d02216d7c4739a516da","src/bigint.rs":"7f392985a5791a611c4facd493788ace49e57900ef3a31264725a8ce915c2bef","src/bigint/addition.rs":"e6a2946eb8721b9c777593d72bb4057bfa5fb1ea11bf73878640352f02960dbe","src/bigint/arbitrary.rs":"51f6937e59f386953ebf2733823be04c0f1861590bfc070888c36e7c3a610d1b","src/bigint/bits.rs":"b76d7abeaf07ebd1255b297590fa9d6b05c963cbc46f9610df728f99dc0a17ae","src/bigint/convert.rs":"98a6ddb01599bee9c1cb09264650a0ae3955cd1e8b22a6ac325315937e20f2a9","src/bigint/division.rs":"b75b3244b354a9cd6df59bed20b0128dcec401ce243de58f8b2bd772fa0f5ac3","src/bigint/multiplication.rs":"10605872fae3ee6e6af13ab7588151b390a11bd0c1b8234947334ffb2d4a0bc8","src/bigint/power.rs":"119ec879b2b65de573c9eb23955fc75655c8b0b05791a808d76c66de9fe78d14","src/bigint/serde.rs":"e49e01da48214a17de01f18b9a37c4787b91858513763af4d086b17d1f2bb411","src/bigint/shift.rs":"7090e677289786c25e0a6ec13e89b9775dda240e624e4add5ac34f8ff08d70e1","src/bigint/subtraction.rs":"687febaa35535cb0f8b81115020d17c09295b474030778500f584957ba0ffc74","src/bigrand.rs":"2a2c352e57d2dd95b40e116675ce2214e9a8f1c100667dac91965942a0564e28","src/biguint.rs":"67707669c4d99453131d8641d02919a4991392bc33bd6fbd3818f006cb6e6a19","src/biguint/addition.rs":"3de84c1c94bc3ea8e427026f3ec266e651144f4cd87354c8d6f7c89abd4c231c","src/biguint/arbitrary.rs":"007e5185a2e909fb7881b7cb4718fa3de31e9f841f192887d30a4075b8d3fac2","src/biguint/bits.rs":"07fef255da30a2bb10d5c34dacb3c2b2a84c872dcefcaaa5c41bcd1519fe97e8","src/biguint/convert.rs":"540bdd333542f54bb52466dc849d7a73503512cf44bb0a10b131dc820ff2b97f","src/biguint/division.rs":"a00701225783744cbe8fb11536f4851c09a39d9c82f41f67996519de76089f17","src/biguint/iter.rs":"e5c10ed11fc11fa2bda75bb1b884b89475626e983545d99132068a2d761792b1","src/biguint/monty.rs":"19ca69a11d0c580510dd65299374cd501feecb712da4b7bdc17d7ac0bba37071","src/biguint/multiplication.rs":"eecc40e564117990e853fe4b088d2f0dd85a1611e57758210d7ab6613cf28ab3","src/biguint/power.rs":"b7bf53f58cabd6ef581c4c5caa4e38407939e438dafcda780aab0e8205151443","src/biguint/serde.rs":"47b8f666ddeda66ea7ca7ff745edbd3543a57221e14ad27e46275a02f52deff7","src/biguint/shift.rs":"a6cfcc0476fd2cff0268614718f7e135b71899f208138293fe7ca99db0199638","src/biguint/subtraction.rs":"75cbdb772971330a27aee32fecf0dcb23e93886b9c4b5cffd5906ac25010a1f3","src/lib.rs":"8d98cc2ac5c23d00d35bcc7971a5ce9bcae0c11070bf462dc8c143de8dd6796a","src/macros.rs":"e5f1c3c3b455c6178e7448cb499d5304bb8e3683f6796aee02496ff7599907a5","tests/bigint.rs":"6b4e118d09fe901ab9ffdcee9e5d40aa0b26e27954db592408bb996b7578633b","tests/bigint_bitwise.rs":"dbc1ccd93320f427ffb84af856b1ba923e911038d5e34d9482dcd9d5b95d870b","tests/bigint_scalar.rs":"0ac683c29a4b8f883eca986b3234530fc493fb3e6f0cc16858093f49846492cc","tests/biguint.rs":"0ee251ef674fa9803281e90cc5b8ab190408418d93a68c4a73d31baf9fa5304f","tests/biguint_scalar.rs":"c8d90abf23d75f603c7b2e8f475959319a2374bd285fc7fc9a9d31e7f7ee4bab","tests/consts/mod.rs":"31035c244b43702f9751c8e48f45eb2a007a40585c3c50083e4054e78c732206","tests/fuzzed.rs":"b01ddbada1bdee35563ccb953deee3476f1a8cd6daa7de0e1a708bd0845c56fa","tests/macros/mod.rs":"20098c9bd76d007dec91fddf9a99196f9e3455485ca1f7165528597b18b39975","tests/modpow.rs":"fa80f4701af352e301161a465a9f4d374eed799a7de7f239bb4ec0857b1b9377","tests/roots.rs":"c632b43665d471a12c0cbfb4eecb9fa010fe3bf4c9df182aad10d206dd324ecb"}}
\ No newline at end of file
diff --git a/crates/num-bigint/Android.bp b/crates/num-bigint/Android.bp
index b389417..b56e2ec 100644
--- a/crates/num-bigint/Android.bp
+++ b/crates/num-bigint/Android.bp
@@ -35,6 +35,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/num-bigint/cargo_embargo.json b/crates/num-bigint/cargo_embargo.json
index 29ed98c..32b3fd6 100644
--- a/crates/num-bigint/cargo_embargo.json
+++ b/crates/num-bigint/cargo_embargo.json
@@ -8,9 +8,9 @@
],
"package": {
"num-bigint": {
- // Code generated by build.rs is built into the library.
"copy_out": true
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/num-derive/.android-checksum.json b/crates/num-derive/.android-checksum.json
index a0f8c95..6800101 100644
--- a/crates/num-derive/.android-checksum.json
+++ b/crates/num-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7437707392dce551b98cd3ede32fa320f7640450c3b8487928b001e65a05ff1e","Android.bp":"9ec700e41b192b3e212e01bf067041aa9ede360098be01d568f23a5e0c545770","Cargo.toml":"d428522d21a216fcd9a06d4621c3ff84a4ce4edd3c3f45af8fd5cfc26729f1a7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"a3e679e6b58077e9b0ee4b54726e5df1fcf7afcc6efd82016cd856660ff24f11","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ca1c66b82881d84c12b160e77e1b2b4d29739227a24031eb2620df73757496b","RELEASES.md":"84611ba4706c0764dedcbdd693b5aa85b66d64ae01c33e74b70301f82db96df6","TEST_MAPPING":"54bed59d3a8f6ed067bc298afafee36b8387d10c5011132b499429e0a289a7fc","cargo_embargo.json":"feff82698fcf8425b6b440bb976fcc7591d4da88f81f2237658d844c612a2501","rules.mk":"5f8159daa708f8918423aa458e2e14774cbfa4629cd4635a2f5e363058f8476e","src/lib.rs":"b2123a4b017f8a22c384603d0ffc790a693f5bb76ba2b8aa8112415886941db0","tests/empty_enum.rs":"8976adddd4a5d80e2ddf8b91846e66f42ee621b7fa82d1eb663c24a16ebfb21c","tests/issue-16.rs":"2978256c5aa4bfd0294cf4b2bb92bb7d3379ca83ececb3f1a1ee07cabdd7739b","tests/issue-6.rs":"36ed14eae767ce4d666f867612faae5b630aeb9789461670a30fb79f7fc6e350","tests/issue-9.rs":"8ca1ba775f3ef077651e3617704490e87225f278f63a9919c006fc6f27a5aab3","tests/newtype-2015.rs":"c0416ac4e0755f3b30ae1c2b54681f0547f6e64c3591f680e88d0d9157cb801b","tests/newtype-2018.rs":"59cbee55b32b5e2b010a9c8d5eda2672fce4d7920d29a7cfba2ac47330069685","tests/newtype.rs":"2432d328cc26da4bcaad39977fa5379818f61f744666db76775b23ee99c6ccc2","tests/no_implicit_prelude.rs":"4a86e1b6cc70ac19956275b14821a897ac7fa03e5f6557efce0cab604dc8333c","tests/num_derive_without_num.rs":"6a920c2f8089882fea6dc209390d8faa4b7c7543a7de667165dea6c8647f6dd6","tests/trivial-2015.rs":"38ecd04a62f3a2ac5fef92c8e84e1711d8c67823056a2f800f144eba09509332","tests/trivial-2018.rs":"4deba7e50d07b9c87c94288ef84a8decd3472c47665dfd02ee773174725f2b36","tests/trivial.rs":"8c773f06b59b100004d5fb1616fee68f3e9b994f131f574daaee5d3fbff085f6","tests/with_custom_values.rs":"46dd854093137efad7b3dcfa54baaa2b2e6dcc2b701d4b69ace70a8a2aadaad7"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7437707392dce551b98cd3ede32fa320f7640450c3b8487928b001e65a05ff1e","Android.bp":"b455e02ad996d4df57add59ef68153c28df2b59a8192922e924a36efd0ddc5af","Cargo.toml":"d428522d21a216fcd9a06d4621c3ff84a4ce4edd3c3f45af8fd5cfc26729f1a7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"a3e679e6b58077e9b0ee4b54726e5df1fcf7afcc6efd82016cd856660ff24f11","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9ca1c66b82881d84c12b160e77e1b2b4d29739227a24031eb2620df73757496b","RELEASES.md":"84611ba4706c0764dedcbdd693b5aa85b66d64ae01c33e74b70301f82db96df6","TEST_MAPPING":"54bed59d3a8f6ed067bc298afafee36b8387d10c5011132b499429e0a289a7fc","cargo_embargo.json":"fef2a71d3d9e018a46dd6a6aadedade36b33485c05b79aca708161c13bb2cdc0","rules.mk":"5f8159daa708f8918423aa458e2e14774cbfa4629cd4635a2f5e363058f8476e","src/lib.rs":"b2123a4b017f8a22c384603d0ffc790a693f5bb76ba2b8aa8112415886941db0","tests/empty_enum.rs":"8976adddd4a5d80e2ddf8b91846e66f42ee621b7fa82d1eb663c24a16ebfb21c","tests/issue-16.rs":"2978256c5aa4bfd0294cf4b2bb92bb7d3379ca83ececb3f1a1ee07cabdd7739b","tests/issue-6.rs":"36ed14eae767ce4d666f867612faae5b630aeb9789461670a30fb79f7fc6e350","tests/issue-9.rs":"8ca1ba775f3ef077651e3617704490e87225f278f63a9919c006fc6f27a5aab3","tests/newtype-2015.rs":"c0416ac4e0755f3b30ae1c2b54681f0547f6e64c3591f680e88d0d9157cb801b","tests/newtype-2018.rs":"59cbee55b32b5e2b010a9c8d5eda2672fce4d7920d29a7cfba2ac47330069685","tests/newtype.rs":"2432d328cc26da4bcaad39977fa5379818f61f744666db76775b23ee99c6ccc2","tests/no_implicit_prelude.rs":"4a86e1b6cc70ac19956275b14821a897ac7fa03e5f6557efce0cab604dc8333c","tests/num_derive_without_num.rs":"6a920c2f8089882fea6dc209390d8faa4b7c7543a7de667165dea6c8647f6dd6","tests/trivial-2015.rs":"38ecd04a62f3a2ac5fef92c8e84e1711d8c67823056a2f800f144eba09509332","tests/trivial-2018.rs":"4deba7e50d07b9c87c94288ef84a8decd3472c47665dfd02ee773174725f2b36","tests/trivial.rs":"8c773f06b59b100004d5fb1616fee68f3e9b994f131f574daaee5d3fbff085f6","tests/with_custom_values.rs":"46dd854093137efad7b3dcfa54baaa2b2e6dcc2b701d4b69ace70a8a2aadaad7"}}
\ No newline at end of file
diff --git a/crates/num-derive/Android.bp b/crates/num-derive/Android.bp
index ebe0d37..088a5a5 100644
--- a/crates/num-derive/Android.bp
+++ b/crates/num-derive/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/num-derive/cargo_embargo.json b/crates/num-derive/cargo_embargo.json
index 6a85ba6..5a03d0b 100644
--- a/crates/num-derive/cargo_embargo.json
+++ b/crates/num-derive/cargo_embargo.json
@@ -1,5 +1,6 @@
{
"run_cargo": false,
"generate_rulesmk": true,
- "features": []
-}
+ "features": [],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/num-integer/.android-checksum.json b/crates/num-integer/.android-checksum.json
index d2940f0..30d3680 100644
--- a/crates/num-integer/.android-checksum.json
+++ b/crates/num-integer/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f2cb2b1de04dc6230194d0448784cafd396b410ada3020931ec7fec2761608ff","Android.bp":"624ea5bfe2ac153bb44f769162d0aa5c2a3f15caad35c5bd5384e9c2008f410d","Cargo.toml":"536022c3cb2b76cf9c5904a2f41fff2386905d720b98e6fc9a595a4a65a63508","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"b8e710fa8073b4c5701d850e7f8d27d46d43070e814ad4a80b5713326200da71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cd2e6a06ce4b85822b67f272e6f95c2777589451dd3b63d9bb842c862bbb1198","RELEASES.md":"87e843b94e53f9a25fea4755ce99879ae062058a2c8f9da71b72803df77eaa66","TEST_MAPPING":"f8444e5384dcd8fefa32aa5f7e19b20b852784cf68e991f1ea5725e5bc221a50","benches/average.rs":"6300122efca88eb293c6cee123efe9d5735dc4a5f072d24d44a2200cb1e22752","benches/gcd.rs":"0863c84d23863057b00f77384da8f63b684256494591fa5a9cfd0663c2ffe6cd","benches/roots.rs":"47846099441a416801afd7cd42bc3c7c6e87580cbb28970812532cac02b46a41","cargo_embargo.json":"a3ba128bb1b0d688704bd5068929edd9b07963c5070fe395c24109d331d6937e","rules.mk":"44420c0acaa89841d3c044cb509675c29150d77a3df34a76e7f47ce7a09111c0","src/average.rs":"a04eabe98135720a06bfacd502cbdbbdf6514ec1bf1b5b1b882cdbb8ab7f368e","src/lib.rs":"05ee00d4a1787e0f30430819cc82e0c36e68d15fa6e59c6a6a51419e411f9d6a","src/roots.rs":"c0d9b6fa42d98d92679f7764d90fb7ede690bd31e77114675d5b47e3b7d613da","tests/average.rs":"23094eee2a3eb56c2e30ae8b684f3d24be15d31f914a9c117b5737efa8057826","tests/roots.rs":"c46065c5398992ac6b26395946e749c68c6c5871054b589d41d1063d97ea306c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f2cb2b1de04dc6230194d0448784cafd396b410ada3020931ec7fec2761608ff","Android.bp":"3cab6342158469079113ac315e50689edb6b65eb38cef10dc9eaceff5aa28268","Cargo.toml":"536022c3cb2b76cf9c5904a2f41fff2386905d720b98e6fc9a595a4a65a63508","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"b8e710fa8073b4c5701d850e7f8d27d46d43070e814ad4a80b5713326200da71","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cd2e6a06ce4b85822b67f272e6f95c2777589451dd3b63d9bb842c862bbb1198","RELEASES.md":"87e843b94e53f9a25fea4755ce99879ae062058a2c8f9da71b72803df77eaa66","TEST_MAPPING":"f8444e5384dcd8fefa32aa5f7e19b20b852784cf68e991f1ea5725e5bc221a50","benches/average.rs":"6300122efca88eb293c6cee123efe9d5735dc4a5f072d24d44a2200cb1e22752","benches/gcd.rs":"0863c84d23863057b00f77384da8f63b684256494591fa5a9cfd0663c2ffe6cd","benches/roots.rs":"47846099441a416801afd7cd42bc3c7c6e87580cbb28970812532cac02b46a41","cargo_embargo.json":"b876699b46b5645bacfbf4143c7e1cddb9cd2478f3b08474ba18aabef65f34b4","rules.mk":"44420c0acaa89841d3c044cb509675c29150d77a3df34a76e7f47ce7a09111c0","src/average.rs":"a04eabe98135720a06bfacd502cbdbbdf6514ec1bf1b5b1b882cdbb8ab7f368e","src/lib.rs":"05ee00d4a1787e0f30430819cc82e0c36e68d15fa6e59c6a6a51419e411f9d6a","src/roots.rs":"c0d9b6fa42d98d92679f7764d90fb7ede690bd31e77114675d5b47e3b7d613da","tests/average.rs":"23094eee2a3eb56c2e30ae8b684f3d24be15d31f914a9c117b5737efa8057826","tests/roots.rs":"c46065c5398992ac6b26395946e749c68c6c5871054b589d41d1063d97ea306c"}}
\ No newline at end of file
diff --git a/crates/num-integer/Android.bp b/crates/num-integer/Android.bp
index 7ff116b..d550e19 100644
--- a/crates/num-integer/Android.bp
+++ b/crates/num-integer/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/num-integer/cargo_embargo.json b/crates/num-integer/cargo_embargo.json
index a19b56b..d499134 100644
--- a/crates/num-integer/cargo_embargo.json
+++ b/crates/num-integer/cargo_embargo.json
@@ -17,5 +17,6 @@
"generate_rulesmk": true,
"tests": false
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/num_enum/.android-checksum.json b/crates/num_enum/.android-checksum.json
index 0ffae13..c745a2d 100644
--- a/crates/num_enum/.android-checksum.json
+++ b/crates/num_enum/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"27279d5dc0165a28669dc707d24e718286e1a86738337cd5e94fefd3174c1325","Android.bp":"2bee9016faf8b89094ed8f4b21757f66983bfd117fcd97593d3df1571fb24912","Cargo.toml":"fcc2288aef6aa2c30513da48df6f1f2962af12abf2123ce923d6858f81124516","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-BSD":"12362f4576bbcbfa112abed949e628b52162b21db89c332550bf3f2e2f6075b9","METADATA":"e637a6a89c9645f618ca7d6c049924e02b56027501641429decee8027a216665","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8436e0fa927808e211171c7b086f5001b742b9ea6673ccf7ac15ca9cd0a2a7d6","cargo_embargo.json":"762c744fbd4c3e924a9d034fd3c3e4e1399622b96d67058be0ca151ee0b63ba0","src/lib.rs":"ec4b658298ce55ef2186a442227cb146ef56c6607c785994ee17706de0272931","tests/default.rs":"a791182b0cc3e3f68dc6e17becd5cd188b70c5987fc19373ebb941df068cf24c","tests/from_primitive.rs":"bd3b8a72ba68b29be59f7dc6ab666b55ca02cef7bbce4899d19401fa73f8eb2f","tests/into_primitive.rs":"f5c0c69659a1bb887684dbf5a1418466a9babe8e685a867a3f205d8ffceb402b","tests/renamed_num_enum.rs":"c157d43bf5518da8ce68071b34636cf72e7b42938e9a6060529dc3f4cddd42e3","tests/try_build.rs":"53823f5e9cd99bf916552d4fada295ab19eb655426060445cc274ea9c08443f0","tests/try_build/compile_fail/alternative_clashes_with_its_discriminant.rs":"d3cf27088a7e8d3d77ae6e5afc31da1d2afd954264d6579299be0b73fdeb923c","tests/try_build/compile_fail/alternative_clashes_with_its_discriminant.stderr":"1109c4a3b6afa5b84ff4979bf5dee50550ddecc67df51876b136011c5572313e","tests/try_build/compile_fail/alternative_clashes_with_variant.rs":"721ba080514727244aa915a571f2b78540d69c057e2aaefee8b88cc715e37d3b","tests/try_build/compile_fail/alternative_clashes_with_variant.stderr":"1715624d1e55ce998ace6ace5b8edbef8628f716f2d2912361474922a608bff3","tests/try_build/compile_fail/alternative_clashes_with_variant_out_of_order.rs":"7498dca688b9fec84ee9e5af990947442bb61355a572f7d3213c6c1f7db8775f","tests/try_build/compile_fail/alternative_clashes_with_variant_out_of_order.stderr":"2c1e55fdeb20490a88c1cbdb5d21d2fee7550c147ed17a2b3c14cd4e7110be6a","tests/try_build/compile_fail/alternative_exprs.rs":"6e667fc638a4681b762b2d0e6158102780a246e88753fdec5cdc426952b7554c","tests/try_build/compile_fail/alternative_exprs.stderr":"ce0cbd84225b65955e85a1ff010572e3a3d05897fc801fab240d0c1a08530a9f","tests/try_build/compile_fail/catch_all_multiple_fields.rs":"e73dc2c43148646f7f2ab08b344f350e687965c8a2988e53d726c7f7347b4f46","tests/try_build/compile_fail/catch_all_multiple_fields.stderr":"7a5934fbb05cb7050468ec8a7bd4a193a49567d9dc52213d8af8a562a2e4d583","tests/try_build/compile_fail/catch_all_non_tuple.rs":"29b4cd93ce0af204043cf23146e2525f796a8efbbae2a8efe50f75c6df89b0af","tests/try_build/compile_fail/catch_all_non_tuple.stderr":"930bef67238f6a89488bbadd07c54ed362a0385cadda2ca89d8de30992f52872","tests/try_build/compile_fail/catch_all_type_mismatch.rs":"4950955198746d6bed52260d32b250450345b2ece772d93ce22c3d49376db9b6","tests/try_build/compile_fail/catch_all_type_mismatch.stderr":"b5e3820abe7ca0f65bf8898228749a91bbf8b0fe0a8d11b9822415400de49d8d","tests/try_build/compile_fail/conflicting_default.rs":"637f1b709cb6146a1ca4b8e242846945ee9c7f843adf69e630d051109188558b","tests/try_build/compile_fail/conflicting_default.stderr":"4e8a1055dadb869d5d0ec0c69ab3a584f74f75c1d3025a064a72ae21856af94d","tests/try_build/compile_fail/conflicting_derive.rs":"039c014a4b906bf35ad0a1af7c320205cec87730beb26426cd5a6146866d18e6","tests/try_build/compile_fail/conflicting_derive.stderr":"edf52938833cbc14792d869d594c6e1033e875500d3cd9147d0aefe396dfad9f","tests/try_build/compile_fail/custom_error_type_parsing.rs":"27b5d80b8f9577477c5cf28585fc1cd8e63ed6e7bb792dfc95046c87c3b69cfa","tests/try_build/compile_fail/custom_error_type_parsing.stderr":"f6db9523942cf1f6a5a909a61f0b4eae517d63e54b921710439e9c1dd434c5e1","tests/try_build/compile_fail/default_and_catch_all.rs":"355adfb5684bd14619e2dabd59d74006ec3d8eb792c3849b5eadb26e110ee181","tests/try_build/compile_fail/default_and_catch_all.stderr":"0ba0da30237704638339db3b55954dd93c1aadc64fa52ca28bbceb3d98cc8641","tests/try_build/compile_fail/default_and_catch_all_alt.rs":"e4ec57672bd0f4680a655f4ac575642ff158fa55ddb3cb542447142ecaf41bb3","tests/try_build/compile_fail/default_and_catch_all_alt.stderr":"75d6927be6ba66fb52a5d3f1db24270164c482caebce7b32887e6e381f83d190","tests/try_build/compile_fail/default_and_catch_all_same_variant.rs":"c0e62b1db9375f61f47d9a69899d7bcdc9b39d32a0550ea907d55a53915fddf0","tests/try_build/compile_fail/default_and_catch_all_same_variant.stderr":"9c3122f574a81ff55f40c135146428ac7c37d130d090bc02fe4c3b1f042b667d","tests/try_build/compile_fail/default_and_catch_all_same_variant_alt.rs":"7218ce2968e63242dc0c275ddf3ededae8b7a79cd54f68847f3b0523b3557729","tests/try_build/compile_fail/default_and_catch_all_same_variant_alt.stderr":"c443cc2b1acc8ba63c85889b8d6c8e5c4dd7b9f528bcc6ff5e4b34efed8393c1","tests/try_build/compile_fail/features/!complex-expressions/alternate_exprs_with_range.rs":"ff3acaca9e2fc9a094e302da4fed7ecb4f540b10ac1850bd10da06d68bf7d426","tests/try_build/compile_fail/features/!complex-expressions/alternate_exprs_with_range.stderr":"e6be1f1d34c1711f1329cab8e117de245d55944f4df44a791cea322ff4893566","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_lower_bound.rs":"5f24621e1251a6d6edca2f9f4ebf79222357091aa1e0dc7aa8a8908833cb71aa","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_lower_bound.stderr":"acb93c8f087769ce828e48712d138e19adfc70238a5244e6fd7c6fda579ce435","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_upper_bound.rs":"586b480c3a944999851d23e432955d965230412de38dcaf8a4a65050bc435752","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_upper_bound.stderr":"5bc530f2c4c03accaeee24828863b108e35fc45cece30816861e6483aa703381","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_lower_bound.rs":"07bacb93aac8f75d7402459c705b22789f7dbb4e5e76cecd7286ada8971548df","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_lower_bound.stderr":"d450867b470c84f0ea9edead682c3f17dc07e974f9e60d7149e0d1eb01837e08","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_upper_bound.rs":"8d52a5d23f3988cc2b76956a2908a168ff03c3775511b6d8290dd6264760427e","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_upper_bound.stderr":"ae6befa435ff9ff30c5973b31eb80aabbdd51d82b76b586f9fd28738bea1d898","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_swapped_bounds.rs":"26c539fb1fb9e86fdf2d1133a9d04949f70fbbf49965e6054d28d8aebc9b4aab","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_swapped_bounds.stderr":"62814d9c28c9fc3b5d44bf971571514e5c6c9d5f016f22227d7da1a51515da79","tests/try_build/compile_fail/from_unchecked_deprecated_warning.rs":"ebd6624af0a9756306c08a7d590ab5b4dbaf56ee76ad72fb5276210571ca3349","tests/try_build/compile_fail/from_unchecked_deprecated_warning.stderr":"3dce0173fd5ecf207bb05ae3fff3f4c12f2e806059ed4ef03223f7dbae087064","tests/try_build/compile_fail/garbage_attribute.rs":"8a262820e2d09e8eb42f49d64f75b351d3256196c98898c2642e604e46390063","tests/try_build/compile_fail/garbage_attribute.stderr":"643898529b51f46c6ff672cf98768d8ec586ad5a96c19c80fdc639fd8be37c36","tests/try_build/compile_fail/missing_default.rs":"678696bcfbd0f878c27bc9ce38aee75b5eba20901e4fba788ae629bfc7100375","tests/try_build/compile_fail/missing_default.stderr":"a5f819c85dd13b95f95dc1d95ad422f5b9554942bf5410f236bae627a5863451","tests/try_build/compile_fail/missing_repr.rs":"a5ed9d58b915d17c80bfa3ee614ee215b1c6be4ee16b9232d1f4f1ced89f7558","tests/try_build/compile_fail/missing_repr.stderr":"809af504b92598e35bc72fb86840bc462829e5fc5ffcf87c01a804463da7d091","tests/try_build/compile_fail/multiple_catch_all.rs":"3d164ce13908376095fb1816472841b151ac8206ee0bd572ea5dc48d12a53edd","tests/try_build/compile_fail/multiple_catch_all.stderr":"eb4b69aec406286de2a37e0d0cbd1167d29648635d543dba57c82526cfe8a66c","tests/try_build/compile_fail/multiple_catch_all_same_variant.rs":"76374ab9d5a10ff8ec36fbd2b977f884836955f5d6f2d245926bf92550b18437","tests/try_build/compile_fail/multiple_catch_all_same_variant.stderr":"199393dd85f88d683027b33f3464c1b31a5e0a145efa0f46a3ca4080622d114c","tests/try_build/compile_fail/multiple_defaults.rs":"e50d07c373c82a9575d018facc236949f58208ae1fa32300fa879e4eb868d7e6","tests/try_build/compile_fail/multiple_defaults.stderr":"6492e1ca6a90dcbe0da8da804dcadf7f1c4847478f8e75145f4fbc20cb598a68","tests/try_build/compile_fail/multiple_defaults_different_kinds.rs":"b82d341abf3fba34fb73e27d84ae74912c7d5eecf88932ce43e5d5818ada0110","tests/try_build/compile_fail/multiple_defaults_different_kinds.stderr":"7bfc119a7199d24b5b4ce120797fe6f3a3df97029396a9a614fdb89cecdb1f06","tests/try_build/compile_fail/multiple_num_enum_defaults.rs":"88563892ae17701c0484a898ab7d89fd43827ee811726539cec79cee28774e28","tests/try_build/compile_fail/multiple_num_enum_defaults.stderr":"96bc3135acddac50d2aab0431cbb5121eddf1ffe22b2f1b789d407fcde0c6451","tests/try_build/compile_fail/repr_c.rs":"cd5465393786f717e1cf8e060e632dfdf5f4b169780efa9d976e2b785f8d9cab","tests/try_build/compile_fail/repr_c.stderr":"62a9b420bd888856d94e5872ca3c2526dec857a037f263bead773310827ed319","tests/try_build/compile_fail/variants_with_fields.rs":"8599a5d09f2c1b4b1b59e331c1043144ea8bec8ac6b2def8d1b93ca630c469bc","tests/try_build/compile_fail/variants_with_fields.stderr":"614857a0007365c877e6f58521167c344546ac6e6a1c07cc2fd6f3141694e786","tests/try_build/pass/default_and_alternatives.rs":"126274d9505f6f9861b458fa9bd2f695925932489cd0874378512dc15971f3fb","tests/try_build/pass/exhaustive_enum_try_from.rs":"4992849e8167b07fed0b5d8e457edd7a39d09c86ca40c7859bca332b6a2218cf","tests/try_build/pass/exhaustive_enum_via_alternatives.rs":"629364e22dcb78139041676a2e74f4ca649a369a52e23f7adf7ece531213f984","tests/try_build/pass/exhaustive_enum_via_default.rs":"2a603f5a3938b2fe1afdfd57209bfa7be4b74b35244d9da746f7c24cb9cc6b07","tests/try_build/pass/features/complex-expressions/alternate_exprs_exhaustive_with_range.rs":"ff3acaca9e2fc9a094e302da4fed7ecb4f540b10ac1850bd10da06d68bf7d426","tests/try_build/pass/features/complex-expressions/alternate_exprs_non_exhaustive_with_range.rs":"52e055913758d178d1575f1fe6c43c515879cdeb66b817ba971c2aa9d9ec2e1f","tests/try_from_primitive.rs":"84433eda41cbf2cb4799f17470d53ddcd063bba76f19ff348e0c9c308794dd08","tests/unsafe_from_primitive.rs":"2bdecff6f391d949683c571bca968ee2d8d62b616d3135689281b92e72bb1bd0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"27279d5dc0165a28669dc707d24e718286e1a86738337cd5e94fefd3174c1325","Android.bp":"87242f3c96bfceb06fc911b24277f7358d48f0139550e44a67f8c183dc1c4e01","Cargo.toml":"fcc2288aef6aa2c30513da48df6f1f2962af12abf2123ce923d6858f81124516","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-BSD":"12362f4576bbcbfa112abed949e628b52162b21db89c332550bf3f2e2f6075b9","METADATA":"e637a6a89c9645f618ca7d6c049924e02b56027501641429decee8027a216665","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8436e0fa927808e211171c7b086f5001b742b9ea6673ccf7ac15ca9cd0a2a7d6","cargo_embargo.json":"513f06b1f39e3f9aaabbebac0b427376b3dd80a7286cf43bfdf5436d4151c696","src/lib.rs":"ec4b658298ce55ef2186a442227cb146ef56c6607c785994ee17706de0272931","tests/default.rs":"a791182b0cc3e3f68dc6e17becd5cd188b70c5987fc19373ebb941df068cf24c","tests/from_primitive.rs":"bd3b8a72ba68b29be59f7dc6ab666b55ca02cef7bbce4899d19401fa73f8eb2f","tests/into_primitive.rs":"f5c0c69659a1bb887684dbf5a1418466a9babe8e685a867a3f205d8ffceb402b","tests/renamed_num_enum.rs":"c157d43bf5518da8ce68071b34636cf72e7b42938e9a6060529dc3f4cddd42e3","tests/try_build.rs":"53823f5e9cd99bf916552d4fada295ab19eb655426060445cc274ea9c08443f0","tests/try_build/compile_fail/alternative_clashes_with_its_discriminant.rs":"d3cf27088a7e8d3d77ae6e5afc31da1d2afd954264d6579299be0b73fdeb923c","tests/try_build/compile_fail/alternative_clashes_with_its_discriminant.stderr":"1109c4a3b6afa5b84ff4979bf5dee50550ddecc67df51876b136011c5572313e","tests/try_build/compile_fail/alternative_clashes_with_variant.rs":"721ba080514727244aa915a571f2b78540d69c057e2aaefee8b88cc715e37d3b","tests/try_build/compile_fail/alternative_clashes_with_variant.stderr":"1715624d1e55ce998ace6ace5b8edbef8628f716f2d2912361474922a608bff3","tests/try_build/compile_fail/alternative_clashes_with_variant_out_of_order.rs":"7498dca688b9fec84ee9e5af990947442bb61355a572f7d3213c6c1f7db8775f","tests/try_build/compile_fail/alternative_clashes_with_variant_out_of_order.stderr":"2c1e55fdeb20490a88c1cbdb5d21d2fee7550c147ed17a2b3c14cd4e7110be6a","tests/try_build/compile_fail/alternative_exprs.rs":"6e667fc638a4681b762b2d0e6158102780a246e88753fdec5cdc426952b7554c","tests/try_build/compile_fail/alternative_exprs.stderr":"ce0cbd84225b65955e85a1ff010572e3a3d05897fc801fab240d0c1a08530a9f","tests/try_build/compile_fail/catch_all_multiple_fields.rs":"e73dc2c43148646f7f2ab08b344f350e687965c8a2988e53d726c7f7347b4f46","tests/try_build/compile_fail/catch_all_multiple_fields.stderr":"7a5934fbb05cb7050468ec8a7bd4a193a49567d9dc52213d8af8a562a2e4d583","tests/try_build/compile_fail/catch_all_non_tuple.rs":"29b4cd93ce0af204043cf23146e2525f796a8efbbae2a8efe50f75c6df89b0af","tests/try_build/compile_fail/catch_all_non_tuple.stderr":"930bef67238f6a89488bbadd07c54ed362a0385cadda2ca89d8de30992f52872","tests/try_build/compile_fail/catch_all_type_mismatch.rs":"4950955198746d6bed52260d32b250450345b2ece772d93ce22c3d49376db9b6","tests/try_build/compile_fail/catch_all_type_mismatch.stderr":"b5e3820abe7ca0f65bf8898228749a91bbf8b0fe0a8d11b9822415400de49d8d","tests/try_build/compile_fail/conflicting_default.rs":"637f1b709cb6146a1ca4b8e242846945ee9c7f843adf69e630d051109188558b","tests/try_build/compile_fail/conflicting_default.stderr":"4e8a1055dadb869d5d0ec0c69ab3a584f74f75c1d3025a064a72ae21856af94d","tests/try_build/compile_fail/conflicting_derive.rs":"039c014a4b906bf35ad0a1af7c320205cec87730beb26426cd5a6146866d18e6","tests/try_build/compile_fail/conflicting_derive.stderr":"edf52938833cbc14792d869d594c6e1033e875500d3cd9147d0aefe396dfad9f","tests/try_build/compile_fail/custom_error_type_parsing.rs":"27b5d80b8f9577477c5cf28585fc1cd8e63ed6e7bb792dfc95046c87c3b69cfa","tests/try_build/compile_fail/custom_error_type_parsing.stderr":"f6db9523942cf1f6a5a909a61f0b4eae517d63e54b921710439e9c1dd434c5e1","tests/try_build/compile_fail/default_and_catch_all.rs":"355adfb5684bd14619e2dabd59d74006ec3d8eb792c3849b5eadb26e110ee181","tests/try_build/compile_fail/default_and_catch_all.stderr":"0ba0da30237704638339db3b55954dd93c1aadc64fa52ca28bbceb3d98cc8641","tests/try_build/compile_fail/default_and_catch_all_alt.rs":"e4ec57672bd0f4680a655f4ac575642ff158fa55ddb3cb542447142ecaf41bb3","tests/try_build/compile_fail/default_and_catch_all_alt.stderr":"75d6927be6ba66fb52a5d3f1db24270164c482caebce7b32887e6e381f83d190","tests/try_build/compile_fail/default_and_catch_all_same_variant.rs":"c0e62b1db9375f61f47d9a69899d7bcdc9b39d32a0550ea907d55a53915fddf0","tests/try_build/compile_fail/default_and_catch_all_same_variant.stderr":"9c3122f574a81ff55f40c135146428ac7c37d130d090bc02fe4c3b1f042b667d","tests/try_build/compile_fail/default_and_catch_all_same_variant_alt.rs":"7218ce2968e63242dc0c275ddf3ededae8b7a79cd54f68847f3b0523b3557729","tests/try_build/compile_fail/default_and_catch_all_same_variant_alt.stderr":"c443cc2b1acc8ba63c85889b8d6c8e5c4dd7b9f528bcc6ff5e4b34efed8393c1","tests/try_build/compile_fail/features/!complex-expressions/alternate_exprs_with_range.rs":"ff3acaca9e2fc9a094e302da4fed7ecb4f540b10ac1850bd10da06d68bf7d426","tests/try_build/compile_fail/features/!complex-expressions/alternate_exprs_with_range.stderr":"e6be1f1d34c1711f1329cab8e117de245d55944f4df44a791cea322ff4893566","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_lower_bound.rs":"5f24621e1251a6d6edca2f9f4ebf79222357091aa1e0dc7aa8a8908833cb71aa","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_lower_bound.stderr":"acb93c8f087769ce828e48712d138e19adfc70238a5244e6fd7c6fda579ce435","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_upper_bound.rs":"586b480c3a944999851d23e432955d965230412de38dcaf8a4a65050bc435752","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_missing_upper_bound.stderr":"5bc530f2c4c03accaeee24828863b108e35fc45cece30816861e6483aa703381","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_lower_bound.rs":"07bacb93aac8f75d7402459c705b22789f7dbb4e5e76cecd7286ada8971548df","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_lower_bound.stderr":"d450867b470c84f0ea9edead682c3f17dc07e974f9e60d7149e0d1eb01837e08","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_upper_bound.rs":"8d52a5d23f3988cc2b76956a2908a168ff03c3775511b6d8290dd6264760427e","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_nonlit_upper_bound.stderr":"ae6befa435ff9ff30c5973b31eb80aabbdd51d82b76b586f9fd28738bea1d898","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_swapped_bounds.rs":"26c539fb1fb9e86fdf2d1133a9d04949f70fbbf49965e6054d28d8aebc9b4aab","tests/try_build/compile_fail/features/complex-expressions/alternate_exprs_range_swapped_bounds.stderr":"62814d9c28c9fc3b5d44bf971571514e5c6c9d5f016f22227d7da1a51515da79","tests/try_build/compile_fail/from_unchecked_deprecated_warning.rs":"ebd6624af0a9756306c08a7d590ab5b4dbaf56ee76ad72fb5276210571ca3349","tests/try_build/compile_fail/from_unchecked_deprecated_warning.stderr":"3dce0173fd5ecf207bb05ae3fff3f4c12f2e806059ed4ef03223f7dbae087064","tests/try_build/compile_fail/garbage_attribute.rs":"8a262820e2d09e8eb42f49d64f75b351d3256196c98898c2642e604e46390063","tests/try_build/compile_fail/garbage_attribute.stderr":"643898529b51f46c6ff672cf98768d8ec586ad5a96c19c80fdc639fd8be37c36","tests/try_build/compile_fail/missing_default.rs":"678696bcfbd0f878c27bc9ce38aee75b5eba20901e4fba788ae629bfc7100375","tests/try_build/compile_fail/missing_default.stderr":"a5f819c85dd13b95f95dc1d95ad422f5b9554942bf5410f236bae627a5863451","tests/try_build/compile_fail/missing_repr.rs":"a5ed9d58b915d17c80bfa3ee614ee215b1c6be4ee16b9232d1f4f1ced89f7558","tests/try_build/compile_fail/missing_repr.stderr":"809af504b92598e35bc72fb86840bc462829e5fc5ffcf87c01a804463da7d091","tests/try_build/compile_fail/multiple_catch_all.rs":"3d164ce13908376095fb1816472841b151ac8206ee0bd572ea5dc48d12a53edd","tests/try_build/compile_fail/multiple_catch_all.stderr":"eb4b69aec406286de2a37e0d0cbd1167d29648635d543dba57c82526cfe8a66c","tests/try_build/compile_fail/multiple_catch_all_same_variant.rs":"76374ab9d5a10ff8ec36fbd2b977f884836955f5d6f2d245926bf92550b18437","tests/try_build/compile_fail/multiple_catch_all_same_variant.stderr":"199393dd85f88d683027b33f3464c1b31a5e0a145efa0f46a3ca4080622d114c","tests/try_build/compile_fail/multiple_defaults.rs":"e50d07c373c82a9575d018facc236949f58208ae1fa32300fa879e4eb868d7e6","tests/try_build/compile_fail/multiple_defaults.stderr":"6492e1ca6a90dcbe0da8da804dcadf7f1c4847478f8e75145f4fbc20cb598a68","tests/try_build/compile_fail/multiple_defaults_different_kinds.rs":"b82d341abf3fba34fb73e27d84ae74912c7d5eecf88932ce43e5d5818ada0110","tests/try_build/compile_fail/multiple_defaults_different_kinds.stderr":"7bfc119a7199d24b5b4ce120797fe6f3a3df97029396a9a614fdb89cecdb1f06","tests/try_build/compile_fail/multiple_num_enum_defaults.rs":"88563892ae17701c0484a898ab7d89fd43827ee811726539cec79cee28774e28","tests/try_build/compile_fail/multiple_num_enum_defaults.stderr":"96bc3135acddac50d2aab0431cbb5121eddf1ffe22b2f1b789d407fcde0c6451","tests/try_build/compile_fail/repr_c.rs":"cd5465393786f717e1cf8e060e632dfdf5f4b169780efa9d976e2b785f8d9cab","tests/try_build/compile_fail/repr_c.stderr":"62a9b420bd888856d94e5872ca3c2526dec857a037f263bead773310827ed319","tests/try_build/compile_fail/variants_with_fields.rs":"8599a5d09f2c1b4b1b59e331c1043144ea8bec8ac6b2def8d1b93ca630c469bc","tests/try_build/compile_fail/variants_with_fields.stderr":"614857a0007365c877e6f58521167c344546ac6e6a1c07cc2fd6f3141694e786","tests/try_build/pass/default_and_alternatives.rs":"126274d9505f6f9861b458fa9bd2f695925932489cd0874378512dc15971f3fb","tests/try_build/pass/exhaustive_enum_try_from.rs":"4992849e8167b07fed0b5d8e457edd7a39d09c86ca40c7859bca332b6a2218cf","tests/try_build/pass/exhaustive_enum_via_alternatives.rs":"629364e22dcb78139041676a2e74f4ca649a369a52e23f7adf7ece531213f984","tests/try_build/pass/exhaustive_enum_via_default.rs":"2a603f5a3938b2fe1afdfd57209bfa7be4b74b35244d9da746f7c24cb9cc6b07","tests/try_build/pass/features/complex-expressions/alternate_exprs_exhaustive_with_range.rs":"ff3acaca9e2fc9a094e302da4fed7ecb4f540b10ac1850bd10da06d68bf7d426","tests/try_build/pass/features/complex-expressions/alternate_exprs_non_exhaustive_with_range.rs":"52e055913758d178d1575f1fe6c43c515879cdeb66b817ba971c2aa9d9ec2e1f","tests/try_from_primitive.rs":"84433eda41cbf2cb4799f17470d53ddcd063bba76f19ff348e0c9c308794dd08","tests/unsafe_from_primitive.rs":"2bdecff6f391d949683c571bca968ee2d8d62b616d3135689281b92e72bb1bd0"}}
\ No newline at end of file
diff --git a/crates/num_enum/Android.bp b/crates/num_enum/Android.bp
index bf72f4e..1188142 100644
--- a/crates/num_enum/Android.bp
+++ b/crates/num_enum/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/num_enum/cargo_embargo.json b/crates/num_enum/cargo_embargo.json
index 1bbaa25..bc7882c 100644
--- a/crates/num_enum/cargo_embargo.json
+++ b/crates/num_enum/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": false
-}
+ "tests": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/num_enum_derive/.android-checksum.json b/crates/num_enum_derive/.android-checksum.json
index c87313c..6196a7e 100644
--- a/crates/num_enum_derive/.android-checksum.json
+++ b/crates/num_enum_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7dd7d279a8ef1ec361305f08e6844b761ea5a13ca56c60364f1ea9765823b5f8","Android.bp":"e8e887352c63803519cc567467b47dcd94356b7e0d6e78fc54a4ad543e2fec0f","Cargo.toml":"ea3e8c4600b390d9d9cec07c483a6586d588d37e7efe5b0a902a22ee889826e3","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-BSD":"12362f4576bbcbfa112abed949e628b52162b21db89c332550bf3f2e2f6075b9","METADATA":"5e62b631709d76bc8315f5182944d1258525ac2e35310661118a1e2f780d0290","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8436e0fa927808e211171c7b086f5001b742b9ea6673ccf7ac15ca9cd0a2a7d6","cargo_embargo.json":"d893ed16ceab73ef6e796b57db9c400beb8867e86dc066e6eb5e6bc1750ba4d5","src/enum_attributes.rs":"c0b36b47990ec32b53988fceabae57663d67a712029f05e4e5417ada21208962","src/lib.rs":"07763cdfdb3e610adab7f9b297f3b2a1f8de8f39c6b3a2f334ee4e511b222ba3","src/parsing.rs":"a450302e7871801fe25c2d4e53649f4cb800dab5a527619cd528644ab0164b02","src/utils.rs":"33051658b6b677cf84ac90add1ab59b5258127a8e95b411b6ee1e964f693eb61","src/variant_attributes.rs":"80bae5dbf623efea5cb3722e4d38f1293514addc4aa80af999e6c25ac0f73e38"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7dd7d279a8ef1ec361305f08e6844b761ea5a13ca56c60364f1ea9765823b5f8","Android.bp":"6ae75c8e8d51de83f3ac3b5b6eb428cc8766a8c950053274ca5fe4d4208b15eb","Cargo.toml":"ea3e8c4600b390d9d9cec07c483a6586d588d37e7efe5b0a902a22ee889826e3","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-BSD":"12362f4576bbcbfa112abed949e628b52162b21db89c332550bf3f2e2f6075b9","METADATA":"5e62b631709d76bc8315f5182944d1258525ac2e35310661118a1e2f780d0290","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8436e0fa927808e211171c7b086f5001b742b9ea6673ccf7ac15ca9cd0a2a7d6","cargo_embargo.json":"110cd78fa59d7557f3f8ca7928f6abf349496e1dbce16c6c3ef2ab02173c41dc","src/enum_attributes.rs":"c0b36b47990ec32b53988fceabae57663d67a712029f05e4e5417ada21208962","src/lib.rs":"07763cdfdb3e610adab7f9b297f3b2a1f8de8f39c6b3a2f334ee4e511b222ba3","src/parsing.rs":"a450302e7871801fe25c2d4e53649f4cb800dab5a527619cd528644ab0164b02","src/utils.rs":"33051658b6b677cf84ac90add1ab59b5258127a8e95b411b6ee1e964f693eb61","src/variant_attributes.rs":"80bae5dbf623efea5cb3722e4d38f1293514addc4aa80af999e6c25ac0f73e38"}}
\ No newline at end of file
diff --git a/crates/num_enum_derive/Android.bp b/crates/num_enum_derive/Android.bp
index f00c8e8..7494dfe 100644
--- a/crates/num_enum_derive/Android.bp
+++ b/crates/num_enum_derive/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/num_enum_derive/cargo_embargo.json b/crates/num_enum_derive/cargo_embargo.json
index ee7c12d..163427c 100644
--- a/crates/num_enum_derive/cargo_embargo.json
+++ b/crates/num_enum_derive/cargo_embargo.json
@@ -8,5 +8,6 @@
"libproc_macro_crate"
]
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/oorandom/.android-checksum.json b/crates/oorandom/.android-checksum.json
index aed69fa..d8b29ce 100644
--- a/crates/oorandom/.android-checksum.json
+++ b/crates/oorandom/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"18ba2bf642ff2c0be3c7b918d393aafa4cd1efba7919b4a836908ccca043222c","Android.bp":"d5dc42c5e5b241d05494636e557904863e9623a7dc4c0d44ccb798e8f4e7fab8","Cargo.toml":"3db6d8f033ec525aa4eeba05d20fa12c0f838081c60d9aa10c955c5011f2ee20","LICENSE":"cf038daf949b0b08f84dcd6af95d9d73cf28bc08f2c3f2462eb07952d0a9de44","LICENSE-MIT":"cf038daf949b0b08f84dcd6af95d9d73cf28bc08f2c3f2462eb07952d0a9de44","METADATA":"1622d921c3ed33c86be2a1d9675d2c383483118b72d77e5ccf47b1a4fe07e1e7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dbd1cd4288be9057bdccf1886ee9c22304c6e500840390b99be14f1238dab752","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"167eee74dcab711e09fcda12604ab09802ff64f82d4e1be97d8206f8bc6b6ab7","tarpaulin-report.html":"db5ca3f1760b858085f73cc39600fd34bcdd3d6292e83880a88ddb4fcf1d5067"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"18ba2bf642ff2c0be3c7b918d393aafa4cd1efba7919b4a836908ccca043222c","Android.bp":"200190ecfeebc2f93a1792afb255b8be777bdff6751e4dd2a76d0bdb89c69ef8","Cargo.toml":"3db6d8f033ec525aa4eeba05d20fa12c0f838081c60d9aa10c955c5011f2ee20","LICENSE":"cf038daf949b0b08f84dcd6af95d9d73cf28bc08f2c3f2462eb07952d0a9de44","LICENSE-MIT":"cf038daf949b0b08f84dcd6af95d9d73cf28bc08f2c3f2462eb07952d0a9de44","METADATA":"1622d921c3ed33c86be2a1d9675d2c383483118b72d77e5ccf47b1a4fe07e1e7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dbd1cd4288be9057bdccf1886ee9c22304c6e500840390b99be14f1238dab752","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"167eee74dcab711e09fcda12604ab09802ff64f82d4e1be97d8206f8bc6b6ab7","tarpaulin-report.html":"db5ca3f1760b858085f73cc39600fd34bcdd3d6292e83880a88ddb4fcf1d5067"}}
\ No newline at end of file
diff --git a/crates/oorandom/Android.bp b/crates/oorandom/Android.bp
index ba579af..0f11e41 100644
--- a/crates/oorandom/Android.bp
+++ b/crates/oorandom/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/oorandom/cargo_embargo.json b/crates/oorandom/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/oorandom/cargo_embargo.json
+++ b/crates/oorandom/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/open-enum-derive/.android-checksum.json b/crates/open-enum-derive/.android-checksum.json
index 203a27d..65d1601 100644
--- a/crates/open-enum-derive/.android-checksum.json
+++ b/crates/open-enum-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9ae9d0a6e0fd598e4fe78d70fcad77efca60633c5ba1b7929d2ac69336801628","Android.bp":"726fe633040343532a45cbb35fbd7ce5499cb6e20845374986f66c71e350ccac","Cargo.toml":"386ebecc5d800cf1948e6bf153af7736c1cb76d74dc343e53b058879e8844956","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"f4016ab6d63399bfca5d95fda255ceeb2d7b8f56d351dceaf1f383923f6f9ffa","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/config.rs":"50cea8e39d5718ab0ffef5c748dd234d8062435e237d595e2e16a223fc4e6a48","src/discriminant.rs":"20a13bd4e8055152b0fc95f2d7ba95227443984464f534540a05ad851f45ce10","src/lib.rs":"72f5c06aefbac100ace380e3944c8de7a11b7cef84202a8dcec2da24409ad843","src/repr.rs":"cb8eabfdae5daf2b42979565af3179b85746b14594cea983968b20c7d75d0067"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9ae9d0a6e0fd598e4fe78d70fcad77efca60633c5ba1b7929d2ac69336801628","Android.bp":"1bad236c6f40ea6fff683f130de17dcb374ba773002446abe99efa1968642a6b","Cargo.toml":"386ebecc5d800cf1948e6bf153af7736c1cb76d74dc343e53b058879e8844956","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"f4016ab6d63399bfca5d95fda255ceeb2d7b8f56d351dceaf1f383923f6f9ffa","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/config.rs":"50cea8e39d5718ab0ffef5c748dd234d8062435e237d595e2e16a223fc4e6a48","src/discriminant.rs":"20a13bd4e8055152b0fc95f2d7ba95227443984464f534540a05ad851f45ce10","src/lib.rs":"72f5c06aefbac100ace380e3944c8de7a11b7cef84202a8dcec2da24409ad843","src/repr.rs":"cb8eabfdae5daf2b42979565af3179b85746b14594cea983968b20c7d75d0067"}}
\ No newline at end of file
diff --git a/crates/open-enum-derive/Android.bp b/crates/open-enum-derive/Android.bp
index b1b74c4..c28beec 100644
--- a/crates/open-enum-derive/Android.bp
+++ b/crates/open-enum-derive/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/open-enum-derive/cargo_embargo.json b/crates/open-enum-derive/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/open-enum-derive/cargo_embargo.json
+++ b/crates/open-enum-derive/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/open-enum/.android-checksum.json b/crates/open-enum/.android-checksum.json
index eccbb5a..133faf9 100644
--- a/crates/open-enum/.android-checksum.json
+++ b/crates/open-enum/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8f554bfc68b05f539a372f349253cc66e8e22f02281c30aa424bd999d6e682f8","Android.bp":"73a0c19b8a75f3b7a01540df4d15b29fb91379078dcd0cc85d9dd519622a7df6","Cargo.lock":"a76eeea5ef15f4c1385a6bca36d9140757e37f4bf27a0d01cd4c883f8ff42ebc","Cargo.toml":"df6f3802a7932c51fbac457310ca2580cfb61b787ddbf4001f89c732be3a41cd","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"55050f00ef551ac56a4e5bc8c6bdf075f8accc7ecd56a63338beca4da8731db4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"8079757b714383232a6eec24b702eac8a9171b7af9f02570e33c6e6b7ef9d522","src/lib.rs":"75c51f4ca2951e9b79eebc3f6cf99bbc2b3abe46eb7503dcd7e4489d85d29ab8","src/test-lints.rs":"bd5f115c0d7905ddbec6b0da5518531147a132afab4c2d8ccb47f13beb63ce7e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8f554bfc68b05f539a372f349253cc66e8e22f02281c30aa424bd999d6e682f8","Android.bp":"ffecee983fc458c683d962a0b1743f929b7c465c992589a8856eb120b9189231","Cargo.lock":"a76eeea5ef15f4c1385a6bca36d9140757e37f4bf27a0d01cd4c883f8ff42ebc","Cargo.toml":"df6f3802a7932c51fbac457310ca2580cfb61b787ddbf4001f89c732be3a41cd","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"55050f00ef551ac56a4e5bc8c6bdf075f8accc7ecd56a63338beca4da8731db4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"af1902586e8a267dc37fe722647f2ec4afbe55de2786ad17e07dc6a7d4be66f0","src/lib.rs":"75c51f4ca2951e9b79eebc3f6cf99bbc2b3abe46eb7503dcd7e4489d85d29ab8","src/test-lints.rs":"bd5f115c0d7905ddbec6b0da5518531147a132afab4c2d8ccb47f13beb63ce7e"}}
\ No newline at end of file
diff --git a/crates/open-enum/Android.bp b/crates/open-enum/Android.bp
index 80a49b8..9a7486a 100644
--- a/crates/open-enum/Android.bp
+++ b/crates/open-enum/Android.bp
@@ -29,4 +29,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/open-enum/cargo_embargo.json b/crates/open-enum/cargo_embargo.json
index 0b9badc..c2332af 100644
--- a/crates/open-enum/cargo_embargo.json
+++ b/crates/open-enum/cargo_embargo.json
@@ -1,9 +1,10 @@
{
"run_cargo": false,
- "module_blocklist" : [
+ "module_blocklist": [
"test_lints"
],
"features": [
"std"
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/openssl-macros/.android-checksum.json b/crates/openssl-macros/.android-checksum.json
index 9ffc2c9..d5dd41e 100644
--- a/crates/openssl-macros/.android-checksum.json
+++ b/crates/openssl-macros/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ff1316dd0ecf02f2ced9fafd10191c9747e660109fa71fa732725f2733141dcd","Android.bp":"b0a39521727d3015d096c38e8ef070a6b52c621c583d2b0a0e26a5944f012cb1","Cargo.toml":"7fb5232b58f1e2eaaf30eb021026cdedf013176b655578dac38140b9286ce842","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"777f76ce10afaa48cad00d7bbc08dd05855a5cb6665aecf0ecacf658afd50f01","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"e44a8a1d69d43d9fa3235eef2f9186e58c04e127e2ef602bd6453655591a9736","rules.mk":"5d2a7fbd618fc57ecee3f46279e54808542ffc7f7d8b7161807c2451cf5a44c6","src/lib.rs":"3a36900018ca347d4a8d566d2c342ae92e429c1bb54353c1075cc7eb5a7ac27a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ff1316dd0ecf02f2ced9fafd10191c9747e660109fa71fa732725f2733141dcd","Android.bp":"b0a39521727d3015d096c38e8ef070a6b52c621c583d2b0a0e26a5944f012cb1","Cargo.toml":"7fb5232b58f1e2eaaf30eb021026cdedf013176b655578dac38140b9286ce842","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"777f76ce10afaa48cad00d7bbc08dd05855a5cb6665aecf0ecacf658afd50f01","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"8af0d64e40cb9d29a95a8792d1f0482fb3f1b539fabc50c3cf278e1d0038fb05","rules.mk":"5d2a7fbd618fc57ecee3f46279e54808542ffc7f7d8b7161807c2451cf5a44c6","src/lib.rs":"3a36900018ca347d4a8d566d2c342ae92e429c1bb54353c1075cc7eb5a7ac27a"}}
\ No newline at end of file
diff --git a/crates/openssl-macros/cargo_embargo.json b/crates/openssl-macros/cargo_embargo.json
index 2bf25a8..b79405c 100644
--- a/crates/openssl-macros/cargo_embargo.json
+++ b/crates/openssl-macros/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/os_pipe/.android-checksum.json b/crates/os_pipe/.android-checksum.json
new file mode 100644
index 0000000..4b607fd
--- /dev/null
+++ b/crates/os_pipe/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"332966fa9166deb40188173f331efbd8b8ec8d4e7ef2a36bf06f2d38cee74a7c","Android.bp":"c094d53c1c5ae7804af8b29766c83b810ab3d601650dda44d06248da1ad73d96","Cargo.lock":"c98478728e0cfd51119216578f099f5720717a4f2473e9993a40b84d73f51f10","Cargo.toml":"4dae1297d50ba42ecc996b9b4c188ac81b0cfded7a99df3aa28c2f0db6835ef3","LICENSE":"29856856b1e210364711a1394960b7ffc52417a1ffa353f4b498400205e190fa","METADATA":"fb89c4a453c4585efe06426155ce03385d015a71aa472c779277a072f1de9748","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"85a1fbee4a0c0b9faede24b11a6bb09d43acec3962835208f3fdf5a15b43ef4b","README.tpl":"437e5a10c286870cb80bd772fba3bffae14371068fd4b524db6411e9a351abec","cargo_embargo.json":"b1692e5e5d61e6b165d64e7b74cbbf4017a5b158c08b646eb1ebe9ba5c704235","src/bin/cat.rs":"9119bbddf5f21022afc4718b4c2e1e52d9d114877a432e4d47342319b907c24e","src/bin/cat_both.rs":"a794eb7b55bba5eb130b4ae0f20d11a833259d40bc2075ad6f7c34bf00454f00","src/bin/swap.rs":"7bafe566b974144f42a1aca3df541e5c40533cd11b9244f4c777df317a94ae46","src/lib.rs":"7f33e0b9946c4bcb4152766d3350d74207a03596262ecf965ac8da136f7ca01f","src/unix.rs":"f7caadaf9ee0fbbec3bb7ac52893bb900386fc4a28857b61c90c127b8fb75d7d","src/windows.rs":"7d9ebb2118feeed8370e830f7e7266774d5b950b9223a29da7b30a07424d5538"}}
\ No newline at end of file
diff --git a/crates/os_pipe/.cargo-checksum.json b/crates/os_pipe/.cargo-checksum.json
new file mode 100644
index 0000000..9063dec
--- /dev/null
+++ b/crates/os_pipe/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"4f24f0272f01ebe33055ea8561b1f9c566721cf505025b7f276678a72e3a03c6","Cargo.toml":"46db76edca2d0358992750701d9c309b032a13e5abaf2ffa65f7df83746915f1","LICENSE":"8f71659370c5268d9a1dc962a46232540e8fca63462586d8efaa95aab492a208","README.md":"2a063cdd2b7dfaf77587d7ad41fe762295ca791e34d36fa7af7db21b2b702cac","README.tpl":"dbb27f7af2c738afc6954312d46186d64bcd5540cc577078e57d18b9aff52d88","src/bin/cat.rs":"ec54480a73634148b0ee26f6a1a3c912ebfb85ecb08cdab17a325dfd21881a64","src/bin/cat_both.rs":"667e0d0df192399009a33f9f573220ec86c80cd4090e99809d1d7e4bfef8e211","src/bin/swap.rs":"69eca65dd6e94e8c530160108f20ab7ccb1dcf41392edafabbca470ee814206b","src/lib.rs":"99a066f2083bf0656394d6a1876d43a543603d8ea2c36e748f3dd5d72ef1c68e","src/unix.rs":"8a7ef11569aadf8ed610cb2411fa88a583a5973db3978c6e624e9c0e99b470a6","src/windows.rs":"cef262c40e365c12c6c52c60f02e1de350c190f85d8049f64c79880a42f876a3"},"package":"5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982"}
\ No newline at end of file
diff --git a/crates/os_pipe/Android.bp b/crates/os_pipe/Android.bp
new file mode 100644
index 0000000..bb05c73
--- /dev/null
+++ b/crates/os_pipe/Android.bp
@@ -0,0 +1,95 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_os_pipe_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_os_pipe_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-MIT"],
+ license_text: ["LICENSE"],
+}
+
+rust_binary {
+ name: "cat_both",
+ host_supported: true,
+ crate_name: "cat_both",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.2.1",
+ crate_root: "src/bin/cat_both.rs",
+ edition: "2021",
+ rustlibs: [
+ "liblibc",
+ "libos_pipe",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
+
+rust_library {
+ name: "libos_pipe",
+ host_supported: true,
+ crate_name: "os_pipe",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.2.1",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ rustlibs: ["liblibc"],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
+
+rust_binary {
+ name: "os_pipe_cat",
+ host_supported: true,
+ crate_name: "cat",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.2.1",
+ crate_root: "src/bin/cat.rs",
+ edition: "2021",
+ rustlibs: [
+ "liblibc",
+ "libos_pipe",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
+
+rust_binary {
+ name: "swap",
+ host_supported: true,
+ crate_name: "swap",
+ cargo_env_compat: true,
+ cargo_pkg_version: "1.2.1",
+ crate_root: "src/bin/swap.rs",
+ edition: "2021",
+ rustlibs: [
+ "liblibc",
+ "libos_pipe",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/os_pipe/Cargo.lock b/crates/os_pipe/Cargo.lock
new file mode 100644
index 0000000..b51b128
--- /dev/null
+++ b/crates/os_pipe/Cargo.lock
@@ -0,0 +1,90 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "os_pipe"
+version = "1.2.1"
+dependencies = [
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
diff --git a/crates/os_pipe/Cargo.toml b/crates/os_pipe/Cargo.toml
new file mode 100644
index 0000000..fffb64e
--- /dev/null
+++ b/crates/os_pipe/Cargo.toml
@@ -0,0 +1,63 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.63"
+name = "os_pipe"
+version = "1.2.1"
+authors = ["Jack O'Connor"]
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "a cross-platform library for opening OS pipes"
+documentation = "https://docs.rs/os_pipe"
+readme = "README.md"
+keywords = [
+ "pipe",
+ "pipe2",
+ "createpipe",
+ "dup",
+]
+license = "MIT"
+repository = "https://github.com/oconnor663/os_pipe.rs"
+
+[lib]
+name = "os_pipe"
+path = "src/lib.rs"
+
+[[bin]]
+name = "cat"
+path = "src/bin/cat.rs"
+
+[[bin]]
+name = "cat_both"
+path = "src/bin/cat_both.rs"
+
+[[bin]]
+name = "swap"
+path = "src/bin/swap.rs"
+
+[features]
+io_safety = []
+
+[target."cfg(not(windows))".dependencies.libc]
+version = "0.2.62"
+
+[target."cfg(windows)".dependencies.windows-sys]
+version = "0.59.0"
+features = [
+ "Win32_Foundation",
+ "Win32_System_Pipes",
+ "Win32_Security",
+]
diff --git a/crates/os_pipe/LICENSE b/crates/os_pipe/LICENSE
new file mode 100644
index 0000000..72dc60d
--- /dev/null
+++ b/crates/os_pipe/LICENSE
@@ -0,0 +1,19 @@
+The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/crates/os_pipe/METADATA b/crates/os_pipe/METADATA
new file mode 100644
index 0000000..27dc4d8
--- /dev/null
+++ b/crates/os_pipe/METADATA
@@ -0,0 +1,17 @@
+name: "os_pipe"
+description: "a cross-platform library for opening OS pipes"
+third_party {
+ version: "1.2.1"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 21
+ }
+ homepage: "https://crates.io/crates/os_pipe"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/os_pipe/os_pipe-1.2.1.crate"
+ version: "1.2.1"
+ }
+}
diff --git a/crates/os_pipe/MODULE_LICENSE_MIT b/crates/os_pipe/MODULE_LICENSE_MIT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/os_pipe/MODULE_LICENSE_MIT
diff --git a/crates/os_pipe/README.md b/crates/os_pipe/README.md
new file mode 100644
index 0000000..ce3ba93
--- /dev/null
+++ b/crates/os_pipe/README.md
@@ -0,0 +1,113 @@
+# os_pipe.rs [](https://github.com/oconnor663/os_pipe.rs/actions) [](https://crates.io/crates/os_pipe) [](https://docs.rs/os_pipe)
+
+A cross-platform library for opening OS pipes, like those from
+[`pipe`](https://man7.org/linux/man-pages/man2/pipe.2.html) on Linux
+or
+[`CreatePipe`](https://docs.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe)
+on Windows. The Rust standard library provides
+[`Stdio::piped`](https://doc.rust-lang.org/std/process/struct.Stdio.html#method.piped)
+for simple use cases involving child processes, but it doesn't
+support creating pipes directly. This crate fills that gap.
+
+- [Docs](https://docs.rs/os_pipe)
+- [Crate](https://crates.io/crates/os_pipe)
+- [Repo](https://github.com/oconnor663/os_pipe.rs)
+
+## Common deadlocks related to pipes
+
+When you work with pipes, you often end up debugging a deadlock at
+some point. These can be confusing if you don't know why they
+happen. Here are two things you need to know:
+
+1. Pipe reads will block waiting for input as long as there's at
+ least one writer still open. **If you forget to close a writer,
+ reads will block forever.** This includes writers that you give
+ to child processes.
+2. Pipes have an internal buffer of some fixed size. On Linux for
+ example, pipe buffers are 64 KiB by default. When the buffer is
+ full, writes will block waiting for space. **If the buffer is
+ full and there aren't any readers, writes will block forever.**
+
+Deadlocks caused by a forgotten writer usually show up immediately,
+which makes them relatively easy to fix once you know what to look
+for. (See "Avoid a deadlock!" in the example code below.) However,
+deadlocks caused by full pipe buffers are trickier. These might only
+show up for larger inputs, and they might be timing-dependent or
+platform-dependent. If you find that writing to a pipe deadlocks
+sometimes, think about who's supposed to be reading from that pipe,
+and whether that thread or process might be blocked on something
+else. For more on this, see the [Gotchas
+Doc](https://github.com/oconnor663/duct.py/blob/master/gotchas.md#using-io-threads-to-avoid-blocking-children)
+from the [`duct`](https://github.com/oconnor663/duct.rs) crate. (And
+consider whether [`duct`](https://github.com/oconnor663/duct.rs)
+might be a good fit for your use case.)
+
+## Examples
+
+Here we write a single byte into a pipe and read it back out:
+
+```rust
+use std::io::prelude::*;
+
+let (mut reader, mut writer) = os_pipe::pipe()?;
+// XXX: If this write blocks, we'll never get to the read.
+writer.write_all(b"x")?;
+let mut output = [0];
+reader.read_exact(&mut output)?;
+assert_eq!(b"x", &output);
+```
+
+This is a minimal working example, but as discussed in the section
+above, reading and writing on the same thread like this is
+deadlock-prone. If we wrote 100 KB instead of just one byte, this
+example would block on `write_all`, it would never make it to
+`read_exact`, and that would be a deadlock. Doing the read and write
+from different threads or different processes would fix the
+deadlock.
+
+For a more complex example, here we join the stdout and stderr of a
+child process into a single pipe. To do that we open a pipe, clone
+its writer, and set that pair of writers as the child's stdout and
+stderr. (This is possible because `PipeWriter` implements
+`Into<Stdio>`.) Then we can read interleaved output from the pipe
+reader. This example is deadlock-free, but note the comment about
+closing the writers.
+
+```rust
+// We're going to spawn a child process that prints "foo" to stdout
+// and "bar" to stderr, and we'll combine these into a single pipe.
+let mut command = std::process::Command::new("python");
+command.args(&["-c", r#"
+import sys
+sys.stdout.write("foo")
+sys.stdout.flush()
+sys.stderr.write("bar")
+sys.stderr.flush()
+"#]);
+
+// Here's the interesting part. Open a pipe, clone its writer, and
+// set that pair of writers as the child's stdout and stderr.
+let (mut reader, writer) = os_pipe::pipe()?;
+let writer_clone = writer.try_clone()?;
+command.stdout(writer);
+command.stderr(writer_clone);
+
+// Now start the child process running.
+let mut handle = command.spawn()?;
+
+// Avoid a deadlock! This parent process is still holding open pipe
+// writers inside the Command object, and we have to close those
+// before we read. Here we do this by dropping the Command object.
+drop(command);
+
+// Finally we can read all the output and clean up the child.
+let mut output = String::new();
+reader.read_to_string(&mut output)?;
+handle.wait()?;
+assert_eq!(output, "foobar");
+```
+
+Note that the [`duct`](https://github.com/oconnor663/duct.rs) crate
+can reproduce the example above in a single line of code, with no
+risk of deadlocks and no risk of leaking [zombie
+children](https://en.wikipedia.org/wiki/Zombie_process).
diff --git a/crates/os_pipe/README.tpl b/crates/os_pipe/README.tpl
new file mode 100644
index 0000000..97edba8
--- /dev/null
+++ b/crates/os_pipe/README.tpl
@@ -0,0 +1,3 @@
+# {{crate}}.rs [](https://github.com/oconnor663/os_pipe.rs/actions) [](https://crates.io/crates/os_pipe) [](https://docs.rs/os_pipe)
+
+{{readme}}
diff --git a/crates/os_pipe/cargo_embargo.json b/crates/os_pipe/cargo_embargo.json
new file mode 100644
index 0000000..9572847
--- /dev/null
+++ b/crates/os_pipe/cargo_embargo.json
@@ -0,0 +1,5 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29",
+ "module_name_overrides": {"cat": "os_pipe_cat"}
+}
diff --git a/crates/os_pipe/src/bin/cat.rs b/crates/os_pipe/src/bin/cat.rs
new file mode 100644
index 0000000..bc1531b
--- /dev/null
+++ b/crates/os_pipe/src/bin/cat.rs
@@ -0,0 +1,11 @@
+#![deny(warnings)]
+
+/// Windows doesn't have a native equivalent for cat, so we use this little
+/// Rust implementation instead.
+use std::io::{copy, stdin, stdout};
+
+fn main() {
+ let stdin_handle = stdin();
+ let stdout_handle = stdout();
+ copy(&mut stdin_handle.lock(), &mut stdout_handle.lock()).unwrap();
+}
diff --git a/crates/os_pipe/src/bin/cat_both.rs b/crates/os_pipe/src/bin/cat_both.rs
new file mode 100644
index 0000000..cff2f56
--- /dev/null
+++ b/crates/os_pipe/src/bin/cat_both.rs
@@ -0,0 +1,19 @@
+//! This little test binary reads stdin, and then writes what it read to both
+//! stdout and stderr, with a little tag to differentiate them. We use it to
+//! test duping the standard file descriptors.
+
+#![deny(warnings)]
+
+use std::io;
+use std::io::prelude::*;
+
+fn main() {
+ let mut input = Vec::new();
+ io::stdin().read_to_end(&mut input).unwrap();
+
+ print!("stdout: ");
+ io::stdout().write_all(&input).unwrap();
+
+ eprint!("stderr: ");
+ io::stderr().write_all(&input).unwrap();
+}
diff --git a/crates/os_pipe/src/bin/swap.rs b/crates/os_pipe/src/bin/swap.rs
new file mode 100644
index 0000000..eab016d
--- /dev/null
+++ b/crates/os_pipe/src/bin/swap.rs
@@ -0,0 +1,27 @@
+#![deny(warnings)]
+
+/// This little test binary reads stdin and write what it reads to both
+/// stdout and stderr. It depends on os_pipe's parent_* functions, and
+/// we use it to test them.
+use std::env::args_os;
+use std::ffi::OsString;
+use std::process::Command;
+
+fn main() {
+ let stdin = os_pipe::dup_stdin().unwrap();
+ let stdout = os_pipe::dup_stdout().unwrap();
+ let stderr = os_pipe::dup_stderr().unwrap();
+
+ let args: Vec<OsString> = args_os().collect();
+ let mut child = Command::new(&args[1]);
+ child.args(&args[2..]);
+
+ // Swap stdout and stderr in the child. Set stdin too, just for testing,
+ // though this should be the same as the default behavior.
+ child.stdin(stdin);
+ child.stdout(stderr);
+ child.stderr(stdout);
+
+ // Run the child. This method is kind of confusingly named...
+ child.status().unwrap();
+}
diff --git a/crates/os_pipe/src/lib.rs b/crates/os_pipe/src/lib.rs
new file mode 100644
index 0000000..f207d33
--- /dev/null
+++ b/crates/os_pipe/src/lib.rs
@@ -0,0 +1,490 @@
+//! A cross-platform library for opening OS pipes, like those from
+//! [`pipe`](https://man7.org/linux/man-pages/man2/pipe.2.html) on Linux
+//! or
+//! [`CreatePipe`](https://docs.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe)
+//! on Windows. The Rust standard library provides
+//! [`Stdio::piped`](https://doc.rust-lang.org/std/process/struct.Stdio.html#method.piped)
+//! for simple use cases involving child processes, but it doesn't
+//! support creating pipes directly. This crate fills that gap.
+//!
+//! - [Docs](https://docs.rs/os_pipe)
+//! - [Crate](https://crates.io/crates/os_pipe)
+//! - [Repo](https://github.com/oconnor663/os_pipe.rs)
+//!
+//! # Common deadlocks related to pipes
+//!
+//! When you work with pipes, you often end up debugging a deadlock at
+//! some point. These can be confusing if you don't know why they
+//! happen. Here are two things you need to know:
+//!
+//! 1. Pipe reads will block waiting for input as long as there's at
+//! least one writer still open. **If you forget to close a writer,
+//! reads will block forever.** This includes writers that you give
+//! to child processes.
+//! 2. Pipes have an internal buffer of some fixed size. On Linux for
+//! example, pipe buffers are 64 KiB by default. When the buffer is
+//! full, writes will block waiting for space. **If the buffer is
+//! full and there aren't any readers, writes will block forever.**
+//!
+//! Deadlocks caused by a forgotten writer usually show up immediately,
+//! which makes them relatively easy to fix once you know what to look
+//! for. (See "Avoid a deadlock!" in the example code below.) However,
+//! deadlocks caused by full pipe buffers are trickier. These might only
+//! show up for larger inputs, and they might be timing-dependent or
+//! platform-dependent. If you find that writing to a pipe deadlocks
+//! sometimes, think about who's supposed to be reading from that pipe,
+//! and whether that thread or process might be blocked on something
+//! else. For more on this, see the [Gotchas
+//! Doc](https://github.com/oconnor663/duct.py/blob/master/gotchas.md#using-io-threads-to-avoid-blocking-children)
+//! from the [`duct`](https://github.com/oconnor663/duct.rs) crate. (And
+//! consider whether [`duct`](https://github.com/oconnor663/duct.rs)
+//! might be a good fit for your use case.)
+//!
+//! # Examples
+//!
+//! Here we write a single byte into a pipe and read it back out:
+//!
+//! ```rust
+//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
+//! use std::io::prelude::*;
+//!
+//! let (mut reader, mut writer) = os_pipe::pipe()?;
+//! // XXX: If this write blocks, we'll never get to the read.
+//! writer.write_all(b"x")?;
+//! let mut output = [0];
+//! reader.read_exact(&mut output)?;
+//! assert_eq!(b"x", &output);
+//! # Ok(())
+//! # }
+//! ```
+//!
+//! This is a minimal working example, but as discussed in the section
+//! above, reading and writing on the same thread like this is
+//! deadlock-prone. If we wrote 100 KB instead of just one byte, this
+//! example would block on `write_all`, it would never make it to
+//! `read_exact`, and that would be a deadlock. Doing the read and write
+//! from different threads or different processes would fix the
+//! deadlock.
+//!
+//! For a more complex example, here we join the stdout and stderr of a
+//! child process into a single pipe. To do that we open a pipe, clone
+//! its writer, and set that pair of writers as the child's stdout and
+//! stderr. (This is possible because `PipeWriter` implements
+//! `Into<Stdio>`.) Then we can read interleaved output from the pipe
+//! reader. This example is deadlock-free, but note the comment about
+//! closing the writers.
+//!
+//! ```rust
+//! # use std::io::prelude::*;
+//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
+//! // We're going to spawn a child process that prints "foo" to stdout
+//! // and "bar" to stderr, and we'll combine these into a single pipe.
+//! let mut command = std::process::Command::new("python");
+//! command.args(&["-c", r#"
+//! import sys
+//! sys.stdout.write("foo")
+//! sys.stdout.flush()
+//! sys.stderr.write("bar")
+//! sys.stderr.flush()
+//! "#]);
+//!
+//! // Here's the interesting part. Open a pipe, clone its writer, and
+//! // set that pair of writers as the child's stdout and stderr.
+//! let (mut reader, writer) = os_pipe::pipe()?;
+//! let writer_clone = writer.try_clone()?;
+//! command.stdout(writer);
+//! command.stderr(writer_clone);
+//!
+//! // Now start the child process running.
+//! let mut handle = command.spawn()?;
+//!
+//! // Avoid a deadlock! This parent process is still holding open pipe
+//! // writers inside the Command object, and we have to close those
+//! // before we read. Here we do this by dropping the Command object.
+//! drop(command);
+//!
+//! // Finally we can read all the output and clean up the child.
+//! let mut output = String::new();
+//! reader.read_to_string(&mut output)?;
+//! handle.wait()?;
+//! assert_eq!(output, "foobar");
+//! # Ok(())
+//! # }
+//! ```
+//!
+//! Note that the [`duct`](https://github.com/oconnor663/duct.rs) crate
+//! can reproduce the example above in a single line of code, with no
+//! risk of deadlocks and no risk of leaking [zombie
+//! children](https://en.wikipedia.org/wiki/Zombie_process).
+
+use std::fs::File;
+use std::io;
+use std::process::Stdio;
+
+#[cfg(not(windows))]
+#[path = "unix.rs"]
+mod sys;
+#[cfg(windows)]
+#[path = "windows.rs"]
+mod sys;
+
+/// The reading end of a pipe, returned by [`pipe`](fn.pipe.html).
+///
+/// `PipeReader` implements `Into<Stdio>`, so you can pass it as an argument to
+/// `Command::stdin` to spawn a child process that reads from the pipe.
+#[derive(Debug)]
+pub struct PipeReader(
+ // We use std::fs::File here for two reasons: OwnedFd and OwnedHandle are platform-specific,
+ // and this gives us read/write/flush for free.
+ File,
+);
+
+impl PipeReader {
+ pub fn try_clone(&self) -> io::Result<PipeReader> {
+ self.0.try_clone().map(PipeReader)
+ }
+}
+
+impl io::Read for PipeReader {
+ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+ self.0.read(buf)
+ }
+}
+
+impl<'a> io::Read for &'a PipeReader {
+ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+ (&self.0).read(buf)
+ }
+}
+
+impl From<PipeReader> for Stdio {
+ fn from(p: PipeReader) -> Stdio {
+ p.0.into()
+ }
+}
+
+/// The writing end of a pipe, returned by [`pipe`](fn.pipe.html).
+///
+/// `PipeWriter` implements `Into<Stdio>`, so you can pass it as an argument to
+/// `Command::stdout` or `Command::stderr` to spawn a child process that writes
+/// to the pipe.
+#[derive(Debug)]
+pub struct PipeWriter(File);
+
+impl PipeWriter {
+ pub fn try_clone(&self) -> io::Result<PipeWriter> {
+ self.0.try_clone().map(PipeWriter)
+ }
+}
+
+impl io::Write for PipeWriter {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ self.0.write(buf)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ self.0.flush()
+ }
+}
+
+impl<'a> io::Write for &'a PipeWriter {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ (&self.0).write(buf)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ (&self.0).flush()
+ }
+}
+
+impl From<PipeWriter> for Stdio {
+ fn from(p: PipeWriter) -> Stdio {
+ p.0.into()
+ }
+}
+
+/// Open a new pipe and return a [`PipeReader`] and [`PipeWriter`] pair.
+///
+/// This corresponds to the `pipe2` library call on Posix and the
+/// `CreatePipe` library call on Windows (though these implementation
+/// details might change). These pipes are non-inheritable, so new child
+/// processes won't receive a copy of them unless they're explicitly
+/// passed as stdin/stdout/stderr.
+///
+/// [`PipeReader`]: struct.PipeReader.html
+/// [`PipeWriter`]: struct.PipeWriter.html
+pub fn pipe() -> io::Result<(PipeReader, PipeWriter)> {
+ sys::pipe()
+}
+
+/// Get a duplicated copy of the current process's standard input, as a
+/// [`PipeReader`].
+///
+/// Reading directly from this pipe isn't recommended, because it's not
+/// synchronized with [`std::io::stdin`]. [`PipeReader`] implements
+/// [`Into<Stdio>`], so it can be passed directly to [`Command::stdin`]. This is
+/// equivalent to [`Stdio::inherit`], though, so it's usually not necessary
+/// unless you need a collection of different pipes.
+///
+/// [`std::io::stdin`]: https://doc.rust-lang.org/std/io/fn.stdin.html
+/// [`PipeReader`]: struct.PipeReader.html
+/// [`Into<Stdio>`]: https://doc.rust-lang.org/std/process/struct.Stdio.html
+/// [`Command::stdin`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.stdin
+/// [`Stdio::inherit`]: https://doc.rust-lang.org/std/process/struct.Stdio.html#method.inherit
+pub fn dup_stdin() -> io::Result<PipeReader> {
+ sys::dup(io::stdin()).map(PipeReader::from)
+}
+
+/// Get a duplicated copy of the current process's standard output, as a
+/// [`PipeWriter`](struct.PipeWriter.html).
+///
+/// Writing directly to this pipe isn't recommended, because it's not
+/// synchronized with [`std::io::stdout`]. [`PipeWriter`] implements
+/// [`Into<Stdio>`], so it can be passed directly to [`Command::stdout`] or
+/// [`Command::stderr`]. This can be useful if you want the child's stderr to go
+/// to the parent's stdout.
+///
+/// [`std::io::stdout`]: https://doc.rust-lang.org/std/io/fn.stdout.html
+/// [`PipeWriter`]: struct.PipeWriter.html
+/// [`Into<Stdio>`]: https://doc.rust-lang.org/std/process/struct.Stdio.html
+/// [`Command::stdout`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.stdout
+/// [`Command::stderr`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.stderr
+/// [`Stdio::inherit`]: https://doc.rust-lang.org/std/process/struct.Stdio.html#method.inherit
+pub fn dup_stdout() -> io::Result<PipeWriter> {
+ sys::dup(io::stdout()).map(PipeWriter::from)
+}
+
+/// Get a duplicated copy of the current process's standard error, as a
+/// [`PipeWriter`](struct.PipeWriter.html).
+///
+/// Writing directly to this pipe isn't recommended, because it's not
+/// synchronized with [`std::io::stderr`]. [`PipeWriter`] implements
+/// [`Into<Stdio>`], so it can be passed directly to [`Command::stdout`] or
+/// [`Command::stderr`]. This can be useful if you want the child's stdout to go
+/// to the parent's stderr.
+///
+/// [`std::io::stderr`]: https://doc.rust-lang.org/std/io/fn.stderr.html
+/// [`PipeWriter`]: struct.PipeWriter.html
+/// [`Into<Stdio>`]: https://doc.rust-lang.org/std/process/struct.Stdio.html
+/// [`Command::stdout`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.stdout
+/// [`Command::stderr`]: https://doc.rust-lang.org/std/process/struct.Command.html#method.stderr
+/// [`Stdio::inherit`]: https://doc.rust-lang.org/std/process/struct.Stdio.html#method.inherit
+pub fn dup_stderr() -> io::Result<PipeWriter> {
+ sys::dup(io::stderr()).map(PipeWriter::from)
+}
+
+#[cfg(test)]
+mod tests {
+ use std::env::consts::EXE_EXTENSION;
+ use std::io::prelude::*;
+ use std::path::{Path, PathBuf};
+ use std::process::Command;
+ use std::sync::Once;
+ use std::thread;
+
+ fn path_to_exe(name: &str) -> PathBuf {
+ // This project defines some associated binaries for testing, and we shell out to them in
+ // these tests. `cargo test` doesn't automatically build associated binaries, so this
+ // function takes care of building them explicitly, with the right debug/release flavor.
+ static CARGO_BUILD_ONCE: Once = Once::new();
+ CARGO_BUILD_ONCE.call_once(|| {
+ let mut build_command = Command::new("cargo");
+ build_command.args(&["build", "--quiet"]);
+ if !cfg!(debug_assertions) {
+ build_command.arg("--release");
+ }
+ let build_status = build_command.status().unwrap();
+ assert!(
+ build_status.success(),
+ "Cargo failed to build associated binaries."
+ );
+ });
+ let flavor = if cfg!(debug_assertions) {
+ "debug"
+ } else {
+ "release"
+ };
+ Path::new("target")
+ .join(flavor)
+ .join(name)
+ .with_extension(EXE_EXTENSION)
+ }
+
+ #[test]
+ fn test_pipe_some_data() {
+ let (mut reader, mut writer) = crate::pipe().unwrap();
+ // A small write won't fill the pipe buffer, so it won't block this thread.
+ writer.write_all(b"some stuff").unwrap();
+ drop(writer);
+ let mut out = String::new();
+ reader.read_to_string(&mut out).unwrap();
+ assert_eq!(out, "some stuff");
+ }
+
+ #[test]
+ fn test_pipe_some_data_with_refs() {
+ // As with `File`, there's a second set of impls for shared
+ // refs. Test those.
+ let (reader, writer) = crate::pipe().unwrap();
+ let mut reader_ref = &reader;
+ {
+ let mut writer_ref = &writer;
+ // A small write won't fill the pipe buffer, so it won't block this thread.
+ writer_ref.write_all(b"some stuff").unwrap();
+ }
+ drop(writer);
+ let mut out = String::new();
+ reader_ref.read_to_string(&mut out).unwrap();
+ assert_eq!(out, "some stuff");
+ }
+
+ #[test]
+ fn test_pipe_no_data() {
+ let (mut reader, writer) = crate::pipe().unwrap();
+ drop(writer);
+ let mut out = String::new();
+ reader.read_to_string(&mut out).unwrap();
+ assert_eq!(out, "");
+ }
+
+ #[test]
+ fn test_pipe_a_megabyte_of_data_from_another_thread() {
+ let data = vec![0xff; 1_000_000];
+ let data_copy = data.clone();
+ let (mut reader, mut writer) = crate::pipe().unwrap();
+ let joiner = thread::spawn(move || {
+ writer.write_all(&data_copy).unwrap();
+ // This drop happens automatically, so writing it out here is mostly
+ // just for clarity. For what it's worth, it also guards against
+ // accidentally forgetting to drop if we switch to scoped threads or
+ // something like that and change this to a non-moving closure. The
+ // explicit drop forces `writer` to move.
+ drop(writer);
+ });
+ let mut out = Vec::new();
+ reader.read_to_end(&mut out).unwrap();
+ joiner.join().unwrap();
+ assert_eq!(out, data);
+ }
+
+ #[test]
+ fn test_pipes_are_not_inheritable() {
+ // Create pipes for a child process.
+ let (input_reader, mut input_writer) = crate::pipe().unwrap();
+ let (mut output_reader, output_writer) = crate::pipe().unwrap();
+
+ // Create a bunch of duplicated copies, which we'll close later. This
+ // tests that duplication preserves non-inheritability.
+ let ir_dup = input_reader.try_clone().unwrap();
+ let iw_dup = input_writer.try_clone().unwrap();
+ let or_dup = output_reader.try_clone().unwrap();
+ let ow_dup = output_writer.try_clone().unwrap();
+
+ // Spawn the child. Note that this temporary Command object takes
+ // ownership of our copies of the child's stdin and stdout, and then
+ // closes them immediately when it drops. That stops us from blocking
+ // our own read below. We use our own simple implementation of cat for
+ // compatibility with Windows.
+ let mut child = Command::new(path_to_exe("cat"))
+ .stdin(input_reader)
+ .stdout(output_writer)
+ .spawn()
+ .unwrap();
+
+ // Drop all the dups now that the child is spawned.
+ drop(ir_dup);
+ drop(iw_dup);
+ drop(or_dup);
+ drop(ow_dup);
+
+ // Write to the child's stdin. This is a small write, so it shouldn't
+ // block.
+ input_writer.write_all(b"hello").unwrap();
+ drop(input_writer);
+
+ // Read from the child's stdout. If this child has accidentally
+ // inherited the write end of its own stdin, then it will never exit,
+ // and this read will block forever. That's what this test is all
+ // about.
+ let mut output = Vec::new();
+ output_reader.read_to_end(&mut output).unwrap();
+ child.wait().unwrap();
+
+ // Confirm that we got the right bytes.
+ assert_eq!(b"hello", &*output);
+ }
+
+ #[test]
+ fn test_parent_handles() {
+ // This test invokes the `swap` test program, which uses parent_stdout() and
+ // parent_stderr() to swap the outputs for another child that it spawns.
+
+ // Create pipes for a child process.
+ let (reader, mut writer) = crate::pipe().unwrap();
+
+ // Write input. This shouldn't block because it's small. Then close the write end, or else
+ // the child will hang.
+ writer.write_all(b"quack").unwrap();
+ drop(writer);
+
+ // Use `swap` to run `cat_both`. `cat_both will read "quack" from stdin
+ // and write it to stdout and stderr with different tags. But because we
+ // run it inside `swap`, the tags in the output should be backwards.
+ let output = Command::new(path_to_exe("swap"))
+ .arg(path_to_exe("cat_both"))
+ .stdin(reader)
+ .output()
+ .unwrap();
+
+ // Check for a clean exit.
+ assert!(
+ output.status.success(),
+ "child process returned {:#?}",
+ output
+ );
+
+ // Confirm that we got the right bytes.
+ assert_eq!(b"stderr: quack", &*output.stdout);
+ assert_eq!(b"stdout: quack", &*output.stderr);
+ }
+
+ #[test]
+ fn test_parent_handles_dont_close() {
+ // Open and close each parent pipe multiple times. If this closes the
+ // original, subsequent opens should fail.
+ let stdin = crate::dup_stdin().unwrap();
+ drop(stdin);
+ let stdin = crate::dup_stdin().unwrap();
+ drop(stdin);
+
+ let stdout = crate::dup_stdout().unwrap();
+ drop(stdout);
+ let stdout = crate::dup_stdout().unwrap();
+ drop(stdout);
+
+ let stderr = crate::dup_stderr().unwrap();
+ drop(stderr);
+ let stderr = crate::dup_stderr().unwrap();
+ drop(stderr);
+ }
+
+ #[test]
+ fn test_try_clone() {
+ let (reader, writer) = crate::pipe().unwrap();
+ let mut reader_clone = reader.try_clone().unwrap();
+ let mut writer_clone = writer.try_clone().unwrap();
+ // A small write won't fill the pipe buffer, so it won't block this thread.
+ writer_clone.write_all(b"some stuff").unwrap();
+ drop(writer);
+ drop(writer_clone);
+ let mut out = String::new();
+ reader_clone.read_to_string(&mut out).unwrap();
+ assert_eq!(out, "some stuff");
+ }
+
+ #[test]
+ fn test_debug() {
+ let (reader, writer) = crate::pipe().unwrap();
+ _ = format!("{:?} {:?}", reader, writer);
+ }
+}
diff --git a/crates/os_pipe/src/unix.rs b/crates/os_pipe/src/unix.rs
new file mode 100644
index 0000000..e9b68be
--- /dev/null
+++ b/crates/os_pipe/src/unix.rs
@@ -0,0 +1,135 @@
+use crate::PipeReader;
+use crate::PipeWriter;
+use libc::c_int;
+use std::fs::File;
+use std::io;
+use std::os::unix::prelude::*;
+
+// We need to atomically create pipes and set the CLOEXEC flag on them. This is
+// done with the pipe2() API. However, macOS doesn't support pipe2. There, all
+// we can do is call pipe() followed by fcntl(), and hope that no other threads
+// fork() in between. The following code is copied from the nix crate, where it
+// works but is deprecated.
+#[cfg(not(any(
+ target_os = "aix",
+ target_os = "ios",
+ target_os = "visionos",
+ target_os = "macos",
+ target_os = "haiku"
+)))]
+fn pipe2_cloexec() -> io::Result<(OwnedFd, OwnedFd)> {
+ let mut fds: [c_int; 2] = [0; 2];
+ let res = unsafe { libc::pipe2(fds.as_mut_ptr(), libc::O_CLOEXEC) };
+ if res != 0 {
+ return Err(io::Error::last_os_error());
+ }
+ unsafe { Ok((OwnedFd::from_raw_fd(fds[0]), OwnedFd::from_raw_fd(fds[1]))) }
+}
+
+#[cfg(any(
+ target_os = "aix",
+ target_os = "ios",
+ target_os = "visionos",
+ target_os = "macos",
+ target_os = "haiku"
+))]
+fn pipe2_cloexec() -> io::Result<(OwnedFd, OwnedFd)> {
+ let mut fds: [c_int; 2] = [0; 2];
+ let res = unsafe { libc::pipe(fds.as_mut_ptr()) };
+ if res != 0 {
+ return Err(io::Error::last_os_error());
+ }
+ // Wrap the fds immediately, so that we'll drop them and close them in the unlikely event that
+ // any of the following fcntls fails.
+ let owned_fds = unsafe { (OwnedFd::from_raw_fd(fds[0]), OwnedFd::from_raw_fd(fds[1])) };
+ let res = unsafe { libc::fcntl(fds[0], libc::F_SETFD, libc::FD_CLOEXEC) };
+ if res != 0 {
+ return Err(io::Error::last_os_error());
+ }
+ let res = unsafe { libc::fcntl(fds[1], libc::F_SETFD, libc::FD_CLOEXEC) };
+ if res != 0 {
+ return Err(io::Error::last_os_error());
+ }
+ Ok(owned_fds)
+}
+
+pub(crate) fn pipe() -> io::Result<(PipeReader, PipeWriter)> {
+ let (read_fd, write_fd) = pipe2_cloexec()?;
+ Ok((read_fd.into(), write_fd.into()))
+}
+
+pub(crate) fn dup(handle: impl AsFd) -> io::Result<OwnedFd> {
+ handle.as_fd().try_clone_to_owned()
+}
+
+impl IntoRawFd for PipeReader {
+ fn into_raw_fd(self) -> RawFd {
+ self.0.into_raw_fd()
+ }
+}
+
+impl AsRawFd for PipeReader {
+ fn as_raw_fd(&self) -> RawFd {
+ self.0.as_raw_fd()
+ }
+}
+
+impl FromRawFd for PipeReader {
+ unsafe fn from_raw_fd(fd: RawFd) -> PipeReader {
+ PipeReader(File::from_raw_fd(fd))
+ }
+}
+
+impl From<PipeReader> for OwnedFd {
+ fn from(pr: PipeReader) -> Self {
+ pr.0.into()
+ }
+}
+
+impl AsFd for PipeReader {
+ fn as_fd(&self) -> BorrowedFd<'_> {
+ self.0.as_fd()
+ }
+}
+
+impl From<OwnedFd> for PipeReader {
+ fn from(fd: OwnedFd) -> Self {
+ PipeReader(fd.into())
+ }
+}
+
+impl IntoRawFd for PipeWriter {
+ fn into_raw_fd(self) -> RawFd {
+ self.0.into_raw_fd()
+ }
+}
+
+impl AsRawFd for PipeWriter {
+ fn as_raw_fd(&self) -> RawFd {
+ self.0.as_raw_fd()
+ }
+}
+
+impl FromRawFd for PipeWriter {
+ unsafe fn from_raw_fd(fd: RawFd) -> PipeWriter {
+ PipeWriter(File::from_raw_fd(fd))
+ }
+}
+
+impl From<PipeWriter> for OwnedFd {
+ fn from(pw: PipeWriter) -> Self {
+ pw.0.into()
+ }
+}
+
+impl AsFd for PipeWriter {
+ fn as_fd(&self) -> BorrowedFd<'_> {
+ self.0.as_fd()
+ }
+}
+
+impl From<OwnedFd> for PipeWriter {
+ fn from(fd: OwnedFd) -> Self {
+ PipeWriter(fd.into())
+ }
+}
diff --git a/crates/os_pipe/src/windows.rs b/crates/os_pipe/src/windows.rs
new file mode 100644
index 0000000..a26c4bc
--- /dev/null
+++ b/crates/os_pipe/src/windows.rs
@@ -0,0 +1,106 @@
+use crate::PipeReader;
+use crate::PipeWriter;
+use std::fs::File;
+use std::io;
+use std::os::windows::prelude::*;
+use std::ptr;
+use windows_sys::Win32::Foundation::INVALID_HANDLE_VALUE;
+use windows_sys::Win32::System::Pipes::CreatePipe;
+
+pub(crate) fn pipe() -> io::Result<(PipeReader, PipeWriter)> {
+ let mut read_pipe = INVALID_HANDLE_VALUE;
+ let mut write_pipe = INVALID_HANDLE_VALUE;
+
+ let ret = unsafe {
+ // NOTE: These pipes do not support IOCP. We might want to emulate
+ // anonymous pipes with CreateNamedPipe, as Rust's stdlib does.
+ CreatePipe(&mut read_pipe, &mut write_pipe, ptr::null_mut(), 0)
+ };
+
+ if ret == 0 {
+ Err(io::Error::last_os_error())
+ } else {
+ unsafe {
+ Ok((
+ PipeReader::from_raw_handle(read_pipe as _),
+ PipeWriter::from_raw_handle(write_pipe as _),
+ ))
+ }
+ }
+}
+
+pub(crate) fn dup(handle: impl AsHandle) -> io::Result<OwnedHandle> {
+ handle.as_handle().try_clone_to_owned()
+}
+
+impl IntoRawHandle for PipeReader {
+ fn into_raw_handle(self) -> RawHandle {
+ self.0.into_raw_handle()
+ }
+}
+
+impl AsRawHandle for PipeReader {
+ fn as_raw_handle(&self) -> RawHandle {
+ self.0.as_raw_handle()
+ }
+}
+
+impl FromRawHandle for PipeReader {
+ unsafe fn from_raw_handle(handle: RawHandle) -> PipeReader {
+ PipeReader(File::from_raw_handle(handle))
+ }
+}
+
+impl From<PipeReader> for OwnedHandle {
+ fn from(reader: PipeReader) -> Self {
+ reader.0.into()
+ }
+}
+
+impl AsHandle for PipeReader {
+ fn as_handle(&self) -> BorrowedHandle<'_> {
+ self.0.as_handle()
+ }
+}
+
+impl From<OwnedHandle> for PipeReader {
+ fn from(handle: OwnedHandle) -> Self {
+ PipeReader(handle.into())
+ }
+}
+
+impl IntoRawHandle for PipeWriter {
+ fn into_raw_handle(self) -> RawHandle {
+ self.0.into_raw_handle()
+ }
+}
+
+impl AsRawHandle for PipeWriter {
+ fn as_raw_handle(&self) -> RawHandle {
+ self.0.as_raw_handle()
+ }
+}
+
+impl FromRawHandle for PipeWriter {
+ unsafe fn from_raw_handle(handle: RawHandle) -> PipeWriter {
+ PipeWriter(File::from_raw_handle(handle))
+ }
+}
+
+impl From<PipeWriter> for OwnedHandle {
+ fn from(writer: PipeWriter) -> Self {
+ writer.0.into()
+ }
+}
+
+impl AsHandle for PipeWriter {
+ fn as_handle(&self) -> BorrowedHandle<'_> {
+ self.0.as_handle()
+ }
+}
+
+impl From<OwnedHandle> for PipeWriter {
+ fn from(handle: OwnedHandle) -> Self {
+ PipeWriter(handle.into())
+ }
+}
diff --git a/crates/p9_wire_format_derive/.android-checksum.json b/crates/p9_wire_format_derive/.android-checksum.json
index 79c4d71..a25acf6 100644
--- a/crates/p9_wire_format_derive/.android-checksum.json
+++ b/crates/p9_wire_format_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3fe1aa7960f1d8b0461c38722737873c449a2a50930d9f5c3e3a46a274555825","Android.bp":"6b2fe5c0d6a0bb9dfb340d7e5a12a957d6e141abba8d3f55145e2294185b1382","Cargo.toml":"7d4c52193e6442de490d0a0679a9fc1f4fc67cc5be6dabef1d646ca967414d14","LICENSE":"48c8c5339d16b8478fcb61a8a3dd4b704a09873e03c32feb21e1eb3d2a963617","METADATA":"a7659afb24cd3477acceafeecb3ebfedd10a563d0e64441a91c464d9a98f6dbe","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"63b4ae1db230fb7961997db1fb5c0dabaf95df59581eed2b4104ee41836d5954","TEST_MAPPING":"efc8906235db158a473d73cd931a64baca08ed41b4433b0af34b0b7993c2c292","cargo_embargo.json":"8f45a92e8f79cd832fd18b99fcd99a503dfd2c3ae32ef3d4b28f520fd8c10f18","src/lib.rs":"d7567f5020b85c0d7c5ca09d2ae5a6a7b06a8ed8ac370fc4fddec2981246fb85"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3fe1aa7960f1d8b0461c38722737873c449a2a50930d9f5c3e3a46a274555825","Android.bp":"6b2fe5c0d6a0bb9dfb340d7e5a12a957d6e141abba8d3f55145e2294185b1382","Cargo.toml":"7d4c52193e6442de490d0a0679a9fc1f4fc67cc5be6dabef1d646ca967414d14","LICENSE":"48c8c5339d16b8478fcb61a8a3dd4b704a09873e03c32feb21e1eb3d2a963617","METADATA":"a7659afb24cd3477acceafeecb3ebfedd10a563d0e64441a91c464d9a98f6dbe","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"63b4ae1db230fb7961997db1fb5c0dabaf95df59581eed2b4104ee41836d5954","TEST_MAPPING":"efc8906235db158a473d73cd931a64baca08ed41b4433b0af34b0b7993c2c292","cargo_embargo.json":"93bc91d4fe881893d4eac9c2be7b597d86722e934ef386d870b5048c50d6a4c5","src/lib.rs":"d7567f5020b85c0d7c5ca09d2ae5a6a7b06a8ed8ac370fc4fddec2981246fb85"}}
\ No newline at end of file
diff --git a/crates/p9_wire_format_derive/cargo_embargo.json b/crates/p9_wire_format_derive/cargo_embargo.json
index ed87169..3833c06 100644
--- a/crates/p9_wire_format_derive/cargo_embargo.json
+++ b/crates/p9_wire_format_derive/cargo_embargo.json
@@ -5,5 +5,6 @@
"p9_wire_format_derive": {
"device_supported": false
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/paste/.android-checksum.json b/crates/paste/.android-checksum.json
index f4048e1..8a909aa 100644
--- a/crates/paste/.android-checksum.json
+++ b/crates/paste/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d819063c9f1a77a16cc3d6a7afcf7f8a53232fa83b4db0c8d6d0c6daa3b7fff9","Android.bp":"0a92b214f79649971b0862c216dc5e8fc5b03f2b93af72910bc485a3486ce56b","Cargo.toml":"0902598f0946239cfd60caabb85b3aaa3ef7eb55d3182a163c3844f9d3d49f36","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"b24d9562f74f1d7d9e57c0b8f32d9bfaa137a8e11da59082bbc96090ab9203e4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4c24065c7a56791d8fc04ad37e21ac4bba59f293ba57af2e4400211d8c25f22d","TEST_MAPPING":"0ae231c7e9c43bf3b90a1afed8df9687a20d36a241cd5a4ee669a0234ccbb76f","build.rs":"7ba458ee8199bb34cbbc2dff71f7d343d30ec66e297bffeec7576acb293e6618","cargo_embargo.json":"dbcf26371972945381adb801e2541f360805839550ce9791024fc3297f249133","rules.mk":"ac5917ca8bb41e2ad7b0e229c00ed37f45172a594c118b60bbf16d8637a76979","src/attr.rs":"ab46634c92a9460e49a3c65b5ef2209b0cb98419dcbe189b1004511ff7d63718","src/error.rs":"1875538bba76e031055a36a3109d5e44d96ff466fa8315fde3bdd4358525dafb","src/lib.rs":"d782e954ea958cc0a12955cd782eee3994e3f290e80501863081605a68aba878","src/segment.rs":"20dbf8e8715094d99349940844748fb0400e72a59cb1de27b22eb8779de6a4ca","tests/compiletest.rs":"8f2cbc080ae802a72afbc627b943e187f66bfe0214f7d989460badb57ddfbb8d","tests/test_attr.rs":"74e9365ef60019e93af8fae84bc46d0957901494f16704c97afe1888e7c055f3","tests/test_doc.rs":"190e6ce179a07e1d29ebf1f6a6f13d0b90c741ee15498182114c3e427305fda2","tests/test_expr.rs":"bcaf23691d28c1fa19691112c520e220433aff15f4cb78ce81b5dd7dca2c67b1","tests/test_item.rs":"de2d91536cb7d3ae097280ab45c72e936c814da4e7c5c4bce21646d27c9b4975","tests/ui/case-warning.rs":"4b17aded79c399154dd7e81bec5a485d3ca8b570ae72f4be563804d8f4cba0d7","tests/ui/case-warning.stderr":"ce15ddbdf13596100997c34185b10ac982d867182e0e266cf2675564d9133db4","tests/ui/env-empty.rs":"a25e95e08c2b0cd75a936d04685bf29d4ca4269e39b9d94bee195d8ea19f7bcf","tests/ui/env-empty.stderr":"7a310377e1f6a25af2f1742e22be8c4a97f074c8fd21212716bef13104755f3c","tests/ui/env-non-string.rs":"cac5c1fafd2cf6ca15238ca8e7008d8595e566be4fa8049a35d4f8e22a36383c","tests/ui/env-non-string.stderr":"93f9c66f64761592517eb2ebab756c2f85888dd05e319afc2d1f1af7bc050d50","tests/ui/env-suffix.rs":"eca1a87e6318fb5a2a3c5adf77075bb5590c3cad05cd73cf347b69a0044c796e","tests/ui/env-suffix.stderr":"e5eec2f19adb0c0637cc8a5476cee5f7cc6e1c5d983d36faf245eba9f2209a7b","tests/ui/env-unexpected.rs":"d39f2202866c5bbbedb15b2fef3158ce0087e9d6cde49c76cbaab9c701863818","tests/ui/env-unexpected.stderr":"9c26f1cc7420c7adde682ee81549a926ab1a342b3972062d99258cf4347859dd","tests/ui/invalid-ident.rs":"42604015233cb229dabbc469e3ba809ecc415a4820437f462c6682c931200b35","tests/ui/invalid-ident.stderr":"e1500b958d86be6cafe686fa945e92bfd157c1bafb06a2e1f6e8f144ce5cbbee","tests/ui/missing-paren-on-env.rs":"0080f9824cefabba337bbe5c5477a31392ad65cc7c9e9b514aebc4aefb73fde9","tests/ui/missing-paren-on-env.stderr":"040cc94a305281345360f9f980651d8c47a96c90900ef8fd8010b9e2ddc7a959","tests/ui/no-env-var.rs":"a815d415d1a3dff163ffb349bb14f711a098f799d0f9a03cd815ae177f7dd5a7","tests/ui/no-env-var.stderr":"c7b90cec0b0936fda73129d2a7316458501baa070bfffb6e3c4a19dbb26b33f6","tests/ui/no-ident-after-colon.rs":"16e1c99c7d01295759ce80b7c2b2d8fec8afeb3d280e5843e075b88486ab2106","tests/ui/no-ident-after-colon.stderr":"e927d1f1305d4a18cc55fc5f845a0e7b4515cd3eed120836bb700f86fcea8f18","tests/ui/unexpected-group.rs":"4c1b68d0819a975b433bd225f90f5cfba0088d260feb84e559b650f19da2082a","tests/ui/unexpected-group.stderr":"ba34c403ece4d75bf01a0bba9a213738d7c4e2dafb623a8ab0a2005c8a31a65f","tests/ui/unexpected-modifier.rs":"f1245f85bcfdfe51be1d82effdb36bd01f710ff9298226df8ac2a37859a8f5e2","tests/ui/unexpected-modifier.stderr":"6cba40f5f061b2ac0e595165a86232ed1388115e4ec7cc6685811995e286cd5f","tests/ui/unexpected-punct.rs":"a799cb2b39a6c6975f5fe9e9c13652b79a00bdd9837b6da9785224de8728ef5e","tests/ui/unexpected-punct.stderr":"6ced8f3c0d97eb0ed22c8822d34b4f9b0c9ef9db250d740631603f9e9f1e4c97","tests/ui/unsupported-literal.rs":"b8cdae68f7ce0569bc4f4f084916ef2067bd3f65cfd75c9dd8ce759e9b27cab8","tests/ui/unsupported-literal.stderr":"9bf7beb799937111b3145272b81dfdeaa67ece88880414cda22574fafa83393f","tests/ui/unsupported-modifier.rs":"01193112a69821a675a7ae43f45e7b2aca23effd597634a72678dad3902c38b4","tests/ui/unsupported-modifier.stderr":"32bdc6f1f9b65f6c6bec40f5b49b15fcd313e877e86523ee12b134713720fc4b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d819063c9f1a77a16cc3d6a7afcf7f8a53232fa83b4db0c8d6d0c6daa3b7fff9","Android.bp":"0a92b214f79649971b0862c216dc5e8fc5b03f2b93af72910bc485a3486ce56b","Cargo.toml":"0902598f0946239cfd60caabb85b3aaa3ef7eb55d3182a163c3844f9d3d49f36","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"b24d9562f74f1d7d9e57c0b8f32d9bfaa137a8e11da59082bbc96090ab9203e4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4c24065c7a56791d8fc04ad37e21ac4bba59f293ba57af2e4400211d8c25f22d","TEST_MAPPING":"0ae231c7e9c43bf3b90a1afed8df9687a20d36a241cd5a4ee669a0234ccbb76f","build.rs":"7ba458ee8199bb34cbbc2dff71f7d343d30ec66e297bffeec7576acb293e6618","cargo_embargo.json":"e908765d7d9458acc8cb4822724c11038bff448f74ea91f3c477d92f1779a42b","rules.mk":"ac5917ca8bb41e2ad7b0e229c00ed37f45172a594c118b60bbf16d8637a76979","src/attr.rs":"ab46634c92a9460e49a3c65b5ef2209b0cb98419dcbe189b1004511ff7d63718","src/error.rs":"1875538bba76e031055a36a3109d5e44d96ff466fa8315fde3bdd4358525dafb","src/lib.rs":"d782e954ea958cc0a12955cd782eee3994e3f290e80501863081605a68aba878","src/segment.rs":"20dbf8e8715094d99349940844748fb0400e72a59cb1de27b22eb8779de6a4ca","tests/compiletest.rs":"8f2cbc080ae802a72afbc627b943e187f66bfe0214f7d989460badb57ddfbb8d","tests/test_attr.rs":"74e9365ef60019e93af8fae84bc46d0957901494f16704c97afe1888e7c055f3","tests/test_doc.rs":"190e6ce179a07e1d29ebf1f6a6f13d0b90c741ee15498182114c3e427305fda2","tests/test_expr.rs":"bcaf23691d28c1fa19691112c520e220433aff15f4cb78ce81b5dd7dca2c67b1","tests/test_item.rs":"de2d91536cb7d3ae097280ab45c72e936c814da4e7c5c4bce21646d27c9b4975","tests/ui/case-warning.rs":"4b17aded79c399154dd7e81bec5a485d3ca8b570ae72f4be563804d8f4cba0d7","tests/ui/case-warning.stderr":"ce15ddbdf13596100997c34185b10ac982d867182e0e266cf2675564d9133db4","tests/ui/env-empty.rs":"a25e95e08c2b0cd75a936d04685bf29d4ca4269e39b9d94bee195d8ea19f7bcf","tests/ui/env-empty.stderr":"7a310377e1f6a25af2f1742e22be8c4a97f074c8fd21212716bef13104755f3c","tests/ui/env-non-string.rs":"cac5c1fafd2cf6ca15238ca8e7008d8595e566be4fa8049a35d4f8e22a36383c","tests/ui/env-non-string.stderr":"93f9c66f64761592517eb2ebab756c2f85888dd05e319afc2d1f1af7bc050d50","tests/ui/env-suffix.rs":"eca1a87e6318fb5a2a3c5adf77075bb5590c3cad05cd73cf347b69a0044c796e","tests/ui/env-suffix.stderr":"e5eec2f19adb0c0637cc8a5476cee5f7cc6e1c5d983d36faf245eba9f2209a7b","tests/ui/env-unexpected.rs":"d39f2202866c5bbbedb15b2fef3158ce0087e9d6cde49c76cbaab9c701863818","tests/ui/env-unexpected.stderr":"9c26f1cc7420c7adde682ee81549a926ab1a342b3972062d99258cf4347859dd","tests/ui/invalid-ident.rs":"42604015233cb229dabbc469e3ba809ecc415a4820437f462c6682c931200b35","tests/ui/invalid-ident.stderr":"e1500b958d86be6cafe686fa945e92bfd157c1bafb06a2e1f6e8f144ce5cbbee","tests/ui/missing-paren-on-env.rs":"0080f9824cefabba337bbe5c5477a31392ad65cc7c9e9b514aebc4aefb73fde9","tests/ui/missing-paren-on-env.stderr":"040cc94a305281345360f9f980651d8c47a96c90900ef8fd8010b9e2ddc7a959","tests/ui/no-env-var.rs":"a815d415d1a3dff163ffb349bb14f711a098f799d0f9a03cd815ae177f7dd5a7","tests/ui/no-env-var.stderr":"c7b90cec0b0936fda73129d2a7316458501baa070bfffb6e3c4a19dbb26b33f6","tests/ui/no-ident-after-colon.rs":"16e1c99c7d01295759ce80b7c2b2d8fec8afeb3d280e5843e075b88486ab2106","tests/ui/no-ident-after-colon.stderr":"e927d1f1305d4a18cc55fc5f845a0e7b4515cd3eed120836bb700f86fcea8f18","tests/ui/unexpected-group.rs":"4c1b68d0819a975b433bd225f90f5cfba0088d260feb84e559b650f19da2082a","tests/ui/unexpected-group.stderr":"ba34c403ece4d75bf01a0bba9a213738d7c4e2dafb623a8ab0a2005c8a31a65f","tests/ui/unexpected-modifier.rs":"f1245f85bcfdfe51be1d82effdb36bd01f710ff9298226df8ac2a37859a8f5e2","tests/ui/unexpected-modifier.stderr":"6cba40f5f061b2ac0e595165a86232ed1388115e4ec7cc6685811995e286cd5f","tests/ui/unexpected-punct.rs":"a799cb2b39a6c6975f5fe9e9c13652b79a00bdd9837b6da9785224de8728ef5e","tests/ui/unexpected-punct.stderr":"6ced8f3c0d97eb0ed22c8822d34b4f9b0c9ef9db250d740631603f9e9f1e4c97","tests/ui/unsupported-literal.rs":"b8cdae68f7ce0569bc4f4f084916ef2067bd3f65cfd75c9dd8ce759e9b27cab8","tests/ui/unsupported-literal.stderr":"9bf7beb799937111b3145272b81dfdeaa67ece88880414cda22574fafa83393f","tests/ui/unsupported-modifier.rs":"01193112a69821a675a7ae43f45e7b2aca23effd597634a72678dad3902c38b4","tests/ui/unsupported-modifier.stderr":"32bdc6f1f9b65f6c6bec40f5b49b15fcd313e877e86523ee12b134713720fc4b"}}
\ No newline at end of file
diff --git a/crates/paste/cargo_embargo.json b/crates/paste/cargo_embargo.json
index 336ac97..4a20b00 100644
--- a/crates/paste/cargo_embargo.json
+++ b/crates/paste/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pathdiff/.android-checksum.json b/crates/pathdiff/.android-checksum.json
index 68886ba..aef0459 100644
--- a/crates/pathdiff/.android-checksum.json
+++ b/crates/pathdiff/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"bd122efa417eefa3d8059c0f844a7a9045895127c51693d5443088164a9a2b3d","Android.bp":"77605033c980035fd60c75f0ee655b3a53673964c48b84e920bab7784c4b6f81","Cargo.toml":"56891ec57fd38664164416765af817cd422635df05a1980b76b98b9b56790bb2","LICENSE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-APACHE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","METADATA":"753a7659d5f1d7ef76ce3f31a1b36077ccdb63ccc3b7db0d8f23f356672ca86f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"46a3de12a464198fb4e0e31013517abb7a8d76515177ef7ec661e08d06be346f","src/lib.rs":"c9d4eb8c2250597b10252eeaf5ac1b9c87ce0e4bc4da43a7390ad544b567c065"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bd122efa417eefa3d8059c0f844a7a9045895127c51693d5443088164a9a2b3d","Android.bp":"77605033c980035fd60c75f0ee655b3a53673964c48b84e920bab7784c4b6f81","Cargo.toml":"56891ec57fd38664164416765af817cd422635df05a1980b76b98b9b56790bb2","LICENSE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","LICENSE-APACHE":"ef00093c3850b9bce90c03998704f3fd5bf08133e07c4f5f40ac0b4b9d663212","METADATA":"753a7659d5f1d7ef76ce3f31a1b36077ccdb63ccc3b7db0d8f23f356672ca86f","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"11060974e1094a00b7db33074c54fd3eab894e01a08c910b8a353d052f78a408","src/lib.rs":"c9d4eb8c2250597b10252eeaf5ac1b9c87ce0e4bc4da43a7390ad544b567c065"}}
\ No newline at end of file
diff --git a/crates/pathdiff/cargo_embargo.json b/crates/pathdiff/cargo_embargo.json
index 4895908..d84ff92 100644
--- a/crates/pathdiff/cargo_embargo.json
+++ b/crates/pathdiff/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pdl-compiler/.android-checksum.json b/crates/pdl-compiler/.android-checksum.json
index 53111c1..58ff21a 100644
--- a/crates/pdl-compiler/.android-checksum.json
+++ b/crates/pdl-compiler/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"fa0c0030b245905f0c418287fbb39cd47caaf756886fdeca6eb9d5e2252e0de4","Android.bp":"51d7212f5cc64bd87246bdbafc22e33e6e65f0822cb53ef1a49208126ca40a80","Cargo.lock":"0faf1f249b629faa6d9a0431b1de6cf58930abc4e70bdd1bc2277d2993ef038c","Cargo.toml":"844a985f3f0b931c4bac4017a866bae78d721adab605d20fc9ca7ebc7e2aa9d4","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"13b31e1f9a1c29a8af133451434ed0f75b3b1787311d95cd661eea2a9bef26c8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fe05ed75532bc8875c87b0056df00ecd93602f25deeb195928954ab68b74f3cd","TEST_MAPPING":"b1c46a7cc2dcd50aeedc1e528d7edd869719c15819d2c22e045f566faafdfee9","cargo2android_toplevel.bp.fragment":"537e07affcf4613b9f1661ddf8a43258a953c0e88ebe98220e5786b30f2c280d","cargo_embargo.json":"ceae76941da871e6c34fa1fd5a9a84015f691fa0125eb9f8d910d1b02e8361f8","patches/0002-Ensure-compatibility-with-python-3.8.patch":"692c9f4a41d7b9aebb4abb8388d02473001315589c761afbbb0e520577fe2c4b","patches/scripts-build.patch":"ea15b84aa8e89fed9824591d0c3d71e7169075fa0a9251f5c2dd0b854d145132","scripts/Android.bp":"b4ea36f33b15c5e5e669ae4e906a40e5135a070791db0160201826cf5090a8e7","scripts/generate_cxx_backend.py":"3869c2e5f7203b020bec1dc0edf3bf691f9765d5077a2bc4af1fc7dac628a867","scripts/generate_cxx_backend_tests.py":"4d3c25b8026bb2eb9c27a9d2b7e5a94fb14f2225a29a5e4761d43eaf256bbdcc","scripts/generate_python_backend.py":"b54b65c805476db26d8763c657e79055dc7b378b27426e9629c8ca30ca6c06f2","scripts/generate_test_vectors.py":"c1f1d136471fbe6de43bcb504a53e0631766757c9411017ea8d8d1d637b92c6b","scripts/packet_runtime.h":"b5cf397495216f01d8aa762b3b8e67ff04894994363d23f1b885d224b968da4e","scripts/pdl/ast.py":"57c987ec7eccadd19c36f66ec27cf6ffad2b5bb9b8d6fa748b51bc8ff3cf6f76","scripts/pdl/core.py":"3871344f4ab37625e45b882f928b7795ea0fbc40a2d555fa8bad4b65da4f3aa7","scripts/pdl/utils.py":"6cde5d37816d36aaedc058110f79e6df1c410d7e25aa683e1e308ab27b6a19b3","src/analyzer.rs":"0dc109203140445442794296c93eb8c8f55a98d1a2a73cd256056452aea45feb","src/ast.rs":"57090f573d5dc3c34c7de6803e7b4a17ea17b695f3d79fb0bafc30c0becd7d53","src/backends.rs":"0862788f8d9da790a4f5a0d8c192b16daf20aedb37b8646ac8f301f3126d9214","src/backends/intermediate.rs":"3e4efae306238eee7358402976b9f97d6a6661921098d4123fec35d7b2a8a6c3","src/backends/json.rs":"753546f723d3f43a52585e04fc5184055c9ca6f5c5d8ebe0e1f24f81f9df74ba","src/backends/rust/decoder.rs":"be931e9f80b929a48a754dd25b92052e612003de1721aff71324a9069363856b","src/backends/rust/encoder.rs":"458f25b2ede1f9a040eb32dc241865fcc99fa4bc32c5f19523ddf10dec6d373d","src/backends/rust/mod.rs":"67d421c357f8511d0334a321f430309a4569fdabda1d069aaee08e7599d01648","src/backends/rust/preamble.rs":"b90144f86faa6a7d7dac53b214de92367acd7c445332a8677c8a7d373a01fc94","src/backends/rust/test.rs":"e342b27270409df372cf2ff2838b49fd52f3d356b64ecae86ea37cfad9f91459","src/backends/rust/types.rs":"e240f80a668c94788df65c979a583b65abfc4e583301757735eca0e4e166e8ed","src/backends/rust_legacy/mod.rs":"27f6cdb485ffce297be30b036928dea988116ce32eebf6ccadc7645a209ca946","src/backends/rust_legacy/parser.rs":"6430cd6d8d6fd23ed4e881c6303f62e368013d86a3cc2a0ed2051afd59dd1c7c","src/backends/rust_legacy/preamble.rs":"78ab0ed11c27812b1c41d2dde1b17ac1e7661354f5369d88b5f82eb18ebba89d","src/backends/rust_legacy/serializer.rs":"3c40d44952c607b8ef0bbaf5b3f189ca2e516be1e3e745885158b92cca2359a3","src/backends/rust_legacy/test.rs":"f9b9419ab1dfe838eadeb7ce463e37d5b997119bd0f48f9373d9998d0c3ad5a8","src/backends/rust_legacy/types.rs":"ef9911743597719cabbb4fad55915effed27a2af2698112e7148b6d7a091573b","src/backends/rust_no_allocation/computed_values.rs":"bfb479369750a34d28d247b4006fb2864612150da2361390eca6cba3e67dba6f","src/backends/rust_no_allocation/enums.rs":"fd57724d9e88fb6c1097cdf114f7d97aa4ba6157fc95d5351dac3983cc72e973","src/backends/rust_no_allocation/mod.rs":"22215ba11cf06293bf592551396bf2176f84eef40d77df17797663d8af418869","src/backends/rust_no_allocation/packet_parser.rs":"a52547323256ea1da25949a730b29df09d1d37bf56f616e1b07781e844d9fc7b","src/backends/rust_no_allocation/packet_serializer.rs":"0eaca1dda66c5559c2972fde92fb61472b694cd6fc8eab4ef477efdadbb3fe6e","src/backends/rust_no_allocation/preamble.rs":"dabb6ac0ee07fc283e73020cecaf8ef3b7eae4d2701431d0d8ad881ef912254a","src/backends/rust_no_allocation/test.rs":"35d5574b217bd638ebfe6a9c53c39524e7f6d93005f15697d002b0120c2784bb","src/backends/rust_no_allocation/test_preamble.rs":"3b21edfd864a71e19f718e8d8e2aaba7456cfd6122855851d365a106157585c4","src/backends/rust_no_allocation/utils.rs":"43147a13f6bed52944a034e1632553cc9607c39ed6b11d5c328ab10a5f4ba6ec","src/lib.rs":"fe72dfe025fba632ce5c17bb8b19d7c16faeb7ae53139a2f1245f38fb71e1196","src/main.rs":"5886adf9a89aeb99dedbc9a0bb4c7aecb3b2c436f5efde9a3b76740e0ddfff22","src/parser.rs":"9d1a792710542510bc37242383716edec08d3e7bce81324426551fd5de46d21f","src/pdl.pest":"e4310c0fd6182d98a7f57ee87d70516c0eaeacae544a3cf98bb5ab0edc194732","src/test_utils.rs":"50168cc72679fa296797819f44e23e4db5074b8e277798d70dc088d07d2a5094","tests/canonical/be_test_vectors.json":"caf06ed0b00b1f93ad1a0523ea4b485c771683fe16bea033f4ede936c396bfa8","tests/canonical/le_rust_noalloc_test_file.pdl":"3fea1c495aa6fccc0fa0501828fa7808cb80f8c63f0514d495d769f6ed582248","tests/canonical/le_test_file.pdl":"cb17d3c913effcce9eb6bb01d8197966cde742ab8ec1fd5b1525a70765e440b4","tests/canonical/le_test_vectors.json":"4027390decf07bef030ca83c8ed4e4661a5ccb9e7e209f119666fd39dddc5ee7","tests/compile_rust_generated_files.sh":"28acebbb87b32a5d12048ba63702e32f2c244bdb01c1634f461e58f73e5f9450","tests/compile_rust_legacy_generated_files.sh":"6b71365306a116862f11dcd5d5d86b323f8983f3068df1a08c7f523aba6434b9","tests/custom_types.py":"f8a150a352b88ddeb8e57bcdb294c077f0743caea1039cc12f3ec9febb3f8a92","tests/generated/preamble.rs":"aeb4ab0a3e878288c10dc837cc52915f30809e6768867234e75a77a12fdacde3","tests/generated/rust/custom_field_declaration_big_endian.rs":"bbe642cdc9af69001af8a4e03778a08ae01d44b89e1a9240dc6c09181d65c362","tests/generated/rust/custom_field_declaration_little_endian.rs":"f51f9fb7659cd1d0649501d3007d64ad378cdd8ec6cf922f1d4c5fd2b83b7db2","tests/generated/rust/enum_declaration_big_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust/enum_declaration_little_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust/packet_decl_24bit_enum_array_big_endian.rs":"ec3af44730c71addc14fbc59970fc7fdf1796873162a8fbe474dcde23ee21f1e","tests/generated/rust/packet_decl_24bit_enum_array_little_endian.rs":"27d8edf3849e90316641de07b14b69a7437450ce104bce8871b46243f984f4f0","tests/generated/rust/packet_decl_24bit_enum_big_endian.rs":"9899a41e6a3df20fd4fa017caf12491ddaf89cf96945ce8e1eec95ef151d287d","tests/generated/rust/packet_decl_24bit_enum_little_endian.rs":"2fe2b73bddb54680612550a05ea4e7563c92bdbf1ddd53caac9251e27d7f9355","tests/generated/rust/packet_decl_24bit_scalar_array_big_endian.rs":"097275ea07c968081cbfd1eb11a3ac72deb1e95506e860d2165f1fb100b5e5f4","tests/generated/rust/packet_decl_24bit_scalar_array_little_endian.rs":"ecba62f8b01d29f795a3c80016a05c8f90a904c6fbd920647e1cebdfaf727152","tests/generated/rust/packet_decl_24bit_scalar_big_endian.rs":"a8640dbb27b230576a57c057f96290a748aa42ccd23d9f494df5301e9343e4b8","tests/generated/rust/packet_decl_24bit_scalar_little_endian.rs":"2099e07208fe45b24011350d240b0013cab2bd865292540dbb17bce20c5541f2","tests/generated/rust/packet_decl_64bit_enum_array_big_endian.rs":"e9cd490cb4b1661958f854a2f8b497d0f7d589c61624d86380998761f549deba","tests/generated/rust/packet_decl_64bit_enum_array_little_endian.rs":"ed9cc662442ae115eff54dd1a9be01134ec4217ec6f1687df32fbd5d75de17db","tests/generated/rust/packet_decl_64bit_enum_big_endian.rs":"c08564c98884b1ed5eefab05e56c0df0283649d99a344047397740ef7f836806","tests/generated/rust/packet_decl_64bit_enum_little_endian.rs":"d387872e14c9ce30c2cf6eda3fdd14ca2ba6f868e2456a15b8b5ed6c839540c3","tests/generated/rust/packet_decl_64bit_scalar_array_big_endian.rs":"27212f82b0c9b34be48b7bd15ee827e901cde95fcb263919b535661f40dc9cc9","tests/generated/rust/packet_decl_64bit_scalar_array_little_endian.rs":"a04f7c5cd8c8b0531f4426170fc6988f86bd03feff17e5c9529c74e38b2fb486","tests/generated/rust/packet_decl_64bit_scalar_big_endian.rs":"9a038921b24f842e2b0bec91f5ee0d99c19b585b41b56f35b28cc1b0b32f32e0","tests/generated/rust/packet_decl_64bit_scalar_little_endian.rs":"0c4faf9da595f8080e36c2e333928de8f63b87e88e221ed02a724309c3b5e482","tests/generated/rust/packet_decl_8bit_enum_array_big_endian.rs":"37098cf5b779c37ec27f4a3c2cd06f30a3660834fdd569b77bc720106cf3677b","tests/generated/rust/packet_decl_8bit_enum_array_little_endian.rs":"37098cf5b779c37ec27f4a3c2cd06f30a3660834fdd569b77bc720106cf3677b","tests/generated/rust/packet_decl_8bit_enum_big_endian.rs":"4c91dc83d6535a9908cbb8721ee6b80f2cb7a0981f710f4e331c8442039c3a14","tests/generated/rust/packet_decl_8bit_enum_little_endian.rs":"4c91dc83d6535a9908cbb8721ee6b80f2cb7a0981f710f4e331c8442039c3a14","tests/generated/rust/packet_decl_8bit_scalar_array_big_endian.rs":"12aa46a4d0537d04d0634cb95c34427a94b51d6ce82fa9a3110acded25c6c9eb","tests/generated/rust/packet_decl_8bit_scalar_array_little_endian.rs":"12aa46a4d0537d04d0634cb95c34427a94b51d6ce82fa9a3110acded25c6c9eb","tests/generated/rust/packet_decl_8bit_scalar_big_endian.rs":"87039c27a5df51ad8e88b225ca2eb04b4f5ba9ea13478ca2af013db63b1cca9b","tests/generated/rust/packet_decl_8bit_scalar_little_endian.rs":"87039c27a5df51ad8e88b225ca2eb04b4f5ba9ea13478ca2af013db63b1cca9b","tests/generated/rust/packet_decl_array_dynamic_count_big_endian.rs":"e8e64fca090771877011a7615ea8b88fb636ece01b39da2adc7bb9f48a669ed5","tests/generated/rust/packet_decl_array_dynamic_count_little_endian.rs":"c2cf334797ffd30ea02beafb5e24735c8639a36a52573fce35c8c7c77d1c18b2","tests/generated/rust/packet_decl_array_dynamic_element_size_big_endian.rs":"c1726d8d7fcd930127a38abc2f54153a126511e82e2c60e5bbc395d6572d5dd7","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_count_big_endian.rs":"9e721273efbb0147f919958b6748bc6425568f460a2961450ed074e0fe32b6fa","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_count_little_endian.rs":"9e721273efbb0147f919958b6748bc6425568f460a2961450ed074e0fe32b6fa","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_size_big_endian.rs":"f38619984f055b608016f2d675470a4fa7673b3dd769efc7109fba39bf8792e8","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_size_little_endian.rs":"f38619984f055b608016f2d675470a4fa7673b3dd769efc7109fba39bf8792e8","tests/generated/rust/packet_decl_array_dynamic_element_size_little_endian.rs":"c1726d8d7fcd930127a38abc2f54153a126511e82e2c60e5bbc395d6572d5dd7","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_1_big_endian.rs":"95d34a931140b5a72feb30eeb7d70ffa588a34a05733d8570085af87459daa39","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_1_little_endian.rs":"95d34a931140b5a72feb30eeb7d70ffa588a34a05733d8570085af87459daa39","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_big_endian.rs":"9f032000cef23622fdf73860376e26234a487bd3b6a1554d3c4b7849b2fb1ea5","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_little_endian.rs":"9f032000cef23622fdf73860376e26234a487bd3b6a1554d3c4b7849b2fb1ea5","tests/generated/rust/packet_decl_array_dynamic_size_big_endian.rs":"8fd8128dbdfcaf2ff8e5fabfe3da41c2595b98537cd2ab584a31236b9a3920a4","tests/generated/rust/packet_decl_array_dynamic_size_little_endian.rs":"7c69028d647e39f1269fed910730fb8f856279fea4c67d22a525c97789383182","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_count_big_endian.rs":"f0794748901886a94c22cc5daea48848a074c84f18dd74eae46a50b679c59d80","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_count_little_endian.rs":"851e731c3123064a8b2a27ab4e2e35276bf3714229912e1dc09581a7bfe35605","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_size_big_endian.rs":"3d8a724838ce486e05fa761b610cca3d51b8cb9860737f744a874dd4a86eab68","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_size_little_endian.rs":"687b36b9526cd8bd594bf3506caed0d2ada79a5c956cc9cee7e3016523c271b5","tests/generated/rust/packet_decl_array_with_padding_big_endian.rs":"609ca7d815e04c39e090295c149a5a3eb100005e024fee1acc2b12e07571296d","tests/generated/rust/packet_decl_array_with_padding_little_endian.rs":"27c8f255d52c17f41450d81cf742a46c6ca70c7bd3fef9990dccd37423ce3bfe","tests/generated/rust/packet_decl_child_packets_big_endian.rs":"ea330dff221967925391f287226b0de97f37fc1c0e1fec3640a2515dd97360ac","tests/generated/rust/packet_decl_child_packets_little_endian.rs":"e91747e6820d967c91aef13604f9bb75c8743fc44b7f2c98fe7223a1c4e8779b","tests/generated/rust/packet_decl_complex_scalars_big_endian.rs":"561f7c519f3cfde5358ee70c67c190e04290e39a1430fc2d6a54adab37c12656","tests/generated/rust/packet_decl_complex_scalars_little_endian.rs":"36be70d21bd2f66e0968f9292fcaa86b6fd69af894ae02751cdb233802aaa02c","tests/generated/rust/packet_decl_custom_field_big_endian.rs":"66443125fffce8bd3f5443ef050cad40fe27c7bebae6a8ee75a7db6dd2d41f62","tests/generated/rust/packet_decl_custom_field_little_endian.rs":"43cf4b172520f9aeab1e691c32e0472a92e31ddbfc5825db869563adfd9d7197","tests/generated/rust/packet_decl_empty_big_endian.rs":"6ca5d0d2303dfc452b17f1df5ca69f1e3e3293b582afa9e32a0c7172b8cc3916","tests/generated/rust/packet_decl_empty_little_endian.rs":"6ca5d0d2303dfc452b17f1df5ca69f1e3e3293b582afa9e32a0c7172b8cc3916","tests/generated/rust/packet_decl_fixed_enum_field_big_endian.rs":"5e6185183c18d8fb8abcf2b4ed6d026496c5c4d24ed0481f6fb314c2796cadf2","tests/generated/rust/packet_decl_fixed_enum_field_little_endian.rs":"c65488dc17bc96fd8e22833bcb16707d29f6a8bdb10f8c60d370e857d1ee79fb","tests/generated/rust/packet_decl_fixed_scalar_field_big_endian.rs":"f8d891053f54f2e84b2856936b3b9929627624eabe0482347ad0c051a7e6904a","tests/generated/rust/packet_decl_fixed_scalar_field_little_endian.rs":"99f9bf63d9dd2de4cb19539e64669ad7ac7464d88c5c9ceb2f3869e63996f62a","tests/generated/rust/packet_decl_grand_children_big_endian.rs":"dc32bb6baf678450c577fb5d750baad5d334f3e6eff7ab28d0476a32e9fc5ce8","tests/generated/rust/packet_decl_grand_children_little_endian.rs":"2fe850a8bdfd18b2c3ce1fa86035ee4c7878eb6198b00b2d528c53741bdbe016","tests/generated/rust/packet_decl_mask_scalar_value_big_endian.rs":"28117acfa670cbe2362412567dd8f098cb871eb3b647859c70daa277f9709caa","tests/generated/rust/packet_decl_mask_scalar_value_little_endian.rs":"c5268f738a77579d29e705eea882239b49257ae1fa9100fa767ef0fa94607c54","tests/generated/rust/packet_decl_mixed_scalars_enums_big_endian.rs":"154c9ed7e2072a805dfb15ad2c67d2c6867704868f968ddec46ff90c23a69de9","tests/generated/rust/packet_decl_mixed_scalars_enums_little_endian.rs":"126561e32751703206630b0b4b5067ff05213f24e0fbc33ce744c0aa44837507","tests/generated/rust/packet_decl_parent_with_alias_child_big_endian.rs":"ebbd7c0a291a80cf03456f9cd3b4b2268ff1a2766ef45945a015a93dddcb1dcc","tests/generated/rust/packet_decl_parent_with_alias_child_little_endian.rs":"ebbd7c0a291a80cf03456f9cd3b4b2268ff1a2766ef45945a015a93dddcb1dcc","tests/generated/rust/packet_decl_parent_with_no_payload_big_endian.rs":"f3b1a4c7a75503b0c29c4ca85b68e69cb0dd9ab9fc325a2b07a5f4ce06c4475c","tests/generated/rust/packet_decl_parent_with_no_payload_little_endian.rs":"f3b1a4c7a75503b0c29c4ca85b68e69cb0dd9ab9fc325a2b07a5f4ce06c4475c","tests/generated/rust/packet_decl_payload_field_unknown_size_big_endian.rs":"db68aaca2fc9ec29a0791f88ea6d9f2b077fe60e3246e99d51ad0b94c8467ea9","tests/generated/rust/packet_decl_payload_field_unknown_size_little_endian.rs":"f09e51d62e557f3c70bdef73b62f8631dd79f8f08138fec755398745bbb0de5b","tests/generated/rust/packet_decl_payload_field_unknown_size_terminal_big_endian.rs":"afe38bcc039d67a34feb60b85aabaaed311e0a34023f9b4d89c47f8096af629a","tests/generated/rust/packet_decl_payload_field_unknown_size_terminal_little_endian.rs":"cbc4d86a5e223886a0e752d04f0bd1ebde4937b0a0c09c584fa493c6bba25e71","tests/generated/rust/packet_decl_payload_field_variable_size_big_endian.rs":"2f6eaefa93bd779baebe743174ab0eee5655a9419f14eb27f05d91f5eadf4793","tests/generated/rust/packet_decl_payload_field_variable_size_little_endian.rs":"4eb73ae5bcc0e395c7c941be6c5b17a3ad9cdd222e44912f0edfdb1995f13f6d","tests/generated/rust/packet_decl_reserved_field_big_endian.rs":"470fdd68b6c1a42f820d8dbed7a0143bf14ba215d95a58fc6b0ccdc3b3357036","tests/generated/rust/packet_decl_reserved_field_little_endian.rs":"470fdd68b6c1a42f820d8dbed7a0143bf14ba215d95a58fc6b0ccdc3b3357036","tests/generated/rust/packet_decl_simple_scalars_big_endian.rs":"4a2fe89a0c0691470424bbea69ef1f54c9bbcb2338e5378f805cf6d47a341481","tests/generated/rust/packet_decl_simple_scalars_little_endian.rs":"5f51424bb4dd9a7d8b38cbe2a2458479a6dcde328bd794439c70227bf3a34be0","tests/generated/rust/payload_with_size_modifier_big_endian.rs":"0faa7bd390c666db7a9d1824eeb8e3284acd67cf37b0a9c924363ddd6f3504b5","tests/generated/rust/payload_with_size_modifier_little_endian.rs":"0faa7bd390c666db7a9d1824eeb8e3284acd67cf37b0a9c924363ddd6f3504b5","tests/generated/rust/reserved_identifier_big_endian.rs":"93d45fed740fffa5eae863993b7abe32e443336f5bc7bf993759fcb09444cf92","tests/generated/rust/reserved_identifier_little_endian.rs":"93d45fed740fffa5eae863993b7abe32e443336f5bc7bf993759fcb09444cf92","tests/generated/rust/struct_decl_child_structs_big_endian.rs":"84eadeb2318701f7ac4960b862f868f9a90b2584454e6b5af73c6af34192ac4f","tests/generated/rust/struct_decl_child_structs_little_endian.rs":"995532b3d4580ca7e1f6ee3a801b608ab7d91c67e0ad4c6855e792cef0c1cc7e","tests/generated/rust/struct_decl_complex_scalars_big_endian.rs":"561f7c519f3cfde5358ee70c67c190e04290e39a1430fc2d6a54adab37c12656","tests/generated/rust/struct_decl_complex_scalars_little_endian.rs":"36be70d21bd2f66e0968f9292fcaa86b6fd69af894ae02751cdb233802aaa02c","tests/generated/rust/struct_decl_grand_children_big_endian.rs":"d30dec12c2f207cb65c4d53ce47b9e316f7da072318cb0c2d6d34f600b1eb97a","tests/generated/rust/struct_decl_grand_children_little_endian.rs":"cc02999c4791747faaaba0a20b4be0df10a0e1c83d18a3a91206ec002069dd2f","tests/generated/rust_legacy/custom_field_declaration_big_endian.rs":"e0a544bbf0bbfe7fdc3f9ebe6e16db3f691ef9f6b8218ff4c8b5118532f4bed0","tests/generated/rust_legacy/custom_field_declaration_little_endian.rs":"e0a544bbf0bbfe7fdc3f9ebe6e16db3f691ef9f6b8218ff4c8b5118532f4bed0","tests/generated/rust_legacy/enum_declaration_big_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust_legacy/enum_declaration_little_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust_legacy/packet_decl_24bit_enum_array_big_endian.rs":"21711bb0964c53c05bfe3466c0c98664d91a74cdbd3d4ab3fd12360045375492","tests/generated/rust_legacy/packet_decl_24bit_enum_array_little_endian.rs":"fb2f2599ce2d1039d9f4dab007e5237ef692e4a9266b62e7f0c4361c12018b2a","tests/generated/rust_legacy/packet_decl_24bit_enum_big_endian.rs":"13a9c4b95ea14785dbaafd5105cefdcb65e4dc90290522bf442f7035e1f582f4","tests/generated/rust_legacy/packet_decl_24bit_enum_little_endian.rs":"a65e42fe27d2457c2669c85c52267abb9f07ca9da0b4c912426fb82ed7a76fd4","tests/generated/rust_legacy/packet_decl_24bit_scalar_array_big_endian.rs":"7fc93a0e62c749a146a70129bfe3b9f7dd1edc2e3adc7b933d3eaf0c378de25f","tests/generated/rust_legacy/packet_decl_24bit_scalar_array_little_endian.rs":"e49d0f878888016262d5c038ddbde9ea32b3a10955dedd79a24c7983aa3e73ab","tests/generated/rust_legacy/packet_decl_24bit_scalar_big_endian.rs":"cf8d97661a44622fd3e6f0ca69d9abde3b39d093d0ac3d0d142f088c693c85f2","tests/generated/rust_legacy/packet_decl_24bit_scalar_little_endian.rs":"e94de891d69b058cdb6f780036ee9a7416fb839551d0fe34da90ee29f1ae7cda","tests/generated/rust_legacy/packet_decl_64bit_enum_array_big_endian.rs":"82b3f96bf35646373a1cce39a8aaa41eeff83f7174c521dce5b7e91a57e06571","tests/generated/rust_legacy/packet_decl_64bit_enum_array_little_endian.rs":"dc14c7870f21c5404a8386461812cfe95effd97c698f5b7409220ad67c8c8f7f","tests/generated/rust_legacy/packet_decl_64bit_enum_big_endian.rs":"fc00e4ffc1aa12e1deebbfc3def44cc85ebb2372ce61b04d5b579d795f1c44bd","tests/generated/rust_legacy/packet_decl_64bit_enum_little_endian.rs":"c2c93b7a2916f853083a6cb09f025bf110d7e7e7c8a70bf377ca50de34b79e54","tests/generated/rust_legacy/packet_decl_64bit_scalar_array_big_endian.rs":"6327bd0afc7ed20c9534f73fea601407630239404ce066a536128166942012a7","tests/generated/rust_legacy/packet_decl_64bit_scalar_array_little_endian.rs":"f330920197eaef572f5d86dd7b529ac41782c718293f636d2046dbbab604ce29","tests/generated/rust_legacy/packet_decl_64bit_scalar_big_endian.rs":"9a0e07e4d984ee1c6708a64b6e0efbe4cc9d2f11f97e7104b38ad10cfca541fd","tests/generated/rust_legacy/packet_decl_64bit_scalar_little_endian.rs":"39fbbc644c150f8965e968115ea662ca2eda1144ef4ce52e13f18118e8725d39","tests/generated/rust_legacy/packet_decl_8bit_enum_array_big_endian.rs":"aebb32d8e027c2b5a33a4b93f491f20617fcd0d37f69880c695bcd926ace90a5","tests/generated/rust_legacy/packet_decl_8bit_enum_array_little_endian.rs":"aebb32d8e027c2b5a33a4b93f491f20617fcd0d37f69880c695bcd926ace90a5","tests/generated/rust_legacy/packet_decl_8bit_enum_big_endian.rs":"c0cebcb80c7b0ef8cd9fe4d71132c4af01e82b485914353d02ac4924dbb86c47","tests/generated/rust_legacy/packet_decl_8bit_enum_little_endian.rs":"c0cebcb80c7b0ef8cd9fe4d71132c4af01e82b485914353d02ac4924dbb86c47","tests/generated/rust_legacy/packet_decl_8bit_scalar_array_big_endian.rs":"ed40f45d2a247d8f28ae3ebc0e04eb9c5b31ed8bfe9c8bc63e71a726b39b05f3","tests/generated/rust_legacy/packet_decl_8bit_scalar_array_little_endian.rs":"ed40f45d2a247d8f28ae3ebc0e04eb9c5b31ed8bfe9c8bc63e71a726b39b05f3","tests/generated/rust_legacy/packet_decl_8bit_scalar_big_endian.rs":"c48fe093d1cf51a0fe734600f7ee09dd6f6057fd8d080c19051644e0c38dd6bd","tests/generated/rust_legacy/packet_decl_8bit_scalar_little_endian.rs":"c48fe093d1cf51a0fe734600f7ee09dd6f6057fd8d080c19051644e0c38dd6bd","tests/generated/rust_legacy/packet_decl_array_dynamic_count_big_endian.rs":"1935fcc59cc2c29387f88b3ccda15629aea51f7a4724b3854327b638b14c656e","tests/generated/rust_legacy/packet_decl_array_dynamic_count_little_endian.rs":"0db8e572633fde01eed5c603e87c2d5a70731c1ab88b4c70927124ee508919f1","tests/generated/rust_legacy/packet_decl_array_dynamic_size_big_endian.rs":"5ba7163734b5ecd654ad6fbe3ff768f3e5c540a2cc81ee061de4bdb72164a106","tests/generated/rust_legacy/packet_decl_array_dynamic_size_little_endian.rs":"54f679a8db6b68df279580f974f51f9b38aa66e2340eed05d812817034236640","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_count_big_endian.rs":"d38a635993d36db72656716bc47ac955403c70372bef16c3b53d06df9bab7394","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_count_little_endian.rs":"9e3176bea53d4c0b6a634bc59dc4cd531957f4c3198f070f47cf685bd84851fe","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_size_big_endian.rs":"d67f1e22df9df0f00590e26a9eb4953e8b9ec58a393cfe049822a6726cb703d4","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_size_little_endian.rs":"7f9fc0f038358d7f40104a9da2c6de816a561dc3506cc20d9ba6294b8986ef35","tests/generated/rust_legacy/packet_decl_array_with_padding_big_endian.rs":"a9b528c6e457529606faecb43082b57f0d97fd139ea3018dd594b41eb0fd1483","tests/generated/rust_legacy/packet_decl_array_with_padding_little_endian.rs":"efa994e0b395d9b081fddd5b352008d53f4000ec9c5042446416ccadd39fb557","tests/generated/rust_legacy/packet_decl_child_packets_big_endian.rs":"89644ac0cfd5c14731b64bfb31d6ee08563e222d405311ac4c244ad5ebb4052d","tests/generated/rust_legacy/packet_decl_child_packets_little_endian.rs":"b0ae6dbbff7bb2e90b1afc854747e014af66094303b708ec613e55c3bbd2540b","tests/generated/rust_legacy/packet_decl_complex_scalars_big_endian.rs":"3acf078e190125f98b27849bb2e25891c2dda8c7dfe78dcac6c3a2c5f53caada","tests/generated/rust_legacy/packet_decl_complex_scalars_little_endian.rs":"0b625d49020d860113ec0aa7c495c28ae305757e23035a822869b6cda4b694dd","tests/generated/rust_legacy/packet_decl_custom_field_big_endian.rs":"0864065ef99139c2db93b206d357ef7ca1f0c435da2da5bc032e981a6d29de6a","tests/generated/rust_legacy/packet_decl_custom_field_little_endian.rs":"c99247ea7fc542e7933b6a85b1b3390ca87da9d7ae2149a5e4e19acd26e2af72","tests/generated/rust_legacy/packet_decl_empty_big_endian.rs":"51011432218ca06c9bc5f1c288cf48aaa181e635604a1d1173512bc39f12e4f7","tests/generated/rust_legacy/packet_decl_empty_little_endian.rs":"51011432218ca06c9bc5f1c288cf48aaa181e635604a1d1173512bc39f12e4f7","tests/generated/rust_legacy/packet_decl_fixed_enum_field_big_endian.rs":"e827caba4ed48d7fe304e2425202be45b777520ce22058ed9701d6e23b8d247e","tests/generated/rust_legacy/packet_decl_fixed_enum_field_little_endian.rs":"7666100ae555d29f04574a998234620863d7a4230ad50b0b83d1c2d96dfe0f1d","tests/generated/rust_legacy/packet_decl_fixed_scalar_field_big_endian.rs":"9cac7259faa360dead8d4f6780275e098f6fc040f8863346b77e67bb1c950f95","tests/generated/rust_legacy/packet_decl_fixed_scalar_field_little_endian.rs":"b6339b033c036503bf0678b214f4bfbf6fe556c733846d3fabe68bb69c1d81a6","tests/generated/rust_legacy/packet_decl_grand_children_big_endian.rs":"d8660632d907a8650c9cfd0fc96eb6e027d69cb447b79068d643944296e86fc6","tests/generated/rust_legacy/packet_decl_grand_children_little_endian.rs":"9c2cf888c6b714adaa1371a1b06a8984d901acbe30a9442f3e09308b3c21df81","tests/generated/rust_legacy/packet_decl_mask_scalar_value_big_endian.rs":"81b58abcf7a8d7050d7e43a7ce1ab4671d8a8c366d3248ede2360c551478a2a0","tests/generated/rust_legacy/packet_decl_mask_scalar_value_little_endian.rs":"fb6c7d13eb9f23eea0c39dcac6fa9d27b15cfea71a5a3fcb4e914a805e1f81e1","tests/generated/rust_legacy/packet_decl_mixed_scalars_enums_big_endian.rs":"33388596e774df6ed799f223c06639128ad0f876a65968bf853c4aedfa8b2f73","tests/generated/rust_legacy/packet_decl_mixed_scalars_enums_little_endian.rs":"328540cf4bd379189914f047b863f5fe7975770e60ca822c3eb8f7755b7d7a15","tests/generated/rust_legacy/packet_decl_parent_with_alias_child_big_endian.rs":"66ac0544e84ff923d6da1f6b95e8f81662a92a3c24767a147033ee2ab3326f62","tests/generated/rust_legacy/packet_decl_parent_with_alias_child_little_endian.rs":"66ac0544e84ff923d6da1f6b95e8f81662a92a3c24767a147033ee2ab3326f62","tests/generated/rust_legacy/packet_decl_parent_with_no_payload_big_endian.rs":"564e54552dfd4405099a52e1daf1beb0de33a8254692bf8bd74d70fdb35438da","tests/generated/rust_legacy/packet_decl_parent_with_no_payload_little_endian.rs":"564e54552dfd4405099a52e1daf1beb0de33a8254692bf8bd74d70fdb35438da","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_big_endian.rs":"5c865eb1a5b51bbfee4ef7998f057927a0ec220c504564111a56876fe48480b0","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_little_endian.rs":"319d04aa1a4f2b941b843ebd8474a1305a80c3ea5ec379a12a103b47004adfad","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_terminal_big_endian.rs":"cd3f5c6113463631338874bfbf34e18cfb22ec09d337b7efe5706e42fb6c85c1","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_terminal_little_endian.rs":"db9e63b6d8d09889bf38b014a01735b9d05798dcca4839d1fbd3ee81c9aa70f9","tests/generated/rust_legacy/packet_decl_payload_field_variable_size_big_endian.rs":"402ac10f8121e7e9088cd584516a750f5ce45bbe04e33b53950d2551f89e7a9c","tests/generated/rust_legacy/packet_decl_payload_field_variable_size_little_endian.rs":"50148c474458e8a894f574bb544718926c8cb5de81ad5dba59e10110b9b22457","tests/generated/rust_legacy/packet_decl_reserved_field_big_endian.rs":"f0be356cea956579ac9d1ae0c860458250fd7e88fe472b217ae9b1ce91734438","tests/generated/rust_legacy/packet_decl_reserved_field_little_endian.rs":"f0be356cea956579ac9d1ae0c860458250fd7e88fe472b217ae9b1ce91734438","tests/generated/rust_legacy/packet_decl_simple_scalars_big_endian.rs":"0690ed222df3d183ec8e444486081f4fea2059718399b6c0f88c433543277d7f","tests/generated/rust_legacy/packet_decl_simple_scalars_little_endian.rs":"d7b76e3a76d845bda3ad2add377ff62be1e9ca9493d6ed44b845592390caca8a","tests/generated/rust_legacy/payload_with_size_modifier_big_endian.rs":"c58e3fba94afd5359c1a2abf8c22602277bf534759a805814d4cc496c852d351","tests/generated/rust_legacy/payload_with_size_modifier_little_endian.rs":"c58e3fba94afd5359c1a2abf8c22602277bf534759a805814d4cc496c852d351","tests/generated/rust_legacy/preamble.rs":"aeb4ab0a3e878288c10dc837cc52915f30809e6768867234e75a77a12fdacde3","tests/generated/rust_legacy/reserved_identifier_big_endian.rs":"19f73d6d2d933c61c541769006ff6c9b7ee18217c394000374210c250f72617e","tests/generated/rust_legacy/reserved_identifier_little_endian.rs":"19f73d6d2d933c61c541769006ff6c9b7ee18217c394000374210c250f72617e","tests/generated/rust_legacy/struct_decl_complex_scalars_big_endian.rs":"016d410e273266b91f0dc119e0f292bed56060a4532dc85f8b25b02092aafcd8","tests/generated/rust_legacy/struct_decl_complex_scalars_little_endian.rs":"988f0cea7e5fa0cda8e025ffce86a7ea032cf35f77475c068f5592ca43126603","tests/generated/struct_decl_child_structs_big_endian.rs":"3d492764ef5f27a6a52f9a8d8e4c687ccc7ce029de796f836d347f4144fcfb05","tests/generated/struct_decl_child_structs_little_endian.rs":"9d777408a1d4d9764a91220cea37af553a21ad137fed84c8ae8ad88d64d57f1f","tests/generated/struct_decl_grand_children_big_endian.rs":"88ccc9ef3298f65e2a9ee29ea10770bca25237955d976978fa1f5cc34989630a","tests/generated/struct_decl_grand_children_little_endian.rs":"efe6aa39a468cd7177aec9f6b27f3be01eacd2da55ff674099df62a1a2a50131","tests/generated_files_compile.sh":"dbaafb30c8b355d919a4c36022cc5b4a619ce2e9da659f07f068d7cf9e816934","tests/python_generator_test.py":"f0f3c38f430d118265cfb7a7dbcdaf57f7b9632af87f226157ab0a87b2329f9d","tests/run_cxx_generator_tests.sh":"48095ed540898c3dfc25bffc26704cbc3c9f4ca00b67ddbcb80b36b8ff1a0e73","tests/run_python_generator_tests.sh":"a5fe8f3bad98112a121a79edff946a5e85c4ae8eb230b0628b1ffbb061cbf164","tests/run_rust_generator_tests.sh":"b03774c2b575389e1dfcd4b8b0f5a7d5ca19d44ea8ed81c4815a0317755a90df","tests/run_rust_legacy_generator_tests.sh":"f2e8c03949a6669b936fcba16a9bf5cfcff106da8d394521474410f4da206e2f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"fa0c0030b245905f0c418287fbb39cd47caaf756886fdeca6eb9d5e2252e0de4","Android.bp":"51d7212f5cc64bd87246bdbafc22e33e6e65f0822cb53ef1a49208126ca40a80","Cargo.lock":"0faf1f249b629faa6d9a0431b1de6cf58930abc4e70bdd1bc2277d2993ef038c","Cargo.toml":"844a985f3f0b931c4bac4017a866bae78d721adab605d20fc9ca7ebc7e2aa9d4","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"13b31e1f9a1c29a8af133451434ed0f75b3b1787311d95cd661eea2a9bef26c8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fe05ed75532bc8875c87b0056df00ecd93602f25deeb195928954ab68b74f3cd","TEST_MAPPING":"b1c46a7cc2dcd50aeedc1e528d7edd869719c15819d2c22e045f566faafdfee9","cargo2android_toplevel.bp.fragment":"537e07affcf4613b9f1661ddf8a43258a953c0e88ebe98220e5786b30f2c280d","cargo_embargo.json":"de670d5353979832b3dfa37f19612775233f45851f5c98368f775a8e41a8c7a5","patches/0002-Ensure-compatibility-with-python-3.8.patch":"692c9f4a41d7b9aebb4abb8388d02473001315589c761afbbb0e520577fe2c4b","patches/scripts-build.patch":"ea15b84aa8e89fed9824591d0c3d71e7169075fa0a9251f5c2dd0b854d145132","scripts/Android.bp":"b4ea36f33b15c5e5e669ae4e906a40e5135a070791db0160201826cf5090a8e7","scripts/generate_cxx_backend.py":"3869c2e5f7203b020bec1dc0edf3bf691f9765d5077a2bc4af1fc7dac628a867","scripts/generate_cxx_backend_tests.py":"4d3c25b8026bb2eb9c27a9d2b7e5a94fb14f2225a29a5e4761d43eaf256bbdcc","scripts/generate_python_backend.py":"b54b65c805476db26d8763c657e79055dc7b378b27426e9629c8ca30ca6c06f2","scripts/generate_test_vectors.py":"c1f1d136471fbe6de43bcb504a53e0631766757c9411017ea8d8d1d637b92c6b","scripts/packet_runtime.h":"b5cf397495216f01d8aa762b3b8e67ff04894994363d23f1b885d224b968da4e","scripts/pdl/ast.py":"57c987ec7eccadd19c36f66ec27cf6ffad2b5bb9b8d6fa748b51bc8ff3cf6f76","scripts/pdl/core.py":"3871344f4ab37625e45b882f928b7795ea0fbc40a2d555fa8bad4b65da4f3aa7","scripts/pdl/utils.py":"6cde5d37816d36aaedc058110f79e6df1c410d7e25aa683e1e308ab27b6a19b3","src/analyzer.rs":"0dc109203140445442794296c93eb8c8f55a98d1a2a73cd256056452aea45feb","src/ast.rs":"57090f573d5dc3c34c7de6803e7b4a17ea17b695f3d79fb0bafc30c0becd7d53","src/backends.rs":"0862788f8d9da790a4f5a0d8c192b16daf20aedb37b8646ac8f301f3126d9214","src/backends/intermediate.rs":"3e4efae306238eee7358402976b9f97d6a6661921098d4123fec35d7b2a8a6c3","src/backends/json.rs":"753546f723d3f43a52585e04fc5184055c9ca6f5c5d8ebe0e1f24f81f9df74ba","src/backends/rust/decoder.rs":"be931e9f80b929a48a754dd25b92052e612003de1721aff71324a9069363856b","src/backends/rust/encoder.rs":"458f25b2ede1f9a040eb32dc241865fcc99fa4bc32c5f19523ddf10dec6d373d","src/backends/rust/mod.rs":"67d421c357f8511d0334a321f430309a4569fdabda1d069aaee08e7599d01648","src/backends/rust/preamble.rs":"b90144f86faa6a7d7dac53b214de92367acd7c445332a8677c8a7d373a01fc94","src/backends/rust/test.rs":"e342b27270409df372cf2ff2838b49fd52f3d356b64ecae86ea37cfad9f91459","src/backends/rust/types.rs":"e240f80a668c94788df65c979a583b65abfc4e583301757735eca0e4e166e8ed","src/backends/rust_legacy/mod.rs":"27f6cdb485ffce297be30b036928dea988116ce32eebf6ccadc7645a209ca946","src/backends/rust_legacy/parser.rs":"6430cd6d8d6fd23ed4e881c6303f62e368013d86a3cc2a0ed2051afd59dd1c7c","src/backends/rust_legacy/preamble.rs":"78ab0ed11c27812b1c41d2dde1b17ac1e7661354f5369d88b5f82eb18ebba89d","src/backends/rust_legacy/serializer.rs":"3c40d44952c607b8ef0bbaf5b3f189ca2e516be1e3e745885158b92cca2359a3","src/backends/rust_legacy/test.rs":"f9b9419ab1dfe838eadeb7ce463e37d5b997119bd0f48f9373d9998d0c3ad5a8","src/backends/rust_legacy/types.rs":"ef9911743597719cabbb4fad55915effed27a2af2698112e7148b6d7a091573b","src/backends/rust_no_allocation/computed_values.rs":"bfb479369750a34d28d247b4006fb2864612150da2361390eca6cba3e67dba6f","src/backends/rust_no_allocation/enums.rs":"fd57724d9e88fb6c1097cdf114f7d97aa4ba6157fc95d5351dac3983cc72e973","src/backends/rust_no_allocation/mod.rs":"22215ba11cf06293bf592551396bf2176f84eef40d77df17797663d8af418869","src/backends/rust_no_allocation/packet_parser.rs":"a52547323256ea1da25949a730b29df09d1d37bf56f616e1b07781e844d9fc7b","src/backends/rust_no_allocation/packet_serializer.rs":"0eaca1dda66c5559c2972fde92fb61472b694cd6fc8eab4ef477efdadbb3fe6e","src/backends/rust_no_allocation/preamble.rs":"dabb6ac0ee07fc283e73020cecaf8ef3b7eae4d2701431d0d8ad881ef912254a","src/backends/rust_no_allocation/test.rs":"35d5574b217bd638ebfe6a9c53c39524e7f6d93005f15697d002b0120c2784bb","src/backends/rust_no_allocation/test_preamble.rs":"3b21edfd864a71e19f718e8d8e2aaba7456cfd6122855851d365a106157585c4","src/backends/rust_no_allocation/utils.rs":"43147a13f6bed52944a034e1632553cc9607c39ed6b11d5c328ab10a5f4ba6ec","src/lib.rs":"fe72dfe025fba632ce5c17bb8b19d7c16faeb7ae53139a2f1245f38fb71e1196","src/main.rs":"5886adf9a89aeb99dedbc9a0bb4c7aecb3b2c436f5efde9a3b76740e0ddfff22","src/parser.rs":"9d1a792710542510bc37242383716edec08d3e7bce81324426551fd5de46d21f","src/pdl.pest":"e4310c0fd6182d98a7f57ee87d70516c0eaeacae544a3cf98bb5ab0edc194732","src/test_utils.rs":"50168cc72679fa296797819f44e23e4db5074b8e277798d70dc088d07d2a5094","tests/canonical/be_test_vectors.json":"caf06ed0b00b1f93ad1a0523ea4b485c771683fe16bea033f4ede936c396bfa8","tests/canonical/le_rust_noalloc_test_file.pdl":"3fea1c495aa6fccc0fa0501828fa7808cb80f8c63f0514d495d769f6ed582248","tests/canonical/le_test_file.pdl":"cb17d3c913effcce9eb6bb01d8197966cde742ab8ec1fd5b1525a70765e440b4","tests/canonical/le_test_vectors.json":"4027390decf07bef030ca83c8ed4e4661a5ccb9e7e209f119666fd39dddc5ee7","tests/compile_rust_generated_files.sh":"28acebbb87b32a5d12048ba63702e32f2c244bdb01c1634f461e58f73e5f9450","tests/compile_rust_legacy_generated_files.sh":"6b71365306a116862f11dcd5d5d86b323f8983f3068df1a08c7f523aba6434b9","tests/custom_types.py":"f8a150a352b88ddeb8e57bcdb294c077f0743caea1039cc12f3ec9febb3f8a92","tests/generated/preamble.rs":"aeb4ab0a3e878288c10dc837cc52915f30809e6768867234e75a77a12fdacde3","tests/generated/rust/custom_field_declaration_big_endian.rs":"bbe642cdc9af69001af8a4e03778a08ae01d44b89e1a9240dc6c09181d65c362","tests/generated/rust/custom_field_declaration_little_endian.rs":"f51f9fb7659cd1d0649501d3007d64ad378cdd8ec6cf922f1d4c5fd2b83b7db2","tests/generated/rust/enum_declaration_big_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust/enum_declaration_little_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust/packet_decl_24bit_enum_array_big_endian.rs":"ec3af44730c71addc14fbc59970fc7fdf1796873162a8fbe474dcde23ee21f1e","tests/generated/rust/packet_decl_24bit_enum_array_little_endian.rs":"27d8edf3849e90316641de07b14b69a7437450ce104bce8871b46243f984f4f0","tests/generated/rust/packet_decl_24bit_enum_big_endian.rs":"9899a41e6a3df20fd4fa017caf12491ddaf89cf96945ce8e1eec95ef151d287d","tests/generated/rust/packet_decl_24bit_enum_little_endian.rs":"2fe2b73bddb54680612550a05ea4e7563c92bdbf1ddd53caac9251e27d7f9355","tests/generated/rust/packet_decl_24bit_scalar_array_big_endian.rs":"097275ea07c968081cbfd1eb11a3ac72deb1e95506e860d2165f1fb100b5e5f4","tests/generated/rust/packet_decl_24bit_scalar_array_little_endian.rs":"ecba62f8b01d29f795a3c80016a05c8f90a904c6fbd920647e1cebdfaf727152","tests/generated/rust/packet_decl_24bit_scalar_big_endian.rs":"a8640dbb27b230576a57c057f96290a748aa42ccd23d9f494df5301e9343e4b8","tests/generated/rust/packet_decl_24bit_scalar_little_endian.rs":"2099e07208fe45b24011350d240b0013cab2bd865292540dbb17bce20c5541f2","tests/generated/rust/packet_decl_64bit_enum_array_big_endian.rs":"e9cd490cb4b1661958f854a2f8b497d0f7d589c61624d86380998761f549deba","tests/generated/rust/packet_decl_64bit_enum_array_little_endian.rs":"ed9cc662442ae115eff54dd1a9be01134ec4217ec6f1687df32fbd5d75de17db","tests/generated/rust/packet_decl_64bit_enum_big_endian.rs":"c08564c98884b1ed5eefab05e56c0df0283649d99a344047397740ef7f836806","tests/generated/rust/packet_decl_64bit_enum_little_endian.rs":"d387872e14c9ce30c2cf6eda3fdd14ca2ba6f868e2456a15b8b5ed6c839540c3","tests/generated/rust/packet_decl_64bit_scalar_array_big_endian.rs":"27212f82b0c9b34be48b7bd15ee827e901cde95fcb263919b535661f40dc9cc9","tests/generated/rust/packet_decl_64bit_scalar_array_little_endian.rs":"a04f7c5cd8c8b0531f4426170fc6988f86bd03feff17e5c9529c74e38b2fb486","tests/generated/rust/packet_decl_64bit_scalar_big_endian.rs":"9a038921b24f842e2b0bec91f5ee0d99c19b585b41b56f35b28cc1b0b32f32e0","tests/generated/rust/packet_decl_64bit_scalar_little_endian.rs":"0c4faf9da595f8080e36c2e333928de8f63b87e88e221ed02a724309c3b5e482","tests/generated/rust/packet_decl_8bit_enum_array_big_endian.rs":"37098cf5b779c37ec27f4a3c2cd06f30a3660834fdd569b77bc720106cf3677b","tests/generated/rust/packet_decl_8bit_enum_array_little_endian.rs":"37098cf5b779c37ec27f4a3c2cd06f30a3660834fdd569b77bc720106cf3677b","tests/generated/rust/packet_decl_8bit_enum_big_endian.rs":"4c91dc83d6535a9908cbb8721ee6b80f2cb7a0981f710f4e331c8442039c3a14","tests/generated/rust/packet_decl_8bit_enum_little_endian.rs":"4c91dc83d6535a9908cbb8721ee6b80f2cb7a0981f710f4e331c8442039c3a14","tests/generated/rust/packet_decl_8bit_scalar_array_big_endian.rs":"12aa46a4d0537d04d0634cb95c34427a94b51d6ce82fa9a3110acded25c6c9eb","tests/generated/rust/packet_decl_8bit_scalar_array_little_endian.rs":"12aa46a4d0537d04d0634cb95c34427a94b51d6ce82fa9a3110acded25c6c9eb","tests/generated/rust/packet_decl_8bit_scalar_big_endian.rs":"87039c27a5df51ad8e88b225ca2eb04b4f5ba9ea13478ca2af013db63b1cca9b","tests/generated/rust/packet_decl_8bit_scalar_little_endian.rs":"87039c27a5df51ad8e88b225ca2eb04b4f5ba9ea13478ca2af013db63b1cca9b","tests/generated/rust/packet_decl_array_dynamic_count_big_endian.rs":"e8e64fca090771877011a7615ea8b88fb636ece01b39da2adc7bb9f48a669ed5","tests/generated/rust/packet_decl_array_dynamic_count_little_endian.rs":"c2cf334797ffd30ea02beafb5e24735c8639a36a52573fce35c8c7c77d1c18b2","tests/generated/rust/packet_decl_array_dynamic_element_size_big_endian.rs":"c1726d8d7fcd930127a38abc2f54153a126511e82e2c60e5bbc395d6572d5dd7","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_count_big_endian.rs":"9e721273efbb0147f919958b6748bc6425568f460a2961450ed074e0fe32b6fa","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_count_little_endian.rs":"9e721273efbb0147f919958b6748bc6425568f460a2961450ed074e0fe32b6fa","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_size_big_endian.rs":"f38619984f055b608016f2d675470a4fa7673b3dd769efc7109fba39bf8792e8","tests/generated/rust/packet_decl_array_dynamic_element_size_dynamic_size_little_endian.rs":"f38619984f055b608016f2d675470a4fa7673b3dd769efc7109fba39bf8792e8","tests/generated/rust/packet_decl_array_dynamic_element_size_little_endian.rs":"c1726d8d7fcd930127a38abc2f54153a126511e82e2c60e5bbc395d6572d5dd7","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_1_big_endian.rs":"95d34a931140b5a72feb30eeb7d70ffa588a34a05733d8570085af87459daa39","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_1_little_endian.rs":"95d34a931140b5a72feb30eeb7d70ffa588a34a05733d8570085af87459daa39","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_big_endian.rs":"9f032000cef23622fdf73860376e26234a487bd3b6a1554d3c4b7849b2fb1ea5","tests/generated/rust/packet_decl_array_dynamic_element_size_static_count_little_endian.rs":"9f032000cef23622fdf73860376e26234a487bd3b6a1554d3c4b7849b2fb1ea5","tests/generated/rust/packet_decl_array_dynamic_size_big_endian.rs":"8fd8128dbdfcaf2ff8e5fabfe3da41c2595b98537cd2ab584a31236b9a3920a4","tests/generated/rust/packet_decl_array_dynamic_size_little_endian.rs":"7c69028d647e39f1269fed910730fb8f856279fea4c67d22a525c97789383182","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_count_big_endian.rs":"f0794748901886a94c22cc5daea48848a074c84f18dd74eae46a50b679c59d80","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_count_little_endian.rs":"851e731c3123064a8b2a27ab4e2e35276bf3714229912e1dc09581a7bfe35605","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_size_big_endian.rs":"3d8a724838ce486e05fa761b610cca3d51b8cb9860737f744a874dd4a86eab68","tests/generated/rust/packet_decl_array_unknown_element_width_dynamic_size_little_endian.rs":"687b36b9526cd8bd594bf3506caed0d2ada79a5c956cc9cee7e3016523c271b5","tests/generated/rust/packet_decl_array_with_padding_big_endian.rs":"609ca7d815e04c39e090295c149a5a3eb100005e024fee1acc2b12e07571296d","tests/generated/rust/packet_decl_array_with_padding_little_endian.rs":"27c8f255d52c17f41450d81cf742a46c6ca70c7bd3fef9990dccd37423ce3bfe","tests/generated/rust/packet_decl_child_packets_big_endian.rs":"ea330dff221967925391f287226b0de97f37fc1c0e1fec3640a2515dd97360ac","tests/generated/rust/packet_decl_child_packets_little_endian.rs":"e91747e6820d967c91aef13604f9bb75c8743fc44b7f2c98fe7223a1c4e8779b","tests/generated/rust/packet_decl_complex_scalars_big_endian.rs":"561f7c519f3cfde5358ee70c67c190e04290e39a1430fc2d6a54adab37c12656","tests/generated/rust/packet_decl_complex_scalars_little_endian.rs":"36be70d21bd2f66e0968f9292fcaa86b6fd69af894ae02751cdb233802aaa02c","tests/generated/rust/packet_decl_custom_field_big_endian.rs":"66443125fffce8bd3f5443ef050cad40fe27c7bebae6a8ee75a7db6dd2d41f62","tests/generated/rust/packet_decl_custom_field_little_endian.rs":"43cf4b172520f9aeab1e691c32e0472a92e31ddbfc5825db869563adfd9d7197","tests/generated/rust/packet_decl_empty_big_endian.rs":"6ca5d0d2303dfc452b17f1df5ca69f1e3e3293b582afa9e32a0c7172b8cc3916","tests/generated/rust/packet_decl_empty_little_endian.rs":"6ca5d0d2303dfc452b17f1df5ca69f1e3e3293b582afa9e32a0c7172b8cc3916","tests/generated/rust/packet_decl_fixed_enum_field_big_endian.rs":"5e6185183c18d8fb8abcf2b4ed6d026496c5c4d24ed0481f6fb314c2796cadf2","tests/generated/rust/packet_decl_fixed_enum_field_little_endian.rs":"c65488dc17bc96fd8e22833bcb16707d29f6a8bdb10f8c60d370e857d1ee79fb","tests/generated/rust/packet_decl_fixed_scalar_field_big_endian.rs":"f8d891053f54f2e84b2856936b3b9929627624eabe0482347ad0c051a7e6904a","tests/generated/rust/packet_decl_fixed_scalar_field_little_endian.rs":"99f9bf63d9dd2de4cb19539e64669ad7ac7464d88c5c9ceb2f3869e63996f62a","tests/generated/rust/packet_decl_grand_children_big_endian.rs":"dc32bb6baf678450c577fb5d750baad5d334f3e6eff7ab28d0476a32e9fc5ce8","tests/generated/rust/packet_decl_grand_children_little_endian.rs":"2fe850a8bdfd18b2c3ce1fa86035ee4c7878eb6198b00b2d528c53741bdbe016","tests/generated/rust/packet_decl_mask_scalar_value_big_endian.rs":"28117acfa670cbe2362412567dd8f098cb871eb3b647859c70daa277f9709caa","tests/generated/rust/packet_decl_mask_scalar_value_little_endian.rs":"c5268f738a77579d29e705eea882239b49257ae1fa9100fa767ef0fa94607c54","tests/generated/rust/packet_decl_mixed_scalars_enums_big_endian.rs":"154c9ed7e2072a805dfb15ad2c67d2c6867704868f968ddec46ff90c23a69de9","tests/generated/rust/packet_decl_mixed_scalars_enums_little_endian.rs":"126561e32751703206630b0b4b5067ff05213f24e0fbc33ce744c0aa44837507","tests/generated/rust/packet_decl_parent_with_alias_child_big_endian.rs":"ebbd7c0a291a80cf03456f9cd3b4b2268ff1a2766ef45945a015a93dddcb1dcc","tests/generated/rust/packet_decl_parent_with_alias_child_little_endian.rs":"ebbd7c0a291a80cf03456f9cd3b4b2268ff1a2766ef45945a015a93dddcb1dcc","tests/generated/rust/packet_decl_parent_with_no_payload_big_endian.rs":"f3b1a4c7a75503b0c29c4ca85b68e69cb0dd9ab9fc325a2b07a5f4ce06c4475c","tests/generated/rust/packet_decl_parent_with_no_payload_little_endian.rs":"f3b1a4c7a75503b0c29c4ca85b68e69cb0dd9ab9fc325a2b07a5f4ce06c4475c","tests/generated/rust/packet_decl_payload_field_unknown_size_big_endian.rs":"db68aaca2fc9ec29a0791f88ea6d9f2b077fe60e3246e99d51ad0b94c8467ea9","tests/generated/rust/packet_decl_payload_field_unknown_size_little_endian.rs":"f09e51d62e557f3c70bdef73b62f8631dd79f8f08138fec755398745bbb0de5b","tests/generated/rust/packet_decl_payload_field_unknown_size_terminal_big_endian.rs":"afe38bcc039d67a34feb60b85aabaaed311e0a34023f9b4d89c47f8096af629a","tests/generated/rust/packet_decl_payload_field_unknown_size_terminal_little_endian.rs":"cbc4d86a5e223886a0e752d04f0bd1ebde4937b0a0c09c584fa493c6bba25e71","tests/generated/rust/packet_decl_payload_field_variable_size_big_endian.rs":"2f6eaefa93bd779baebe743174ab0eee5655a9419f14eb27f05d91f5eadf4793","tests/generated/rust/packet_decl_payload_field_variable_size_little_endian.rs":"4eb73ae5bcc0e395c7c941be6c5b17a3ad9cdd222e44912f0edfdb1995f13f6d","tests/generated/rust/packet_decl_reserved_field_big_endian.rs":"470fdd68b6c1a42f820d8dbed7a0143bf14ba215d95a58fc6b0ccdc3b3357036","tests/generated/rust/packet_decl_reserved_field_little_endian.rs":"470fdd68b6c1a42f820d8dbed7a0143bf14ba215d95a58fc6b0ccdc3b3357036","tests/generated/rust/packet_decl_simple_scalars_big_endian.rs":"4a2fe89a0c0691470424bbea69ef1f54c9bbcb2338e5378f805cf6d47a341481","tests/generated/rust/packet_decl_simple_scalars_little_endian.rs":"5f51424bb4dd9a7d8b38cbe2a2458479a6dcde328bd794439c70227bf3a34be0","tests/generated/rust/payload_with_size_modifier_big_endian.rs":"0faa7bd390c666db7a9d1824eeb8e3284acd67cf37b0a9c924363ddd6f3504b5","tests/generated/rust/payload_with_size_modifier_little_endian.rs":"0faa7bd390c666db7a9d1824eeb8e3284acd67cf37b0a9c924363ddd6f3504b5","tests/generated/rust/reserved_identifier_big_endian.rs":"93d45fed740fffa5eae863993b7abe32e443336f5bc7bf993759fcb09444cf92","tests/generated/rust/reserved_identifier_little_endian.rs":"93d45fed740fffa5eae863993b7abe32e443336f5bc7bf993759fcb09444cf92","tests/generated/rust/struct_decl_child_structs_big_endian.rs":"84eadeb2318701f7ac4960b862f868f9a90b2584454e6b5af73c6af34192ac4f","tests/generated/rust/struct_decl_child_structs_little_endian.rs":"995532b3d4580ca7e1f6ee3a801b608ab7d91c67e0ad4c6855e792cef0c1cc7e","tests/generated/rust/struct_decl_complex_scalars_big_endian.rs":"561f7c519f3cfde5358ee70c67c190e04290e39a1430fc2d6a54adab37c12656","tests/generated/rust/struct_decl_complex_scalars_little_endian.rs":"36be70d21bd2f66e0968f9292fcaa86b6fd69af894ae02751cdb233802aaa02c","tests/generated/rust/struct_decl_grand_children_big_endian.rs":"d30dec12c2f207cb65c4d53ce47b9e316f7da072318cb0c2d6d34f600b1eb97a","tests/generated/rust/struct_decl_grand_children_little_endian.rs":"cc02999c4791747faaaba0a20b4be0df10a0e1c83d18a3a91206ec002069dd2f","tests/generated/rust_legacy/custom_field_declaration_big_endian.rs":"e0a544bbf0bbfe7fdc3f9ebe6e16db3f691ef9f6b8218ff4c8b5118532f4bed0","tests/generated/rust_legacy/custom_field_declaration_little_endian.rs":"e0a544bbf0bbfe7fdc3f9ebe6e16db3f691ef9f6b8218ff4c8b5118532f4bed0","tests/generated/rust_legacy/enum_declaration_big_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust_legacy/enum_declaration_little_endian.rs":"3c0f2a7e67175c0fa286a2b668b6dfc689e9d7468078e19a8a3971bc6bc2c602","tests/generated/rust_legacy/packet_decl_24bit_enum_array_big_endian.rs":"21711bb0964c53c05bfe3466c0c98664d91a74cdbd3d4ab3fd12360045375492","tests/generated/rust_legacy/packet_decl_24bit_enum_array_little_endian.rs":"fb2f2599ce2d1039d9f4dab007e5237ef692e4a9266b62e7f0c4361c12018b2a","tests/generated/rust_legacy/packet_decl_24bit_enum_big_endian.rs":"13a9c4b95ea14785dbaafd5105cefdcb65e4dc90290522bf442f7035e1f582f4","tests/generated/rust_legacy/packet_decl_24bit_enum_little_endian.rs":"a65e42fe27d2457c2669c85c52267abb9f07ca9da0b4c912426fb82ed7a76fd4","tests/generated/rust_legacy/packet_decl_24bit_scalar_array_big_endian.rs":"7fc93a0e62c749a146a70129bfe3b9f7dd1edc2e3adc7b933d3eaf0c378de25f","tests/generated/rust_legacy/packet_decl_24bit_scalar_array_little_endian.rs":"e49d0f878888016262d5c038ddbde9ea32b3a10955dedd79a24c7983aa3e73ab","tests/generated/rust_legacy/packet_decl_24bit_scalar_big_endian.rs":"cf8d97661a44622fd3e6f0ca69d9abde3b39d093d0ac3d0d142f088c693c85f2","tests/generated/rust_legacy/packet_decl_24bit_scalar_little_endian.rs":"e94de891d69b058cdb6f780036ee9a7416fb839551d0fe34da90ee29f1ae7cda","tests/generated/rust_legacy/packet_decl_64bit_enum_array_big_endian.rs":"82b3f96bf35646373a1cce39a8aaa41eeff83f7174c521dce5b7e91a57e06571","tests/generated/rust_legacy/packet_decl_64bit_enum_array_little_endian.rs":"dc14c7870f21c5404a8386461812cfe95effd97c698f5b7409220ad67c8c8f7f","tests/generated/rust_legacy/packet_decl_64bit_enum_big_endian.rs":"fc00e4ffc1aa12e1deebbfc3def44cc85ebb2372ce61b04d5b579d795f1c44bd","tests/generated/rust_legacy/packet_decl_64bit_enum_little_endian.rs":"c2c93b7a2916f853083a6cb09f025bf110d7e7e7c8a70bf377ca50de34b79e54","tests/generated/rust_legacy/packet_decl_64bit_scalar_array_big_endian.rs":"6327bd0afc7ed20c9534f73fea601407630239404ce066a536128166942012a7","tests/generated/rust_legacy/packet_decl_64bit_scalar_array_little_endian.rs":"f330920197eaef572f5d86dd7b529ac41782c718293f636d2046dbbab604ce29","tests/generated/rust_legacy/packet_decl_64bit_scalar_big_endian.rs":"9a0e07e4d984ee1c6708a64b6e0efbe4cc9d2f11f97e7104b38ad10cfca541fd","tests/generated/rust_legacy/packet_decl_64bit_scalar_little_endian.rs":"39fbbc644c150f8965e968115ea662ca2eda1144ef4ce52e13f18118e8725d39","tests/generated/rust_legacy/packet_decl_8bit_enum_array_big_endian.rs":"aebb32d8e027c2b5a33a4b93f491f20617fcd0d37f69880c695bcd926ace90a5","tests/generated/rust_legacy/packet_decl_8bit_enum_array_little_endian.rs":"aebb32d8e027c2b5a33a4b93f491f20617fcd0d37f69880c695bcd926ace90a5","tests/generated/rust_legacy/packet_decl_8bit_enum_big_endian.rs":"c0cebcb80c7b0ef8cd9fe4d71132c4af01e82b485914353d02ac4924dbb86c47","tests/generated/rust_legacy/packet_decl_8bit_enum_little_endian.rs":"c0cebcb80c7b0ef8cd9fe4d71132c4af01e82b485914353d02ac4924dbb86c47","tests/generated/rust_legacy/packet_decl_8bit_scalar_array_big_endian.rs":"ed40f45d2a247d8f28ae3ebc0e04eb9c5b31ed8bfe9c8bc63e71a726b39b05f3","tests/generated/rust_legacy/packet_decl_8bit_scalar_array_little_endian.rs":"ed40f45d2a247d8f28ae3ebc0e04eb9c5b31ed8bfe9c8bc63e71a726b39b05f3","tests/generated/rust_legacy/packet_decl_8bit_scalar_big_endian.rs":"c48fe093d1cf51a0fe734600f7ee09dd6f6057fd8d080c19051644e0c38dd6bd","tests/generated/rust_legacy/packet_decl_8bit_scalar_little_endian.rs":"c48fe093d1cf51a0fe734600f7ee09dd6f6057fd8d080c19051644e0c38dd6bd","tests/generated/rust_legacy/packet_decl_array_dynamic_count_big_endian.rs":"1935fcc59cc2c29387f88b3ccda15629aea51f7a4724b3854327b638b14c656e","tests/generated/rust_legacy/packet_decl_array_dynamic_count_little_endian.rs":"0db8e572633fde01eed5c603e87c2d5a70731c1ab88b4c70927124ee508919f1","tests/generated/rust_legacy/packet_decl_array_dynamic_size_big_endian.rs":"5ba7163734b5ecd654ad6fbe3ff768f3e5c540a2cc81ee061de4bdb72164a106","tests/generated/rust_legacy/packet_decl_array_dynamic_size_little_endian.rs":"54f679a8db6b68df279580f974f51f9b38aa66e2340eed05d812817034236640","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_count_big_endian.rs":"d38a635993d36db72656716bc47ac955403c70372bef16c3b53d06df9bab7394","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_count_little_endian.rs":"9e3176bea53d4c0b6a634bc59dc4cd531957f4c3198f070f47cf685bd84851fe","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_size_big_endian.rs":"d67f1e22df9df0f00590e26a9eb4953e8b9ec58a393cfe049822a6726cb703d4","tests/generated/rust_legacy/packet_decl_array_unknown_element_width_dynamic_size_little_endian.rs":"7f9fc0f038358d7f40104a9da2c6de816a561dc3506cc20d9ba6294b8986ef35","tests/generated/rust_legacy/packet_decl_array_with_padding_big_endian.rs":"a9b528c6e457529606faecb43082b57f0d97fd139ea3018dd594b41eb0fd1483","tests/generated/rust_legacy/packet_decl_array_with_padding_little_endian.rs":"efa994e0b395d9b081fddd5b352008d53f4000ec9c5042446416ccadd39fb557","tests/generated/rust_legacy/packet_decl_child_packets_big_endian.rs":"89644ac0cfd5c14731b64bfb31d6ee08563e222d405311ac4c244ad5ebb4052d","tests/generated/rust_legacy/packet_decl_child_packets_little_endian.rs":"b0ae6dbbff7bb2e90b1afc854747e014af66094303b708ec613e55c3bbd2540b","tests/generated/rust_legacy/packet_decl_complex_scalars_big_endian.rs":"3acf078e190125f98b27849bb2e25891c2dda8c7dfe78dcac6c3a2c5f53caada","tests/generated/rust_legacy/packet_decl_complex_scalars_little_endian.rs":"0b625d49020d860113ec0aa7c495c28ae305757e23035a822869b6cda4b694dd","tests/generated/rust_legacy/packet_decl_custom_field_big_endian.rs":"0864065ef99139c2db93b206d357ef7ca1f0c435da2da5bc032e981a6d29de6a","tests/generated/rust_legacy/packet_decl_custom_field_little_endian.rs":"c99247ea7fc542e7933b6a85b1b3390ca87da9d7ae2149a5e4e19acd26e2af72","tests/generated/rust_legacy/packet_decl_empty_big_endian.rs":"51011432218ca06c9bc5f1c288cf48aaa181e635604a1d1173512bc39f12e4f7","tests/generated/rust_legacy/packet_decl_empty_little_endian.rs":"51011432218ca06c9bc5f1c288cf48aaa181e635604a1d1173512bc39f12e4f7","tests/generated/rust_legacy/packet_decl_fixed_enum_field_big_endian.rs":"e827caba4ed48d7fe304e2425202be45b777520ce22058ed9701d6e23b8d247e","tests/generated/rust_legacy/packet_decl_fixed_enum_field_little_endian.rs":"7666100ae555d29f04574a998234620863d7a4230ad50b0b83d1c2d96dfe0f1d","tests/generated/rust_legacy/packet_decl_fixed_scalar_field_big_endian.rs":"9cac7259faa360dead8d4f6780275e098f6fc040f8863346b77e67bb1c950f95","tests/generated/rust_legacy/packet_decl_fixed_scalar_field_little_endian.rs":"b6339b033c036503bf0678b214f4bfbf6fe556c733846d3fabe68bb69c1d81a6","tests/generated/rust_legacy/packet_decl_grand_children_big_endian.rs":"d8660632d907a8650c9cfd0fc96eb6e027d69cb447b79068d643944296e86fc6","tests/generated/rust_legacy/packet_decl_grand_children_little_endian.rs":"9c2cf888c6b714adaa1371a1b06a8984d901acbe30a9442f3e09308b3c21df81","tests/generated/rust_legacy/packet_decl_mask_scalar_value_big_endian.rs":"81b58abcf7a8d7050d7e43a7ce1ab4671d8a8c366d3248ede2360c551478a2a0","tests/generated/rust_legacy/packet_decl_mask_scalar_value_little_endian.rs":"fb6c7d13eb9f23eea0c39dcac6fa9d27b15cfea71a5a3fcb4e914a805e1f81e1","tests/generated/rust_legacy/packet_decl_mixed_scalars_enums_big_endian.rs":"33388596e774df6ed799f223c06639128ad0f876a65968bf853c4aedfa8b2f73","tests/generated/rust_legacy/packet_decl_mixed_scalars_enums_little_endian.rs":"328540cf4bd379189914f047b863f5fe7975770e60ca822c3eb8f7755b7d7a15","tests/generated/rust_legacy/packet_decl_parent_with_alias_child_big_endian.rs":"66ac0544e84ff923d6da1f6b95e8f81662a92a3c24767a147033ee2ab3326f62","tests/generated/rust_legacy/packet_decl_parent_with_alias_child_little_endian.rs":"66ac0544e84ff923d6da1f6b95e8f81662a92a3c24767a147033ee2ab3326f62","tests/generated/rust_legacy/packet_decl_parent_with_no_payload_big_endian.rs":"564e54552dfd4405099a52e1daf1beb0de33a8254692bf8bd74d70fdb35438da","tests/generated/rust_legacy/packet_decl_parent_with_no_payload_little_endian.rs":"564e54552dfd4405099a52e1daf1beb0de33a8254692bf8bd74d70fdb35438da","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_big_endian.rs":"5c865eb1a5b51bbfee4ef7998f057927a0ec220c504564111a56876fe48480b0","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_little_endian.rs":"319d04aa1a4f2b941b843ebd8474a1305a80c3ea5ec379a12a103b47004adfad","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_terminal_big_endian.rs":"cd3f5c6113463631338874bfbf34e18cfb22ec09d337b7efe5706e42fb6c85c1","tests/generated/rust_legacy/packet_decl_payload_field_unknown_size_terminal_little_endian.rs":"db9e63b6d8d09889bf38b014a01735b9d05798dcca4839d1fbd3ee81c9aa70f9","tests/generated/rust_legacy/packet_decl_payload_field_variable_size_big_endian.rs":"402ac10f8121e7e9088cd584516a750f5ce45bbe04e33b53950d2551f89e7a9c","tests/generated/rust_legacy/packet_decl_payload_field_variable_size_little_endian.rs":"50148c474458e8a894f574bb544718926c8cb5de81ad5dba59e10110b9b22457","tests/generated/rust_legacy/packet_decl_reserved_field_big_endian.rs":"f0be356cea956579ac9d1ae0c860458250fd7e88fe472b217ae9b1ce91734438","tests/generated/rust_legacy/packet_decl_reserved_field_little_endian.rs":"f0be356cea956579ac9d1ae0c860458250fd7e88fe472b217ae9b1ce91734438","tests/generated/rust_legacy/packet_decl_simple_scalars_big_endian.rs":"0690ed222df3d183ec8e444486081f4fea2059718399b6c0f88c433543277d7f","tests/generated/rust_legacy/packet_decl_simple_scalars_little_endian.rs":"d7b76e3a76d845bda3ad2add377ff62be1e9ca9493d6ed44b845592390caca8a","tests/generated/rust_legacy/payload_with_size_modifier_big_endian.rs":"c58e3fba94afd5359c1a2abf8c22602277bf534759a805814d4cc496c852d351","tests/generated/rust_legacy/payload_with_size_modifier_little_endian.rs":"c58e3fba94afd5359c1a2abf8c22602277bf534759a805814d4cc496c852d351","tests/generated/rust_legacy/preamble.rs":"aeb4ab0a3e878288c10dc837cc52915f30809e6768867234e75a77a12fdacde3","tests/generated/rust_legacy/reserved_identifier_big_endian.rs":"19f73d6d2d933c61c541769006ff6c9b7ee18217c394000374210c250f72617e","tests/generated/rust_legacy/reserved_identifier_little_endian.rs":"19f73d6d2d933c61c541769006ff6c9b7ee18217c394000374210c250f72617e","tests/generated/rust_legacy/struct_decl_complex_scalars_big_endian.rs":"016d410e273266b91f0dc119e0f292bed56060a4532dc85f8b25b02092aafcd8","tests/generated/rust_legacy/struct_decl_complex_scalars_little_endian.rs":"988f0cea7e5fa0cda8e025ffce86a7ea032cf35f77475c068f5592ca43126603","tests/generated/struct_decl_child_structs_big_endian.rs":"3d492764ef5f27a6a52f9a8d8e4c687ccc7ce029de796f836d347f4144fcfb05","tests/generated/struct_decl_child_structs_little_endian.rs":"9d777408a1d4d9764a91220cea37af553a21ad137fed84c8ae8ad88d64d57f1f","tests/generated/struct_decl_grand_children_big_endian.rs":"88ccc9ef3298f65e2a9ee29ea10770bca25237955d976978fa1f5cc34989630a","tests/generated/struct_decl_grand_children_little_endian.rs":"efe6aa39a468cd7177aec9f6b27f3be01eacd2da55ff674099df62a1a2a50131","tests/generated_files_compile.sh":"dbaafb30c8b355d919a4c36022cc5b4a619ce2e9da659f07f068d7cf9e816934","tests/python_generator_test.py":"f0f3c38f430d118265cfb7a7dbcdaf57f7b9632af87f226157ab0a87b2329f9d","tests/run_cxx_generator_tests.sh":"48095ed540898c3dfc25bffc26704cbc3c9f4ca00b67ddbcb80b36b8ff1a0e73","tests/run_python_generator_tests.sh":"a5fe8f3bad98112a121a79edff946a5e85c4ae8eb230b0628b1ffbb061cbf164","tests/run_rust_generator_tests.sh":"b03774c2b575389e1dfcd4b8b0f5a7d5ca19d44ea8ed81c4815a0317755a90df","tests/run_rust_legacy_generator_tests.sh":"f2e8c03949a6669b936fcba16a9bf5cfcff106da8d394521474410f4da206e2f"}}
\ No newline at end of file
diff --git a/crates/pdl-compiler/cargo_embargo.json b/crates/pdl-compiler/cargo_embargo.json
index 314873c..ccf5990 100644
--- a/crates/pdl-compiler/cargo_embargo.json
+++ b/crates/pdl-compiler/cargo_embargo.json
@@ -6,5 +6,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/percore/.android-checksum.json b/crates/percore/.android-checksum.json
index 32e64a9..6cc3535 100644
--- a/crates/percore/.android-checksum.json
+++ b/crates/percore/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0af736e29a67c228dbc49987a171453122936796196296c0b7c6bc8f9b08b99a","AUTHORS":"3adfb9d338ef8e6e57d16843ad11f4f6dd4613206e044201a85a7c0e8c50a1ea","Android.bp":"71360656832922ad52d85d07e916c6a2a0553b8f8efd74e5506f1d02eeb202ef","CHANGELOG.md":"8ec4cc98f7ac8339c6fbf52af11e6cf9c75695ba72f7fbf1f2a227346e607ac4","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"02cc8b64921c69011d8e517f07212552c0b06426cbcc387efba419cbf22ab6c7","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"7af2c867aaa05358e336c14a766370ac718ed9f52e2f33614f6b06ba4f6c16c2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f7c04aef61846c637f1f9b71135cb95309b577bc49cded49587e1b8661b808d9","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"e289a23f0cae83d0ae473bd71c0c6ce7fb3a3f0ea1855ef898eb95dfcede8fac","src/exceptions.rs":"d8099e010630f082865bb70e01f4792c0e8cb17dc9d8d4aa440470b8a09b84f5","src/exceptions/aarch64.rs":"94341a18870d4e076c1703b5d7cb6e764244c4645a38b2a21dcdaedccbf3c117","src/lib.rs":"83d22cae5a2822eab7d82a491657560e7d516f83cb1e45051f657071d9a7c7bf","src/lock.rs":"b7dc8b226d4e8061785f92aac878c5c9a0c77f9749e2517ac2ff0bcde42da2c7"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0af736e29a67c228dbc49987a171453122936796196296c0b7c6bc8f9b08b99a","AUTHORS":"3adfb9d338ef8e6e57d16843ad11f4f6dd4613206e044201a85a7c0e8c50a1ea","Android.bp":"edcaed668f9ef680d856a6050bbcfae30040c4f694bfaee298353c307c5d02ba","CHANGELOG.md":"8ec4cc98f7ac8339c6fbf52af11e6cf9c75695ba72f7fbf1f2a227346e607ac4","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"02cc8b64921c69011d8e517f07212552c0b06426cbcc387efba419cbf22ab6c7","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"7af2c867aaa05358e336c14a766370ac718ed9f52e2f33614f6b06ba4f6c16c2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f7c04aef61846c637f1f9b71135cb95309b577bc49cded49587e1b8661b808d9","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"54f0ef7bd7a1938a0029bea03b576fd6dfc086b92f11dadad09616372eff6348","src/exceptions.rs":"d8099e010630f082865bb70e01f4792c0e8cb17dc9d8d4aa440470b8a09b84f5","src/exceptions/aarch64.rs":"94341a18870d4e076c1703b5d7cb6e764244c4645a38b2a21dcdaedccbf3c117","src/lib.rs":"83d22cae5a2822eab7d82a491657560e7d516f83cb1e45051f657071d9a7c7bf","src/lock.rs":"b7dc8b226d4e8061785f92aac878c5c9a0c77f9749e2517ac2ff0bcde42da2c7"}}
\ No newline at end of file
diff --git a/crates/percore/Android.bp b/crates/percore/Android.bp
index 287fc21..d1878da 100644
--- a/crates/percore/Android.bp
+++ b/crates/percore/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/percore/cargo_embargo.json b/crates/percore/cargo_embargo.json
index c2b6aa8..7d1819b 100644
--- a/crates/percore/cargo_embargo.json
+++ b/crates/percore/cargo_embargo.json
@@ -6,5 +6,6 @@
"no_std": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pest/.android-checksum.json b/crates/pest/.android-checksum.json
index 1e5a0c1..a5f441c 100644
--- a/crates/pest/.android-checksum.json
+++ b/crates/pest/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"cdde510d5924db641607aaee8d313aa0b40a0d7c100de601891c5dce87591aea","Android.bp":"1243fc2e98e033ad4e0fbf85c941cf143db92d98be184cea3553d239bb1f2570","Cargo.lock":"f488836b71ba71e612b83b329cb7dff4cabc15baed2bb9e3d67d70e27db7e275","Cargo.toml":"667351c56c0f7d1daf70e4f580eec965061442b466d81a9d05e0c70ba8591851","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"912819439138efca188168246c461fe94148c4bff52b17e34f64ccf770771032","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","benches/stack.rs":"a478a50088dd856013c70af56033a168ee04331e32e2fe7cc12343f58d8b77c1","cargo_embargo.json":"c4bc402e468f799517c5e4fd27f860346eceacf3f83a5425d784096de0de059d","examples/parens.rs":"053ba20d94a4b2c63ac9ebf3bb5a8b96dd643ceee59971a929b8a85917ad709a","src/error.rs":"54efe4bc4863aa9f8e78db6a79df80251e6ef86b0f3306f9a6d99d1ab57af156","src/iterators/flat_pairs.rs":"9b2721223d388869c89c5b979f2a75bb02c6d709803bd6ee402bbeabe881ac8f","src/iterators/line_index.rs":"9fdde71baf171e3f172e1670db03fc5b009251b52776cd953a7efe3002ec768b","src/iterators/mod.rs":"9836bae04ffe28fe593a7064a99e57b6dee72be79b04d3cdb9c8170878252bb5","src/iterators/pair.rs":"a9d7153eaaf3c6a9e656b6da889cb71027c431b18d7a6a5d75618d04d04f70a7","src/iterators/pairs.rs":"25322626b5c5906e93304d28504fbc077677b915b3bfd44f977abd552e355b12","src/iterators/queueable_token.rs":"818a6de06bd9d83a9fc3a5774fb603bb006d15ac2b299260821ff235ab26a33e","src/iterators/tokens.rs":"c223e57acb67c704c977fd4dfa50c6df5d093ff7f511f4677e5f878c7d8245e4","src/lib.rs":"0ac246abe59d241da1e023902ac2004eb4be74765a118dc194ee99cbe82608f5","src/macros.rs":"daf83d6169f4f95275ff90079d8fc5e88a957152741038e497b4ec5c80721786","src/parser.rs":"da707fbeba3369716f6e360bea1a5baa31521c816f9ac692943c9c13fc19e03c","src/parser_state.rs":"74e8b8fb858893f8202c6d0b62e9f1bb98e0823c95dab887aac976af524f0d6a","src/position.rs":"378fdad5fe241044b436f4bca17fa8e9513819daeed98121bcb3eb39060ad108","src/pratt_parser.rs":"f78eecb5f034d854c420a6d51804224f45495ebdbd067da55e19631acb35df65","src/prec_climber.rs":"b2b7c41d693587b7519ee83777b976dfc96c2d985a1fb7cca7f1ba6995f6c01d","src/span.rs":"65bf03a088039954f4b5dba36b71d71fd52cc107cabb97dddb47bb5dbc869651","src/stack.rs":"e9344f5b48162fcb0dd1583a99d8911a169556e510dcded62474ef09f35bae50","src/token.rs":"37854e475ec35949eb54bf7c646f744a08cb1957496372175c833c7275030183","src/unicode/binary.rs":"05c53276afc9355d03753532e734c5f587f5adec6c0b7facf287e910b2b776f3","src/unicode/category.rs":"98a7ee3469e3e2177176a78e1b7c5f4e70f141ffbc5023aa3063fb3689d9e9f3","src/unicode/mod.rs":"e13da8f6e45f3c6145def5b084b2793558f07574104b447084ffa1e9e202e0c9","src/unicode/script.rs":"7280388746daab5bbda7b712560a014f3755fcf2bcee562cb7f9fbb4d1f84d93","tests/calculator.rs":"222ff37fa37520af461de84bb354f37dab29eb79c56e547663b9319caaa02334","tests/json.rs":"380d2f7acd3a3fd2992ac14d74d925c8d242b183b593a22fdfaba6408a355944"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"cdde510d5924db641607aaee8d313aa0b40a0d7c100de601891c5dce87591aea","Android.bp":"1243fc2e98e033ad4e0fbf85c941cf143db92d98be184cea3553d239bb1f2570","Cargo.lock":"f488836b71ba71e612b83b329cb7dff4cabc15baed2bb9e3d67d70e27db7e275","Cargo.toml":"667351c56c0f7d1daf70e4f580eec965061442b466d81a9d05e0c70ba8591851","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"912819439138efca188168246c461fe94148c4bff52b17e34f64ccf770771032","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","benches/stack.rs":"a478a50088dd856013c70af56033a168ee04331e32e2fe7cc12343f58d8b77c1","cargo_embargo.json":"3773be1cecd24e51eab3567636172de75d2a4a99efce828c2f31752dee3a6f30","examples/parens.rs":"053ba20d94a4b2c63ac9ebf3bb5a8b96dd643ceee59971a929b8a85917ad709a","src/error.rs":"54efe4bc4863aa9f8e78db6a79df80251e6ef86b0f3306f9a6d99d1ab57af156","src/iterators/flat_pairs.rs":"9b2721223d388869c89c5b979f2a75bb02c6d709803bd6ee402bbeabe881ac8f","src/iterators/line_index.rs":"9fdde71baf171e3f172e1670db03fc5b009251b52776cd953a7efe3002ec768b","src/iterators/mod.rs":"9836bae04ffe28fe593a7064a99e57b6dee72be79b04d3cdb9c8170878252bb5","src/iterators/pair.rs":"a9d7153eaaf3c6a9e656b6da889cb71027c431b18d7a6a5d75618d04d04f70a7","src/iterators/pairs.rs":"25322626b5c5906e93304d28504fbc077677b915b3bfd44f977abd552e355b12","src/iterators/queueable_token.rs":"818a6de06bd9d83a9fc3a5774fb603bb006d15ac2b299260821ff235ab26a33e","src/iterators/tokens.rs":"c223e57acb67c704c977fd4dfa50c6df5d093ff7f511f4677e5f878c7d8245e4","src/lib.rs":"0ac246abe59d241da1e023902ac2004eb4be74765a118dc194ee99cbe82608f5","src/macros.rs":"daf83d6169f4f95275ff90079d8fc5e88a957152741038e497b4ec5c80721786","src/parser.rs":"da707fbeba3369716f6e360bea1a5baa31521c816f9ac692943c9c13fc19e03c","src/parser_state.rs":"74e8b8fb858893f8202c6d0b62e9f1bb98e0823c95dab887aac976af524f0d6a","src/position.rs":"378fdad5fe241044b436f4bca17fa8e9513819daeed98121bcb3eb39060ad108","src/pratt_parser.rs":"f78eecb5f034d854c420a6d51804224f45495ebdbd067da55e19631acb35df65","src/prec_climber.rs":"b2b7c41d693587b7519ee83777b976dfc96c2d985a1fb7cca7f1ba6995f6c01d","src/span.rs":"65bf03a088039954f4b5dba36b71d71fd52cc107cabb97dddb47bb5dbc869651","src/stack.rs":"e9344f5b48162fcb0dd1583a99d8911a169556e510dcded62474ef09f35bae50","src/token.rs":"37854e475ec35949eb54bf7c646f744a08cb1957496372175c833c7275030183","src/unicode/binary.rs":"05c53276afc9355d03753532e734c5f587f5adec6c0b7facf287e910b2b776f3","src/unicode/category.rs":"98a7ee3469e3e2177176a78e1b7c5f4e70f141ffbc5023aa3063fb3689d9e9f3","src/unicode/mod.rs":"e13da8f6e45f3c6145def5b084b2793558f07574104b447084ffa1e9e202e0c9","src/unicode/script.rs":"7280388746daab5bbda7b712560a014f3755fcf2bcee562cb7f9fbb4d1f84d93","tests/calculator.rs":"222ff37fa37520af461de84bb354f37dab29eb79c56e547663b9319caaa02334","tests/json.rs":"380d2f7acd3a3fd2992ac14d74d925c8d242b183b593a22fdfaba6408a355944"}}
\ No newline at end of file
diff --git a/crates/pest/cargo_embargo.json b/crates/pest/cargo_embargo.json
index 7f619c0..3903813 100644
--- a/crates/pest/cargo_embargo.json
+++ b/crates/pest/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pest_derive/.android-checksum.json b/crates/pest_derive/.android-checksum.json
index bcab406..2e5491d 100644
--- a/crates/pest_derive/.android-checksum.json
+++ b/crates/pest_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"342400cbe945540429efb61d9657dd5268feb6c5355eb358374324dfca7bf925","Android.bp":"fd36054c13ab0702dd59c578749fe770dc216c0f60c6e6e88aa432e9413111c5","Cargo.lock":"05c2eca8f28037543a0053853a1ff7ff06fd0784d10aef9a383bd160c3041172","Cargo.toml":"d7a9705dc0f3928d6a6834a674c9a5b9d6c7eec0035b64d6b885c6f03feb6419","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1f7a1dd36ac1420d5149b746604f0380115314d359bfacfcb3c787fb3b0d3431","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"a312c0e7105c9c5ffc84080c106ad3800ed7cb35ed0457c19e84fb6f44392840","examples/base.pest":"1f200b18e4e84a4966531ab0e0eebb950cadc72fcde2c8e1156bbfd0e870a9ab","examples/calc.pest":"a9369c6eede083ef8cb7de3aca7b78cbc91ccc29dcaa1d8a433e958d5c50e932","examples/calc.rs":"2d9888f3c44818ede455a313c9f20217543d51f837fb679aa5cf12fb415d18ef","examples/help-menu.pest":"16c86e7a3d2dfcb26b261d328167d4b8aae187bd54cc9a691fa966a0886234a2","examples/help-menu.rs":"66d4b6f10e1a9db840887a5e6f78829eb566d06f9d2f75e32fd8530b7a5ad5d9","src/lib.rs":"34cdcc0d25e78c2ec50903c6f001f79321068bbad87f88ca5c951289905a41f5","tests/grammar.pest":"13a27a33c21d6e752897829ce884cccafa29bbf36f1ba8f972390071dbde3e88","tests/grammar.rs":"2f7775d57b328e783b16e1f30106dcd15afb4c851bb85c05157fcac7d494758a","tests/grammar_inline.rs":"fbc64141cfe2d073794c7ac402ba46266c57c18d226d5dfe8464644f5f4c446b","tests/implicit.pest":"4af86b6dc9872bd2891751e1e102ad8e0b21d9d81163cb0a9157eccf6fac293c","tests/implicit.rs":"e4c5b35551835bcc1075933a68d251bee16c0874666bba8a8be90097a247c592","tests/lists.pest":"f7654b3240ca07969740b993c203d20e59b90cb846240271a634bfc92d663308","tests/lists.rs":"f9eac63c7e48dd4a2140c5cf0bb06b5d0b16a6a165af3cd46e3a7f072f04d323","tests/oneormore.pest":"01490dabc2b1598720bcfba13b3c9fd42441786ab267f5cc919452c40c2ce5e7","tests/oneormore.rs":"5030143dfc0765a8f458539f6367766e24823530712bbefc2e5a116105a74fa6","tests/opt.pest":"1340ebc55fb4e5c38b6656ca4ad22d6145bd8e1a7444aa4ed6b41a8aad40351f","tests/opt.rs":"8ae2d183511c3e228b2b4b29689478cf4c87a11cd2e705fe618142f65c892dd5","tests/reporting.pest":"1a573e5238d59ddf94b79c42aaf8d8e4447e7f6c2d812530db657c488cc012e3","tests/reporting.rs":"babea6d074335e542f89465512cd5ee96bb3b72f851edf9ce5b82b47a290e8fe"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"342400cbe945540429efb61d9657dd5268feb6c5355eb358374324dfca7bf925","Android.bp":"fd36054c13ab0702dd59c578749fe770dc216c0f60c6e6e88aa432e9413111c5","Cargo.lock":"05c2eca8f28037543a0053853a1ff7ff06fd0784d10aef9a383bd160c3041172","Cargo.toml":"d7a9705dc0f3928d6a6834a674c9a5b9d6c7eec0035b64d6b885c6f03feb6419","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1f7a1dd36ac1420d5149b746604f0380115314d359bfacfcb3c787fb3b0d3431","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"ddc100d19df97d3642eb5e056881018d61c80240cbc4780d4a3a0fb45e5d60c4","examples/base.pest":"1f200b18e4e84a4966531ab0e0eebb950cadc72fcde2c8e1156bbfd0e870a9ab","examples/calc.pest":"a9369c6eede083ef8cb7de3aca7b78cbc91ccc29dcaa1d8a433e958d5c50e932","examples/calc.rs":"2d9888f3c44818ede455a313c9f20217543d51f837fb679aa5cf12fb415d18ef","examples/help-menu.pest":"16c86e7a3d2dfcb26b261d328167d4b8aae187bd54cc9a691fa966a0886234a2","examples/help-menu.rs":"66d4b6f10e1a9db840887a5e6f78829eb566d06f9d2f75e32fd8530b7a5ad5d9","src/lib.rs":"34cdcc0d25e78c2ec50903c6f001f79321068bbad87f88ca5c951289905a41f5","tests/grammar.pest":"13a27a33c21d6e752897829ce884cccafa29bbf36f1ba8f972390071dbde3e88","tests/grammar.rs":"2f7775d57b328e783b16e1f30106dcd15afb4c851bb85c05157fcac7d494758a","tests/grammar_inline.rs":"fbc64141cfe2d073794c7ac402ba46266c57c18d226d5dfe8464644f5f4c446b","tests/implicit.pest":"4af86b6dc9872bd2891751e1e102ad8e0b21d9d81163cb0a9157eccf6fac293c","tests/implicit.rs":"e4c5b35551835bcc1075933a68d251bee16c0874666bba8a8be90097a247c592","tests/lists.pest":"f7654b3240ca07969740b993c203d20e59b90cb846240271a634bfc92d663308","tests/lists.rs":"f9eac63c7e48dd4a2140c5cf0bb06b5d0b16a6a165af3cd46e3a7f072f04d323","tests/oneormore.pest":"01490dabc2b1598720bcfba13b3c9fd42441786ab267f5cc919452c40c2ce5e7","tests/oneormore.rs":"5030143dfc0765a8f458539f6367766e24823530712bbefc2e5a116105a74fa6","tests/opt.pest":"1340ebc55fb4e5c38b6656ca4ad22d6145bd8e1a7444aa4ed6b41a8aad40351f","tests/opt.rs":"8ae2d183511c3e228b2b4b29689478cf4c87a11cd2e705fe618142f65c892dd5","tests/reporting.pest":"1a573e5238d59ddf94b79c42aaf8d8e4447e7f6c2d812530db657c488cc012e3","tests/reporting.rs":"babea6d074335e542f89465512cd5ee96bb3b72f851edf9ce5b82b47a290e8fe"}}
\ No newline at end of file
diff --git a/crates/pest_derive/cargo_embargo.json b/crates/pest_derive/cargo_embargo.json
index fc39f8b..294a916 100644
--- a/crates/pest_derive/cargo_embargo.json
+++ b/crates/pest_derive/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pest_generator/.android-checksum.json b/crates/pest_generator/.android-checksum.json
index d16035f..2ef1933 100644
--- a/crates/pest_generator/.android-checksum.json
+++ b/crates/pest_generator/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3ae08460988dbccb11757257a8b143f85c92286fdeda0c4d056fadeae4044337","Android.bp":"6649afc7911a5c155d85ee67c65c0a04cf71f59f87ca474a9c733d3d261b3656","Cargo.toml":"2cda83978ec6ff9cca0e36dd6b9ee88dfbf69589f73e219496e62fb585045f29","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"aa4e506347229c5caedc047f7b8382fa4aa66a05847478973ac57187985e082d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"3ca1544e82177080d7388ff17069a5f1766ba92138a9e2c502c156a296f418d8","src/docs.rs":"bf0ca813afd16b6f3f4ae9bc6818f389bad0773249081895225b85bef2fea208","src/generator.rs":"c3df900c8448042d2011c08cf852480e8ff8a31c423c656f3df7500145be6d17","src/lib.rs":"7ff0e9dfe50cacb698a6b1c5e8e83d1b9aea42e9c367e4a515e1255a398245e1","src/macros.rs":"7bb24e482baae1b7f5a7845da000c2fb7a9417a802cdc27eb0de393efc73612c","src/parse_derive.rs":"b49de93f401c13928c662b0436ae7f4d08eb9af11139a6ee7b23fd400215c7eb","tests/base.pest":"842b80623c38d4c5221105126135fc42fa7c8a9b631677d6f3013068370dc149","tests/test.pest":"84526a2b662665a3ed83baf588dbeaf8e92e1898b904d4c69f7c16d7b1c399ac"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3ae08460988dbccb11757257a8b143f85c92286fdeda0c4d056fadeae4044337","Android.bp":"6649afc7911a5c155d85ee67c65c0a04cf71f59f87ca474a9c733d3d261b3656","Cargo.toml":"2cda83978ec6ff9cca0e36dd6b9ee88dfbf69589f73e219496e62fb585045f29","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"aa4e506347229c5caedc047f7b8382fa4aa66a05847478973ac57187985e082d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"9c8a78d6aafaced208b48624d45c88c66faccfc4dc44d1671ed28a9476b2a072","src/docs.rs":"bf0ca813afd16b6f3f4ae9bc6818f389bad0773249081895225b85bef2fea208","src/generator.rs":"c3df900c8448042d2011c08cf852480e8ff8a31c423c656f3df7500145be6d17","src/lib.rs":"7ff0e9dfe50cacb698a6b1c5e8e83d1b9aea42e9c367e4a515e1255a398245e1","src/macros.rs":"7bb24e482baae1b7f5a7845da000c2fb7a9417a802cdc27eb0de393efc73612c","src/parse_derive.rs":"b49de93f401c13928c662b0436ae7f4d08eb9af11139a6ee7b23fd400215c7eb","tests/base.pest":"842b80623c38d4c5221105126135fc42fa7c8a9b631677d6f3013068370dc149","tests/test.pest":"84526a2b662665a3ed83baf588dbeaf8e92e1898b904d4c69f7c16d7b1c399ac"}}
\ No newline at end of file
diff --git a/crates/pest_generator/cargo_embargo.json b/crates/pest_generator/cargo_embargo.json
index 808c1c4..a93cbd0 100644
--- a/crates/pest_generator/cargo_embargo.json
+++ b/crates/pest_generator/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pest_meta/.android-checksum.json b/crates/pest_meta/.android-checksum.json
index 2829bb6..9e776e2 100644
--- a/crates/pest_meta/.android-checksum.json
+++ b/crates/pest_meta/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f64d124d3ae1a57dc3edabaec567b4788b07969eb5315553de5b1ec350e08d9d","Android.bp":"a2da9cb831076114cc9834b3b18af2eba09ad60f91486f75074cbf030d56cd65","Cargo.toml":"9d91c8c69fee2f7faf898dcdc11eb3750a4e3c41af6a4e046d6ce4d8d055178a","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3c7d45f633c1ead8559a6f768f050573fc500a821368e0fe9b7336b52633f930","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"c5d605ed2e9d4fee60736ad7fb51cae33b2e26c246def1fc511c1a97ddd8f82b","src/ast.rs":"9f9429e6156dd2404d50d1be2cb35074b35a575df1b92054c447fb9f13a59715","src/grammar.pest":"c251b4227b1f7bde4a8ce51da0dbda6f0b74e1a3656a0f89dc102059f45592b2","src/grammar.rs":"d14610fdea41c41ea535ad86ada51f161f97e733aaf828d00f72201b15aeec41","src/lib.rs":"94ee7173be768deddc652da00c552c66478322b9cb78c9e26b6fcffcd62fda08","src/optimizer/concatenator.rs":"f9274358964959ce93b448c76cd113d11bb4283ca1229ad74e240fa4b0f5b24d","src/optimizer/factorizer.rs":"0a867ef8594e8889b56e5dae47fd6b110caa27b4f44bcc1ebd9702aea05191c6","src/optimizer/lister.rs":"19543cd8a7fc8f77a02743ba2c11442df575e44efd02875ffdf763e34d7b8052","src/optimizer/mod.rs":"fbb59c9d221bfd5a7b9a6645893c0ae3340d6c082de9965c5a298a35df49f759","src/optimizer/restorer.rs":"3b3b8818ea675061d279160a32ccdaed91896b528ba0d31f9f221514aee54fba","src/optimizer/rotater.rs":"da08287b320acdfabfac863afe93e5069f9f7f57d5ba26fac9f0465b0fa70e0a","src/optimizer/skipper.rs":"29b1f89b19798ca8e5204fe7abcb6b9d27da75ae9181bf1edf2799253ea73469","src/optimizer/unroller.rs":"5f1d2e532cee022c01c6ebd2d5b54c54c34903fefe386fb107a9791610729176","src/parser.rs":"0bfe373c4a60a86eca455a09878b07755683e31ac4a461b27401e6cf8d2c40cc","src/validator.rs":"b269baa100abfe80892853302a22c283cab3c26ce339169836a010aa0cccbef8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f64d124d3ae1a57dc3edabaec567b4788b07969eb5315553de5b1ec350e08d9d","Android.bp":"a2da9cb831076114cc9834b3b18af2eba09ad60f91486f75074cbf030d56cd65","Cargo.toml":"9d91c8c69fee2f7faf898dcdc11eb3750a4e3c41af6a4e046d6ce4d8d055178a","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3c7d45f633c1ead8559a6f768f050573fc500a821368e0fe9b7336b52633f930","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","_README.md":"6b973bfc5a49b890c6c47d4705f7f6ae59ec30552d0c3fd0fccf77bb1c694157","cargo_embargo.json":"310c966b1068c1f0643a84fa43b427e1dbde6dc67d936dc728bc7d00f1c7cbdf","src/ast.rs":"9f9429e6156dd2404d50d1be2cb35074b35a575df1b92054c447fb9f13a59715","src/grammar.pest":"c251b4227b1f7bde4a8ce51da0dbda6f0b74e1a3656a0f89dc102059f45592b2","src/grammar.rs":"d14610fdea41c41ea535ad86ada51f161f97e733aaf828d00f72201b15aeec41","src/lib.rs":"94ee7173be768deddc652da00c552c66478322b9cb78c9e26b6fcffcd62fda08","src/optimizer/concatenator.rs":"f9274358964959ce93b448c76cd113d11bb4283ca1229ad74e240fa4b0f5b24d","src/optimizer/factorizer.rs":"0a867ef8594e8889b56e5dae47fd6b110caa27b4f44bcc1ebd9702aea05191c6","src/optimizer/lister.rs":"19543cd8a7fc8f77a02743ba2c11442df575e44efd02875ffdf763e34d7b8052","src/optimizer/mod.rs":"fbb59c9d221bfd5a7b9a6645893c0ae3340d6c082de9965c5a298a35df49f759","src/optimizer/restorer.rs":"3b3b8818ea675061d279160a32ccdaed91896b528ba0d31f9f221514aee54fba","src/optimizer/rotater.rs":"da08287b320acdfabfac863afe93e5069f9f7f57d5ba26fac9f0465b0fa70e0a","src/optimizer/skipper.rs":"29b1f89b19798ca8e5204fe7abcb6b9d27da75ae9181bf1edf2799253ea73469","src/optimizer/unroller.rs":"5f1d2e532cee022c01c6ebd2d5b54c54c34903fefe386fb107a9791610729176","src/parser.rs":"0bfe373c4a60a86eca455a09878b07755683e31ac4a461b27401e6cf8d2c40cc","src/validator.rs":"b269baa100abfe80892853302a22c283cab3c26ce339169836a010aa0cccbef8"}}
\ No newline at end of file
diff --git a/crates/pest_meta/cargo_embargo.json b/crates/pest_meta/cargo_embargo.json
index f492845..62c7ea0 100644
--- a/crates/pest_meta/cargo_embargo.json
+++ b/crates/pest_meta/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/petgraph/.android-checksum.json b/crates/petgraph/.android-checksum.json
index e20aa96..37c09d8 100644
--- a/crates/petgraph/.android-checksum.json
+++ b/crates/petgraph/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"33477362463e2da552dd3a3e7d82278848e346351abde30e19d383e30e35e6aa","Android.bp":"46fde675b3720be59cd5f548567835972c9f487dd26d2a33f90f35816684ea62","CONTRIBUTING.rst":"d03494456a0d6a50e008795deb4908e3f1f6cfd9a9063a7effff4132df12abfe","Cargo.toml":"78621a2e61337d35b95bf040f471fe796a074f3e0be9c94ed12ec72d79481fe1","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"69aa97fe71428bb8ce56f95d8869add5c061b3a4d4f41be5ee6cc0117ebde54b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"296cc78f74c225702431a7b6265096852a6e7a4de7c35be1d2617da619e58258","README.md":"4d60db7a1b3d2ca209c42e2c2453c3c14ed4ecbd057f8219ed690d8fd8d5d917","RELEASES.rst":"73bf720721651610574022302c2573356883b514647f9ce6e1f2cb7bd08f0d17","assets/LICENSE.md":"7c15084836c46847d610f01533efb0ac2e002663b0a545b1933bc59582b46103","assets/graphosaurus-128.png":"04a54426a21d633f5daf2f85bb4edc2f55cd17638ef435473e1ad6404f9a75bf","assets/graphosaurus-256.png":"33fd21f3ccdb5506c69be890741ca809367e2b62a9cdce15a226da5300a45fb8","assets/graphosaurus-512.png":"efe630a7391c2c29a921e45d19576639c722206578efc19f3090f19386fa38ea","assets/graphosaurus-64.png":"436c3b1c3b45f9a269d0004aaa0a2329a3e903d40502cdf95ed8ce04b3028b22","assets/graphosaurus.svg":"d4b7b21e2b3ab5b963282c639233c9bc2fb0efca374c20b69fb0055f4650624e","assets/pridosaurus-128.png":"a219c6d6dbd08922f2cc7fd4bf2386759ee9706467d1f256ba167098a6514d6c","assets/pridosaurus-256.png":"67e20eeb40ad8a69c73cc573c4ea6ce14279f65eccb514486a7bc601557c88e9","assets/pridosaurus-512.png":"de7a70c3e99854e7fc2715b5d6d26ea20f9a395011dde66978dbed718640ff5f","assets/pridosaurus-64.png":"343d42763a186176818df075d383c709bec3f242ff708da129a41d35787bbeb2","assets/pridosaurus.svg":"96531ac1e529bd315c53d714f5f1bcddc197d894c5bf6707f3b7ee1c22ce8fa6","benches/bellman_ford.rs":"ea9681b25eecb6c9ae7240009c65e44426bd34ba2f52ea727712df7098ec158c","benches/common/factories.rs":"bc0aeb668da3e7a502f940091c6c4cd58a57daa243c4f6e437d89a7940613e34","benches/common/mod.rs":"7bea997aec9981c8d176319851442089b50bd9b0fbb66ba1092524494d669bf6","benches/dijkstra.rs":"66f63fe43ac27a8680f9f5ef5e00f192788cf96b30e1625548539d1b250c10e8","benches/feedback_arc_set.rs":"7a92e989375731fd4b7aa70d00f4a21000b5ed904ff70547383b6c46fdabd28f","benches/floyd_warshall.rs":"66044c5a48d6b3e5c0ecdc912ee20d729c86dfdd7710f4dfc8905cef7b9de7bf","benches/ford_fulkerson.rs":"f8cb3e7ba3366d8489fec42f2f2a21dd0720357e0e005c9a7a809bf7c22db132","benches/graphmap.rs":"49af5db69255ca3f7d350e3bff9f199c1cdb06b382b2d76d4a3da629a20a570b","benches/iso.rs":"1e358e0bdf8aaf2f9a98789770b042fa155bc2c0dbdd351ca6c3bc900857b748","benches/k_shortest_path.rs":"e12702b67d3f999670bf355f83fa261c0ce077039f7a64da3f6596ece6615426","benches/matching.rs":"9e29a6fe846a55460ab5b2c156090276a3ef16df5c1616c0e33e0b110febd410","benches/matrix_graph.rs":"d9560819ec9d440611e7966a2153589ce36bfa52747609ddb26a29b13787df10","benches/min_spanning_tree.rs":"8d09cea6ae715f14603e8fea1127b486387fcfc01e9971102d8c5616f1bb279c","benches/ograph.rs":"c2d9559951a238da7044edeaaaf8bce21523cff3230559fc9f944e7307f714aa","benches/page_rank.rs":"27b8096c03a9cce5d573001d9b2a1162ef5e35ad653231f6d3dba7d321e99346","benches/serialize.rs":"fec06407519e891ac7facaaa565db52272f62d1201546396bf4fc909ea12e8e9","benches/stable_graph.rs":"0d44bb8e1cb77a0e791067624e5999a7349a4215ae9c847547947f93204f0731","benches/unionfind.rs":"8031748646580635d7ce620c05ad5c8bf36671826a4423f5c57e4671ba8ad1b6","cargo_embargo.json":"762c744fbd4c3e924a9d034fd3c3e4e1399622b96d67058be0ca151ee0b63ba0","clippy.toml":"77f84b723c0ccd85477dac08c7882346f152fbad8253d9eb3e4416f2e69467c2","custom.css":"c57064030e490b33c79d44c1a6ba8f1ba4515f3df031c45fd9e10403c34f7d21","graph-example.dot":"aba5ea2d44664c5d36f304fe532fa39d71829cbc97f73ac03ec65a01b1b8f78c","src/adj.rs":"b1d8304389969fcac4b1cf6359fbd70c3deb5adbda208dfdddb818bb578920d2","src/algo/astar.rs":"6eb15e24654ca19549898c2743423d53c5fe130c96bdf9f534d9a0d11f2dc18a","src/algo/bellman_ford.rs":"cc1a4580435c8e0b0f19dcec3afa7833fce50a2698986336f8e9bbb1400f93df","src/algo/dijkstra.rs":"03434eaf7dddddee4f78b1c9889f30cc50d070cf9319801ecad46c9a879a7050","src/algo/dominators.rs":"5fecd822345120a85849101342786cbd2a80aab3b3c5e836d2b25bb6e400fdae","src/algo/feedback_arc_set.rs":"37bf558098b675819916744ba442ff8f4170c59a7bf9f4acdc29e4bc7f524d10","src/algo/floyd_warshall.rs":"5fd49426e26063d6579c259f42740cf285393f224ba71759936b169f3dd1b962","src/algo/ford_fulkerson.rs":"694e84cd312fa224ed6ac0eef29c2265d158cc06a4bb5b37044876bf9e20e32d","src/algo/isomorphism.rs":"c6d21e98657c95dd8225b5e32e68f5969c0f386c77df405a9d82cd68ba83fbef","src/algo/k_shortest_path.rs":"ae7ef862888ac50b37cbb016b5ed7eab53373284d131c275bfb2a5b7f28b44b8","src/algo/matching.rs":"8917eaa8e537f0d08230cbdac20b04a0292a89c6b8889cd89d46647cac3350bf","src/algo/min_spanning_tree.rs":"791ec5a54b69ddb8c217b97feaaf948a7c0a59a70e998bd4295e94cd8fdf99a5","src/algo/mod.rs":"967d3cb0cb98918cd622188cdd54638ee002ba7022445a2ccd1fb5c73ce40ae8","src/algo/page_rank.rs":"d4399e85212fce46ee13974dd0828eae9407cfbeb58e92c5ce2676a573380170","src/algo/simple_paths.rs":"5c4e53c5cf3388635f3558799082e30b455e06bd99b0f0c9d178aa715a889821","src/algo/tred.rs":"59efa87656e2754fe8bd5514696e42327e66b8e00b2f2bb85f04eb8101f5f123","src/csr.rs":"315c87b770c92a45857f70468393ae22c1d7632d07c4e657aaa819332580532e","src/data.rs":"d8e3369db257d869f046d48e7690142c62ba3f249343e46f1316bdbc94e24ce6","src/dot.rs":"7a84c4dd2be033b765ab892a21420d55139770e641bace327aa6f5f2528a8584","src/generate.rs":"d2431e0358c78901ea4467d5acc584529a5227089f230353b053d7879d3f2944","src/graph_impl/frozen.rs":"7edf21579785b7ca345c6991709b9ddcfc26cfcd247e6b399c8e04dbaf30a292","src/graph_impl/mod.rs":"7ee8b81fb07823c9490996f0494fa3b75857e607d5150abd3e527b77d6635c6b","src/graph_impl/serialization.rs":"b2e3f83650beba139ec3d1de4cbcd8e1b0b9a3cc7c9dcc63491e9b073b9e6e5c","src/graph_impl/stable_graph/mod.rs":"f09419ee905d422d460ec7d0d4d87d6151acb38b0bf782f6f3f1650d106f6798","src/graph_impl/stable_graph/serialization.rs":"a1e6fd0ce81d19aef8fc0a659eb63ac02641f6f3c7a6f67a2d641a3c63dad197","src/graphmap.rs":"a66d267c6e6b82c29247d6c6f7ca3780d65b67bb32cd97548c6234e94cdc2655","src/iter_format.rs":"fce42d06ba06baeea92ad8cd7d02b01ff1a786ea9f4e24daaf8609eb617da25d","src/iter_utils.rs":"fe4f0d1300eba8a700ae6219cab2238da1681ada68687f394843313c397a3bea","src/lib.rs":"baaf60d26a75be4b555438954100967e8a33955c2331c89db8f921f33b577c14","src/macros.rs":"bdcc10738a922e8f831153965bb0ffa3c85063b1f66afa49ca1fba34ed4652c1","src/matrix_graph.rs":"dfd07cad3ea5efa5a864597228ab8cd42124d2d65ad24fa8dc35500bb0f3b77a","src/operator.rs":"f1f31e0b57ce846f62f8d46718d91768c1cb34cc8dc4149636a177a227355b75","src/prelude.rs":"88330948467b3d8fde968995bf31d88c5811e9af997b912635771d636d08c101","src/quickcheck.rs":"40e4d3567b8a9014b824a5ee1fff049abe72fe637697bfbe75d4537806a78623","src/scored.rs":"bcde750427fde37afc0771210a7a1b635d54e5ccf651165914410926bf1096d6","src/serde_utils.rs":"1be75292df05f2ccca4593d16cf3340e8f7c0e360b80ff48425824bd433cae5d","src/traits_graph.rs":"4b9912e792c7fdeaf8ab6bc5bf4acb6564ab3e7f2e0ab8833c4e682f798d5693","src/unionfind.rs":"c85905bab84b10808edfad9ec97d809280cb374a1415ccbf549f2ca4cd212d7c","src/util.rs":"eb2714c1af51b985fec97e46f3e86fcc7b0d36eea07b8845fe44177bb7f53569","src/visit/dfsvisit.rs":"a9031afbe4dc178b9669db44b878f195f77faccf4c0886847abe498ea1063002","src/visit/filter.rs":"66be127cfcaa610c69a36a965e9c3d30e1efab6ac76ff145f8c3a5e947638e6c","src/visit/macros.rs":"c979011279f15dc44002f6fa7d8dbb81ad2b90d7220b82e4b211ec37adbbfbf5","src/visit/mod.rs":"b0534a7796de255085a33b84f82a7f46b439746422b2365bcd0d1001927ac570","src/visit/reversed.rs":"70dd5783d8d5c490ee8c592442031b45ae77194bac1eafb726d6c95ebc2695a1","src/visit/traversal.rs":"dd57778450a7d83514b450a216e34f187455f40ee12a5818765c01de50a6c00b","tests/floyd_warshall.rs":"7644680acb9be684e7ec5a205df46fc54345efb90a6b1308d5880ed0670b0d73","tests/ford_fulkerson.rs":"042166e7a1432b57e568ad037e5e9283e0a6b09417652c483d0903af6a654c28","tests/graph.rs":"ad9a37bda85f2f7847cf12bd73c47750b215a521ad93f34fc466ad894aa1c8df","tests/graphmap.rs":"79a89fc30b68c6ec31f289c1b5bbb91eee3edf30c914664a4240db08d57d6d7c","tests/iso.rs":"3bf5940dd2088eb518c178520d883db57f627d1735d6bba9ad5d0d2a5b86466a","tests/k_shortest_path.rs":"f59527698913eab06a72da56f1868fb564c9bc4d0b2147a51acd710df3a37e3b","tests/list.rs":"ce962054f50af179b09d74805604aff2a2f2e8a020e3ec53d2ce3f5ecd698a38","tests/matching.rs":"48dfca42c37ec1d04f6b8a177f2b7c1addd99ef9214d8a69f9cc5270348fab8e","tests/min_spanning_tree.rs":"76750e1d6ea786f806ce8e7d2718e3a094199dc93c37cc657a7352949c10ca23","tests/operator.rs":"5db5e9d361ef5e2466ff19d832e2dfeb7e6a7feffe67da30a54d4e75a27b8efb","tests/page_rank.rs":"d5f6a97cf9b77201233d619f1c1dd0b101d8275b90d0232eccab87b177d5e6db","tests/quickcheck.rs":"070ae537b3a18e875857337cb29b30716ef6f5a588d9415d478c3114814780ca","tests/res/graph_1000n_1000e.txt":"fd8c9ad2e39aa6f90257dbbe7acfa9081217cbd953c01f8f79ccf63343be95e7","tests/res/graph_1000n_1000e_iso.txt":"a19cc1c5cb0160d987bba5cb3f997e6b43dda465d8c9a8573a60532b4bf99082","tests/res/graph_100n_100e.txt":"6b4015e6f3ccf5d139e20e8c7a253143e114c13ed0322854f1510681294d3de4","tests/res/graph_100n_100e_iso.txt":"2e97c88d38ddb2ffa38e0c13a946c5fe7ea9a02b1f35043035ecbacdc606e3ab","tests/stable_graph.rs":"745e68109b5c2262abc758d01d0e4862a5030b90e39f9baa4d7ed8d33c9dd718","tests/unionfind.rs":"a5e6cfee9582d5c8799d8a7061b37351f4cc9e5014f1259aef946e33ad3fc7e9","tests/utils/mod.rs":"69b0419da8a222b656b78249d4b0514fcd54982e07a6a45c7015cb8e64891359","tests/utils/qc.rs":"b8f80d3cea49bdbc47eecf5d23130c792e9369f540a8350781c10c3848df1ec0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"33477362463e2da552dd3a3e7d82278848e346351abde30e19d383e30e35e6aa","Android.bp":"18572addbfb715a5d075885285318e0ea310fbd4dd036eb11ce0958bba7d5b3f","CONTRIBUTING.rst":"d03494456a0d6a50e008795deb4908e3f1f6cfd9a9063a7effff4132df12abfe","Cargo.toml":"78621a2e61337d35b95bf040f471fe796a074f3e0be9c94ed12ec72d79481fe1","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"69aa97fe71428bb8ce56f95d8869add5c061b3a4d4f41be5ee6cc0117ebde54b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"296cc78f74c225702431a7b6265096852a6e7a4de7c35be1d2617da619e58258","README.md":"4d60db7a1b3d2ca209c42e2c2453c3c14ed4ecbd057f8219ed690d8fd8d5d917","RELEASES.rst":"73bf720721651610574022302c2573356883b514647f9ce6e1f2cb7bd08f0d17","assets/LICENSE.md":"7c15084836c46847d610f01533efb0ac2e002663b0a545b1933bc59582b46103","assets/graphosaurus-128.png":"04a54426a21d633f5daf2f85bb4edc2f55cd17638ef435473e1ad6404f9a75bf","assets/graphosaurus-256.png":"33fd21f3ccdb5506c69be890741ca809367e2b62a9cdce15a226da5300a45fb8","assets/graphosaurus-512.png":"efe630a7391c2c29a921e45d19576639c722206578efc19f3090f19386fa38ea","assets/graphosaurus-64.png":"436c3b1c3b45f9a269d0004aaa0a2329a3e903d40502cdf95ed8ce04b3028b22","assets/graphosaurus.svg":"d4b7b21e2b3ab5b963282c639233c9bc2fb0efca374c20b69fb0055f4650624e","assets/pridosaurus-128.png":"a219c6d6dbd08922f2cc7fd4bf2386759ee9706467d1f256ba167098a6514d6c","assets/pridosaurus-256.png":"67e20eeb40ad8a69c73cc573c4ea6ce14279f65eccb514486a7bc601557c88e9","assets/pridosaurus-512.png":"de7a70c3e99854e7fc2715b5d6d26ea20f9a395011dde66978dbed718640ff5f","assets/pridosaurus-64.png":"343d42763a186176818df075d383c709bec3f242ff708da129a41d35787bbeb2","assets/pridosaurus.svg":"96531ac1e529bd315c53d714f5f1bcddc197d894c5bf6707f3b7ee1c22ce8fa6","benches/bellman_ford.rs":"ea9681b25eecb6c9ae7240009c65e44426bd34ba2f52ea727712df7098ec158c","benches/common/factories.rs":"bc0aeb668da3e7a502f940091c6c4cd58a57daa243c4f6e437d89a7940613e34","benches/common/mod.rs":"7bea997aec9981c8d176319851442089b50bd9b0fbb66ba1092524494d669bf6","benches/dijkstra.rs":"66f63fe43ac27a8680f9f5ef5e00f192788cf96b30e1625548539d1b250c10e8","benches/feedback_arc_set.rs":"7a92e989375731fd4b7aa70d00f4a21000b5ed904ff70547383b6c46fdabd28f","benches/floyd_warshall.rs":"66044c5a48d6b3e5c0ecdc912ee20d729c86dfdd7710f4dfc8905cef7b9de7bf","benches/ford_fulkerson.rs":"f8cb3e7ba3366d8489fec42f2f2a21dd0720357e0e005c9a7a809bf7c22db132","benches/graphmap.rs":"49af5db69255ca3f7d350e3bff9f199c1cdb06b382b2d76d4a3da629a20a570b","benches/iso.rs":"1e358e0bdf8aaf2f9a98789770b042fa155bc2c0dbdd351ca6c3bc900857b748","benches/k_shortest_path.rs":"e12702b67d3f999670bf355f83fa261c0ce077039f7a64da3f6596ece6615426","benches/matching.rs":"9e29a6fe846a55460ab5b2c156090276a3ef16df5c1616c0e33e0b110febd410","benches/matrix_graph.rs":"d9560819ec9d440611e7966a2153589ce36bfa52747609ddb26a29b13787df10","benches/min_spanning_tree.rs":"8d09cea6ae715f14603e8fea1127b486387fcfc01e9971102d8c5616f1bb279c","benches/ograph.rs":"c2d9559951a238da7044edeaaaf8bce21523cff3230559fc9f944e7307f714aa","benches/page_rank.rs":"27b8096c03a9cce5d573001d9b2a1162ef5e35ad653231f6d3dba7d321e99346","benches/serialize.rs":"fec06407519e891ac7facaaa565db52272f62d1201546396bf4fc909ea12e8e9","benches/stable_graph.rs":"0d44bb8e1cb77a0e791067624e5999a7349a4215ae9c847547947f93204f0731","benches/unionfind.rs":"8031748646580635d7ce620c05ad5c8bf36671826a4423f5c57e4671ba8ad1b6","cargo_embargo.json":"513f06b1f39e3f9aaabbebac0b427376b3dd80a7286cf43bfdf5436d4151c696","clippy.toml":"77f84b723c0ccd85477dac08c7882346f152fbad8253d9eb3e4416f2e69467c2","custom.css":"c57064030e490b33c79d44c1a6ba8f1ba4515f3df031c45fd9e10403c34f7d21","graph-example.dot":"aba5ea2d44664c5d36f304fe532fa39d71829cbc97f73ac03ec65a01b1b8f78c","src/adj.rs":"b1d8304389969fcac4b1cf6359fbd70c3deb5adbda208dfdddb818bb578920d2","src/algo/astar.rs":"6eb15e24654ca19549898c2743423d53c5fe130c96bdf9f534d9a0d11f2dc18a","src/algo/bellman_ford.rs":"cc1a4580435c8e0b0f19dcec3afa7833fce50a2698986336f8e9bbb1400f93df","src/algo/dijkstra.rs":"03434eaf7dddddee4f78b1c9889f30cc50d070cf9319801ecad46c9a879a7050","src/algo/dominators.rs":"5fecd822345120a85849101342786cbd2a80aab3b3c5e836d2b25bb6e400fdae","src/algo/feedback_arc_set.rs":"37bf558098b675819916744ba442ff8f4170c59a7bf9f4acdc29e4bc7f524d10","src/algo/floyd_warshall.rs":"5fd49426e26063d6579c259f42740cf285393f224ba71759936b169f3dd1b962","src/algo/ford_fulkerson.rs":"694e84cd312fa224ed6ac0eef29c2265d158cc06a4bb5b37044876bf9e20e32d","src/algo/isomorphism.rs":"c6d21e98657c95dd8225b5e32e68f5969c0f386c77df405a9d82cd68ba83fbef","src/algo/k_shortest_path.rs":"ae7ef862888ac50b37cbb016b5ed7eab53373284d131c275bfb2a5b7f28b44b8","src/algo/matching.rs":"8917eaa8e537f0d08230cbdac20b04a0292a89c6b8889cd89d46647cac3350bf","src/algo/min_spanning_tree.rs":"791ec5a54b69ddb8c217b97feaaf948a7c0a59a70e998bd4295e94cd8fdf99a5","src/algo/mod.rs":"967d3cb0cb98918cd622188cdd54638ee002ba7022445a2ccd1fb5c73ce40ae8","src/algo/page_rank.rs":"d4399e85212fce46ee13974dd0828eae9407cfbeb58e92c5ce2676a573380170","src/algo/simple_paths.rs":"5c4e53c5cf3388635f3558799082e30b455e06bd99b0f0c9d178aa715a889821","src/algo/tred.rs":"59efa87656e2754fe8bd5514696e42327e66b8e00b2f2bb85f04eb8101f5f123","src/csr.rs":"315c87b770c92a45857f70468393ae22c1d7632d07c4e657aaa819332580532e","src/data.rs":"d8e3369db257d869f046d48e7690142c62ba3f249343e46f1316bdbc94e24ce6","src/dot.rs":"7a84c4dd2be033b765ab892a21420d55139770e641bace327aa6f5f2528a8584","src/generate.rs":"d2431e0358c78901ea4467d5acc584529a5227089f230353b053d7879d3f2944","src/graph_impl/frozen.rs":"7edf21579785b7ca345c6991709b9ddcfc26cfcd247e6b399c8e04dbaf30a292","src/graph_impl/mod.rs":"7ee8b81fb07823c9490996f0494fa3b75857e607d5150abd3e527b77d6635c6b","src/graph_impl/serialization.rs":"b2e3f83650beba139ec3d1de4cbcd8e1b0b9a3cc7c9dcc63491e9b073b9e6e5c","src/graph_impl/stable_graph/mod.rs":"f09419ee905d422d460ec7d0d4d87d6151acb38b0bf782f6f3f1650d106f6798","src/graph_impl/stable_graph/serialization.rs":"a1e6fd0ce81d19aef8fc0a659eb63ac02641f6f3c7a6f67a2d641a3c63dad197","src/graphmap.rs":"a66d267c6e6b82c29247d6c6f7ca3780d65b67bb32cd97548c6234e94cdc2655","src/iter_format.rs":"fce42d06ba06baeea92ad8cd7d02b01ff1a786ea9f4e24daaf8609eb617da25d","src/iter_utils.rs":"fe4f0d1300eba8a700ae6219cab2238da1681ada68687f394843313c397a3bea","src/lib.rs":"baaf60d26a75be4b555438954100967e8a33955c2331c89db8f921f33b577c14","src/macros.rs":"bdcc10738a922e8f831153965bb0ffa3c85063b1f66afa49ca1fba34ed4652c1","src/matrix_graph.rs":"dfd07cad3ea5efa5a864597228ab8cd42124d2d65ad24fa8dc35500bb0f3b77a","src/operator.rs":"f1f31e0b57ce846f62f8d46718d91768c1cb34cc8dc4149636a177a227355b75","src/prelude.rs":"88330948467b3d8fde968995bf31d88c5811e9af997b912635771d636d08c101","src/quickcheck.rs":"40e4d3567b8a9014b824a5ee1fff049abe72fe637697bfbe75d4537806a78623","src/scored.rs":"bcde750427fde37afc0771210a7a1b635d54e5ccf651165914410926bf1096d6","src/serde_utils.rs":"1be75292df05f2ccca4593d16cf3340e8f7c0e360b80ff48425824bd433cae5d","src/traits_graph.rs":"4b9912e792c7fdeaf8ab6bc5bf4acb6564ab3e7f2e0ab8833c4e682f798d5693","src/unionfind.rs":"c85905bab84b10808edfad9ec97d809280cb374a1415ccbf549f2ca4cd212d7c","src/util.rs":"eb2714c1af51b985fec97e46f3e86fcc7b0d36eea07b8845fe44177bb7f53569","src/visit/dfsvisit.rs":"a9031afbe4dc178b9669db44b878f195f77faccf4c0886847abe498ea1063002","src/visit/filter.rs":"66be127cfcaa610c69a36a965e9c3d30e1efab6ac76ff145f8c3a5e947638e6c","src/visit/macros.rs":"c979011279f15dc44002f6fa7d8dbb81ad2b90d7220b82e4b211ec37adbbfbf5","src/visit/mod.rs":"b0534a7796de255085a33b84f82a7f46b439746422b2365bcd0d1001927ac570","src/visit/reversed.rs":"70dd5783d8d5c490ee8c592442031b45ae77194bac1eafb726d6c95ebc2695a1","src/visit/traversal.rs":"dd57778450a7d83514b450a216e34f187455f40ee12a5818765c01de50a6c00b","tests/floyd_warshall.rs":"7644680acb9be684e7ec5a205df46fc54345efb90a6b1308d5880ed0670b0d73","tests/ford_fulkerson.rs":"042166e7a1432b57e568ad037e5e9283e0a6b09417652c483d0903af6a654c28","tests/graph.rs":"ad9a37bda85f2f7847cf12bd73c47750b215a521ad93f34fc466ad894aa1c8df","tests/graphmap.rs":"79a89fc30b68c6ec31f289c1b5bbb91eee3edf30c914664a4240db08d57d6d7c","tests/iso.rs":"3bf5940dd2088eb518c178520d883db57f627d1735d6bba9ad5d0d2a5b86466a","tests/k_shortest_path.rs":"f59527698913eab06a72da56f1868fb564c9bc4d0b2147a51acd710df3a37e3b","tests/list.rs":"ce962054f50af179b09d74805604aff2a2f2e8a020e3ec53d2ce3f5ecd698a38","tests/matching.rs":"48dfca42c37ec1d04f6b8a177f2b7c1addd99ef9214d8a69f9cc5270348fab8e","tests/min_spanning_tree.rs":"76750e1d6ea786f806ce8e7d2718e3a094199dc93c37cc657a7352949c10ca23","tests/operator.rs":"5db5e9d361ef5e2466ff19d832e2dfeb7e6a7feffe67da30a54d4e75a27b8efb","tests/page_rank.rs":"d5f6a97cf9b77201233d619f1c1dd0b101d8275b90d0232eccab87b177d5e6db","tests/quickcheck.rs":"070ae537b3a18e875857337cb29b30716ef6f5a588d9415d478c3114814780ca","tests/res/graph_1000n_1000e.txt":"fd8c9ad2e39aa6f90257dbbe7acfa9081217cbd953c01f8f79ccf63343be95e7","tests/res/graph_1000n_1000e_iso.txt":"a19cc1c5cb0160d987bba5cb3f997e6b43dda465d8c9a8573a60532b4bf99082","tests/res/graph_100n_100e.txt":"6b4015e6f3ccf5d139e20e8c7a253143e114c13ed0322854f1510681294d3de4","tests/res/graph_100n_100e_iso.txt":"2e97c88d38ddb2ffa38e0c13a946c5fe7ea9a02b1f35043035ecbacdc606e3ab","tests/stable_graph.rs":"745e68109b5c2262abc758d01d0e4862a5030b90e39f9baa4d7ed8d33c9dd718","tests/unionfind.rs":"a5e6cfee9582d5c8799d8a7061b37351f4cc9e5014f1259aef946e33ad3fc7e9","tests/utils/mod.rs":"69b0419da8a222b656b78249d4b0514fcd54982e07a6a45c7015cb8e64891359","tests/utils/qc.rs":"b8f80d3cea49bdbc47eecf5d23130c792e9369f540a8350781c10c3848df1ec0"}}
\ No newline at end of file
diff --git a/crates/petgraph/Android.bp b/crates/petgraph/Android.bp
index 9d0e460..69ba3b8 100644
--- a/crates/petgraph/Android.bp
+++ b/crates/petgraph/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/petgraph/cargo_embargo.json b/crates/petgraph/cargo_embargo.json
index 1bbaa25..bc7882c 100644
--- a/crates/petgraph/cargo_embargo.json
+++ b/crates/petgraph/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": false
-}
+ "tests": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pin-project-internal/.android-checksum.json b/crates/pin-project-internal/.android-checksum.json
index fbbd9ab..617bce3 100644
--- a/crates/pin-project-internal/.android-checksum.json
+++ b/crates/pin-project-internal/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ed8fc9686d5897aa34d55c8a30b09ed261e7cd5e0402225352ae172cd4645278","Android.bp":"b8087c576fe18444306d8a4d047f0eafad0f60621b7247f509f7e6e7a364c092","Cargo.toml":"12dca4958d418036cc6f7b74e3d6eda3072dbe6dd97e8d198b577cb5ffbd26f4","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"c01c938d490481da3988cc1f7e48be3629e8a51468e9f6a95f4bef2fc63800db","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"41fe943b979ce266ae7fc1df55149ddc11cbc7c5644d30182d11a108425021d0","cargo_embargo.json":"80e3af5ff1e9593338164130c83467447c80389394a58c3ef14791315d17439e","src/error.rs":"60b638a87addf641f4906be11b62a17116cde20b90c54392d7d4bc923c94de17","src/lib.rs":"cf6796491dad4753dc5689f3491909ca7aec9cae6ed1b9fad463ffe75c9b41a3","src/pin_project/args.rs":"e5b67ea2f75fb0e72a94b9c49dcd52c3594648d6a9f134b2d1b628faf3656255","src/pin_project/attribute.rs":"9ff2ee47a8b10ea81497f0b60157ca1252cd2a51530c3a27439f9b1c199104b5","src/pin_project/derive.rs":"2a5f4577effccb7c8f24dba04f060673b72010c4220f0a356cb3e3fd74bcc563","src/pin_project/mod.rs":"129a9f9e7e97452cc401fe2c917adf015c9c1b5d3197a376d0cbc00905628ecf","src/pinned_drop.rs":"b88105dad6ff320fbc2dd5f18553e4b22a1b9cd0ef2cf16bb54216a2145715fc","src/utils.rs":"ba9764d567c7d53e2f98ffd40e5432f19354d4d267f839853d9dbffae99a32ba"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ed8fc9686d5897aa34d55c8a30b09ed261e7cd5e0402225352ae172cd4645278","Android.bp":"b8087c576fe18444306d8a4d047f0eafad0f60621b7247f509f7e6e7a364c092","Cargo.toml":"12dca4958d418036cc6f7b74e3d6eda3072dbe6dd97e8d198b577cb5ffbd26f4","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"c01c938d490481da3988cc1f7e48be3629e8a51468e9f6a95f4bef2fc63800db","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"41fe943b979ce266ae7fc1df55149ddc11cbc7c5644d30182d11a108425021d0","cargo_embargo.json":"258d681dfdd7c1056982c6d7b375b09e2e667cb0f34f5ea24061b234f5814da8","src/error.rs":"60b638a87addf641f4906be11b62a17116cde20b90c54392d7d4bc923c94de17","src/lib.rs":"cf6796491dad4753dc5689f3491909ca7aec9cae6ed1b9fad463ffe75c9b41a3","src/pin_project/args.rs":"e5b67ea2f75fb0e72a94b9c49dcd52c3594648d6a9f134b2d1b628faf3656255","src/pin_project/attribute.rs":"9ff2ee47a8b10ea81497f0b60157ca1252cd2a51530c3a27439f9b1c199104b5","src/pin_project/derive.rs":"2a5f4577effccb7c8f24dba04f060673b72010c4220f0a356cb3e3fd74bcc563","src/pin_project/mod.rs":"129a9f9e7e97452cc401fe2c917adf015c9c1b5d3197a376d0cbc00905628ecf","src/pinned_drop.rs":"b88105dad6ff320fbc2dd5f18553e4b22a1b9cd0ef2cf16bb54216a2145715fc","src/utils.rs":"ba9764d567c7d53e2f98ffd40e5432f19354d4d267f839853d9dbffae99a32ba"}}
\ No newline at end of file
diff --git a/crates/pin-project-internal/cargo_embargo.json b/crates/pin-project-internal/cargo_embargo.json
index 175f0bf..670cdb3 100644
--- a/crates/pin-project-internal/cargo_embargo.json
+++ b/crates/pin-project-internal/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pkcs1/.android-checksum.json b/crates/pkcs1/.android-checksum.json
index e45de07..0b2c057 100644
--- a/crates/pkcs1/.android-checksum.json
+++ b/crates/pkcs1/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8895cdbe089726e8273455b88f05c1f82f87f4b1cac0a0e9865d72ca85da0f44","Android.bp":"0994f62fd898d8a35343f5d15e4e2740208ef8e8393611b3a332db5392bd0101","CHANGELOG.md":"26696da44f8eb198cb9933b55fbca3c0dfde4086598dc122e7f9f323892a6c7d","Cargo.toml":"2a2703d14369a76e5092f8f3f218cbce09ddc18a9d42199ea40b898711c0755a","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"559a31dccf9f0df5314c4075007165fb5dede99db1c1a99309a703c669bb2121","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"509f7575bd644175ee3118241a3561ee3cbc8a546cb29a4460966b83ab2f6be6","cargo_embargo.json":"9584704f1f62e46477bda32ccca034dcfcc669f8a7ee29b29a03aeb479cbcb9e","patches/rules.mk.diff":"0bdcfe9e1e8bac204efde0ece68a97c52982e3bfee0a9c8594cd3f1b452e3370","rules.mk":"9c56d05f3c9d3e7c3c457dc99be854719c8f53287841e16c779ec2856290606e","src/error.rs":"02d78e0afcd694375a10343af550508ced68c8e58061efd3f7fe64fdd01c0a28","src/lib.rs":"cf3e5eaf8344c7cb18d3b39fd755bb3faaa964cc03af1463170b68b664d116d9","src/params.rs":"21c207c6b183b78b7af30d23b2e89513121741233b64d1e501de641b67e1e200","src/private_key.rs":"7a463721492b400e16cf94235aec634b8d7bcbba33b104de5d55fe4d6e473e7e","src/private_key/other_prime_info.rs":"b274c4567f697822ec22928d293309850398c274bc366e08abbdbaf262bf8767","src/public_key.rs":"09882094a8df34b4326641a0dd5f17035c21fe3581d8aaaa59fbd70a88cf96a9","src/traits.rs":"812232bfe21591f91681d2161034fd4a25e086de37272f001352f9118e08c788","src/version.rs":"e544ca4cdf209e2a18af5ac3fda51d9f1cc31a01971c0fc9431d8f7f5321e519","tests/examples/rsa2048-priv-3prime.der":"ac2278a938fa959a4b39c4c534976c92141ea3bfb213ba6ad01db56c621dcc0d","tests/examples/rsa2048-priv-3prime.pem":"9deae7b33dc0f409805fb11c828f614cfc42fa1d224db294244b1ac7952edc75","tests/examples/rsa2048-priv.der":"2e3d02886556a2dc878dd7a77ada1da31ccfccf2bf7e9a7bd95a8af2e69a6a90","tests/examples/rsa2048-priv.pem":"cad0f75a6fd5e71c5668b58d8608177315f022d262d446f12ab48b25d4502c03","tests/examples/rsa2048-pub.der":"8dbaa4282bde9d8617f54192bc2441a29ade5394a0b0b81b238e250fe9c0cbb1","tests/examples/rsa2048-pub.pem":"488c218958f81e199faf02fe4fb1ca2181a44a9df31edcc013c8173a55808c38","tests/examples/rsa4096-priv.der":"99a7104767603f25daf9be27cc056d50b2ffedfca37eedb2cba781efe1bf9442","tests/examples/rsa4096-priv.pem":"bef63eee2855f50e380b11f78f6d38d60d9915f76991e66dd85205bc6ee40ab3","tests/examples/rsa4096-pub.der":"4e1a05cb219bf3e4a65d037d7f982318eeabeba565b122a99873c1d65334d11a","tests/examples/rsa4096-pub.pem":"9d9f8c8647d6ea4f66102ff7ab612eb671fffe49acf8549693526a13b16d7996","tests/params.rs":"8b081036e133f230419d0eb3b74e5cd69c1809b7a137491eef8512828e54cb3e","tests/private_key.rs":"99c2c15a40fb641c92d33486c954f1c2ccd8d366f9abc813da335ac0ab69fa84","tests/public_key.rs":"ab0c76669bef648299c8a98686e17d4330f08f8014de17457836bd0455459dd1","tests/traits.rs":"5fd74789b91f1812c6ea728515eaf02b8d89203ab41e7d2d89454038de6d5de2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8895cdbe089726e8273455b88f05c1f82f87f4b1cac0a0e9865d72ca85da0f44","Android.bp":"f5e8a8e5e05948b46815a9a8dd5e638087db44e429c9682737994cf7cab95acb","CHANGELOG.md":"26696da44f8eb198cb9933b55fbca3c0dfde4086598dc122e7f9f323892a6c7d","Cargo.toml":"2a2703d14369a76e5092f8f3f218cbce09ddc18a9d42199ea40b898711c0755a","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"559a31dccf9f0df5314c4075007165fb5dede99db1c1a99309a703c669bb2121","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"509f7575bd644175ee3118241a3561ee3cbc8a546cb29a4460966b83ab2f6be6","cargo_embargo.json":"45e0315328d8b52464672898e7daaf5ef5be5e7ca29e45210c602d03c53d2952","patches/rules.mk.diff":"0bdcfe9e1e8bac204efde0ece68a97c52982e3bfee0a9c8594cd3f1b452e3370","rules.mk":"9c56d05f3c9d3e7c3c457dc99be854719c8f53287841e16c779ec2856290606e","src/error.rs":"02d78e0afcd694375a10343af550508ced68c8e58061efd3f7fe64fdd01c0a28","src/lib.rs":"cf3e5eaf8344c7cb18d3b39fd755bb3faaa964cc03af1463170b68b664d116d9","src/params.rs":"21c207c6b183b78b7af30d23b2e89513121741233b64d1e501de641b67e1e200","src/private_key.rs":"7a463721492b400e16cf94235aec634b8d7bcbba33b104de5d55fe4d6e473e7e","src/private_key/other_prime_info.rs":"b274c4567f697822ec22928d293309850398c274bc366e08abbdbaf262bf8767","src/public_key.rs":"09882094a8df34b4326641a0dd5f17035c21fe3581d8aaaa59fbd70a88cf96a9","src/traits.rs":"812232bfe21591f91681d2161034fd4a25e086de37272f001352f9118e08c788","src/version.rs":"e544ca4cdf209e2a18af5ac3fda51d9f1cc31a01971c0fc9431d8f7f5321e519","tests/examples/rsa2048-priv-3prime.der":"ac2278a938fa959a4b39c4c534976c92141ea3bfb213ba6ad01db56c621dcc0d","tests/examples/rsa2048-priv-3prime.pem":"9deae7b33dc0f409805fb11c828f614cfc42fa1d224db294244b1ac7952edc75","tests/examples/rsa2048-priv.der":"2e3d02886556a2dc878dd7a77ada1da31ccfccf2bf7e9a7bd95a8af2e69a6a90","tests/examples/rsa2048-priv.pem":"cad0f75a6fd5e71c5668b58d8608177315f022d262d446f12ab48b25d4502c03","tests/examples/rsa2048-pub.der":"8dbaa4282bde9d8617f54192bc2441a29ade5394a0b0b81b238e250fe9c0cbb1","tests/examples/rsa2048-pub.pem":"488c218958f81e199faf02fe4fb1ca2181a44a9df31edcc013c8173a55808c38","tests/examples/rsa4096-priv.der":"99a7104767603f25daf9be27cc056d50b2ffedfca37eedb2cba781efe1bf9442","tests/examples/rsa4096-priv.pem":"bef63eee2855f50e380b11f78f6d38d60d9915f76991e66dd85205bc6ee40ab3","tests/examples/rsa4096-pub.der":"4e1a05cb219bf3e4a65d037d7f982318eeabeba565b122a99873c1d65334d11a","tests/examples/rsa4096-pub.pem":"9d9f8c8647d6ea4f66102ff7ab612eb671fffe49acf8549693526a13b16d7996","tests/params.rs":"8b081036e133f230419d0eb3b74e5cd69c1809b7a137491eef8512828e54cb3e","tests/private_key.rs":"99c2c15a40fb641c92d33486c954f1c2ccd8d366f9abc813da335ac0ab69fa84","tests/public_key.rs":"ab0c76669bef648299c8a98686e17d4330f08f8014de17457836bd0455459dd1","tests/traits.rs":"5fd74789b91f1812c6ea728515eaf02b8d89203ab41e7d2d89454038de6d5de2"}}
\ No newline at end of file
diff --git a/crates/pkcs1/Android.bp b/crates/pkcs1/Android.bp
index 7921124..e6d43b7 100644
--- a/crates/pkcs1/Android.bp
+++ b/crates/pkcs1/Android.bp
@@ -35,6 +35,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
@@ -68,6 +69,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
diff --git a/crates/pkcs1/cargo_embargo.json b/crates/pkcs1/cargo_embargo.json
index e97936b..7f734d8 100644
--- a/crates/pkcs1/cargo_embargo.json
+++ b/crates/pkcs1/cargo_embargo.json
@@ -39,5 +39,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/pkcs8/.android-checksum.json b/crates/pkcs8/.android-checksum.json
index de0ae31..d680f68 100644
--- a/crates/pkcs8/.android-checksum.json
+++ b/crates/pkcs8/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"cda73a79e08e72f9d1f4f723250c298a97617a42c4cb18d0cf39dc816e643589","Android.bp":"caeae6c00f1cb7789a5bff371f2e478a9de880fce6ece73c39f37e02a2cb8e1d","CHANGELOG.md":"40a5993f82822bfce4b820e7747330469addeb939b15ca32ed37917d57744549","Cargo.toml":"0c8c80be5b11b1de71abd47282fd46da6ecb308806adede5e9a22c8263de74b4","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"0a22cf0a62011797ea7d9a4f3c4d467020fdc24de13f12a6b38731e0c63a2d0b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc3c314bd052c32f521536968966edd72debd96a57ccfdebed3794c65910c7c1","cargo_embargo.json":"b5c19c49b930a0c801f59e53acaf4c8b575038d92b30cc9115bd5f5cf8d4c66c","patches/rules.mk.diff":"7852987d13f6509325ae9af0a6458ff5871998c3b12fc8746159fc21fec85473","rules.mk":"733a5c4fc3024a64f28d95786549237a8a57377d872c5739574651bc7b749e8e","src/encrypted_private_key_info.rs":"ad0e8f8d62fb97951382101d72686412e1a72f739a475884526a5c3c5545bf97","src/error.rs":"a4752727870d964e828eb87c3bc4e77d591d228e8eaf304bb55df707913184bc","src/lib.rs":"3d4fe06641b17c98c657501c132a1484ff9515e59f7821b56280893d3ccb688f","src/private_key_info.rs":"b56ee4c805448a025a4d451ffaf00d1abbbdc22d60834e50b9132a7ff901fddf","src/traits.rs":"ac8726260156124de36faf01a88826c994722d2bbe7b2a3324da9ef7d6ebc95a","src/version.rs":"758658c767a850a6056af3aab6691d8baa6d1f47274efa5fdfc49dbc929a538e","tests/encrypted_private_key.rs":"0fa346bb515d68b222c9e51b573dbc1d0eaf26d8a22fb358a17a2d0aa13ed456","tests/examples/ed25519-encpriv-aes128-pbkdf2-sha1.der":"6c08baccfaf73de92d1fd59367861a2aba85c742bea713b460dbcbd1e46436eb","tests/examples/ed25519-encpriv-aes256-pbkdf2-sha256.der":"1393dc4bcd1e8c0063c9f9ce120d16743c9b81bb512538e6e25afb8201685d81","tests/examples/ed25519-encpriv-aes256-pbkdf2-sha256.pem":"c62a4b5b7473d37e67547deac5e44559cd0ad8c69165e0d5d19d69ab181a7f04","tests/examples/ed25519-encpriv-aes256-scrypt.der":"356433c8d26af0bdac00b86a8be19698866ee1612c298821ddd9092c41cec94d","tests/examples/ed25519-encpriv-aes256-scrypt.pem":"c9fca5d292d4f5016f9d74cbff5be37c8a927a193bc027fade4132ec7817b1a3","tests/examples/ed25519-encpriv-des-pbkdf2-sha256.der":"1814c93fca89868a598f9a2a3cf0e291b990f1fb7a3da3e8aa9f19ca18216f09","tests/examples/ed25519-encpriv-des3-pbkdf2-sha256.der":"341d62758479e39b07b38dd232287d4bc410b40200577a2958c07f7c2ea8cdca","tests/examples/ed25519-priv-pkcs8v1.der":"0fb6484aafe609acdcc5c5072d4123a924082e89e69ab9a44132373d0a67757c","tests/examples/ed25519-priv-pkcs8v1.pem":"613c2a93e3519efec1e7ba8a21a23909c0487f1ceee89ac9d4fd14cdcec8540b","tests/examples/ed25519-priv-pkcs8v2.der":"daa2585280a5e358b78d57f40082783aa5de5626ddb6888c3f467d5d4b1316d1","tests/examples/ed25519-priv-pkcs8v2.pem":"70fdae708265a829cff8f9b4a7a6251a59794e6a0999538c37d061121eace654","tests/examples/ed25519-pub.der":"e13b6ba770d304b04ebec9e382214ebfd7a276a62d6435ca84ca93daf44a0d24","tests/examples/ed25519-pub.pem":"f349368de6f4c09adc520fd85bd1d7cd4609af598277dae84adcebe07f3114f3","tests/examples/p256-priv.der":"d59088d2ee7ae348a2004e1b68310cbb578bdb55d6dfcc818d3d2db5a6fac41c","tests/examples/p256-priv.pem":"0b271283b12a75963f488574bc1dba5a4c218bfe9e3ec8e1fc3e836458b07412","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/p256-pub.pem":"2f8e52804ad30b8a73fefc2a6bf88bcc25fbc858f1f82388e28f41d0c06087a5","tests/examples/rsa2048-priv.der":"d089a868b1c7bfaa2717e8e213af636a6810da6ff90561bda752258d0d22bd81","tests/examples/rsa2048-priv.pem":"f15c8bb663cd2ff023fbcc1a67098225002dfa1107ca8b28b2f7637de98108ef","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/rsa2048-pub.pem":"1081034bf9140b406ec94af3160e570da8988bfd640b7be07e737ab9a8d20556","tests/examples/x25519-priv.der":"296090556a91056626632da5f630ecf79d756b39515ce579738293c8b086a436","tests/examples/x25519-priv.pem":"67f659e2d01285f3e6ab8e0471a4c6a9d18b840bd18a4b04846f279908d0736f","tests/private_key.rs":"48718236399108cd8730eedaee4ea400d3e0f14e07af96f227380ea9ed3a31bf","tests/traits.rs":"21c991a6f67173d598d95b12ee67c909f15e8338902b864c8752c84f11183ca0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"cda73a79e08e72f9d1f4f723250c298a97617a42c4cb18d0cf39dc816e643589","Android.bp":"d8c332d1710ab6317face2794253de22e65ff828f123df55bf5dcdc1d3b37ac4","CHANGELOG.md":"40a5993f82822bfce4b820e7747330469addeb939b15ca32ed37917d57744549","Cargo.toml":"0c8c80be5b11b1de71abd47282fd46da6ecb308806adede5e9a22c8263de74b4","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"0a22cf0a62011797ea7d9a4f3c4d467020fdc24de13f12a6b38731e0c63a2d0b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc3c314bd052c32f521536968966edd72debd96a57ccfdebed3794c65910c7c1","cargo_embargo.json":"f83197ea6f1ff4d766ce4d9b20abc2009ccc49266cc32e7eba262c06f2b6a1a4","patches/rules.mk.diff":"7852987d13f6509325ae9af0a6458ff5871998c3b12fc8746159fc21fec85473","rules.mk":"733a5c4fc3024a64f28d95786549237a8a57377d872c5739574651bc7b749e8e","src/encrypted_private_key_info.rs":"ad0e8f8d62fb97951382101d72686412e1a72f739a475884526a5c3c5545bf97","src/error.rs":"a4752727870d964e828eb87c3bc4e77d591d228e8eaf304bb55df707913184bc","src/lib.rs":"3d4fe06641b17c98c657501c132a1484ff9515e59f7821b56280893d3ccb688f","src/private_key_info.rs":"b56ee4c805448a025a4d451ffaf00d1abbbdc22d60834e50b9132a7ff901fddf","src/traits.rs":"ac8726260156124de36faf01a88826c994722d2bbe7b2a3324da9ef7d6ebc95a","src/version.rs":"758658c767a850a6056af3aab6691d8baa6d1f47274efa5fdfc49dbc929a538e","tests/encrypted_private_key.rs":"0fa346bb515d68b222c9e51b573dbc1d0eaf26d8a22fb358a17a2d0aa13ed456","tests/examples/ed25519-encpriv-aes128-pbkdf2-sha1.der":"6c08baccfaf73de92d1fd59367861a2aba85c742bea713b460dbcbd1e46436eb","tests/examples/ed25519-encpriv-aes256-pbkdf2-sha256.der":"1393dc4bcd1e8c0063c9f9ce120d16743c9b81bb512538e6e25afb8201685d81","tests/examples/ed25519-encpriv-aes256-pbkdf2-sha256.pem":"c62a4b5b7473d37e67547deac5e44559cd0ad8c69165e0d5d19d69ab181a7f04","tests/examples/ed25519-encpriv-aes256-scrypt.der":"356433c8d26af0bdac00b86a8be19698866ee1612c298821ddd9092c41cec94d","tests/examples/ed25519-encpriv-aes256-scrypt.pem":"c9fca5d292d4f5016f9d74cbff5be37c8a927a193bc027fade4132ec7817b1a3","tests/examples/ed25519-encpriv-des-pbkdf2-sha256.der":"1814c93fca89868a598f9a2a3cf0e291b990f1fb7a3da3e8aa9f19ca18216f09","tests/examples/ed25519-encpriv-des3-pbkdf2-sha256.der":"341d62758479e39b07b38dd232287d4bc410b40200577a2958c07f7c2ea8cdca","tests/examples/ed25519-priv-pkcs8v1.der":"0fb6484aafe609acdcc5c5072d4123a924082e89e69ab9a44132373d0a67757c","tests/examples/ed25519-priv-pkcs8v1.pem":"613c2a93e3519efec1e7ba8a21a23909c0487f1ceee89ac9d4fd14cdcec8540b","tests/examples/ed25519-priv-pkcs8v2.der":"daa2585280a5e358b78d57f40082783aa5de5626ddb6888c3f467d5d4b1316d1","tests/examples/ed25519-priv-pkcs8v2.pem":"70fdae708265a829cff8f9b4a7a6251a59794e6a0999538c37d061121eace654","tests/examples/ed25519-pub.der":"e13b6ba770d304b04ebec9e382214ebfd7a276a62d6435ca84ca93daf44a0d24","tests/examples/ed25519-pub.pem":"f349368de6f4c09adc520fd85bd1d7cd4609af598277dae84adcebe07f3114f3","tests/examples/p256-priv.der":"d59088d2ee7ae348a2004e1b68310cbb578bdb55d6dfcc818d3d2db5a6fac41c","tests/examples/p256-priv.pem":"0b271283b12a75963f488574bc1dba5a4c218bfe9e3ec8e1fc3e836458b07412","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/p256-pub.pem":"2f8e52804ad30b8a73fefc2a6bf88bcc25fbc858f1f82388e28f41d0c06087a5","tests/examples/rsa2048-priv.der":"d089a868b1c7bfaa2717e8e213af636a6810da6ff90561bda752258d0d22bd81","tests/examples/rsa2048-priv.pem":"f15c8bb663cd2ff023fbcc1a67098225002dfa1107ca8b28b2f7637de98108ef","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/rsa2048-pub.pem":"1081034bf9140b406ec94af3160e570da8988bfd640b7be07e737ab9a8d20556","tests/examples/x25519-priv.der":"296090556a91056626632da5f630ecf79d756b39515ce579738293c8b086a436","tests/examples/x25519-priv.pem":"67f659e2d01285f3e6ab8e0471a4c6a9d18b840bd18a4b04846f279908d0736f","tests/private_key.rs":"48718236399108cd8730eedaee4ea400d3e0f14e07af96f227380ea9ed3a31bf","tests/traits.rs":"21c991a6f67173d598d95b12ee67c909f15e8338902b864c8752c84f11183ca0"}}
\ No newline at end of file
diff --git a/crates/pkcs8/Android.bp b/crates/pkcs8/Android.bp
index e8ecb37..7e1f1e6 100644
--- a/crates/pkcs8/Android.bp
+++ b/crates/pkcs8/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//external/rust/android-crates-io/crates/pkcs1:__subpackages__",
"//external/rust/android-crates-io/crates/sec1:__subpackages__",
@@ -64,6 +65,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//external/rust/android-crates-io/crates/pkcs1:__subpackages__",
"//external/rust/android-crates-io/crates/sec1:__subpackages__",
diff --git a/crates/pkcs8/cargo_embargo.json b/crates/pkcs8/cargo_embargo.json
index 4d43ba8..f2b0397 100644
--- a/crates/pkcs8/cargo_embargo.json
+++ b/crates/pkcs8/cargo_embargo.json
@@ -41,5 +41,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/plotters-backend/.android-checksum.json b/crates/plotters-backend/.android-checksum.json
index 9d9372e..adbf96b 100644
--- a/crates/plotters-backend/.android-checksum.json
+++ b/crates/plotters-backend/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"63a3b88c05b612fd2f407670c726dd38c145eb8699a6290dcd5fcd371c4a6704","Android.bp":"24e9d64f8ff2073d9ca6a144fbb21d5e4d489de76481930c7c1882509758fdfb","Cargo.toml":"6fcc5e7747e6db8c06981e324d55e524deb8bf741dba1a249f95cf89537625dd","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"8e945219f3c076e2b4f7ca6c8304d2a86f8d70925069a7813dbd5f25536920c9","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddb69f5e9834d1b328083ba0c2a06efafe474ab62d13cd83aa6a732fb17eeb69","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/lib.rs":"d46ec0ca2033f24c643fa7804536c09eaf16915960227583b829a4455588fc60","src/rasterizer/circle.rs":"029380b58dca23548496b744c286c0dda5551e0a3d0817c40857a34b27a4f2bf","src/rasterizer/line.rs":"9529f3b1f441de8059a1fd400c3196320fe47887147639d4d531fddc746f11bb","src/rasterizer/mod.rs":"ada18efe55aa77caa6dfd3fedb0a71792e34895376906af5f11f75b4827e19cd","src/rasterizer/path.rs":"6598e85abbb27cde66164af7959c7cbe04adae9196fdcaee62ebfdc39a6c723b","src/rasterizer/polygon.rs":"708a0a957faa34640e830f30daf4d92b94b458082f252bb6cdfd880649f3c182","src/rasterizer/rect.rs":"557d17069969e025dd96887f289a305afef3532a92a26e3c456ca7affdb44d97","src/style.rs":"cb87e4a8ec84192a80d853539d3d50d0a54bb7c75eae8818fbc0a59186e565db","src/text.rs":"09129853156a58d896ea920c45f97881f157a46088b8e1d8b014d2407988640e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"63a3b88c05b612fd2f407670c726dd38c145eb8699a6290dcd5fcd371c4a6704","Android.bp":"5e66c8586d71752f41115521672ff0cb9be770200a31015ef8799ef9f136b118","Cargo.toml":"6fcc5e7747e6db8c06981e324d55e524deb8bf741dba1a249f95cf89537625dd","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"8e945219f3c076e2b4f7ca6c8304d2a86f8d70925069a7813dbd5f25536920c9","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddb69f5e9834d1b328083ba0c2a06efafe474ab62d13cd83aa6a732fb17eeb69","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/lib.rs":"d46ec0ca2033f24c643fa7804536c09eaf16915960227583b829a4455588fc60","src/rasterizer/circle.rs":"029380b58dca23548496b744c286c0dda5551e0a3d0817c40857a34b27a4f2bf","src/rasterizer/line.rs":"9529f3b1f441de8059a1fd400c3196320fe47887147639d4d531fddc746f11bb","src/rasterizer/mod.rs":"ada18efe55aa77caa6dfd3fedb0a71792e34895376906af5f11f75b4827e19cd","src/rasterizer/path.rs":"6598e85abbb27cde66164af7959c7cbe04adae9196fdcaee62ebfdc39a6c723b","src/rasterizer/polygon.rs":"708a0a957faa34640e830f30daf4d92b94b458082f252bb6cdfd880649f3c182","src/rasterizer/rect.rs":"557d17069969e025dd96887f289a305afef3532a92a26e3c456ca7affdb44d97","src/style.rs":"cb87e4a8ec84192a80d853539d3d50d0a54bb7c75eae8818fbc0a59186e565db","src/text.rs":"09129853156a58d896ea920c45f97881f157a46088b8e1d8b014d2407988640e"}}
\ No newline at end of file
diff --git a/crates/plotters-backend/Android.bp b/crates/plotters-backend/Android.bp
index 81820f1..7a4fc31 100644
--- a/crates/plotters-backend/Android.bp
+++ b/crates/plotters-backend/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/plotters-backend/cargo_embargo.json b/crates/plotters-backend/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/plotters-backend/cargo_embargo.json
+++ b/crates/plotters-backend/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/plotters-svg/.android-checksum.json b/crates/plotters-svg/.android-checksum.json
index 16e5e9d..b02b8d0 100644
--- a/crates/plotters-svg/.android-checksum.json
+++ b/crates/plotters-svg/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"5d327beced46102ee4a9c21d30385f27d8e9c81b3ac5d6b84aa76f42a526e55f","Android.bp":"3a60a655985855540bfa049329c90748ab35578030d7a9bb557ec98eb10769b5","Cargo.toml":"4681e5b00a03c2551cd4fd096787be07b15f8718d284a0cebe1f245d2d0ec23a","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"515252a15a2ab43523b4d6de4ce2e56742162f384aad93c959c730b222fb58fd","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"59f48d8839e1d7a7cd8cc4ee76102ed16b1fbd0429d2bf741263dd13d54f34fa","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/lib.rs":"54c158634510d88191c150e7ad8246e3478c79a1f8b60349d0195a744ebc96ef","src/svg.rs":"5f501e6217aca2af8c4835fa5db1a3653402049772233eea83c066ea0cea8ac7"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"5d327beced46102ee4a9c21d30385f27d8e9c81b3ac5d6b84aa76f42a526e55f","Android.bp":"41cd28caed2f0bf3ee968b20886dc2aebaf92775d40b0a606b647608ae950237","Cargo.toml":"4681e5b00a03c2551cd4fd096787be07b15f8718d284a0cebe1f245d2d0ec23a","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"515252a15a2ab43523b4d6de4ce2e56742162f384aad93c959c730b222fb58fd","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"59f48d8839e1d7a7cd8cc4ee76102ed16b1fbd0429d2bf741263dd13d54f34fa","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/lib.rs":"54c158634510d88191c150e7ad8246e3478c79a1f8b60349d0195a744ebc96ef","src/svg.rs":"5f501e6217aca2af8c4835fa5db1a3653402049772233eea83c066ea0cea8ac7"}}
\ No newline at end of file
diff --git a/crates/plotters-svg/Android.bp b/crates/plotters-svg/Android.bp
index 125fd6e..f3e3742 100644
--- a/crates/plotters-svg/Android.bp
+++ b/crates/plotters-svg/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/plotters-svg/cargo_embargo.json b/crates/plotters-svg/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/plotters-svg/cargo_embargo.json
+++ b/crates/plotters-svg/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/plotters/.android-checksum.json b/crates/plotters/.android-checksum.json
index 200fce5..dac13fe 100644
--- a/crates/plotters/.android-checksum.json
+++ b/crates/plotters/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"03fb3490582b73627b8d0103170bac84ebad46201aac413290bf243a070464fa","Android.bp":"cdfd17eb823f95ebc239f42c2e833bafb84381260bc678ddbe6a4672ad53d03c","Cargo.lock":"fb92cec66d3dd5238e76c869429bda3e48d48ce7012a86b6314c95c886fa7a27","Cargo.toml":"f0d60165afe42478c5fb587f25ce62c1ab686ba6d8caeded9ef8bf846701485e","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"b43ef0d925ab6c42150f499607e5ed23666dbd13eb826b9d33575c7efa5051bf","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2d4a3d7185716d3dbbae2317498f3cd97b4a5bf2d3a07fa284041c2273315492","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","benches/benches/data.rs":"0bfcf2e2c7c376a0fa986abc2e71b9c78f8f8fd03bbab9cc0a9c15936b7a3083","benches/benches/mod.rs":"a57d9a364956c0ee9a52b2e99bb0a35dc78bd63f8657d7e486b47ec5a0e9cec6","benches/main.rs":"18a1afab41bdadf925679f34a11b0858ea2dbad1af2ad38dbfda238272adb8af","blub.png":"89f98bd774820f66f507a37c7b3f66661bb21d123b85fc62c6196fbe99d1cd62","cargo_embargo.json":"99524d6d57989d4d543b34005291e66d1d1d4f57c059fa9c9aa4ac1b3f003ece","examples/3d-plot.rs":"8bb26602ba97f70cb7ff494e676475d967b906bb41659d8fcb0bb0cb4f24e393","examples/3d-plot2.rs":"8fa97a5ac7b0807e2340ddda48e1e7b7ce1a0a55b9f5101886394d830b7768ea","examples/README.md":"b36db335432f1547dbf722de1d9baaf4a493fba92d1c76c7f0d343ce8fe5874f","examples/animation.rs":"0e73ac7d22742ca36bfbc2d77aac5cdcd5fba729ee6f016081caf58042493a34","examples/area-chart.rs":"801a2d2ef9ee9c430acc07cad7bdf74682801c15167921c21b76a892180cdf5a","examples/blit-bitmap.rs":"4a00ee6544de5ae011505f1ed86583e63b669dd5629a41c6d28de8736824f79a","examples/boxplot.rs":"e9fe602429aa6f5af5e623ae5b90da75b5f08aace95d049f06a19abc78d98a82","examples/chart.rs":"c0499ad0c688ffeb7ac3a65523cce035f7a52fa0fb79933eaa9bc3ccc413c6f6","examples/colormaps.rs":"4937a290940f1d15ef04c3a087953a059840cf152896ac4fc10df120059c3102","examples/console.rs":"a3845a4231faed1eab933a5091e5b3ad481b2eb6ccfeee0b24467a6a574e1a11","examples/customized_coord.rs":"19d587d498214f082be7b43179725976358894863b37a3adf2c02c1060fd4493","examples/errorbar.rs":"90c7b5d9f687f22ce7cd54de5426af3461334e58bad05d2d19671b082aa9940a","examples/full_palette.rs":"e91d93062129421828d3e25da035259619d5076628535b293cac47a2b3a2698c","examples/histogram.rs":"78e6488dd6a9f6f33f8c61e6142b1802d0de1367dd5b493dd1b2e37834f685eb","examples/mandelbrot.rs":"9b122e062bf323d16e6782890951d8425df934d73bb72e863b21d5074024f62a","examples/matshow.rs":"abd82f0ef23ea46b95cd9f7338437767660078a3623b7d5cd473991c5ddd9056","examples/nested_coord.rs":"8ec5b3bbfcd8b6d77890aab3e5d632ef85e133702cb63ffd83d56726aeee38de","examples/normal-dist.rs":"7a5119b005d037364f8f43fdedf3e00630a08325f95cb0be3d4c162c5062c6fe","examples/normal-dist2.rs":"9657d967f191dd136972ebc86eb11e06faf5c9fa54f2c9bd1b56a9b9dc141648","examples/pie.rs":"e18e64470a2a0238acaf9fd28b38abdb2b3c15b16540316c8447960cf44a8872","examples/relative_size.rs":"ec2cf60671767fdfe787575007d4fcda7e895c62efca1a56edc6d914d9549218","examples/sierpinski.rs":"d88682654a6609f87f587025dfb02ccca357b0cf264da6d2960021f4a7583fbe","examples/slc-temp.rs":"836fdf77956af3cef08adaca6cb4d5cd4f1890e402424443206614f7dca15866","examples/snowflake.rs":"9f4d6e60e873675a2b21179bff1e40f97c0e4fc6c7ce84e01ff20c390ed3a97c","examples/stock.rs":"75e19c8a54cbefdea6e4b9366f8458da378110251f4763404665efca4543a6be","examples/tick_control.rs":"7080996accbeb8b4dc926682524c4af42bf48efc23a0e0ecd3c417bfa72ee0e5","examples/two-scales.rs":"f63736d51d56ea86fc445d0ecf7a20bc4932f282d72721b03718345af7c6d7aa","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/chart/axes3d.rs":"c41cbd867cfd206eca2f72de7d1ca7d4d4df33a06e21f120833b8ce8831ec78f","src/chart/builder.rs":"ba14586049a5cce7031a35f7d6fcbc3e1da96a63fe348a6b51e9b5f7881d8746","src/chart/context.rs":"11a1464060429b6980a342f56732532b9e60cd8a48138f5fe88d9a1300ef76bc","src/chart/context/cartesian2d/draw_impl.rs":"e3446e46645e40606d1436a0810869bbf30ba4ebe61a05c1fb8efbd93c0668d7","src/chart/context/cartesian2d/mod.rs":"33cc666e5022f194248405612d7e47b1a3d2a637a7d584483b3a1d85761fc3f4","src/chart/context/cartesian3d/draw_impl.rs":"47a2b680b9651bc132d1d8c301a23a372e03535ea2a0b153309132e7b19c45b8","src/chart/context/cartesian3d/mod.rs":"efc0eaebefab8202f3c402cd6ba30316db964a34af5dc3044fadb7bf323f0eda","src/chart/dual_coord.rs":"73bedb0c87de1a50638df7bb1e269dd889de1022883c7b6611c42817db3b7921","src/chart/mesh.rs":"a0de75a213a780f3f115696ded369e6f55e2aef955dd5620eae59b25877b3f77","src/chart/mod.rs":"b29cf6d1e950e1c54e93fdc06fa87b06eef04c4932859a0d9bfb7352002300e3","src/chart/series.rs":"ea8b7a932464987fc2c84e59152bd1e07d26213db28532a0c05642ea208772a0","src/chart/state.rs":"29e57931a64717dd37a25c6c96a0c1d80c6f224a4fb2f860afe2f85676c65e7a","src/coord/mod.rs":"d87301c080567f5723faf945ef04cf05fc722becaa46e854dc4819e8acd88c5c","src/coord/ranged1d/combinators/ckps.rs":"513a4b78e65a0b5921b29832525fd0fcf5f6912b0cc92aafff5621c402eeee28","src/coord/ranged1d/combinators/group_by.rs":"e1eec99c9231e79c0e7fa5e064b2909f19c3bc7b820189812ba0532a8045c289","src/coord/ranged1d/combinators/linspace.rs":"53defc10b64ac18380003933c61c18013422b055cc3d718f43f1d7be7f0a091c","src/coord/ranged1d/combinators/logarithmic.rs":"e907b4dd0d412f70bbcc3ceb32f4b76cf96954a3d4e4920e4d16b1cd2fafbe0a","src/coord/ranged1d/combinators/mod.rs":"d4fcafb601e1ac0a768ff1aa2f0bcc55d271faf6199abca9d9655ac7af52bfe7","src/coord/ranged1d/combinators/nested.rs":"c402a79bad7ba4ed910088fa47b76509ae1253cb15e8acc4e6a3c3e6627e4a47","src/coord/ranged1d/combinators/partial_axis.rs":"aa0e6b157ef7077786dfbfb5b84a036c65b2bd49ed3d10e91bba1009bb52b118","src/coord/ranged1d/discrete.rs":"71c5b18bfda7d935933437a439f4f7a1763d99c6efb2d3e053cd739cfd204794","src/coord/ranged1d/mod.rs":"5ba122225db5a2f2af840a6f72462034abd0463b6f92d031436979760d504385","src/coord/ranged1d/types/datetime.rs":"66bff3bba6fe2b5da9f961d3c5f37c8be49cbdaa7f5b9bb7eb15d22f67433cef","src/coord/ranged1d/types/mod.rs":"9fcf9728ca38db8469c406f9e64d37defe88714a52d9b3382ef18f10b5c5b172","src/coord/ranged1d/types/numeric.rs":"e13991d2c29c5a225cbb2545dc9c33838ae6ca658dd95b4df1456f0a082000f0","src/coord/ranged1d/types/slice.rs":"75e0e0d7deab3bf6b1265d12435e28eadbb28c45f9eca0a268e648a536c05331","src/coord/ranged2d/cartesian.rs":"b2f69bc811806db35a0c26f83182f5d585a36508149a5080bc668656739a946d","src/coord/ranged2d/mod.rs":"2ab4283d93cbb679ae8c30f10bf28a3251dd17b67856800a2369e6b21623feca","src/coord/ranged3d/cartesian3d.rs":"c099dbbeb48f17288831384f28103f0d26fe7e927f1fb9c3c9dd43a22d055e56","src/coord/ranged3d/mod.rs":"f08d10489ef8c70de8886e1c9d4fe15924aaa717addc418efed52721eeb5c775","src/coord/ranged3d/projection.rs":"d33e92113999b96e9b7fbba523eb5c63061cf7c2d7ec3b4227e051179176d6f5","src/coord/translate.rs":"409dd7f599c99f58f4a2b9cc6e7589d88801c23e15ef659fa6dbe1567bb362a0","src/data/data_range.rs":"563d86fc63c403be88e6d2ea1966cb964ed81e672cedecdaebc7574274d12414","src/data/float.rs":"05499ba3cea19a22c06be321c7b8800dcc3d78d593a4f7f6717e44ab15663c87","src/data/mod.rs":"fa53ebcfc36060d0766983e57b8852cd4fd79235b615f05e356c56fe9fc19371","src/data/quartiles.rs":"947ac9d5d1fffc08bc55fd4c84520954987c5db74e6907958ed5df810e15bf36","src/drawing/area.rs":"3c72e8a022acc8584057adc32bf4d81d670b8f7d29b0f0ca56b13bd962de2324","src/drawing/backend_impl/mocked.rs":"bcb8f8676b384c2f45196ac1af63282ca04082797c1a023334a94235df5a03d5","src/drawing/backend_impl/mod.rs":"b5f89c759b3e35a40cc9569bebdc7b5f4c5a430bdde10f446ee744b5baf2fa4c","src/drawing/mod.rs":"d21bf21dd5453a477731036a7a47482d6ead47f23a877ff68cba3f740e74bed2","src/element/basic_shapes.rs":"eeaef6aba6eb20f327e70fde59b1df9958a3c65592af2f48bc2cb9b48572d4ce","src/element/basic_shapes_3d.rs":"04c87e0d16db182cfeb31e54907a2d5db5d50ab0d01facd2233b9476ec6657e1","src/element/boxplot.rs":"4a1e80636480c2c403bcba3c3d3bfd0fb5df0ddd456e9ccf5fd7cef2824c9cf5","src/element/candlestick.rs":"b37b86cda8e4f17eb8bf5f784fde619d5824c3c4dab170a576796e4ac46e1467","src/element/composable.rs":"6e1e8f36e5581d612e4b38afc55c3467a39494552988e108747e5992df43b1fd","src/element/dynelem.rs":"8811c375b2a27b7ddbb6de90d28b0395868a43a9ea563c929ee5a95d3b873f62","src/element/errorbar.rs":"555dd4c874f9bf7efa35a86261ba3158203fd1cbe3aa91b9c3e846bf42cd9afd","src/element/image.rs":"ba99d9f0357e7b7c43d5c63aca299fba60687f61e8d39f2451b3d44c87845e5e","src/element/mod.rs":"d28aff5259b74b4807a1890763d77345ec369e154b83337ba85af88d9e23ad84","src/element/pie.rs":"130d00323d33be81bc0ffe0702f9a54d26c440c70f8c65d65342be67c103839d","src/element/points.rs":"a1ec58fc38e1db3e2f2ee27e4297011bcca3179653679991f673cecc3d0f4136","src/element/text.rs":"bea7233fa596ac8708c62061aa793fe2f91ed80649822522530598719ef93b97","src/evcxr.rs":"83d23c7342e8b23e0ca16cc4d4da87ff7dac1837e01c30bdca2ec2796766f462","src/lib.rs":"88fd8193d328f4f425158539e90a4e13724c512cf99d40aacc1bc6a9ad86cc96","src/series/area_series.rs":"76233945f72ba07fa771cb9f94622cee3472df20f2e6d20d285713d0e50f8746","src/series/histogram.rs":"cefc89a7a061a5f82f8e9173341aec4e59feeea706434dbe126ea221df6a07df","src/series/line_series.rs":"16aa9153b2887495f06864e3cff3a0449b01398146a3d4c65afab18015b0ef66","src/series/mod.rs":"4b88e9be691747ddd046e8c39b7217ca75b7d9ed93bb356fbaaeb5b73c50e435","src/series/point_series.rs":"54350ee56bcacccbac0b4904e9dd8cc7986e63ab3eeb16a8d1b6c7c86b1793da","src/series/surface.rs":"c83605843a4f0af655b0b37556ecb7381d317fddbf8cf4ef19495c0fc80293d4","src/style/color.rs":"94736096e3c372d6423b777facd659255307c683d9bf6e38f6db4e4b88d73088","src/style/colors/colormaps.rs":"04e6ebc63d83791c2548ee6b244fbb29aabc572ae396b06eb213cb76faa19bab","src/style/colors/full_palette.rs":"69c168169c38007c0e3e088fa9673d3c617329f6c5cf19b47797c1dbcbf4a43e","src/style/colors/mod.rs":"52eb79e5f9fa2c85fddffb4a45dd23ffc666305127aac7d526744184e7945ab4","src/style/font/ab_glyph.rs":"86c25b12c11a52bc5736ebcea225e0b01090a0f191b0eb00a015230bcf9b52a3","src/style/font/font_desc.rs":"0fae261114798290a5a41caec3ad0c79b61e260d408f6110cb3d9e4922fe9cfc","src/style/font/mod.rs":"eab47f53d211dbe119cdc015eb2388205fa86557a2022a0435f9e083ad408461","src/style/font/naive.rs":"1db6dc0ffae787313cc4127827127f87eb263cfd2e51ee0ba9be3bb40f7c587c","src/style/font/ttf.rs":"8d4bab36948e147c53e23cdbe273f940f488145f45d2c15b56c5f15e2d239396","src/style/font/web.rs":"2d1cb4a23c0d7321b5164aa36a21582ddfb503afa07939f96f87bef27863e8a7","src/style/mod.rs":"8768bcd39ac176d4f2126336bdf510d14016f5e40ced3fd1063c9bcd7ccede08","src/style/palette.rs":"4bdc0bae9c997e5864f2430779629e4f6d497ccd3d1be1fd35ada48ed0a0f35b","src/style/shape.rs":"fe4e7cd6bfff5ccde87a505bda175121c4b02e8115d2345d741c4abbc5e516d8","src/style/size.rs":"65bd59347bb3ba8eea51dd282c7961df4f466e6f6125a84f70a4a954afd8784c","src/style/text.rs":"b4398d4e3196212d052e718a4a6c861370f0570b27da033f6bc68acba468272d","src/test.rs":"6550b9135f235139deb8c18313370911f8e5332e62a3493cba612d96da65826b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"03fb3490582b73627b8d0103170bac84ebad46201aac413290bf243a070464fa","Android.bp":"2ff6131b101e09fba56d3e30f5399f5c0a31ef4e5f6938c92803d45397b78b94","Cargo.lock":"fb92cec66d3dd5238e76c869429bda3e48d48ce7012a86b6314c95c886fa7a27","Cargo.toml":"f0d60165afe42478c5fb587f25ce62c1ab686ba6d8caeded9ef8bf846701485e","LICENSE":"451da80efab9921ae614dd0ebf837219a5cff36f2edf818ce3932993a086b3e6","METADATA":"b43ef0d925ab6c42150f499607e5ed23666dbd13eb826b9d33575c7efa5051bf","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2d4a3d7185716d3dbbae2317498f3cd97b4a5bf2d3a07fa284041c2273315492","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","benches/benches/data.rs":"0bfcf2e2c7c376a0fa986abc2e71b9c78f8f8fd03bbab9cc0a9c15936b7a3083","benches/benches/mod.rs":"a57d9a364956c0ee9a52b2e99bb0a35dc78bd63f8657d7e486b47ec5a0e9cec6","benches/main.rs":"18a1afab41bdadf925679f34a11b0858ea2dbad1af2ad38dbfda238272adb8af","blub.png":"89f98bd774820f66f507a37c7b3f66661bb21d123b85fc62c6196fbe99d1cd62","cargo_embargo.json":"73728a49fe783884e736d809dc69bb9a73982252b0429292d9d93c6947508b51","examples/3d-plot.rs":"8bb26602ba97f70cb7ff494e676475d967b906bb41659d8fcb0bb0cb4f24e393","examples/3d-plot2.rs":"8fa97a5ac7b0807e2340ddda48e1e7b7ce1a0a55b9f5101886394d830b7768ea","examples/README.md":"b36db335432f1547dbf722de1d9baaf4a493fba92d1c76c7f0d343ce8fe5874f","examples/animation.rs":"0e73ac7d22742ca36bfbc2d77aac5cdcd5fba729ee6f016081caf58042493a34","examples/area-chart.rs":"801a2d2ef9ee9c430acc07cad7bdf74682801c15167921c21b76a892180cdf5a","examples/blit-bitmap.rs":"4a00ee6544de5ae011505f1ed86583e63b669dd5629a41c6d28de8736824f79a","examples/boxplot.rs":"e9fe602429aa6f5af5e623ae5b90da75b5f08aace95d049f06a19abc78d98a82","examples/chart.rs":"c0499ad0c688ffeb7ac3a65523cce035f7a52fa0fb79933eaa9bc3ccc413c6f6","examples/colormaps.rs":"4937a290940f1d15ef04c3a087953a059840cf152896ac4fc10df120059c3102","examples/console.rs":"a3845a4231faed1eab933a5091e5b3ad481b2eb6ccfeee0b24467a6a574e1a11","examples/customized_coord.rs":"19d587d498214f082be7b43179725976358894863b37a3adf2c02c1060fd4493","examples/errorbar.rs":"90c7b5d9f687f22ce7cd54de5426af3461334e58bad05d2d19671b082aa9940a","examples/full_palette.rs":"e91d93062129421828d3e25da035259619d5076628535b293cac47a2b3a2698c","examples/histogram.rs":"78e6488dd6a9f6f33f8c61e6142b1802d0de1367dd5b493dd1b2e37834f685eb","examples/mandelbrot.rs":"9b122e062bf323d16e6782890951d8425df934d73bb72e863b21d5074024f62a","examples/matshow.rs":"abd82f0ef23ea46b95cd9f7338437767660078a3623b7d5cd473991c5ddd9056","examples/nested_coord.rs":"8ec5b3bbfcd8b6d77890aab3e5d632ef85e133702cb63ffd83d56726aeee38de","examples/normal-dist.rs":"7a5119b005d037364f8f43fdedf3e00630a08325f95cb0be3d4c162c5062c6fe","examples/normal-dist2.rs":"9657d967f191dd136972ebc86eb11e06faf5c9fa54f2c9bd1b56a9b9dc141648","examples/pie.rs":"e18e64470a2a0238acaf9fd28b38abdb2b3c15b16540316c8447960cf44a8872","examples/relative_size.rs":"ec2cf60671767fdfe787575007d4fcda7e895c62efca1a56edc6d914d9549218","examples/sierpinski.rs":"d88682654a6609f87f587025dfb02ccca357b0cf264da6d2960021f4a7583fbe","examples/slc-temp.rs":"836fdf77956af3cef08adaca6cb4d5cd4f1890e402424443206614f7dca15866","examples/snowflake.rs":"9f4d6e60e873675a2b21179bff1e40f97c0e4fc6c7ce84e01ff20c390ed3a97c","examples/stock.rs":"75e19c8a54cbefdea6e4b9366f8458da378110251f4763404665efca4543a6be","examples/tick_control.rs":"7080996accbeb8b4dc926682524c4af42bf48efc23a0e0ecd3c417bfa72ee0e5","examples/two-scales.rs":"f63736d51d56ea86fc445d0ecf7a20bc4932f282d72721b03718345af7c6d7aa","patches/LICENSE.patch":"c278ddae3cd1ee201a096b0a610925cf47914169b9c708afe9d3af8deba6e797","src/chart/axes3d.rs":"c41cbd867cfd206eca2f72de7d1ca7d4d4df33a06e21f120833b8ce8831ec78f","src/chart/builder.rs":"ba14586049a5cce7031a35f7d6fcbc3e1da96a63fe348a6b51e9b5f7881d8746","src/chart/context.rs":"11a1464060429b6980a342f56732532b9e60cd8a48138f5fe88d9a1300ef76bc","src/chart/context/cartesian2d/draw_impl.rs":"e3446e46645e40606d1436a0810869bbf30ba4ebe61a05c1fb8efbd93c0668d7","src/chart/context/cartesian2d/mod.rs":"33cc666e5022f194248405612d7e47b1a3d2a637a7d584483b3a1d85761fc3f4","src/chart/context/cartesian3d/draw_impl.rs":"47a2b680b9651bc132d1d8c301a23a372e03535ea2a0b153309132e7b19c45b8","src/chart/context/cartesian3d/mod.rs":"efc0eaebefab8202f3c402cd6ba30316db964a34af5dc3044fadb7bf323f0eda","src/chart/dual_coord.rs":"73bedb0c87de1a50638df7bb1e269dd889de1022883c7b6611c42817db3b7921","src/chart/mesh.rs":"a0de75a213a780f3f115696ded369e6f55e2aef955dd5620eae59b25877b3f77","src/chart/mod.rs":"b29cf6d1e950e1c54e93fdc06fa87b06eef04c4932859a0d9bfb7352002300e3","src/chart/series.rs":"ea8b7a932464987fc2c84e59152bd1e07d26213db28532a0c05642ea208772a0","src/chart/state.rs":"29e57931a64717dd37a25c6c96a0c1d80c6f224a4fb2f860afe2f85676c65e7a","src/coord/mod.rs":"d87301c080567f5723faf945ef04cf05fc722becaa46e854dc4819e8acd88c5c","src/coord/ranged1d/combinators/ckps.rs":"513a4b78e65a0b5921b29832525fd0fcf5f6912b0cc92aafff5621c402eeee28","src/coord/ranged1d/combinators/group_by.rs":"e1eec99c9231e79c0e7fa5e064b2909f19c3bc7b820189812ba0532a8045c289","src/coord/ranged1d/combinators/linspace.rs":"53defc10b64ac18380003933c61c18013422b055cc3d718f43f1d7be7f0a091c","src/coord/ranged1d/combinators/logarithmic.rs":"e907b4dd0d412f70bbcc3ceb32f4b76cf96954a3d4e4920e4d16b1cd2fafbe0a","src/coord/ranged1d/combinators/mod.rs":"d4fcafb601e1ac0a768ff1aa2f0bcc55d271faf6199abca9d9655ac7af52bfe7","src/coord/ranged1d/combinators/nested.rs":"c402a79bad7ba4ed910088fa47b76509ae1253cb15e8acc4e6a3c3e6627e4a47","src/coord/ranged1d/combinators/partial_axis.rs":"aa0e6b157ef7077786dfbfb5b84a036c65b2bd49ed3d10e91bba1009bb52b118","src/coord/ranged1d/discrete.rs":"71c5b18bfda7d935933437a439f4f7a1763d99c6efb2d3e053cd739cfd204794","src/coord/ranged1d/mod.rs":"5ba122225db5a2f2af840a6f72462034abd0463b6f92d031436979760d504385","src/coord/ranged1d/types/datetime.rs":"66bff3bba6fe2b5da9f961d3c5f37c8be49cbdaa7f5b9bb7eb15d22f67433cef","src/coord/ranged1d/types/mod.rs":"9fcf9728ca38db8469c406f9e64d37defe88714a52d9b3382ef18f10b5c5b172","src/coord/ranged1d/types/numeric.rs":"e13991d2c29c5a225cbb2545dc9c33838ae6ca658dd95b4df1456f0a082000f0","src/coord/ranged1d/types/slice.rs":"75e0e0d7deab3bf6b1265d12435e28eadbb28c45f9eca0a268e648a536c05331","src/coord/ranged2d/cartesian.rs":"b2f69bc811806db35a0c26f83182f5d585a36508149a5080bc668656739a946d","src/coord/ranged2d/mod.rs":"2ab4283d93cbb679ae8c30f10bf28a3251dd17b67856800a2369e6b21623feca","src/coord/ranged3d/cartesian3d.rs":"c099dbbeb48f17288831384f28103f0d26fe7e927f1fb9c3c9dd43a22d055e56","src/coord/ranged3d/mod.rs":"f08d10489ef8c70de8886e1c9d4fe15924aaa717addc418efed52721eeb5c775","src/coord/ranged3d/projection.rs":"d33e92113999b96e9b7fbba523eb5c63061cf7c2d7ec3b4227e051179176d6f5","src/coord/translate.rs":"409dd7f599c99f58f4a2b9cc6e7589d88801c23e15ef659fa6dbe1567bb362a0","src/data/data_range.rs":"563d86fc63c403be88e6d2ea1966cb964ed81e672cedecdaebc7574274d12414","src/data/float.rs":"05499ba3cea19a22c06be321c7b8800dcc3d78d593a4f7f6717e44ab15663c87","src/data/mod.rs":"fa53ebcfc36060d0766983e57b8852cd4fd79235b615f05e356c56fe9fc19371","src/data/quartiles.rs":"947ac9d5d1fffc08bc55fd4c84520954987c5db74e6907958ed5df810e15bf36","src/drawing/area.rs":"3c72e8a022acc8584057adc32bf4d81d670b8f7d29b0f0ca56b13bd962de2324","src/drawing/backend_impl/mocked.rs":"bcb8f8676b384c2f45196ac1af63282ca04082797c1a023334a94235df5a03d5","src/drawing/backend_impl/mod.rs":"b5f89c759b3e35a40cc9569bebdc7b5f4c5a430bdde10f446ee744b5baf2fa4c","src/drawing/mod.rs":"d21bf21dd5453a477731036a7a47482d6ead47f23a877ff68cba3f740e74bed2","src/element/basic_shapes.rs":"eeaef6aba6eb20f327e70fde59b1df9958a3c65592af2f48bc2cb9b48572d4ce","src/element/basic_shapes_3d.rs":"04c87e0d16db182cfeb31e54907a2d5db5d50ab0d01facd2233b9476ec6657e1","src/element/boxplot.rs":"4a1e80636480c2c403bcba3c3d3bfd0fb5df0ddd456e9ccf5fd7cef2824c9cf5","src/element/candlestick.rs":"b37b86cda8e4f17eb8bf5f784fde619d5824c3c4dab170a576796e4ac46e1467","src/element/composable.rs":"6e1e8f36e5581d612e4b38afc55c3467a39494552988e108747e5992df43b1fd","src/element/dynelem.rs":"8811c375b2a27b7ddbb6de90d28b0395868a43a9ea563c929ee5a95d3b873f62","src/element/errorbar.rs":"555dd4c874f9bf7efa35a86261ba3158203fd1cbe3aa91b9c3e846bf42cd9afd","src/element/image.rs":"ba99d9f0357e7b7c43d5c63aca299fba60687f61e8d39f2451b3d44c87845e5e","src/element/mod.rs":"d28aff5259b74b4807a1890763d77345ec369e154b83337ba85af88d9e23ad84","src/element/pie.rs":"130d00323d33be81bc0ffe0702f9a54d26c440c70f8c65d65342be67c103839d","src/element/points.rs":"a1ec58fc38e1db3e2f2ee27e4297011bcca3179653679991f673cecc3d0f4136","src/element/text.rs":"bea7233fa596ac8708c62061aa793fe2f91ed80649822522530598719ef93b97","src/evcxr.rs":"83d23c7342e8b23e0ca16cc4d4da87ff7dac1837e01c30bdca2ec2796766f462","src/lib.rs":"88fd8193d328f4f425158539e90a4e13724c512cf99d40aacc1bc6a9ad86cc96","src/series/area_series.rs":"76233945f72ba07fa771cb9f94622cee3472df20f2e6d20d285713d0e50f8746","src/series/histogram.rs":"cefc89a7a061a5f82f8e9173341aec4e59feeea706434dbe126ea221df6a07df","src/series/line_series.rs":"16aa9153b2887495f06864e3cff3a0449b01398146a3d4c65afab18015b0ef66","src/series/mod.rs":"4b88e9be691747ddd046e8c39b7217ca75b7d9ed93bb356fbaaeb5b73c50e435","src/series/point_series.rs":"54350ee56bcacccbac0b4904e9dd8cc7986e63ab3eeb16a8d1b6c7c86b1793da","src/series/surface.rs":"c83605843a4f0af655b0b37556ecb7381d317fddbf8cf4ef19495c0fc80293d4","src/style/color.rs":"94736096e3c372d6423b777facd659255307c683d9bf6e38f6db4e4b88d73088","src/style/colors/colormaps.rs":"04e6ebc63d83791c2548ee6b244fbb29aabc572ae396b06eb213cb76faa19bab","src/style/colors/full_palette.rs":"69c168169c38007c0e3e088fa9673d3c617329f6c5cf19b47797c1dbcbf4a43e","src/style/colors/mod.rs":"52eb79e5f9fa2c85fddffb4a45dd23ffc666305127aac7d526744184e7945ab4","src/style/font/ab_glyph.rs":"86c25b12c11a52bc5736ebcea225e0b01090a0f191b0eb00a015230bcf9b52a3","src/style/font/font_desc.rs":"0fae261114798290a5a41caec3ad0c79b61e260d408f6110cb3d9e4922fe9cfc","src/style/font/mod.rs":"eab47f53d211dbe119cdc015eb2388205fa86557a2022a0435f9e083ad408461","src/style/font/naive.rs":"1db6dc0ffae787313cc4127827127f87eb263cfd2e51ee0ba9be3bb40f7c587c","src/style/font/ttf.rs":"8d4bab36948e147c53e23cdbe273f940f488145f45d2c15b56c5f15e2d239396","src/style/font/web.rs":"2d1cb4a23c0d7321b5164aa36a21582ddfb503afa07939f96f87bef27863e8a7","src/style/mod.rs":"8768bcd39ac176d4f2126336bdf510d14016f5e40ced3fd1063c9bcd7ccede08","src/style/palette.rs":"4bdc0bae9c997e5864f2430779629e4f6d497ccd3d1be1fd35ada48ed0a0f35b","src/style/shape.rs":"fe4e7cd6bfff5ccde87a505bda175121c4b02e8115d2345d741c4abbc5e516d8","src/style/size.rs":"65bd59347bb3ba8eea51dd282c7961df4f466e6f6125a84f70a4a954afd8784c","src/style/text.rs":"b4398d4e3196212d052e718a4a6c861370f0570b27da033f6bc68acba468272d","src/test.rs":"6550b9135f235139deb8c18313370911f8e5332e62a3493cba612d96da65826b"}}
\ No newline at end of file
diff --git a/crates/plotters/Android.bp b/crates/plotters/Android.bp
index af370e2..42add1a 100644
--- a/crates/plotters/Android.bp
+++ b/crates/plotters/Android.bp
@@ -38,4 +38,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/plotters/cargo_embargo.json b/crates/plotters/cargo_embargo.json
index 8ecbd19..9790201 100644
--- a/crates/plotters/cargo_embargo.json
+++ b/crates/plotters/cargo_embargo.json
@@ -4,5 +4,6 @@
"area_series",
"line_series"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/poll_token_derive/.android-checksum.json b/crates/poll_token_derive/.android-checksum.json
index 0ce86d4..15fdc45 100644
--- a/crates/poll_token_derive/.android-checksum.json
+++ b/crates/poll_token_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"bfd7e5ed15f2e788cc406bec500857f3d7c0d57bfbfadec50cb3f64ce488cf6b","Android.bp":"ebc8dffd29a827b40ad106969cf97d1be9ea94fe87cab39396c6e569b4ef2f73","Cargo.toml":"a2a97eacec3478e5f132be7d1a4a81c5872dea631572afd44e5db52d58e08610","LICENSE":"712a257bd71f6fbd14becdc9e6758cee2ebd1372d2661ba81182b3e4a9fd2f10","LICENSE-BSD-3-Clause":"712a257bd71f6fbd14becdc9e6758cee2ebd1372d2661ba81182b3e4a9fd2f10","METADATA":"9d4d7f0ccbba64f475e70541576b04cbe39b8e79abce7ecf0beafe839cf1a2f2","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"ae9f901a99933ef2216ae116c57b3039c24f254ab655e45d7e50bf8d917d6089","cargo_embargo.json":"40d35609bf1a3c97edce3547cd7c42bfeb05e3d0e283601a2e181deb40f8c4ee","patches/license.patch":"90a4be2ff81cb8bb0a9ecdd5a968ab0265f985bbc5fde1e74f467b64af009119","poll_token_derive.rs":"90415ba6221357435e89891dc8ea5c37d418453dac6ddbb968ee754ccee4110b","tests.rs":"c8be977114275cec2b0c13b4e349ef27382005ed7eed29526d4ca8f236fa04a9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bfd7e5ed15f2e788cc406bec500857f3d7c0d57bfbfadec50cb3f64ce488cf6b","Android.bp":"ebc8dffd29a827b40ad106969cf97d1be9ea94fe87cab39396c6e569b4ef2f73","Cargo.toml":"a2a97eacec3478e5f132be7d1a4a81c5872dea631572afd44e5db52d58e08610","LICENSE":"712a257bd71f6fbd14becdc9e6758cee2ebd1372d2661ba81182b3e4a9fd2f10","LICENSE-BSD-3-Clause":"712a257bd71f6fbd14becdc9e6758cee2ebd1372d2661ba81182b3e4a9fd2f10","METADATA":"9d4d7f0ccbba64f475e70541576b04cbe39b8e79abce7ecf0beafe839cf1a2f2","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"ae9f901a99933ef2216ae116c57b3039c24f254ab655e45d7e50bf8d917d6089","cargo_embargo.json":"28dd1301385cdc359d436b0bf20e259fe0ea3db6a9f3aa4940e6ad0ca27f0e49","patches/license.patch":"90a4be2ff81cb8bb0a9ecdd5a968ab0265f985bbc5fde1e74f467b64af009119","poll_token_derive.rs":"90415ba6221357435e89891dc8ea5c37d418453dac6ddbb968ee754ccee4110b","tests.rs":"c8be977114275cec2b0c13b4e349ef27382005ed7eed29526d4ca8f236fa04a9"}}
\ No newline at end of file
diff --git a/crates/poll_token_derive/cargo_embargo.json b/crates/poll_token_derive/cargo_embargo.json
index f94f6fa..48085f1 100644
--- a/crates/poll_token_derive/cargo_embargo.json
+++ b/crates/poll_token_derive/cargo_embargo.json
@@ -6,5 +6,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/portable-atomic/.android-checksum.json b/crates/portable-atomic/.android-checksum.json
index 8b34b30..a195ca5 100644
--- a/crates/portable-atomic/.android-checksum.json
+++ b/crates/portable-atomic/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8fa8924284c897a81022f97644eeaddb264831df594dd55b9608c19283efb5c4","Android.bp":"701a23ad3d937313df208102535d3fdb816beeb84c2d3353fe87f1b2315f2c9b","CHANGELOG.md":"22ee2bfe4addebf16906f64ddc34b53fbca48d1f0d923adafdc20abf85c0fa3b","Cargo.toml":"5a6b8aa19428c1e38963302973ce0b7a7f832ca536698e1c1869158ddfbd3327","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"756041c57bbda8eaa44b0fadddcffd2295eb3cd53b05a922a13405bceda30f00","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3a0f8c688acb3108049a68d780fb7cd55109792e266f4a02a41f1b3bcccdf958","build.rs":"89c2b141024d2d2d532e71169e9e04303cc951aa75135f225f241fb662a1976b","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","no_atomic.rs":"16ecabd187513573f2fb6dcecd4d9e038195b97912355cfaa9da15c657d56f7d","src/cfgs.rs":"b4afbecefa3f0d1438d727ef6c7b6887a0fd1a00181f6caf5568c6cfc0dc7f83","src/gen/utils.rs":"7df29c9db58561b595813a9c623388620d915f1f473c04f515280285d2f99d01","src/imp/atomic128/README.md":"789ad3784c04a0ae7b58b1f06b2f00c8f843c87c52a499bc8c738c17e18f1127","src/imp/atomic128/aarch64.rs":"1f238763ccd21ef0ab76109e8d93fdaad7f31ae4f977b5f3bb3595cd66dca68b","src/imp/atomic128/intrinsics.rs":"ff70f37b6886d9de8811413c7c486071d0693183564b1c213456eed4d080a0fc","src/imp/atomic128/macros.rs":"29288ec3e2cc1556ad4a4d2bf083b539622dcd0cf406b6813b8b278f45926b11","src/imp/atomic128/mod.rs":"6dbff333c4af1d5f3a20ba8e41e2760b379e877e17bc2f649ec71d818c0ce60a","src/imp/atomic128/powerpc64.rs":"7dae2fe234094ef5457b778859877f315cbd21b3a182a0929fc0a36c112692d6","src/imp/atomic128/riscv64.rs":"95a1c2a2a7fa17028488e7c5f3fe96d46c1f7e26a9f82abe4e4eca6baccba6a2","src/imp/atomic128/s390x.rs":"2d281118933ea4dc7e158051c91d8f043e04e20c78df31949949850ff23ee8aa","src/imp/atomic128/x86_64.rs":"7dfd2075a030ccf6e47b6cc78742c97cf5b8c4c1e9f0f2d50330f5b45f6a0477","src/imp/atomic64/README.md":"b6e39fe2814dcf9baa13762e7531c9f18f798ea460107f06bc11ca27e49120bd","src/imp/atomic64/arm_linux.rs":"6321cf710cb884dcd2edd595330405cb32bc2d7c863b3444bd1677f19c4057d7","src/imp/atomic64/macros.rs":"7cde9c115cb3bfe9f8ce193c6bf695babc74b8da330edb44ba88a966647d92d2","src/imp/atomic64/mod.rs":"bbd7431225c27987f4eb35c34e4308f15bb658d09a6dbd157b9dce23a5af1916","src/imp/atomic64/riscv32.rs":"8ee28151f1ca74adec6205db565901593f26d63b1c6ede80e39dee64177d3fc9","src/imp/core_atomic.rs":"ef9a92bc76c4870b30220bdd1a2a3b82b55b1316c0676916997e6ed38f886c72","src/imp/detect/README.md":"9d8be90f7daa514fb2309542f99b9f512c916903c1e23939911f3aab83838e66","src/imp/detect/aarch64_aa64reg.rs":"eaa21a505f90a2f2d143e5f8ba4c719c8abf89a626e85dabbc99baba6242d005","src/imp/detect/aarch64_apple.rs":"d21d0d87c5a34f2d999c3882b99f1bf91b73d587f60f8ba6a9dd8d342c23f977","src/imp/detect/aarch64_fuchsia.rs":"884990e392f6e4ec979ce645d9787aac9c562c6448f668606cc7e41e68cb5d98","src/imp/detect/aarch64_illumos.rs":"47f8a2c06e1c761797651f6992847f97fa8025f0932e9241a24575668d390e47","src/imp/detect/aarch64_windows.rs":"d2aef9e8ec96f1b8e18b4bdbbbdeb5867b30790018b2147d8f81fc760ed75b87","src/imp/detect/auxv.rs":"1cb1977ee0a41666d13ce3316fde0c5c4ba6afb3a51b1361ad64e70678b7aa94","src/imp/detect/common.rs":"d682e665878149dccef575f65472ac7fb3dad2a74e171eacec6266874a4ef171","src/imp/detect/riscv_linux.rs":"2b0d1e44fc63520e03ae5cfe0830ba41939ed1fb4b30c7f5a58c40b450749612","src/imp/detect/x86_64.rs":"cf23c9c882db84710d7bf0bf6a746925ef5c8e8023205e7f3170a858517703db","src/imp/fallback/mod.rs":"219e4c221d2f7eb4ff97c2b0da12bf92aea8bb7b9b89c7a52ecb5690a8435708","src/imp/fallback/outline_atomics.rs":"49f6aeff429cde4fe26678ac9538cdf8bc7a20cd1cfb227b1d595c554ff7d467","src/imp/fallback/seq_lock.rs":"417db1a8785a4d0ea39d6302aac75649a6feb91d817ad2bb9b64d099a1fd3d2c","src/imp/fallback/seq_lock_wide.rs":"71a2498a8d4a0fb51bbc27144ecd292c94d85562dbfc8878062942618a5a8b71","src/imp/fallback/utils.rs":"6a7a49eaa97699328f452524e407ecc20c1c672fb1d68e7ba90ad9460182fc9a","src/imp/float.rs":"f38fb63c1529174a77c844b8566f190f81540bbd52b34775107d1e33bb0f9db2","src/imp/interrupt/README.md":"41f5ce704aadf2f29f7c27d9ce1c7e0457a1f12ec6b61ecb279175147a00169c","src/imp/interrupt/armv4t.rs":"0e534346ee9eeb90ee74b1c67c1ca6fe56e85de0216fa27251f722f4999da66a","src/imp/interrupt/armv6m.rs":"524a1714d40fa6789edc949324f6587707cf5893a0d8577330282bbfda03f18a","src/imp/interrupt/avr.rs":"36ec87dc1093ef76b4c7b865cb1ab063567b39a81688426fa1a9c8df2606d5fa","src/imp/interrupt/mod.rs":"6be38fcc9586f081fa1b3fcf8d62683ddd91ec03b2bedd2b25cbdc24a904a45b","src/imp/interrupt/msp430.rs":"621a9a85583b39336a0cc0e654324d2a412a074742ee9ab301fbe45c56d4a4fe","src/imp/interrupt/riscv.rs":"1b08b3fd82181f3cbfebaebdb380071bb4aff70b2fb21d76dc48f402504c52e6","src/imp/interrupt/xtensa.rs":"87ded56315db142bb7bf1304ba1e6129b5903efc3dccf791924249f2e3497f89","src/imp/mod.rs":"ec8e51b2eecd7c4b3735b8d95dc6450678fa06314feb0c9e1cfcf18e5d5e8f1b","src/imp/msp430.rs":"3f1ddb0fa70f8343ebd79a1a14d7dbea847cf375331d0ee17fd8d6ae447adfeb","src/imp/riscv.rs":"a5d0f0baeae5f7504fa0cb09fac8fdb28022d896ed8a79323f1584e4cfe64f8f","src/imp/x86.rs":"8dd69fa4e510fd7d58afdc50b8e3dafc29d4e22766864368a266550587f3f7f4","src/lib.rs":"e1b33b08d2e91cbd5cbec156dcd46d7dc220d5daae42c666b0d63b40d4e4750c","src/tests/helper.rs":"f670df386ecc3e3e326f2049bd167d70cab2ab9e897da4da3cf22134194f29b2","src/tests/mod.rs":"8500b3d0cb04569040cddd4a2618c6c722aea469329fadf8030378e8471ef977","src/utils.rs":"3e232ecd9fd62a9f8d763d94b4c8d27e3cc27aa3485cdcaad63504fa612d91ad","version.rs":"2442a4a1b007e200092998a118583391e17c9265be5f990576c3f759323fd9dc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8fa8924284c897a81022f97644eeaddb264831df594dd55b9608c19283efb5c4","Android.bp":"5b6b6f81f39c663ab32b8cab612ad803ff6c2bf4496cf1bc25ae3b77a70d5189","CHANGELOG.md":"22ee2bfe4addebf16906f64ddc34b53fbca48d1f0d923adafdc20abf85c0fa3b","Cargo.toml":"5a6b8aa19428c1e38963302973ce0b7a7f832ca536698e1c1869158ddfbd3327","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"756041c57bbda8eaa44b0fadddcffd2295eb3cd53b05a922a13405bceda30f00","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3a0f8c688acb3108049a68d780fb7cd55109792e266f4a02a41f1b3bcccdf958","build.rs":"89c2b141024d2d2d532e71169e9e04303cc951aa75135f225f241fb662a1976b","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","no_atomic.rs":"16ecabd187513573f2fb6dcecd4d9e038195b97912355cfaa9da15c657d56f7d","src/cfgs.rs":"b4afbecefa3f0d1438d727ef6c7b6887a0fd1a00181f6caf5568c6cfc0dc7f83","src/gen/utils.rs":"7df29c9db58561b595813a9c623388620d915f1f473c04f515280285d2f99d01","src/imp/atomic128/README.md":"789ad3784c04a0ae7b58b1f06b2f00c8f843c87c52a499bc8c738c17e18f1127","src/imp/atomic128/aarch64.rs":"1f238763ccd21ef0ab76109e8d93fdaad7f31ae4f977b5f3bb3595cd66dca68b","src/imp/atomic128/intrinsics.rs":"ff70f37b6886d9de8811413c7c486071d0693183564b1c213456eed4d080a0fc","src/imp/atomic128/macros.rs":"29288ec3e2cc1556ad4a4d2bf083b539622dcd0cf406b6813b8b278f45926b11","src/imp/atomic128/mod.rs":"6dbff333c4af1d5f3a20ba8e41e2760b379e877e17bc2f649ec71d818c0ce60a","src/imp/atomic128/powerpc64.rs":"7dae2fe234094ef5457b778859877f315cbd21b3a182a0929fc0a36c112692d6","src/imp/atomic128/riscv64.rs":"95a1c2a2a7fa17028488e7c5f3fe96d46c1f7e26a9f82abe4e4eca6baccba6a2","src/imp/atomic128/s390x.rs":"2d281118933ea4dc7e158051c91d8f043e04e20c78df31949949850ff23ee8aa","src/imp/atomic128/x86_64.rs":"7dfd2075a030ccf6e47b6cc78742c97cf5b8c4c1e9f0f2d50330f5b45f6a0477","src/imp/atomic64/README.md":"b6e39fe2814dcf9baa13762e7531c9f18f798ea460107f06bc11ca27e49120bd","src/imp/atomic64/arm_linux.rs":"6321cf710cb884dcd2edd595330405cb32bc2d7c863b3444bd1677f19c4057d7","src/imp/atomic64/macros.rs":"7cde9c115cb3bfe9f8ce193c6bf695babc74b8da330edb44ba88a966647d92d2","src/imp/atomic64/mod.rs":"bbd7431225c27987f4eb35c34e4308f15bb658d09a6dbd157b9dce23a5af1916","src/imp/atomic64/riscv32.rs":"8ee28151f1ca74adec6205db565901593f26d63b1c6ede80e39dee64177d3fc9","src/imp/core_atomic.rs":"ef9a92bc76c4870b30220bdd1a2a3b82b55b1316c0676916997e6ed38f886c72","src/imp/detect/README.md":"9d8be90f7daa514fb2309542f99b9f512c916903c1e23939911f3aab83838e66","src/imp/detect/aarch64_aa64reg.rs":"eaa21a505f90a2f2d143e5f8ba4c719c8abf89a626e85dabbc99baba6242d005","src/imp/detect/aarch64_apple.rs":"d21d0d87c5a34f2d999c3882b99f1bf91b73d587f60f8ba6a9dd8d342c23f977","src/imp/detect/aarch64_fuchsia.rs":"884990e392f6e4ec979ce645d9787aac9c562c6448f668606cc7e41e68cb5d98","src/imp/detect/aarch64_illumos.rs":"47f8a2c06e1c761797651f6992847f97fa8025f0932e9241a24575668d390e47","src/imp/detect/aarch64_windows.rs":"d2aef9e8ec96f1b8e18b4bdbbbdeb5867b30790018b2147d8f81fc760ed75b87","src/imp/detect/auxv.rs":"1cb1977ee0a41666d13ce3316fde0c5c4ba6afb3a51b1361ad64e70678b7aa94","src/imp/detect/common.rs":"d682e665878149dccef575f65472ac7fb3dad2a74e171eacec6266874a4ef171","src/imp/detect/riscv_linux.rs":"2b0d1e44fc63520e03ae5cfe0830ba41939ed1fb4b30c7f5a58c40b450749612","src/imp/detect/x86_64.rs":"cf23c9c882db84710d7bf0bf6a746925ef5c8e8023205e7f3170a858517703db","src/imp/fallback/mod.rs":"219e4c221d2f7eb4ff97c2b0da12bf92aea8bb7b9b89c7a52ecb5690a8435708","src/imp/fallback/outline_atomics.rs":"49f6aeff429cde4fe26678ac9538cdf8bc7a20cd1cfb227b1d595c554ff7d467","src/imp/fallback/seq_lock.rs":"417db1a8785a4d0ea39d6302aac75649a6feb91d817ad2bb9b64d099a1fd3d2c","src/imp/fallback/seq_lock_wide.rs":"71a2498a8d4a0fb51bbc27144ecd292c94d85562dbfc8878062942618a5a8b71","src/imp/fallback/utils.rs":"6a7a49eaa97699328f452524e407ecc20c1c672fb1d68e7ba90ad9460182fc9a","src/imp/float.rs":"f38fb63c1529174a77c844b8566f190f81540bbd52b34775107d1e33bb0f9db2","src/imp/interrupt/README.md":"41f5ce704aadf2f29f7c27d9ce1c7e0457a1f12ec6b61ecb279175147a00169c","src/imp/interrupt/armv4t.rs":"0e534346ee9eeb90ee74b1c67c1ca6fe56e85de0216fa27251f722f4999da66a","src/imp/interrupt/armv6m.rs":"524a1714d40fa6789edc949324f6587707cf5893a0d8577330282bbfda03f18a","src/imp/interrupt/avr.rs":"36ec87dc1093ef76b4c7b865cb1ab063567b39a81688426fa1a9c8df2606d5fa","src/imp/interrupt/mod.rs":"6be38fcc9586f081fa1b3fcf8d62683ddd91ec03b2bedd2b25cbdc24a904a45b","src/imp/interrupt/msp430.rs":"621a9a85583b39336a0cc0e654324d2a412a074742ee9ab301fbe45c56d4a4fe","src/imp/interrupt/riscv.rs":"1b08b3fd82181f3cbfebaebdb380071bb4aff70b2fb21d76dc48f402504c52e6","src/imp/interrupt/xtensa.rs":"87ded56315db142bb7bf1304ba1e6129b5903efc3dccf791924249f2e3497f89","src/imp/mod.rs":"ec8e51b2eecd7c4b3735b8d95dc6450678fa06314feb0c9e1cfcf18e5d5e8f1b","src/imp/msp430.rs":"3f1ddb0fa70f8343ebd79a1a14d7dbea847cf375331d0ee17fd8d6ae447adfeb","src/imp/riscv.rs":"a5d0f0baeae5f7504fa0cb09fac8fdb28022d896ed8a79323f1584e4cfe64f8f","src/imp/x86.rs":"8dd69fa4e510fd7d58afdc50b8e3dafc29d4e22766864368a266550587f3f7f4","src/lib.rs":"e1b33b08d2e91cbd5cbec156dcd46d7dc220d5daae42c666b0d63b40d4e4750c","src/tests/helper.rs":"f670df386ecc3e3e326f2049bd167d70cab2ab9e897da4da3cf22134194f29b2","src/tests/mod.rs":"8500b3d0cb04569040cddd4a2618c6c722aea469329fadf8030378e8471ef977","src/utils.rs":"3e232ecd9fd62a9f8d763d94b4c8d27e3cc27aa3485cdcaad63504fa612d91ad","version.rs":"2442a4a1b007e200092998a118583391e17c9265be5f990576c3f759323fd9dc"}}
\ No newline at end of file
diff --git a/crates/portable-atomic/Android.bp b/crates/portable-atomic/Android.bp
index 8b12471..2368d3f 100644
--- a/crates/portable-atomic/Android.bp
+++ b/crates/portable-atomic/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/portable-atomic/cargo_embargo.json b/crates/portable-atomic/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/portable-atomic/cargo_embargo.json
+++ b/crates/portable-atomic/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/potential_utf/.android-checksum.json b/crates/potential_utf/.android-checksum.json
index 9bb0729..1f5a4b9 100644
--- a/crates/potential_utf/.android-checksum.json
+++ b/crates/potential_utf/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"06819904e59f132e0386f9238710dd0ec507cef4fc0b08ea8064c32daf724435","Android.bp":"e0004bf8d6d0bf51ba1896733de42a6bd2c1fb4b312ef1558277e60be84a13a4","Cargo.toml":"4c2c27b11c8315f90969f7780603c6e500c57f003a0b61471752b3345b51acda","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"71075e491cf7aefc03b0ebdc856f71391dea59b139b131f33f5b9712dd5e2a3a","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8c22aa60e2763ea6e4debe34e8e62c8341697f455f6567f3e2f2563f132e8dfd","cargo_embargo.json":"cf4259b85c01b5d4c6178cd5992bc8dac50893b2932760cd96ce476ea421076e","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"73a7d7f411c4aaba8a74a7303b9a70012b757dedf1db07f5a75801df9181932a","src/uchar.rs":"3ffa26f63fdbfb4540f21fb80f0c26e5e81935ec4415614e82edb1f71af28cf4","src/ustr.rs":"1894b28afe5a393be2a35ac1859de5a74efdedb6ff39aa50407dd36124e101b6","src/writeable.rs":"09dbc7bb56e5b5189405b1533eac9340b743bf15ea22157b7931a9d40b8ca017"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"06819904e59f132e0386f9238710dd0ec507cef4fc0b08ea8064c32daf724435","Android.bp":"fa2fddce2baf66fd1df57038574c2eed9b917e5fdfc6dbdf70534c21e1ddfcd2","Cargo.toml":"4c2c27b11c8315f90969f7780603c6e500c57f003a0b61471752b3345b51acda","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"71075e491cf7aefc03b0ebdc856f71391dea59b139b131f33f5b9712dd5e2a3a","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8c22aa60e2763ea6e4debe34e8e62c8341697f455f6567f3e2f2563f132e8dfd","cargo_embargo.json":"e0e9504c94f0e51ff8623101664f1a9e41a31aa157947200bda76b0bbdf9935e","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"73a7d7f411c4aaba8a74a7303b9a70012b757dedf1db07f5a75801df9181932a","src/uchar.rs":"3ffa26f63fdbfb4540f21fb80f0c26e5e81935ec4415614e82edb1f71af28cf4","src/ustr.rs":"1894b28afe5a393be2a35ac1859de5a74efdedb6ff39aa50407dd36124e101b6","src/writeable.rs":"09dbc7bb56e5b5189405b1533eac9340b743bf15ea22157b7931a9d40b8ca017"}}
\ No newline at end of file
diff --git a/crates/potential_utf/Android.bp b/crates/potential_utf/Android.bp
index ebf023a..11a0b4d 100644
--- a/crates/potential_utf/Android.bp
+++ b/crates/potential_utf/Android.bp
@@ -42,6 +42,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/potential_utf/cargo_embargo.json b/crates/potential_utf/cargo_embargo.json
index 6daa6a9..757075a 100644
--- a/crates/potential_utf/cargo_embargo.json
+++ b/crates/potential_utf/cargo_embargo.json
@@ -13,5 +13,6 @@
"potential_utf": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ppv-lite86/.android-checksum.json b/crates/ppv-lite86/.android-checksum.json
index 450ca34..77b893d 100644
--- a/crates/ppv-lite86/.android-checksum.json
+++ b/crates/ppv-lite86/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7ea9ea47a72690e473608c25ddb9c7d7f470263c2a5ff412163007eb31d22dd6","Android.bp":"6725cee6ab6f851d9df2dd29ac4ede1b635f463751766d12da83baa13b44e2ca","CHANGELOG.md":"1774cf9bc590eda0e48e11cd3a09d75f1f9d2a6b0cfaad98d4fb67d694c61fff","Cargo.toml":"6f963f6790e895afed0f1794d2ee429a28c34775dbdd19000c3cbb1602baed51","LICENSE":"f9d84c090e8c00f04968b0233283fc47b8659c7183325c28f4c1072e345dce6d","LICENSE-APACHE":"f9d84c090e8c00f04968b0233283fc47b8659c7183325c28f4c1072e345dce6d","METADATA":"b979600349b28ec8c0efc1646ac8021bab9b0e4c0e3c99fd83ed8291db660a8c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"43fc704c8364db4ba7aeb9fd98f729d4dcdfffc467150336edd480040a92e623","cargo_embargo.json":"4ddd8358d79bc3ec472e58f0e295a8006b443eb4db00a52da3afafbc7cc5bd11","src/generic.rs":"3c4b34aad86834591919427b4763fc5dd71398cb0303f558ce994da0e5a938c1","src/lib.rs":"9f9e841e483b1a8deb6bc946f620fb648f2fe839d783bc546ce0f6a79d9b8c93","src/soft.rs":"60d855b7bb51990ad76368adc4a3f00540f4b092d2860a9dfd275bfe8d35fc4b","src/types.rs":"1bc3c46e7f8fff7345996dbe93033c61ecca9ad4aa2930a7c4602223d25c5dcf","src/x86_64/mod.rs":"f8659690e345f3bb3a537be4f43a8acc7b2f79d1f83a89960bb7270009e48001","src/x86_64/sse2.rs":"52e992be3818de3fcbada00143bf43d1361b48e36a28e4d3aa860d0a77025673"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7f8a84540f14e751fbac0e025bd72dade6f7e2f5aa84c1cc53f4a0749340d8ed","Android.bp":"be2bf0b1213ced6d725b293800734ed3b21ccdb3d2472815d43a6c745c82cf79","CHANGELOG.md":"1774cf9bc590eda0e48e11cd3a09d75f1f9d2a6b0cfaad98d4fb67d694c61fff","Cargo.toml":"891ae6dee8c0e58464afc34192735d437fa33aa69538548dd6d632e9967beea2","LICENSE":"f9d84c090e8c00f04968b0233283fc47b8659c7183325c28f4c1072e345dce6d","LICENSE-APACHE":"f9d84c090e8c00f04968b0233283fc47b8659c7183325c28f4c1072e345dce6d","METADATA":"9b36e5c65c310e8c9eac438dc939787c41108bfe38e74f8144907a956d292b66","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"43fc704c8364db4ba7aeb9fd98f729d4dcdfffc467150336edd480040a92e623","cargo_embargo.json":"4ddd8358d79bc3ec472e58f0e295a8006b443eb4db00a52da3afafbc7cc5bd11","src/generic.rs":"cbd7bbe3f537341a37bb76bc760142bf3af04661f456c27659b19a4632925e48","src/lib.rs":"904e63ebc2772a79a4c7b28c2caac290c44d1e3fbcb73425f1bc16db4a2ad693","src/soft.rs":"c1ff44c0d4644a1631ea6201235f3e6ddad7a80fb3607c68d54338ae90ee79c5","src/types.rs":"1bc3c46e7f8fff7345996dbe93033c61ecca9ad4aa2930a7c4602223d25c5dcf","src/x86_64/mod.rs":"d2a73fd200a22836f2bc07551353245f7c32887c4bc934a9af4526afcc214ea5","src/x86_64/sse2.rs":"d1d49fc6a20c26cee27a9ac9b78d59760a142c21c4edd03fe2df632ee4717352"}}
\ No newline at end of file
diff --git a/crates/ppv-lite86/.cargo-checksum.json b/crates/ppv-lite86/.cargo-checksum.json
index 8453a22..81eaf6f 100644
--- a/crates/ppv-lite86/.cargo-checksum.json
+++ b/crates/ppv-lite86/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"0bd1d2bdb4a940a0d867a782644eb007e79611be0a8d74d4ba106e83597716df","Cargo.toml":"cff623f02fcb28f62506f25ca2d6898619b42b9fce4fd02bdd8b6f50b074e09c","LICENSE-APACHE":"0218327e7a480793ffdd4eb792379a9709e5c135c7ba267f709d6f6d4d70af0a","LICENSE-MIT":"4cada0bd02ea3692eee6f16400d86c6508bbd3bafb2b65fed0419f36d4f83e8f","src/generic.rs":"a49f9f8fbe3d9e67d67861e77ae9e69cc9f8181edad578be99b19cdf05bd8046","src/lib.rs":"ed340fd5f2c7f8a5dc1ed3666768b2131685b632e5c02b31ce1e847152d876c0","src/soft.rs":"11d7c36036444d3ad1267564b0913e4301d9ba485a7bb596eb39bf2a5973ff57","src/types.rs":"a1c9e993f85a99d1762597193d72ee8ff00c3f1116885040b4e4ecfbdedabf0a","src/x86_64/mod.rs":"145200e7f2dae24e4e0fd1020269132dddd652f30373f70a6b8dd40bf8327fea","src/x86_64/sse2.rs":"a7395837200b4eb03c178c762f3269ce9030187718b8ca62e15070c5c19cba96"},"package":"5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"0bd1d2bdb4a940a0d867a782644eb007e79611be0a8d74d4ba106e83597716df","Cargo.toml":"aa9337145bd03a6e76fd42c2ee5f07c5c23ff6b2eb73cfc35c3070d76c5bacb8","LICENSE-APACHE":"0218327e7a480793ffdd4eb792379a9709e5c135c7ba267f709d6f6d4d70af0a","LICENSE-MIT":"4cada0bd02ea3692eee6f16400d86c6508bbd3bafb2b65fed0419f36d4f83e8f","src/generic.rs":"4ed0101db7e24bd12472c4ebb347b200f7e0a71838abc10b223d2ae1508960c2","src/lib.rs":"45f498128e4843e920df48a285b26b87d2366983226b131e8f55535b45d03127","src/soft.rs":"12248968388d2f94dc90672bfee04fbf4fe7cba6f7237394c3607a9aa0600373","src/types.rs":"a1c9e993f85a99d1762597193d72ee8ff00c3f1116885040b4e4ecfbdedabf0a","src/x86_64/mod.rs":"89827a9d6a310adf8825961df92e1476c4da5012ee46961f26c6bc498065cf27","src/x86_64/sse2.rs":"7b5b3b8caefa7a75f00ac44a95e630b3bdd8d0d08fd7d37ab0b287939289c951"},"package":"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"}
\ No newline at end of file
diff --git a/crates/ppv-lite86/Android.bp b/crates/ppv-lite86/Android.bp
index 08f7f88..366310b 100644
--- a/crates/ppv-lite86/Android.bp
+++ b/crates/ppv-lite86/Android.bp
@@ -18,13 +18,14 @@
host_supported: true,
crate_name: "ppv_lite86",
cargo_env_compat: true,
- cargo_pkg_version: "0.2.17",
+ cargo_pkg_version: "0.2.21",
crate_root: "src/lib.rs",
- edition: "2018",
+ edition: "2021",
features: [
"default",
"std",
],
+ rustlibs: ["libzerocopy"],
apex_available: [
"//apex_available:platform",
"//apex_available:anyapex",
@@ -39,16 +40,17 @@
host_supported: true,
crate_name: "ppv_lite86",
cargo_env_compat: true,
- cargo_pkg_version: "0.2.17",
+ cargo_pkg_version: "0.2.21",
crate_root: "src/lib.rs",
test_suites: ["general-tests"],
auto_gen_config: true,
test_options: {
unit_test: true,
},
- edition: "2018",
+ edition: "2021",
features: [
"default",
"std",
],
+ rustlibs: ["libzerocopy"],
}
diff --git a/crates/ppv-lite86/Cargo.toml b/crates/ppv-lite86/Cargo.toml
index 4b5b14e..cae2924 100644
--- a/crates/ppv-lite86/Cargo.toml
+++ b/crates/ppv-lite86/Cargo.toml
@@ -10,11 +10,18 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2018"
+edition = "2021"
+rust-version = "1.61"
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.21"
authors = ["The CryptoCorrosion Contributors"]
-description = "Implementation of the crypto-simd API for x86"
+build = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Cross-platform cryptography-oriented low-level SIMD library."
+readme = false
keywords = [
"crypto",
"simd",
@@ -24,10 +31,16 @@
"cryptography",
"no-std",
]
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/cryptocorrosion/cryptocorrosion"
-[dependencies]
+[lib]
+name = "ppv_lite86"
+path = "src/lib.rs"
+
+[dependencies.zerocopy]
+version = "0.8.23"
+features = ["simd"]
[features]
default = ["std"]
diff --git a/crates/ppv-lite86/METADATA b/crates/ppv-lite86/METADATA
index 3ea5fa7..5c7b4f1 100644
--- a/crates/ppv-lite86/METADATA
+++ b/crates/ppv-lite86/METADATA
@@ -1,17 +1,17 @@
name: "ppv-lite86"
-description: "Implementation of the crypto-simd API for x86"
+description: "Cross-platform cryptography-oriented low-level SIMD library."
third_party {
- version: "0.2.17"
+ version: "0.2.21"
license_type: NOTICE
last_upgrade_date {
- year: 2022
- month: 12
+ year: 2025
+ month: 3
day: 19
}
homepage: "https://crates.io/crates/ppv-lite86"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.17.crate"
- version: "0.2.17"
+ value: "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.21.crate"
+ version: "0.2.21"
}
}
diff --git a/crates/ppv-lite86/src/generic.rs b/crates/ppv-lite86/src/generic.rs
index add6c48..ff0d4e8 100644
--- a/crates/ppv-lite86/src/generic.rs
+++ b/crates/ppv-lite86/src/generic.rs
@@ -3,13 +3,17 @@
use crate::soft::{x2, x4};
use crate::types::*;
use core::ops::*;
+use zerocopy::{FromBytes, IntoBytes};
-#[repr(C)]
-#[derive(Clone, Copy)]
-pub union vec128_storage {
- d: [u32; 4],
- q: [u64; 2],
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(C)]
+ #[derive(Clone, Copy)]
+ pub union vec128_storage {
+ d: [u32; 4],
+ q: [u64; 2],
+ }
}
+
impl From<[u32; 4]> for vec128_storage {
#[inline(always)]
fn from(d: [u32; 4]) -> Self {
@@ -452,12 +456,23 @@
}
}
-#[derive(Copy, Clone, Debug, PartialEq)]
-pub struct u32x4_generic([u32; 4]);
-#[derive(Copy, Clone, Debug, PartialEq)]
-pub struct u64x2_generic([u64; 2]);
-#[derive(Copy, Clone, Debug, PartialEq)]
-pub struct u128x1_generic([u128; 1]);
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ pub struct u32x4_generic([u32; 4]);
+}
+
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ pub struct u64x2_generic([u64; 2]);
+}
+
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Debug, PartialEq)]
+ pub struct u128x1_generic([u128; 1]);
+}
impl From<u32x4_generic> for vec128_storage {
#[inline(always)]
@@ -561,53 +576,45 @@
impl StoreBytes for u32x4_generic {
#[inline(always)]
unsafe fn unsafe_read_le(input: &[u8]) -> Self {
- assert_eq!(input.len(), 16);
- let x = core::mem::transmute(core::ptr::read(input as *const _ as *const [u8; 16]));
+ let x = u32x4_generic::read_from_bytes(input).unwrap();
dmap(x, |x| x.to_le())
}
#[inline(always)]
unsafe fn unsafe_read_be(input: &[u8]) -> Self {
- assert_eq!(input.len(), 16);
- let x = core::mem::transmute(core::ptr::read(input as *const _ as *const [u8; 16]));
+ let x = u32x4_generic::read_from_bytes(input).unwrap();
dmap(x, |x| x.to_be())
}
#[inline(always)]
fn write_le(self, out: &mut [u8]) {
- assert_eq!(out.len(), 16);
let x = dmap(self, |x| x.to_le());
- unsafe { core::ptr::write(out as *mut _ as *mut [u8; 16], core::mem::transmute(x)) }
+ x.write_to(out).unwrap();
}
#[inline(always)]
fn write_be(self, out: &mut [u8]) {
- assert_eq!(out.len(), 16);
let x = dmap(self, |x| x.to_be());
- unsafe { core::ptr::write(out as *mut _ as *mut [u8; 16], core::mem::transmute(x)) }
+ x.write_to(out).unwrap();
}
}
impl StoreBytes for u64x2_generic {
#[inline(always)]
unsafe fn unsafe_read_le(input: &[u8]) -> Self {
- assert_eq!(input.len(), 16);
- let x = core::mem::transmute(core::ptr::read(input as *const _ as *const [u8; 16]));
+ let x = u64x2_generic::read_from_bytes(input).unwrap();
qmap(x, |x| x.to_le())
}
#[inline(always)]
unsafe fn unsafe_read_be(input: &[u8]) -> Self {
- assert_eq!(input.len(), 16);
- let x = core::mem::transmute(core::ptr::read(input as *const _ as *const [u8; 16]));
+ let x = u64x2_generic::read_from_bytes(input).unwrap();
qmap(x, |x| x.to_be())
}
#[inline(always)]
fn write_le(self, out: &mut [u8]) {
- assert_eq!(out.len(), 16);
let x = qmap(self, |x| x.to_le());
- unsafe { core::ptr::write(out as *mut _ as *mut [u8; 16], core::mem::transmute(x)) }
+ x.write_to(out).unwrap();
}
#[inline(always)]
fn write_be(self, out: &mut [u8]) {
- assert_eq!(out.len(), 16);
let x = qmap(self, |x| x.to_be());
- unsafe { core::ptr::write(out as *mut _ as *mut [u8; 16], core::mem::transmute(x)) }
+ x.write_to(out).unwrap();
}
}
diff --git a/crates/ppv-lite86/src/lib.rs b/crates/ppv-lite86/src/lib.rs
index 638552f..311df97 100644
--- a/crates/ppv-lite86/src/lib.rs
+++ b/crates/ppv-lite86/src/lib.rs
@@ -9,14 +9,34 @@
mod types;
pub use self::types::*;
-#[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(feature = "no_simd"), not(miri)))]
+#[cfg(all(
+ target_arch = "x86_64",
+ target_feature = "sse2",
+ not(feature = "no_simd"),
+ not(miri)
+))]
pub mod x86_64;
-#[cfg(all(target_arch = "x86_64", target_feature = "sse2", not(feature = "no_simd"), not(miri)))]
+#[cfg(all(
+ target_arch = "x86_64",
+ target_feature = "sse2",
+ not(feature = "no_simd"),
+ not(miri)
+))]
use self::x86_64 as arch;
-#[cfg(any(feature = "no_simd", miri, not(target_arch = "x86_64"), all(target_arch = "x86_64", not(target_feature = "sse2"))))]
+#[cfg(any(
+ feature = "no_simd",
+ miri,
+ not(target_arch = "x86_64"),
+ all(target_arch = "x86_64", not(target_feature = "sse2"))
+))]
pub mod generic;
-#[cfg(any(feature = "no_simd", miri, not(target_arch = "x86_64"), all(target_arch = "x86_64", not(target_feature = "sse2"))))]
+#[cfg(any(
+ feature = "no_simd",
+ miri,
+ not(target_arch = "x86_64"),
+ all(target_arch = "x86_64", not(target_feature = "sse2"))
+))]
use self::generic as arch;
pub use self::arch::{vec128_storage, vec256_storage, vec512_storage};
diff --git a/crates/ppv-lite86/src/soft.rs b/crates/ppv-lite86/src/soft.rs
index 0ae390c..66b9bf5 100644
--- a/crates/ppv-lite86/src/soft.rs
+++ b/crates/ppv-lite86/src/soft.rs
@@ -5,9 +5,13 @@
use core::marker::PhantomData;
use core::ops::*;
-#[derive(Copy, Clone, Default)]
-#[allow(non_camel_case_types)]
-pub struct x2<W, G>(pub [W; 2], PhantomData<G>);
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Default)]
+ #[allow(non_camel_case_types)]
+ pub struct x2<W, G>(pub [W; 2], PhantomData<G>);
+}
+
impl<W, G> x2<W, G> {
#[inline(always)]
pub fn new(xs: [W; 2]) -> Self {
@@ -220,9 +224,13 @@
}
}
-#[derive(Copy, Clone, Default)]
-#[allow(non_camel_case_types)]
-pub struct x4<W>(pub [W; 4]);
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Default)]
+ #[allow(non_camel_case_types)]
+ pub struct x4<W>(pub [W; 4]);
+}
+
impl<W> x4<W> {
#[inline(always)]
pub fn new(xs: [W; 4]) -> Self {
diff --git a/crates/ppv-lite86/src/x86_64/mod.rs b/crates/ppv-lite86/src/x86_64/mod.rs
index 937732d..2a0501d 100644
--- a/crates/ppv-lite86/src/x86_64/mod.rs
+++ b/crates/ppv-lite86/src/x86_64/mod.rs
@@ -102,17 +102,21 @@
pub type AVX = SseMachine<YesS3, YesS4, NoNI>;
pub type AVX2 = Avx2Machine<NoNI>;
-/// Generic wrapper for unparameterized storage of any of the possible impls.
-/// Converting into and out of this type should be essentially free, although it may be more
-/// aligned than a particular impl requires.
-#[allow(non_camel_case_types)]
-#[derive(Copy, Clone)]
-pub union vec128_storage {
- u32x4: [u32; 4],
- u64x2: [u64; 2],
- u128x1: [u128; 1],
- sse2: __m128i,
+zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(C)]
+ /// Generic wrapper for unparameterized storage of any of the possible impls.
+ /// Converting into and out of this type should be essentially free, although it may be more
+ /// aligned than a particular impl requires.
+ #[allow(non_camel_case_types)]
+ #[derive(Copy, Clone)]
+ pub union vec128_storage {
+ u32x4: [u32; 4],
+ u64x2: [u64; 2],
+ u128x1: [u128; 1],
+ sse2: __m128i,
+ }
}
+
impl Store<vec128_storage> for vec128_storage {
#[inline(always)]
unsafe fn unpack(p: vec128_storage) -> Self {
diff --git a/crates/ppv-lite86/src/x86_64/sse2.rs b/crates/ppv-lite86/src/x86_64/sse2.rs
index 97197a4..e15b83e 100644
--- a/crates/ppv-lite86/src/x86_64/sse2.rs
+++ b/crates/ppv-lite86/src/x86_64/sse2.rs
@@ -9,6 +9,7 @@
use core::ops::{
Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Not,
};
+use zerocopy::transmute;
macro_rules! impl_binop {
($vec:ident, $trait:ident, $fn:ident, $impl_fn:ident) => {
@@ -38,13 +39,16 @@
macro_rules! def_vec {
($vec:ident, $word:ident) => {
- #[allow(non_camel_case_types)]
- #[derive(Copy, Clone)]
- pub struct $vec<S3, S4, NI> {
- x: __m128i,
- s3: PhantomData<S3>,
- s4: PhantomData<S4>,
- ni: PhantomData<NI>,
+ zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[allow(non_camel_case_types)]
+ #[derive(Copy, Clone)]
+ pub struct $vec<S3, S4, NI> {
+ x: __m128i,
+ s3: PhantomData<S3>,
+ s4: PhantomData<S4>,
+ ni: PhantomData<NI>,
+ }
}
impl<S3, S4, NI> Store<vec128_storage> for $vec<S3, S4, NI> {
@@ -883,7 +887,7 @@
impl<S3, S4, NI> Vector<[u32; 16]> for u32x4x4_sse2<S3, S4, NI> {
#[inline(always)]
fn to_scalars(self) -> [u32; 16] {
- unsafe { core::mem::transmute(self) }
+ transmute!(self)
}
}
@@ -1153,7 +1157,7 @@
x_s3.bswap()
};
- assert_eq!(x_s2, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s2, transmute!(x_s3));
assert_eq!(x_s2, s2.vec(ys));
}
@@ -1177,7 +1181,7 @@
};
assert_eq!(x_s2, s2.vec(ys));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
}
#[test]
@@ -1199,7 +1203,7 @@
x_s3.shuffle2301()
};
assert_eq!(x_s2, s2.vec(ys));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
let x_s2 = {
let x_s2: <SSE2 as Machine>::u32x4 = s2.vec(xs);
@@ -1210,12 +1214,12 @@
x_s3.shuffle3012()
};
assert_eq!(x_s2, s2.vec(zs));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
let x_s2 = x_s2.shuffle1230();
let x_s3 = x_s3.shuffle1230();
assert_eq!(x_s2, s2.vec(xs));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
}
#[test]
@@ -1237,7 +1241,7 @@
x_s3.shuffle2301()
};
assert_eq!(x_s2, s2.vec(ys));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
let x_s2 = {
let x_s2: <SSE2 as Machine>::u64x4 = s2.vec(xs);
@@ -1248,12 +1252,12 @@
x_s3.shuffle3012()
};
assert_eq!(x_s2, s2.vec(zs));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
let x_s2 = x_s2.shuffle1230();
let x_s3 = x_s3.shuffle1230();
assert_eq!(x_s2, s2.vec(xs));
- assert_eq!(x_s3, unsafe { core::mem::transmute(x_s3) });
+ assert_eq!(x_s3, transmute!(x_s3));
}
#[cfg_attr(not(all(target_feature = "ssse3", target_feature = "sse4.1")), ignore)]
@@ -1382,11 +1386,15 @@
use core::arch::x86_64::*;
use core::marker::PhantomData;
use core::ops::*;
+ use zerocopy::transmute;
- #[derive(Copy, Clone)]
- pub struct u32x4x2_avx2<NI> {
- x: __m256i,
- ni: PhantomData<NI>,
+ zerocopy::cryptocorrosion_derive_traits! {
+ #[repr(transparent)]
+ #[derive(Copy, Clone)]
+ pub struct u32x4x2_avx2<NI> {
+ x: __m256i,
+ ni: PhantomData<NI>,
+ }
}
impl<NI> u32x4x2_avx2<NI> {
@@ -1675,7 +1683,7 @@
impl<NI: Copy> Vector<[u32; 16]> for u32x4x4_avx2<NI> {
#[inline(always)]
fn to_scalars(self) -> [u32; 16] {
- unsafe { core::mem::transmute(self) }
+ transmute!(self)
}
}
impl<NI: Copy> From<u32x4x4_avx2<NI>> for vec512_storage {
diff --git a/crates/prettyplease/.android-checksum.json b/crates/prettyplease/.android-checksum.json
index b013bd0..22bcb48 100644
--- a/crates/prettyplease/.android-checksum.json
+++ b/crates/prettyplease/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"47667f8cc3a3f57d919ed42095f9b07f0396bd49425046d90d4aa3616fdd7657","Android.bp":"61e9b814c2851443d9f7026908ed64a838d03de7181714d274f4da0f2a2ede0b","Cargo.toml":"c4d32c346c34e322fc16f79ca6be6f082a02bdd2fcb3317be75d3eaa42e4362d","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"cdcf55e7739864b67999d6b915fec6b8a757f9b83e873e697c7fac641d8bf4b4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6cd24eece6714dc53f7f9f979abdc9cae292e172340688029b4a6ef5ae91ae24","build.rs":"53df216257bb8fbdc2212e23f60cf6261007366a73e9dc390dde3dcbde3d6251","cargo_embargo.json":"0a3aea02264006cd539344c6021258d9fc7c2f88bbe7510b351f5e3485244e08","examples/input.rs":"c54e04743b9eb5665e7a2c0ea6cdd7d3a31fecec1258086b9268b8edf63c9bf7","examples/output.prettyplease.rs":"11211b3ec0b461c64494cec9f240eac5c60084d55a2f9048d41dcca66ebb6f02","examples/output.rustc.rs":"fe3e54f99bba0ad1aebace5e6a06cdf79548dac62524210064f1654a72968f96","examples/output.rustfmt.rs":"f5bcc4d1f873d76ce87834f9fa0d2e5c46042a6f0a2258b22ea4855a85e8b018","src/algorithm.rs":"a3088270f85bf3a3ec147b527e6a831b42cefca28402e1626e2b88698e057a2a","src/attr.rs":"dd3e5c4c2c4a65040f3b567c86405e823e8eb1f963aaa8b8a8547fc1de22ca31","src/classify.rs":"e17fd6644f59523bd6f7a198acf3645fd1a0930f5cbfebe5552918ea8841e38e","src/convenience.rs":"faae49b9678e3fa882f287594cac24d2544308dbd21a5762b396a174ceb975cd","src/data.rs":"25457e0091113479a29087a215dc22f32eb28c9f4e29fb43f8864f81d6b98bf3","src/expr.rs":"94995c5e38e2c4226bca4342622b8800cb4be9b33a8c0d3ae6f6a467fde88a9d","src/file.rs":"359101ac28e7e39a275b9837053e6841765a48d022ea1482d8ef80e34d860d44","src/fixup.rs":"2f258a9d48fc6851ec32dc7bfc492f1187c2438fe3504b3a73ea0dfa91087d32","src/generics.rs":"eab714ff712509d0e2b23a635eb6ebabeb711d82b8e77350ace505180e5f60ef","src/item.rs":"21d89d8eb6376057bc3ffcfe7e0f18cb72803e1656fac5ec6919a93a85ef2939","src/iter.rs":"63d7cf3313d8ed3fa1637c5c01d80ab48b8a742538b71fd792604246822d4d9d","src/lib.rs":"02448084aaa08719c2a1697e9d54136bdbf164db356440f07043c87ef1f5a477","src/lifetime.rs":"b2f01d35e9faddd4a042dec30bb0f1668683ef11a9477e660e9eb4d480a08d61","src/lit.rs":"39cd69038e2143b16dad6007033015ef4c8e116b4af78e12937e916aa92b8376","src/mac.rs":"b1b77ab1bc15dc26f2bc63a9e109aaaa808421784979ff6e6528e48b0196bef4","src/pat.rs":"40e2926be48bcdfd151e6de00880ad4aba6c7822db3eb340e3f12a6a50edae4b","src/path.rs":"68c7066f63d9eb570d0d5a613225f2948d0d547257ecd49ea29e7cf693587d24","src/precedence.rs":"939141754675dbb9bc6091123a847d62cf8493db0aa701686f833b0435d3fc40","src/ring.rs":"cd1a93144b2f76a6a47ad8847ddc90d9b3d13bf674243e774f7848d7baebbcd8","src/stmt.rs":"10372120c97c4f3840f7b494bf973c36c97625b68f60f178854726b622b5fc0d","src/token.rs":"881884adcb68dcd01f6d66459c7f49df2f6f8019f0718d0a146d9c23ea375af5","src/ty.rs":"e8d75df0fe6e83a50a288b6b0ffe2285d698810043e6ba6a59408b62ecb04383","tests/test.rs":"adf75b6cb0fe9c700ea366366e2b0b9a2e166983b4dfd5abe87c1bcc986cbdea","tests/test_precedence.rs":"64413a1314a13c027b8e5e6afbfcff4d3375f5db80131fffc7b341d89fb775a6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"47667f8cc3a3f57d919ed42095f9b07f0396bd49425046d90d4aa3616fdd7657","Android.bp":"61e9b814c2851443d9f7026908ed64a838d03de7181714d274f4da0f2a2ede0b","Cargo.toml":"c4d32c346c34e322fc16f79ca6be6f082a02bdd2fcb3317be75d3eaa42e4362d","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"cdcf55e7739864b67999d6b915fec6b8a757f9b83e873e697c7fac641d8bf4b4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6cd24eece6714dc53f7f9f979abdc9cae292e172340688029b4a6ef5ae91ae24","build.rs":"53df216257bb8fbdc2212e23f60cf6261007366a73e9dc390dde3dcbde3d6251","cargo_embargo.json":"6885def59230eda8e68bd95c283b01f5c4445878175f9dd5a20eb8202d19cbe6","examples/input.rs":"c54e04743b9eb5665e7a2c0ea6cdd7d3a31fecec1258086b9268b8edf63c9bf7","examples/output.prettyplease.rs":"11211b3ec0b461c64494cec9f240eac5c60084d55a2f9048d41dcca66ebb6f02","examples/output.rustc.rs":"fe3e54f99bba0ad1aebace5e6a06cdf79548dac62524210064f1654a72968f96","examples/output.rustfmt.rs":"f5bcc4d1f873d76ce87834f9fa0d2e5c46042a6f0a2258b22ea4855a85e8b018","src/algorithm.rs":"a3088270f85bf3a3ec147b527e6a831b42cefca28402e1626e2b88698e057a2a","src/attr.rs":"dd3e5c4c2c4a65040f3b567c86405e823e8eb1f963aaa8b8a8547fc1de22ca31","src/classify.rs":"e17fd6644f59523bd6f7a198acf3645fd1a0930f5cbfebe5552918ea8841e38e","src/convenience.rs":"faae49b9678e3fa882f287594cac24d2544308dbd21a5762b396a174ceb975cd","src/data.rs":"25457e0091113479a29087a215dc22f32eb28c9f4e29fb43f8864f81d6b98bf3","src/expr.rs":"94995c5e38e2c4226bca4342622b8800cb4be9b33a8c0d3ae6f6a467fde88a9d","src/file.rs":"359101ac28e7e39a275b9837053e6841765a48d022ea1482d8ef80e34d860d44","src/fixup.rs":"2f258a9d48fc6851ec32dc7bfc492f1187c2438fe3504b3a73ea0dfa91087d32","src/generics.rs":"eab714ff712509d0e2b23a635eb6ebabeb711d82b8e77350ace505180e5f60ef","src/item.rs":"21d89d8eb6376057bc3ffcfe7e0f18cb72803e1656fac5ec6919a93a85ef2939","src/iter.rs":"63d7cf3313d8ed3fa1637c5c01d80ab48b8a742538b71fd792604246822d4d9d","src/lib.rs":"02448084aaa08719c2a1697e9d54136bdbf164db356440f07043c87ef1f5a477","src/lifetime.rs":"b2f01d35e9faddd4a042dec30bb0f1668683ef11a9477e660e9eb4d480a08d61","src/lit.rs":"39cd69038e2143b16dad6007033015ef4c8e116b4af78e12937e916aa92b8376","src/mac.rs":"b1b77ab1bc15dc26f2bc63a9e109aaaa808421784979ff6e6528e48b0196bef4","src/pat.rs":"40e2926be48bcdfd151e6de00880ad4aba6c7822db3eb340e3f12a6a50edae4b","src/path.rs":"68c7066f63d9eb570d0d5a613225f2948d0d547257ecd49ea29e7cf693587d24","src/precedence.rs":"939141754675dbb9bc6091123a847d62cf8493db0aa701686f833b0435d3fc40","src/ring.rs":"cd1a93144b2f76a6a47ad8847ddc90d9b3d13bf674243e774f7848d7baebbcd8","src/stmt.rs":"10372120c97c4f3840f7b494bf973c36c97625b68f60f178854726b622b5fc0d","src/token.rs":"881884adcb68dcd01f6d66459c7f49df2f6f8019f0718d0a146d9c23ea375af5","src/ty.rs":"e8d75df0fe6e83a50a288b6b0ffe2285d698810043e6ba6a59408b62ecb04383","tests/test.rs":"adf75b6cb0fe9c700ea366366e2b0b9a2e166983b4dfd5abe87c1bcc986cbdea","tests/test_precedence.rs":"64413a1314a13c027b8e5e6afbfcff4d3375f5db80131fffc7b341d89fb775a6"}}
\ No newline at end of file
diff --git a/crates/prettyplease/cargo_embargo.json b/crates/prettyplease/cargo_embargo.json
index 1ac440f..bfc5f2c 100644
--- a/crates/prettyplease/cargo_embargo.json
+++ b/crates/prettyplease/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/proc-macro2/.android-checksum.json b/crates/proc-macro2/.android-checksum.json
index 74a4cef..028e970 100644
--- a/crates/proc-macro2/.android-checksum.json
+++ b/crates/proc-macro2/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"aefb05b232df00207db6c72971ee43b1c76084ac8a7819b4770b11cb8ef0c156","Android.bp":"b548d175cb0284537aafbdc65d9578402d9b5fa0201bb57cc9804c5e8678ab2a","Cargo.toml":"81b729e52ee21d5b43f066fbb63c6529dc3b5db5c0d778022b472f637f6bba29","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5dfbc7f7fc432b2f29cf9a1dac28d18c674cf1cd94c45d0034bf203f2c331aa2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0eb4e869da628169d32db87e76e992fcd9b78ee1bb7d27c6793c0ecf7559d12b","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","build.rs":"fa102dc36b3331c971bdba6ebecb5993f22112ded95e35012f94598071d5fbd3","build/probe.rs":"be3bc6b0ade4a07f0e9e46a7a22e77af80e5e3c617eb243894ea97e81a96fa6c","cargo_embargo.json":"bcf30f407e7892155415865bc4706938d3cae2ff1d4c497d602c7f5ac4592870","rules.mk":"ca70abc107f26e179aebf4381e176ba5c3cf078ead0104cc44c453b85dac8e3c","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/detection.rs":"23d284f6e155e8180c2aedc3c72045a0252da8188a974cbbeca08ffe2e21db8e","src/extra.rs":"16da6308988791743c980182299ee2a32fd0f5d04f1e74b39a84409fd4c72b3d","src/fallback.rs":"e902d11353dab164e07a4ed7df4bcf8277fd7879d922b80f15ce973d8553a37a","src/lib.rs":"adb7d73f0c257299e208007540d9080a665a8f791de71855d764fc84fc8e9b18","src/location.rs":"a39f56039d68a74d015ffe32e4015168e0499d0ba6a1d11a7c5f75ddfa4a7af1","src/marker.rs":"6045dbb4e41ea3f52e17ae34ac61be3079468742db83f7d615e19dc7afe2971d","src/parse.rs":"cfc8a3e6de7b0150bb97ce44faaa5ef9affd1bbf8230f790999ad042858472ed","src/rcvec.rs":"3dba3df999395e68a7b9a6e6e6609b1fe5ef380fa897958c6461d4894177d5ab","src/wrapper.rs":"47bfa8a42f438f9b0437ba1d97b7e94ae089ad98a166357ec7aa924d0b9e1a57","tests/comments.rs":"4ecc320b4f2c27a742639c26248ccc0af71fe22764eb01c376fe8c4708b1aa44","tests/features.rs":"c86a1102b3904fd6b0bf85033611c0648a9bd123b8a72732acc712dab076d1a9","tests/marker.rs":"cc4cc966997474206d873ecc8acd0650b7a0aabec968a39e305f28c12431f685","tests/test.rs":"94cf9e39484172ff169ae16dcd7a78052b2e7923273e268b6dec9e6843581e4a","tests/test_fmt.rs":"23b30ed29c81a4dcdcc057c754b7da83a105870e2490c80230bcd1f2d545c514","tests/test_size.rs":"c612d4d1b48cd1a04129624304bef381b82c9cc270164157c725bbfb99fe53e9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"aefb05b232df00207db6c72971ee43b1c76084ac8a7819b4770b11cb8ef0c156","Android.bp":"b548d175cb0284537aafbdc65d9578402d9b5fa0201bb57cc9804c5e8678ab2a","Cargo.toml":"81b729e52ee21d5b43f066fbb63c6529dc3b5db5c0d778022b472f637f6bba29","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5dfbc7f7fc432b2f29cf9a1dac28d18c674cf1cd94c45d0034bf203f2c331aa2","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0eb4e869da628169d32db87e76e992fcd9b78ee1bb7d27c6793c0ecf7559d12b","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","build.rs":"fa102dc36b3331c971bdba6ebecb5993f22112ded95e35012f94598071d5fbd3","build/probe.rs":"be3bc6b0ade4a07f0e9e46a7a22e77af80e5e3c617eb243894ea97e81a96fa6c","cargo_embargo.json":"e130beba40652b52697c5c26da86c0eaa84e3510e92c6c74d8ba865c55e645ba","rules.mk":"ca70abc107f26e179aebf4381e176ba5c3cf078ead0104cc44c453b85dac8e3c","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/detection.rs":"23d284f6e155e8180c2aedc3c72045a0252da8188a974cbbeca08ffe2e21db8e","src/extra.rs":"16da6308988791743c980182299ee2a32fd0f5d04f1e74b39a84409fd4c72b3d","src/fallback.rs":"e902d11353dab164e07a4ed7df4bcf8277fd7879d922b80f15ce973d8553a37a","src/lib.rs":"adb7d73f0c257299e208007540d9080a665a8f791de71855d764fc84fc8e9b18","src/location.rs":"a39f56039d68a74d015ffe32e4015168e0499d0ba6a1d11a7c5f75ddfa4a7af1","src/marker.rs":"6045dbb4e41ea3f52e17ae34ac61be3079468742db83f7d615e19dc7afe2971d","src/parse.rs":"cfc8a3e6de7b0150bb97ce44faaa5ef9affd1bbf8230f790999ad042858472ed","src/rcvec.rs":"3dba3df999395e68a7b9a6e6e6609b1fe5ef380fa897958c6461d4894177d5ab","src/wrapper.rs":"47bfa8a42f438f9b0437ba1d97b7e94ae089ad98a166357ec7aa924d0b9e1a57","tests/comments.rs":"4ecc320b4f2c27a742639c26248ccc0af71fe22764eb01c376fe8c4708b1aa44","tests/features.rs":"c86a1102b3904fd6b0bf85033611c0648a9bd123b8a72732acc712dab076d1a9","tests/marker.rs":"cc4cc966997474206d873ecc8acd0650b7a0aabec968a39e305f28c12431f685","tests/test.rs":"94cf9e39484172ff169ae16dcd7a78052b2e7923273e268b6dec9e6843581e4a","tests/test_fmt.rs":"23b30ed29c81a4dcdcc057c754b7da83a105870e2490c80230bcd1f2d545c514","tests/test_size.rs":"c612d4d1b48cd1a04129624304bef381b82c9cc270164157c725bbfb99fe53e9"}}
\ No newline at end of file
diff --git a/crates/proc-macro2/cargo_embargo.json b/crates/proc-macro2/cargo_embargo.json
index be6ae16..a69a062 100644
--- a/crates/proc-macro2/cargo_embargo.json
+++ b/crates/proc-macro2/cargo_embargo.json
@@ -10,5 +10,6 @@
}
},
"tests": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/protobuf-codegen/.android-checksum.json b/crates/protobuf-codegen/.android-checksum.json
index 611738c..9050a54 100644
--- a/crates/protobuf-codegen/.android-checksum.json
+++ b/crates/protobuf-codegen/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"276c172ff70be67ed9bf519621926a3783415a6fc89f4c7a83096d29b268e484","Android.bp":"e3da9c978ee5ff5b1ff1a005c290e0393179b0933c23d361403bbc593d7fba38","Cargo.lock":"f3e04b8af51189500fe066ca755e8828907651c06375c947480b4979f8fa036a","Cargo.toml":"c018a78a9746994908e5a40c019a62ee9f57e9eb15fcd085401e067ba4fa5b62","LICENSE":"da400930f43f095d66c5cb544996390738c3975ca660da460f257a0110f7300f","LICENSE.txt":"da400930f43f095d66c5cb544996390738c3975ca660da460f257a0110f7300f","METADATA":"3a1d3478170763115804311d0c7fca7af430cd69a42ba3accd31ad58afbf62db","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"723be1af3b28f74efe6af5ecadd7c1168ee580a876569500c33499d8c59c14bd","TEST_MAPPING":"08ee59c9179481b1baf486d63817526f90792ddf0cf5b776a8f3d7874dfb8009","cargo_embargo.json":"3f0b86247bdb5700134414c7f987272b0ef54320190137f7c3a49dc5209a3a84","src/bin/protoc-gen-rust.rs":"545ecb65dec23a52897e4ebe72667f95fb72b59bf18bc18c19e5e3727806b4e3","src/codegen/mod.rs":"2a6be0784c47c090d16d5bc2c476a0a395c5dbd9d15ad1cedbab2f09f8f5fcc7","src/compiler_plugin.rs":"c16e5a28e41bb5196a268abce98aa8e9f65625b0805bbaaecbd5d8ff8e96794e","src/customize/ctx.rs":"aa52fdc2286bb500f6646478471a5f5d79e0118129ae6006462cbd769539f20e","src/customize/mod.rs":"6affe70adf714f1a5d8038c6dcfbf05ca4f5170656faf84f4510da8643bf6a8a","src/customize/rustproto_proto.rs":"3f8108bc8ed01a903ccb67ba28fee70b7dbbaab42ada0a058ffd9a3cf3ef9c85","src/gen/all.rs":"fe7c7c6010765fffc9e81435391f933bcead64ed16f737ba168a8c52829e23be","src/gen/code_writer.rs":"84a76d602cfe0269d8dd23d2bfde524c546570f8468fb22ecdd0a86682144181","src/gen/descriptor.rs":"845f017d7f66b01a179b8f92e64cb739a58424e87b59a2683b22ac72140396de","src/gen/enums.rs":"91327ab53dda33fe11c15191e10eb9ad703b4b0ced86508f4d8c9fccef15fc54","src/gen/extensions.rs":"7df4021f6e15fa8cb1b11982b714bc794b13c872ba56a4b397bfa1a7a6fe44ce","src/gen/field/accessor.rs":"d50b42b8b8aab638a65a702e56f9d2ed412cf7199f41265735ab3e2355a5daef","src/gen/field/elem.rs":"aef55e3efb700ba50880ab4689b0bc2a36e92165fd60d29b153d20147aa3cb71","src/gen/field/mod.rs":"05a63cd0007836cf4e0de78413a8fd37e5b08fe4b6ccede846966ebbfc4c4430","src/gen/field/option_kind.rs":"be9021c6d3b6ec1f3cef187c300dd9976a26b3996faf2d04ea660676ac7bc525","src/gen/field/repeated.rs":"bc8fb36e5aed38d8bb27a2348c448145c441db67fff5385bbb645fcad830096d","src/gen/field/singular.rs":"aaa79e6ef50e2a3086777b996c4433087d64913eb1e64fea1948d92b5953e3b1","src/gen/field/tag.rs":"4e8b6633ab8f4d7824773154a1e8093a0bb8565279d596e4cffd7228eff61e23","src/gen/field/type_ext.rs":"d0cf98c155dd7bc54fd3382eb14d9eca13f3ef47038341a0e2bdbe4c68a2ba16","src/gen/file.rs":"c6b5507445f22e0005d38b0e61f5e70147f42dc7080b87b25326bb0e99864ecd","src/gen/file_and_mod.rs":"f4c715e868ec185c4d78b4902599e28a4f50edb28a42871696e2455e8e858c47","src/gen/file_descriptor.rs":"64699dc7e30d3416d450bb97e669db074f48b77187a8c0b621b7c4b517146340","src/gen/inside.rs":"766d68ae4ef1be207adc1f93d00692f2bd3a344204cae659671989f11d39056a","src/gen/map.rs":"889db9fbeeb160ef68dba567e9d930ed7b926d8735021e6d0ac0bd885d590f6b","src/gen/message.rs":"5827ef9a2452d051a7015722eedcb7058696307538566003a83ede40089a9783","src/gen/mod.rs":"ad365cb5ca4e83e108c32df47dcc8afad999c9e4048d31b9c872533983332ad5","src/gen/mod_rs.rs":"3926a6a3fb704c8d659c19358fced286456f10f9b7c09aef4b9d60a7ea5823f5","src/gen/oneof.rs":"c287dc63e1f214456a3722965c80522d2d30b1309efe1e6c9d3b8f77bdc68901","src/gen/paths.rs":"ea7cac2b6cac555a768ff44a35a3eb3cb4227124b2f84db17e0bd6cae98e322d","src/gen/protoc_insertion_point.rs":"eada56479e964dd48a33f2aec21450ab9f9e78ac35930d7fcc3526ba300ce1ed","src/gen/rust/component.rs":"1e4253378cd9819733df85b6e57fd55c8939fff4bd806af9060f688aa4fc39b3","src/gen/rust/ident.rs":"4b5eafd4428e119932968c620e2d1a18a868b640ca533418f1c0125be0162510","src/gen/rust/ident_with_path.rs":"0cb4eec8bd49a1d74e494cf51f4ff1fbe9ee58af844d83e825d05bf82e2d1c57","src/gen/rust/keywords.rs":"c71c1aed8852a35cd5ace27c65111f29761fe82d36b0d146cf9647c223c948c4","src/gen/rust/mod.rs":"6318f990fccf79ddfe03ad0c1268c98271ca90afaf4290a89a304e029e82135e","src/gen/rust/path.rs":"f479d5d11a6cee9a23a3cd74878112c16e8a3e999430f372e6f26ecd080f987a","src/gen/rust/quote.rs":"31ff75975e59c372cc389b0c6bea4b442dac09626ae9127b7e1953607d344b38","src/gen/rust/rel_path.rs":"ec91f1419eb011320275879efe1d8741f34eb9d4f8192cfd04f3f2a2dc30572d","src/gen/rust/snippets.rs":"7c71ce35ed5ac589af52f76297b481319f1426ab111336923bb2a031b0f53df6","src/gen/rust_types_values.rs":"22d723b45fc4ff550079c748c3f551c5677f59d41cb5ed4dfb40d6f10616ad93","src/gen/scope.rs":"66d7cf720bd7f47f857d926fcf2e17f3db684e2d5d078735ae5b960d1ab074a2","src/gen/strx.rs":"2ce719299d4f18f85603896f4978be054b7da3c2806771821caa19068b89c64b","src/gen/well_known_types.rs":"bbc30c2bf6eb67cc3917642dfcd71c53ba3ad46e84f6d03ba2de56ac60bdab97","src/gen_and_write.rs":"3860228dfc2150c0c2c84254af6ce0d866215576f8e503f32f320884cea4fdb7","src/lib.rs":"48fa5c44c277a2b4a06aa262d8a35dccf7ceb0fe42aa25b826596f7e14319b76","src/protoc_gen_rust.rs":"53ab8f0717582832900e60151c1c6a04efb481870de751af285062c7d0478b17"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"276c172ff70be67ed9bf519621926a3783415a6fc89f4c7a83096d29b268e484","Android.bp":"e3da9c978ee5ff5b1ff1a005c290e0393179b0933c23d361403bbc593d7fba38","Cargo.lock":"f3e04b8af51189500fe066ca755e8828907651c06375c947480b4979f8fa036a","Cargo.toml":"c018a78a9746994908e5a40c019a62ee9f57e9eb15fcd085401e067ba4fa5b62","LICENSE":"da400930f43f095d66c5cb544996390738c3975ca660da460f257a0110f7300f","LICENSE.txt":"da400930f43f095d66c5cb544996390738c3975ca660da460f257a0110f7300f","METADATA":"3a1d3478170763115804311d0c7fca7af430cd69a42ba3accd31ad58afbf62db","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"723be1af3b28f74efe6af5ecadd7c1168ee580a876569500c33499d8c59c14bd","TEST_MAPPING":"08ee59c9179481b1baf486d63817526f90792ddf0cf5b776a8f3d7874dfb8009","cargo_embargo.json":"0435fb9f92bee8ff4f27b77ec5374c7243542faa5da55c944cd50fc141e3db8a","src/bin/protoc-gen-rust.rs":"545ecb65dec23a52897e4ebe72667f95fb72b59bf18bc18c19e5e3727806b4e3","src/codegen/mod.rs":"2a6be0784c47c090d16d5bc2c476a0a395c5dbd9d15ad1cedbab2f09f8f5fcc7","src/compiler_plugin.rs":"c16e5a28e41bb5196a268abce98aa8e9f65625b0805bbaaecbd5d8ff8e96794e","src/customize/ctx.rs":"aa52fdc2286bb500f6646478471a5f5d79e0118129ae6006462cbd769539f20e","src/customize/mod.rs":"6affe70adf714f1a5d8038c6dcfbf05ca4f5170656faf84f4510da8643bf6a8a","src/customize/rustproto_proto.rs":"3f8108bc8ed01a903ccb67ba28fee70b7dbbaab42ada0a058ffd9a3cf3ef9c85","src/gen/all.rs":"fe7c7c6010765fffc9e81435391f933bcead64ed16f737ba168a8c52829e23be","src/gen/code_writer.rs":"84a76d602cfe0269d8dd23d2bfde524c546570f8468fb22ecdd0a86682144181","src/gen/descriptor.rs":"845f017d7f66b01a179b8f92e64cb739a58424e87b59a2683b22ac72140396de","src/gen/enums.rs":"91327ab53dda33fe11c15191e10eb9ad703b4b0ced86508f4d8c9fccef15fc54","src/gen/extensions.rs":"7df4021f6e15fa8cb1b11982b714bc794b13c872ba56a4b397bfa1a7a6fe44ce","src/gen/field/accessor.rs":"d50b42b8b8aab638a65a702e56f9d2ed412cf7199f41265735ab3e2355a5daef","src/gen/field/elem.rs":"aef55e3efb700ba50880ab4689b0bc2a36e92165fd60d29b153d20147aa3cb71","src/gen/field/mod.rs":"05a63cd0007836cf4e0de78413a8fd37e5b08fe4b6ccede846966ebbfc4c4430","src/gen/field/option_kind.rs":"be9021c6d3b6ec1f3cef187c300dd9976a26b3996faf2d04ea660676ac7bc525","src/gen/field/repeated.rs":"bc8fb36e5aed38d8bb27a2348c448145c441db67fff5385bbb645fcad830096d","src/gen/field/singular.rs":"aaa79e6ef50e2a3086777b996c4433087d64913eb1e64fea1948d92b5953e3b1","src/gen/field/tag.rs":"4e8b6633ab8f4d7824773154a1e8093a0bb8565279d596e4cffd7228eff61e23","src/gen/field/type_ext.rs":"d0cf98c155dd7bc54fd3382eb14d9eca13f3ef47038341a0e2bdbe4c68a2ba16","src/gen/file.rs":"c6b5507445f22e0005d38b0e61f5e70147f42dc7080b87b25326bb0e99864ecd","src/gen/file_and_mod.rs":"f4c715e868ec185c4d78b4902599e28a4f50edb28a42871696e2455e8e858c47","src/gen/file_descriptor.rs":"64699dc7e30d3416d450bb97e669db074f48b77187a8c0b621b7c4b517146340","src/gen/inside.rs":"766d68ae4ef1be207adc1f93d00692f2bd3a344204cae659671989f11d39056a","src/gen/map.rs":"889db9fbeeb160ef68dba567e9d930ed7b926d8735021e6d0ac0bd885d590f6b","src/gen/message.rs":"5827ef9a2452d051a7015722eedcb7058696307538566003a83ede40089a9783","src/gen/mod.rs":"ad365cb5ca4e83e108c32df47dcc8afad999c9e4048d31b9c872533983332ad5","src/gen/mod_rs.rs":"3926a6a3fb704c8d659c19358fced286456f10f9b7c09aef4b9d60a7ea5823f5","src/gen/oneof.rs":"c287dc63e1f214456a3722965c80522d2d30b1309efe1e6c9d3b8f77bdc68901","src/gen/paths.rs":"ea7cac2b6cac555a768ff44a35a3eb3cb4227124b2f84db17e0bd6cae98e322d","src/gen/protoc_insertion_point.rs":"eada56479e964dd48a33f2aec21450ab9f9e78ac35930d7fcc3526ba300ce1ed","src/gen/rust/component.rs":"1e4253378cd9819733df85b6e57fd55c8939fff4bd806af9060f688aa4fc39b3","src/gen/rust/ident.rs":"4b5eafd4428e119932968c620e2d1a18a868b640ca533418f1c0125be0162510","src/gen/rust/ident_with_path.rs":"0cb4eec8bd49a1d74e494cf51f4ff1fbe9ee58af844d83e825d05bf82e2d1c57","src/gen/rust/keywords.rs":"c71c1aed8852a35cd5ace27c65111f29761fe82d36b0d146cf9647c223c948c4","src/gen/rust/mod.rs":"6318f990fccf79ddfe03ad0c1268c98271ca90afaf4290a89a304e029e82135e","src/gen/rust/path.rs":"f479d5d11a6cee9a23a3cd74878112c16e8a3e999430f372e6f26ecd080f987a","src/gen/rust/quote.rs":"31ff75975e59c372cc389b0c6bea4b442dac09626ae9127b7e1953607d344b38","src/gen/rust/rel_path.rs":"ec91f1419eb011320275879efe1d8741f34eb9d4f8192cfd04f3f2a2dc30572d","src/gen/rust/snippets.rs":"7c71ce35ed5ac589af52f76297b481319f1426ab111336923bb2a031b0f53df6","src/gen/rust_types_values.rs":"22d723b45fc4ff550079c748c3f551c5677f59d41cb5ed4dfb40d6f10616ad93","src/gen/scope.rs":"66d7cf720bd7f47f857d926fcf2e17f3db684e2d5d078735ae5b960d1ab074a2","src/gen/strx.rs":"2ce719299d4f18f85603896f4978be054b7da3c2806771821caa19068b89c64b","src/gen/well_known_types.rs":"bbc30c2bf6eb67cc3917642dfcd71c53ba3ad46e84f6d03ba2de56ac60bdab97","src/gen_and_write.rs":"3860228dfc2150c0c2c84254af6ce0d866215576f8e503f32f320884cea4fdb7","src/lib.rs":"48fa5c44c277a2b4a06aa262d8a35dccf7ceb0fe42aa25b826596f7e14319b76","src/protoc_gen_rust.rs":"53ab8f0717582832900e60151c1c6a04efb481870de751af285062c7d0478b17"}}
\ No newline at end of file
diff --git a/crates/protobuf-codegen/cargo_embargo.json b/crates/protobuf-codegen/cargo_embargo.json
index 545a831..6c2511a 100644
--- a/crates/protobuf-codegen/cargo_embargo.json
+++ b/crates/protobuf-codegen/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/protobuf-json-mapping/.android-checksum.json b/crates/protobuf-json-mapping/.android-checksum.json
index e3f0af4..8220580 100644
--- a/crates/protobuf-json-mapping/.android-checksum.json
+++ b/crates/protobuf-json-mapping/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d07fccb53642a08580146a7c3aa282f3bc017f860c45bb49a5fcdd0682f8cc0c","Android.bp":"5dc7ad3e980b2a83727e1ebac838c8dc3fd4158fa4eb3dd58e203dfeb49258e6","Cargo.toml":"0cb97bd5b4ad2269290858fabebe414c3e8a0a3a7013b00c54ff5e65fac53988","LICENSE":"ffd246228013521de4c9690c3e058a1b15daa1af86e513d3dd19b1876ba0028d","METADATA":"330fd694f7a158d02ff549976a586f27058028d39a974a54f3c8e4eeb7029aa7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1040df2a43d76231eedaa676bbf6dd37ca7ff86d56c0a81b7f7e9c642e6bc07c","TEST_MAPPING":"04d69d44372c72379ce79ad15435055848458f00ff40eafeef3ed2a8ee0c0aa8","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","patches/LICENSE.patch":"73959528802409d85dd39b096608e89ff1a7a1f5ea31df15083c40429bae3253","src/base64.rs":"94dc10cfaa100e81d29f05713e229bfd1f954e2198c62d058e72a84088804e87","src/float.rs":"e9397be54243a5490e26c895f58dc19059d17e4394858e2473475d5839f4cd8e","src/lib.rs":"c7f2f2b7b92c810cbd6659434532f558fc481c9913a71f49ac85497891821324","src/parse.rs":"9bbea7c02421b071feb1c9151b245b986b454627294198b10e62f5c78341fdd2","src/print.rs":"cd23bbc5f91e6eced735638efcd76323564e9ed0addf37034e0b813d37b64922","src/rfc_3339.rs":"a504cc8a15ea7f569f7cf2eef1749a2be2226d5707bf5a7e4579682961238da9","src/well_known_wrapper.rs":"68e2aeecd0f526782239828d2664fa8b28e70a82d6c2c9771dc234346f561c97"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d07fccb53642a08580146a7c3aa282f3bc017f860c45bb49a5fcdd0682f8cc0c","Android.bp":"1f530eee460ced2737093eb94bec39011d7c3d740d24d229a1401ab9db0da38e","Cargo.toml":"0cb97bd5b4ad2269290858fabebe414c3e8a0a3a7013b00c54ff5e65fac53988","LICENSE":"ffd246228013521de4c9690c3e058a1b15daa1af86e513d3dd19b1876ba0028d","METADATA":"330fd694f7a158d02ff549976a586f27058028d39a974a54f3c8e4eeb7029aa7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1040df2a43d76231eedaa676bbf6dd37ca7ff86d56c0a81b7f7e9c642e6bc07c","TEST_MAPPING":"04d69d44372c72379ce79ad15435055848458f00ff40eafeef3ed2a8ee0c0aa8","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","patches/LICENSE.patch":"73959528802409d85dd39b096608e89ff1a7a1f5ea31df15083c40429bae3253","src/base64.rs":"94dc10cfaa100e81d29f05713e229bfd1f954e2198c62d058e72a84088804e87","src/float.rs":"e9397be54243a5490e26c895f58dc19059d17e4394858e2473475d5839f4cd8e","src/lib.rs":"c7f2f2b7b92c810cbd6659434532f558fc481c9913a71f49ac85497891821324","src/parse.rs":"9bbea7c02421b071feb1c9151b245b986b454627294198b10e62f5c78341fdd2","src/print.rs":"cd23bbc5f91e6eced735638efcd76323564e9ed0addf37034e0b813d37b64922","src/rfc_3339.rs":"a504cc8a15ea7f569f7cf2eef1749a2be2226d5707bf5a7e4579682961238da9","src/well_known_wrapper.rs":"68e2aeecd0f526782239828d2664fa8b28e70a82d6c2c9771dc234346f561c97"}}
\ No newline at end of file
diff --git a/crates/protobuf-json-mapping/Android.bp b/crates/protobuf-json-mapping/Android.bp
index 0cf6580..134380b 100644
--- a/crates/protobuf-json-mapping/Android.bp
+++ b/crates/protobuf-json-mapping/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/protobuf-json-mapping/cargo_embargo.json b/crates/protobuf-json-mapping/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/protobuf-json-mapping/cargo_embargo.json
+++ b/crates/protobuf-json-mapping/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/protobuf-parse/.android-checksum.json b/crates/protobuf-parse/.android-checksum.json
index 85a464e..dc57efc 100644
--- a/crates/protobuf-parse/.android-checksum.json
+++ b/crates/protobuf-parse/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"623591601abd161941ab24619400d26e771db7df52222b8c0407e95e1f69b3e0","Android.bp":"6962e21ba0dd38100d9f2110dfd214f77f82e474ff2bed462dc360b795e35080","Cargo.lock":"ce10c0b2dba0c8429b8ef6e56f574b8e75bdfc47735720442b598f728cb24f57","Cargo.toml":"704f2d4f778998d9568dfd94b7b91b9f1151203eb0aa8ff71d2b7ac8bb0db126","LICENSE":"1ccf5981abcb78af8a20b70ca047431f1615dc051ecbb1965adb75a6ec96e36c","LICENSE.txt":"1ccf5981abcb78af8a20b70ca047431f1615dc051ecbb1965adb75a6ec96e36c","METADATA":"4f9eb27e80e1f79f75963d8363092703f61dd3a3ac9c89753c06135e77b19eef","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fb0ecf0688b311c603bbe8579a1e53c2555091242f1f7508e15ae2d6153fac65","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/file-descriptor-out-compare.rs":"fb2f767c7d6e319467adf7e2c07718acd9936c886799404f1943f876cddbcd88","patches/LICENSE.patch":"8505f14d8d94085274bf65f720bf36f5588e0697354b55dbb0941ed0010ded13","src/bin/parse-and-typecheck.rs":"f4d4d339800e2da7dc21ba87135a9f342b28c46b41db7804f2339f895d28667e","src/case_convert.rs":"a866ed8534f4c88f9b397adb0be5c44903550914255a7032cb210cb94a98819e","src/lib.rs":"e2e59705e001f50909b87766716d491c19df205dcb8f8df8d89ec7458db71a6d","src/parse_and_typecheck.rs":"af2a4178a6f12d0a915e5b38b1d62dd26e05588d9950c9326bedc50b18a8ed82","src/parser.rs":"5dc1ec51d10e6d2d918238f80b8120a8b9cd90933ec176659668b06625f8de4f","src/path.rs":"2d9bff22528a6a65e8e4cc2eae5bef8a2a32a6553828e09a7813cf996a557a67","src/proto/google/protobuf/any.proto":"03333cbc4cc1f78362d544e454405488a68ac024803cad3b79ad3804ae57fa52","src/proto/google/protobuf/api.proto":"83649536b44704b21aba7b3e9827274a102e81a6ca25e87c64cb988ec0249ab8","src/proto/google/protobuf/compiler/plugin.proto":"e357bfe09f1202ebd4d8ccf9ab2812d92c0eaae4beeb6c6544af9fccc814ba5a","src/proto/google/protobuf/descriptor.proto":"f80b2c3161705f7a4fe57b74e38f4dbb6715d4ec8bc3f75631aa9491edb20283","src/proto/google/protobuf/duration.proto":"0e4f8b23547f27e37e09939b0bcf83857adfcac14c0a411c60d66a94f7bf2d0a","src/proto/google/protobuf/empty.proto":"fd90a8e30371d6d1ffa64764131b4040089f423e31c88ff6587489aaf817c590","src/proto/google/protobuf/field_mask.proto":"b02640cebb1c13bb0d27add449a7c98572c506ab0a38f4b7f7d699abfbaa6560","src/proto/google/protobuf/source_context.proto":"5ae86c02ffd40a077733098513a0133023f88ac80b0e5f4c41ec4b9d30814b96","src/proto/google/protobuf/struct.proto":"1dc4337c810fcdfd02447eefeb00ccd76da169cbbbeb3f3657d4c753a993cdad","src/proto/google/protobuf/timestamp.proto":"08b99a2e5cec518d1c83671bf3e515dc6f88b238becc3a660fa0f4931957cf41","src/proto/google/protobuf/type.proto":"bc3973545b55fb997bf846905761f1fd0a802765c05e102f46acfb9a0c90b399","src/proto/google/protobuf/wrappers.proto":"89352d7dfccb0fb9ef904da8dfce20a7df2cbd171fa6624300cccf515c67bfb9","src/proto/mod.rs":"2022da4bdfcf9e22a77e5a38c6c92f1c25bdc0456f157b82d14f785f487a69a5","src/proto/rustproto.proto":"bb6394e6a451613e9a5b622cc5a52e37c8a3a3e879c848893f3b22c9e9c63e85","src/proto_path.rs":"747669042dd50e060f627fcd7863602cd17d0987c752cd354be96c1d8dbe1d59","src/protobuf_abs_path.rs":"0a3ecbcc968d96cf0c1c2d386e863f4c548978fa4aee8b7f6a94db99b3652aa1","src/protobuf_ident.rs":"3cf66e6c61c670cda1dbd820d256816387bedbb6e3c9c553f674840840c9a528","src/protobuf_path.rs":"2f8aabd37afda6eee7c74cdc0b3328cc4f71963b8ff82b33e7dde733bd4f74b0","src/protobuf_rel_path.rs":"8e466832714dac82f03847b251de72f2949910398a6bc12872c23d51e30c9636","src/protoc/command.rs":"92e395b643b20c2424e2f195900cb3b46229c8e8dad673d34b2ac9ddce4289eb","src/protoc/mod.rs":"ae9f1f0c9cc65b54cf5026fb049cd49d4aaec3b99265450912a544e2f1ccb5b8","src/protoc/parse_and_typecheck.rs":"e8b7bb27527d81e9b7a935c43fdfe2b0846555d3c8cb172e39aee059ebc898c7","src/pure/convert/mod.rs":"f71b9539d242c3f3472f0d25905e1d5f08efa8f4a74d25f22d276b437b3ef52e","src/pure/convert/option_resolver.rs":"ba76413757e6558e1398435350b4026b1eb72bbeb6d8d3133e43e18d7e6d85c7","src/pure/convert/type_resolver.rs":"7612f139f77777a44264ac59f638b004f74486641f7790ba1de4e44ea2c200da","src/pure/mod.rs":"0bccc40a3a741e1823a51e09a8efe3b4380e6567b595c67249e0572a856550ab","src/pure/model.rs":"6e744c11381a5849d2c851cbe24968aa57c1ff3db4c2e1ebddc91e749652cab1","src/pure/parse_and_typecheck.rs":"89e53d409c3211502f083ddad86fd55cd9c3f1ba322eb337184f2660b1081133","src/pure/parse_dependencies.rs":"e300124e3765574cf998d4c8cf3b80c47edfb4bcbb8240a2c300b997ac7e80d6","src/pure/parser.rs":"0df029fc10917dfbaa873a33e9468d18c81e9f408929e5ec585e2413054d97bf","src/rel_path.rs":"96ea0ec01f21357b42f75791fb0d7dfbed072009beb1b9d8e02de76411956d6a","src/test_against_protobuf_protos.rs":"cf8e5a2379dbef297846e9c83032bc990a64abdbf1829f5d764679fc9ab7ece1","src/which_parser.rs":"00b5bf0806546c3b04b323d02eb62d9b4fba9aba55a176601105e9702d515034","tests/bundled_proto_consistent.rs":"7f167aea148b05c2a282b4fa6a1dbf2ac5c043b067ac227c1d7ca0e41defda8c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"623591601abd161941ab24619400d26e771db7df52222b8c0407e95e1f69b3e0","Android.bp":"f7ac56edc6a2acbefa20dfe1cc5de0c2ad9166ff06ca5ee5e6ae8c6f0230881c","Cargo.lock":"ce10c0b2dba0c8429b8ef6e56f574b8e75bdfc47735720442b598f728cb24f57","Cargo.toml":"704f2d4f778998d9568dfd94b7b91b9f1151203eb0aa8ff71d2b7ac8bb0db126","LICENSE":"1ccf5981abcb78af8a20b70ca047431f1615dc051ecbb1965adb75a6ec96e36c","LICENSE.txt":"1ccf5981abcb78af8a20b70ca047431f1615dc051ecbb1965adb75a6ec96e36c","METADATA":"4f9eb27e80e1f79f75963d8363092703f61dd3a3ac9c89753c06135e77b19eef","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fb0ecf0688b311c603bbe8579a1e53c2555091242f1f7508e15ae2d6153fac65","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/file-descriptor-out-compare.rs":"fb2f767c7d6e319467adf7e2c07718acd9936c886799404f1943f876cddbcd88","patches/LICENSE.patch":"8505f14d8d94085274bf65f720bf36f5588e0697354b55dbb0941ed0010ded13","src/bin/parse-and-typecheck.rs":"f4d4d339800e2da7dc21ba87135a9f342b28c46b41db7804f2339f895d28667e","src/case_convert.rs":"a866ed8534f4c88f9b397adb0be5c44903550914255a7032cb210cb94a98819e","src/lib.rs":"e2e59705e001f50909b87766716d491c19df205dcb8f8df8d89ec7458db71a6d","src/parse_and_typecheck.rs":"af2a4178a6f12d0a915e5b38b1d62dd26e05588d9950c9326bedc50b18a8ed82","src/parser.rs":"5dc1ec51d10e6d2d918238f80b8120a8b9cd90933ec176659668b06625f8de4f","src/path.rs":"2d9bff22528a6a65e8e4cc2eae5bef8a2a32a6553828e09a7813cf996a557a67","src/proto/google/protobuf/any.proto":"03333cbc4cc1f78362d544e454405488a68ac024803cad3b79ad3804ae57fa52","src/proto/google/protobuf/api.proto":"83649536b44704b21aba7b3e9827274a102e81a6ca25e87c64cb988ec0249ab8","src/proto/google/protobuf/compiler/plugin.proto":"e357bfe09f1202ebd4d8ccf9ab2812d92c0eaae4beeb6c6544af9fccc814ba5a","src/proto/google/protobuf/descriptor.proto":"f80b2c3161705f7a4fe57b74e38f4dbb6715d4ec8bc3f75631aa9491edb20283","src/proto/google/protobuf/duration.proto":"0e4f8b23547f27e37e09939b0bcf83857adfcac14c0a411c60d66a94f7bf2d0a","src/proto/google/protobuf/empty.proto":"fd90a8e30371d6d1ffa64764131b4040089f423e31c88ff6587489aaf817c590","src/proto/google/protobuf/field_mask.proto":"b02640cebb1c13bb0d27add449a7c98572c506ab0a38f4b7f7d699abfbaa6560","src/proto/google/protobuf/source_context.proto":"5ae86c02ffd40a077733098513a0133023f88ac80b0e5f4c41ec4b9d30814b96","src/proto/google/protobuf/struct.proto":"1dc4337c810fcdfd02447eefeb00ccd76da169cbbbeb3f3657d4c753a993cdad","src/proto/google/protobuf/timestamp.proto":"08b99a2e5cec518d1c83671bf3e515dc6f88b238becc3a660fa0f4931957cf41","src/proto/google/protobuf/type.proto":"bc3973545b55fb997bf846905761f1fd0a802765c05e102f46acfb9a0c90b399","src/proto/google/protobuf/wrappers.proto":"89352d7dfccb0fb9ef904da8dfce20a7df2cbd171fa6624300cccf515c67bfb9","src/proto/mod.rs":"2022da4bdfcf9e22a77e5a38c6c92f1c25bdc0456f157b82d14f785f487a69a5","src/proto/rustproto.proto":"bb6394e6a451613e9a5b622cc5a52e37c8a3a3e879c848893f3b22c9e9c63e85","src/proto_path.rs":"747669042dd50e060f627fcd7863602cd17d0987c752cd354be96c1d8dbe1d59","src/protobuf_abs_path.rs":"0a3ecbcc968d96cf0c1c2d386e863f4c548978fa4aee8b7f6a94db99b3652aa1","src/protobuf_ident.rs":"3cf66e6c61c670cda1dbd820d256816387bedbb6e3c9c553f674840840c9a528","src/protobuf_path.rs":"2f8aabd37afda6eee7c74cdc0b3328cc4f71963b8ff82b33e7dde733bd4f74b0","src/protobuf_rel_path.rs":"8e466832714dac82f03847b251de72f2949910398a6bc12872c23d51e30c9636","src/protoc/command.rs":"92e395b643b20c2424e2f195900cb3b46229c8e8dad673d34b2ac9ddce4289eb","src/protoc/mod.rs":"ae9f1f0c9cc65b54cf5026fb049cd49d4aaec3b99265450912a544e2f1ccb5b8","src/protoc/parse_and_typecheck.rs":"e8b7bb27527d81e9b7a935c43fdfe2b0846555d3c8cb172e39aee059ebc898c7","src/pure/convert/mod.rs":"f71b9539d242c3f3472f0d25905e1d5f08efa8f4a74d25f22d276b437b3ef52e","src/pure/convert/option_resolver.rs":"ba76413757e6558e1398435350b4026b1eb72bbeb6d8d3133e43e18d7e6d85c7","src/pure/convert/type_resolver.rs":"7612f139f77777a44264ac59f638b004f74486641f7790ba1de4e44ea2c200da","src/pure/mod.rs":"0bccc40a3a741e1823a51e09a8efe3b4380e6567b595c67249e0572a856550ab","src/pure/model.rs":"6e744c11381a5849d2c851cbe24968aa57c1ff3db4c2e1ebddc91e749652cab1","src/pure/parse_and_typecheck.rs":"89e53d409c3211502f083ddad86fd55cd9c3f1ba322eb337184f2660b1081133","src/pure/parse_dependencies.rs":"e300124e3765574cf998d4c8cf3b80c47edfb4bcbb8240a2c300b997ac7e80d6","src/pure/parser.rs":"0df029fc10917dfbaa873a33e9468d18c81e9f408929e5ec585e2413054d97bf","src/rel_path.rs":"96ea0ec01f21357b42f75791fb0d7dfbed072009beb1b9d8e02de76411956d6a","src/test_against_protobuf_protos.rs":"cf8e5a2379dbef297846e9c83032bc990a64abdbf1829f5d764679fc9ab7ece1","src/which_parser.rs":"00b5bf0806546c3b04b323d02eb62d9b4fba9aba55a176601105e9702d515034","tests/bundled_proto_consistent.rs":"7f167aea148b05c2a282b4fa6a1dbf2ac5c043b067ac227c1d7ca0e41defda8c"}}
\ No newline at end of file
diff --git a/crates/protobuf-parse/Android.bp b/crates/protobuf-parse/Android.bp
index c0542c8..4a43973 100644
--- a/crates/protobuf-parse/Android.bp
+++ b/crates/protobuf-parse/Android.bp
@@ -37,6 +37,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_binary {
@@ -64,4 +65,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/protobuf-parse/cargo_embargo.json b/crates/protobuf-parse/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/protobuf-parse/cargo_embargo.json
+++ b/crates/protobuf-parse/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ptr_meta/.android-checksum.json b/crates/ptr_meta/.android-checksum.json
index 032c3dc..a2e7b95 100644
--- a/crates/ptr_meta/.android-checksum.json
+++ b/crates/ptr_meta/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d527cc35a5499541bebb85377664f0dc4c02debc2ad9302444978e4977fe7f8b","Android.bp":"87d9df8a67160075db1c2de8bdaec7d0df557d4a650822a9237ed792188e30f9","Cargo.toml":"6c80b07a975f556f77e9a13daf1748fb88735529c134863b1fc1ac210805c956","LICENSE":"749c798476a2a1d8bb6c3db4cecc5b4f1e121f6fb0111df814746fa52ecd1e3f","METADATA":"43ad0decbb89f6b53a5b7a3c636419f0541f0e19b0453efe7730b4d2e01d22b0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"983cdba4e682f44f3801697c35b182d715132dfe6698288f06d7a86b6cda5265","android_config.toml":"594dc8b8d191045b99952e3ddaf55bf383ae469854aa30bf5e70175e55d3e624","cargo_embargo.json":"1f96c65a6777a9cacf6c59db7e27fba3d511a4493925ad53ed121a10e6875a12","crates-io.md":"1faa156e00ba65f88753c9c1f23e2ced2c1bcf13de5bc7c4d2b84cb774a894b4","src/impls.rs":"cb6e3dbffa5a378cb8822a5500c4181e4b1f411a63ad645bd57d428ba089ff7c","src/lib.rs":"0c9cac2669ef9613dd003a3957813a4dd3e0040dd672e3d371fb7cfc5a77b8fa"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d527cc35a5499541bebb85377664f0dc4c02debc2ad9302444978e4977fe7f8b","Android.bp":"11df7095085f0815327114191f152161b3b75e20324fb7f1857014889436147a","Cargo.toml":"6c80b07a975f556f77e9a13daf1748fb88735529c134863b1fc1ac210805c956","LICENSE":"749c798476a2a1d8bb6c3db4cecc5b4f1e121f6fb0111df814746fa52ecd1e3f","METADATA":"43ad0decbb89f6b53a5b7a3c636419f0541f0e19b0453efe7730b4d2e01d22b0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"983cdba4e682f44f3801697c35b182d715132dfe6698288f06d7a86b6cda5265","android_config.toml":"594dc8b8d191045b99952e3ddaf55bf383ae469854aa30bf5e70175e55d3e624","cargo_embargo.json":"39a92f5f041a33465a527bedbd6e0f7cb84667bb204558490993bf4fa2a4b503","crates-io.md":"1faa156e00ba65f88753c9c1f23e2ced2c1bcf13de5bc7c4d2b84cb774a894b4","src/impls.rs":"cb6e3dbffa5a378cb8822a5500c4181e4b1f411a63ad645bd57d428ba089ff7c","src/lib.rs":"0c9cac2669ef9613dd003a3957813a4dd3e0040dd672e3d371fb7cfc5a77b8fa"}}
\ No newline at end of file
diff --git a/crates/ptr_meta/Android.bp b/crates/ptr_meta/Android.bp
index 054cebc..13cc745 100644
--- a/crates/ptr_meta/Android.bp
+++ b/crates/ptr_meta/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ptr_meta/cargo_embargo.json b/crates/ptr_meta/cargo_embargo.json
index bc00c72..d48e95f 100644
--- a/crates/ptr_meta/cargo_embargo.json
+++ b/crates/ptr_meta/cargo_embargo.json
@@ -10,5 +10,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ptr_meta_derive/.android-checksum.json b/crates/ptr_meta_derive/.android-checksum.json
index dedc395..7515bb8 100644
--- a/crates/ptr_meta_derive/.android-checksum.json
+++ b/crates/ptr_meta_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f041b5a6c17fbabd65e9e85f79ce836c149513eb9cd8c1171ce995f36cb3a58a","Android.bp":"d6ffb356aae6ad46962f47353d57fd8d0cd7e8025886f4f0ab099f14b5a33a09","Cargo.toml":"f87f3311cc25a0bc0d0baa2b9a23f8ed5fc0d4154a49610fe550a74290734191","LICENSE":"749c798476a2a1d8bb6c3db4cecc5b4f1e121f6fb0111df814746fa52ecd1e3f","METADATA":"b915704ecfbb33d3cd4da5e5cbe65117cefdd369863ad7ddc104767e5cd8b4b2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"9a379056daebc85f5cbced0e3290b9b0c41dc528af4db68ed7c822891056e167"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f041b5a6c17fbabd65e9e85f79ce836c149513eb9cd8c1171ce995f36cb3a58a","Android.bp":"06758bc49a3a9843bdd30486babd5da624643ee0677bb2ce7b436bd2ea3c918b","Cargo.toml":"f87f3311cc25a0bc0d0baa2b9a23f8ed5fc0d4154a49610fe550a74290734191","LICENSE":"749c798476a2a1d8bb6c3db4cecc5b4f1e121f6fb0111df814746fa52ecd1e3f","METADATA":"b915704ecfbb33d3cd4da5e5cbe65117cefdd369863ad7ddc104767e5cd8b4b2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"9a379056daebc85f5cbced0e3290b9b0c41dc528af4db68ed7c822891056e167"}}
\ No newline at end of file
diff --git a/crates/ptr_meta_derive/Android.bp b/crates/ptr_meta_derive/Android.bp
index e1b61b3..ae4e5ed 100644
--- a/crates/ptr_meta_derive/Android.bp
+++ b/crates/ptr_meta_derive/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ptr_meta_derive/cargo_embargo.json b/crates/ptr_meta_derive/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/ptr_meta_derive/cargo_embargo.json
+++ b/crates/ptr_meta_derive/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/quickcheck/.android-checksum.json b/crates/quickcheck/.android-checksum.json
index edfb9a7..456da1c 100644
--- a/crates/quickcheck/.android-checksum.json
+++ b/crates/quickcheck/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3d583c03ff6cd30ca91db700b633d57fe7b99f0207ac046def0077f9f13b23f1","Android.bp":"d62d970ef411fa8b44ee46ffbc7b51c9863a20a82627e286fe1237e23d0056e9","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.lock":"bf8400ac7775577f21a6cc5cf27ffdc6ea7893bdea85fcd4556b09b0a982725e","Cargo.toml":"22e0f2db08521b94e487c8c131e9d905c1ab5fe04dada752917cb3dc8c653a19","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"bce80c37cdb0f7e0c0bb11c35baaa439b6a7c63a9e258eace0ab95a5250047d5","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f8eddf45e0f21ee725e0b7a64b85fb31ec4fe19761cbe11fd957b75e945ef846","TEST_MAPPING":"bb7198453299daf5d7ce2c32d238cf7aaab034ece1e490e64ef842f0e1e141b3","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","examples/btree_set_range.rs":"a2f47c5a3ca1e135b934b0e000e582a93b41f9814b099adf905abe4cab937bcf","examples/out_of_bounds.rs":"0f14334a71f1b03a63fc5f4e5e2407022bb3f7296cd8dcd716336ad4965129d9","examples/reverse.rs":"5926f425b803f26700661cf0ec8abd215658f0459bd5dc00904bb24b2e29c489","examples/reverse_single.rs":"efd3e6dd6d9d1d2aecb8283b7578bec8ceee86398a268a09d9a25ca281acecbc","examples/sieve.rs":"5a33422abf27a836d490c02ca201297bbc99c6d44dfdcef5bd94d1c3f43f4a81","examples/sort.rs":"667b1a6ffd9728d1e9b5322e80245eac7f2dead5fe4b41d5325aa4f01ac3d8e5","patches/tests.rs.patch":"438429fbcb2a8538cba4e2ee6854e2e7c2e04e8abb4d5e90bcb8ccefd4c377cd","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/arbitrary.rs":"70ebffaf696d94f858d15e4014969a11cc6c2dd5d8cb7be729d86215c369f6e3","src/lib.rs":"0def3de0223e8c6ff3d021261d45042663ada001a9e6a5f16c92d2ce149dd555","src/tester.rs":"125f89fe2decadfb73c7cf9597e940621a8e52ed2c02d4ace7d673b97eda91b4","src/tests.rs":"6cff3908bacf62568c065b931689f28a350aba9101dbe5c1a571ff4a6802125f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3d583c03ff6cd30ca91db700b633d57fe7b99f0207ac046def0077f9f13b23f1","Android.bp":"2cd53ec8719dc76aae7613ab8914bb3a050c985202a334b2807838cf176a7a2a","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.lock":"bf8400ac7775577f21a6cc5cf27ffdc6ea7893bdea85fcd4556b09b0a982725e","Cargo.toml":"22e0f2db08521b94e487c8c131e9d905c1ab5fe04dada752917cb3dc8c653a19","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"bce80c37cdb0f7e0c0bb11c35baaa439b6a7c63a9e258eace0ab95a5250047d5","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f8eddf45e0f21ee725e0b7a64b85fb31ec4fe19761cbe11fd957b75e945ef846","TEST_MAPPING":"bb7198453299daf5d7ce2c32d238cf7aaab034ece1e490e64ef842f0e1e141b3","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","examples/btree_set_range.rs":"a2f47c5a3ca1e135b934b0e000e582a93b41f9814b099adf905abe4cab937bcf","examples/out_of_bounds.rs":"0f14334a71f1b03a63fc5f4e5e2407022bb3f7296cd8dcd716336ad4965129d9","examples/reverse.rs":"5926f425b803f26700661cf0ec8abd215658f0459bd5dc00904bb24b2e29c489","examples/reverse_single.rs":"efd3e6dd6d9d1d2aecb8283b7578bec8ceee86398a268a09d9a25ca281acecbc","examples/sieve.rs":"5a33422abf27a836d490c02ca201297bbc99c6d44dfdcef5bd94d1c3f43f4a81","examples/sort.rs":"667b1a6ffd9728d1e9b5322e80245eac7f2dead5fe4b41d5325aa4f01ac3d8e5","patches/tests.rs.patch":"438429fbcb2a8538cba4e2ee6854e2e7c2e04e8abb4d5e90bcb8ccefd4c377cd","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/arbitrary.rs":"70ebffaf696d94f858d15e4014969a11cc6c2dd5d8cb7be729d86215c369f6e3","src/lib.rs":"0def3de0223e8c6ff3d021261d45042663ada001a9e6a5f16c92d2ce149dd555","src/tester.rs":"125f89fe2decadfb73c7cf9597e940621a8e52ed2c02d4ace7d673b97eda91b4","src/tests.rs":"6cff3908bacf62568c065b931689f28a350aba9101dbe5c1a571ff4a6802125f"}}
\ No newline at end of file
diff --git a/crates/quickcheck/Android.bp b/crates/quickcheck/Android.bp
index 8aae173..453f944 100644
--- a/crates/quickcheck/Android.bp
+++ b/crates/quickcheck/Android.bp
@@ -39,6 +39,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/quickcheck/cargo_embargo.json b/crates/quickcheck/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/quickcheck/cargo_embargo.json
+++ b/crates/quickcheck/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/quote/.android-checksum.json b/crates/quote/.android-checksum.json
index 8d30828..b857227 100644
--- a/crates/quote/.android-checksum.json
+++ b/crates/quote/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2945d6070ea8afcdf093613b07b116aa38f79c39f2ee70f995036b976f0723d9","Android.bp":"2652266c5e1c6b2da69667c249d8b08d0af7c56d3ee261ecae1ac7dcb234f16e","Cargo.toml":"105efd841c4cadaf2847427a3e9d6cf236ba381fefbdfd104d033c9c9b9819eb","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"9be37cb13b28c5a7087890bb0e6216ef1fd56bac1b9b2d7dcf30fa60bcd3aaf0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5ff986ede58aabfde651aa79cadfc297e196abd8943d31995bb6d6368188e7d3","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","cargo_embargo.json":"dea7d02c15aae803360b3bff2deee1fd237cf43f5f629f9de158195911a987ed","rules.mk":"4f56f2a75f0e85cb8de7d0f49c31299847cf64233d07491f708271ce59430e31","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/ext.rs":"410fb182da6986263dc67a66d4dbfcdfb16f1aa1860b9a923a25175aaed3e0e3","src/format.rs":"a020470ba73288e7fafa3e19b6bb6013b188d447cc9a46ef0cca56dbe0367d57","src/ident_fragment.rs":"ff8998970f3abc995236430e70a705bc98df23b7419db5a33e7047c9b54ab108","src/lib.rs":"5e5b186096abb1c1169988cf6220a9a794fcdd5b49dcbd281989b4d8f73d6545","src/runtime.rs":"e47a7327d2fdee4bccfcf535569a598d2901ceb18d5e86f23c47efec33be79d4","src/spanned.rs":"e388beba004e9665554258fc95ec1a220faf2f8392cb95f832fd5414bf8f2eb8","src/to_tokens.rs":"7119022181c012d1e0e4b680f1c61e0b1f6403dc973631b5901ccc32b26d4d2a","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/test.rs":"46e3b6c45dd93489fd9b5e1d4ecd42fffc31cf5d7cbce91f141c576ce4cd8674","tests/ui/does-not-have-iter-interpolated-dup.rs":"e8ee281d8d8683f05506088bf7e8c68ef582439fac9f4b94fcfc0be183578054","tests/ui/does-not-have-iter-interpolated-dup.stderr":"5d61aecbe912cf51275317b734e86b820c0d3b0944eb04e25ebc9fe2ad2bc06d","tests/ui/does-not-have-iter-interpolated.rs":"fe2b050d50a8cf760eb56d348fbe7423a7d5623514db0ab233848e06a1564f53","tests/ui/does-not-have-iter-interpolated.stderr":"abe85e65786af039458d3546c65568904bd941cbb9dd892cd9ad896dae3d6a0f","tests/ui/does-not-have-iter-separated.rs":"74e86fecaf6ef0969872a275dde4001dba277551f3463cdbaf92065a1299637e","tests/ui/does-not-have-iter-separated.stderr":"20d0332e694bb3926ce2d4a7693c5a7050b925db3a19e5004fe533a7efa890e1","tests/ui/does-not-have-iter.rs":"e058788fea91897953d8cb22b008fa83c3d4792390bcfa30add79499f2dc81b1","tests/ui/does-not-have-iter.stderr":"efcbf385a020bd8f527d08887544b2142b3530ef22106a0cb9d0401cbcedfc03","tests/ui/not-quotable.rs":"d5ce85fc5e6f1d83b2918e0c823e8b475cb7f79cd531d4bbb207e322fb9f90d3","tests/ui/not-quotable.stderr":"c776b72f40523d46ef106cbb5624d6eaeaa946b3becf9628bd22f25724589a42","tests/ui/not-repeatable.rs":"c26582dbf4c1015e7f383c96cd0b64c2ce4804989869cef9734931a8b66aa624","tests/ui/not-repeatable.stderr":"877bf65d2342ecde1e572230a093a3729a04612ee95b6aeb9a81b3bc4ed28e98","tests/ui/wrong-type-span.rs":"531a020f4272d7ec4dbae07c72885a76f9466fc5755562603f5cb965fb8f1475","tests/ui/wrong-type-span.stderr":"d6f5848676b3bbdd1e50de5cd745ce28354a3c9a618e5a942389e87f2797890d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2945d6070ea8afcdf093613b07b116aa38f79c39f2ee70f995036b976f0723d9","Android.bp":"2652266c5e1c6b2da69667c249d8b08d0af7c56d3ee261ecae1ac7dcb234f16e","Cargo.toml":"105efd841c4cadaf2847427a3e9d6cf236ba381fefbdfd104d033c9c9b9819eb","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"9be37cb13b28c5a7087890bb0e6216ef1fd56bac1b9b2d7dcf30fa60bcd3aaf0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5ff986ede58aabfde651aa79cadfc297e196abd8943d31995bb6d6368188e7d3","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","cargo_embargo.json":"dcdeb4e4fe1491e957e893b3e3cd2f81bb85a1b6cd2655b278781e59719d09bc","rules.mk":"4f56f2a75f0e85cb8de7d0f49c31299847cf64233d07491f708271ce59430e31","rust-toolchain.toml":"25bc44c2a4cb625e0f16003c73ac0db2fc79a3b79a5b0e6d4b6175c6dbe5af69","src/ext.rs":"410fb182da6986263dc67a66d4dbfcdfb16f1aa1860b9a923a25175aaed3e0e3","src/format.rs":"a020470ba73288e7fafa3e19b6bb6013b188d447cc9a46ef0cca56dbe0367d57","src/ident_fragment.rs":"ff8998970f3abc995236430e70a705bc98df23b7419db5a33e7047c9b54ab108","src/lib.rs":"5e5b186096abb1c1169988cf6220a9a794fcdd5b49dcbd281989b4d8f73d6545","src/runtime.rs":"e47a7327d2fdee4bccfcf535569a598d2901ceb18d5e86f23c47efec33be79d4","src/spanned.rs":"e388beba004e9665554258fc95ec1a220faf2f8392cb95f832fd5414bf8f2eb8","src/to_tokens.rs":"7119022181c012d1e0e4b680f1c61e0b1f6403dc973631b5901ccc32b26d4d2a","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/test.rs":"46e3b6c45dd93489fd9b5e1d4ecd42fffc31cf5d7cbce91f141c576ce4cd8674","tests/ui/does-not-have-iter-interpolated-dup.rs":"e8ee281d8d8683f05506088bf7e8c68ef582439fac9f4b94fcfc0be183578054","tests/ui/does-not-have-iter-interpolated-dup.stderr":"5d61aecbe912cf51275317b734e86b820c0d3b0944eb04e25ebc9fe2ad2bc06d","tests/ui/does-not-have-iter-interpolated.rs":"fe2b050d50a8cf760eb56d348fbe7423a7d5623514db0ab233848e06a1564f53","tests/ui/does-not-have-iter-interpolated.stderr":"abe85e65786af039458d3546c65568904bd941cbb9dd892cd9ad896dae3d6a0f","tests/ui/does-not-have-iter-separated.rs":"74e86fecaf6ef0969872a275dde4001dba277551f3463cdbaf92065a1299637e","tests/ui/does-not-have-iter-separated.stderr":"20d0332e694bb3926ce2d4a7693c5a7050b925db3a19e5004fe533a7efa890e1","tests/ui/does-not-have-iter.rs":"e058788fea91897953d8cb22b008fa83c3d4792390bcfa30add79499f2dc81b1","tests/ui/does-not-have-iter.stderr":"efcbf385a020bd8f527d08887544b2142b3530ef22106a0cb9d0401cbcedfc03","tests/ui/not-quotable.rs":"d5ce85fc5e6f1d83b2918e0c823e8b475cb7f79cd531d4bbb207e322fb9f90d3","tests/ui/not-quotable.stderr":"c776b72f40523d46ef106cbb5624d6eaeaa946b3becf9628bd22f25724589a42","tests/ui/not-repeatable.rs":"c26582dbf4c1015e7f383c96cd0b64c2ce4804989869cef9734931a8b66aa624","tests/ui/not-repeatable.stderr":"877bf65d2342ecde1e572230a093a3729a04612ee95b6aeb9a81b3bc4ed28e98","tests/ui/wrong-type-span.rs":"531a020f4272d7ec4dbae07c72885a76f9466fc5755562603f5cb965fb8f1475","tests/ui/wrong-type-span.stderr":"d6f5848676b3bbdd1e50de5cd745ce28354a3c9a618e5a942389e87f2797890d"}}
\ No newline at end of file
diff --git a/crates/quote/cargo_embargo.json b/crates/quote/cargo_embargo.json
index 5dabed0..aec4071 100644
--- a/crates/quote/cargo_embargo.json
+++ b/crates/quote/cargo_embargo.json
@@ -6,5 +6,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rand_xorshift/.android-checksum.json b/crates/rand_xorshift/.android-checksum.json
index 196a915..ca04344 100644
--- a/crates/rand_xorshift/.android-checksum.json
+++ b/crates/rand_xorshift/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b3026732269f7c956668f022201bfc7bbd79a9f324302e43fdbca550947e5952","Android.bp":"087c8a2e773ef3ac8b37d014bb225a4c4228854c7ef128226574a62cf87c8e86","CHANGELOG.md":"af854fcd0b4ca22581c0eb85b9903a86ecb7d3c3732313d5fc1ce4c69d42015f","COPYRIGHT":"6bac7020395c3cf27db6b560bf75d2e1dfe62dea11ee5a9ab94e4f11ae11ed70","Cargo.toml":"24b413aa62d9188ad5ba5c6e6ba1b3863cd9ffa774dfa5b72b380c3398106006","LICENSE":"03b15e95d152fa1cbd3018297314e1dddc2f42a60e0dac5f5911cee6ef32362c","LICENSE-APACHE":"03b15e95d152fa1cbd3018297314e1dddc2f42a60e0dac5f5911cee6ef32362c","METADATA":"62c2135a45355bdedae044b25906d26b646ba04a6f763ecc339962e4dfdefd8b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"940e36ca542040f16b254cadf89167ca3dae0d622e64bdae7d348c5dd3450f61","TEST_MAPPING":"79f0e970dbb5f58ae9fc6bd25a387bb5e12ce6f3439b657baca9f9bb09262af4","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","src/lib.rs":"f3fb5f5168a5b4a9bd694e6397b967e17da10942c7384541dfafbf2325ecab8a","tests/mod.rs":"b6cd6662a84a898362b4c3eba6f0a983f84c9045e972678d02735348e336ec1b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b3026732269f7c956668f022201bfc7bbd79a9f324302e43fdbca550947e5952","Android.bp":"d11b4c3e68c5928097071d06083652d5855144804deb0de0485bd901e65845f5","CHANGELOG.md":"af854fcd0b4ca22581c0eb85b9903a86ecb7d3c3732313d5fc1ce4c69d42015f","COPYRIGHT":"6bac7020395c3cf27db6b560bf75d2e1dfe62dea11ee5a9ab94e4f11ae11ed70","Cargo.toml":"24b413aa62d9188ad5ba5c6e6ba1b3863cd9ffa774dfa5b72b380c3398106006","LICENSE":"03b15e95d152fa1cbd3018297314e1dddc2f42a60e0dac5f5911cee6ef32362c","LICENSE-APACHE":"03b15e95d152fa1cbd3018297314e1dddc2f42a60e0dac5f5911cee6ef32362c","METADATA":"62c2135a45355bdedae044b25906d26b646ba04a6f763ecc339962e4dfdefd8b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"940e36ca542040f16b254cadf89167ca3dae0d622e64bdae7d348c5dd3450f61","TEST_MAPPING":"79f0e970dbb5f58ae9fc6bd25a387bb5e12ce6f3439b657baca9f9bb09262af4","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/lib.rs":"f3fb5f5168a5b4a9bd694e6397b967e17da10942c7384541dfafbf2325ecab8a","tests/mod.rs":"b6cd6662a84a898362b4c3eba6f0a983f84c9045e972678d02735348e336ec1b"}}
\ No newline at end of file
diff --git a/crates/rand_xorshift/Android.bp b/crates/rand_xorshift/Android.bp
index 9d99bb0..04b8b4b 100644
--- a/crates/rand_xorshift/Android.bp
+++ b/crates/rand_xorshift/Android.bp
@@ -28,6 +28,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/rand_xorshift/cargo_embargo.json b/crates/rand_xorshift/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/rand_xorshift/cargo_embargo.json
+++ b/crates/rand_xorshift/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rayon-core/.android-checksum.json b/crates/rayon-core/.android-checksum.json
index 8d37afa..f10df7f 100644
--- a/crates/rayon-core/.android-checksum.json
+++ b/crates/rayon-core/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8941d07ec763a80b0c228ae51a22439a88a74d1571c1e2c59c3e003b993d754c","Android.bp":"ad2f7c0b3d34a73ae41e07bc03e34e6624f7d3f3c36ad1946fb0afc7f5975614","Cargo.toml":"49fd911fb4c5ca58b032f699cf3324dd8bf41355f32aa16aa5525512fddb29b4","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"e055fab3d7993d65cbcdaa68acbbcb9d73f5f186e27e716d052f8883c9e6f49e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"df57d1a95978aabb6a55352560958f41043b15c7b8617870a1de7dbff859bd88","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","build.rs":"2ef522cb24f560c31c06eba5d5b1769729eea8f5166329e59f1955ae164e6c3b","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/broadcast/mod.rs":"94a517cf14ad94ea951981aa596cb6da59a69c9c9e30ea2429d0a815b0800b89","src/broadcast/test.rs":"ca9f8ef19da3f09a940acefccd629ae5ac1e524f3c061e729e38e3b481a0fffd","src/compile_fail/mod.rs":"d2e80425d6d538b0f9572a2a2dff5dd4e57f4c4b88b32cb67916e00f154e4a0a","src/compile_fail/quicksort_race1.rs":"0f53651724865ab8a9732b34ff63a96b39f3b1eadf680af06a2f88afa62ec9ce","src/compile_fail/quicksort_race2.rs":"edc24b40f27afddacaec6406fb60622a273aae26644e638183df2387cd63a186","src/compile_fail/quicksort_race3.rs":"8c1a4e44aed60aec32ef506f85d6074ff93cd4fd25bba07d67a79e93e67ab336","src/compile_fail/rc_return.rs":"3922453ea77be2858ea1b067087a343e6880e2683d23e9fe99bc54ba1437b9b4","src/compile_fail/rc_upvar.rs":"d144f8b26a513a88d1a7a586fd80dd287f9a2f2dc5fc9166955a0c8fc76b9be7","src/compile_fail/scope_join_bad.rs":"3264433f31b21e89cd7663deb8bb3bdd68b6779f6a632b8a1a7aa60e41e871d5","src/job.rs":"622930cdf94df62802d2d69f564af99cac28a2d44e8d4cae7bc49b2d20b88ec3","src/join/mod.rs":"4145417448616c3166755b4ad7ef26e56597500ec46ad837a04eb7257597d451","src/join/test.rs":"94d77ebc031a13ec97aeea0f1455e9aa39ea4af3d1ad74ca6e5e6fc9745e230b","src/latch.rs":"f621727516935a657d823ca1fe6312b158f9b5a3a880ebe0e2adfae63cf9825e","src/lib.rs":"d133562fa17d7e50b6abf5a4771c205970fb4319c2aac97c4d799b139ef9f96f","src/private.rs":"8e352a194a56c98b48121a7b41bff4318b94e546739ee5192c0494aef761bd5a","src/registry.rs":"a46b50248b910800deb3a1e58619e7143b900f5e356dac4460517c3dc46d40f5","src/scope/mod.rs":"eeebfc4e19b80bfc05ba0108c8203066b7f3dff99c14c603011249adca235bcd","src/scope/test.rs":"115a6e8f1eae9b55ceeece4722a45a995361c02d9ed8f07e7ea747d4531c4fbd","src/sleep/README.md":"b681cfb0607a0d1669cc77a3efd48e163f854b6fdc258d554bbc621a87d60af2","src/sleep/counters.rs":"136b00550defd7166bf4caaf308ab9402dbfd97c8d5216677b121ae3f33548ac","src/sleep/mod.rs":"e9b58d70cb9d1f90f4a8d97d9de8bf826fe9700b3bbae63c7cf1e4c297acf449","src/spawn/mod.rs":"58c4b8a977bd24c4084fbb900b6d410fc2e031ea7fd964cb3b95f66f80ea5743","src/spawn/test.rs":"90c76330808b12ac840b1421f586030fff657b073b110fabcf1eb48df8d28203","src/test.rs":"f613adc223461716dc6bae523cc089e59c3b3123f9018080df77a95842592f10","src/thread_pool/mod.rs":"321889f868ecd7297aeae53f452b116cc58d50b6d8ac4f82780723b3c1081cc4","src/thread_pool/test.rs":"a818373cbde6c2abc5b5434dde066fed5bd9a0db5e795657d8f021b9083a4ca5","src/unwind.rs":"00638b43716976efe6877dcd3fa141aa07e9a912145a23fc4f2d0551e1921210","tests/double_init_fail.rs":"c743bbf20be9387918e53f6310c274566127667d1fe50fa918a0846a46dd112d","tests/init_zero_threads.rs":"f4560dce505962d05201836f125d62f901b5b51fe18898ed9034c69bb02ca634","tests/scope_join.rs":"cd0fb49f449607adb7d849c6f5dc8f9ad4123bd65d43b4a0f14e0b453f2f7f28","tests/scoped_threadpool.rs":"3a3df33c97d2220220157b6d70791377462238e4d2763bd672a1987953b0204a","tests/simple_panic.rs":"3c527618dd7dab88679942b30de58b246a8e3bbdee41927fce81273deff4ddb9","tests/stack_overflow_crash.rs":"b411fd90ef17df89703a031cebcd7b52bd5cd6a38ad503fd141dafade5f20f96","tests/use_current_thread.rs":"0a7ab7b7099acd1c503d505fcdaa3764d34a329dfa01ba567943dc3c3e7c523d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8941d07ec763a80b0c228ae51a22439a88a74d1571c1e2c59c3e003b993d754c","Android.bp":"0e04caa936eb21290ff6977a28c8d844180ca81a3f8ee6c2bb9d322aa48670a7","Cargo.toml":"49fd911fb4c5ca58b032f699cf3324dd8bf41355f32aa16aa5525512fddb29b4","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"e055fab3d7993d65cbcdaa68acbbcb9d73f5f186e27e716d052f8883c9e6f49e","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"df57d1a95978aabb6a55352560958f41043b15c7b8617870a1de7dbff859bd88","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","build.rs":"2ef522cb24f560c31c06eba5d5b1769729eea8f5166329e59f1955ae164e6c3b","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/broadcast/mod.rs":"94a517cf14ad94ea951981aa596cb6da59a69c9c9e30ea2429d0a815b0800b89","src/broadcast/test.rs":"ca9f8ef19da3f09a940acefccd629ae5ac1e524f3c061e729e38e3b481a0fffd","src/compile_fail/mod.rs":"d2e80425d6d538b0f9572a2a2dff5dd4e57f4c4b88b32cb67916e00f154e4a0a","src/compile_fail/quicksort_race1.rs":"0f53651724865ab8a9732b34ff63a96b39f3b1eadf680af06a2f88afa62ec9ce","src/compile_fail/quicksort_race2.rs":"edc24b40f27afddacaec6406fb60622a273aae26644e638183df2387cd63a186","src/compile_fail/quicksort_race3.rs":"8c1a4e44aed60aec32ef506f85d6074ff93cd4fd25bba07d67a79e93e67ab336","src/compile_fail/rc_return.rs":"3922453ea77be2858ea1b067087a343e6880e2683d23e9fe99bc54ba1437b9b4","src/compile_fail/rc_upvar.rs":"d144f8b26a513a88d1a7a586fd80dd287f9a2f2dc5fc9166955a0c8fc76b9be7","src/compile_fail/scope_join_bad.rs":"3264433f31b21e89cd7663deb8bb3bdd68b6779f6a632b8a1a7aa60e41e871d5","src/job.rs":"622930cdf94df62802d2d69f564af99cac28a2d44e8d4cae7bc49b2d20b88ec3","src/join/mod.rs":"4145417448616c3166755b4ad7ef26e56597500ec46ad837a04eb7257597d451","src/join/test.rs":"94d77ebc031a13ec97aeea0f1455e9aa39ea4af3d1ad74ca6e5e6fc9745e230b","src/latch.rs":"f621727516935a657d823ca1fe6312b158f9b5a3a880ebe0e2adfae63cf9825e","src/lib.rs":"d133562fa17d7e50b6abf5a4771c205970fb4319c2aac97c4d799b139ef9f96f","src/private.rs":"8e352a194a56c98b48121a7b41bff4318b94e546739ee5192c0494aef761bd5a","src/registry.rs":"a46b50248b910800deb3a1e58619e7143b900f5e356dac4460517c3dc46d40f5","src/scope/mod.rs":"eeebfc4e19b80bfc05ba0108c8203066b7f3dff99c14c603011249adca235bcd","src/scope/test.rs":"115a6e8f1eae9b55ceeece4722a45a995361c02d9ed8f07e7ea747d4531c4fbd","src/sleep/README.md":"b681cfb0607a0d1669cc77a3efd48e163f854b6fdc258d554bbc621a87d60af2","src/sleep/counters.rs":"136b00550defd7166bf4caaf308ab9402dbfd97c8d5216677b121ae3f33548ac","src/sleep/mod.rs":"e9b58d70cb9d1f90f4a8d97d9de8bf826fe9700b3bbae63c7cf1e4c297acf449","src/spawn/mod.rs":"58c4b8a977bd24c4084fbb900b6d410fc2e031ea7fd964cb3b95f66f80ea5743","src/spawn/test.rs":"90c76330808b12ac840b1421f586030fff657b073b110fabcf1eb48df8d28203","src/test.rs":"f613adc223461716dc6bae523cc089e59c3b3123f9018080df77a95842592f10","src/thread_pool/mod.rs":"321889f868ecd7297aeae53f452b116cc58d50b6d8ac4f82780723b3c1081cc4","src/thread_pool/test.rs":"a818373cbde6c2abc5b5434dde066fed5bd9a0db5e795657d8f021b9083a4ca5","src/unwind.rs":"00638b43716976efe6877dcd3fa141aa07e9a912145a23fc4f2d0551e1921210","tests/double_init_fail.rs":"c743bbf20be9387918e53f6310c274566127667d1fe50fa918a0846a46dd112d","tests/init_zero_threads.rs":"f4560dce505962d05201836f125d62f901b5b51fe18898ed9034c69bb02ca634","tests/scope_join.rs":"cd0fb49f449607adb7d849c6f5dc8f9ad4123bd65d43b4a0f14e0b453f2f7f28","tests/scoped_threadpool.rs":"3a3df33c97d2220220157b6d70791377462238e4d2763bd672a1987953b0204a","tests/simple_panic.rs":"3c527618dd7dab88679942b30de58b246a8e3bbdee41927fce81273deff4ddb9","tests/stack_overflow_crash.rs":"b411fd90ef17df89703a031cebcd7b52bd5cd6a38ad503fd141dafade5f20f96","tests/use_current_thread.rs":"0a7ab7b7099acd1c503d505fcdaa3764d34a329dfa01ba567943dc3c3e7c523d"}}
\ No newline at end of file
diff --git a/crates/rayon-core/Android.bp b/crates/rayon-core/Android.bp
index 2652f01..5bdccca 100644
--- a/crates/rayon-core/Android.bp
+++ b/crates/rayon-core/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/rayon-core/cargo_embargo.json b/crates/rayon-core/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/rayon-core/cargo_embargo.json
+++ b/crates/rayon-core/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rayon/.android-checksum.json b/crates/rayon/.android-checksum.json
index 0fc7855..41dd2d8 100644
--- a/crates/rayon/.android-checksum.json
+++ b/crates/rayon/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6e03944a71d7773528386e32a2bcc1c3686a5481b31934ec0c45f9f77efd07cb","Android.bp":"5ed073dacdd6daf981fa42184b3560bf20dd73caa6ef9c8f02f0f222f1a72f6c","Cargo.toml":"083fb090d9f0df12b72ee35125bfd21d028a679d3449a98c598707e183776c99","FAQ.md":"30ba5774520b7f153c6175f364da94ec7923b224fd62c3da29a7555de2a4c0bc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"55f199cbad42bff7fc907ba1d6b83606b998ec8df845054186a2f0b801b30f04","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2491cf2a5de314fd7de283cc8e91857851ead49930af3af8320a9caa54325e28","RELEASES.md":"afea883b2bda400d07ca2f1125176aa8f81777420ac9d1e73caca691e1621f0e","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/array.rs":"ab25f505bc89da075eb19dde0c3b6572718769f519eca6de15836d8c24cf1099","src/collections/binary_heap.rs":"4b2d60380393b448c8a3ffd48aad88c527c3ca33b1a21bee64254c6006122e3b","src/collections/btree_map.rs":"d72349006de7e6ca5e77bde669b8f0af9f100556727e8f8c8a20f1c255dd1431","src/collections/btree_set.rs":"e7147d8e690d64db014d1456dd70065293e9e202ef450fc529554b2cca02ce80","src/collections/hash_map.rs":"a9860256902962687a7d4927413113aeec9b8189962dc23f4a305baa15d7429f","src/collections/hash_set.rs":"645c561661790f516c83c9a6df51688128a9496e7d1d3327e1a9bc3b6575c1ab","src/collections/linked_list.rs":"bd1e44d8d14a8410e4f9f2ac9b0fe2de60ee09433a8edb03c3860a43c99be9e2","src/collections/mod.rs":"ace8501823bf8ffae39cbb1eb63effd58cb4dba6b8e184afcb33a9b7b91108a0","src/collections/vec_deque.rs":"9f03b9807949aa33e0d6fec7b75692ae201b9a46a332b386f16b3bedc0946bde","src/compile_fail/cannot_collect_filtermap_data.rs":"526672586bf3430d564408dcae7dc04cf1469c605ea78f2b504d4afe81749f74","src/compile_fail/cannot_zip_filtered_data.rs":"a928d960a2a02644390303cc20ce06f20c266e8acdadba69df9b7036ab93823c","src/compile_fail/cell_par_iter.rs":"b2d34601566dac16b7388f62026b9e4193c6c8ee9953df08621251e9c88833d3","src/compile_fail/mod.rs":"7767194604d756f50a1e2704259ed555a113890c0599b66789f381d7ac6de245","src/compile_fail/must_use.rs":"41923aa1796397798813ec3d10b42e70443b5d95255aa096d22498897022aea6","src/compile_fail/no_send_par_iter.rs":"0b645dce06a905e06e7b73c71fd439f741e779a28e9abe5680528e108e064a49","src/compile_fail/rc_par_iter.rs":"053c187cb7ef09d24005d004c251ac660ec6f4975b2126840f0b6b2ddcfd56d0","src/delegate.rs":"e9c424d00792915eebab0f7bc6acac96b13dc1e385c657c4f3c5988ea03040c9","src/iter/blocks.rs":"991ef448571360472725e07c64f788f8d6f692e8df397ad576e686ee370fbd1e","src/iter/chain.rs":"bee429ef595d578c1d28bf5e2cec374d7ee7627d45c63f058e974e6776052e98","src/iter/chunks.rs":"6320b85478206ce102875c6dced3ca0fc1d5ae485e65671db7577cd88fbd9354","src/iter/cloned.rs":"b10d6b8c7c96aa6a22603a76f573902a451d3a56a44fcb057998603ec450e586","src/iter/collect/consumer.rs":"84e956c2d02deb986c36281bb9079e92a24142501bcaea74d20ed1b20d684263","src/iter/collect/mod.rs":"c17f8573309db4e01373d81b1c5e6b48d97629d98c9aac239b8ec8a305fc67fd","src/iter/collect/test.rs":"38b806818e75fd58b2f2e9005282ef29effe46f726df64c7d5d49e6d67092eb4","src/iter/copied.rs":"e2d213709845dd701b934c16e791c55faf1c5d527ee8703f46ec08f0c144594b","src/iter/empty.rs":"b26da6460d553338e55c7a7ddf56f725b442744d985fe2b8cf7df903c019b64f","src/iter/enumerate.rs":"66734a3536383d918e4a7ac2b4a0f472fa291b6e3f93f9cb9c4bf156e96e8baa","src/iter/extend.rs":"9276f84dcb084eee52212f0fee34cb502aa16c2c62cbbf97d1dd7e903ba065ce","src/iter/filter.rs":"2b4d92ec31b60c80a97feb593df54a1cd17cea18ee6f6c38bd216b30eaeb4ebc","src/iter/filter_map.rs":"7bd1da465ec1f6bb9585b8e4ef9ef7cf0313f9511953b126450614226cc21d59","src/iter/find.rs":"7a2e8575133cddce4639e09f8e89e10be08f726cfaaf442c3b7d28cd760cb6e1","src/iter/find_first_last/mod.rs":"b9c46e1a1d95328fde01ad1c60ec25bb19c06e88341b027d03fcf5b6e51152b1","src/iter/find_first_last/test.rs":"4d7e4050762b9f693288d7b1a0dbe7a5366768f67c3354cc0a51e764d582fe5e","src/iter/flat_map.rs":"8de818980487af44e09baf0dc6dc611fbb2c56ba4c40792026ee1411f5732b06","src/iter/flat_map_iter.rs":"db2f32f4d18f7de669c287eeb0452f21923422fa7db0499f39e9f6c1fd84e6c3","src/iter/flatten.rs":"e24c6b5e3012199957eaff583d321764821bcd036bb00eeefbd96be36c03434f","src/iter/flatten_iter.rs":"7f9f3a6367cbbc76a4b417c829644c0c55b0af480a67a35c476d3527ea1e635a","src/iter/fold.rs":"a13c0884ed33a4b233066bfc5f0780985d13587e16edf2723014a4384e953521","src/iter/fold_chunks.rs":"d83fab6308002fa0bf8b43a50d2f5c7552fa33f4145f945b9494d3d1f84b3197","src/iter/fold_chunks_with.rs":"1a3b8ea7c6ce009064a9b28f254430c8608a7d420d8e587ae45bddd85571253d","src/iter/for_each.rs":"da271856276f1174e9c0e90e8b858c2cea087373d72d15d78c87fec6b34b3d23","src/iter/from_par_iter.rs":"4ccf6ee08c4eac63cb45c7d130eaf13baea82d97a501fa4cd0fb4a64b574c106","src/iter/inspect.rs":"05d95af90f7cf163a6104a6c70d8a3e34acb9fa030e2dc8c19a645c328f212c8","src/iter/interleave.rs":"e7b8c699ecaa5d87e6b735bf087c872bc12c716c96ffd634636fb0c28926d937","src/iter/interleave_shortest.rs":"e0664f1feb01ec61a68f8d953ef9288a6f6f482dcf49b97f441c6454e343f258","src/iter/intersperse.rs":"824d92114fd293403c36a33b8fd4ccd8f3f23d09e4648249046e092e8c34907a","src/iter/len.rs":"72d806017afb9f813a38c2b7a2a6f07f11f78cb076fc3c97bfe647df7cce2e1a","src/iter/map.rs":"ff79598068b760e6d360aac5351b63cf4adeabecee7b99f03867c8f5367a446a","src/iter/map_with.rs":"9447648d59463cbdc6fc41bdd30b96dd6a0795aef752d163ea752456866d4a8b","src/iter/mod.rs":"cded4b8bc8472a5c1f34b95282a5e4ebfdd692628c781ee92a355f2e73780cc4","src/iter/multizip.rs":"ba839a9445c450c520162ea05f3ab5ef24b10721ef7acfa29d6d1264c9953916","src/iter/noop.rs":"14519f326abbd7ae57425d4ab6157d54f4037c473f14d2f71ce3d751667afc4e","src/iter/once.rs":"a111703d5654602e6b4d695c8ad90e0c4e13378323987ca5350ad160d18b6c15","src/iter/panic_fuse.rs":"1439b5d7e2800a3dd1bc755fc9968720a188e3be55628c818aa1c91c6ef60390","src/iter/par_bridge.rs":"e6252135c6a527e48890d6c75a651da1b57db79972d19cb65ee15a8518a5063a","src/iter/plumbing/README.md":"57040f7a5e20e160be1d810cb9a330f9fe3f8491a353dbfd59c5047206fce8ba","src/iter/plumbing/mod.rs":"b9a69c9a5a3d7a3a6609ec20135260353652d5358d5f4ad206c547f5f8c46d90","src/iter/positions.rs":"424b979c8c483c996a9f6e8103952f34679070f610e00f74f19f8b76ccc3da24","src/iter/product.rs":"df88c3f67c706712f25fd090c29d2bdae10ee9ddaac3cfe41757463a4192211d","src/iter/reduce.rs":"d1041401b83f95fdf4d3690bcb4d5fa7ebfdc1cfdaafa1913e4c5f2fc906c806","src/iter/repeat.rs":"652ee7cd70ed60b16f4ed5d55c85611a9bee8f7d984c941ea0f9730ac3ac47e7","src/iter/rev.rs":"30b292dec6ecdcbefab82bc5d8ca3861f85a6288ea5201701c51d7fe559b02a1","src/iter/skip.rs":"c8680db5de286fb3b11f448efda02fc5187f4e7f8e22adf885b6829bab3653f0","src/iter/skip_any.rs":"fb77380bdbaecd4925dc74e5b21153fc96c2cceac181dcb52b22f5e541083093","src/iter/skip_any_while.rs":"4c9b301c8308ad26c863763f471256139bef029225ce3298399da59e9264bd88","src/iter/splitter.rs":"a57becafe1e1b6870b4314f5288a21ea813e8e1bea00e3060d57b6f8b59168cf","src/iter/step_by.rs":"9a469abaec48544b317c8f126e8b97b2d033677549e425ca76074dfb71a4f778","src/iter/sum.rs":"fa8a05f0abc49c17e80035b8731fef3d3e4a4c267e69fec3e79d8589bc16b3d6","src/iter/take.rs":"ebc5c8517701d258b7fc016f2fd3ef20745f4f7f4ff4e3e76c34c34df960507f","src/iter/take_any.rs":"616d788ede7ca6dd5febda171325f7a8dbcfe02a4a4f936de27479a827c024f4","src/iter/take_any_while.rs":"5119ee7a7af1469778fe65c5661ddea8897b84723ebbabbaa0a336fd20726151","src/iter/test.rs":"3b36fb08512cc609eece5e569b7e366c8012be83ee16c7bfcd57a8482dddc41d","src/iter/try_fold.rs":"33bc6f79ed2c330c7f6a6fe6b394d4ef72cca5cb7588be1657e59227dd700360","src/iter/try_reduce.rs":"de0516a3d83928cf11739532014f5ea2b5e7118239619e46c45894670f6e8445","src/iter/try_reduce_with.rs":"e67a8b5c68ae7b179cede2ba0e0ec80db8512d5df1cfa091a3201dc7c3dc6206","src/iter/unzip.rs":"2ec06a488b10d5c44f5d5419c0a40138450a40ddcb64565683c5b1b5a88bd863","src/iter/update.rs":"f5b12c5341425b73462462bbd207e3ba4456dadefc1d61e97d3df3ac97bc946f","src/iter/walk_tree.rs":"bf5df026d64ccd440d350490c7e609572d7269897516c7574f5df1b75bf0cd63","src/iter/while_some.rs":"f947e488111e1c5780618eca6f12988dd6d720a0c26ebb96ba4a93a5a9b69af7","src/iter/zip.rs":"fcf547d068f7fa7aca4c8e05bb1c858cec89e78bf960ca982e046e247b2d3f0a","src/iter/zip_eq.rs":"9ed4304a57fc259994f92ccba43fe7c60988c5ab80fb2b609282c8f245b06555","src/lib.rs":"c247b3e04318d097c208d737156c2459f396e7dcc870c505cb400fb17ba6e71e","src/math.rs":"c5d64634d0f17c9e12958a72863baf3c014faa0f419333e060829b06d470a525","src/option.rs":"9da38060e08d737e972ff0215818ed519441d3fcf48a97b32bddc10762abc738","src/par_either.rs":"2f7b33ece394847e840854e614a6f732359d87fda6f7b9df13d39ed6084fdb7e","src/prelude.rs":"1c88b395a4291cb1be5b0a8ec6918efe5b100fa19b8fa016a9550aa9e25b877a","src/private.rs":"8e352a194a56c98b48121a7b41bff4318b94e546739ee5192c0494aef761bd5a","src/range.rs":"c7bc2679c1d62674c8b0c62a91e5c9e89d01c46badc46c849d8c3ad9a43f28ae","src/range_inclusive.rs":"91098fc212a98d30e38258a0f1a1d51ee8614585f2d7633a607d1d6a959de341","src/result.rs":"2d59f2ae9ef9f0d6281c084d7ad368a7585be9af700fbf3b23ba085a6289f0ae","src/slice/chunk_by.rs":"898ff6e447139794eeeab1437be02351a73598f268560b8ab4528c9a21d95554","src/slice/chunks.rs":"bb36b21e828cb25532ac49309c910dbff2a25f1ad37c8febd58430acadd733a6","src/slice/mergesort.rs":"8bc32ea95ba0fe576e632df98bb7c01ca1624bb99ca65a985f5c7290a2296e05","src/slice/mod.rs":"75efa595e6a3a42e291458343b9a1bb41ec8a3bce0db3a80b3553b8ba9ab2c60","src/slice/quicksort.rs":"8c5e8973604c67d0d49fc6998ec801415f513fef2355c13f8b16ab1f77af81df","src/slice/rchunks.rs":"27aad48e862e92aa73ff63b40c0e893dbab73a4c98b4fb2dbde731d8354258f5","src/slice/test.rs":"e85222988f6626dcf734b6c10021e58f4e9a7e0187b4aea6a37971f1796393a7","src/split_producer.rs":"613a5507814983484420fc7a2bc1afa807a8af33543c19221ece128f6317d45a","src/str.rs":"ab1382c5e004b6b9a6f2ce902adcdc05f3e21b5169f8ffb1210b5d8182abb81d","src/string.rs":"a71d8ece94cfe4b2338671e5af4ec6e675c805321b02742276e0a814c62aa2c2","src/vec.rs":"c9a37f97de3a30e92d35431d85562089323a157df968830dcfe513a0222a55d4","tests/chars.rs":"710a0f90e28cec22084159b6c32fe693fe3c5e91790a9f0b243933f1547458ac","tests/clones.rs":"582cbda5e5c0300b8feecebb2b8ebd26cf68e77dba51ac70c8f655631f00e628","tests/collect.rs":"b06775ddeedcbee7dd1990e103b859a604e94c780d1135e5bf0c81f7c770a795","tests/cross-pool.rs":"a8c26a72dcd038cf34bbf3f9bfb6af3cc7d8e6c716ebefa77386c4bff4f8ad75","tests/debug.rs":"7c91d4e0b850bbda5197252d04cf7a3fc260e009feb90cd5ac4771cfe659fe47","tests/drain_vec.rs":"f895075b252c7a30796a7778673c1af8d9bbbb114ea067194de6d25159350e13","tests/intersperse.rs":"00941115a4c86b15fd214484a371f921f957ad69971abd3d24d6cdd5e84eb62d","tests/issue671-unzip.rs":"dd77a3961e80e351148c950472dafbc7dcb9a7babd6655fd668111554fd4d149","tests/issue671.rs":"3ef77b2d21860708078bdd5d7b795d3840566adf5e342d77e9956bec7c44d640","tests/iter_panic.rs":"587578f3a5d5778ecc83dcecf6cf2eb5e74cafe36d585d181ccf69283a7a0ce8","tests/named-threads.rs":"447a9597db409b37eb9449df000d1c85413cdd15ff035de45b143fb0f565fd38","tests/octillion.rs":"19d19f12222de0b1de4714731dd869181e9699b6dfb396c3167caa1c7f5c27f0","tests/par_bridge_recursion.rs":"ff6b80d07049e4293151011c8efcadb375648b89476d5f4f147cb73dfed2b5a4","tests/producer_split_at.rs":"8a83839eae2e2327e27a307d04da8c807a211f3ddb55f25fa35f52af49288673","tests/sort-panic-safe.rs":"81026c82e9bc58638b38b05d294cb1ed723f221210b1ecab6f440a1c89f4ab37","tests/str.rs":"0af127552d8733d8f7b20ac4b1e2536d11b4a6aebdd142130c1b60f52a70f601"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6e03944a71d7773528386e32a2bcc1c3686a5481b31934ec0c45f9f77efd07cb","Android.bp":"adcd5ad3eeb3a453d6a12df5246782ebf018ec446c1c2f476011a0260c9f3551","Cargo.toml":"083fb090d9f0df12b72ee35125bfd21d028a679d3449a98c598707e183776c99","FAQ.md":"30ba5774520b7f153c6175f364da94ec7923b224fd62c3da29a7555de2a4c0bc","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"55f199cbad42bff7fc907ba1d6b83606b998ec8df845054186a2f0b801b30f04","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2491cf2a5de314fd7de283cc8e91857851ead49930af3af8320a9caa54325e28","RELEASES.md":"afea883b2bda400d07ca2f1125176aa8f81777420ac9d1e73caca691e1621f0e","TEST_MAPPING":"e458a5dbc17af3f85b874533972b22391a7a66fc5abac59c3eafe2d643b112a5","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/array.rs":"ab25f505bc89da075eb19dde0c3b6572718769f519eca6de15836d8c24cf1099","src/collections/binary_heap.rs":"4b2d60380393b448c8a3ffd48aad88c527c3ca33b1a21bee64254c6006122e3b","src/collections/btree_map.rs":"d72349006de7e6ca5e77bde669b8f0af9f100556727e8f8c8a20f1c255dd1431","src/collections/btree_set.rs":"e7147d8e690d64db014d1456dd70065293e9e202ef450fc529554b2cca02ce80","src/collections/hash_map.rs":"a9860256902962687a7d4927413113aeec9b8189962dc23f4a305baa15d7429f","src/collections/hash_set.rs":"645c561661790f516c83c9a6df51688128a9496e7d1d3327e1a9bc3b6575c1ab","src/collections/linked_list.rs":"bd1e44d8d14a8410e4f9f2ac9b0fe2de60ee09433a8edb03c3860a43c99be9e2","src/collections/mod.rs":"ace8501823bf8ffae39cbb1eb63effd58cb4dba6b8e184afcb33a9b7b91108a0","src/collections/vec_deque.rs":"9f03b9807949aa33e0d6fec7b75692ae201b9a46a332b386f16b3bedc0946bde","src/compile_fail/cannot_collect_filtermap_data.rs":"526672586bf3430d564408dcae7dc04cf1469c605ea78f2b504d4afe81749f74","src/compile_fail/cannot_zip_filtered_data.rs":"a928d960a2a02644390303cc20ce06f20c266e8acdadba69df9b7036ab93823c","src/compile_fail/cell_par_iter.rs":"b2d34601566dac16b7388f62026b9e4193c6c8ee9953df08621251e9c88833d3","src/compile_fail/mod.rs":"7767194604d756f50a1e2704259ed555a113890c0599b66789f381d7ac6de245","src/compile_fail/must_use.rs":"41923aa1796397798813ec3d10b42e70443b5d95255aa096d22498897022aea6","src/compile_fail/no_send_par_iter.rs":"0b645dce06a905e06e7b73c71fd439f741e779a28e9abe5680528e108e064a49","src/compile_fail/rc_par_iter.rs":"053c187cb7ef09d24005d004c251ac660ec6f4975b2126840f0b6b2ddcfd56d0","src/delegate.rs":"e9c424d00792915eebab0f7bc6acac96b13dc1e385c657c4f3c5988ea03040c9","src/iter/blocks.rs":"991ef448571360472725e07c64f788f8d6f692e8df397ad576e686ee370fbd1e","src/iter/chain.rs":"bee429ef595d578c1d28bf5e2cec374d7ee7627d45c63f058e974e6776052e98","src/iter/chunks.rs":"6320b85478206ce102875c6dced3ca0fc1d5ae485e65671db7577cd88fbd9354","src/iter/cloned.rs":"b10d6b8c7c96aa6a22603a76f573902a451d3a56a44fcb057998603ec450e586","src/iter/collect/consumer.rs":"84e956c2d02deb986c36281bb9079e92a24142501bcaea74d20ed1b20d684263","src/iter/collect/mod.rs":"c17f8573309db4e01373d81b1c5e6b48d97629d98c9aac239b8ec8a305fc67fd","src/iter/collect/test.rs":"38b806818e75fd58b2f2e9005282ef29effe46f726df64c7d5d49e6d67092eb4","src/iter/copied.rs":"e2d213709845dd701b934c16e791c55faf1c5d527ee8703f46ec08f0c144594b","src/iter/empty.rs":"b26da6460d553338e55c7a7ddf56f725b442744d985fe2b8cf7df903c019b64f","src/iter/enumerate.rs":"66734a3536383d918e4a7ac2b4a0f472fa291b6e3f93f9cb9c4bf156e96e8baa","src/iter/extend.rs":"9276f84dcb084eee52212f0fee34cb502aa16c2c62cbbf97d1dd7e903ba065ce","src/iter/filter.rs":"2b4d92ec31b60c80a97feb593df54a1cd17cea18ee6f6c38bd216b30eaeb4ebc","src/iter/filter_map.rs":"7bd1da465ec1f6bb9585b8e4ef9ef7cf0313f9511953b126450614226cc21d59","src/iter/find.rs":"7a2e8575133cddce4639e09f8e89e10be08f726cfaaf442c3b7d28cd760cb6e1","src/iter/find_first_last/mod.rs":"b9c46e1a1d95328fde01ad1c60ec25bb19c06e88341b027d03fcf5b6e51152b1","src/iter/find_first_last/test.rs":"4d7e4050762b9f693288d7b1a0dbe7a5366768f67c3354cc0a51e764d582fe5e","src/iter/flat_map.rs":"8de818980487af44e09baf0dc6dc611fbb2c56ba4c40792026ee1411f5732b06","src/iter/flat_map_iter.rs":"db2f32f4d18f7de669c287eeb0452f21923422fa7db0499f39e9f6c1fd84e6c3","src/iter/flatten.rs":"e24c6b5e3012199957eaff583d321764821bcd036bb00eeefbd96be36c03434f","src/iter/flatten_iter.rs":"7f9f3a6367cbbc76a4b417c829644c0c55b0af480a67a35c476d3527ea1e635a","src/iter/fold.rs":"a13c0884ed33a4b233066bfc5f0780985d13587e16edf2723014a4384e953521","src/iter/fold_chunks.rs":"d83fab6308002fa0bf8b43a50d2f5c7552fa33f4145f945b9494d3d1f84b3197","src/iter/fold_chunks_with.rs":"1a3b8ea7c6ce009064a9b28f254430c8608a7d420d8e587ae45bddd85571253d","src/iter/for_each.rs":"da271856276f1174e9c0e90e8b858c2cea087373d72d15d78c87fec6b34b3d23","src/iter/from_par_iter.rs":"4ccf6ee08c4eac63cb45c7d130eaf13baea82d97a501fa4cd0fb4a64b574c106","src/iter/inspect.rs":"05d95af90f7cf163a6104a6c70d8a3e34acb9fa030e2dc8c19a645c328f212c8","src/iter/interleave.rs":"e7b8c699ecaa5d87e6b735bf087c872bc12c716c96ffd634636fb0c28926d937","src/iter/interleave_shortest.rs":"e0664f1feb01ec61a68f8d953ef9288a6f6f482dcf49b97f441c6454e343f258","src/iter/intersperse.rs":"824d92114fd293403c36a33b8fd4ccd8f3f23d09e4648249046e092e8c34907a","src/iter/len.rs":"72d806017afb9f813a38c2b7a2a6f07f11f78cb076fc3c97bfe647df7cce2e1a","src/iter/map.rs":"ff79598068b760e6d360aac5351b63cf4adeabecee7b99f03867c8f5367a446a","src/iter/map_with.rs":"9447648d59463cbdc6fc41bdd30b96dd6a0795aef752d163ea752456866d4a8b","src/iter/mod.rs":"cded4b8bc8472a5c1f34b95282a5e4ebfdd692628c781ee92a355f2e73780cc4","src/iter/multizip.rs":"ba839a9445c450c520162ea05f3ab5ef24b10721ef7acfa29d6d1264c9953916","src/iter/noop.rs":"14519f326abbd7ae57425d4ab6157d54f4037c473f14d2f71ce3d751667afc4e","src/iter/once.rs":"a111703d5654602e6b4d695c8ad90e0c4e13378323987ca5350ad160d18b6c15","src/iter/panic_fuse.rs":"1439b5d7e2800a3dd1bc755fc9968720a188e3be55628c818aa1c91c6ef60390","src/iter/par_bridge.rs":"e6252135c6a527e48890d6c75a651da1b57db79972d19cb65ee15a8518a5063a","src/iter/plumbing/README.md":"57040f7a5e20e160be1d810cb9a330f9fe3f8491a353dbfd59c5047206fce8ba","src/iter/plumbing/mod.rs":"b9a69c9a5a3d7a3a6609ec20135260353652d5358d5f4ad206c547f5f8c46d90","src/iter/positions.rs":"424b979c8c483c996a9f6e8103952f34679070f610e00f74f19f8b76ccc3da24","src/iter/product.rs":"df88c3f67c706712f25fd090c29d2bdae10ee9ddaac3cfe41757463a4192211d","src/iter/reduce.rs":"d1041401b83f95fdf4d3690bcb4d5fa7ebfdc1cfdaafa1913e4c5f2fc906c806","src/iter/repeat.rs":"652ee7cd70ed60b16f4ed5d55c85611a9bee8f7d984c941ea0f9730ac3ac47e7","src/iter/rev.rs":"30b292dec6ecdcbefab82bc5d8ca3861f85a6288ea5201701c51d7fe559b02a1","src/iter/skip.rs":"c8680db5de286fb3b11f448efda02fc5187f4e7f8e22adf885b6829bab3653f0","src/iter/skip_any.rs":"fb77380bdbaecd4925dc74e5b21153fc96c2cceac181dcb52b22f5e541083093","src/iter/skip_any_while.rs":"4c9b301c8308ad26c863763f471256139bef029225ce3298399da59e9264bd88","src/iter/splitter.rs":"a57becafe1e1b6870b4314f5288a21ea813e8e1bea00e3060d57b6f8b59168cf","src/iter/step_by.rs":"9a469abaec48544b317c8f126e8b97b2d033677549e425ca76074dfb71a4f778","src/iter/sum.rs":"fa8a05f0abc49c17e80035b8731fef3d3e4a4c267e69fec3e79d8589bc16b3d6","src/iter/take.rs":"ebc5c8517701d258b7fc016f2fd3ef20745f4f7f4ff4e3e76c34c34df960507f","src/iter/take_any.rs":"616d788ede7ca6dd5febda171325f7a8dbcfe02a4a4f936de27479a827c024f4","src/iter/take_any_while.rs":"5119ee7a7af1469778fe65c5661ddea8897b84723ebbabbaa0a336fd20726151","src/iter/test.rs":"3b36fb08512cc609eece5e569b7e366c8012be83ee16c7bfcd57a8482dddc41d","src/iter/try_fold.rs":"33bc6f79ed2c330c7f6a6fe6b394d4ef72cca5cb7588be1657e59227dd700360","src/iter/try_reduce.rs":"de0516a3d83928cf11739532014f5ea2b5e7118239619e46c45894670f6e8445","src/iter/try_reduce_with.rs":"e67a8b5c68ae7b179cede2ba0e0ec80db8512d5df1cfa091a3201dc7c3dc6206","src/iter/unzip.rs":"2ec06a488b10d5c44f5d5419c0a40138450a40ddcb64565683c5b1b5a88bd863","src/iter/update.rs":"f5b12c5341425b73462462bbd207e3ba4456dadefc1d61e97d3df3ac97bc946f","src/iter/walk_tree.rs":"bf5df026d64ccd440d350490c7e609572d7269897516c7574f5df1b75bf0cd63","src/iter/while_some.rs":"f947e488111e1c5780618eca6f12988dd6d720a0c26ebb96ba4a93a5a9b69af7","src/iter/zip.rs":"fcf547d068f7fa7aca4c8e05bb1c858cec89e78bf960ca982e046e247b2d3f0a","src/iter/zip_eq.rs":"9ed4304a57fc259994f92ccba43fe7c60988c5ab80fb2b609282c8f245b06555","src/lib.rs":"c247b3e04318d097c208d737156c2459f396e7dcc870c505cb400fb17ba6e71e","src/math.rs":"c5d64634d0f17c9e12958a72863baf3c014faa0f419333e060829b06d470a525","src/option.rs":"9da38060e08d737e972ff0215818ed519441d3fcf48a97b32bddc10762abc738","src/par_either.rs":"2f7b33ece394847e840854e614a6f732359d87fda6f7b9df13d39ed6084fdb7e","src/prelude.rs":"1c88b395a4291cb1be5b0a8ec6918efe5b100fa19b8fa016a9550aa9e25b877a","src/private.rs":"8e352a194a56c98b48121a7b41bff4318b94e546739ee5192c0494aef761bd5a","src/range.rs":"c7bc2679c1d62674c8b0c62a91e5c9e89d01c46badc46c849d8c3ad9a43f28ae","src/range_inclusive.rs":"91098fc212a98d30e38258a0f1a1d51ee8614585f2d7633a607d1d6a959de341","src/result.rs":"2d59f2ae9ef9f0d6281c084d7ad368a7585be9af700fbf3b23ba085a6289f0ae","src/slice/chunk_by.rs":"898ff6e447139794eeeab1437be02351a73598f268560b8ab4528c9a21d95554","src/slice/chunks.rs":"bb36b21e828cb25532ac49309c910dbff2a25f1ad37c8febd58430acadd733a6","src/slice/mergesort.rs":"8bc32ea95ba0fe576e632df98bb7c01ca1624bb99ca65a985f5c7290a2296e05","src/slice/mod.rs":"75efa595e6a3a42e291458343b9a1bb41ec8a3bce0db3a80b3553b8ba9ab2c60","src/slice/quicksort.rs":"8c5e8973604c67d0d49fc6998ec801415f513fef2355c13f8b16ab1f77af81df","src/slice/rchunks.rs":"27aad48e862e92aa73ff63b40c0e893dbab73a4c98b4fb2dbde731d8354258f5","src/slice/test.rs":"e85222988f6626dcf734b6c10021e58f4e9a7e0187b4aea6a37971f1796393a7","src/split_producer.rs":"613a5507814983484420fc7a2bc1afa807a8af33543c19221ece128f6317d45a","src/str.rs":"ab1382c5e004b6b9a6f2ce902adcdc05f3e21b5169f8ffb1210b5d8182abb81d","src/string.rs":"a71d8ece94cfe4b2338671e5af4ec6e675c805321b02742276e0a814c62aa2c2","src/vec.rs":"c9a37f97de3a30e92d35431d85562089323a157df968830dcfe513a0222a55d4","tests/chars.rs":"710a0f90e28cec22084159b6c32fe693fe3c5e91790a9f0b243933f1547458ac","tests/clones.rs":"582cbda5e5c0300b8feecebb2b8ebd26cf68e77dba51ac70c8f655631f00e628","tests/collect.rs":"b06775ddeedcbee7dd1990e103b859a604e94c780d1135e5bf0c81f7c770a795","tests/cross-pool.rs":"a8c26a72dcd038cf34bbf3f9bfb6af3cc7d8e6c716ebefa77386c4bff4f8ad75","tests/debug.rs":"7c91d4e0b850bbda5197252d04cf7a3fc260e009feb90cd5ac4771cfe659fe47","tests/drain_vec.rs":"f895075b252c7a30796a7778673c1af8d9bbbb114ea067194de6d25159350e13","tests/intersperse.rs":"00941115a4c86b15fd214484a371f921f957ad69971abd3d24d6cdd5e84eb62d","tests/issue671-unzip.rs":"dd77a3961e80e351148c950472dafbc7dcb9a7babd6655fd668111554fd4d149","tests/issue671.rs":"3ef77b2d21860708078bdd5d7b795d3840566adf5e342d77e9956bec7c44d640","tests/iter_panic.rs":"587578f3a5d5778ecc83dcecf6cf2eb5e74cafe36d585d181ccf69283a7a0ce8","tests/named-threads.rs":"447a9597db409b37eb9449df000d1c85413cdd15ff035de45b143fb0f565fd38","tests/octillion.rs":"19d19f12222de0b1de4714731dd869181e9699b6dfb396c3167caa1c7f5c27f0","tests/par_bridge_recursion.rs":"ff6b80d07049e4293151011c8efcadb375648b89476d5f4f147cb73dfed2b5a4","tests/producer_split_at.rs":"8a83839eae2e2327e27a307d04da8c807a211f3ddb55f25fa35f52af49288673","tests/sort-panic-safe.rs":"81026c82e9bc58638b38b05d294cb1ed723f221210b1ecab6f440a1c89f4ab37","tests/str.rs":"0af127552d8733d8f7b20ac4b1e2536d11b4a6aebdd142130c1b60f52a70f601"}}
\ No newline at end of file
diff --git a/crates/rayon/Android.bp b/crates/rayon/Android.bp
index 7902294..fe1a88e 100644
--- a/crates/rayon/Android.bp
+++ b/crates/rayon/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/rayon/cargo_embargo.json b/crates/rayon/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/rayon/cargo_embargo.json
+++ b/crates/rayon/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/regex-automata/.android-checksum.json b/crates/regex-automata/.android-checksum.json
index 610ce03..b4a4972 100644
--- a/crates/regex-automata/.android-checksum.json
+++ b/crates/regex-automata/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f3a10394ad6cd02aa6efb0e4bd45b854ea1d84cebb630c7e9b070ea67d8bc09f","Android.bp":"a9c56027421c91cc0490b805dcba9e46198c387ce73eac94cba5fe95ceed77bb","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"9308aa201b5fe5326d98de4c7488a33ab04db378e83903d2c9bed482ea00a3c0","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"960320205b212b0b531ae097bbeceaea996accdc9e61cfba2a00416eb726f591","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fbfd649c7e5521387e9021257a4cc5022752f6ed284f77b9edf2c302ea78e597","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","TODO":"363ae1acdd65b5edc809f44bfb17ec6800694d0534d0fecfbe97fa3d0d87542e","cargo_embargo.json":"651827b0be315dc6c3973d2a32e15065ce98eb06fe43e132de89c8885c120ddd","data/fowler-tests/LICENSE":"22b14b2c97da23592f76c81a679ea1734de48467099147be714b3acb9fd0331d","data/fowler-tests/README":"db03aead9c2f527f5814153b82161639c399c5c412b127d2893d2256ce7147b3","data/fowler-tests/basic.dat":"135c56a091f8338ee22bc60d099a74be57eeac4af899b11011b7b083c454e860","data/fowler-tests/nullsubexpr.dat":"b672efc0869e12a7ea55766c0c3111c9d2d0e5c2c802be795deb80199abf015b","data/fowler-tests/repetition.dat":"174f1800f5421b579b255682382dfddf701f282fd401fa502532feba49f4c5b1","data/tests/crazy.toml":"e449202ef47ad8f803b2db8842690e5455ad136c3e2788d7be7f2b65a1adc83f","data/tests/flags.toml":"b602404b7f483e727a47b531511ee98e276ef3653ecbd2f64b22548f2cb68b40","data/tests/fowler/LICENSE":"22b14b2c97da23592f76c81a679ea1734de48467099147be714b3acb9fd0331d","data/tests/fowler/README":"c649175809fc04f40387575ec3c23b0b3d47b6b3602166758e25ec07e2c0499f","data/tests/fowler/basic.dat":"135c56a091f8338ee22bc60d099a74be57eeac4af899b11011b7b083c454e860","data/tests/fowler/basic.toml":"57354ea978d77327685012cca107e37f9fef4a45ad21b8261497f76c87f19187","data/tests/fowler/fowler-to-toml":"da43c8c974d6f73ef9e787f9a035403fee8433fb083e5ea80a82751a80075a25","data/tests/fowler/nullsubexpr.dat":"b672efc0869e12a7ea55766c0c3111c9d2d0e5c2c802be795deb80199abf015b","data/tests/fowler/nullsubexpr.toml":"a54994f30abc44577d60422f6f07929300d224c1fa420de2db6921343d5cb5be","data/tests/fowler/repetition-long.dat":"2f0ecffe636ef627d9c49e5d3ab54bb6845ea603b5e00f800a0cf57d9a921e0d","data/tests/fowler/repetition-long.toml":"de1e895cc864565578f418e7cd4c9f84036ddf99aeb736745243c0cb3810d8dc","data/tests/fowler/repetition.dat":"3df56f6f83932b2de82668ee96ef1578f6e2064d1bbac1e96d944c4f26cb2398","data/tests/fowler/repetition.toml":"ce0c295e1daee6f507b22cd8d4cb9fef0e3f04229375e141bc856dc33d37d0b8","data/tests/iter.toml":"14bb0ae716b658dd90a3ba42aa6c1c28ba5cff7b30783b99d794e8d6108dafdd","data/tests/no-unicode.toml":"774f9c2132ac72fa560504658fb485c511cfaf006f428dd0dcd17b8300978fba","data/tests/unicode.toml":"cf3cb5faade46abd1f3f394875541001957e98b63fdf962b0a3a970ab3db9f46","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/byteorder.rs":"adb45ae612815479a5e0ea717aa2dccfbb7d88bb6ec9a8b673f242b0e2f67f9f","src/classes.rs":"9cff518fedec64d708c55b90c428d092bae3d968f971d4561a8607f8bd5b92b7","src/codegen.rs":"db121f1b2d0c62a586e449f9abc0f3106c9af0f18b4c89b7c7aa7b5ce621d6de","src/dense.rs":"1a67163b5dac8c641d424085308abf1a93d07c9fc64fd8339f5d98977a6a775c","src/determinize.rs":"be499c2223bace996f0d2be3cabc0083be6a0f3e72fda48e76bd854ad2729845","src/dfa.rs":"a4a29d6155075347b62092b355a1b266aba283e6da06221f025ed252e3a5130d","src/error.rs":"79bb5fcfe43069c140378085ce6cb24c43db528f0d3cc9e0f872b9a9f5902cf9","src/lib.rs":"bde68b6f66f92ebb4a9903d9cc3fb4d7456822581f3152e97c098fbb91a49702","src/minimize.rs":"2ac68814e4fe9444c16a1d897d98d35567da918b023391c60a1ab417424ae543","src/nfa/compiler.rs":"24157d3df76d7dd7070fc5e82e40ee7b070c492b6b1b0b26a63e19ebd8a12fcc","src/nfa/map.rs":"66d7fe3e7e0fd786643e944cf64bf11aa9ecb60dfd93dc55fa1132f95e77639b","src/nfa/mod.rs":"2417202cfa24db98c017f6fd3179b579626463774da8b1681702fbdfc19c6d23","src/nfa/range_trie.rs":"423a38d65f2ad765dd57c1d039843f98d9770b102f3c83857e1b83be19c049db","src/regex.rs":"065cfb4088d3c4f6010f01ebb17dba7cd16d07b032eb6bebcc9f3c357068a21e","src/sparse.rs":"efe61950f8452ec82c3c0383ad4ef674ff058c45830a01ab19e84ec8c36a9936","src/sparse_set.rs":"cbe593dcfd20f4c31ff7e971fc3e0ba79780477c1d668e8c800fa6c1a78555d5","src/state_id.rs":"5270619db32bb169436fee8924d2253f723ccdfa785b3a93e5798fd8200c2baa","src/transducer.rs":"86ea535b17f8afc1499b50d05c90ad04162bc66903dadae81ff6b7e5d3cb9706","tests/collection.rs":"c162784af6a85e0d9353299796dcf56f12a662c04eda0933c6bafdbc7daf9458","tests/regression.rs":"9aad804245a114333a63642aa6226139ae32142befca54e2ca664c7bf788581a","tests/suite.rs":"822076edd499a71a342a3f1eed59ca0dcd5f59bd8e062b77b22e895a6f0715aa","tests/tests.rs":"f9ede370abe7240fbd6b23c5c798f62dcd350a697269b95ba382bcd87b69d034","tests/unescape.rs":"b06c9a34e67886223100c133c0877584e6a5e9ae1b624f252a9ae4d829e7e18d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f3a10394ad6cd02aa6efb0e4bd45b854ea1d84cebb630c7e9b070ea67d8bc09f","Android.bp":"a1d755121bbb6a4a3b7d878781b758b9fc3dee67b38f989aafc593a06855c2dc","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"9308aa201b5fe5326d98de4c7488a33ab04db378e83903d2c9bed482ea00a3c0","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"960320205b212b0b531ae097bbeceaea996accdc9e61cfba2a00416eb726f591","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fbfd649c7e5521387e9021257a4cc5022752f6ed284f77b9edf2c302ea78e597","TEST_MAPPING":"5df47f5b5b7533d10aa6a3ecb9189615e716a8060f002faa2bf4c893c12f33f9","TODO":"363ae1acdd65b5edc809f44bfb17ec6800694d0534d0fecfbe97fa3d0d87542e","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","data/fowler-tests/LICENSE":"22b14b2c97da23592f76c81a679ea1734de48467099147be714b3acb9fd0331d","data/fowler-tests/README":"db03aead9c2f527f5814153b82161639c399c5c412b127d2893d2256ce7147b3","data/fowler-tests/basic.dat":"135c56a091f8338ee22bc60d099a74be57eeac4af899b11011b7b083c454e860","data/fowler-tests/nullsubexpr.dat":"b672efc0869e12a7ea55766c0c3111c9d2d0e5c2c802be795deb80199abf015b","data/fowler-tests/repetition.dat":"174f1800f5421b579b255682382dfddf701f282fd401fa502532feba49f4c5b1","data/tests/crazy.toml":"e449202ef47ad8f803b2db8842690e5455ad136c3e2788d7be7f2b65a1adc83f","data/tests/flags.toml":"b602404b7f483e727a47b531511ee98e276ef3653ecbd2f64b22548f2cb68b40","data/tests/fowler/LICENSE":"22b14b2c97da23592f76c81a679ea1734de48467099147be714b3acb9fd0331d","data/tests/fowler/README":"c649175809fc04f40387575ec3c23b0b3d47b6b3602166758e25ec07e2c0499f","data/tests/fowler/basic.dat":"135c56a091f8338ee22bc60d099a74be57eeac4af899b11011b7b083c454e860","data/tests/fowler/basic.toml":"57354ea978d77327685012cca107e37f9fef4a45ad21b8261497f76c87f19187","data/tests/fowler/fowler-to-toml":"da43c8c974d6f73ef9e787f9a035403fee8433fb083e5ea80a82751a80075a25","data/tests/fowler/nullsubexpr.dat":"b672efc0869e12a7ea55766c0c3111c9d2d0e5c2c802be795deb80199abf015b","data/tests/fowler/nullsubexpr.toml":"a54994f30abc44577d60422f6f07929300d224c1fa420de2db6921343d5cb5be","data/tests/fowler/repetition-long.dat":"2f0ecffe636ef627d9c49e5d3ab54bb6845ea603b5e00f800a0cf57d9a921e0d","data/tests/fowler/repetition-long.toml":"de1e895cc864565578f418e7cd4c9f84036ddf99aeb736745243c0cb3810d8dc","data/tests/fowler/repetition.dat":"3df56f6f83932b2de82668ee96ef1578f6e2064d1bbac1e96d944c4f26cb2398","data/tests/fowler/repetition.toml":"ce0c295e1daee6f507b22cd8d4cb9fef0e3f04229375e141bc856dc33d37d0b8","data/tests/iter.toml":"14bb0ae716b658dd90a3ba42aa6c1c28ba5cff7b30783b99d794e8d6108dafdd","data/tests/no-unicode.toml":"774f9c2132ac72fa560504658fb485c511cfaf006f428dd0dcd17b8300978fba","data/tests/unicode.toml":"cf3cb5faade46abd1f3f394875541001957e98b63fdf962b0a3a970ab3db9f46","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/byteorder.rs":"adb45ae612815479a5e0ea717aa2dccfbb7d88bb6ec9a8b673f242b0e2f67f9f","src/classes.rs":"9cff518fedec64d708c55b90c428d092bae3d968f971d4561a8607f8bd5b92b7","src/codegen.rs":"db121f1b2d0c62a586e449f9abc0f3106c9af0f18b4c89b7c7aa7b5ce621d6de","src/dense.rs":"1a67163b5dac8c641d424085308abf1a93d07c9fc64fd8339f5d98977a6a775c","src/determinize.rs":"be499c2223bace996f0d2be3cabc0083be6a0f3e72fda48e76bd854ad2729845","src/dfa.rs":"a4a29d6155075347b62092b355a1b266aba283e6da06221f025ed252e3a5130d","src/error.rs":"79bb5fcfe43069c140378085ce6cb24c43db528f0d3cc9e0f872b9a9f5902cf9","src/lib.rs":"bde68b6f66f92ebb4a9903d9cc3fb4d7456822581f3152e97c098fbb91a49702","src/minimize.rs":"2ac68814e4fe9444c16a1d897d98d35567da918b023391c60a1ab417424ae543","src/nfa/compiler.rs":"24157d3df76d7dd7070fc5e82e40ee7b070c492b6b1b0b26a63e19ebd8a12fcc","src/nfa/map.rs":"66d7fe3e7e0fd786643e944cf64bf11aa9ecb60dfd93dc55fa1132f95e77639b","src/nfa/mod.rs":"2417202cfa24db98c017f6fd3179b579626463774da8b1681702fbdfc19c6d23","src/nfa/range_trie.rs":"423a38d65f2ad765dd57c1d039843f98d9770b102f3c83857e1b83be19c049db","src/regex.rs":"065cfb4088d3c4f6010f01ebb17dba7cd16d07b032eb6bebcc9f3c357068a21e","src/sparse.rs":"efe61950f8452ec82c3c0383ad4ef674ff058c45830a01ab19e84ec8c36a9936","src/sparse_set.rs":"cbe593dcfd20f4c31ff7e971fc3e0ba79780477c1d668e8c800fa6c1a78555d5","src/state_id.rs":"5270619db32bb169436fee8924d2253f723ccdfa785b3a93e5798fd8200c2baa","src/transducer.rs":"86ea535b17f8afc1499b50d05c90ad04162bc66903dadae81ff6b7e5d3cb9706","tests/collection.rs":"c162784af6a85e0d9353299796dcf56f12a662c04eda0933c6bafdbc7daf9458","tests/regression.rs":"9aad804245a114333a63642aa6226139ae32142befca54e2ca664c7bf788581a","tests/suite.rs":"822076edd499a71a342a3f1eed59ca0dcd5f59bd8e062b77b22e895a6f0715aa","tests/tests.rs":"f9ede370abe7240fbd6b23c5c798f62dcd350a697269b95ba382bcd87b69d034","tests/unescape.rs":"b06c9a34e67886223100c133c0877584e6a5e9ae1b624f252a9ae4d829e7e18d"}}
\ No newline at end of file
diff --git a/crates/regex-automata/Android.bp b/crates/regex-automata/Android.bp
index 430ea0f..d530241 100644
--- a/crates/regex-automata/Android.bp
+++ b/crates/regex-automata/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/regex-automata/cargo_embargo.json b/crates/regex-automata/cargo_embargo.json
index 0967ef4..41e8c50 100644
--- a/crates/regex-automata/cargo_embargo.json
+++ b/crates/regex-automata/cargo_embargo.json
@@ -1 +1,3 @@
-{}
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/remain/.android-checksum.json b/crates/remain/.android-checksum.json
index 00cba68..462008f 100644
--- a/crates/remain/.android-checksum.json
+++ b/crates/remain/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0758a336cc66a4d77e7f89764d0ac0d2edec38d8d001d1afd2d9d37f59ece7f9","Android.bp":"5c6bb56f1effbfe65d3ec5f14c084b97d9f637cddc84f0701eb986d11eef0747","Cargo.toml":"c20db1b8f06478ecd3b327948e059de7f059b972c4e4253c8f636370097c7471","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5d5747dbbf89c8fc21bfc4de7b1faa8f4c0426a609b6cea90a3b36d31ebd4686","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca6f5d223e2232bf54766b451cf055ee5e872a040c69f4f7939a8b9387b009b2","TEST_MAPPING":"f13b56f27c5795049ae3d415b3adcb5a8e52973234a4d6ae39946ad5bbd61679","cargo_embargo.json":"5cbeb8e419a0253697a92702d8bc56f1f2650da67f2605e01c7d0f744f1df4c2","src/atom.rs":"a65a8dabb4080c980d3905b5d6f8087ad9b56bb4d1c9549f155a9a06e3b64afc","src/check.rs":"d60685a3053bf34b62ca474e3c3d961ffbc5ad716a7438d1d605e6085b980113","src/compare.rs":"a86d3ed29c98c58c4d5ca1e3050bed97d34328a4e5eca0ab200f6eaa70b07c46","src/emit.rs":"1cc399b9c9fcaadfbaad756674c3eb4cad9212173dbf6e3a07f5ec91680877d6","src/format.rs":"7239c0b64471d5e2d6bfb6f1259ca15759586f4529387b21da1c9d60f81e6601","src/lib.rs":"03e84c50a7dd66d9c7af5c64ee61e21b836868e5887688264fcd753cd0e7c3aa","src/parse.rs":"f8d688bc46d1b54e910be31e92866956ca0156bad60cc077f7857d58b6dfaf3d","src/visit.rs":"51ccba6c94d0053030ee41e155a127cd5a1245f8f2010dcf7ad690b1788d851d","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/order.rs":"f1f6cc82da212bcc67d40869a0df29cc9ff5bf13a3aba09897bec5837b543b22","tests/stable.rs":"1c44792c3dcb9c99d6e74aa2eae30379c3ccbc920e07100933b8a1beae647d40","tests/ui/enum.rs":"dc9cbc89232d0e1ae99bda38328ab8fbaa59f7c30034d3f3db851bdb21c0f319","tests/ui/enum.stderr":"25aaacabf55bd52a73ed585dffd6b07d1a51bd3aaad49f2d30910c4aad78ddab","tests/ui/let-stable.rs":"7056943405ac5433eae4a306ddd886c8b68585ceea1b27175e51cc1d4c6c69b6","tests/ui/let-stable.stderr":"dfa443d7e5e312498b260977f26fd98da56489729c60c4254ee6123752fd6cd4","tests/ui/let-unstable.rs":"c11ce9c83584efabafe9f05f8e5728b276f269f705af3efd532984efa512c5c4","tests/ui/let-unstable.stderr":"fd6d3438a865b2ca03e3a7066858ae6976736f09a94e84267e2863eb6058572b","tests/ui/match-stable.rs":"200b23f0eb841b827c4ae928d47a21513edc89248cb4a68e549a57180119a4e2","tests/ui/match-stable.stderr":"45b8f64c3cc16c6a8e74a5cdc808bd6c444269d8abde82b85285887fc780f01b","tests/ui/match-unstable.rs":"175fbad0431fa248508175de18f9bb59f518609a75bbe9ba553131ba755db598","tests/ui/match-unstable.stderr":"236514a469c04bfd2c833b98ff740fb651cef58968cb9ff8e3d6d63d1fa1fa47","tests/ui/repeat.rs":"9cc6c49e2a4e1b18e89650cf2f9f8755cade66b52edba17ae57b1b0a2fbdb512","tests/ui/repeat.stderr":"319b454b42edbc62a64cf3afcf40cc865a491e768577073dcf2b8cf6734fee95","tests/ui/struct.rs":"a2aeea7a29c74dc76829bcc4126d21f3f0086e4cc4c456833a01c3fb497c5dbb","tests/ui/struct.stderr":"aace27891cf6ac82fe4b705cd2f7a7275b408a85848b682730e22ec2fcc33a01","tests/ui/unnamed-fields.rs":"a9dd904fbfd1b3678c0d4024bcc285d6ecaffd902b297644043ef37e4187d60e","tests/ui/unnamed-fields.stderr":"ede05b50e557369a98be913375714540c04e33e0c67a06e073ebb1f4bdefbf24","tests/ui/unsorted-enum.rs":"43452ce86c9e142f54cbd030eb5f7a21b996dc39c23deaf12f11c3ab1cd81998","tests/ui/unsorted-enum.stderr":"7707ef9f1e76c643e4bc8daca497c6e686a0ffc5dc284ed0a5784d1596bd2839","tests/ui/unsorted-match-stable.rs":"2ebc8ec162d0179f78b9350c516eee526684eb80412feb1d29a086f07f9e471d","tests/ui/unsorted-match-stable.stderr":"88001434fe35cd783d31feee13f6b450f5d0e27848954845af896bed067a9b73","tests/ui/unsorted-match-unstable.rs":"9039b3b2df62a1025ed810baa894a69a918c23c6afca05f6f11cd418f8867378","tests/ui/unsorted-match-unstable.stderr":"c5d8ed5edf9562e746c3665d45346502435c7fe0cecae61b7a37716bba044e40","tests/ui/unsorted-struct.rs":"daf24ceb1a35803e0b71a9f9ef0840ef338e5afc1480a63768781d9243655fcd","tests/ui/unsorted-struct.stderr":"e334c74c8f1baa01c65c32ac39132cfb15efdb94f657aac09a32fcddefba5d46","tests/ui/unsupported.rs":"fa25bf6bc27dad24d7a2fb23942dc5c3a35058406064bd107b662354918c80a5","tests/ui/unsupported.stderr":"6f9a56e228143ee60b1e36d761b8050f09cdf4d2209dab0749215ca9c5774107","tests/unstable.rs":"7681308f7adae7c8b60b2b49fcf7759a1acc31316867467da108b86a78ce9269"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0758a336cc66a4d77e7f89764d0ac0d2edec38d8d001d1afd2d9d37f59ece7f9","Android.bp":"5c6bb56f1effbfe65d3ec5f14c084b97d9f637cddc84f0701eb986d11eef0747","Cargo.toml":"c20db1b8f06478ecd3b327948e059de7f059b972c4e4253c8f636370097c7471","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5d5747dbbf89c8fc21bfc4de7b1faa8f4c0426a609b6cea90a3b36d31ebd4686","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca6f5d223e2232bf54766b451cf055ee5e872a040c69f4f7939a8b9387b009b2","TEST_MAPPING":"f13b56f27c5795049ae3d415b3adcb5a8e52973234a4d6ae39946ad5bbd61679","cargo_embargo.json":"2fc4c37f510e4e3d9eddc0fecc9c173bfac9b09f59f55f87e00498a757391233","src/atom.rs":"a65a8dabb4080c980d3905b5d6f8087ad9b56bb4d1c9549f155a9a06e3b64afc","src/check.rs":"d60685a3053bf34b62ca474e3c3d961ffbc5ad716a7438d1d605e6085b980113","src/compare.rs":"a86d3ed29c98c58c4d5ca1e3050bed97d34328a4e5eca0ab200f6eaa70b07c46","src/emit.rs":"1cc399b9c9fcaadfbaad756674c3eb4cad9212173dbf6e3a07f5ec91680877d6","src/format.rs":"7239c0b64471d5e2d6bfb6f1259ca15759586f4529387b21da1c9d60f81e6601","src/lib.rs":"03e84c50a7dd66d9c7af5c64ee61e21b836868e5887688264fcd753cd0e7c3aa","src/parse.rs":"f8d688bc46d1b54e910be31e92866956ca0156bad60cc077f7857d58b6dfaf3d","src/visit.rs":"51ccba6c94d0053030ee41e155a127cd5a1245f8f2010dcf7ad690b1788d851d","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/order.rs":"f1f6cc82da212bcc67d40869a0df29cc9ff5bf13a3aba09897bec5837b543b22","tests/stable.rs":"1c44792c3dcb9c99d6e74aa2eae30379c3ccbc920e07100933b8a1beae647d40","tests/ui/enum.rs":"dc9cbc89232d0e1ae99bda38328ab8fbaa59f7c30034d3f3db851bdb21c0f319","tests/ui/enum.stderr":"25aaacabf55bd52a73ed585dffd6b07d1a51bd3aaad49f2d30910c4aad78ddab","tests/ui/let-stable.rs":"7056943405ac5433eae4a306ddd886c8b68585ceea1b27175e51cc1d4c6c69b6","tests/ui/let-stable.stderr":"dfa443d7e5e312498b260977f26fd98da56489729c60c4254ee6123752fd6cd4","tests/ui/let-unstable.rs":"c11ce9c83584efabafe9f05f8e5728b276f269f705af3efd532984efa512c5c4","tests/ui/let-unstable.stderr":"fd6d3438a865b2ca03e3a7066858ae6976736f09a94e84267e2863eb6058572b","tests/ui/match-stable.rs":"200b23f0eb841b827c4ae928d47a21513edc89248cb4a68e549a57180119a4e2","tests/ui/match-stable.stderr":"45b8f64c3cc16c6a8e74a5cdc808bd6c444269d8abde82b85285887fc780f01b","tests/ui/match-unstable.rs":"175fbad0431fa248508175de18f9bb59f518609a75bbe9ba553131ba755db598","tests/ui/match-unstable.stderr":"236514a469c04bfd2c833b98ff740fb651cef58968cb9ff8e3d6d63d1fa1fa47","tests/ui/repeat.rs":"9cc6c49e2a4e1b18e89650cf2f9f8755cade66b52edba17ae57b1b0a2fbdb512","tests/ui/repeat.stderr":"319b454b42edbc62a64cf3afcf40cc865a491e768577073dcf2b8cf6734fee95","tests/ui/struct.rs":"a2aeea7a29c74dc76829bcc4126d21f3f0086e4cc4c456833a01c3fb497c5dbb","tests/ui/struct.stderr":"aace27891cf6ac82fe4b705cd2f7a7275b408a85848b682730e22ec2fcc33a01","tests/ui/unnamed-fields.rs":"a9dd904fbfd1b3678c0d4024bcc285d6ecaffd902b297644043ef37e4187d60e","tests/ui/unnamed-fields.stderr":"ede05b50e557369a98be913375714540c04e33e0c67a06e073ebb1f4bdefbf24","tests/ui/unsorted-enum.rs":"43452ce86c9e142f54cbd030eb5f7a21b996dc39c23deaf12f11c3ab1cd81998","tests/ui/unsorted-enum.stderr":"7707ef9f1e76c643e4bc8daca497c6e686a0ffc5dc284ed0a5784d1596bd2839","tests/ui/unsorted-match-stable.rs":"2ebc8ec162d0179f78b9350c516eee526684eb80412feb1d29a086f07f9e471d","tests/ui/unsorted-match-stable.stderr":"88001434fe35cd783d31feee13f6b450f5d0e27848954845af896bed067a9b73","tests/ui/unsorted-match-unstable.rs":"9039b3b2df62a1025ed810baa894a69a918c23c6afca05f6f11cd418f8867378","tests/ui/unsorted-match-unstable.stderr":"c5d8ed5edf9562e746c3665d45346502435c7fe0cecae61b7a37716bba044e40","tests/ui/unsorted-struct.rs":"daf24ceb1a35803e0b71a9f9ef0840ef338e5afc1480a63768781d9243655fcd","tests/ui/unsorted-struct.stderr":"e334c74c8f1baa01c65c32ac39132cfb15efdb94f657aac09a32fcddefba5d46","tests/ui/unsupported.rs":"fa25bf6bc27dad24d7a2fb23942dc5c3a35058406064bd107b662354918c80a5","tests/ui/unsupported.stderr":"6f9a56e228143ee60b1e36d761b8050f09cdf4d2209dab0749215ca9c5774107","tests/unstable.rs":"7681308f7adae7c8b60b2b49fcf7759a1acc31316867467da108b86a78ce9269"}}
\ No newline at end of file
diff --git a/crates/remain/cargo_embargo.json b/crates/remain/cargo_embargo.json
index b5c7065..b65af89 100644
--- a/crates/remain/cargo_embargo.json
+++ b/crates/remain/cargo_embargo.json
@@ -10,5 +10,6 @@
"device_supported": false
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rusb/.android-checksum.json b/crates/rusb/.android-checksum.json
index 04381f1..a310c74 100644
--- a/crates/rusb/.android-checksum.json
+++ b/crates/rusb/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9ed7ac97f31e0dc01e9a500a1b20e37e58be9656f020b580bc39443c39fafb47","Android.bp":"c6707e1cc419784618ace1c298cd158245460b905aec4ebcea1944a0a3ca2582","CHANGELOG.md":"2720bd33dcd60974619ce342aec011478e38e8f9958de3fa3e397e9688764a29","Cargo.lock":"2849f48bb1016955894dcd59649244baaf011adde7a12de7fcdec695bdbdbe01","Cargo.toml":"58086ef9e5acdd579c7f764341ee6f5829eeae3be1341e88d04ee7f47cece559","LICENSE":"e8eb6936b649c573dbf8acdf063b5e2720f3f601146881aa96c8e915e66f2b97","METADATA":"52d5b0c7b20facd80d319c19c77591857152868fd468a305e302a92b2965b6ee","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b8b3e4a4498af44623e4dbe93bb60788e3b38ad8b1473ea0a189957780250bfb","build.rs":"ae7f1bc3ea4bb404eb3cc1852a0600601863bc636642af21b2ec1b31997eee97","cargo_embargo.json":"8fbf0f5dcdddf5a56988d66653854d559c3294d32e4e209ba2be37005806091a","examples/hotplug.rs":"7629002626d0b50a7eb8e91a0d2b5744f58108062518d90c7c026cf472d78cbd","examples/libusb_info.rs":"22a835feae931e66c9346f33b3a0cb7f650f31cae73e8ece9d65734d5cf2654f","examples/list_devices.rs":"0a2f9ce4a65c9ab1c834f789a82a8944f53d412b5c2f008364c98012d593fdf7","examples/read_device.rs":"ec6b2e11fb3afbc7f4dd79c81c8fac10fa57f51d1fa6f4d416ee1e41c956e5f5","module_block_platform.bp.fragment":"1f1dca03d83cd63295c77b7c73d9b920a96ee630e25b077e4b8377fb15bebbaf","src/config_descriptor.rs":"aef69d3a9b9fbe10de7b93ea315aaec6cc41a174183d7867097de7555741afe2","src/context.rs":"0482ac4cde3df8cab0032c818da0b412c3c4e02e33c49bbccd087e760fda1e8a","src/device.rs":"1b4c33fbc91e355d8779e017f8f0e846da5e5c31080e4792a356ec4f7dd92cfc","src/device_descriptor.rs":"835c73f8258a0a6f00570171ab7d0f335f9efcdfb3f9ce90c405c21ce7aab0d1","src/device_handle.rs":"e5bb6366b81d6f4c3ce504dc275e68b4872ece815fbade48ae7c3b32f85e90f6","src/device_list.rs":"6da1665ed83c6714b45afa85736f77605161c9f99d4ae0a6dc00a1beca6c2a2d","src/endpoint_descriptor.rs":"618a53650bcdad1f501554745e2f5957d5f62cce5a5a8df53d521b46256d7a9f","src/error.rs":"3732989a0440fabc60312c0f4c3e471d0e39fdea18d21ea499dd74f71ba35e72","src/fields.rs":"8fdca6116d206261cf609169b1b0ecf349c67ed33c604bffca4fa98e4ec7a2d3","src/hotplug.rs":"0f6979d51933833c33b452f6d57bdffd81a19591d4c7e5e5a6d59a5533830c41","src/interface_descriptor.rs":"36b58ced9695e51b5ddc34f062f00865e09469876004ca7106dff600b7e7e422","src/language.rs":"7699e3cf43548ee935848b966d2e3090c2300c7aa8dc4236219c6b12f9430744","src/lib.rs":"fd17df23cad2ff4d3596936e093ad9ae7bccdf3828ddf2ce40ae79539b623031","src/options.rs":"d0b36f17a923edf972cb956399462160ed002413147b752d3ec257090e29b785","src/test_helpers.rs":"881cdd1a6009b77e5c527e7d04091d2a37ab2033fb75c7f1b01ee68f1f76391c","src/version.rs":"0a74355c8cfaf2d8bf07f218a0c1f80d096b422fc4aa9929be0c6c8d642228b6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9ed7ac97f31e0dc01e9a500a1b20e37e58be9656f020b580bc39443c39fafb47","Android.bp":"6d78854f13a70502e36905e3fbe43749c5edcbaaa52994add3460cb4bfb90485","CHANGELOG.md":"2720bd33dcd60974619ce342aec011478e38e8f9958de3fa3e397e9688764a29","Cargo.lock":"2849f48bb1016955894dcd59649244baaf011adde7a12de7fcdec695bdbdbe01","Cargo.toml":"58086ef9e5acdd579c7f764341ee6f5829eeae3be1341e88d04ee7f47cece559","LICENSE":"e8eb6936b649c573dbf8acdf063b5e2720f3f601146881aa96c8e915e66f2b97","METADATA":"52d5b0c7b20facd80d319c19c77591857152868fd468a305e302a92b2965b6ee","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b8b3e4a4498af44623e4dbe93bb60788e3b38ad8b1473ea0a189957780250bfb","build.rs":"ae7f1bc3ea4bb404eb3cc1852a0600601863bc636642af21b2ec1b31997eee97","cargo_embargo.json":"39c2a1ac40aabfbfe73a86399bb1104dfe55ca8be4e119315183b0b32d6d892d","examples/hotplug.rs":"7629002626d0b50a7eb8e91a0d2b5744f58108062518d90c7c026cf472d78cbd","examples/libusb_info.rs":"22a835feae931e66c9346f33b3a0cb7f650f31cae73e8ece9d65734d5cf2654f","examples/list_devices.rs":"0a2f9ce4a65c9ab1c834f789a82a8944f53d412b5c2f008364c98012d593fdf7","examples/read_device.rs":"ec6b2e11fb3afbc7f4dd79c81c8fac10fa57f51d1fa6f4d416ee1e41c956e5f5","module_block_platform.bp.fragment":"1f1dca03d83cd63295c77b7c73d9b920a96ee630e25b077e4b8377fb15bebbaf","src/config_descriptor.rs":"aef69d3a9b9fbe10de7b93ea315aaec6cc41a174183d7867097de7555741afe2","src/context.rs":"0482ac4cde3df8cab0032c818da0b412c3c4e02e33c49bbccd087e760fda1e8a","src/device.rs":"1b4c33fbc91e355d8779e017f8f0e846da5e5c31080e4792a356ec4f7dd92cfc","src/device_descriptor.rs":"835c73f8258a0a6f00570171ab7d0f335f9efcdfb3f9ce90c405c21ce7aab0d1","src/device_handle.rs":"e5bb6366b81d6f4c3ce504dc275e68b4872ece815fbade48ae7c3b32f85e90f6","src/device_list.rs":"6da1665ed83c6714b45afa85736f77605161c9f99d4ae0a6dc00a1beca6c2a2d","src/endpoint_descriptor.rs":"618a53650bcdad1f501554745e2f5957d5f62cce5a5a8df53d521b46256d7a9f","src/error.rs":"3732989a0440fabc60312c0f4c3e471d0e39fdea18d21ea499dd74f71ba35e72","src/fields.rs":"8fdca6116d206261cf609169b1b0ecf349c67ed33c604bffca4fa98e4ec7a2d3","src/hotplug.rs":"0f6979d51933833c33b452f6d57bdffd81a19591d4c7e5e5a6d59a5533830c41","src/interface_descriptor.rs":"36b58ced9695e51b5ddc34f062f00865e09469876004ca7106dff600b7e7e422","src/language.rs":"7699e3cf43548ee935848b966d2e3090c2300c7aa8dc4236219c6b12f9430744","src/lib.rs":"fd17df23cad2ff4d3596936e093ad9ae7bccdf3828ddf2ce40ae79539b623031","src/options.rs":"d0b36f17a923edf972cb956399462160ed002413147b752d3ec257090e29b785","src/test_helpers.rs":"881cdd1a6009b77e5c527e7d04091d2a37ab2033fb75c7f1b01ee68f1f76391c","src/version.rs":"0a74355c8cfaf2d8bf07f218a0c1f80d096b422fc4aa9929be0c6c8d642228b6"}}
\ No newline at end of file
diff --git a/crates/rusb/Android.bp b/crates/rusb/Android.bp
index ccc9354..89b7735 100644
--- a/crates/rusb/Android.bp
+++ b/crates/rusb/Android.bp
@@ -30,6 +30,7 @@
"//apex_available:anyapex",
],
vendor_available: true,
+ min_sdk_version: "29",
}
rust_library {
@@ -49,6 +50,7 @@
"//apex_available:anyapex",
],
vendor_available: true,
+ min_sdk_version: "29",
// The 'librusb_platform' rust_library should be depended upon only
// by programs running on Android at OS level (e.g. Android platform
// services). The reason is that it has a transitive dependency on
diff --git a/crates/rusb/cargo_embargo.json b/crates/rusb/cargo_embargo.json
index 5fd4473..bc5b274 100644
--- a/crates/rusb/cargo_embargo.json
+++ b/crates/rusb/cargo_embargo.json
@@ -8,11 +8,12 @@
"librusb": "librusb_platform",
"liblibusb1_sys": "liblibusb1_sys_platform"
},
- "package" : {
+ "package": {
"rusb": {
"add_module_block": "module_block_platform.bp.fragment"
}
}
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rustc-hash/.android-checksum.json b/crates/rustc-hash/.android-checksum.json
index 94c1965..b80a4f6 100644
--- a/crates/rustc-hash/.android-checksum.json
+++ b/crates/rustc-hash/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3606361efc3fa51e1fac1e2eddaa93ff6c22c404759e863c628ea4379c47ed64","Android.bp":"66110e7c2b52939760daf5c31fe072085cc14e825a96bb076317355f8fafb71f","CHANGELOG.md":"bcdb80531bdc164feb011b8134f328b9720d36ad75a5bd6ad55a8f4ea782e01d","CODE_OF_CONDUCT.md":"96d570db292913a1a207285a5c381989e9422657cd6a129298e3bb8e4530d17c","Cargo.toml":"ba5aece204389a07158ceb3dd3bb1d5db1daf3893871ae0a42486d80791fc31e","LICENSE":"7cf57fcef46b57c6743c9a325624d9dfd451733414e287e3fb2e523dafd1270a","LICENSE-APACHE":"7cf57fcef46b57c6743c9a325624d9dfd451733414e287e3fb2e523dafd1270a","METADATA":"a7c77fd341421fa2e5505cd4074830b3b554e17081936a83fd3902e26bf8626c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"791315d61e78ffdceef7ef433c52e9de90fb827ad53beba618b29f80895aff46","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"0303ff93a8b5126ce154f37c1778b74e5f3cc2bb4dc2f0e8848911d506251f87","src/random_state.rs":"55d634828094a6ee94c434bd752ed728fa8ea3893faacc69dfc492b8fe0747a1","src/seeded_state.rs":"153abf487b064a1e407218f16649449c209c9f133627e0194aa53fe699095df1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3606361efc3fa51e1fac1e2eddaa93ff6c22c404759e863c628ea4379c47ed64","Android.bp":"1c2901e1fbd8c61ea75b008c51cee906f4a4f99cd4ad15e636a722bb500bd2b6","CHANGELOG.md":"bcdb80531bdc164feb011b8134f328b9720d36ad75a5bd6ad55a8f4ea782e01d","CODE_OF_CONDUCT.md":"96d570db292913a1a207285a5c381989e9422657cd6a129298e3bb8e4530d17c","Cargo.toml":"ba5aece204389a07158ceb3dd3bb1d5db1daf3893871ae0a42486d80791fc31e","LICENSE":"7cf57fcef46b57c6743c9a325624d9dfd451733414e287e3fb2e523dafd1270a","LICENSE-APACHE":"7cf57fcef46b57c6743c9a325624d9dfd451733414e287e3fb2e523dafd1270a","METADATA":"a7c77fd341421fa2e5505cd4074830b3b554e17081936a83fd3902e26bf8626c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"791315d61e78ffdceef7ef433c52e9de90fb827ad53beba618b29f80895aff46","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"0303ff93a8b5126ce154f37c1778b74e5f3cc2bb4dc2f0e8848911d506251f87","src/random_state.rs":"55d634828094a6ee94c434bd752ed728fa8ea3893faacc69dfc492b8fe0747a1","src/seeded_state.rs":"153abf487b064a1e407218f16649449c209c9f133627e0194aa53fe699095df1"}}
\ No newline at end of file
diff --git a/crates/rustc-hash/Android.bp b/crates/rustc-hash/Android.bp
index 6921938..3bbc31d 100644
--- a/crates/rustc-hash/Android.bp
+++ b/crates/rustc-hash/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/rustc-hash/cargo_embargo.json b/crates/rustc-hash/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/rustc-hash/cargo_embargo.json
+++ b/crates/rustc-hash/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rustc-stable-hash/.android-checksum.json b/crates/rustc-stable-hash/.android-checksum.json
new file mode 100644
index 0000000..c64f415
--- /dev/null
+++ b/crates/rustc-stable-hash/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"7fb461b17c92be5731b0db45437b5de36e467ae889a88a1d522efaa0481ff89a","Android.bp":"fc458b0f6b7dee294525fe386c725cd25f6dcd2dada67fefc4bd2954d465c99e","CHANGELOG.md":"49c5c99ba2fb0f5d33b32240e897caf6dd490ebadf6905b476cefb60a7295881","CODE_OF_CONDUCT.md":"92218933b3f39b8c9edf74a869f7b5afabff99f6a0fcb7818388c3388fc68fd3","Cargo.toml":"d6ca5c0a44a7eb3580797935b1e82f905b4e9813622d494eaa2577f73ecb5715","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"649cde6cac94834e6b35ae4e1336578fcd5fdfd66b40e9a89dc3ad586e0c41dd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7ddad36c4e72ff87e517ceb4f96d89af7ab46b7c7a8d01376cef4ca482952251","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/int_overflow.rs":"94a4d216af1229bcbf49aa335c84eb7c3b94daed1de52144f8ab8cdfdddb1516","src/lib.rs":"9ba205b7bed93920f689ffc9838180db360665d16db06a4a45867b19b854b4e7","src/sip128.rs":"0098e897851b584a8d1ea98754fc995ea1227c77cca8aaefca1a6b7184531cf1","src/sip128/tests.rs":"19ffe3ce5cf649d3722774e964dad147207a16f94fb9709bbcb295a009e1d1cd","src/stable_hasher.rs":"7165cca5f6062dc4a59b654652a6f74f5fb7bb07cef06a67ebd362d1203318b7","src/stable_hasher/tests.rs":"fb4d8269cfbfd485a761334ec3affeb5827a4aa0e858faa0791df3a8f1221786"}}
\ No newline at end of file
diff --git a/crates/rustc-stable-hash/.cargo-checksum.json b/crates/rustc-stable-hash/.cargo-checksum.json
new file mode 100644
index 0000000..9c8ef0a
--- /dev/null
+++ b/crates/rustc-stable-hash/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"d655fa6c105851e32771d64a81578372f15822e3f5e0457d167888f516461c5e","CODE_OF_CONDUCT.md":"3c4d1c4de2e6991695f5dc495f7530ecb188dfafdb1f47a1323ce7159987accd","Cargo.toml":"1fc92d17c00c9ac3bc650ab1ff2db21cfb615a059b259e10df183adb2330207b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"89f8b8a1143f5f7bfdb4cb66e662e2b37c56508271674ff8b6762cb4b429d2a1","src/int_overflow.rs":"3a5e3ff4de386defc281622a3f59d3236d38fb42345392e94170dbfb7b226fc9","src/lib.rs":"732f294d3218247ec05d4c97faebbe8216e0c79fb7c713fc795db40ebedbc5c2","src/sip128.rs":"bb161847ce20d12f259f5e8a1be984cb4ddd4010c89836b928a4ab8708cf4e43","src/sip128/tests.rs":"78bbe4215a0017cd83ccb83af636b93c9893a51a88da839eacfc2da2a06dcd0b","src/stable_hasher.rs":"9de0f4d669362dcc2b77d38b45760b285d3db8ed091d3e6a2d4a98cdfc1756b7","src/stable_hasher/tests.rs":"2a169b419aff453a34b0a3bab43a3aa792beb91c19bc07dd741abe5557df5376"},"package":"781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08"}
\ No newline at end of file
diff --git a/crates/rustc-stable-hash/Android.bp b/crates/rustc-stable-hash/Android.bp
new file mode 100644
index 0000000..f7f8b47
--- /dev/null
+++ b/crates/rustc-stable-hash/Android.bp
@@ -0,0 +1,31 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_rustc-stable-hash_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_rustc-stable-hash_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "librustc_stable_hash",
+ host_supported: true,
+ crate_name: "rustc_stable_hash",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.1.2",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/rustc-stable-hash/CHANGELOG.md b/crates/rustc-stable-hash/CHANGELOG.md
new file mode 100644
index 0000000..7e9254c
--- /dev/null
+++ b/crates/rustc-stable-hash/CHANGELOG.md
@@ -0,0 +1,26 @@
+# Unreleased
+
+# 0.1.2
+
+- Fix `<StableSipHasher128 as Hasher>::finish` not being platform agnostic [#12][pr12]
+
+[pr12]: https://github.com/rust-lang/rustc-stable-hash/pull/12
+
+# 0.1.1
+
+- feat: derive `Clone` for `StableHasher` [#11][pr11]
+
+[pr11]: https://github.com/rust-lang/rustc-stable-hash/pull/11
+
+# 0.1.0
+
+- Rename `StableHasherResult` to `FromStableHash` [#8][pr8]
+- Use new-type for returned-hash of `SipHasher128`(`Hash`) [#8][pr8]
+- Introduce multi hasher support [#8][pr8]
+- `StableHasher::finish` now returns a small hash instead of being fatal [#6][pr6]
+- Remove `StableHasher::finalize` [#4][pr4]
+- Import stable hasher implementation from rustc ([db8aca48129](https://github.com/rust-lang/rust/blob/db8aca48129d86b2623e3ac8cbcf2902d4d313ad/compiler/rustc_data_structures/src/))
+
+[pr8]: https://github.com/rust-lang/rustc-stable-hash/pull/8
+[pr6]: https://github.com/rust-lang/rustc-stable-hash/pull/6
+[pr4]: https://github.com/rust-lang/rustc-stable-hash/pull/4
diff --git a/crates/rustc-stable-hash/CODE_OF_CONDUCT.md b/crates/rustc-stable-hash/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..e3708bc
--- /dev/null
+++ b/crates/rustc-stable-hash/CODE_OF_CONDUCT.md
@@ -0,0 +1,3 @@
+# The Rust Code of Conduct
+
+The Code of Conduct for this repository [can be found online](https://www.rust-lang.org/conduct.html).
diff --git a/crates/rustc-stable-hash/Cargo.toml b/crates/rustc-stable-hash/Cargo.toml
new file mode 100644
index 0000000..8246756
--- /dev/null
+++ b/crates/rustc-stable-hash/Cargo.toml
@@ -0,0 +1,32 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "rustc-stable-hash"
+version = "0.1.2"
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A stable hashing algorithm used by rustc"
+readme = "README.md"
+license = "Apache-2.0 OR MIT"
+repository = "https://github.com/rust-lang/rustc-stable-hash"
+
+[features]
+nightly = []
+
+[lib]
+name = "rustc_stable_hash"
+path = "src/lib.rs"
diff --git a/crates/rustc-stable-hash/LICENSE b/crates/rustc-stable-hash/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/rustc-stable-hash/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/rustc-stable-hash/LICENSE-APACHE b/crates/rustc-stable-hash/LICENSE-APACHE
new file mode 100644
index 0000000..1b5ec8b
--- /dev/null
+++ b/crates/rustc-stable-hash/LICENSE-APACHE
@@ -0,0 +1,176 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/crates/rustc-stable-hash/METADATA b/crates/rustc-stable-hash/METADATA
new file mode 100644
index 0000000..930bcb3
--- /dev/null
+++ b/crates/rustc-stable-hash/METADATA
@@ -0,0 +1,17 @@
+name: "rustc-stable-hash"
+description: "A stable hashing algorithm used by rustc"
+third_party {
+ version: "0.1.2"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 19
+ }
+ homepage: "https://crates.io/crates/rustc-stable-hash"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/rustc-stable-hash/rustc-stable-hash-0.1.2.crate"
+ version: "0.1.2"
+ }
+}
diff --git a/crates/rustc-stable-hash/MODULE_LICENSE_APACHE2 b/crates/rustc-stable-hash/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/rustc-stable-hash/MODULE_LICENSE_APACHE2
diff --git a/crates/rustc-stable-hash/README.md b/crates/rustc-stable-hash/README.md
new file mode 100644
index 0000000..548ff21
--- /dev/null
+++ b/crates/rustc-stable-hash/README.md
@@ -0,0 +1,32 @@
+# rustc-stable-hash
+
+[](https://crates.io/crates/rustc-stable-hash)
+[](https://docs.rs/rustc-stable-hash)
+
+A stable hashing algorithm used by `rustc`: cross-platform, deterministic, not secure.
+
+This crate provides facilities with the `StableHasher` structure to create stable hashers over *unstable* hashers by abstracting over them the handling of endian-ness and the target `usize`/`isize` bit size difference.
+
+Currently, this crate provides it's own implementation of 128-bit `SipHasher`: `SipHasher128`; with `StableSipHasher128` for the stable variant.
+
+## Usage
+
+```rust
+use rustc_stable_hash::hashers::{StableSipHasher128, SipHasher128Hash};
+use rustc_stable_hash::FromStableHash;
+use std::hash::Hasher;
+
+struct Hash128([u64; 2]);
+impl FromStableHash for Hash128 {
+ type Hash = SipHasher128Hash;
+
+ fn from(SipHasher128Hash(hash): SipHasher128Hash) -> Hash128 {
+ Hash128(hash)
+ }
+}
+
+let mut hasher = StableSipHasher128::new();
+hasher.write_usize(0xFA);
+
+let hash: Hash128 = hasher.finish();
+```
diff --git a/crates/rustc-stable-hash/cargo_embargo.json b/crates/rustc-stable-hash/cargo_embargo.json
new file mode 100644
index 0000000..b6c35c7
--- /dev/null
+++ b/crates/rustc-stable-hash/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/rustc-stable-hash/src/int_overflow.rs b/crates/rustc-stable-hash/src/int_overflow.rs
new file mode 100644
index 0000000..716942f
--- /dev/null
+++ b/crates/rustc-stable-hash/src/int_overflow.rs
@@ -0,0 +1,81 @@
+//! Weaker version of `-Coverflow-checks`.
+
+// FIXME: These two traits seems overkill for this crate, we should probably
+// replace these by two simple free floating function instead since we only
+// operate on `usize`.
+
+/// Addition, but only overflow checked when `cfg(debug_assertions)` is set
+/// instead of respecting `-Coverflow-checks`.
+///
+/// This exists for performance reasons, as we ship rustc with overflow checks.
+/// While overflow checks are perf neutral in almost all of the compiler, there
+/// are a few particularly hot areas where we don't want overflow checks in our
+/// dist builds. Overflow is still a bug there, so we want overflow check for
+/// builds with debug assertions.
+///
+/// That's a long way to say that this should be used in areas where overflow
+/// is a bug but overflow checking is too slow.
+pub(crate) trait DebugStrictAdd {
+ /// See [`DebugStrictAdd`].
+ fn debug_strict_add(self, other: Self) -> Self;
+}
+
+macro_rules! impl_debug_strict_add {
+ ($( $ty:ty )*) => {
+ $(
+ impl DebugStrictAdd for $ty {
+ fn debug_strict_add(self, other: Self) -> Self {
+ if cfg!(debug_assertions) {
+ self + other
+ } else {
+ self.wrapping_add(other)
+ }
+ }
+ }
+ )*
+ };
+}
+
+/// See [`DebugStrictAdd`].
+pub(crate) trait DebugStrictSub {
+ /// See [`DebugStrictAdd`].
+ fn debug_strict_sub(self, other: Self) -> Self;
+}
+
+macro_rules! impl_debug_strict_sub {
+ ($( $ty:ty )*) => {
+ $(
+ impl DebugStrictSub for $ty {
+ fn debug_strict_sub(self, other: Self) -> Self {
+ if cfg!(debug_assertions) {
+ self - other
+ } else {
+ self.wrapping_sub(other)
+ }
+ }
+ }
+ )*
+ };
+}
+
+impl_debug_strict_add! {
+ usize
+}
+
+/*
+impl_debug_strict_add! {
+ u8 u16 u32 u64 u128 usize
+ i8 i16 i32 i64 i128 isize
+}
+*/
+
+impl_debug_strict_sub! {
+ usize
+}
+
+/*
+impl_debug_strict_sub! {
+ u8 u16 u32 u64 u128 usize
+ i8 i16 i32 i64 i128 isize
+}
+*/
diff --git a/crates/rustc-stable-hash/src/lib.rs b/crates/rustc-stable-hash/src/lib.rs
new file mode 100644
index 0000000..e68d2d1
--- /dev/null
+++ b/crates/rustc-stable-hash/src/lib.rs
@@ -0,0 +1,35 @@
+//! A stable hashing algorithm used by rustc
+
+#![cfg_attr(feature = "nightly", feature(hasher_prefixfree_extras))]
+#![deny(clippy::missing_safety_doc)]
+#![deny(unsafe_op_in_unsafe_fn)]
+#![deny(unreachable_pub)]
+
+mod int_overflow;
+mod sip128;
+mod stable_hasher;
+
+/// Hashers collection
+pub mod hashers {
+ #[doc(inline)]
+ pub use super::sip128::{SipHasher128, SipHasher128Hash};
+
+ /// Stable 128-bits Sip Hasher
+ ///
+ /// [`StableHasher`] version of [`SipHasher128`].
+ ///
+ /// [`StableHasher`]: super::StableHasher
+ pub type StableSipHasher128 = super::StableHasher<SipHasher128>;
+}
+
+#[doc(inline)]
+pub use stable_hasher::StableHasher;
+
+#[doc(inline)]
+pub use stable_hasher::FromStableHash;
+
+#[doc(inline)]
+pub use stable_hasher::ExtendedHasher;
+
+#[doc(inline)]
+pub use hashers::{SipHasher128Hash, StableSipHasher128};
diff --git a/crates/rustc-stable-hash/src/sip128.rs b/crates/rustc-stable-hash/src/sip128.rs
new file mode 100644
index 0000000..6b5d79b
--- /dev/null
+++ b/crates/rustc-stable-hash/src/sip128.rs
@@ -0,0 +1,551 @@
+//! This is a copy of `core::hash::sip` adapted to providing 128 bit hashes.
+
+// This code is very hot and uses lots of arithmetic, avoid overflow checks for performance.
+// See https://github.com/rust-lang/rust/pull/119440#issuecomment-1874255727
+use crate::int_overflow::{DebugStrictAdd, DebugStrictSub};
+use crate::ExtendedHasher;
+
+use std::hash::Hasher;
+use std::mem::{self, MaybeUninit};
+use std::ptr;
+
+#[cfg(test)]
+mod tests;
+
+// The SipHash algorithm operates on 8-byte chunks.
+const ELEM_SIZE: usize = mem::size_of::<u64>();
+
+// Size of the buffer in number of elements, not including the spill.
+//
+// The selection of this size was guided by rustc-perf benchmark comparisons of
+// different buffer sizes. It should be periodically reevaluated as the compiler
+// implementation and input characteristics change.
+//
+// Using the same-sized buffer for everything we hash is a performance versus
+// complexity tradeoff. The ideal buffer size, and whether buffering should even
+// be used, depends on what is being hashed. It may be worth it to size the
+// buffer appropriately (perhaps by making SipHasher128 generic over the buffer
+// size) or disable buffering depending on what is being hashed. But at this
+// time, we use the same buffer size for everything.
+const BUFFER_CAPACITY: usize = 8;
+
+// Size of the buffer in bytes, not including the spill.
+const BUFFER_SIZE: usize = BUFFER_CAPACITY * ELEM_SIZE;
+
+// Size of the buffer in number of elements, including the spill.
+const BUFFER_WITH_SPILL_CAPACITY: usize = BUFFER_CAPACITY + 1;
+
+// Size of the buffer in bytes, including the spill.
+const BUFFER_WITH_SPILL_SIZE: usize = BUFFER_WITH_SPILL_CAPACITY * ELEM_SIZE;
+
+// Index of the spill element in the buffer.
+const BUFFER_SPILL_INDEX: usize = BUFFER_WITH_SPILL_CAPACITY - 1;
+
+/// Hashing result of [`SipHasher128`]
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct SipHasher128Hash(pub [u64; 2]);
+
+#[derive(Debug, Clone)]
+#[repr(C)]
+pub struct SipHasher128 {
+ // The access pattern during hashing consists of accesses to `nbuf` and
+ // `buf` until the buffer is full, followed by accesses to `state` and
+ // `processed`, and then repetition of that pattern until hashing is done.
+ // This is the basis for the ordering of fields below. However, in practice
+ // the cache miss-rate for data access is extremely low regardless of order.
+ nbuf: usize, // how many bytes in buf are valid
+ buf: [MaybeUninit<u64>; BUFFER_WITH_SPILL_CAPACITY], // unprocessed bytes le
+ state: State, // hash State
+ processed: usize, // how many bytes we've processed
+}
+
+#[derive(Debug, Clone, Copy)]
+#[repr(C)]
+struct State {
+ // v0, v2 and v1, v3 show up in pairs in the algorithm,
+ // and simd implementations of SipHash will use vectors
+ // of v02 and v13. By placing them in this order in the struct,
+ // the compiler can pick up on just a few simd optimizations by itself.
+ v0: u64,
+ v2: u64,
+ v1: u64,
+ v3: u64,
+}
+
+macro_rules! compress {
+ ($state:expr) => {{
+ compress!($state.v0, $state.v1, $state.v2, $state.v3)
+ }};
+ ($v0:expr, $v1:expr, $v2:expr, $v3:expr) => {{
+ $v0 = $v0.wrapping_add($v1);
+ $v2 = $v2.wrapping_add($v3);
+ $v1 = $v1.rotate_left(13);
+ $v1 ^= $v0;
+ $v3 = $v3.rotate_left(16);
+ $v3 ^= $v2;
+ $v0 = $v0.rotate_left(32);
+
+ $v2 = $v2.wrapping_add($v1);
+ $v0 = $v0.wrapping_add($v3);
+ $v1 = $v1.rotate_left(17);
+ $v1 ^= $v2;
+ $v3 = $v3.rotate_left(21);
+ $v3 ^= $v0;
+ $v2 = $v2.rotate_left(32);
+ }};
+}
+
+// Copies up to 8 bytes from source to destination. This performs better than
+// `ptr::copy_nonoverlapping` on microbenchmarks and may perform better on real
+// workloads since all of the copies have fixed sizes and avoid calling memcpy.
+//
+// This is specifically designed for copies of up to 8 bytes, because that's the
+// maximum of number bytes needed to fill an 8-byte-sized element on which
+// SipHash operates. Note that for variable-sized copies which are known to be
+// less than 8 bytes, this function will perform more work than necessary unless
+// the compiler is able to optimize the extra work away.
+#[inline]
+unsafe fn copy_nonoverlapping_small(src: *const u8, dst: *mut u8, count: usize) {
+ debug_assert!(count <= 8);
+
+ unsafe {
+ if count == 8 {
+ ptr::copy_nonoverlapping(src, dst, 8);
+ return;
+ }
+
+ let mut i = 0;
+ if i.debug_strict_add(3) < count {
+ ptr::copy_nonoverlapping(src.add(i), dst.add(i), 4);
+ i = i.debug_strict_add(4);
+ }
+
+ if i.debug_strict_add(1) < count {
+ ptr::copy_nonoverlapping(src.add(i), dst.add(i), 2);
+ i = i.debug_strict_add(2)
+ }
+
+ if i < count {
+ *dst.add(i) = *src.add(i);
+ i = i.debug_strict_add(1);
+ }
+
+ debug_assert_eq!(i, count);
+ }
+}
+
+// # Implementation
+//
+// This implementation uses buffering to reduce the hashing cost for inputs
+// consisting of many small integers. Buffering simplifies the integration of
+// integer input--the integer write function typically just appends to the
+// buffer with a statically sized write, updates metadata, and returns.
+//
+// Buffering also prevents alternating between writes that do and do not trigger
+// the hashing process. Only when the entire buffer is full do we transition
+// into hashing. This allows us to keep the hash state in registers for longer,
+// instead of loading and storing it before and after processing each element.
+//
+// When a write fills the buffer, a buffer processing function is invoked to
+// hash all of the buffered input. The buffer processing functions are marked
+// `#[inline(never)]` so that they aren't inlined into the append functions,
+// which ensures the more frequently called append functions remain inlineable
+// and don't include register pushing/popping that would only be made necessary
+// by inclusion of the complex buffer processing path which uses those
+// registers.
+//
+// The buffer includes a "spill"--an extra element at the end--which simplifies
+// the integer write buffer processing path. The value that fills the buffer can
+// be written with a statically sized write that may spill over into the spill.
+// After the buffer is processed, the part of the value that spilled over can be
+// written from the spill to the beginning of the buffer with another statically
+// sized write. This write may copy more bytes than actually spilled over, but
+// we maintain the metadata such that any extra copied bytes will be ignored by
+// subsequent processing. Due to the static sizes, this scheme performs better
+// than copying the exact number of bytes needed into the end and beginning of
+// the buffer.
+//
+// The buffer is uninitialized, which improves performance, but may preclude
+// efficient implementation of alternative approaches. The improvement is not so
+// large that an alternative approach should be disregarded because it cannot be
+// efficiently implemented with an uninitialized buffer. On the other hand, an
+// uninitialized buffer may become more important should a larger one be used.
+//
+// # Platform Dependence
+//
+// The SipHash algorithm operates on byte sequences. It parses the input stream
+// as 8-byte little-endian integers. Therefore, given the same byte sequence, it
+// produces the same result on big- and little-endian hardware.
+//
+// However, the Hasher trait has methods which operate on multi-byte integers.
+// How they are converted into byte sequences can be endian-dependent (by using
+// native byte order) or independent (by consistently using either LE or BE byte
+// order). It can also be `isize` and `usize` size dependent (by using the
+// native size), or independent (by converting to a common size), supposing the
+// values can be represented in 32 bits.
+//
+// In order to make `SipHasher128` consistent with `SipHasher` in libstd, we
+// choose to do the integer to byte sequence conversion in the platform-
+// dependent way. Clients can achieve platform-independent hashing by widening
+// `isize` and `usize` integers to 64 bits on 32-bit systems and byte-swapping
+// integers on big-endian systems before passing them to the writing functions.
+// This causes the input byte sequence to look identical on big- and little-
+// endian systems (supposing `isize` and `usize` values can be represented in 32
+// bits), which ensures platform-independent results.
+impl SipHasher128 {
+ #[inline]
+ pub fn new_with_keys(key0: u64, key1: u64) -> SipHasher128 {
+ let mut hasher = SipHasher128 {
+ nbuf: 0,
+ // HACK: Manual MaybeUninit::uninit_array, use inline const with Rust 1.79
+ buf: unsafe {
+ MaybeUninit::<[MaybeUninit<_>; BUFFER_WITH_SPILL_CAPACITY]>::uninit().assume_init()
+ },
+ state: State {
+ v0: key0 ^ 0x736f6d6570736575,
+ // The XOR with 0xee is only done on 128-bit algorithm version.
+ v1: key1 ^ (0x646f72616e646f6d ^ 0xee),
+ v2: key0 ^ 0x6c7967656e657261,
+ v3: key1 ^ 0x7465646279746573,
+ },
+ processed: 0,
+ };
+
+ unsafe {
+ // Initialize spill because we read from it in `short_write_process_buffer`.
+ *hasher.buf.get_unchecked_mut(BUFFER_SPILL_INDEX) = MaybeUninit::zeroed();
+ }
+
+ hasher
+ }
+
+ // A specialized write function for values with size <= 8 that should only
+ // be called when the write would cause the buffer to fill.
+ //
+ // SAFETY: the write of `x` into `self.buf` starting at byte offset
+ // `self.nbuf` must cause `self.buf` to become fully initialized (and not
+ // overflow) if it wasn't already.
+ #[inline(never)]
+ unsafe fn short_write_process_buffer<const LEN: usize>(&mut self, bytes: [u8; LEN]) {
+ unsafe {
+ let nbuf = self.nbuf;
+ debug_assert!(LEN <= 8);
+ debug_assert!(nbuf < BUFFER_SIZE);
+ debug_assert!(nbuf + LEN >= BUFFER_SIZE);
+ debug_assert!(nbuf + LEN < BUFFER_WITH_SPILL_SIZE);
+
+ // Copy first part of input into end of buffer, possibly into spill
+ // element. The memcpy call is optimized away because the size is known.
+ let dst = (self.buf.as_mut_ptr() as *mut u8).add(nbuf);
+ ptr::copy_nonoverlapping(bytes.as_ptr(), dst, LEN);
+
+ // Process buffer.
+ for i in 0..BUFFER_CAPACITY {
+ let elem = self.buf.get_unchecked(i).assume_init().to_le();
+ self.state.v3 ^= elem;
+ Sip13Rounds::c_rounds(&mut self.state);
+ self.state.v0 ^= elem;
+ }
+
+ // Copy remaining input into start of buffer by copying LEN - 1
+ // elements from spill (at most LEN - 1 bytes could have overflowed
+ // into the spill). The memcpy call is optimized away because the size
+ // is known. And the whole copy is optimized away for LEN == 1.
+ let dst = self.buf.as_mut_ptr() as *mut u8;
+ let src = self.buf.get_unchecked(BUFFER_SPILL_INDEX) as *const _ as *const u8;
+ ptr::copy_nonoverlapping(src, dst, LEN - 1);
+
+ // This function should only be called when the write fills the buffer.
+ // Therefore, when LEN == 1, the new `self.nbuf` must be zero.
+ // LEN is statically known, so the branch is optimized away.
+ self.nbuf = if LEN == 1 {
+ 0
+ } else {
+ nbuf.debug_strict_add(LEN).debug_strict_sub(BUFFER_SIZE)
+ };
+ self.processed = self.processed.debug_strict_add(BUFFER_SIZE);
+ }
+ }
+
+ // A write function for byte slices.
+ #[inline]
+ fn slice_write(&mut self, msg: &[u8]) {
+ let length = msg.len();
+ let nbuf = self.nbuf;
+ debug_assert!(nbuf < BUFFER_SIZE);
+
+ if nbuf.debug_strict_add(length) < BUFFER_SIZE {
+ unsafe {
+ let dst = (self.buf.as_mut_ptr() as *mut u8).add(nbuf);
+
+ if length <= 8 {
+ copy_nonoverlapping_small(msg.as_ptr(), dst, length);
+ } else {
+ // This memcpy is *not* optimized away.
+ ptr::copy_nonoverlapping(msg.as_ptr(), dst, length);
+ }
+ }
+
+ self.nbuf = nbuf.debug_strict_add(length);
+
+ return;
+ }
+
+ unsafe { self.slice_write_process_buffer(msg) }
+ }
+
+ // A write function for byte slices that should only be called when the
+ // write would cause the buffer to fill.
+ //
+ // SAFETY: `self.buf` must be initialized up to the byte offset `self.nbuf`,
+ // and `msg` must contain enough bytes to initialize the rest of the element
+ // containing the byte offset `self.nbuf`.
+ #[inline(never)]
+ unsafe fn slice_write_process_buffer(&mut self, msg: &[u8]) {
+ unsafe {
+ let length = msg.len();
+ let nbuf = self.nbuf;
+ debug_assert!(nbuf < BUFFER_SIZE);
+ debug_assert!(nbuf + length >= BUFFER_SIZE);
+
+ // Always copy first part of input into current element of buffer.
+ // This function should only be called when the write fills the buffer,
+ // so we know that there is enough input to fill the current element.
+ let valid_in_elem = nbuf % ELEM_SIZE;
+ let needed_in_elem = ELEM_SIZE.debug_strict_sub(valid_in_elem);
+
+ let src = msg.as_ptr();
+ let dst = (self.buf.as_mut_ptr() as *mut u8).add(nbuf);
+ copy_nonoverlapping_small(src, dst, needed_in_elem);
+
+ // Process buffer.
+
+ // Using `nbuf / ELEM_SIZE + 1` rather than `(nbuf + needed_in_elem) /
+ // ELEM_SIZE` to show the compiler that this loop's upper bound is > 0.
+ // We know that is true, because last step ensured we have a full
+ // element in the buffer.
+ let last = (nbuf / ELEM_SIZE).debug_strict_add(1);
+
+ for i in 0..last {
+ let elem = self.buf.get_unchecked(i).assume_init().to_le();
+ self.state.v3 ^= elem;
+ Sip13Rounds::c_rounds(&mut self.state);
+ self.state.v0 ^= elem;
+ }
+
+ // Process the remaining element-sized chunks of input.
+ let mut processed = needed_in_elem;
+ let input_left = length.debug_strict_sub(processed);
+ let elems_left = input_left / ELEM_SIZE;
+ let extra_bytes_left = input_left % ELEM_SIZE;
+
+ for _ in 0..elems_left {
+ let elem = (msg.as_ptr().add(processed) as *const u64)
+ .read_unaligned()
+ .to_le();
+ self.state.v3 ^= elem;
+ Sip13Rounds::c_rounds(&mut self.state);
+ self.state.v0 ^= elem;
+ processed = processed.debug_strict_add(ELEM_SIZE);
+ }
+
+ // Copy remaining input into start of buffer.
+ let src = msg.as_ptr().add(processed);
+ let dst = self.buf.as_mut_ptr() as *mut u8;
+ copy_nonoverlapping_small(src, dst, extra_bytes_left);
+
+ self.nbuf = extra_bytes_left;
+ self.processed = self
+ .processed
+ .debug_strict_add(nbuf.debug_strict_add(processed));
+ }
+ }
+
+ // A function for finishing the hashing.
+ //
+ // SAFETY: `buf` must be initialized up to the byte offset `nbuf`.
+ #[inline]
+ unsafe fn finish128_inner(
+ nbuf: usize,
+ buf: &mut [MaybeUninit<u64>; BUFFER_WITH_SPILL_CAPACITY],
+ mut state: State,
+ processed: usize,
+ ) -> [u64; 2] {
+ debug_assert!(nbuf < BUFFER_SIZE);
+
+ // Process full elements in buffer.
+ let last = nbuf / ELEM_SIZE;
+
+ for i in 0..last {
+ let elem = unsafe { buf.get_unchecked(i).assume_init().to_le() };
+ state.v3 ^= elem;
+ Sip13Rounds::c_rounds(&mut state);
+ state.v0 ^= elem;
+ }
+
+ // Get remaining partial element.
+ let elem = if nbuf % ELEM_SIZE != 0 {
+ unsafe {
+ // Ensure element is initialized by writing zero bytes. At most
+ // `ELEM_SIZE - 1` are required given the above check. It's safe
+ // to write this many because we have the spill and we maintain
+ // `self.nbuf` such that this write will start before the spill.
+ let dst = (buf.as_mut_ptr() as *mut u8).add(nbuf);
+ ptr::write_bytes(dst, 0, ELEM_SIZE - 1);
+ buf.get_unchecked(last).assume_init().to_le()
+ }
+ } else {
+ 0
+ };
+
+ // Finalize the hash.
+ let length = processed.debug_strict_add(nbuf);
+ let b: u64 = ((length as u64 & 0xff) << 56) | elem;
+
+ state.v3 ^= b;
+ Sip13Rounds::c_rounds(&mut state);
+ state.v0 ^= b;
+
+ state.v2 ^= 0xee;
+ Sip13Rounds::d_rounds(&mut state);
+ let l = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
+
+ state.v1 ^= 0xdd;
+ Sip13Rounds::d_rounds(&mut state);
+ let h = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
+
+ [l, h]
+ }
+}
+
+impl Default for SipHasher128 {
+ fn default() -> SipHasher128 {
+ SipHasher128::new_with_keys(0, 0)
+ }
+}
+
+impl ExtendedHasher for SipHasher128 {
+ type Hash = SipHasher128Hash;
+
+ #[inline]
+ fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN]) {
+ let nbuf = self.nbuf;
+ debug_assert!(LEN <= 8);
+ debug_assert!(nbuf < BUFFER_SIZE);
+ debug_assert!(nbuf + LEN < BUFFER_WITH_SPILL_SIZE);
+
+ if nbuf.debug_strict_add(LEN) < BUFFER_SIZE {
+ unsafe {
+ // The memcpy call is optimized away because the size is known.
+ let dst = (self.buf.as_mut_ptr() as *mut u8).add(nbuf);
+ ptr::copy_nonoverlapping(bytes.as_ptr(), dst, LEN);
+ }
+
+ self.nbuf = nbuf.debug_strict_add(LEN);
+
+ return;
+ }
+
+ unsafe { self.short_write_process_buffer(bytes) }
+ }
+
+ #[inline(always)]
+ fn finish(mut self) -> SipHasher128Hash {
+ SipHasher128Hash(unsafe {
+ SipHasher128::finish128_inner(self.nbuf, &mut self.buf, self.state, self.processed)
+ })
+ }
+}
+
+impl Hasher for SipHasher128 {
+ #[inline]
+ fn write_u8(&mut self, i: u8) {
+ self.short_write(i.to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_u16(&mut self, i: u16) {
+ self.short_write(i.to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_u32(&mut self, i: u32) {
+ self.short_write(i.to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_u64(&mut self, i: u64) {
+ self.short_write(i.to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_usize(&mut self, i: usize) {
+ self.short_write(i.to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_i8(&mut self, i: i8) {
+ self.short_write((i as u8).to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_i16(&mut self, i: i16) {
+ self.short_write((i as u16).to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_i32(&mut self, i: i32) {
+ self.short_write((i as u32).to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_i64(&mut self, i: i64) {
+ self.short_write((i as u64).to_ne_bytes());
+ }
+
+ #[inline]
+ fn write_isize(&mut self, i: isize) {
+ self.short_write((i as usize).to_ne_bytes());
+ }
+
+ #[inline]
+ fn write(&mut self, msg: &[u8]) {
+ self.slice_write(msg);
+ }
+
+ #[cfg(feature = "nightly")]
+ #[inline]
+ fn write_str(&mut self, s: &str) {
+ // This hasher works byte-wise, and `0xFF` cannot show up in a `str`,
+ // so just hashing the one extra byte is enough to be prefix-free.
+ self.write(s.as_bytes());
+ self.write_u8(0xFF);
+ }
+
+ fn finish(&self) -> u64 {
+ let mut buf = self.buf;
+ let [a, b] = unsafe {
+ SipHasher128::finish128_inner(self.nbuf, &mut buf, self.state, self.processed)
+ };
+
+ // Combining the two halves makes sure we get a good quality hash.
+ a.wrapping_mul(3).wrapping_add(b)
+ }
+}
+
+#[derive(Debug, Clone, Default)]
+struct Sip13Rounds;
+
+impl Sip13Rounds {
+ #[inline]
+ fn c_rounds(state: &mut State) {
+ compress!(state);
+ }
+
+ #[inline]
+ fn d_rounds(state: &mut State) {
+ compress!(state);
+ compress!(state);
+ compress!(state);
+ }
+}
diff --git a/crates/rustc-stable-hash/src/sip128/tests.rs b/crates/rustc-stable-hash/src/sip128/tests.rs
new file mode 100644
index 0000000..6be4b12
--- /dev/null
+++ b/crates/rustc-stable-hash/src/sip128/tests.rs
@@ -0,0 +1,320 @@
+use super::*;
+
+use std::hash::Hash;
+
+// Hash just the bytes of the slice, without length prefix
+struct Bytes<'a>(&'a [u8]);
+
+impl<'a> Hash for Bytes<'a> {
+ #[allow(unused_must_use)]
+ fn hash<H: Hasher>(&self, state: &mut H) {
+ for byte in self.0 {
+ state.write_u8(*byte);
+ }
+ }
+}
+
+fn hash_with<T: Hash>(mut st: SipHasher128, x: &T) -> SipHasher128Hash {
+ x.hash(&mut st);
+ st.finish()
+}
+
+fn hash<T: Hash>(x: &T) -> SipHasher128Hash {
+ hash_with(SipHasher128::new_with_keys(0, 0), x)
+}
+
+#[rustfmt::skip]
+const TEST_VECTOR: [[u8; 16]; 64] = [
+ [0xe7, 0x7e, 0xbc, 0xb2, 0x27, 0x88, 0xa5, 0xbe, 0xfd, 0x62, 0xdb, 0x6a, 0xdd, 0x30, 0x30, 0x01],
+ [0xfc, 0x6f, 0x37, 0x04, 0x60, 0xd3, 0xed, 0xa8, 0x5e, 0x05, 0x73, 0xcc, 0x2b, 0x2f, 0xf0, 0x63],
+ [0x75, 0x78, 0x7f, 0x09, 0x05, 0x69, 0x83, 0x9b, 0x85, 0x5b, 0xc9, 0x54, 0x8c, 0x6a, 0xea, 0x95],
+ [0x6b, 0xc5, 0xcc, 0xfa, 0x1e, 0xdc, 0xf7, 0x9f, 0x48, 0x23, 0x18, 0x77, 0x12, 0xeb, 0xd7, 0x43],
+ [0x0c, 0x78, 0x4e, 0x71, 0xac, 0x2b, 0x28, 0x5a, 0x9f, 0x8e, 0x92, 0xe7, 0x8f, 0xbf, 0x2c, 0x25],
+ [0xf3, 0x28, 0xdb, 0x89, 0x34, 0x5b, 0x62, 0x0c, 0x79, 0x52, 0x29, 0xa4, 0x26, 0x95, 0x84, 0x3e],
+ [0xdc, 0xd0, 0x3d, 0x29, 0xf7, 0x43, 0xe7, 0x10, 0x09, 0x51, 0xb0, 0xe8, 0x39, 0x85, 0xa6, 0xf8],
+ [0x10, 0x84, 0xb9, 0x23, 0xf2, 0xaa, 0xe0, 0xc3, 0xa6, 0x2f, 0x2e, 0xc8, 0x08, 0x48, 0xab, 0x77],
+ [0xaa, 0x12, 0xfe, 0xe1, 0xd5, 0xe3, 0xda, 0xb4, 0x72, 0x4f, 0x16, 0xab, 0x35, 0xf9, 0xc7, 0x99],
+ [0x81, 0xdd, 0xb8, 0x04, 0x2c, 0xf3, 0x39, 0x94, 0xf4, 0x72, 0x0e, 0x00, 0x94, 0x13, 0x7c, 0x42],
+ [0x4f, 0xaa, 0x54, 0x1d, 0x5d, 0x49, 0x8e, 0x89, 0xba, 0x0e, 0xa4, 0xc3, 0x87, 0xb2, 0x2f, 0xb4],
+ [0x72, 0x3b, 0x9a, 0xf3, 0x55, 0x44, 0x91, 0xdb, 0xb1, 0xd6, 0x63, 0x3d, 0xfc, 0x6e, 0x0c, 0x4e],
+ [0xe5, 0x3f, 0x92, 0x85, 0x9e, 0x48, 0x19, 0xa8, 0xdc, 0x06, 0x95, 0x73, 0x9f, 0xea, 0x8c, 0x65],
+ [0xb2, 0xf8, 0x58, 0xc7, 0xc9, 0xea, 0x80, 0x1d, 0x53, 0xd6, 0x03, 0x59, 0x6d, 0x65, 0x78, 0x44],
+ [0x87, 0xe7, 0x62, 0x68, 0xdb, 0xc9, 0x22, 0x72, 0x26, 0xb0, 0xca, 0x66, 0x5f, 0x64, 0xe3, 0x78],
+ [0xc1, 0x7e, 0x55, 0x05, 0xb2, 0xbd, 0x52, 0x6c, 0x29, 0x21, 0xcd, 0xec, 0x1e, 0x7e, 0x01, 0x09],
+ [0xd0, 0xa8, 0xd9, 0x57, 0x15, 0x51, 0x8e, 0xeb, 0xb5, 0x13, 0xb0, 0xf8, 0x3d, 0x9e, 0x17, 0x93],
+ [0x23, 0x41, 0x26, 0xf9, 0x3f, 0xbb, 0x66, 0x8d, 0x97, 0x51, 0x12, 0xe8, 0xfe, 0xbd, 0xf7, 0xec],
+ [0xef, 0x42, 0xf0, 0x3d, 0xb7, 0x8f, 0x70, 0x4d, 0x02, 0x3c, 0x44, 0x9f, 0x16, 0xb7, 0x09, 0x2b],
+ [0xab, 0xf7, 0x62, 0x38, 0xc2, 0x0a, 0xf1, 0x61, 0xb2, 0x31, 0x4b, 0x4d, 0x55, 0x26, 0xbc, 0xe9],
+ [0x3c, 0x2c, 0x2f, 0x11, 0xbb, 0x90, 0xcf, 0x0b, 0xe3, 0x35, 0xca, 0x9b, 0x2e, 0x91, 0xe9, 0xb7],
+ [0x2a, 0x7a, 0x68, 0x0f, 0x22, 0xa0, 0x2a, 0x92, 0xf4, 0x51, 0x49, 0xd2, 0x0f, 0xec, 0xe0, 0xef],
+ [0xc9, 0xa8, 0xd1, 0x30, 0x23, 0x1d, 0xd4, 0x3e, 0x42, 0xe6, 0x45, 0x69, 0x57, 0xf8, 0x37, 0x79],
+ [0x1d, 0x12, 0x7b, 0x84, 0x40, 0x5c, 0xea, 0xb9, 0x9f, 0xd8, 0x77, 0x5a, 0x9b, 0xe6, 0xc5, 0x59],
+ [0x9e, 0x4b, 0xf8, 0x37, 0xbc, 0xfd, 0x92, 0xca, 0xce, 0x09, 0xd2, 0x06, 0x1a, 0x84, 0xd0, 0x4a],
+ [0x39, 0x03, 0x1a, 0x96, 0x5d, 0x73, 0xb4, 0xaf, 0x5a, 0x27, 0x4d, 0x18, 0xf9, 0x73, 0xb1, 0xd2],
+ [0x7f, 0x4d, 0x0a, 0x12, 0x09, 0xd6, 0x7e, 0x4e, 0xd0, 0x6f, 0x75, 0x38, 0xe1, 0xcf, 0xad, 0x64],
+ [0xe6, 0x1e, 0xe2, 0x40, 0xfb, 0xdc, 0xce, 0x38, 0x96, 0x9f, 0x4c, 0xd2, 0x49, 0x27, 0xdd, 0x93],
+ [0x4c, 0x3b, 0xa2, 0xb3, 0x7b, 0x0f, 0xdd, 0x8c, 0xfa, 0x5e, 0x95, 0xc1, 0x89, 0xb2, 0x94, 0x14],
+ [0xe0, 0x6f, 0xd4, 0xca, 0x06, 0x6f, 0xec, 0xdd, 0x54, 0x06, 0x8a, 0x5a, 0xd8, 0x89, 0x6f, 0x86],
+ [0x5c, 0xa8, 0x4c, 0x34, 0x13, 0x9c, 0x65, 0x80, 0xa8, 0x8a, 0xf2, 0x49, 0x90, 0x72, 0x07, 0x06],
+ [0x42, 0xea, 0x96, 0x1c, 0x5b, 0x3c, 0x85, 0x8b, 0x17, 0xc3, 0xe5, 0x50, 0xdf, 0xa7, 0x90, 0x10],
+ [0x40, 0x6c, 0x44, 0xde, 0xe6, 0x78, 0x57, 0xb2, 0x94, 0x31, 0x60, 0xf3, 0x0c, 0x74, 0x17, 0xd3],
+ [0xc5, 0xf5, 0x7b, 0xae, 0x13, 0x20, 0xfc, 0xf4, 0xb4, 0xe8, 0x68, 0xe7, 0x1d, 0x56, 0xc6, 0x6b],
+ [0x04, 0xbf, 0x73, 0x7a, 0x5b, 0x67, 0x6b, 0xe7, 0xc3, 0xde, 0x05, 0x01, 0x7d, 0xf4, 0xbf, 0xf9],
+ [0x51, 0x63, 0xc9, 0xc0, 0x3f, 0x19, 0x07, 0xea, 0x10, 0x44, 0xed, 0x5c, 0x30, 0x72, 0x7b, 0x4f],
+ [0x37, 0xa1, 0x10, 0xf0, 0x02, 0x71, 0x8e, 0xda, 0xd2, 0x4b, 0x3f, 0x9e, 0xe4, 0x53, 0xf1, 0x40],
+ [0xb9, 0x87, 0x7e, 0x38, 0x1a, 0xed, 0xd3, 0xda, 0x08, 0xc3, 0x3e, 0x75, 0xff, 0x23, 0xac, 0x10],
+ [0x7c, 0x50, 0x04, 0x00, 0x5e, 0xc5, 0xda, 0x4c, 0x5a, 0xc9, 0x44, 0x0e, 0x5c, 0x72, 0x31, 0x93],
+ [0x81, 0xb8, 0x24, 0x37, 0x83, 0xdb, 0xc6, 0x46, 0xca, 0x9d, 0x0c, 0xd8, 0x2a, 0xbd, 0xb4, 0x6c],
+ [0x50, 0x57, 0x20, 0x54, 0x3e, 0xb9, 0xb4, 0x13, 0xd5, 0x0b, 0x3c, 0xfa, 0xd9, 0xee, 0xf9, 0x38],
+ [0x94, 0x5f, 0x59, 0x4d, 0xe7, 0x24, 0x11, 0xe4, 0xd3, 0x35, 0xbe, 0x87, 0x44, 0x56, 0xd8, 0xf3],
+ [0x37, 0x92, 0x3b, 0x3e, 0x37, 0x17, 0x77, 0xb2, 0x11, 0x70, 0xbf, 0x9d, 0x7e, 0x62, 0xf6, 0x02],
+ [0x3a, 0xd4, 0xe7, 0xc8, 0x57, 0x64, 0x96, 0x46, 0x11, 0xeb, 0x0a, 0x6c, 0x4d, 0x62, 0xde, 0x56],
+ [0xcd, 0x91, 0x39, 0x6c, 0x44, 0xaf, 0x4f, 0x51, 0x85, 0x57, 0x8d, 0x9d, 0xd9, 0x80, 0x3f, 0x0a],
+ [0xfe, 0x28, 0x15, 0x8e, 0x72, 0x7b, 0x86, 0x8f, 0x39, 0x03, 0xc9, 0xac, 0xda, 0x64, 0xa2, 0x58],
+ [0x40, 0xcc, 0x10, 0xb8, 0x28, 0x8c, 0xe5, 0xf0, 0xbc, 0x3a, 0xc0, 0xb6, 0x8a, 0x0e, 0xeb, 0xc8],
+ [0x6f, 0x14, 0x90, 0xf5, 0x40, 0x69, 0x9a, 0x3c, 0xd4, 0x97, 0x44, 0x20, 0xec, 0xc9, 0x27, 0x37],
+ [0xd5, 0x05, 0xf1, 0xb7, 0x5e, 0x1a, 0x84, 0xa6, 0x03, 0xc4, 0x35, 0x83, 0xb2, 0xed, 0x03, 0x08],
+ [0x49, 0x15, 0x73, 0xcf, 0xd7, 0x2b, 0xb4, 0x68, 0x2b, 0x7c, 0xa5, 0x88, 0x0e, 0x1c, 0x8d, 0x6f],
+ [0x3e, 0xd6, 0x9c, 0xfe, 0x45, 0xab, 0x40, 0x3f, 0x2f, 0xd2, 0xad, 0x95, 0x9b, 0xa2, 0x76, 0x66],
+ [0x8b, 0xe8, 0x39, 0xef, 0x1b, 0x20, 0xb5, 0x7c, 0x83, 0xba, 0x7e, 0xb6, 0xa8, 0xc2, 0x2b, 0x6a],
+ [0x14, 0x09, 0x18, 0x6a, 0xb4, 0x22, 0x31, 0xfe, 0xde, 0xe1, 0x81, 0x62, 0xcf, 0x1c, 0xb4, 0xca],
+ [0x2b, 0xf3, 0xcc, 0xc2, 0x4a, 0xb6, 0x72, 0xcf, 0x15, 0x1f, 0xb8, 0xd2, 0xf3, 0xf3, 0x06, 0x9b],
+ [0xb9, 0xb9, 0x3a, 0x28, 0x82, 0xd6, 0x02, 0x5c, 0xdb, 0x8c, 0x56, 0xfa, 0x13, 0xf7, 0x53, 0x7b],
+ [0xd9, 0x7c, 0xca, 0x36, 0x94, 0xfb, 0x20, 0x6d, 0xb8, 0xbd, 0x1f, 0x36, 0x50, 0xc3, 0x33, 0x22],
+ [0x94, 0xec, 0x2e, 0x19, 0xa4, 0x0b, 0xe4, 0x1a, 0xf3, 0x94, 0x0d, 0x6b, 0x30, 0xc4, 0x93, 0x84],
+ [0x4b, 0x41, 0x60, 0x3f, 0x20, 0x9a, 0x04, 0x5b, 0xe1, 0x40, 0xa3, 0x41, 0xa3, 0xdf, 0xfe, 0x10],
+ [0x23, 0xfb, 0xcb, 0x30, 0x9f, 0x1c, 0xf0, 0x94, 0x89, 0x07, 0x55, 0xab, 0x1b, 0x42, 0x65, 0x69],
+ [0xe7, 0xd9, 0xb6, 0x56, 0x90, 0x91, 0x8a, 0x2b, 0x23, 0x2f, 0x2f, 0x5c, 0x12, 0xc8, 0x30, 0x0e],
+ [0xad, 0xe8, 0x3c, 0xf7, 0xe7, 0xf3, 0x84, 0x7b, 0x36, 0xfa, 0x4b, 0x54, 0xb0, 0x0d, 0xce, 0x61],
+ [0x06, 0x10, 0xc5, 0xf2, 0xee, 0x57, 0x1c, 0x8a, 0xc8, 0x0c, 0xbf, 0xe5, 0x38, 0xbd, 0xf1, 0xc7],
+ [0x27, 0x1d, 0x5d, 0x00, 0xfb, 0xdb, 0x5d, 0x15, 0x5d, 0x9d, 0xce, 0xa9, 0x7c, 0xb4, 0x02, 0x18],
+ [0x4c, 0x58, 0x00, 0xe3, 0x4e, 0xfe, 0x42, 0x6f, 0x07, 0x9f, 0x6b, 0x0a, 0xa7, 0x52, 0x60, 0xad],
+];
+
+#[test]
+fn test_siphash_1_3_test_vector() {
+ let k0 = 0x_07_06_05_04_03_02_01_00;
+ let k1 = 0x_0f_0e_0d_0c_0b_0a_09_08;
+
+ let mut input: Vec<u8> = Vec::new();
+
+ #[allow(clippy::identity_op)]
+ for (i, v) in TEST_VECTOR.iter().enumerate() {
+ let out = hash_with(SipHasher128::new_with_keys(k0, k1), &Bytes(&input[..]));
+ let expected = [
+ ((v[0] as u64) << 0)
+ | ((v[1] as u64) << 8)
+ | ((v[2] as u64) << 16)
+ | ((v[3] as u64) << 24)
+ | ((v[4] as u64) << 32)
+ | ((v[5] as u64) << 40)
+ | ((v[6] as u64) << 48)
+ | ((v[7] as u64) << 56),
+ ((v[8] as u64) << 0)
+ | ((v[9] as u64) << 8)
+ | ((v[10] as u64) << 16)
+ | ((v[11] as u64) << 24)
+ | ((v[12] as u64) << 32)
+ | ((v[13] as u64) << 40)
+ | ((v[14] as u64) << 48)
+ | ((v[15] as u64) << 56),
+ ];
+
+ assert_eq!(out.0, expected);
+ input.push(i as u8);
+ }
+}
+
+#[test]
+#[cfg(target_arch = "arm")]
+fn test_hash_usize() {
+ let val = 0xdeadbeef_deadbeef_u64;
+ assert!(hash(&val) != hash(&(val as usize)));
+ assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
+}
+#[test]
+#[cfg(target_arch = "x86_64")]
+fn test_hash_usize() {
+ let val = 0xdeadbeef_deadbeef_u64;
+ assert_eq!(hash(&val), hash(&(val as usize)));
+ assert!(hash(&(val as u32)) != hash(&(val as usize)));
+}
+#[test]
+#[cfg(target_arch = "x86")]
+fn test_hash_usize() {
+ let val = 0xdeadbeef_deadbeef_u64;
+ assert!(hash(&val) != hash(&(val as usize)));
+ assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
+}
+
+#[test]
+fn test_hash_idempotent() {
+ let val64 = 0xdeadbeef_deadbeef_u64;
+ assert_eq!(hash(&val64), hash(&val64));
+ let val32 = 0xdeadbeef_u32;
+ assert_eq!(hash(&val32), hash(&val32));
+}
+
+#[test]
+fn test_hash_no_bytes_dropped_64() {
+ let val = 0xdeadbeef_deadbeef_u64;
+
+ assert!(hash(&val) != hash(&zero_byte(val, 0)));
+ assert!(hash(&val) != hash(&zero_byte(val, 1)));
+ assert!(hash(&val) != hash(&zero_byte(val, 2)));
+ assert!(hash(&val) != hash(&zero_byte(val, 3)));
+ assert!(hash(&val) != hash(&zero_byte(val, 4)));
+ assert!(hash(&val) != hash(&zero_byte(val, 5)));
+ assert!(hash(&val) != hash(&zero_byte(val, 6)));
+ assert!(hash(&val) != hash(&zero_byte(val, 7)));
+
+ fn zero_byte(val: u64, byte: usize) -> u64 {
+ assert!(byte < 8);
+ val & !(0xff << (byte * 8))
+ }
+}
+
+#[test]
+fn test_hash_no_bytes_dropped_32() {
+ let val = 0xdeadbeef_u32;
+
+ assert!(hash(&val) != hash(&zero_byte(val, 0)));
+ assert!(hash(&val) != hash(&zero_byte(val, 1)));
+ assert!(hash(&val) != hash(&zero_byte(val, 2)));
+ assert!(hash(&val) != hash(&zero_byte(val, 3)));
+
+ fn zero_byte(val: u32, byte: usize) -> u32 {
+ assert!(byte < 4);
+ val & !(0xff << (byte * 8))
+ }
+}
+
+#[test]
+fn test_hash_no_concat_alias() {
+ let s = ("aa", "bb");
+ let t = ("aabb", "");
+ let u = ("a", "abb");
+
+ assert!(s != t && t != u);
+ assert!(hash(&s) != hash(&t) && hash(&s) != hash(&u));
+
+ let u = [1, 0, 0, 0];
+ let v = (&u[..1], &u[1..3], &u[3..]);
+ let w = (&u[..], &u[4..4], &u[4..4]);
+
+ assert!(v != w);
+ assert!(hash(&v) != hash(&w));
+}
+
+#[test]
+fn test_short_write_works() {
+ let test_u8 = 0xFF_u8;
+ let test_u16 = 0x1122_u16;
+ let test_u32 = 0x22334455_u32;
+ let test_u64 = 0x33445566_778899AA_u64;
+ let test_u128 = 0x11223344_55667788_99AABBCC_DDEEFF77_u128;
+ let test_usize = 0xD0C0B0A0_usize;
+
+ let test_i8 = -1_i8;
+ let test_i16 = -2_i16;
+ let test_i32 = -3_i32;
+ let test_i64 = -4_i64;
+ let test_i128 = -5_i128;
+ let test_isize = -6_isize;
+
+ let mut h1 = SipHasher128::new_with_keys(0, 0);
+ h1.write(b"bytes");
+ h1.write(b"string");
+ h1.write_u8(test_u8);
+ h1.write_u16(test_u16);
+ h1.write_u32(test_u32);
+ h1.write_u64(test_u64);
+ h1.write_u128(test_u128);
+ h1.write_usize(test_usize);
+ h1.write_i8(test_i8);
+ h1.write_i16(test_i16);
+ h1.write_i32(test_i32);
+ h1.write_i64(test_i64);
+ h1.write_i128(test_i128);
+ h1.write_isize(test_isize);
+
+ let mut h2 = SipHasher128::new_with_keys(0, 0);
+ h2.write(b"bytes");
+ h2.write(b"string");
+ h2.write(&test_u8.to_ne_bytes());
+ h2.write(&test_u16.to_ne_bytes());
+ h2.write(&test_u32.to_ne_bytes());
+ h2.write(&test_u64.to_ne_bytes());
+ h2.write(&test_u128.to_ne_bytes());
+ h2.write(&test_usize.to_ne_bytes());
+ h2.write(&test_i8.to_ne_bytes());
+ h2.write(&test_i16.to_ne_bytes());
+ h2.write(&test_i32.to_ne_bytes());
+ h2.write(&test_i64.to_ne_bytes());
+ h2.write(&test_i128.to_ne_bytes());
+ h2.write(&test_isize.to_ne_bytes());
+
+ let h1_hash = h1.finish();
+ let h2_hash = h2.finish();
+
+ assert_eq!(h1_hash, h2_hash);
+}
+
+macro_rules! test_fill_buffer {
+ ($type:ty, $write_method:ident) => {{
+ // Test filling and overfilling the buffer from all possible offsets
+ // for a given integer type and its corresponding write method.
+ const SIZE: usize = std::mem::size_of::<$type>();
+ let input = [42; BUFFER_SIZE];
+ let x = 0x01234567_89ABCDEF_76543210_FEDCBA98_u128 as $type;
+ let x_bytes = &x.to_ne_bytes();
+
+ for i in 1..=SIZE {
+ let s = &input[..BUFFER_SIZE - i];
+
+ let mut h1 = SipHasher128::new_with_keys(7, 13);
+ h1.write(s);
+ h1.$write_method(x);
+
+ let mut h2 = SipHasher128::new_with_keys(7, 13);
+ h2.write(s);
+ h2.write(x_bytes);
+
+ let h1_hash = h1.finish();
+ let h2_hash = h2.finish();
+
+ assert_eq!(h1_hash, h2_hash);
+ }
+ }};
+}
+
+#[test]
+fn test_fill_buffer() {
+ test_fill_buffer!(u8, write_u8);
+ test_fill_buffer!(u16, write_u16);
+ test_fill_buffer!(u32, write_u32);
+ test_fill_buffer!(u64, write_u64);
+ test_fill_buffer!(u128, write_u128);
+ test_fill_buffer!(usize, write_usize);
+
+ test_fill_buffer!(i8, write_i8);
+ test_fill_buffer!(i16, write_i16);
+ test_fill_buffer!(i32, write_i32);
+ test_fill_buffer!(i64, write_i64);
+ test_fill_buffer!(i128, write_i128);
+ test_fill_buffer!(isize, write_isize);
+}
+
+#[test]
+fn test_finish() {
+ fn hash<H: Hasher>(h: &H) -> u64 {
+ h.finish()
+ }
+
+ let mut hasher = SipHasher128::new_with_keys(0, 0);
+
+ hasher.write_isize(0xF0);
+ hasher.write_isize(0xF0010);
+
+ assert_eq!(hash(&hasher), hash(&hasher));
+}
diff --git a/crates/rustc-stable-hash/src/stable_hasher.rs b/crates/rustc-stable-hash/src/stable_hasher.rs
new file mode 100644
index 0000000..bc5f9d9
--- /dev/null
+++ b/crates/rustc-stable-hash/src/stable_hasher.rs
@@ -0,0 +1,299 @@
+//! Stable hasher adapted for cross-platform independent hash.
+
+use std::fmt;
+use std::hash::Hasher;
+
+#[cfg(test)]
+mod tests;
+
+/// Extended [`Hasher`] trait for use with [`StableHasher`].
+///
+/// It permits returning an arbitrary type as the [`Self::Hash`] type
+/// contrary to the [`Hasher`] trait which can only return `u64`. This
+/// is useful when the hasher uses a different representation.
+///
+/// # Example
+///
+/// ```
+/// use std::hash::Hasher;
+/// use rustc_stable_hash::ExtendedHasher;
+///
+/// struct BogusHasher(u128);
+///
+/// impl Hasher for BogusHasher {
+/// fn write(&mut self, a: &[u8]) {
+/// # self.0 = a.iter().fold(0u128, |acc, a| acc + (*a as u128)) + self.0;
+/// // ...
+/// }
+///
+/// fn finish(&self) -> u64 {
+/// self.0 as u64 // really bogus
+/// }
+/// }
+///
+/// impl ExtendedHasher for BogusHasher {
+/// type Hash = u128;
+///
+/// fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN]) {
+/// self.write(&bytes)
+/// }
+///
+/// fn finish(self) -> Self::Hash {
+/// self.0
+/// }
+/// }
+/// ```
+pub trait ExtendedHasher: Hasher {
+ /// Type returned by the hasher.
+ type Hash;
+
+ /// Optimized version of [`Hasher::write`] but for small write.
+ fn short_write<const LEN: usize>(&mut self, bytes: [u8; LEN]) {
+ self.write(&bytes);
+ }
+
+ /// Finalization method of the hasher to return the [`Hash`].
+ fn finish(self) -> Self::Hash;
+}
+
+/// A Stable Hasher adapted for cross-platform independent hash.
+///
+/// When hashing something that ends up affecting properties like symbol names,
+/// we want these symbol names to be calculated independently of other factors
+/// like what architecture you're compiling *from*.
+///
+/// To that end we always convert integers to little-endian format before
+/// hashing and the architecture dependent `isize` and `usize` types are
+/// extended to 64 bits if needed.
+///
+/// # Example
+///
+/// ```
+/// use rustc_stable_hash::hashers::{StableSipHasher128, SipHasher128Hash};
+/// use rustc_stable_hash::{StableHasher, FromStableHash};
+/// use std::hash::Hasher;
+///
+/// struct Hash128([u64; 2]);
+/// impl FromStableHash for Hash128 {
+/// type Hash = SipHasher128Hash;
+///
+/// fn from(SipHasher128Hash(hash): SipHasher128Hash) -> Hash128 {
+/// Hash128(hash)
+/// }
+/// }
+///
+/// let mut hasher = StableSipHasher128::new();
+/// hasher.write_usize(0xFA);
+///
+/// let hash: Hash128 = hasher.finish();
+/// ```
+#[must_use]
+#[derive(Clone)]
+pub struct StableHasher<H: ExtendedHasher> {
+ state: H,
+}
+
+/// Trait for processing the result of the stable hashing operation.
+///
+/// # Example
+///
+/// ```
+/// use rustc_stable_hash::{StableHasher, FromStableHash};
+///
+/// struct Hash128(u128);
+///
+/// impl FromStableHash for Hash128 {
+/// type Hash = [u64; 2];
+///
+/// fn from(hash: [u64; 2]) -> Hash128 {
+/// let upper: u128 = hash[0] as u128;
+/// let lower: u128 = hash[1] as u128;
+///
+/// Hash128((upper << 64) | lower)
+/// }
+/// }
+/// ```
+pub trait FromStableHash: Sized {
+ type Hash;
+
+ /// Convert the finalized state of a [`StableHasher`] and construct
+ /// an [`Self`] containing the processed hash.
+ fn from(hash: Self::Hash) -> Self;
+}
+
+impl<H: ExtendedHasher + Default> StableHasher<H> {
+ /// Creates a new [`StableHasher`].
+ ///
+ /// To be used with the [`Hasher`] implementation and [`StableHasher::finish`].
+ #[inline]
+ pub fn new() -> Self {
+ Default::default()
+ }
+}
+
+impl<H: ExtendedHasher + Default> Default for StableHasher<H> {
+ /// Creates a new [`StableHasher`].
+ ///
+ /// To be used with the [`Hasher`] implementation and [`StableHasher::finish`].
+ #[inline]
+ fn default() -> Self {
+ StableHasher {
+ state: Default::default(),
+ }
+ }
+}
+
+impl<H: ExtendedHasher> StableHasher<H> {
+ /// Creates a new [`StableHasher`] from an already created [`ExtendedHasher`].
+ ///
+ /// Useful when wanting to initialize a hasher with different parameters/keys.
+ ///
+ /// **Important**: Any use of the hasher before being given to a [`StableHasher`]
+ /// is not covered by this crate guarentees and will make the resulting hash
+ /// NOT platform independent.
+ #[inline]
+ pub fn with_hasher(state: H) -> Self {
+ StableHasher { state }
+ }
+
+ /// Returns the typed-hash value for the values written.
+ ///
+ /// The resulting typed-hash value is constructed from an
+ /// [`FromStableHash`] implemenation.
+ ///
+ /// To be used in-place of [`Hasher::finish`].
+ #[inline]
+ #[must_use]
+ pub fn finish<W: FromStableHash<Hash = H::Hash>>(self) -> W {
+ W::from(self.state.finish())
+ }
+}
+
+impl<H: ExtendedHasher + fmt::Debug> fmt::Debug for StableHasher<H> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "{:?}", self.state)
+ }
+}
+
+impl<H: ExtendedHasher> Hasher for StableHasher<H> {
+ /// Returns a combined hash.
+ ///
+ /// For greater precision use instead [`StableHasher::finish`].
+ fn finish(&self) -> u64 {
+ Hasher::finish(&self.state)
+ }
+
+ #[inline]
+ fn write(&mut self, bytes: &[u8]) {
+ self.state.write(bytes);
+ }
+
+ #[cfg(feature = "nightly")]
+ #[inline]
+ fn write_str(&mut self, s: &str) {
+ self.state.write_str(s);
+ }
+
+ #[cfg(feature = "nightly")]
+ #[inline]
+ fn write_length_prefix(&mut self, len: usize) {
+ // Our impl for `usize` will extend it if needed.
+ self.write_usize(len);
+ }
+
+ #[inline]
+ fn write_u8(&mut self, i: u8) {
+ self.state.write_u8(i);
+ }
+
+ #[inline]
+ fn write_u16(&mut self, i: u16) {
+ self.state.short_write(i.to_le_bytes());
+ }
+
+ #[inline]
+ fn write_u32(&mut self, i: u32) {
+ self.state.short_write(i.to_le_bytes());
+ }
+
+ #[inline]
+ fn write_u64(&mut self, i: u64) {
+ self.state.short_write(i.to_le_bytes());
+ }
+
+ #[inline]
+ fn write_u128(&mut self, i: u128) {
+ self.write_u64(i as u64);
+ self.write_u64((i >> 64) as u64);
+ }
+
+ #[inline]
+ fn write_usize(&mut self, i: usize) {
+ // Always treat usize as u64 so we get the same results on 32 and 64 bit
+ // platforms. This is important for symbol hashes when cross compiling,
+ // for example.
+ self.state.short_write((i as u64).to_le_bytes());
+ }
+
+ #[inline]
+ fn write_i8(&mut self, i: i8) {
+ self.state.write_i8(i);
+ }
+
+ #[inline]
+ fn write_i16(&mut self, i: i16) {
+ self.state.short_write((i as u16).to_le_bytes());
+ }
+
+ #[inline]
+ fn write_i32(&mut self, i: i32) {
+ self.state.short_write((i as u32).to_le_bytes());
+ }
+
+ #[inline]
+ fn write_i64(&mut self, i: i64) {
+ self.state.short_write((i as u64).to_le_bytes());
+ }
+
+ #[inline]
+ fn write_i128(&mut self, i: i128) {
+ self.state.write(&(i as u128).to_le_bytes());
+ }
+
+ #[inline]
+ fn write_isize(&mut self, i: isize) {
+ // Always treat isize as a 64-bit number so we get the same results on 32 and 64 bit
+ // platforms. This is important for symbol hashes when cross compiling,
+ // for example. Sign extending here is preferable as it means that the
+ // same negative number hashes the same on both 32 and 64 bit platforms.
+ let value = i as u64;
+
+ // Cold path
+ #[cold]
+ #[inline(never)]
+ fn hash_value<H: ExtendedHasher>(state: &mut H, value: u64) {
+ state.write_u8(0xFF);
+ state.short_write(value.to_le_bytes());
+ }
+
+ // `isize` values often seem to have a small (positive) numeric value in practice.
+ // To exploit this, if the value is small, we will hash a smaller amount of bytes.
+ // However, we cannot just skip the leading zero bytes, as that would produce the same hash
+ // e.g. if you hash two values that have the same bit pattern when they are swapped.
+ // See https://github.com/rust-lang/rust/pull/93014 for context.
+ //
+ // Therefore, we employ the following strategy:
+ // 1) When we encounter a value that fits within a single byte (the most common case), we
+ // hash just that byte. This is the most common case that is being optimized. However, we do
+ // not do this for the value 0xFF, as that is a reserved prefix (a bit like in UTF-8).
+ // 2) When we encounter a larger value, we hash a "marker" 0xFF and then the corresponding
+ // 8 bytes. Since this prefix cannot occur when we hash a single byte, when we hash two
+ // `isize`s that fit within a different amount of bytes, they should always produce a different
+ // byte stream for the hasher.
+ if value < 0xFF {
+ self.state.write_u8(value as u8);
+ } else {
+ hash_value(&mut self.state, value);
+ }
+ }
+}
diff --git a/crates/rustc-stable-hash/src/stable_hasher/tests.rs b/crates/rustc-stable-hash/src/stable_hasher/tests.rs
new file mode 100644
index 0000000..b2f2946
--- /dev/null
+++ b/crates/rustc-stable-hash/src/stable_hasher/tests.rs
@@ -0,0 +1,155 @@
+use std::hash::Hash;
+
+use super::*;
+use crate::{SipHasher128Hash, StableSipHasher128};
+
+// The tests below compare the computed hashes to particular expected values
+// in order to test that we produce the same results on different platforms,
+// regardless of endianness and `usize` and `isize` size differences (this
+// of course assumes we run these tests on platforms that differ in those
+// ways). The expected values depend on the hashing algorithm used, so they
+// need to be updated whenever StableHasher changes its hashing algorithm.
+
+#[derive(Debug, PartialEq)]
+struct TestHash([u64; 2]);
+
+impl FromStableHash for TestHash {
+ type Hash = SipHasher128Hash;
+
+ fn from(SipHasher128Hash(hash): Self::Hash) -> TestHash {
+ TestHash(hash)
+ }
+}
+
+#[test]
+fn test_hash_integers() {
+ // Test that integers are handled consistently across platforms.
+ let test_u8 = 0xAB_u8;
+ let test_u16 = 0xFFEE_u16;
+ let test_u32 = 0x445577AA_u32;
+ let test_u64 = 0x01234567_13243546_u64;
+ let test_u128 = 0x22114433_66557788_99AACCBB_EEDDFF77_u128;
+ let test_usize = 0xD0C0B0A0_usize;
+
+ let test_i8 = -100_i8;
+ let test_i16 = -200_i16;
+ let test_i32 = -300_i32;
+ let test_i64 = -400_i64;
+ let test_i128 = -500_i128;
+ let test_isize = -600_isize;
+
+ let mut h = StableSipHasher128::new();
+ test_u8.hash(&mut h);
+ test_u16.hash(&mut h);
+ test_u32.hash(&mut h);
+ test_u64.hash(&mut h);
+ test_u128.hash(&mut h);
+ test_usize.hash(&mut h);
+ test_i8.hash(&mut h);
+ test_i16.hash(&mut h);
+ test_i32.hash(&mut h);
+ test_i64.hash(&mut h);
+ test_i128.hash(&mut h);
+ test_isize.hash(&mut h);
+
+ // This depends on the hashing algorithm. See note at top of file.
+ let expected = TestHash([13997337031081104755, 6178945012502239489]);
+
+ assert_eq!(expected, h.finish());
+}
+
+#[test]
+fn test_hash_usize() {
+ // Test that usize specifically is handled consistently across platforms.
+ let test_usize = 0xABCDEF01_usize;
+
+ let mut h = StableSipHasher128::new();
+ test_usize.hash(&mut h);
+
+ // This depends on the hashing algorithm. See note at top of file.
+ let expected = TestHash([12037165114281468837, 3094087741167521712]);
+
+ assert_eq!(expected, h.finish());
+}
+
+#[test]
+fn test_hash_isize() {
+ // Test that isize specifically is handled consistently across platforms.
+ let test_isize = -7_isize;
+
+ let mut h = StableSipHasher128::new();
+ test_isize.hash(&mut h);
+
+ // This depends on the hashing algorithm. See note at top of file.
+ let expected = TestHash([3979067582695659080, 2322428596355037273]);
+
+ assert_eq!(expected, h.finish());
+}
+
+fn hash<T: Hash>(t: &T) -> TestHash {
+ let mut h = StableSipHasher128::new();
+ t.hash(&mut h);
+ h.finish()
+}
+
+// Check that the `isize` hashing optimization does not produce the same hash when permuting two
+// values.
+#[test]
+fn test_isize_compression() {
+ fn check_hash(a: u64, b: u64) {
+ let hash_a = hash(&(a as isize, b as isize));
+ let hash_b = hash(&(b as isize, a as isize));
+ assert_ne!(
+ hash_a, hash_b,
+ "The hash stayed the same when permuting values `{a}` and `{b}`!",
+ );
+ }
+
+ check_hash(0xAA, 0xAAAA);
+ check_hash(0xFF, 0xFFFF);
+ check_hash(0xAAAA, 0xAAAAAA);
+ check_hash(0xAAAAAA, 0xAAAAAAAA);
+ check_hash(0xFF, 0xFFFFFFFFFFFFFFFF);
+ check_hash(u64::MAX /* -1 */, 1);
+}
+
+#[test]
+fn test_cloned_hasher_output() {
+ // Test that integers are handled consistently across platforms.
+ let test_u8 = 0xAB_u8;
+ let test_u16 = 0xFFEE_u16;
+ let test_u32 = 0x445577AA_u32;
+
+ let mut h1 = StableSipHasher128::new();
+ test_u8.hash(&mut h1);
+ test_u16.hash(&mut h1);
+
+ let h2 = h1.clone();
+ let mut h3 = h1.clone();
+ // Make sure the cloned hasher can be fed more values.
+ test_u32.hash(&mut h3);
+
+ let h1_hash: TestHash = h1.finish();
+ assert_eq!(h1_hash, h2.finish());
+ assert_ne!(h1_hash, h3.finish());
+}
+
+#[test]
+fn test_hash_trait_finish() {
+ fn hash<H: Hasher>(h: &H) -> u64 {
+ h.finish()
+ }
+
+ // Test that integers are handled consistently across platforms.
+ let test_u8 = 0xAB_u8;
+ let test_u16 = 0xFFEE_u16;
+ let test_u32 = 0x445577AA_u32;
+
+ let mut h1 = StableSipHasher128::new();
+ test_u8.hash(&mut h1);
+ test_u16.hash(&mut h1);
+ test_u32.hash(&mut h1);
+
+ assert_eq!(hash(&h1), hash(&h1));
+ assert_eq!(hash(&h1), 13655241286414701638);
+}
diff --git a/crates/rustversion/.android-checksum.json b/crates/rustversion/.android-checksum.json
index 79a4be7..b1256b1 100644
--- a/crates/rustversion/.android-checksum.json
+++ b/crates/rustversion/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"19b9681bb98fe893acb2b9eab6ca57c1b8df43e0d5ae15a25630dade3666c1fb","Android.bp":"02205fc240ac573d43240316428d7607f6c6deb4cc6b6cf7f813fe96ab68d0d0","Cargo.toml":"0f04c719aa21340b4acaea38df188b4cf3a9b058716a53a6d0f49fb091765855","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"de807ddd221f923d926b6d8fdd61efe7a967bfd0514a777cae9abf74bd7684e1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"71f2eebf0e78bbd49a1ddf030a668ce895f9e8c31910f04f86386fac19fa2bce","TEST_MAPPING":"821b335914481cb4f741e17ef8a0ad0cda7464ebbb5ee68210a932114c971f05","build/build.rs":"5f3949c16bcd2680b74296dd18db39d6d125d4179d4450a520b3581cc9b0fe5d","build/rustc.rs":"c49d1bb177482710825fc4d9b31348d92b4eb631970c2046c20560193ce13872","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","patches/version.diff":"a837d3c122a7019d2306c806b7e0244297a6e4be708ad8536f69e37c691bd2dc","src/attr.rs":"0b177ac246579b7563b4699f6bc6366512e20db993f05047c5662257726a4f10","src/bound.rs":"255384d143d76dc40464b4c860bb876cd0890507c19219379c2e06d5bf48cee6","src/constfn.rs":"31e9a033ab65df05fc99047bfd38d2ec83096acde7a5a9105eb27cbc3dbb9ddb","src/date.rs":"0f03141690f433bf28975c537060559e16676e46d8894faf25928e59b923778b","src/error.rs":"51dee97c69059817fd9e83d3e08a36c82c6ffae9947aaf8e0a344b02afd2b1b8","src/expand.rs":"d145028d1431b891f22581553f0374f9fcd96c98ccece71c8f032918ebb9a409","src/expr.rs":"676cb9baef466df4dc1062cef28e74eb82cb4a0567f8b6da3cb1d5690515f56c","src/iter.rs":"b4fbcd5614cd280d4aa27a94ff122c2522e89726adda7c8cc4b6ac65bb7a2de1","src/lib.rs":"d2b379814420409ecc4ef582581cfb6b534b2e6c5ec68edfb42d631c24068957","src/release.rs":"a3ba8b73792cea9849617cb8a0a69f04947ccab3fca2f8f1c3eb3a6e737e1781","src/time.rs":"483b17be71cc096e94af9d876a0abfc7699941f9e8bd56382322316105d56ce6","src/token.rs":"e732b5908241f655a96877d7bb1b10afda8fba0e19cf14cc6f7603176f52216e","src/version.rs":"21542b7bc157545fa417ee3be4804aea71d3ebcf8cb7b6df3a04a09ed4703e0a","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/test_const.rs":"c3ff1242e27e4edbac033be36a220eb610d32425f578048fc482b435ba486a12","tests/test_eval.rs":"3e951b3c23ce314aefce98515593453309cfbc3441fd8f11b52e2ba43a200bb5","tests/test_parse.rs":"5dd88a26b6d7c8a8a9badd7e4f5275a8c6c2329582b076ba0813daa54ea38c1f","tests/ui/bad-bound.rs":"608e4afaeab04094698b05cd7554c2296c08f85947b233e2a40f4f11667a254f","tests/ui/bad-bound.stderr":"dedc613ffb20c9d60285f74ece0bd68d6a58ebbdf6be2a04a457ede82f6747a4","tests/ui/bad-date.rs":"c9b47b5f801c9e004691ad72f29da12e5f75242f465a8dc409e11993576cb95e","tests/ui/bad-date.stderr":"eb5eafe584c4694332cc3cd6cdb327581219c31763499057b05e7d6a276a9b35","tests/ui/bad-not.rs":"af7cf334af2c19f6fdb1890c303dac94b2e048f9c5dfd51710d7a2fa8a769905","tests/ui/bad-not.stderr":"b7bec701c5d426865f2f31c500f7956c6414d529358ac28d3b4ff1e76bed20af","tests/ui/bad-version.rs":"5f5b30ed353991a821b1d0385f265c7d6d27bd65417adc5865b7db0b848392d5","tests/ui/bad-version.stderr":"df55cbc0dbef4f3cffd8983357baad9a1cb503fc744639b38d2bfdafb64de9e8","tests/ui/const-not-fn.rs":"e3cf301a080d60b0820de332bcad9b5fb3d153902c0964124b57a0c9554aeb91","tests/ui/const-not-fn.stderr":"522a403743b01c3b4f57a9f3d9ae0bc684746a5d9f0ba4a829aedd92cf7ca0b2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"19b9681bb98fe893acb2b9eab6ca57c1b8df43e0d5ae15a25630dade3666c1fb","Android.bp":"6e1b56083d586922ee7fe92bdcef5b4595bc90c49d98ba7c3285715f4a84ddd7","Cargo.toml":"0f04c719aa21340b4acaea38df188b4cf3a9b058716a53a6d0f49fb091765855","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"de807ddd221f923d926b6d8fdd61efe7a967bfd0514a777cae9abf74bd7684e1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"71f2eebf0e78bbd49a1ddf030a668ce895f9e8c31910f04f86386fac19fa2bce","TEST_MAPPING":"821b335914481cb4f741e17ef8a0ad0cda7464ebbb5ee68210a932114c971f05","build/build.rs":"5f3949c16bcd2680b74296dd18db39d6d125d4179d4450a520b3581cc9b0fe5d","build/rustc.rs":"c49d1bb177482710825fc4d9b31348d92b4eb631970c2046c20560193ce13872","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","patches/version.diff":"a837d3c122a7019d2306c806b7e0244297a6e4be708ad8536f69e37c691bd2dc","src/attr.rs":"0b177ac246579b7563b4699f6bc6366512e20db993f05047c5662257726a4f10","src/bound.rs":"255384d143d76dc40464b4c860bb876cd0890507c19219379c2e06d5bf48cee6","src/constfn.rs":"31e9a033ab65df05fc99047bfd38d2ec83096acde7a5a9105eb27cbc3dbb9ddb","src/date.rs":"0f03141690f433bf28975c537060559e16676e46d8894faf25928e59b923778b","src/error.rs":"51dee97c69059817fd9e83d3e08a36c82c6ffae9947aaf8e0a344b02afd2b1b8","src/expand.rs":"d145028d1431b891f22581553f0374f9fcd96c98ccece71c8f032918ebb9a409","src/expr.rs":"676cb9baef466df4dc1062cef28e74eb82cb4a0567f8b6da3cb1d5690515f56c","src/iter.rs":"b4fbcd5614cd280d4aa27a94ff122c2522e89726adda7c8cc4b6ac65bb7a2de1","src/lib.rs":"d2b379814420409ecc4ef582581cfb6b534b2e6c5ec68edfb42d631c24068957","src/release.rs":"a3ba8b73792cea9849617cb8a0a69f04947ccab3fca2f8f1c3eb3a6e737e1781","src/time.rs":"483b17be71cc096e94af9d876a0abfc7699941f9e8bd56382322316105d56ce6","src/token.rs":"e732b5908241f655a96877d7bb1b10afda8fba0e19cf14cc6f7603176f52216e","src/version.rs":"21542b7bc157545fa417ee3be4804aea71d3ebcf8cb7b6df3a04a09ed4703e0a","tests/compiletest.rs":"5876a4728abd95ed4ed3b78777fe95428d32a32730d7718f58001bdbd4d1e168","tests/test_const.rs":"c3ff1242e27e4edbac033be36a220eb610d32425f578048fc482b435ba486a12","tests/test_eval.rs":"3e951b3c23ce314aefce98515593453309cfbc3441fd8f11b52e2ba43a200bb5","tests/test_parse.rs":"5dd88a26b6d7c8a8a9badd7e4f5275a8c6c2329582b076ba0813daa54ea38c1f","tests/ui/bad-bound.rs":"608e4afaeab04094698b05cd7554c2296c08f85947b233e2a40f4f11667a254f","tests/ui/bad-bound.stderr":"dedc613ffb20c9d60285f74ece0bd68d6a58ebbdf6be2a04a457ede82f6747a4","tests/ui/bad-date.rs":"c9b47b5f801c9e004691ad72f29da12e5f75242f465a8dc409e11993576cb95e","tests/ui/bad-date.stderr":"eb5eafe584c4694332cc3cd6cdb327581219c31763499057b05e7d6a276a9b35","tests/ui/bad-not.rs":"af7cf334af2c19f6fdb1890c303dac94b2e048f9c5dfd51710d7a2fa8a769905","tests/ui/bad-not.stderr":"b7bec701c5d426865f2f31c500f7956c6414d529358ac28d3b4ff1e76bed20af","tests/ui/bad-version.rs":"5f5b30ed353991a821b1d0385f265c7d6d27bd65417adc5865b7db0b848392d5","tests/ui/bad-version.stderr":"df55cbc0dbef4f3cffd8983357baad9a1cb503fc744639b38d2bfdafb64de9e8","tests/ui/const-not-fn.rs":"e3cf301a080d60b0820de332bcad9b5fb3d153902c0964124b57a0c9554aeb91","tests/ui/const-not-fn.stderr":"522a403743b01c3b4f57a9f3d9ae0bc684746a5d9f0ba4a829aedd92cf7ca0b2"}}
\ No newline at end of file
diff --git a/crates/rustversion/Android.bp b/crates/rustversion/Android.bp
index 1a1742b..7b55adc 100644
--- a/crates/rustversion/Android.bp
+++ b/crates/rustversion/Android.bp
@@ -26,4 +26,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/rustversion/cargo_embargo.json b/crates/rustversion/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/rustversion/cargo_embargo.json
+++ b/crates/rustversion/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/safe-mmio/.android-checksum.json b/crates/safe-mmio/.android-checksum.json
new file mode 100644
index 0000000..06a166a
--- /dev/null
+++ b/crates/safe-mmio/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"6eaed4754683f16016637a8d9fe1978b3fc9ea4df66e46bc3bce42c29df1596f","AUTHORS":"36e13690fb0df554d96e5882f6094d4d42be76c3d7c7e26d000f62ec396b75a5","Android.bp":"9b8c540f1b9938f6169ce6b12892382d390c880d422ab03d4560f9a975820baf","CHANGELOG.md":"64ce6de07b970994ee6fb4214bba698af63a89c0bcf33364a58843989b93fe00","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"d8209152727ac0e3ca0798fefc6f2b8a7cf9e1c9bc428a4e8781c21f3c3c4225","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"678b1642cfbf2f916ec1c2f64be80e8cace5ce97ba174d2b73ac21da04d31201","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"17e0bcfe86d8823ff6ff780ba370a140f5b82ab4b8ef343b64c3015368846b57","TEST_MAPPING":"9abd3e653b25e1ae63ae8170e9f6e001ed069e2d90b3241f8d7a6e519957353d","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"200210c2c2311a5991ba249eb0c9c2694ffd25d42d1fd3b0c602f6b95e8d4150","src/aarch64_mmio.rs":"d12c9bedf9c21a47de0a72537b5caf662811bfa93bf887e6bf4598188ad0ee40","src/fields.rs":"39bf6430500674899096186d1a63dc92f748e3eeb0f4a23bcb866ea086c1ffd0","src/lib.rs":"2e08f0eccb90811052ca6a02e8ec97f056e34553a38e570f5e14ee5979dc6b93","src/physical.rs":"3d7358b8393a714850aace25b36b2742c88f09cf70550525760c81dee56c9ecc","src/volatile_mmio.rs":"6c60553c957b0b85d02ed556d2cdd92b65e514002f030104ee7072165e24de79"}}
\ No newline at end of file
diff --git a/crates/safe-mmio/.cargo-checksum.json b/crates/safe-mmio/.cargo-checksum.json
new file mode 100644
index 0000000..9faac9e
--- /dev/null
+++ b/crates/safe-mmio/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"AUTHORS":"50a452146124d503dd486bb3bdbf6f24875a7b0e203f31406922f2c675e09526","CHANGELOG.md":"a7d67a430cd01a48b4d610f7d1a83994f62d777182a7a43bdf3b9b81b149cdec","CONTRIBUTING.md":"6d22dc292d5e1a5211a9a46d84ca7fd3723baee38b3f41e33365594e399704c4","Cargo.toml":"bd2319baeda5209f2d347ab7ffba9b71142a30a7c3f4508c35a819fc4ee59c61","LICENSE":"33e689538661d6262f664754d4406734c4831490bd4e5f05a78df38114d1ccf9","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"0aee91c26a48848628a01bba33b1d61ec2871b4b81bb84f045aae719896a422f","README.md":"d185257f19bb052bdb06f53e6dfb7ed8ba695abbb3da0f9c2ab33f3fbf968c4d","src/aarch64_mmio.rs":"aa05413ddc6cf1dc04840da391e66fa2b399a184dbdff9d1562dd8ca12b840c1","src/fields.rs":"42bed94ab7f253b0a41564cc004d959963aeb564edfd5a8a4b1de2769cd1da02","src/lib.rs":"2112b71e7690f815bbe65abdfedfaf570585341ab38b5c9283a758d8b16ef1f9","src/physical.rs":"83987aa36082aeaf9ae69810184925ea4ce97f986e154ab20cb98daf3eebfb15","src/volatile_mmio.rs":"e99d6aabd443831d3e2517cc58190a74959f556a4301ac9106778ae4636a6298"},"package":"4a2880901c2c082170ccf8a4d156f2b3707faf09cc1fac31d08cba224b2a9cb5"}
\ No newline at end of file
diff --git a/crates/safe-mmio/AUTHORS b/crates/safe-mmio/AUTHORS
new file mode 100644
index 0000000..aae9081
--- /dev/null
+++ b/crates/safe-mmio/AUTHORS
@@ -0,0 +1,7 @@
+# This is the list of safe-mmio's significant contributors.
+#
+# This does not necessarily list everyone who has contributed code,
+# especially since many employees of one corporation may be contributing.
+# To see the full list of contributors, see the revision history in
+# source control.
+Google LLC
diff --git a/crates/safe-mmio/Android.bp b/crates/safe-mmio/Android.bp
new file mode 100644
index 0000000..845a984
--- /dev/null
+++ b/crates/safe-mmio/Android.bp
@@ -0,0 +1,48 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_safe-mmio_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_safe-mmio_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library_rlib {
+ name: "libsafe_mmio",
+ crate_name: "safe_mmio",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.2.1",
+ crate_root: "src/lib.rs",
+ edition: "2021",
+ rustlibs: ["libzerocopy_nostd"],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ prefer_rlib: true,
+ no_stdlibs: true,
+ stdlibs: [
+ "libcompiler_builtins.rust_sysroot",
+ "libcore.rust_sysroot",
+ ],
+ product_available: true,
+ vendor_available: true,
+}
+
+rust_test {
+ name: "safe-mmio_test_src_lib",
+ crate_name: "safe_mmio",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.2.1",
+ crate_root: "src/lib.rs",
+ test_suites: ["general-tests"],
+ auto_gen_config: true,
+ edition: "2021",
+ rustlibs: ["libzerocopy_nostd"],
+}
diff --git a/crates/safe-mmio/CHANGELOG.md b/crates/safe-mmio/CHANGELOG.md
new file mode 100644
index 0000000..20d56cf
--- /dev/null
+++ b/crates/safe-mmio/CHANGELOG.md
@@ -0,0 +1,34 @@
+# Changelog
+
+## 0.2.1
+
+### New features
+
+- Added `get` method to `UniqueMmioPointer<[T; N]>` and `SharedMmioPointer<[T; N]>`.
+
+## 0.2.0
+
+### Breaking changes
+
+- Renamed `OwnedMmioPointer` to `UniqueMmioPointer`.
+
+### New features
+
+- Added `SharedMmioPointer` for an MMIO pointer that is not necessarily unique. Unlike a
+ `UniqueMmioPointer`, a `SharedMmioPointer` can be cloned. `UniqueMmioPointer` derefs to
+ `SharedMmioPointer` and can also be converted to it.
+- Added `get` and `split` methods on `UniqueMmioPointer<[T]>` and `UniqueMmioPointer<[T; _]>`
+ respectively, to go from a pointer to a slice or field to pointers to the individual elements.
+- Added `field!` and `field_shared!` macros to go from a pointer to a struct to a pointer to an
+ individual field.
+- Added `write_unsafe` and `read_unsafe` methods on `UniqueMmioPointer` and `SharedMmioPointer`.
+ These call `write_volatile` and `read_volatile` on most platforms, but on aarch64 are implemented
+ with inline assembly instead to work around
+ [a bug with how volatile writes and reads are implemented](https://github.com/rust-lang/rust/issues/131894).
+- Added wrapper types `ReadOnly`, `ReadPure`, `WriteOnly`, `ReadWrite` and `ReadPureWrite` to
+ indicate whether a field can safely be written or read (with or without side-effects). Added safe
+ `write` and `read` methods on `UniqueMmioPointer` or `SharedMmioPointer` for these.
+
+## 0.1.0
+
+Initial release.
diff --git a/crates/safe-mmio/CONTRIBUTING.md b/crates/safe-mmio/CONTRIBUTING.md
new file mode 100644
index 0000000..c88469f
--- /dev/null
+++ b/crates/safe-mmio/CONTRIBUTING.md
@@ -0,0 +1,26 @@
+# How to Contribute
+
+We'd love to accept your patches and contributions to this project. There are just a few small
+guidelines you need to follow.
+
+## Contributor License Agreement
+
+Contributions to this project must be accompanied by a Contributor License Agreement (CLA). You (or
+your employer) retain the copyright to your contribution; this simply gives us permission to use and
+redistribute your contributions as part of the project. Head over to
+<https://cla.developers.google.com/> to see your current agreements on file or to sign a new one.
+
+You generally only need to submit a CLA once, so if you've already submitted one (even if it was for
+a different project), you probably don't need to do it again.
+
+## Code Reviews
+
+All submissions, including submissions by project members, require review. We use GitHub pull
+requests for this purpose. Consult
+[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more information on using
+pull requests.
+
+## Community Guidelines
+
+This project follows
+[Google's Open Source Community Guidelines](https://opensource.google/conduct/).
diff --git a/crates/safe-mmio/Cargo.toml b/crates/safe-mmio/Cargo.toml
new file mode 100644
index 0000000..b35e64a
--- /dev/null
+++ b/crates/safe-mmio/Cargo.toml
@@ -0,0 +1,39 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "safe-mmio"
+version = "0.2.1"
+authors = ["Andrew Walbran <[email protected]>"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Types for safe MMIO device access, especially in systems with an MMU."
+readme = "README.md"
+keywords = ["mmio"]
+categories = [
+ "embedded",
+ "no-std",
+]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/google/safe-mmio"
+
+[lib]
+name = "safe_mmio"
+path = "src/lib.rs"
+
+[dependencies.zerocopy]
+version = "0.8.23"
+features = ["derive"]
diff --git a/crates/safe-mmio/LICENSE b/crates/safe-mmio/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/safe-mmio/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/safe-mmio/LICENSE-APACHE b/crates/safe-mmio/LICENSE-APACHE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/crates/safe-mmio/LICENSE-APACHE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/crates/safe-mmio/METADATA b/crates/safe-mmio/METADATA
new file mode 100644
index 0000000..4d486a6
--- /dev/null
+++ b/crates/safe-mmio/METADATA
@@ -0,0 +1,17 @@
+name: "safe-mmio"
+description: "Types for safe MMIO device access, especially in systems with an MMU."
+third_party {
+ version: "0.2.1"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 24
+ }
+ homepage: "https://crates.io/crates/safe-mmio"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/safe-mmio/safe-mmio-0.2.1.crate"
+ version: "0.2.1"
+ }
+}
diff --git a/crates/safe-mmio/MODULE_LICENSE_APACHE2 b/crates/safe-mmio/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/safe-mmio/MODULE_LICENSE_APACHE2
diff --git a/crates/safe-mmio/README.md b/crates/safe-mmio/README.md
new file mode 100644
index 0000000..6de3887
--- /dev/null
+++ b/crates/safe-mmio/README.md
@@ -0,0 +1,141 @@
+# safe-mmio
+
+[](https://crates.io/crates/safe-mmio)
+[](https://docs.rs/safe-mmio)
+
+This crate provides types for safe MMIO device access, especially in systems with an MMU.
+
+This is not an officially supported Google product.
+
+## Usage
+
+### UniqueMmioPointer
+
+The main type provided by this crate is `UniqueMmioPointer`. A `UniqueMmioPointer<T>` is roughly
+equivalent to an `&mut T` for a memory-mapped IO device. Suppose you want to construct a pointer to
+the data register of some UART device, and write some character to it:
+
+```rust
+use core::ptr::NonNull;
+use safe_mmio::UniqueMmioPointer;
+
+let mut data_register =
+ unsafe { UniqueMmioPointer::<u8>::new(NonNull::new(0x900_0000 as _).unwrap()) };
+unsafe {
+ data_register.write_unsafe(b'x');
+}
+```
+
+Depending on your platform this will either use `write_volatile` or some platform-dependent inline
+assembly to perform the MMIO write.
+
+### Safe MMIO methods
+
+If you know that a particular MMIO field is safe to access, you can use the appropriate wrapper type
+to mark that. In this case, suppose that the UART data register should only be written to:
+
+```rust
+use core::ptr::NonNull;
+use safe_mmio::{fields::WriteOnly, UniqueMmioPointer};
+
+let mut data_register: UniqueMmioPointer<WriteOnly<u8>> =
+ unsafe { UniqueMmioPointer::new(NonNull::new(0x900_0000 as _).unwrap()) };
+data_register.write(b'x');
+```
+
+### Grouping registers with a struct
+
+In practice, most devices have more than one register. To model this, you can create a struct, and
+then use the `field!` macro to project from a `UniqueMmioPointer` to the struct to a pointer to one
+of its fields:
+
+```rust
+use core::ptr::NonNull;
+use safe_mmio::{
+ field,
+ fields::{ReadOnly, ReadPure, ReadWrite, WriteOnly},
+ UniqueMmioPointer,
+};
+
+#[repr(C)]
+struct UartRegisters {
+ data: ReadWrite<u8>,
+ status: ReadPure<u8>,
+ pending_interrupt: ReadOnly<u8>,
+}
+
+let mut uart_registers: UniqueMmioPointer<UartRegisters> =
+ unsafe { UniqueMmioPointer::new(NonNull::new(0x900_0000 as _).unwrap()) };
+field!(uart_registers, data).write(b'x');
+```
+
+Methods are also provided to go from a `UniqueMmioPointer` to an array or slice to its elements.
+
+### Pure reads vs. side-effects
+
+We distinguish between fields which for which MMIO reads may have side effects (e.g. popping a byte
+from the UART's receive FIFO or clearing an interrupt status) and those for which reads are 'pure'
+with no side-effects. Reading from a `ReadOnly` or `ReadWrite` field is assumed to have
+side-effects, whereas reading from a `ReadPure` or `ReadPureWrite` must not. Reading from a
+`ReadOnly` or `ReadWrite` field requires an `&mut UniqueMmioPointer` (the same as writing), whereas
+reading from a `ReadPure` or `ReadPureWrite` field can be done with an `&UniqueMmioPointer` or
+`&SharedMmioPointer`.
+
+### Physical addresses
+
+`UniqueMmioPointer` (and `SharedMmioPointer`) is used for a pointer to a device which is mapped into
+the page table and accessible, i.e. a virtual address. Sometimes you may want to deal with the
+physical address of a device, which may or may not be mapped in. For this you can use the
+`PhysicalInstance` type. A `PhysicalInstance` doesn't let you do anything other than get the
+physical address and size of the device's MMIO region, but is intended to convey ownership. There
+should never be more than one `PhysicalInstance` pointer to the same device. This way your page
+table management code can take a `PhysicalInstance<T>` and return a `UniqueMmioPointer<T>` when a
+device is mapped into the page table.
+
+## Comparison with other MMIO crates
+
+There are a number of things that distinguish this crate from other crates providing abstractions
+for MMIO in Rust.
+
+1. We avoid creating references to MMIO address space. The Rust compiler is free to dereference
+ references whenever it likes, so constructing references to MMIO address space (even temporarily)
+ can lead to undefined behaviour. See https://github.com/rust-embedded/volatile-register/issues/10
+ for more background on this.
+2. We distinguish between MMIO reads which have side-effects (e.g. clearing an interrupt status, or
+ popping from a queue) and those which don't (e.g. just reading some status). A read which has
+ side-effects should be treated like a write and only be allowed from a unique pointer (passed via
+ &mut) whereas a read without side-effects can safely be done via a shared pointer (passed via
+ '&'), e.g. simultaneously from multiple threads.
+3. On most platforms MMIO reads and writes can be done via `read_volatile` and `write_volatile`, but
+ on aarch64 this may generate instructions which can't be virtualised. This is arguably
+ [a bug in rustc](https://github.com/rust-lang/rust/issues/131894), but in the meantime we work
+ around this by using inline assembly to generate the correct instructions for MMIO reads and
+ writes on aarch64.
+
+| Crate name | Last release | Version | Avoids references | Distinguishes reads with side-effects | Works around aarch64 volatile bug | Model | Field projection | Notes |
+| --------------------------------------------------------------- | -------------- | ------- | ----------------- | ------------------------------------- | --------------------------------- | ----------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------- |
+| safe-mmio | March 2025 | 0.2.1 | ✅ | ✅ | ✅ | struct with field wrappers | macro |
+| [derive-mmio](https://crates.io/crates/derive-mmio) | February 2025 | 0.3.0 | ✅ | ❌ | ❌ | struct with derive macro | only one level, through derive macro |
+| [volatile](https://crates.io/crates/volatile) | June 2024 | 0.6.1 | ✅ | ❌ | ❌ | struct with derive macro | macro or generated methods |
+| [volatile-register](https://crates.io/crates/volatile-register) | October 2023 | 0.2.2 | ❌ | ❌ | ❌ | struct with field wrappers | manual (references) |
+| [tock-registers](https://crates.io/crates/tock-registers) | September 2023 | 0.9.0 | ❌ | ❌ | ❌ | macros to define fields and structs | manual (references) | Also covers CPU registers, and bitfields |
+| [mmio](https://crates.io/crates/mmio) | May 2021 | 2.1.0 | ✅ | ❌ | ❌ | only deals with individual fields | ❌ |
+| [rumio](https://crates.io/crates/rumio) | March 2021 | 0.2.0 | ✅ | ❌ | ❌ | macros to define fields and structs | generated methods | Also covers CPU registers, and bitfields |
+| [vcell](https://crates.io/crates/vcell) | January 2021 | 0.1.3 | ❌ | ❌ | ❌ | plain struct | manual (references) |
+| [register](https://crates.io/crates/register) | January 2021 | 1.0.2 | ❌ | ❌ | ❌ | macros to define fields and structs | manual (references) | Deprecated in favour of tock-registers. Also covers CPU registers, and bitfields. |
+
+## License
+
+Licensed under either of
+
+- Apache License, Version 2.0
+ ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+- MIT license
+ ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
+
+at your option.
+
+## Contributing
+
+If you want to contribute to the project, see details of
+[how we accept contributions](CONTRIBUTING.md).
diff --git a/crates/safe-mmio/TEST_MAPPING b/crates/safe-mmio/TEST_MAPPING
new file mode 100644
index 0000000..b73c0c7
--- /dev/null
+++ b/crates/safe-mmio/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "postsubmit": [
+ {
+ "name": "safe-mmio_test_src_lib"
+ }
+ ]
+}
diff --git a/crates/safe-mmio/android_config.toml b/crates/safe-mmio/android_config.toml
new file mode 100644
index 0000000..13484b4
--- /dev/null
+++ b/crates/safe-mmio/android_config.toml
@@ -0,0 +1 @@
+deletions = ["LICENSE"]
diff --git a/crates/safe-mmio/cargo_embargo.json b/crates/safe-mmio/cargo_embargo.json
new file mode 100644
index 0000000..08128f4
--- /dev/null
+++ b/crates/safe-mmio/cargo_embargo.json
@@ -0,0 +1,8 @@
+{
+ "package": {
+ "safe-mmio": { "force_rlib": true, "host_supported": false, "no_std": true }
+ },
+ "module_name_overrides": { "libzerocopy": "libzerocopy_nostd" },
+ "run_cargo": false,
+ "tests": true
+}
diff --git a/crates/safe-mmio/src/aarch64_mmio.rs b/crates/safe-mmio/src/aarch64_mmio.rs
new file mode 100644
index 0000000..4a8b348
--- /dev/null
+++ b/crates/safe-mmio/src/aarch64_mmio.rs
@@ -0,0 +1,185 @@
+// Copyright 2025 The safe-mmio Authors.
+// This project is dual-licensed under Apache 2.0 and MIT terms.
+// See LICENSE-APACHE and LICENSE-MIT for details.
+
+use crate::{SharedMmioPointer, UniqueMmioPointer};
+use core::ptr::NonNull;
+use zerocopy::{FromBytes, Immutable, IntoBytes};
+
+macro_rules! asm_mmio {
+ ($t:ty, $read_name:ident, $read_assembly:literal, $write_name:ident, $write_assembly:literal) => {
+ unsafe fn $read_name(ptr: *const $t) -> $t {
+ let value;
+ unsafe {
+ core::arch::asm!(
+ $read_assembly,
+ value = out(reg) value,
+ ptr = in(reg) ptr,
+ );
+ }
+ value
+ }
+
+ unsafe fn $write_name(ptr: *mut $t, value: $t) {
+ unsafe {
+ core::arch::asm!(
+ $write_assembly,
+ value = in(reg) value,
+ ptr = in(reg) ptr,
+ );
+ }
+ }
+ };
+}
+
+asm_mmio!(
+ u8,
+ read_u8,
+ "ldrb {value:w}, [{ptr}]",
+ write_u8,
+ "strb {value:w}, [{ptr}]"
+);
+asm_mmio!(
+ u16,
+ read_u16,
+ "ldrh {value:w}, [{ptr}]",
+ write_u16,
+ "strh {value:w}, [{ptr}]"
+);
+asm_mmio!(
+ u32,
+ read_u32,
+ "ldr {value:w}, [{ptr}]",
+ write_u32,
+ "str {value:w}, [{ptr}]"
+);
+asm_mmio!(
+ u64,
+ read_u64,
+ "ldr {value:x}, [{ptr}]",
+ write_u64,
+ "str {value:x}, [{ptr}]"
+);
+
+impl<T: FromBytes + IntoBytes> UniqueMmioPointer<'_, T> {
+ /// Performs an MMIO read and returns the value.
+ ///
+ /// If `T` is exactly 1, 2, 4 or 8 bytes long then this will be a single operation. Otherwise
+ /// it will be split into several, reading chunks as large as possible.
+ ///
+ /// Note that this takes `&mut self` rather than `&self` because an MMIO read may cause
+ /// side-effects that change the state of the device.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO read from.
+ pub unsafe fn read_unsafe(&mut self) -> T {
+ unsafe { mmio_read(self.regs) }
+ }
+}
+
+impl<T: Immutable + IntoBytes> UniqueMmioPointer<'_, T> {
+ /// Performs an MMIO write of the given value.
+ ///
+ /// If `T` is exactly 1, 2, 4 or 8 bytes long then this will be a single operation. Otherwise
+ /// it will be split into several, writing chunks as large as possible.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO write to.
+ pub unsafe fn write_unsafe(&self, value: T) {
+ match size_of::<T>() {
+ 1 => unsafe { write_u8(self.regs.cast().as_ptr(), value.as_bytes()[0]) },
+ 2 => unsafe { write_u16(self.regs.cast().as_ptr(), convert(value)) },
+ 4 => unsafe { write_u32(self.regs.cast().as_ptr(), convert(value)) },
+ 8 => unsafe { write_u64(self.regs.cast().as_ptr(), convert(value)) },
+ _ => unsafe { write_slice(self.regs.cast(), value.as_bytes()) },
+ }
+ }
+}
+
+impl<T: FromBytes + IntoBytes> SharedMmioPointer<'_, T> {
+ /// Performs an MMIO read and returns the value.
+ ///
+ /// If `T` is exactly 1, 2, 4 or 8 bytes long then this will be a single operation. Otherwise
+ /// it will be split into several, reading chunks as large as possible.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO read from, and doing so must not cause any
+ /// side-effects.
+ pub unsafe fn read_unsafe(&self) -> T {
+ unsafe { mmio_read(self.regs) }
+ }
+}
+
+/// Performs an MMIO read and returns the value.
+///
+/// # Safety
+///
+/// The pointer must be valid to perform an MMIO read from.
+unsafe fn mmio_read<T: FromBytes + IntoBytes>(ptr: NonNull<T>) -> T {
+ match size_of::<T>() {
+ 1 => convert(unsafe { read_u8(ptr.cast().as_ptr()) }),
+ 2 => convert(unsafe { read_u16(ptr.cast().as_ptr()) }),
+ 4 => convert(unsafe { read_u32(ptr.cast().as_ptr()) }),
+ 8 => convert(unsafe { read_u64(ptr.cast().as_ptr()) }),
+ _ => {
+ let mut value = T::new_zeroed();
+ unsafe { read_slice(ptr.cast(), value.as_mut_bytes()) };
+ value
+ }
+ }
+}
+
+fn convert<T: Immutable + IntoBytes, U: FromBytes>(value: T) -> U {
+ U::read_from_bytes(value.as_bytes()).unwrap()
+}
+
+unsafe fn write_slice(ptr: NonNull<u8>, slice: &[u8]) {
+ if let Some((first, rest)) = slice.split_at_checked(8) {
+ unsafe {
+ write_u64(ptr.cast().as_ptr(), u64::read_from_bytes(first).unwrap());
+ write_slice(ptr.add(8), rest);
+ }
+ } else if let Some((first, rest)) = slice.split_at_checked(4) {
+ unsafe {
+ write_u32(ptr.cast().as_ptr(), u32::read_from_bytes(first).unwrap());
+ write_slice(ptr.add(4), rest);
+ }
+ } else if let Some((first, rest)) = slice.split_at_checked(2) {
+ unsafe {
+ write_u16(ptr.cast().as_ptr(), u16::read_from_bytes(first).unwrap());
+ write_slice(ptr.add(2), rest);
+ }
+ } else if let [first, rest @ ..] = slice {
+ unsafe {
+ write_u8(ptr.as_ptr(), *first);
+ write_slice(ptr.add(1), rest);
+ }
+ }
+}
+
+unsafe fn read_slice(ptr: NonNull<u8>, slice: &mut [u8]) {
+ if let Some((first, rest)) = slice.split_at_mut_checked(8) {
+ unsafe {
+ read_u64(ptr.cast().as_ptr()).write_to(first).unwrap();
+ read_slice(ptr.add(8), rest);
+ }
+ } else if let Some((first, rest)) = slice.split_at_mut_checked(4) {
+ unsafe {
+ read_u32(ptr.cast().as_ptr()).write_to(first).unwrap();
+ read_slice(ptr.add(4), rest);
+ }
+ } else if let Some((first, rest)) = slice.split_at_mut_checked(2) {
+ unsafe {
+ read_u16(ptr.cast().as_ptr()).write_to(first).unwrap();
+ read_slice(ptr.add(2), rest);
+ }
+ } else if let [first, rest @ ..] = slice {
+ unsafe {
+ *first = read_u8(ptr.as_ptr());
+ read_slice(ptr.add(1), rest);
+ }
+ }
+}
diff --git a/crates/safe-mmio/src/fields.rs b/crates/safe-mmio/src/fields.rs
new file mode 100644
index 0000000..6197437
--- /dev/null
+++ b/crates/safe-mmio/src/fields.rs
@@ -0,0 +1,35 @@
+// Copyright 2025 The safe-mmio Authors.
+// This project is dual-licensed under Apache 2.0 and MIT terms.
+// See LICENSE-APACHE and LICENSE-MIT for details.
+
+//! Wrapper types for MMIO fields.
+
+use zerocopy::{FromBytes, Immutable, IntoBytes, KnownLayout};
+
+/// Wrapper for a field which may safely be read but not written. Reading may cause side-effects,
+/// changing the state of the device in some way.
+#[derive(Clone, Debug, Default, Eq, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
+#[repr(transparent)]
+pub struct ReadOnly<T>(pub T);
+
+/// Wrapper for a field which may safely be read with no side-effects but not written.
+#[derive(Clone, Debug, Default, Eq, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
+#[repr(transparent)]
+pub struct ReadPure<T>(pub T);
+
+/// Wrapper for a field which may safely be written but not read.
+#[derive(Clone, Debug, Default, Eq, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
+#[repr(transparent)]
+pub struct WriteOnly<T>(pub T);
+
+/// Wrapper for a field which may safely be written and read. Reading may cause side-effects,
+/// changing the state of the device in some way.
+#[derive(Clone, Debug, Default, Eq, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
+#[repr(transparent)]
+pub struct ReadWrite<T>(pub T);
+
+/// Wrapper for a field which may safely be written (with side-effects) and read with no
+/// side-effects.
+#[derive(Clone, Debug, Default, Eq, FromBytes, Immutable, IntoBytes, PartialEq)]
+#[repr(transparent)]
+pub struct ReadPureWrite<T>(pub T);
diff --git a/crates/safe-mmio/src/lib.rs b/crates/safe-mmio/src/lib.rs
new file mode 100644
index 0000000..cdc65f7
--- /dev/null
+++ b/crates/safe-mmio/src/lib.rs
@@ -0,0 +1,580 @@
+// Copyright 2025 The safe-mmio Authors.
+// This project is dual-licensed under Apache 2.0 and MIT terms.
+// See LICENSE-APACHE and LICENSE-MIT for details.
+
+//! Types for safe MMIO device access, especially in systems with an MMU.
+
+#![no_std]
+#![deny(clippy::undocumented_unsafe_blocks)]
+#![deny(unsafe_op_in_unsafe_fn)]
+
+#[cfg(target_arch = "aarch64")]
+mod aarch64_mmio;
+pub mod fields;
+mod physical;
+#[cfg(not(target_arch = "aarch64"))]
+mod volatile_mmio;
+
+use crate::fields::{ReadOnly, ReadPure, ReadPureWrite, ReadWrite, WriteOnly};
+use core::{array, fmt::Debug, marker::PhantomData, ops::Deref, ptr, ptr::NonNull};
+pub use physical::PhysicalInstance;
+use zerocopy::{FromBytes, Immutable, IntoBytes};
+
+/// A unique owned pointer to the registers of some MMIO device.
+///
+/// It is guaranteed to be valid and unique; no other access to the MMIO space of the device may
+/// happen for the lifetime `'a`.
+///
+/// A `UniqueMmioPointer` may be created from a mutable reference, but this should only be used for
+/// testing purposes, as references should never be constructed for real MMIO address space.
+pub struct UniqueMmioPointer<'a, T: ?Sized>(SharedMmioPointer<'a, T>);
+
+// Implement Debug, Eq and PartialEq manually rather than deriving to avoid an unneccessary bound on
+// T.
+
+impl<T: ?Sized> Debug for UniqueMmioPointer<'_, T> {
+ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+ f.debug_tuple("UniqueMmioPointer")
+ .field(&self.0.regs)
+ .finish()
+ }
+}
+
+impl<T: ?Sized> PartialEq for UniqueMmioPointer<'_, T> {
+ fn eq(&self, other: &Self) -> bool {
+ self.0 == other.0
+ }
+}
+
+impl<T: ?Sized> Eq for UniqueMmioPointer<'_, T> {}
+
+impl<T: ?Sized> UniqueMmioPointer<'_, T> {
+ /// Creates a new `UniqueMmioPointer` from a non-null raw pointer.
+ ///
+ /// # Safety
+ ///
+ /// `regs` must be a properly aligned and valid pointer to some MMIO address space of type T,
+ /// which is mapped as device memory and valid to read and write from any thread with volatile
+ /// operations. There must not be any other aliases which are used to access the same MMIO
+ /// region while this `UniqueMmioPointer` exists.
+ ///
+ /// If `T` contains any fields wrapped in [`ReadOnly`], [`WriteOnly`] or [`ReadWrite`] then they
+ /// must indeed be safe to perform MMIO reads or writes on.
+ pub unsafe fn new(regs: NonNull<T>) -> Self {
+ Self(SharedMmioPointer {
+ regs,
+ phantom: PhantomData,
+ })
+ }
+
+ /// Creates a new `UniqueMmioPointer` with the same lifetime as this one.
+ ///
+ /// This is used internally by the [`field!`] macro and shouldn't be called directly.
+ ///
+ /// # Safety
+ ///
+ /// `regs` must be a properly aligned and valid pointer to some MMIO address space of type T,
+ /// within the allocation that `self` points to.
+ pub unsafe fn child<U>(&mut self, regs: NonNull<U>) -> UniqueMmioPointer<U> {
+ UniqueMmioPointer(SharedMmioPointer {
+ regs,
+ phantom: PhantomData,
+ })
+ }
+
+ /// Returns a raw mut pointer to the MMIO registers.
+ pub fn ptr_mut(&mut self) -> *mut T {
+ self.0.regs.as_ptr()
+ }
+
+ /// Returns a `NonNull<T>` pointer to the MMIO registers.
+ pub fn ptr_nonnull(&mut self) -> NonNull<T> {
+ self.0.regs
+ }
+}
+
+impl<T: FromBytes + IntoBytes> UniqueMmioPointer<'_, ReadWrite<T>> {
+ /// Performs an MMIO read of the entire `T`.
+ pub fn read(&mut self) -> T {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `ReadWrite` implies that it is safe to read.
+ unsafe { self.read_unsafe().0 }
+ }
+}
+
+impl<T: Immutable + IntoBytes> UniqueMmioPointer<'_, ReadWrite<T>> {
+ /// Performs an MMIO write of the entire `T`.
+ pub fn write(&mut self, value: T) {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `ReadWrite` implies that it is safe to write.
+ unsafe {
+ self.write_unsafe(ReadWrite(value));
+ }
+ }
+}
+
+impl<T: Immutable + IntoBytes> UniqueMmioPointer<'_, ReadPureWrite<T>> {
+ /// Performs an MMIO write of the entire `T`.
+ pub fn write(&mut self, value: T) {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `ReadPureWrite` implies that it is safe to write.
+ unsafe {
+ self.write_unsafe(ReadPureWrite(value));
+ }
+ }
+}
+
+impl<T: FromBytes + IntoBytes> UniqueMmioPointer<'_, ReadOnly<T>> {
+ /// Performs an MMIO read of the entire `T`.
+ pub fn read(&mut self) -> T {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `ReadOnly` implies that it is safe to read.
+ unsafe { self.read_unsafe().0 }
+ }
+}
+
+impl<T: Immutable + IntoBytes> UniqueMmioPointer<'_, WriteOnly<T>> {
+ /// Performs an MMIO write of the entire `T`.
+ pub fn write(&mut self, value: T) {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `WriteOnly` implies that it is safe to write.
+ unsafe {
+ self.write_unsafe(WriteOnly(value));
+ }
+ }
+}
+
+impl<T> UniqueMmioPointer<'_, [T]> {
+ /// Returns a `UniqueMmioPointer` to an element of this slice, or `None` if the index is out of
+ /// bounds.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use safe_mmio::{UniqueMmioPointer, fields::ReadWrite};
+ ///
+ /// let mut slice: UniqueMmioPointer<[ReadWrite<u32>]>;
+ /// # let mut fake = [ReadWrite(1), ReadWrite(2), ReadWrite(3)];
+ /// # slice = UniqueMmioPointer::from(fake.as_mut_slice());
+ /// let mut element = slice.get(1).unwrap();
+ /// element.write(42);
+ /// ```
+ pub fn get(&mut self, index: usize) -> Option<UniqueMmioPointer<T>> {
+ if index >= self.len() {
+ return None;
+ }
+ // SAFETY: self.ptr_mut() is guaranteed to return a pointer that is valid for MMIO and
+ // unique, as promised by the caller of `UniqueMmioPointer::new`.
+ let regs = NonNull::new(unsafe { &raw mut (*self.ptr_mut())[index] }).unwrap();
+ // SAFETY: We created regs from the raw slice in self.regs, so it must also be valid, unique
+ // and within the allocation of self.regs.
+ Some(unsafe { self.child(regs) })
+ }
+}
+
+impl<T, const LEN: usize> UniqueMmioPointer<'_, [T; LEN]> {
+ /// Splits a `UniqueMmioPointer` to an array into an array of `UniqueMmioPointer`s.
+ pub fn split(&mut self) -> [UniqueMmioPointer<T>; LEN] {
+ array::from_fn(|i| {
+ UniqueMmioPointer(SharedMmioPointer {
+ // SAFETY: self.regs is always unique and valid for MMIO access. We make sure the
+ // pointers we split it into don't overlap, so the same applies to each of them.
+ regs: NonNull::new(unsafe { &raw mut (*self.ptr_mut())[i] }).unwrap(),
+ phantom: PhantomData,
+ })
+ })
+ }
+
+ /// Returns a `UniqueMmioPointer` to an element of this array, or `None` if the index is out of
+ /// bounds.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use safe_mmio::{UniqueMmioPointer, fields::ReadWrite};
+ ///
+ /// let mut slice: UniqueMmioPointer<[ReadWrite<u32>; 3]>;
+ /// # let mut fake = [ReadWrite(1), ReadWrite(2), ReadWrite(3)];
+ /// # slice = UniqueMmioPointer::from(&mut fake);
+ /// let mut element = slice.get(1).unwrap();
+ /// element.write(42);
+ /// ```
+ pub fn get(&mut self, index: usize) -> Option<UniqueMmioPointer<T>> {
+ if index >= LEN {
+ return None;
+ }
+ // SAFETY: self.ptr_mut() is guaranteed to return a pointer that is valid for MMIO and
+ // unique, as promised by the caller of `UniqueMmioPointer::new`.
+ let regs = NonNull::new(unsafe { &raw mut (*self.ptr_mut())[index] }).unwrap();
+ // SAFETY: We created regs from the raw array in self.regs, so it must also be valid, unique
+ // and within the allocation of self.regs.
+ Some(unsafe { self.child(regs) })
+ }
+}
+
+impl<'a, T: ?Sized> From<&'a mut T> for UniqueMmioPointer<'a, T> {
+ fn from(r: &'a mut T) -> Self {
+ Self(SharedMmioPointer {
+ regs: r.into(),
+ phantom: PhantomData,
+ })
+ }
+}
+
+impl<'a, T: ?Sized> Deref for UniqueMmioPointer<'a, T> {
+ type Target = SharedMmioPointer<'a, T>;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
+/// A shared pointer to the registers of some MMIO device.
+///
+/// It is guaranteed to be valid but unlike [`UniqueMmioPointer`] may not be unique.
+pub struct SharedMmioPointer<'a, T: ?Sized> {
+ regs: NonNull<T>,
+ phantom: PhantomData<&'a T>,
+}
+
+// Implement Debug, Eq and PartialEq manually rather than deriving to avoid an unneccessary bound on
+// T.
+
+impl<T: ?Sized> Debug for SharedMmioPointer<'_, T> {
+ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+ f.debug_tuple("SharedMmioPointer")
+ .field(&self.regs)
+ .finish()
+ }
+}
+
+impl<T: ?Sized> PartialEq for SharedMmioPointer<'_, T> {
+ fn eq(&self, other: &Self) -> bool {
+ ptr::eq(self.regs.as_ptr(), other.regs.as_ptr())
+ }
+}
+
+impl<T: ?Sized> Eq for SharedMmioPointer<'_, T> {}
+
+impl<T: ?Sized> Clone for SharedMmioPointer<'_, T> {
+ fn clone(&self) -> Self {
+ Self {
+ regs: self.regs.clone(),
+ phantom: self.phantom.clone(),
+ }
+ }
+}
+
+impl<T: ?Sized> SharedMmioPointer<'_, T> {
+ /// Creates a new `SharedMmioPointer` with the same lifetime as this one.
+ ///
+ /// This is used internally by the [`field_shared!`] macro and shouldn't be called directly.
+ ///
+ /// # Safety
+ ///
+ /// `regs` must be a properly aligned and valid pointer to some MMIO address space of type T,
+ /// within the allocation that `self` points to.
+ pub unsafe fn child<U>(&self, regs: NonNull<U>) -> SharedMmioPointer<U> {
+ SharedMmioPointer {
+ regs,
+ phantom: PhantomData,
+ }
+ }
+
+ /// Returns a raw const pointer to the MMIO registers.
+ pub fn ptr(&self) -> *const T {
+ self.regs.as_ptr()
+ }
+}
+
+// SAFETY: A `SharedMmioPointer` always originates either from a reference or from a
+// `UniqueMmioPointer`. The caller of `UniqueMmioPointer::new` promises that the MMIO registers can
+// be accessed from any thread.
+unsafe impl<T: ?Sized + Send + Sync> Send for SharedMmioPointer<'_, T> {}
+
+impl<'a, T: ?Sized> From<&'a T> for SharedMmioPointer<'a, T> {
+ fn from(r: &'a T) -> Self {
+ Self {
+ regs: r.into(),
+ phantom: PhantomData,
+ }
+ }
+}
+
+impl<'a, T: ?Sized> From<UniqueMmioPointer<'a, T>> for SharedMmioPointer<'a, T> {
+ fn from(unique: UniqueMmioPointer<'a, T>) -> Self {
+ unique.0
+ }
+}
+
+impl<T: FromBytes + IntoBytes> SharedMmioPointer<'_, ReadPure<T>> {
+ /// Performs an MMIO read of the entire `T`.
+ pub fn read(&self) -> T {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space, and `T`
+ // being wrapped in `ReadPure` implies that it is safe to read from a shared reference
+ // because doing so has no side-effects.
+ unsafe { self.read_unsafe().0 }
+ }
+}
+
+impl<T: FromBytes + IntoBytes> SharedMmioPointer<'_, ReadPureWrite<T>> {
+ /// Performs an MMIO read of the entire `T`.
+ pub fn read(&self) -> T {
+ // SAFETY: self.regs is always a valid pointer to MMIO address space, and `T`
+ // being wrapped in `ReadPureWrite` implies that it is safe to read from a shared reference
+ // because doing so has no side-effects.
+ unsafe { self.read_unsafe().0 }
+ }
+}
+
+impl<T> SharedMmioPointer<'_, [T]> {
+ /// Returns a `SharedMmioPointer` to an element of this slice, or `None` if the index is out of
+ /// bounds.
+ pub fn get(&self, index: usize) -> Option<SharedMmioPointer<T>> {
+ if index >= self.len() {
+ return None;
+ }
+ // SAFETY: self.regs is always unique and valid for MMIO access.
+ let regs = NonNull::new(unsafe { &raw mut (*self.regs.as_ptr())[index] }).unwrap();
+ // SAFETY: We created regs from the raw slice in self.regs, so it must also be valid, unique
+ // and within the allocation of self.regs.
+ Some(unsafe { self.child(regs) })
+ }
+
+ /// Returns the length of the slice.
+ pub const fn len(&self) -> usize {
+ self.regs.len()
+ }
+
+ /// Returns whether the slice is empty.
+ pub const fn is_empty(&self) -> bool {
+ self.regs.is_empty()
+ }
+}
+
+impl<T, const LEN: usize> SharedMmioPointer<'_, [T; LEN]> {
+ /// Splits a `SharedMmioPointer` to an array into an array of `SharedMmioPointer`s.
+ pub fn split(&self) -> [SharedMmioPointer<T>; LEN] {
+ array::from_fn(|i| SharedMmioPointer {
+ // SAFETY: self.regs is always unique and valid for MMIO access. We make sure the
+ // pointers we split it into don't overlap, so the same applies to each of them.
+ regs: NonNull::new(unsafe { &raw mut (*self.regs.as_ptr())[i] }).unwrap(),
+ phantom: PhantomData,
+ })
+ }
+
+ /// Returns a `SharedMmioPointer` to an element of this array, or `None` if the index is out of
+ /// bounds.
+ pub fn get(&self, index: usize) -> Option<SharedMmioPointer<T>> {
+ if index >= LEN {
+ return None;
+ }
+ // SAFETY: self.regs is always unique and valid for MMIO access.
+ let regs = NonNull::new(unsafe { &raw mut (*self.regs.as_ptr())[index] }).unwrap();
+ // SAFETY: We created regs from the raw array in self.regs, so it must also be valid, unique
+ // and within the allocation of self.regs.
+ Some(unsafe { self.child(regs) })
+ }
+}
+
+/// Gets a `UniqueMmioPointer` to a field of a type wrapped in a `UniqueMmioPointer`.
+#[macro_export]
+macro_rules! field {
+ ($mmio_pointer:expr, $field:ident) => {{
+ // Make sure $mmio_pointer is the right type.
+ let mmio_pointer: &mut $crate::UniqueMmioPointer<_> = &mut $mmio_pointer;
+ // SAFETY: ptr_mut is guaranteed to return a valid pointer for MMIO, so the pointer to the
+ // field must also be valid. MmioPointer::child gives it the same lifetime as the original
+ // pointer.
+ unsafe {
+ let child_pointer =
+ core::ptr::NonNull::new(&raw mut (*mmio_pointer.ptr_mut()).$field).unwrap();
+ mmio_pointer.child(child_pointer)
+ }
+ }};
+}
+
+/// Gets a `SharedMmioPointer` to a field of a type wrapped in a `SharedMmioPointer`.
+#[macro_export]
+macro_rules! field_shared {
+ ($mmio_pointer:expr, $field:ident) => {{
+ // Make sure $mmio_pointer is the right type.
+ let mmio_pointer: &$crate::SharedMmioPointer<_> = &$mmio_pointer;
+ // SAFETY: ptr_mut is guaranteed to return a valid pointer for MMIO, so the pointer to the
+ // field must also be valid. MmioPointer::child gives it the same lifetime as the original
+ // pointer.
+ unsafe {
+ let child_pointer =
+ core::ptr::NonNull::new((&raw const (*mmio_pointer.ptr()).$field).cast_mut())
+ .unwrap();
+ mmio_pointer.child(child_pointer)
+ }
+ }};
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn fields() {
+ struct Foo {
+ a: ReadWrite<u32>,
+ b: ReadOnly<u32>,
+ c: ReadPure<u32>,
+ }
+
+ let mut foo = Foo {
+ a: ReadWrite(1),
+ b: ReadOnly(2),
+ c: ReadPure(3),
+ };
+ let mut owned: UniqueMmioPointer<Foo> = UniqueMmioPointer::from(&mut foo);
+
+ let mut owned_a: UniqueMmioPointer<ReadWrite<u32>> = field!(owned, a);
+ assert_eq!(owned_a.read(), 1);
+ owned_a.write(42);
+ assert_eq!(owned_a.read(), 42);
+ field!(owned, a).write(44);
+ assert_eq!(field!(owned, a).read(), 44);
+
+ let mut owned_b: UniqueMmioPointer<ReadOnly<u32>> = field!(owned, b);
+ assert_eq!(owned_b.read(), 2);
+
+ let owned_c: UniqueMmioPointer<ReadPure<u32>> = field!(owned, c);
+ assert_eq!(owned_c.read(), 3);
+ assert_eq!(field!(owned, c).read(), 3);
+ }
+
+ #[test]
+ fn shared_fields() {
+ struct Foo {
+ a: ReadPureWrite<u32>,
+ b: ReadPure<u32>,
+ }
+
+ let foo = Foo {
+ a: ReadPureWrite(1),
+ b: ReadPure(2),
+ };
+ let shared: SharedMmioPointer<Foo> = SharedMmioPointer::from(&foo);
+
+ let shared_a: SharedMmioPointer<ReadPureWrite<u32>> = field_shared!(shared, a);
+ assert_eq!(shared_a.read(), 1);
+ assert_eq!(field_shared!(shared, a).read(), 1);
+
+ let shared_b: SharedMmioPointer<ReadPure<u32>> = field_shared!(shared, b);
+ assert_eq!(shared_b.read(), 2);
+ }
+
+ #[test]
+ fn shared_from_unique() {
+ struct Foo {
+ a: ReadPureWrite<u32>,
+ b: ReadPure<u32>,
+ }
+
+ let mut foo = Foo {
+ a: ReadPureWrite(1),
+ b: ReadPure(2),
+ };
+ let unique: UniqueMmioPointer<Foo> = UniqueMmioPointer::from(&mut foo);
+
+ let shared_a: SharedMmioPointer<ReadPureWrite<u32>> = field_shared!(unique, a);
+ assert_eq!(shared_a.read(), 1);
+
+ let shared_b: SharedMmioPointer<ReadPure<u32>> = field_shared!(unique, b);
+ assert_eq!(shared_b.read(), 2);
+ }
+
+ #[test]
+ fn restricted_fields() {
+ struct Foo {
+ r: ReadOnly<u32>,
+ w: WriteOnly<u32>,
+ u: u32,
+ }
+
+ let mut foo = Foo {
+ r: ReadOnly(1),
+ w: WriteOnly(2),
+ u: 3,
+ };
+ let mut owned: UniqueMmioPointer<Foo> = UniqueMmioPointer::from(&mut foo);
+
+ let mut owned_r: UniqueMmioPointer<ReadOnly<u32>> = field!(owned, r);
+ assert_eq!(owned_r.read(), 1);
+
+ let mut owned_w: UniqueMmioPointer<WriteOnly<u32>> = field!(owned, w);
+ owned_w.write(42);
+
+ let mut owned_u: UniqueMmioPointer<u32> = field!(owned, u);
+ // SAFETY: 'u' is safe to read or write because it's just a fake.
+ unsafe {
+ assert_eq!(owned_u.read_unsafe(), 3);
+ owned_u.write_unsafe(42);
+ assert_eq!(owned_u.read_unsafe(), 42);
+ }
+ }
+
+ #[test]
+ fn array() {
+ let mut foo = [ReadWrite(1), ReadWrite(2), ReadWrite(3)];
+ let mut owned = UniqueMmioPointer::from(&mut foo);
+
+ let mut parts = owned.split();
+ assert_eq!(parts[0].read(), 1);
+ assert_eq!(parts[1].read(), 2);
+ assert_eq!(owned.split()[2].read(), 3);
+ }
+
+ #[test]
+ fn array_shared() {
+ let foo = [ReadPure(1), ReadPure(2), ReadPure(3)];
+ let shared = SharedMmioPointer::from(&foo);
+
+ let parts = shared.split();
+ assert_eq!(parts[0].read(), 1);
+ assert_eq!(parts[1].read(), 2);
+ assert_eq!(shared.split()[2].read(), 3);
+ }
+
+ #[test]
+ fn slice() {
+ let mut foo = [ReadWrite(1), ReadWrite(2), ReadWrite(3)];
+ let mut owned = UniqueMmioPointer::from(foo.as_mut_slice());
+
+ assert!(!owned.ptr().is_null());
+ assert!(!owned.ptr_mut().is_null());
+
+ assert!(!owned.is_empty());
+ assert_eq!(owned.len(), 3);
+
+ let mut first: UniqueMmioPointer<ReadWrite<i32>> = owned.get(0).unwrap();
+ assert_eq!(first.read(), 1);
+
+ let mut second: UniqueMmioPointer<ReadWrite<i32>> = owned.get(1).unwrap();
+ assert_eq!(second.read(), 2);
+
+ assert!(owned.get(3).is_none());
+ }
+
+ #[test]
+ fn slice_shared() {
+ let foo = [ReadPure(1), ReadPure(2), ReadPure(3)];
+ let shared = SharedMmioPointer::from(foo.as_slice());
+
+ assert!(!shared.ptr().is_null());
+
+ assert!(!shared.is_empty());
+ assert_eq!(shared.len(), 3);
+
+ let first: SharedMmioPointer<ReadPure<i32>> = shared.get(0).unwrap();
+ assert_eq!(first.read(), 1);
+
+ let second: SharedMmioPointer<ReadPure<i32>> = shared.get(1).unwrap();
+ assert_eq!(second.read(), 2);
+
+ assert!(shared.get(3).is_none());
+ }
+}
diff --git a/crates/safe-mmio/src/physical.rs b/crates/safe-mmio/src/physical.rs
new file mode 100644
index 0000000..97308d0
--- /dev/null
+++ b/crates/safe-mmio/src/physical.rs
@@ -0,0 +1,41 @@
+// Copyright 2025 The safe-mmio Authors.
+// This project is dual-licensed under Apache 2.0 and MIT terms.
+// See LICENSE-APACHE and LICENSE-MIT for details.
+
+use core::{
+ fmt::{self, Debug, Formatter},
+ marker::PhantomData,
+};
+
+/// The physical instance of some device's MMIO space.
+pub struct PhysicalInstance<T> {
+ pa: usize,
+ _phantom: PhantomData<T>,
+}
+
+impl<T> Debug for PhysicalInstance<T> {
+ fn fmt(&self, f: &mut Formatter) -> fmt::Result {
+ f.debug_struct("PhysicalInstance")
+ .field("pa", &self.pa)
+ .field("size", &size_of::<T>())
+ .finish()
+ }
+}
+
+impl<T> PhysicalInstance<T> {
+ /// # Safety
+ ///
+ /// This must refer to the physical address of a real set of device registers of type `T`, and
+ /// there must only ever be a single `PhysicalInstance` created for those device registers.
+ pub unsafe fn new(pa: usize) -> Self {
+ Self {
+ pa,
+ _phantom: PhantomData,
+ }
+ }
+
+ /// Returns the physical base address of the device's registers.
+ pub fn pa(&self) -> usize {
+ self.pa
+ }
+}
diff --git a/crates/safe-mmio/src/volatile_mmio.rs b/crates/safe-mmio/src/volatile_mmio.rs
new file mode 100644
index 0000000..84c180b
--- /dev/null
+++ b/crates/safe-mmio/src/volatile_mmio.rs
@@ -0,0 +1,45 @@
+// Copyright 2025 The safe-mmio Authors.
+// This project is dual-licensed under Apache 2.0 and MIT terms.
+// See LICENSE-APACHE and LICENSE-MIT for details.
+
+use crate::{SharedMmioPointer, UniqueMmioPointer};
+
+impl<T> UniqueMmioPointer<'_, T> {
+ /// Performs an MMIO read of the entire `T`.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO read from.
+ pub unsafe fn read_unsafe(&mut self) -> T {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space.
+ unsafe { self.regs.read_volatile() }
+ }
+
+ /// Performs an MMIO write of the entire `T`.
+ ///
+ /// Note that this takes `&mut self` rather than `&self` because an MMIO read may cause
+ /// side-effects that change the state of the device.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO write to.
+ pub unsafe fn write_unsafe(&mut self, value: T) {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space.
+ unsafe {
+ self.regs.write_volatile(value);
+ }
+ }
+}
+
+impl<T> SharedMmioPointer<'_, T> {
+ /// Performs an MMIO read of the entire `T`.
+ ///
+ /// # Safety
+ ///
+ /// This field must be safe to perform an MMIO read from, and doing so must not cause any
+ /// side-effects.
+ pub unsafe fn read_unsafe(&self) -> T {
+ // SAFETY: self.regs is always a valid and unique pointer to MMIO address space.
+ unsafe { self.regs.read_volatile() }
+ }
+}
diff --git a/crates/same-file/.android-checksum.json b/crates/same-file/.android-checksum.json
index 8ce3b47..75610f5 100644
--- a/crates/same-file/.android-checksum.json
+++ b/crates/same-file/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"df61202ba98cd6f99526daecdef7875e59234e18a4bce455f598d77e4333f832","Android.bp":"507d6284c7a3657740532970e3b79e8cca1c1499498abb0c6ba013e3d384df9b","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.lock":"8d8969f8e9e5456411b0bbc710f5c80dc6a27f4d540a5d55aec0e723450f4ffe","Cargo.toml":"6c2c094095b55bbc5b29c20b070384724e2a64634972408095e437beaa45f4ca","LICENSE":"55b7e47266569be766b3b32782cedf1197782151bcc39d9009f77ea363d28826","LICENSE-MIT":"55b7e47266569be766b3b32782cedf1197782151bcc39d9009f77ea363d28826","METADATA":"bb29f3d1fc53d094ee1e9bfe9405fcd2f55e80ab68027ead5a0fafee4801a074","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"af3ac2a36379bda27745a7b26d4c25e0da15da001634d99c33c410c28dd40fc1","TEST_MAPPING":"1f9b9771c8673972e55e57e2c699bf35595a81973c44b06fcaf8c27826ab759f","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/is_same_file.rs":"b42d0c38c1302fdee7bbf05c57923e7e4de6213086ccf5a67998cc449907a50a","examples/is_stderr.rs":"f01887c3cf17e1910ad33992b94fc5f93752d81bd2b98c58dc1a4c7a6c9b218c","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/lib.rs":"912a5f4d83fdf6e1d976c6d9186e4bf0a85beb4924080aea121e96a05218e106","src/unix.rs":"a4501f9f07f9bc71557be55026fb08d8b320088dae34f2fa81c58e7d704e605b","src/unknown.rs":"5f5fca57fa6f562fc9433f2786598ccf8c11c6fd688d6160cd2e5fb426b5fc64","src/win.rs":"3887ae2d75d732204c7d4346b5b2d061ea6a49f0615f75760bcfb87399cc8650"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"df61202ba98cd6f99526daecdef7875e59234e18a4bce455f598d77e4333f832","Android.bp":"997e5260281bc63ef12eece40042cef524a5070a9849d31d648effcc84eeb5fa","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.lock":"8d8969f8e9e5456411b0bbc710f5c80dc6a27f4d540a5d55aec0e723450f4ffe","Cargo.toml":"6c2c094095b55bbc5b29c20b070384724e2a64634972408095e437beaa45f4ca","LICENSE":"55b7e47266569be766b3b32782cedf1197782151bcc39d9009f77ea363d28826","LICENSE-MIT":"55b7e47266569be766b3b32782cedf1197782151bcc39d9009f77ea363d28826","METADATA":"bb29f3d1fc53d094ee1e9bfe9405fcd2f55e80ab68027ead5a0fafee4801a074","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"af3ac2a36379bda27745a7b26d4c25e0da15da001634d99c33c410c28dd40fc1","TEST_MAPPING":"1f9b9771c8673972e55e57e2c699bf35595a81973c44b06fcaf8c27826ab759f","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/is_same_file.rs":"b42d0c38c1302fdee7bbf05c57923e7e4de6213086ccf5a67998cc449907a50a","examples/is_stderr.rs":"f01887c3cf17e1910ad33992b94fc5f93752d81bd2b98c58dc1a4c7a6c9b218c","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/lib.rs":"912a5f4d83fdf6e1d976c6d9186e4bf0a85beb4924080aea121e96a05218e106","src/unix.rs":"a4501f9f07f9bc71557be55026fb08d8b320088dae34f2fa81c58e7d704e605b","src/unknown.rs":"5f5fca57fa6f562fc9433f2786598ccf8c11c6fd688d6160cd2e5fb426b5fc64","src/win.rs":"3887ae2d75d732204c7d4346b5b2d061ea6a49f0615f75760bcfb87399cc8650"}}
\ No newline at end of file
diff --git a/crates/same-file/Android.bp b/crates/same-file/Android.bp
index 579c404..82bcc51 100644
--- a/crates/same-file/Android.bp
+++ b/crates/same-file/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/same-file/cargo_embargo.json b/crates/same-file/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/same-file/cargo_embargo.json
+++ b/crates/same-file/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/sec1/.android-checksum.json b/crates/sec1/.android-checksum.json
index c47408d..01d1de6 100644
--- a/crates/sec1/.android-checksum.json
+++ b/crates/sec1/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d3f17c09854a4ec31928b6da1bdccb4b6dc229c5b9f9da7a1b028f51d10b9202","Android.bp":"360e80cdd7fd80ed41c2203f14f05465f6eef83c0efe8354a83ae1901c32e53e","CHANGELOG.md":"2b80e0c0046ebd31d809dc1891855732e971320207ebdedf56d479bfc89400c3","Cargo.toml":"6454bb15ead4629f9e3565be94baaa90d2c9ed8c8dc1d6d2f0f1121415241553","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"b7c304fe4d41628af1ab1b9314feebb2b21d943775f0d5693927ba1f04abf848","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7b2035af53de44b28245cfcf10ff1ce9f7cad45b0f089c90c55c3c1b7f4554f8","cargo_embargo.json":"4d98b8140aed9a923c1623e76c085d636cb45aa0e78e813f5d08cbbeec86532c","rules.mk":"6b99c4ac082e3377aaa866138d83bac4b3b89a457d3987456e2a440dae6686f3","src/error.rs":"f9dbb9f48c04387527fd2221638c533f2b5597ea9f2c92c9c36a05b376939b58","src/lib.rs":"510128da554b0f6898b87831c17b4bc2192a18186107249d763e220a1d9b1db5","src/parameters.rs":"ee56b5e1028ede34c236c57d62fd0d86d5acf6eb9efcc0833a235a06b2b5d072","src/point.rs":"5fe3ad169af05b12b742906eb14ef55605b01d51e4abb7bd25bed93b9c29ef6a","src/private_key.rs":"498aef29dce9a8c4311522766161f03ac8e3baa95e1dd2a18c81ddda61d09eeb","src/traits.rs":"b6238e5aa484ba8413cc11666daf4e1b68a97a473a7eacc0cbcd8a9ed5322538","tests/examples/p256-priv.der":"94354d99d7d6e63be2b84426663b23c92dfe919255743138966b64537ede5418","tests/examples/p256-priv.pem":"1301ebec1f088e13d439ab5faa72f98a0a94af2c4a560bf74dc7575308f1148d","tests/private_key.rs":"ad9e681af20e4c8dd49b30b1c9a53064b7b3553f39382149400db956f8ffd923","tests/traits.rs":"30bc370a0c945698afeba4b0664cbf12e6a466672d0cbc288bb9b3cf4fd20d04"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d3f17c09854a4ec31928b6da1bdccb4b6dc229c5b9f9da7a1b028f51d10b9202","Android.bp":"c8aad0e6b8533d3ed8f22634f234159e1983fbadedbf2bcac0b32a1c6f830c27","CHANGELOG.md":"2b80e0c0046ebd31d809dc1891855732e971320207ebdedf56d479bfc89400c3","Cargo.toml":"6454bb15ead4629f9e3565be94baaa90d2c9ed8c8dc1d6d2f0f1121415241553","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"b7c304fe4d41628af1ab1b9314feebb2b21d943775f0d5693927ba1f04abf848","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7b2035af53de44b28245cfcf10ff1ce9f7cad45b0f089c90c55c3c1b7f4554f8","cargo_embargo.json":"29b87775e9198e4c3a963a68a5d8aa40a3b3d39c9037869b204dba1acb10d84f","rules.mk":"6b99c4ac082e3377aaa866138d83bac4b3b89a457d3987456e2a440dae6686f3","src/error.rs":"f9dbb9f48c04387527fd2221638c533f2b5597ea9f2c92c9c36a05b376939b58","src/lib.rs":"510128da554b0f6898b87831c17b4bc2192a18186107249d763e220a1d9b1db5","src/parameters.rs":"ee56b5e1028ede34c236c57d62fd0d86d5acf6eb9efcc0833a235a06b2b5d072","src/point.rs":"5fe3ad169af05b12b742906eb14ef55605b01d51e4abb7bd25bed93b9c29ef6a","src/private_key.rs":"498aef29dce9a8c4311522766161f03ac8e3baa95e1dd2a18c81ddda61d09eeb","src/traits.rs":"b6238e5aa484ba8413cc11666daf4e1b68a97a473a7eacc0cbcd8a9ed5322538","tests/examples/p256-priv.der":"94354d99d7d6e63be2b84426663b23c92dfe919255743138966b64537ede5418","tests/examples/p256-priv.pem":"1301ebec1f088e13d439ab5faa72f98a0a94af2c4a560bf74dc7575308f1148d","tests/private_key.rs":"ad9e681af20e4c8dd49b30b1c9a53064b7b3553f39382149400db956f8ffd923","tests/traits.rs":"30bc370a0c945698afeba4b0664cbf12e6a466672d0cbc288bb9b3cf4fd20d04"}}
\ No newline at end of file
diff --git a/crates/sec1/Android.bp b/crates/sec1/Android.bp
index 38ffa95..edc1654 100644
--- a/crates/sec1/Android.bp
+++ b/crates/sec1/Android.bp
@@ -38,6 +38,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
@@ -74,6 +75,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
diff --git a/crates/sec1/cargo_embargo.json b/crates/sec1/cargo_embargo.json
index ec528bc..be1ab88 100644
--- a/crates/sec1/cargo_embargo.json
+++ b/crates/sec1/cargo_embargo.json
@@ -40,5 +40,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/semver/.android-checksum.json b/crates/semver/.android-checksum.json
index 73b9b5a..916a0db 100644
--- a/crates/semver/.android-checksum.json
+++ b/crates/semver/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"dec2b91f989ee050ec5a7ff9854883be29dbed5cb16a05295118a86f0dc4dc4c","Android.bp":"676b2090701414f3036f209dcf2c2e09becd57eb05f987dd391e4686b372e62f","Cargo.toml":"e7d9cc172645adba33f62223816a002549124ab56397215fbf89676907b54987","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"9650e607ae83c91dc92350fec9a167c190a8bad7f0f3c9ac39684c23886f2496","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b62587aef2b39ebcc327acc3e5ab2e17a5e3c36eac31091a9a2e660c0135bf69","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","benches/parse.rs":"7e99d95a6a52c451be898700a2072479c4ee551d12d3c9dbfc7f4311188b40ae","build.rs":"70b8bed46a5b72bf343dd95b06d72ddf4cefe125353ff70260399759299fc4d6","cargo_embargo.json":"4b6ff78b72ad34a3853441adc0e68633bd86a6c1077bf7904515400398b1f111","src/backport.rs":"f2a8b6107b004eeb5afec717a3d91b50b17b17cf03d687966da7c587ea362f4d","src/display.rs":"1507845c8ea901f8bf35931505c721269cd25e654c0a7916ad449a543b853748","src/error.rs":"b12bb5d3b79b2c7c6b4f50c2dc81029a987e359e540e94bed96fcf22d8ec0aad","src/eval.rs":"80afb4586adba4807db821ff83fc00ad380a0f67f4e39ecee5ce8d8742024ac0","src/identifier.rs":"05d8523968c522b679947d0f298819a422961fab999b7bfdf48123518d7b3c3c","src/impls.rs":"b797a292640d7aa6a72c3c70b3e753baee565e4f6dd54bcd37af0640f309444a","src/lib.rs":"af6b670694dffd1b163e5bffc6e308d1477dd777db3690da8aba7b78e98b8555","src/parse.rs":"a2cf539f6c9700fd4c157ac751fe1487c1152b43605769f0ff8212ccf40712ed","src/serde.rs":"e98fb2f30cbfa2a94ee4bb1ed46e05f36627330fa5045825938c6121e5a8deb6","tests/node/mod.rs":"20aad0b0a8f3ebd60ba1f9b3c718ab4d0fc4d80a231c0d4770f45e435139221a","tests/test_autotrait.rs":"892e1ec2998a6a350c0e387b2970d6f0ae4f6b30b9b9a5461c512bbc2014eec3","tests/test_identifier.rs":"0f931656d0e56b21cde695970af28747177e00ec328036c64c3cb76f6d048d8a","tests/test_version.rs":"d779e01b28a5aab488567ee7dd7f52a10f88485d64e6f1ce909c15250eda661a","tests/test_version_req.rs":"6588cecf5e3c2cfce3d021de830c7b9db659a0aba3babb36c2f8ae4c5fa2de62","tests/util/mod.rs":"faa2ec6b4616a24168debdfe42d25476b4766c005464d838a58cc4ea85ed0dbc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"dec2b91f989ee050ec5a7ff9854883be29dbed5cb16a05295118a86f0dc4dc4c","Android.bp":"1ca5253e6d15f67f3a7b92d28e4375fc070d192cc1b8ac1c96e16a71af02160a","Cargo.toml":"e7d9cc172645adba33f62223816a002549124ab56397215fbf89676907b54987","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"9650e607ae83c91dc92350fec9a167c190a8bad7f0f3c9ac39684c23886f2496","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"b62587aef2b39ebcc327acc3e5ab2e17a5e3c36eac31091a9a2e660c0135bf69","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","benches/parse.rs":"7e99d95a6a52c451be898700a2072479c4ee551d12d3c9dbfc7f4311188b40ae","build.rs":"70b8bed46a5b72bf343dd95b06d72ddf4cefe125353ff70260399759299fc4d6","cargo_embargo.json":"95cdcfa57472cf723a212438d6a2889b739f23435b1d9e2f1c9496a1061b27a4","src/backport.rs":"f2a8b6107b004eeb5afec717a3d91b50b17b17cf03d687966da7c587ea362f4d","src/display.rs":"1507845c8ea901f8bf35931505c721269cd25e654c0a7916ad449a543b853748","src/error.rs":"b12bb5d3b79b2c7c6b4f50c2dc81029a987e359e540e94bed96fcf22d8ec0aad","src/eval.rs":"80afb4586adba4807db821ff83fc00ad380a0f67f4e39ecee5ce8d8742024ac0","src/identifier.rs":"05d8523968c522b679947d0f298819a422961fab999b7bfdf48123518d7b3c3c","src/impls.rs":"b797a292640d7aa6a72c3c70b3e753baee565e4f6dd54bcd37af0640f309444a","src/lib.rs":"af6b670694dffd1b163e5bffc6e308d1477dd777db3690da8aba7b78e98b8555","src/parse.rs":"a2cf539f6c9700fd4c157ac751fe1487c1152b43605769f0ff8212ccf40712ed","src/serde.rs":"e98fb2f30cbfa2a94ee4bb1ed46e05f36627330fa5045825938c6121e5a8deb6","tests/node/mod.rs":"20aad0b0a8f3ebd60ba1f9b3c718ab4d0fc4d80a231c0d4770f45e435139221a","tests/test_autotrait.rs":"892e1ec2998a6a350c0e387b2970d6f0ae4f6b30b9b9a5461c512bbc2014eec3","tests/test_identifier.rs":"0f931656d0e56b21cde695970af28747177e00ec328036c64c3cb76f6d048d8a","tests/test_version.rs":"d779e01b28a5aab488567ee7dd7f52a10f88485d64e6f1ce909c15250eda661a","tests/test_version_req.rs":"6588cecf5e3c2cfce3d021de830c7b9db659a0aba3babb36c2f8ae4c5fa2de62","tests/util/mod.rs":"faa2ec6b4616a24168debdfe42d25476b4766c005464d838a58cc4ea85ed0dbc"}}
\ No newline at end of file
diff --git a/crates/semver/Android.bp b/crates/semver/Android.bp
index fd69e20..5f057cc 100644
--- a/crates/semver/Android.bp
+++ b/crates/semver/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/semver/cargo_embargo.json b/crates/semver/cargo_embargo.json
index 65eaf4d..1dbd97b 100644
--- a/crates/semver/cargo_embargo.json
+++ b/crates/semver/cargo_embargo.json
@@ -13,5 +13,6 @@
"host_supported": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde-xml-rs/.android-checksum.json b/crates/serde-xml-rs/.android-checksum.json
index 22252ac..5e6f29e 100644
--- a/crates/serde-xml-rs/.android-checksum.json
+++ b/crates/serde-xml-rs/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"e95e046b539220299c53cdbec1e8764d1d62ff149ca2340532a59686d25d26ff","Android.bp":"9bf7195c92808f19e95a8ccf48125da32148eda0a7b7a8dbf8444120bb1ce798","Cargo.toml":"fcdb587d3de9ba14a905582d15dbb60db5f23658f734dbb42e48f920fb5f6afd","LICENSE":"1e9c5002005ae2c38e68737b3074766a7edb64e889f93f93b055c05ffaf7622a","METADATA":"4287990484c8e35961d4447afba1ccf5b784dfa388d3c8100ecbb67c5bce7891","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"39cc06636d82ad2462b61408be94747023776184aa30a081bf47c42b42f135f2","TEST_MAPPING":"0b393c2a89b6292157cf2ae90341a609bc5b688b404473a7300dec3dd017fcda","cargo_embargo.json":"721e679afd91740e37970b142de80a5c100442166488785c1dcbf6dd9d688a1b","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/de/buffer.rs":"4909dc2fc312860dbd8fc2d3b0de36e0dfb94164588a6725104a2727804a3e2c","src/de/map.rs":"a6458b00addd12680bbce31c1b57196d88daa01b8398afb4a6566039e0bd2111","src/de/mod.rs":"5e75634f7141c9b1fb6151164546118f9926d8d089899b8da12a5f2df4c313a0","src/de/seq.rs":"b5f0d30585aa5bff5fdff346b4ff9451f467255b87ed068c8a12f3280ca1a839","src/de/var.rs":"a8ca35ae2769bcaeaf7dfad2f9eba2f08092d55b4c631b93c875d0dcc87ba6fa","src/error.rs":"68f9d083da8dcd4221d8a465418ccc713f13a929a84f5eaed2fd729451db9f90","src/lib.rs":"242719257c19db5f6f62c2c2c2cd412d467b814539ba2765aa9fe99efe43cb12","src/ser/map.rs":"f1ac61da3ba9a4161d50cc19f71910b1de3e949e5b885c4784686119ccab7e2c","src/ser/mod.rs":"8f429e8c4c487164b11fa1b535b4b4e6e602b8d0a6e47d9eb80a58f9f5e56031","src/ser/plain.rs":"434309c23ae405057d0f5f03b5da60dd66a05bd63c1d5a4f8bd0aac607c8115b","src/ser/seq.rs":"bb0818f606e1467dca0e7eded3b7ade1fffcbad4e23eb51bb02e5844ddcc1541","src/ser/tuple.rs":"4ae557b5704ccecff1a7467af3705f72799f425f4528357fc7cd2f6708e67960","tests/common/mod.rs":"6b655055da00265c3c493ca2209b76a792c0401ef1c9a6baaf35baff67ec3a50","tests/datatypes.rs":"7c357516339166220455ba425185f8786b6f765dcb566cf2aa41b64d45e4d52e","tests/failures.rs":"abf1eb4d16ada6339610ef47e9c6d3399eaf5e400e7f5b6969fafdd704140670","tests/migrated.rs":"21b33729f48df6b4c72700002b43f62bf73417bec7ba1926298821af29ffbce6","tests/round_trip.rs":"21d398b66803a04173bc2356feb0dbd321b2c21e2aaaaed1d1f43530cc8fde7d","tests/test.rs":"9a3b5326df4e24819700041349c69d6186cd011050ba17725f8998056c2a975a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"e95e046b539220299c53cdbec1e8764d1d62ff149ca2340532a59686d25d26ff","Android.bp":"1575d9661087d06ddd746c5470cfd04cd5ae45967438ae8b8116dc53e17d9d5a","Cargo.toml":"fcdb587d3de9ba14a905582d15dbb60db5f23658f734dbb42e48f920fb5f6afd","LICENSE":"1e9c5002005ae2c38e68737b3074766a7edb64e889f93f93b055c05ffaf7622a","METADATA":"4287990484c8e35961d4447afba1ccf5b784dfa388d3c8100ecbb67c5bce7891","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"39cc06636d82ad2462b61408be94747023776184aa30a081bf47c42b42f135f2","TEST_MAPPING":"0b393c2a89b6292157cf2ae90341a609bc5b688b404473a7300dec3dd017fcda","cargo_embargo.json":"139623caf67ddb223113bdc8399a52b49acc17c262ec16c04d67c461f4ff0e3a","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/de/buffer.rs":"4909dc2fc312860dbd8fc2d3b0de36e0dfb94164588a6725104a2727804a3e2c","src/de/map.rs":"a6458b00addd12680bbce31c1b57196d88daa01b8398afb4a6566039e0bd2111","src/de/mod.rs":"5e75634f7141c9b1fb6151164546118f9926d8d089899b8da12a5f2df4c313a0","src/de/seq.rs":"b5f0d30585aa5bff5fdff346b4ff9451f467255b87ed068c8a12f3280ca1a839","src/de/var.rs":"a8ca35ae2769bcaeaf7dfad2f9eba2f08092d55b4c631b93c875d0dcc87ba6fa","src/error.rs":"68f9d083da8dcd4221d8a465418ccc713f13a929a84f5eaed2fd729451db9f90","src/lib.rs":"242719257c19db5f6f62c2c2c2cd412d467b814539ba2765aa9fe99efe43cb12","src/ser/map.rs":"f1ac61da3ba9a4161d50cc19f71910b1de3e949e5b885c4784686119ccab7e2c","src/ser/mod.rs":"8f429e8c4c487164b11fa1b535b4b4e6e602b8d0a6e47d9eb80a58f9f5e56031","src/ser/plain.rs":"434309c23ae405057d0f5f03b5da60dd66a05bd63c1d5a4f8bd0aac607c8115b","src/ser/seq.rs":"bb0818f606e1467dca0e7eded3b7ade1fffcbad4e23eb51bb02e5844ddcc1541","src/ser/tuple.rs":"4ae557b5704ccecff1a7467af3705f72799f425f4528357fc7cd2f6708e67960","tests/common/mod.rs":"6b655055da00265c3c493ca2209b76a792c0401ef1c9a6baaf35baff67ec3a50","tests/datatypes.rs":"7c357516339166220455ba425185f8786b6f765dcb566cf2aa41b64d45e4d52e","tests/failures.rs":"abf1eb4d16ada6339610ef47e9c6d3399eaf5e400e7f5b6969fafdd704140670","tests/migrated.rs":"21b33729f48df6b4c72700002b43f62bf73417bec7ba1926298821af29ffbce6","tests/round_trip.rs":"21d398b66803a04173bc2356feb0dbd321b2c21e2aaaaed1d1f43530cc8fde7d","tests/test.rs":"9a3b5326df4e24819700041349c69d6186cd011050ba17725f8998056c2a975a"}}
\ No newline at end of file
diff --git a/crates/serde-xml-rs/Android.bp b/crates/serde-xml-rs/Android.bp
index 88cfdbc..e8b8c00 100644
--- a/crates/serde-xml-rs/Android.bp
+++ b/crates/serde-xml-rs/Android.bp
@@ -33,6 +33,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/serde-xml-rs/cargo_embargo.json b/crates/serde-xml-rs/cargo_embargo.json
index 7cfbe0c..b8e3921 100644
--- a/crates/serde-xml-rs/cargo_embargo.json
+++ b/crates/serde-xml-rs/cargo_embargo.json
@@ -20,5 +20,6 @@
]
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_bytes/.android-checksum.json b/crates/serde_bytes/.android-checksum.json
index 46b0018..bcfa12e 100644
--- a/crates/serde_bytes/.android-checksum.json
+++ b/crates/serde_bytes/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f2f3cb1f5e6a8e0dadf393c157bfed68c9d82d40bd438cff4a78e3e3d273d9ea","Android.bp":"18da679ae0b5d373a1b524513871df8a1e0456373fa4c8c3a4fb010d23ef2e39","Cargo.toml":"4f119311426a0aaf3bde6005677be618015f6a00e5caff49783a8528e297faa0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5d20663eb1c0fe6a0ba0ea27e6d134aec785f80feb1ca66881603863e5314223","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddb6b77248d2386d2745ac23710abb04081ef5acfe845d779fd069a823f77041","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/bytearray.rs":"84beb70148edf4cb92458c14184d3e6d8e372ca174c634c83e7a5a1ceeddc66d","src/bytebuf.rs":"8da2ed7bcc95be58b73525711b7aac7d2f0c9999820e91f5deabeeabc8235b1a","src/bytes.rs":"c14f6185de67d385f5a5bc672890f471c26a6210d0f642eb63d709614aee7b11","src/de.rs":"4a3340ba5842c6967c35ac7b80488daa2641753c0fcafc53c83ae006a7a924ca","src/lib.rs":"967acb687797d64edf387e3457d77845a05f33cc0e8d9871ec384b72b39148b6","src/ser.rs":"9936af49f516f3d55f8fa0fe6f4a311bff87badc175e2a7c1e83c9b756aaed60","tests/test_derive.rs":"4e80b1544f9e4a178a31e388ba31d01560228af8165b9fd0954be543737c71cc","tests/test_partialeq.rs":"e33f7c6fc57af5365d9c9339247bdd43b2f450fe72345531eda5f77a17e37a23","tests/test_serde.rs":"b60841f1942ba1c696e9df6c058b22a74a19309919b819e069373dd5a176c474"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f2f3cb1f5e6a8e0dadf393c157bfed68c9d82d40bd438cff4a78e3e3d273d9ea","Android.bp":"edc9bde9afc37d925824e9335470295ac6ae5c4bc01c11608b25cd26b900fb0b","Cargo.toml":"4f119311426a0aaf3bde6005677be618015f6a00e5caff49783a8528e297faa0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"5d20663eb1c0fe6a0ba0ea27e6d134aec785f80feb1ca66881603863e5314223","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddb6b77248d2386d2745ac23710abb04081ef5acfe845d779fd069a823f77041","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/bytearray.rs":"84beb70148edf4cb92458c14184d3e6d8e372ca174c634c83e7a5a1ceeddc66d","src/bytebuf.rs":"8da2ed7bcc95be58b73525711b7aac7d2f0c9999820e91f5deabeeabc8235b1a","src/bytes.rs":"c14f6185de67d385f5a5bc672890f471c26a6210d0f642eb63d709614aee7b11","src/de.rs":"4a3340ba5842c6967c35ac7b80488daa2641753c0fcafc53c83ae006a7a924ca","src/lib.rs":"967acb687797d64edf387e3457d77845a05f33cc0e8d9871ec384b72b39148b6","src/ser.rs":"9936af49f516f3d55f8fa0fe6f4a311bff87badc175e2a7c1e83c9b756aaed60","tests/test_derive.rs":"4e80b1544f9e4a178a31e388ba31d01560228af8165b9fd0954be543737c71cc","tests/test_partialeq.rs":"e33f7c6fc57af5365d9c9339247bdd43b2f450fe72345531eda5f77a17e37a23","tests/test_serde.rs":"b60841f1942ba1c696e9df6c058b22a74a19309919b819e069373dd5a176c474"}}
\ No newline at end of file
diff --git a/crates/serde_bytes/Android.bp b/crates/serde_bytes/Android.bp
index f8c1ea7..853759d 100644
--- a/crates/serde_bytes/Android.bp
+++ b/crates/serde_bytes/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/serde_bytes/cargo_embargo.json b/crates/serde_bytes/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/serde_bytes/cargo_embargo.json
+++ b/crates/serde_bytes/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_cbor/.android-checksum.json b/crates/serde_cbor/.android-checksum.json
index bbdc5ea..b646853 100644
--- a/crates/serde_cbor/.android-checksum.json
+++ b/crates/serde_cbor/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"607ca63099eaf80458be77de7b7637d7c0e29f8dd56432d0f2f5f63dbaef927d","Android.bp":"96927917e08569724a18441f45b08c5fbfde07b8f98d2979b422985a5b386f8e","CONTRIBUTING.md":"344bea4399a0e464cad3584538a16cc569dc5e2c81020aa966921fe413c11961","Cargo.lock":"898a1e98b9ae69ec1181f5dbd018acca1794910a5adda77511ff9b7260023ef2","Cargo.toml":"d7b5caec6c5f75399b558e72979c1cd962b4287da11be7fb609d95345c3881cf","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"19d25653536b975e058036ee7b3638ebeaaa3ab00477d33aa83975d1fc7ba35c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f57b88169e70ef1c4511adf920d5cdfadbedc45766178dace0aa34d4ab724594","TEST_MAPPING":"209919fe9d85cce5fad35f4d790c93fcaf918e373fd3f2984e3e60dc724265d1","cargo_embargo.json":"eeb119d957b31427b82ba63c495dab99176124aed32fdad510cf53937a086efe","examples/readme.rs":"1aa647f042e1e314c70a8a8a542327e185a11536506b98cf925ad5af980f3ad5","examples/tags.rs":"feb2d0efa3e64fd094d870735e38a5d88b1bf3e249db05f9be607aaf26eb361d","examples/tux.cbor":"67ee78dc07ef9823248302f658770d77836de7955b865e9de19f02d1448cd5e0","src/de.rs":"aa51de1511af23fb35806c5b2ef8ea6a9a5873d2eafb35abe0706d5ec8f9e2d4","src/error.rs":"486f8b51ff1ca33ebab94ba707adb9116e1283dd3b8fabcb8a1e2396eca9cef6","src/lib.rs":"705acea3bd921d7e5558900ddbd42df6f8b4cef1ed48e995901fc8aa0b78324c","src/read.rs":"ad53b26a5ff0781df5f1e34cf5b97f46458fec7dae47a00dc0ad17ea5c209460","src/ser.rs":"5c8f1bc48e74027c92c5a8791e4d20fad4b8ba6947f56fa3d75233d9d15a24cb","src/tags.rs":"5b38f5eaee9bc3825cd096e91f917e5eb4a5a93f1076daf7850354c3a53ea9b5","src/value/de.rs":"49c70e25cfca6f3e0fdd1ea3ea048a92423e9f27eff9a8c80f707773fa08f3c6","src/value/mod.rs":"b6ab724e84de77dab8b79d663ecaf9ed11f5bbd1360de3412548d38838fc119f","src/value/ser.rs":"5fa5ff2e4d1656bea9b3263675fbbaf7cb0654671174cbd933b65195af765440","src/write.rs":"d5a200aa686bdf0cf39410bbab70a627b59bc39fbaa5b2175aefd4d3e0339c1a","tests/bennofs.rs":"a9e29b214ab41f792f98b9a67f83790b1e140e77562d2f94c5ad9c745093db42","tests/canonical.rs":"6a6aae51a38c46f4715665f9ffaca7dc045eec60a8af1bfe858d32110d3cd016","tests/crash.cbor":"a46279a746d764bb068b83893d3e2e751f06c2d1d9cd59b5ca7edd3b948ae556","tests/de.rs":"0c3cf920a72b2c2e94c7665df803ea83bd55dc315e1217bb71a91f7199ae26d2","tests/enum.rs":"815e2a41f4c16c1197bec6f5a54cc21eefc5cf42daccdcc2e80842776a69fe30","tests/kietaub.cbor":"b52ec8d20a3da0c9597f6ce362746fd86c7db3cd06042b385d73868daf776b08","tests/ser.rs":"bd8ba794e3b928de287dff7b20c3d73cdd180910b515a3aad1bda33719a33bc4","tests/std_types.rs":"13ca2f3a633261f44c5c4b14795bb5fecefe463dfa88b704acc8b4edcbf2e0e0","tests/tags.rs":"5914919816ae087f13858dda6d576a3b4b7024ea260e1d971af5af70778ab20b","tests/value.rs":"0b379b2bb7ce056511ff160d8748ceba590105198e8c07ef6f62e7f089340d88"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"607ca63099eaf80458be77de7b7637d7c0e29f8dd56432d0f2f5f63dbaef927d","Android.bp":"1b6bffca48a30468e8c7f51aa6b6a2933198512bd990270503bae91665e69222","CONTRIBUTING.md":"344bea4399a0e464cad3584538a16cc569dc5e2c81020aa966921fe413c11961","Cargo.lock":"898a1e98b9ae69ec1181f5dbd018acca1794910a5adda77511ff9b7260023ef2","Cargo.toml":"d7b5caec6c5f75399b558e72979c1cd962b4287da11be7fb609d95345c3881cf","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"19d25653536b975e058036ee7b3638ebeaaa3ab00477d33aa83975d1fc7ba35c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f57b88169e70ef1c4511adf920d5cdfadbedc45766178dace0aa34d4ab724594","TEST_MAPPING":"209919fe9d85cce5fad35f4d790c93fcaf918e373fd3f2984e3e60dc724265d1","cargo_embargo.json":"0ca2359dd7fda294ab3525ff414ab9f4150532cece03a82544c23f72abbd3bb7","examples/readme.rs":"1aa647f042e1e314c70a8a8a542327e185a11536506b98cf925ad5af980f3ad5","examples/tags.rs":"feb2d0efa3e64fd094d870735e38a5d88b1bf3e249db05f9be607aaf26eb361d","examples/tux.cbor":"67ee78dc07ef9823248302f658770d77836de7955b865e9de19f02d1448cd5e0","src/de.rs":"aa51de1511af23fb35806c5b2ef8ea6a9a5873d2eafb35abe0706d5ec8f9e2d4","src/error.rs":"486f8b51ff1ca33ebab94ba707adb9116e1283dd3b8fabcb8a1e2396eca9cef6","src/lib.rs":"705acea3bd921d7e5558900ddbd42df6f8b4cef1ed48e995901fc8aa0b78324c","src/read.rs":"ad53b26a5ff0781df5f1e34cf5b97f46458fec7dae47a00dc0ad17ea5c209460","src/ser.rs":"5c8f1bc48e74027c92c5a8791e4d20fad4b8ba6947f56fa3d75233d9d15a24cb","src/tags.rs":"5b38f5eaee9bc3825cd096e91f917e5eb4a5a93f1076daf7850354c3a53ea9b5","src/value/de.rs":"49c70e25cfca6f3e0fdd1ea3ea048a92423e9f27eff9a8c80f707773fa08f3c6","src/value/mod.rs":"b6ab724e84de77dab8b79d663ecaf9ed11f5bbd1360de3412548d38838fc119f","src/value/ser.rs":"5fa5ff2e4d1656bea9b3263675fbbaf7cb0654671174cbd933b65195af765440","src/write.rs":"d5a200aa686bdf0cf39410bbab70a627b59bc39fbaa5b2175aefd4d3e0339c1a","tests/bennofs.rs":"a9e29b214ab41f792f98b9a67f83790b1e140e77562d2f94c5ad9c745093db42","tests/canonical.rs":"6a6aae51a38c46f4715665f9ffaca7dc045eec60a8af1bfe858d32110d3cd016","tests/crash.cbor":"a46279a746d764bb068b83893d3e2e751f06c2d1d9cd59b5ca7edd3b948ae556","tests/de.rs":"0c3cf920a72b2c2e94c7665df803ea83bd55dc315e1217bb71a91f7199ae26d2","tests/enum.rs":"815e2a41f4c16c1197bec6f5a54cc21eefc5cf42daccdcc2e80842776a69fe30","tests/kietaub.cbor":"b52ec8d20a3da0c9597f6ce362746fd86c7db3cd06042b385d73868daf776b08","tests/ser.rs":"bd8ba794e3b928de287dff7b20c3d73cdd180910b515a3aad1bda33719a33bc4","tests/std_types.rs":"13ca2f3a633261f44c5c4b14795bb5fecefe463dfa88b704acc8b4edcbf2e0e0","tests/tags.rs":"5914919816ae087f13858dda6d576a3b4b7024ea260e1d971af5af70778ab20b","tests/value.rs":"0b379b2bb7ce056511ff160d8748ceba590105198e8c07ef6f62e7f089340d88"}}
\ No newline at end of file
diff --git a/crates/serde_cbor/Android.bp b/crates/serde_cbor/Android.bp
index 3050356..6d0f6f3 100644
--- a/crates/serde_cbor/Android.bp
+++ b/crates/serde_cbor/Android.bp
@@ -36,6 +36,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/serde_cbor/cargo_embargo.json b/crates/serde_cbor/cargo_embargo.json
index abdd3d0..970295e 100644
--- a/crates/serde_cbor/cargo_embargo.json
+++ b/crates/serde_cbor/cargo_embargo.json
@@ -3,5 +3,6 @@
"default",
"tags"
],
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_derive/.android-checksum.json b/crates/serde_derive/.android-checksum.json
index 43000a8..bed9128 100644
--- a/crates/serde_derive/.android-checksum.json
+++ b/crates/serde_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"382f7b936e1afa856e67018c9433e5b160567271c2d45583754de4814962b0ee","Android.bp":"e0e7f0d0347dcd0e5b56e6228fd2fee73038b0f8f3b47cb96f19d2c31cc0faa3","Cargo.toml":"0651c1c64b207f378b3f021a69587798fdf4953599aa56b3981a0a4ec7f03f1b","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"d961d05651ef9a8af00bcc0584b48a91d7f661f2bf1d2852598f64b9cf120459","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"38803b9e441bda7aafc092b010a6b220de7e31c04cee3af547903ad3a0e86afe","TEST_MAPPING":"b395ebffb16c47600227ad4385645a54b6b0f6e2aa64caa08b92aba184e3e57e","cargo_embargo.json":"bf0ba0c68de224bf8b81d1dfec4cdd0fa29a71aa46afd5a6689aa3ebd583c870","crates-io.md":"9ed722a510770bc9d5cdabe423e0190d3df5e6286a6440bac155f91ebb2b9447","rules.mk":"be5cf40f8b5c3c0d63904d7006030bc79f2f162a7ae5d155cef4a51d886ea4c0","src/bound.rs":"8992df08dbe5a04e2b273d92183c5318dca9ce6ab334ba6f8ffb87f89b4a4234","src/de.rs":"b9d426b8389180b01030e57917ef0656aa81b7a58fa1c7dfcf147bb0b0571a3b","src/dummy.rs":"7b1b4e6d76a9c150e4806a2ace77ba8b47457eff48753d2837622b95ffebb923","src/fragment.rs":"ce24ffb3095559ce35b341d0fa2305d68513fe3b7be2c1bf2fd66ee5160d7211","src/internals/ast.rs":"c68123f6556ba73f8182ddfa96f17b212513fc526b002b762176ed89c2128113","src/internals/attr.rs":"ab613b438a9a7f80515ae5aadf215626317e19b13d3d6711b6927589f1839a2b","src/internals/case.rs":"aa00b1ce262720d988139f2d85ee491129cbd3a649a19c3ab0b52e72cd750dcc","src/internals/check.rs":"2656629a551273f7a6c674f0f4e2fdbdc124cf91891c4a843d4bd3e62d3f2d90","src/internals/ctxt.rs":"176a93e0699ba60d02bf11f210b18dc9a1cf7ed721e91b1d8ce817a47ce61fe9","src/internals/mod.rs":"0497f580994bfb7a7a2f7d912136e91f5ea0e0bdad05ee2f03c5c16b002fb2d6","src/internals/name.rs":"3d1dba2f86861035d9e344fdd37df99dffcc0770f62b7fa61a46f93d4dfbc036","src/internals/receiver.rs":"7ccb6c30b6fe81c671da09c71c704ddc504711fd6f1356d0cf61ba2ae63e2b6a","src/internals/respan.rs":"69f3161816a76c5892b94dab09f90a7f250551168d630eea9d83726e84146f25","src/internals/symbol.rs":"b4c1ceff2262145fb6d744241fa6c629b1ca02378540894f07b96c3b4333df26","src/lib.rs":"90d8cd2487f270484c9bffe92d9813696ae008a14b29b17caf60d15b394946bc","src/pretend.rs":"d4ee9ef718d668243446e348bed84e28a2b534b16a057678f9b6b60e8ce117a6","src/ser.rs":"8f980aaea214dab51d1eec1793ffe2dc4b02fb1ab696081170c6c1ac228430f7","src/this.rs":"6458eda00702b2c4048e05f9a92b817ff0c5cbaa4d6b37546beb68f020a016cb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"382f7b936e1afa856e67018c9433e5b160567271c2d45583754de4814962b0ee","Android.bp":"e0e7f0d0347dcd0e5b56e6228fd2fee73038b0f8f3b47cb96f19d2c31cc0faa3","Cargo.toml":"0651c1c64b207f378b3f021a69587798fdf4953599aa56b3981a0a4ec7f03f1b","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"d961d05651ef9a8af00bcc0584b48a91d7f661f2bf1d2852598f64b9cf120459","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"38803b9e441bda7aafc092b010a6b220de7e31c04cee3af547903ad3a0e86afe","TEST_MAPPING":"b395ebffb16c47600227ad4385645a54b6b0f6e2aa64caa08b92aba184e3e57e","cargo_embargo.json":"add3fffa977240b3eaa07da265c4a0be5e501e27a970fe2029023e64d180ccf3","crates-io.md":"9ed722a510770bc9d5cdabe423e0190d3df5e6286a6440bac155f91ebb2b9447","rules.mk":"be5cf40f8b5c3c0d63904d7006030bc79f2f162a7ae5d155cef4a51d886ea4c0","src/bound.rs":"8992df08dbe5a04e2b273d92183c5318dca9ce6ab334ba6f8ffb87f89b4a4234","src/de.rs":"b9d426b8389180b01030e57917ef0656aa81b7a58fa1c7dfcf147bb0b0571a3b","src/dummy.rs":"7b1b4e6d76a9c150e4806a2ace77ba8b47457eff48753d2837622b95ffebb923","src/fragment.rs":"ce24ffb3095559ce35b341d0fa2305d68513fe3b7be2c1bf2fd66ee5160d7211","src/internals/ast.rs":"c68123f6556ba73f8182ddfa96f17b212513fc526b002b762176ed89c2128113","src/internals/attr.rs":"ab613b438a9a7f80515ae5aadf215626317e19b13d3d6711b6927589f1839a2b","src/internals/case.rs":"aa00b1ce262720d988139f2d85ee491129cbd3a649a19c3ab0b52e72cd750dcc","src/internals/check.rs":"2656629a551273f7a6c674f0f4e2fdbdc124cf91891c4a843d4bd3e62d3f2d90","src/internals/ctxt.rs":"176a93e0699ba60d02bf11f210b18dc9a1cf7ed721e91b1d8ce817a47ce61fe9","src/internals/mod.rs":"0497f580994bfb7a7a2f7d912136e91f5ea0e0bdad05ee2f03c5c16b002fb2d6","src/internals/name.rs":"3d1dba2f86861035d9e344fdd37df99dffcc0770f62b7fa61a46f93d4dfbc036","src/internals/receiver.rs":"7ccb6c30b6fe81c671da09c71c704ddc504711fd6f1356d0cf61ba2ae63e2b6a","src/internals/respan.rs":"69f3161816a76c5892b94dab09f90a7f250551168d630eea9d83726e84146f25","src/internals/symbol.rs":"b4c1ceff2262145fb6d744241fa6c629b1ca02378540894f07b96c3b4333df26","src/lib.rs":"90d8cd2487f270484c9bffe92d9813696ae008a14b29b17caf60d15b394946bc","src/pretend.rs":"d4ee9ef718d668243446e348bed84e28a2b534b16a057678f9b6b60e8ce117a6","src/ser.rs":"8f980aaea214dab51d1eec1793ffe2dc4b02fb1ab696081170c6c1ac228430f7","src/this.rs":"6458eda00702b2c4048e05f9a92b817ff0c5cbaa4d6b37546beb68f020a016cb"}}
\ No newline at end of file
diff --git a/crates/serde_derive/cargo_embargo.json b/crates/serde_derive/cargo_embargo.json
index 0c6949e..4b8d823 100644
--- a/crates/serde_derive/cargo_embargo.json
+++ b/crates/serde_derive/cargo_embargo.json
@@ -14,5 +14,6 @@
"generate_rulesmk": true,
"tests": false
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_spanned/.android-checksum.json b/crates/serde_spanned/.android-checksum.json
index d3620de..9a93634 100644
--- a/crates/serde_spanned/.android-checksum.json
+++ b/crates/serde_spanned/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f01672057bcf4afbaf6d0faab04417944055be67c5201997c9626184e79fe046","Android.bp":"b03d36a4481d6a29a1ff99e26bde0dc71fbd15516e9a67aa1f2275db61f67c2e","Cargo.toml":"e83d1ffd1fe58ed4541e0e665b480a5d8e59df9eb1010a3674ff9e56ea8d5373","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"51fc2644c225177d1ebc5e2389d560069567f27f1f1d632f104baa833cf70303","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"42a9fa2ccba37c3b95147a3257149a70f2aeccba9994454932d97d22280ff079","cargo_embargo.json":"76fbd1cd9b6f0edab2713da1de1d006ac8b8eb70b8603033380431a2debfbd95","src/lib.rs":"941222f2e232d983ae5eca4fc8568d9bfacb371b354af25b8a7087d35e0df973","src/spanned.rs":"99fa67064fa13cf657eda6eaf497b7844acf664964ec2a6452fc10502bff0e4d"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f01672057bcf4afbaf6d0faab04417944055be67c5201997c9626184e79fe046","Android.bp":"b03d36a4481d6a29a1ff99e26bde0dc71fbd15516e9a67aa1f2275db61f67c2e","Cargo.toml":"e83d1ffd1fe58ed4541e0e665b480a5d8e59df9eb1010a3674ff9e56ea8d5373","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"51fc2644c225177d1ebc5e2389d560069567f27f1f1d632f104baa833cf70303","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"42a9fa2ccba37c3b95147a3257149a70f2aeccba9994454932d97d22280ff079","cargo_embargo.json":"6e7ef748e75f1d51005a0d9768eafdc34305e2cfd6c33ffb97e9ebd8ecc85c94","src/lib.rs":"941222f2e232d983ae5eca4fc8568d9bfacb371b354af25b8a7087d35e0df973","src/spanned.rs":"99fa67064fa13cf657eda6eaf497b7844acf664964ec2a6452fc10502bff0e4d"}}
\ No newline at end of file
diff --git a/crates/serde_spanned/cargo_embargo.json b/crates/serde_spanned/cargo_embargo.json
index 249bfe0..eacbf8f 100644
--- a/crates/serde_spanned/cargo_embargo.json
+++ b/crates/serde_spanned/cargo_embargo.json
@@ -7,5 +7,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_test/.android-checksum.json b/crates/serde_test/.android-checksum.json
index 69481e9..750d870 100644
--- a/crates/serde_test/.android-checksum.json
+++ b/crates/serde_test/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a7031583b2c52259da59a03287a1c99938fd0e2d9526d604ee1b9689568721ca","Android.bp":"51e302e19922c3a1fa160de59a3c4bef24637cc771d8c049d35746ed49fd75fe","Cargo.toml":"635af5a6e0322a14c4cc40e56204201e357720ce7609db4da68c79ceab48f017","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"258572b43a1742c112c5ea6c6c5830306237b3f9d2b81d440df672684c9f60e3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"50d78f8b76a1a29b662e665e3b163c50ccc7fc29460580b3c65d70d636dd6427","TEST_MAPPING":"edcdd0ec7656910f74cd53b8521f27bd4b71c14819b62203dfe8ecb5e077c193","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/assert.rs":"d0253c20d94120e0867e63e5ee4c9d110b172b1c18c0bd4b7e0508995011bb67","src/configure.rs":"45071d0e471c873d978689aff58d8fe8c0e476d4942edb8f3447f4d4c23c9c27","src/de.rs":"a34d498405495b235f3cb20dc948d8f5d31fa10995b29f14863a78042a2da956","src/error.rs":"be05a75fd8da8d3714c88146346e95f3fc0ffbca0b4220de6fa3c7d0b6a09dae","src/lib.rs":"d9ec08d8b295cfa6fc534a7da199a74e234995232bc97c4e5bf65fa839419bc6","src/ser.rs":"255cfe60194421abcb69b6c18c6c9ef56dd379652c8543801501abb637e4acaa","src/token.rs":"7d207f06c6c31fd7fed1df5797f0034c52c4ae302f0b64e7fc0ce5d0707479c8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a7031583b2c52259da59a03287a1c99938fd0e2d9526d604ee1b9689568721ca","Android.bp":"f4626587934b6c6936d60ddefbf63e9030cf6843b7ec3e70bbc36dcbfb49b329","Cargo.toml":"635af5a6e0322a14c4cc40e56204201e357720ce7609db4da68c79ceab48f017","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"258572b43a1742c112c5ea6c6c5830306237b3f9d2b81d440df672684c9f60e3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"50d78f8b76a1a29b662e665e3b163c50ccc7fc29460580b3c65d70d636dd6427","TEST_MAPPING":"edcdd0ec7656910f74cd53b8521f27bd4b71c14819b62203dfe8ecb5e077c193","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/assert.rs":"d0253c20d94120e0867e63e5ee4c9d110b172b1c18c0bd4b7e0508995011bb67","src/configure.rs":"45071d0e471c873d978689aff58d8fe8c0e476d4942edb8f3447f4d4c23c9c27","src/de.rs":"a34d498405495b235f3cb20dc948d8f5d31fa10995b29f14863a78042a2da956","src/error.rs":"be05a75fd8da8d3714c88146346e95f3fc0ffbca0b4220de6fa3c7d0b6a09dae","src/lib.rs":"d9ec08d8b295cfa6fc534a7da199a74e234995232bc97c4e5bf65fa839419bc6","src/ser.rs":"255cfe60194421abcb69b6c18c6c9ef56dd379652c8543801501abb637e4acaa","src/token.rs":"7d207f06c6c31fd7fed1df5797f0034c52c4ae302f0b64e7fc0ce5d0707479c8"}}
\ No newline at end of file
diff --git a/crates/serde_test/Android.bp b/crates/serde_test/Android.bp
index c3b1095..c485a3a 100644
--- a/crates/serde_test/Android.bp
+++ b/crates/serde_test/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/serde_test/cargo_embargo.json b/crates/serde_test/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/serde_test/cargo_embargo.json
+++ b/crates/serde_test/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serde_yaml/.android-checksum.json b/crates/serde_yaml/.android-checksum.json
index 5d29ca4..bc1de77 100644
--- a/crates/serde_yaml/.android-checksum.json
+++ b/crates/serde_yaml/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a6c2056c78bde5dce744e3c76cc94def6ea8388d7ab93eae1322677e49daf7eb","Android.bp":"d9aed52ed576b61a7edab2f68dafc58843a3d16773ef71551568d6c4c4a044fb","Cargo.toml":"50583e30131340be3910a8892740974f9f5cd085f5ee67a067f234b2ae106a9c","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"cf01e7d3286a1cc90416b787fc5bd8f2f6f3cf2012e8cfdfa890aeba070915f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"59e7fa124925bd53e3cbfbbc95016453e8b744683f5c0b5cc43ed780f327021b","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/de.rs":"94be468888d5726f02855b6440439eef422a205b82b4a7a3e2e776df7cbe1d32","src/error.rs":"c21d3e400f8436054893860c9913caad10022e2c90c4c2a9f318afcab6070063","src/lib.rs":"479bbb18c41f3b5a880d1fee3770de3f281acce7eaa45bb70842a47c583531ba","src/libyaml/cstr.rs":"ef88427d90d5824160c837fde7825849567536b897d6dec3f893cf028e15193c","src/libyaml/emitter.rs":"b73f89847287de1a4aa6f0f5c7931b0800b399c6fb40d0bc426ee8b74e1beed5","src/libyaml/error.rs":"c3c6174a0644bf15a450e1f24783ff85700cdd6f9eeeb0c007e60621d12e0d7b","src/libyaml/mod.rs":"49495b7ffcedd44a9e26ee9e87450dd6b1bff7c9eb012b9422746f4665c820b4","src/libyaml/parser.rs":"9a59db7b6d2653cfca6e8235ab4e9a70479e882e9ddc37871e259ceb1b6b1033","src/libyaml/tag.rs":"d2e9b6b575b4057d34a72af0928ae66f169655f8e7997903535a239efd4c1cf0","src/libyaml/util.rs":"20395293aef5fdd829cf2123a87e9166a4d8961eb61b0557a3b64e8916476926","src/loader.rs":"f9ac30e993f9da2c6f380922b52e1460ecbb5ebc807d228c6fbb207e2d01c887","src/mapping.rs":"1bedfb313ab0edf0ae9e1ca71c5f203ccaf710f489c0480fe2cfe6529a4a8c3d","src/number.rs":"006d56a76745d57184a43ea2fa453cb8f61e756b2e4263f0dea21ec1bc5eee93","src/path.rs":"316ba71199d13bce9062207d178337e09bd397fcd106e7a363a70fce69721171","src/ser.rs":"d6378f1db1b1f321c9e7f1b8b3770ec35ed73f1fe70b8bf68e5a03cc75e98410","src/value/de.rs":"e1fb742765b0a61dea408fde283e57b7e245153c19d4fce6c4984a50adbf7bf4","src/value/debug.rs":"2db925a29e3dcc97d9fce4b0a8cc6369130bd7981ec28510b5766769f3dff5a3","src/value/from.rs":"2c2767e27060dcad93a3bbc20751bf1053c9d02896ac16ee5e1b7dbc9621bc70","src/value/index.rs":"49d08ed9e4b800c898f436b1c77b5488452b8c00393cced893fbe9b29ea0f4ba","src/value/mod.rs":"cf68e61300acbb292c5a7c4ca4dcbe0f49778dc297e2428d94d7f5bcdb4224f8","src/value/partial_eq.rs":"2c7acbfe7ef901f93e281fe8ae6f37e0941649824972224768969598a162f110","src/value/ser.rs":"0012279dcdc4787275703b0830cc3a2877fe59b49dfe9aafa938a04366b721da","src/value/tagged.rs":"b99f0577eda4a18cb5fe9e19cce5b17e214107e9f87a36dc502223a80ddd7dd7","src/with.rs":"37e6788ac9c36f349fdde86c8b1da698f10d8dc838a399ebbae85592092a1102","tests/test_de.rs":"66db6c858066e1527d5b0272318419ff246dd4481dfc2fbcfd66adb138a5f38e","tests/test_error.rs":"5848f7e4817725b56f10f44647c65b89f488aa7d4ca2ea5fab23727fea190eac","tests/test_serde.rs":"dcda237ab198ceeb908977b99cdb62c825cbbfb8d94179567916f0d2e9aa2048","tests/test_value.rs":"4abe535b7f978ee441cd5d3113f9d9dafd46b9bec9d76dec2732624acbbfcbd4"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a6c2056c78bde5dce744e3c76cc94def6ea8388d7ab93eae1322677e49daf7eb","Android.bp":"377a324152297da00e4dd7f0ceac433caeefa32ee00618e56dbaf3c87d9d84c4","Cargo.toml":"50583e30131340be3910a8892740974f9f5cd085f5ee67a067f234b2ae106a9c","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"cf01e7d3286a1cc90416b787fc5bd8f2f6f3cf2012e8cfdfa890aeba070915f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"59e7fa124925bd53e3cbfbbc95016453e8b744683f5c0b5cc43ed780f327021b","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/de.rs":"94be468888d5726f02855b6440439eef422a205b82b4a7a3e2e776df7cbe1d32","src/error.rs":"c21d3e400f8436054893860c9913caad10022e2c90c4c2a9f318afcab6070063","src/lib.rs":"479bbb18c41f3b5a880d1fee3770de3f281acce7eaa45bb70842a47c583531ba","src/libyaml/cstr.rs":"ef88427d90d5824160c837fde7825849567536b897d6dec3f893cf028e15193c","src/libyaml/emitter.rs":"b73f89847287de1a4aa6f0f5c7931b0800b399c6fb40d0bc426ee8b74e1beed5","src/libyaml/error.rs":"c3c6174a0644bf15a450e1f24783ff85700cdd6f9eeeb0c007e60621d12e0d7b","src/libyaml/mod.rs":"49495b7ffcedd44a9e26ee9e87450dd6b1bff7c9eb012b9422746f4665c820b4","src/libyaml/parser.rs":"9a59db7b6d2653cfca6e8235ab4e9a70479e882e9ddc37871e259ceb1b6b1033","src/libyaml/tag.rs":"d2e9b6b575b4057d34a72af0928ae66f169655f8e7997903535a239efd4c1cf0","src/libyaml/util.rs":"20395293aef5fdd829cf2123a87e9166a4d8961eb61b0557a3b64e8916476926","src/loader.rs":"f9ac30e993f9da2c6f380922b52e1460ecbb5ebc807d228c6fbb207e2d01c887","src/mapping.rs":"1bedfb313ab0edf0ae9e1ca71c5f203ccaf710f489c0480fe2cfe6529a4a8c3d","src/number.rs":"006d56a76745d57184a43ea2fa453cb8f61e756b2e4263f0dea21ec1bc5eee93","src/path.rs":"316ba71199d13bce9062207d178337e09bd397fcd106e7a363a70fce69721171","src/ser.rs":"d6378f1db1b1f321c9e7f1b8b3770ec35ed73f1fe70b8bf68e5a03cc75e98410","src/value/de.rs":"e1fb742765b0a61dea408fde283e57b7e245153c19d4fce6c4984a50adbf7bf4","src/value/debug.rs":"2db925a29e3dcc97d9fce4b0a8cc6369130bd7981ec28510b5766769f3dff5a3","src/value/from.rs":"2c2767e27060dcad93a3bbc20751bf1053c9d02896ac16ee5e1b7dbc9621bc70","src/value/index.rs":"49d08ed9e4b800c898f436b1c77b5488452b8c00393cced893fbe9b29ea0f4ba","src/value/mod.rs":"cf68e61300acbb292c5a7c4ca4dcbe0f49778dc297e2428d94d7f5bcdb4224f8","src/value/partial_eq.rs":"2c7acbfe7ef901f93e281fe8ae6f37e0941649824972224768969598a162f110","src/value/ser.rs":"0012279dcdc4787275703b0830cc3a2877fe59b49dfe9aafa938a04366b721da","src/value/tagged.rs":"b99f0577eda4a18cb5fe9e19cce5b17e214107e9f87a36dc502223a80ddd7dd7","src/with.rs":"37e6788ac9c36f349fdde86c8b1da698f10d8dc838a399ebbae85592092a1102","tests/test_de.rs":"66db6c858066e1527d5b0272318419ff246dd4481dfc2fbcfd66adb138a5f38e","tests/test_error.rs":"5848f7e4817725b56f10f44647c65b89f488aa7d4ca2ea5fab23727fea190eac","tests/test_serde.rs":"dcda237ab198ceeb908977b99cdb62c825cbbfb8d94179567916f0d2e9aa2048","tests/test_value.rs":"4abe535b7f978ee441cd5d3113f9d9dafd46b9bec9d76dec2732624acbbfcbd4"}}
\ No newline at end of file
diff --git a/crates/serde_yaml/Android.bp b/crates/serde_yaml/Android.bp
index 6225d62..e373da0 100644
--- a/crates/serde_yaml/Android.bp
+++ b/crates/serde_yaml/Android.bp
@@ -34,4 +34,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/serde_yaml/cargo_embargo.json b/crates/serde_yaml/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/serde_yaml/cargo_embargo.json
+++ b/crates/serde_yaml/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/serialport/.android-checksum.json b/crates/serialport/.android-checksum.json
index 1471e15..c868150 100644
--- a/crates/serialport/.android-checksum.json
+++ b/crates/serialport/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"69a3519961908ebb458be5181505e025fdeef9cf44564d771f99cca472e2ac65","Android.bp":"fb970547c3fc2a645112b73569855298aa612b0f236ef2ec1a0825214322bc2f","CHANGELOG.md":"196eb576e6a219daa75f8fea6cd95bab88df3e84e26fe05d6158877f68756c95","Cargo.lock":"f5256c02c3d9ef21573615b69060f19c465f97698b08f793ca614a31a83fd0c0","Cargo.toml":"5e8f34effaa32363ae80edf25a09d2c0ff89c68860eebf06448bc3dc999b64f8","LICENSE":"06c47043b8fd667a9c4f0198ff5395fb4cedd91c2e07bdf18d51b690a409c9d0","LICENSE.txt":"06c47043b8fd667a9c4f0198ff5395fb4cedd91c2e07bdf18d51b690a409c9d0","METADATA":"1edfccb5707769a0da61996ffca17256ef13bf6d9d57e637be7291feeb7c6246","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","NOTES.md":"bdf138cc8ac7b3cf7438b5b3dc55b745c750683cc87b82da353d437d4892da67","README.md":"f65f23dbf76dd842bd01f77058b5cf7a3acec20b5704e7e7edd54de4c66e2ab7","TESTING.md":"0fb1cca807aebc47f556b9fc4fabefa057978bcfefbde9d16e736b196769fdcc","cargo_embargo.json":"807f6624500cae91e8f89c22ae69765795fe5a8b262ba733b7fea92ac095c24f","deny.toml":"a02126b12bf74018979834e95463a287a621d872e98ec4abe592d9c8432ef154","doc/dev_notes.md":"6f668f745deb45b696e6ca8cd338b7f05f96594d13e6d4f7db3d0bde2ffccf52","doc/index.md":"23153180b690608ec838e023023c5219e73d605b84e3e850d5d6b12d934a3033","doc/platforms.md":"50e7d8fcfdb739f8aa433e694e63f4e751c4d369c699bf8129c5be2aeb88a064","examples/clear_input_buffer.rs":"8d4e6d5eb120d74eced96a20624b7793c4ae1e711522e69786cbdcdad5f5176b","examples/clear_output_buffer.rs":"dd08ca88ea5d50bf679b56e7ed8779ad059de4fa8962421a08752cd9ef57a46b","examples/duplex.rs":"cac3caa869f22c51f37ebdf720763ca4fd1fd5a560385146af8a96be4e61e416","examples/hardware_check.rs":"6aa2f4432b09a46ba45a85f1097538fec546bdacd72a3569f3c0a3244ba077de","examples/list_ports.rs":"b569a08ed5ab4d1d79e70c808a6a536a79687ce971768bc05e0c56cc282c6c7a","examples/loopback.rs":"e9afe2a8f40b09dc1fa11ea9c372306a36914b49fb5626d6ca866c5889923ecd","examples/pseudo_terminal.rs":"b47d927eeb9f2ec7d7fd943f4a6677bc9a0bd8b907bffbf7876b9c01da11ae33","examples/receive_data.rs":"5e8410f35df5f520f800fef6c726fe4ae5a66fd54aa7b90f2b42ea9880bcbeb4","examples/transmit.rs":"282a7dd8ca9fc7faaccae10da4d2fbbd5cd9808e01d2a7fe3d7da52e2034cd5f","patches/000-license.patch":"b3deacf9693dafd6a3e061e3b12cf8713bf953b1d70310e11ec744bffd31de85","patches/001-update-to-nix-0.28.patch":"00deef5d8151dd419bc06ecab888f39b67c169599fe07a0019e63342d7d6674a","src/lib.rs":"308e0d90b93d382a394dc9fbd1afa43ca216a956ed611b27f2bbb28131067679","src/posix/enumerate.rs":"547e30b458a68134c6660b7a0f08ea246e89bae260708f824cd3f6378b851c34","src/posix/error.rs":"36b1dced7f652583b200411303ce98411f136c31405c96799ac3303be6bb28eb","src/posix/ioctl.rs":"ab54f75434f2e07e0c53dd29c761ddf475e10b6dcdd4baf0767df98e088766a8","src/posix/mod.rs":"a507acd7d1718f67fb3e5d202a11d516dc1c20035e5102ac2f2898feec02c009","src/posix/poll.rs":"bec6f3f13d12304f5e8e7088f9ca39de8af9a343c3b54b3a99d5d668fde0e520","src/posix/termios.rs":"2b54cf0979841d8886f6140abcb826df9923c9edc7a03fa9dc3d4f17b8390be4","src/posix/tty.rs":"e4fece8e07d3240008adb54c815481b95e3efe2686a17ad9cd8d226a75ebe140","src/tests/mod.rs":"2f7a736bdd8c305e82debf74291bf1070e0871640cbfdb5ddd57a20c61fb1d61","src/tests/timeout.rs":"994769fbcbf94d97354be3d36895b1a373f9cd3faac3e5136799580e9747e212","src/windows/com.rs":"2e79fcb666dae9800ee8ac81f9c0036cdda7b0e36e36a143bbd439ec0e0bd7db","src/windows/dcb.rs":"f6de00037b5952eb92802549946a822954e3f0bb1d9d86f25c432441bbf12e58","src/windows/enumerate.rs":"6688986213373d9e2d15669b592d2c482384b123256042bccdc66166697edecf","src/windows/error.rs":"b1740ee0eaec9b2a41e58f44b3fa2011ff683e547a30065f3e0b6e276b16c615","src/windows/mod.rs":"7562dc30058ff08a4c68b097767b50520801ff077903037eeeddbd5c51fd627b","tests/config.rs":"1be2b21a0f627d2198cc48df172962c5f57a95d543ed22110aebbcbabdcd612c","tests/test_baudrate.rs":"cee170af059d375c916259dd8b7c032674e175409e49809b9a8c6f19356cb347","tests/test_serialport.rs":"81a7af52616ee5e7588eadd8bff079eb48c5d1b82bb4571d5c5bb7b5fdbe3909","tests/test_timeout.rs":"733668e70bb0f2b8ee27fb192859370c2fd7a65256e1910a08ecca0e2336d2d1","tests/test_try_clone.rs":"7a23a537d5220d3e4c338c268ff3e3ab163e0802eb22de8452fd9c629f8361d7","tests/test_tty.rs":"2e9d0531c4c39ed997b8cb0cf8010f06755348c4f0ff45fd138f9249a4471631"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"69a3519961908ebb458be5181505e025fdeef9cf44564d771f99cca472e2ac65","Android.bp":"2d8b6d14a9ce6d294a35664624d5c90aa2947ffea0556141a31c9d53a1a1722d","CHANGELOG.md":"196eb576e6a219daa75f8fea6cd95bab88df3e84e26fe05d6158877f68756c95","Cargo.lock":"f5256c02c3d9ef21573615b69060f19c465f97698b08f793ca614a31a83fd0c0","Cargo.toml":"5e8f34effaa32363ae80edf25a09d2c0ff89c68860eebf06448bc3dc999b64f8","LICENSE":"06c47043b8fd667a9c4f0198ff5395fb4cedd91c2e07bdf18d51b690a409c9d0","LICENSE.txt":"06c47043b8fd667a9c4f0198ff5395fb4cedd91c2e07bdf18d51b690a409c9d0","METADATA":"1edfccb5707769a0da61996ffca17256ef13bf6d9d57e637be7291feeb7c6246","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","NOTES.md":"bdf138cc8ac7b3cf7438b5b3dc55b745c750683cc87b82da353d437d4892da67","README.md":"f65f23dbf76dd842bd01f77058b5cf7a3acec20b5704e7e7edd54de4c66e2ab7","TESTING.md":"0fb1cca807aebc47f556b9fc4fabefa057978bcfefbde9d16e736b196769fdcc","cargo_embargo.json":"70a061fa72272fe8e4514d1385bdc9c4fbbdb54979fdaefd4d032248d9969783","deny.toml":"a02126b12bf74018979834e95463a287a621d872e98ec4abe592d9c8432ef154","doc/dev_notes.md":"6f668f745deb45b696e6ca8cd338b7f05f96594d13e6d4f7db3d0bde2ffccf52","doc/index.md":"23153180b690608ec838e023023c5219e73d605b84e3e850d5d6b12d934a3033","doc/platforms.md":"50e7d8fcfdb739f8aa433e694e63f4e751c4d369c699bf8129c5be2aeb88a064","examples/clear_input_buffer.rs":"8d4e6d5eb120d74eced96a20624b7793c4ae1e711522e69786cbdcdad5f5176b","examples/clear_output_buffer.rs":"dd08ca88ea5d50bf679b56e7ed8779ad059de4fa8962421a08752cd9ef57a46b","examples/duplex.rs":"cac3caa869f22c51f37ebdf720763ca4fd1fd5a560385146af8a96be4e61e416","examples/hardware_check.rs":"6aa2f4432b09a46ba45a85f1097538fec546bdacd72a3569f3c0a3244ba077de","examples/list_ports.rs":"b569a08ed5ab4d1d79e70c808a6a536a79687ce971768bc05e0c56cc282c6c7a","examples/loopback.rs":"e9afe2a8f40b09dc1fa11ea9c372306a36914b49fb5626d6ca866c5889923ecd","examples/pseudo_terminal.rs":"b47d927eeb9f2ec7d7fd943f4a6677bc9a0bd8b907bffbf7876b9c01da11ae33","examples/receive_data.rs":"5e8410f35df5f520f800fef6c726fe4ae5a66fd54aa7b90f2b42ea9880bcbeb4","examples/transmit.rs":"282a7dd8ca9fc7faaccae10da4d2fbbd5cd9808e01d2a7fe3d7da52e2034cd5f","patches/000-license.patch":"b3deacf9693dafd6a3e061e3b12cf8713bf953b1d70310e11ec744bffd31de85","patches/001-update-to-nix-0.28.patch":"00deef5d8151dd419bc06ecab888f39b67c169599fe07a0019e63342d7d6674a","src/lib.rs":"308e0d90b93d382a394dc9fbd1afa43ca216a956ed611b27f2bbb28131067679","src/posix/enumerate.rs":"547e30b458a68134c6660b7a0f08ea246e89bae260708f824cd3f6378b851c34","src/posix/error.rs":"36b1dced7f652583b200411303ce98411f136c31405c96799ac3303be6bb28eb","src/posix/ioctl.rs":"ab54f75434f2e07e0c53dd29c761ddf475e10b6dcdd4baf0767df98e088766a8","src/posix/mod.rs":"a507acd7d1718f67fb3e5d202a11d516dc1c20035e5102ac2f2898feec02c009","src/posix/poll.rs":"bec6f3f13d12304f5e8e7088f9ca39de8af9a343c3b54b3a99d5d668fde0e520","src/posix/termios.rs":"2b54cf0979841d8886f6140abcb826df9923c9edc7a03fa9dc3d4f17b8390be4","src/posix/tty.rs":"e4fece8e07d3240008adb54c815481b95e3efe2686a17ad9cd8d226a75ebe140","src/tests/mod.rs":"2f7a736bdd8c305e82debf74291bf1070e0871640cbfdb5ddd57a20c61fb1d61","src/tests/timeout.rs":"994769fbcbf94d97354be3d36895b1a373f9cd3faac3e5136799580e9747e212","src/windows/com.rs":"2e79fcb666dae9800ee8ac81f9c0036cdda7b0e36e36a143bbd439ec0e0bd7db","src/windows/dcb.rs":"f6de00037b5952eb92802549946a822954e3f0bb1d9d86f25c432441bbf12e58","src/windows/enumerate.rs":"6688986213373d9e2d15669b592d2c482384b123256042bccdc66166697edecf","src/windows/error.rs":"b1740ee0eaec9b2a41e58f44b3fa2011ff683e547a30065f3e0b6e276b16c615","src/windows/mod.rs":"7562dc30058ff08a4c68b097767b50520801ff077903037eeeddbd5c51fd627b","tests/config.rs":"1be2b21a0f627d2198cc48df172962c5f57a95d543ed22110aebbcbabdcd612c","tests/test_baudrate.rs":"cee170af059d375c916259dd8b7c032674e175409e49809b9a8c6f19356cb347","tests/test_serialport.rs":"81a7af52616ee5e7588eadd8bff079eb48c5d1b82bb4571d5c5bb7b5fdbe3909","tests/test_timeout.rs":"733668e70bb0f2b8ee27fb192859370c2fd7a65256e1910a08ecca0e2336d2d1","tests/test_try_clone.rs":"7a23a537d5220d3e4c338c268ff3e3ab163e0802eb22de8452fd9c629f8361d7","tests/test_tty.rs":"2e9d0531c4c39ed997b8cb0cf8010f06755348c4f0ff45fd138f9249a4471631"}}
\ No newline at end of file
diff --git a/crates/serialport/Android.bp b/crates/serialport/Android.bp
index 663b522..49d102a 100644
--- a/crates/serialport/Android.bp
+++ b/crates/serialport/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/serialport/cargo_embargo.json b/crates/serialport/cargo_embargo.json
index 795995a..2f47597 100644
--- a/crates/serialport/cargo_embargo.json
+++ b/crates/serialport/cargo_embargo.json
@@ -1,8 +1,11 @@
{
- "features": [],
- "package": {
- "serialport": {
- "dep_blocklist": ["libunescaper"]
- }
+ "features": [],
+ "package": {
+ "serialport": {
+ "dep_blocklist": [
+ "libunescaper"
+ ]
}
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/shared_child/.android-checksum.json b/crates/shared_child/.android-checksum.json
index 50a65e2..aa25607 100644
--- a/crates/shared_child/.android-checksum.json
+++ b/crates/shared_child/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b6cf73a7fedd0d1997a00e85c1e904f841a898349c9611cd58deaae546ad3747","Android.bp":"606285ef53315d03ef6914faa004ef8db7bafcfb6840fd939f16b134f76826da","Cargo.toml":"721dfa16f3ef683822d8e1c86fadcbc0ffca8a68c1b918de83c53fbf9c6c7389","LICENSE":"29856856b1e210364711a1394960b7ffc52417a1ffa353f4b498400205e190fa","METADATA":"75937ef5d2fd3ebae706041f36b15ff6e92525dd7a601f0c923a5820bffdd5f2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3d5db4ac0a3f8aa0a114594429de293584c524a8a5b67bfe340c81635d929607","README.tpl":"5511055c4ee1eb92c28b4071aa824e6bf788adfaff0fbcdb01c6b3d30e42f665","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","cargo_embargo.json":"d22ac1fd1275371ceedbb94757f2a6c145fab2627db6d7a1f6945c1cdcda218c","src/lib.rs":"033c710622208a31d764796228f746e5782bd3838c2dcd9cf4046f6e4c94fc85","src/sys/mod.rs":"a7df4bf87fd497d2c5b8aec9a57447129d51e724ac0255eb2c58781af6b2fea6","src/sys/unix.rs":"05f90e4685a6f548925e807c00c883b4238db10cc30f2cfc59b0a3d829d31d7c","src/sys/windows.rs":"dd101237e00bef5b5e9cb0cc36c69c22aeb9c0a90e66bfdfaa6f664f7026e76d","src/unix.rs":"0aa7cd7d4077efa7024a0842784aa8f0fef84790f117608c7c29ac9aa5a5d526"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b6cf73a7fedd0d1997a00e85c1e904f841a898349c9611cd58deaae546ad3747","Android.bp":"356d14b16ca20fe9333c5562f2455d53af7e6466bae9ac8e508cd81b99bf1bdc","Cargo.toml":"721dfa16f3ef683822d8e1c86fadcbc0ffca8a68c1b918de83c53fbf9c6c7389","LICENSE":"29856856b1e210364711a1394960b7ffc52417a1ffa353f4b498400205e190fa","METADATA":"75937ef5d2fd3ebae706041f36b15ff6e92525dd7a601f0c923a5820bffdd5f2","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3d5db4ac0a3f8aa0a114594429de293584c524a8a5b67bfe340c81635d929607","README.tpl":"5511055c4ee1eb92c28b4071aa824e6bf788adfaff0fbcdb01c6b3d30e42f665","TEST_MAPPING":"63673b283d8a11f12f121eb2f00be291fd9abddad2f1afc28158ccb162d847c2","cargo_embargo.json":"11353981b15821b0bc35a665114aeaf9fc0a13ae7c68bf8c72a62906672160ce","src/lib.rs":"033c710622208a31d764796228f746e5782bd3838c2dcd9cf4046f6e4c94fc85","src/sys/mod.rs":"a7df4bf87fd497d2c5b8aec9a57447129d51e724ac0255eb2c58781af6b2fea6","src/sys/unix.rs":"05f90e4685a6f548925e807c00c883b4238db10cc30f2cfc59b0a3d829d31d7c","src/sys/windows.rs":"dd101237e00bef5b5e9cb0cc36c69c22aeb9c0a90e66bfdfaa6f664f7026e76d","src/unix.rs":"0aa7cd7d4077efa7024a0842784aa8f0fef84790f117608c7c29ac9aa5a5d526"}}
\ No newline at end of file
diff --git a/crates/shared_child/Android.bp b/crates/shared_child/Android.bp
index bbdf73a..3002362 100644
--- a/crates/shared_child/Android.bp
+++ b/crates/shared_child/Android.bp
@@ -30,4 +30,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/shared_child/cargo_embargo.json b/crates/shared_child/cargo_embargo.json
index a2a6ffe..a3362c7 100644
--- a/crates/shared_child/cargo_embargo.json
+++ b/crates/shared_child/cargo_embargo.json
@@ -5,5 +5,6 @@
"com.android.microfuchsia",
"com.android.virt"
],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/shared_library/.android-checksum.json b/crates/shared_library/.android-checksum.json
index 3de5d68..cb798e1 100644
--- a/crates/shared_library/.android-checksum.json
+++ b/crates/shared_library/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8cf57ada57172d773ac07cff46e4672a5b0185ab6839b04345e5ffcdadd4395c","Android.bp":"613dc6ee33539636a0045beb142648c83bd7a271c75c7502594f2d7be6c729f0","Cargo.toml":"7c35e13ad13bc162115ca26eb6be1c8b6f6e4cb25afa001126a8e212631c9a2b","LICENSE":"48d99f4a867bd5a665ab6b79a3e0c7a0696be2f44183733d63a17f4225d5c319","LICENSE-APACHE":"48d99f4a867bd5a665ab6b79a3e0c7a0696be2f44183733d63a17f4225d5c319","METADATA":"b7c842878395aad77d4bf1e7460ceecd9fafa6939931338b4dfbccb895b74084","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"701afc6a0d203bdc17c0ac7361ff825166362269f65e4fa8431bad97a71cc1e6","cargo_embargo.json":"1192686155f363ec6cf128bf4c262b58291226db47b3981c4818036fcacdb456","src/dynamic_library.rs":"683bef2c72344be78d9204f6c2a5fd5222fe49949e49aa4c3432c883c3d8ac52","src/lib.rs":"8f76b9a49c0a7096e8862e9df316e81f882d85d01bbd8d2f70988ea7bbd9fe68"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8cf57ada57172d773ac07cff46e4672a5b0185ab6839b04345e5ffcdadd4395c","Android.bp":"07bc028c596efaf45835386f7f98b4ce92de69c9a3bac5455ee9f5b85a24ff2a","Cargo.toml":"7c35e13ad13bc162115ca26eb6be1c8b6f6e4cb25afa001126a8e212631c9a2b","LICENSE":"48d99f4a867bd5a665ab6b79a3e0c7a0696be2f44183733d63a17f4225d5c319","LICENSE-APACHE":"48d99f4a867bd5a665ab6b79a3e0c7a0696be2f44183733d63a17f4225d5c319","METADATA":"b7c842878395aad77d4bf1e7460ceecd9fafa6939931338b4dfbccb895b74084","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"701afc6a0d203bdc17c0ac7361ff825166362269f65e4fa8431bad97a71cc1e6","cargo_embargo.json":"b2a6283ffe6492aca37a085f2d19a5895d04cdd29477543ee7618fde7a390a8e","src/dynamic_library.rs":"683bef2c72344be78d9204f6c2a5fd5222fe49949e49aa4c3432c883c3d8ac52","src/lib.rs":"8f76b9a49c0a7096e8862e9df316e81f882d85d01bbd8d2f70988ea7bbd9fe68"}}
\ No newline at end of file
diff --git a/crates/shared_library/Android.bp b/crates/shared_library/Android.bp
index fcc0ee0..0f99611 100644
--- a/crates/shared_library/Android.bp
+++ b/crates/shared_library/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/shared_library/cargo_embargo.json b/crates/shared_library/cargo_embargo.json
index 98cba6d..a31d382 100644
--- a/crates/shared_library/cargo_embargo.json
+++ b/crates/shared_library/cargo_embargo.json
@@ -9,5 +9,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/shlex/.android-checksum.json b/crates/shlex/.android-checksum.json
index 6591957..79a55b7 100644
--- a/crates/shlex/.android-checksum.json
+++ b/crates/shlex/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"234aaaa6ee80238682662a2e52cd2cf913c44d592cdd7da3980d283601e2cdd0","Android.bp":"da8c129b53884932c76bf66208b02fae7c21dcf0c99ec8892e8652947db21094","CHANGELOG.md":"52e4024b3b652881666e779cb882a7a35531e1e542f88b65a8fab2791a32ea24","Cargo.toml":"fad449ca5920d9e2b8723b1b350bfcf3370464168104762962891e2f71909014","LICENSE":"70858536f9af8e5066798ccbcc7588415cb7fa703800ef409169a75feaeb4dab","LICENSE-APACHE":"70858536f9af8e5066798ccbcc7588415cb7fa703800ef409169a75feaeb4dab","METADATA":"8b2a169fec1c1954a60130fcf6b821cea9d19b79bd454b98196fcfa178aad6f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6bc5c30333760f2cfad8809c466b76ea7bcbaf8c643c76f490926bf899864a57","TEST_MAPPING":"ced7fee37f5bd0d634cee244adeff5ac39ece346f79f1aa141ec3a40a6e6c02d","cargo_embargo.json":"c16c5dc9f0a0a516d77e6f3c7cc57f29943bc852a1e952bdce90fa8283ec923e","src/bytes.rs":"ffa59180e227291af698a4910ab60cbf380dd7c85c243b04f2f16d5a2a600b32","src/lib.rs":"c874e48ec37533ad40244bc91a5cdb506b5f17427f80ad40274d4cabfdbb0721","src/quoting_warning.md":"0740f5ff5b3a287a97fe747bac37e4cf925148b063ef6efb8b095c8c4d64196b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"234aaaa6ee80238682662a2e52cd2cf913c44d592cdd7da3980d283601e2cdd0","Android.bp":"da8c129b53884932c76bf66208b02fae7c21dcf0c99ec8892e8652947db21094","CHANGELOG.md":"52e4024b3b652881666e779cb882a7a35531e1e542f88b65a8fab2791a32ea24","Cargo.toml":"fad449ca5920d9e2b8723b1b350bfcf3370464168104762962891e2f71909014","LICENSE":"70858536f9af8e5066798ccbcc7588415cb7fa703800ef409169a75feaeb4dab","LICENSE-APACHE":"70858536f9af8e5066798ccbcc7588415cb7fa703800ef409169a75feaeb4dab","METADATA":"8b2a169fec1c1954a60130fcf6b821cea9d19b79bd454b98196fcfa178aad6f8","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"6bc5c30333760f2cfad8809c466b76ea7bcbaf8c643c76f490926bf899864a57","TEST_MAPPING":"ced7fee37f5bd0d634cee244adeff5ac39ece346f79f1aa141ec3a40a6e6c02d","cargo_embargo.json":"331be7abdb0620c0d7620a1d4338ba0beb2d580e795770f0b9ea8952c6548b1b","src/bytes.rs":"ffa59180e227291af698a4910ab60cbf380dd7c85c243b04f2f16d5a2a600b32","src/lib.rs":"c874e48ec37533ad40244bc91a5cdb506b5f17427f80ad40274d4cabfdbb0721","src/quoting_warning.md":"0740f5ff5b3a287a97fe747bac37e4cf925148b063ef6efb8b095c8c4d64196b"}}
\ No newline at end of file
diff --git a/crates/shlex/cargo_embargo.json b/crates/shlex/cargo_embargo.json
index 9b199ad..30052f7 100644
--- a/crates/shlex/cargo_embargo.json
+++ b/crates/shlex/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/signal-hook-registry/.android-checksum.json b/crates/signal-hook-registry/.android-checksum.json
index aa75014..8a84bb0 100644
--- a/crates/signal-hook-registry/.android-checksum.json
+++ b/crates/signal-hook-registry/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"61c9724c1801886708e1b0a06ab3f63c2c02f15a50e185dba7cf6cfcce2f3f3c","Android.bp":"168cccb20d28317fbcdf56f288f6584a888b6a711a917a531d1b7e756d8e16be","Cargo.toml":"8c75234e0341508b49ede53e49947ca8b0ab955bf15a5545724788ea7e6dbbca","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3b8039d8fa2ce70632a9a586bb92a190bc0ea0f1638b6631a74edf104374100b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7afdad642a89a82a53269f1bbc14f43c87557701b402c16c4c7a16a60feb8559","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/half_lock.rs":"b278ae2bc56b9b4e20301961691cadf5f8ff24faa92828509e74063f86fe1fc7","src/lib.rs":"aa674cd9a04b1a830677d16b58894ceee82dd2dcbdbca2d1b12fc24d7a97b657","tests/unregister_signal.rs":"085c0faaea232e1a7be4183cf0e2dffdfb705db21e4f6fbccfaff1414adeeed5"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"61c9724c1801886708e1b0a06ab3f63c2c02f15a50e185dba7cf6cfcce2f3f3c","Android.bp":"83fb79bcb03a8f0ec3b25db482da29847a1406edc77eeb9c8549695daccd01db","Cargo.toml":"8c75234e0341508b49ede53e49947ca8b0ab955bf15a5545724788ea7e6dbbca","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3b8039d8fa2ce70632a9a586bb92a190bc0ea0f1638b6631a74edf104374100b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7afdad642a89a82a53269f1bbc14f43c87557701b402c16c4c7a16a60feb8559","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/half_lock.rs":"b278ae2bc56b9b4e20301961691cadf5f8ff24faa92828509e74063f86fe1fc7","src/lib.rs":"aa674cd9a04b1a830677d16b58894ceee82dd2dcbdbca2d1b12fc24d7a97b657","tests/unregister_signal.rs":"085c0faaea232e1a7be4183cf0e2dffdfb705db21e4f6fbccfaff1414adeeed5"}}
\ No newline at end of file
diff --git a/crates/signal-hook-registry/Android.bp b/crates/signal-hook-registry/Android.bp
index 239755a..163008b 100644
--- a/crates/signal-hook-registry/Android.bp
+++ b/crates/signal-hook-registry/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/signal-hook-registry/cargo_embargo.json b/crates/signal-hook-registry/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/signal-hook-registry/cargo_embargo.json
+++ b/crates/signal-hook-registry/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/signal-hook/.android-checksum.json b/crates/signal-hook/.android-checksum.json
index 1cd9cb8..52af8ce 100644
--- a/crates/signal-hook/.android-checksum.json
+++ b/crates/signal-hook/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a48768676619a82dd5425c7dfc01e527e8ed0e63917c83912a9a4ef5db7c4602","Android.bp":"97c6ac080720293b1d54167974dc0ee8e920322216ab131d31940267c3667c30","CHANGELOG.md":"92b2c0896b906cff77a2b600154ecec04fbad4e52ce4acb9e7fd904660293c3f","Cargo.lock":"72ed84e020e586ec50b565cce0be94278af2b350d9a65ea51b405e8eb9afc560","Cargo.toml":"d8795ca0b0fcb29a18488be48d18f9b9b741f437050b1f255c8cf2a064f720f9","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"397079c6f86d9321a0c460a1f12a56aa4f21ba0a57fee9bda99618fafe809f76","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0950348a01301cc534a0a57665956e7db2730e0e20971d140ad9fe09cf939110","build.rs":"64d44cb278c38c1048eefe7a1c6b1125ceac3b186fd654788e65388d9e6db38c","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","ci-check.sh":"bca385d159c39b160115b8c7ff374c9b421311db296d46684e94777cb4ad9e83","examples/print.rs":"dbc9f145109e8af609f94185c2ec1a311578965be112bbeaaa1f20dac99e1ace","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/flag.rs":"b30f778f783f06de52da92448142c12ca062ab25ac4ec8b053b51db5e5d02317","src/iterator/backend.rs":"c7789f8e0d18c472873d669d094a4ed636c17e8c111e197835bf48d0bb7c8c7d","src/iterator/exfiltrator/mod.rs":"586aa66410aca75c09e6511bd3040e2734267685a0f2ca60f5c22a0414dfe0a6","src/iterator/exfiltrator/origin.rs":"ec7c816d5a573a7afc2a9bc80d1c8db913ed9ea650bcea9dcc30c60a8c641c26","src/iterator/exfiltrator/raw.rs":"b8be72605b718cb7f330606b7ca432a3285607fdec345c432b5f08bb16c78333","src/iterator/mod.rs":"7af625c618dcc83ec664676849cb889d096e8d1be2c0c0132456679bab1278fd","src/lib.rs":"2ea9704fd99d6ff6c1ea98d7d99d63efff52e64f4bd6ff9db4069d196d5e88e7","src/low_level/channel.rs":"06412c0840a509f63aaf60224ab4169f204c293f17054e5f2d9509c5edcc7de9","src/low_level/extract.c":"de1dc6e932ff55d43e9bf4fd1c3a8dc1ba45fa454a01bb60fe30ae95c5d462ca","src/low_level/mod.rs":"22262a15934483cc56ab469a3d19ab7574544e3aa829ce676dce7c33b3d2f677","src/low_level/pipe.rs":"bbd5649cceaa23884b171ceb69e66fac557cb2bae718d5a4c89e2ca710c5ad47","src/low_level/siginfo.rs":"54adaa93977c67d61159d70fdd01bd4913cc4b170a24496190c7c52064d3335e","src/low_level/signal_details.rs":"a3df232de834cb5be0e639c5fd24b42a7c3f0ade7d6490e6a5107eca616f244d","tests/default.rs":"7678cfb1b9191af0219fcc41eeab45d16c1a4a60adf6042023dea5fff7f84aec","tests/iterator.rs":"268d335fa10091f30fddd40d92e9bd709376e045a8ac35e773d743f5a321509d","tests/shutdown.rs":"c72a6acdb69fa0b848945019dc46f19c899952e8f4b32f8c1443005fcac64f28"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a48768676619a82dd5425c7dfc01e527e8ed0e63917c83912a9a4ef5db7c4602","Android.bp":"eed7c61fa8d8da879fca5f6522b39ae0e205281deedad1c059a97ad4c4425ad9","CHANGELOG.md":"92b2c0896b906cff77a2b600154ecec04fbad4e52ce4acb9e7fd904660293c3f","Cargo.lock":"72ed84e020e586ec50b565cce0be94278af2b350d9a65ea51b405e8eb9afc560","Cargo.toml":"d8795ca0b0fcb29a18488be48d18f9b9b741f437050b1f255c8cf2a064f720f9","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"397079c6f86d9321a0c460a1f12a56aa4f21ba0a57fee9bda99618fafe809f76","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0950348a01301cc534a0a57665956e7db2730e0e20971d140ad9fe09cf939110","build.rs":"64d44cb278c38c1048eefe7a1c6b1125ceac3b186fd654788e65388d9e6db38c","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","ci-check.sh":"bca385d159c39b160115b8c7ff374c9b421311db296d46684e94777cb4ad9e83","examples/print.rs":"dbc9f145109e8af609f94185c2ec1a311578965be112bbeaaa1f20dac99e1ace","rustfmt.toml":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","src/flag.rs":"b30f778f783f06de52da92448142c12ca062ab25ac4ec8b053b51db5e5d02317","src/iterator/backend.rs":"c7789f8e0d18c472873d669d094a4ed636c17e8c111e197835bf48d0bb7c8c7d","src/iterator/exfiltrator/mod.rs":"586aa66410aca75c09e6511bd3040e2734267685a0f2ca60f5c22a0414dfe0a6","src/iterator/exfiltrator/origin.rs":"ec7c816d5a573a7afc2a9bc80d1c8db913ed9ea650bcea9dcc30c60a8c641c26","src/iterator/exfiltrator/raw.rs":"b8be72605b718cb7f330606b7ca432a3285607fdec345c432b5f08bb16c78333","src/iterator/mod.rs":"7af625c618dcc83ec664676849cb889d096e8d1be2c0c0132456679bab1278fd","src/lib.rs":"2ea9704fd99d6ff6c1ea98d7d99d63efff52e64f4bd6ff9db4069d196d5e88e7","src/low_level/channel.rs":"06412c0840a509f63aaf60224ab4169f204c293f17054e5f2d9509c5edcc7de9","src/low_level/extract.c":"de1dc6e932ff55d43e9bf4fd1c3a8dc1ba45fa454a01bb60fe30ae95c5d462ca","src/low_level/mod.rs":"22262a15934483cc56ab469a3d19ab7574544e3aa829ce676dce7c33b3d2f677","src/low_level/pipe.rs":"bbd5649cceaa23884b171ceb69e66fac557cb2bae718d5a4c89e2ca710c5ad47","src/low_level/siginfo.rs":"54adaa93977c67d61159d70fdd01bd4913cc4b170a24496190c7c52064d3335e","src/low_level/signal_details.rs":"a3df232de834cb5be0e639c5fd24b42a7c3f0ade7d6490e6a5107eca616f244d","tests/default.rs":"7678cfb1b9191af0219fcc41eeab45d16c1a4a60adf6042023dea5fff7f84aec","tests/iterator.rs":"268d335fa10091f30fddd40d92e9bd709376e045a8ac35e773d743f5a321509d","tests/shutdown.rs":"c72a6acdb69fa0b848945019dc46f19c899952e8f4b32f8c1443005fcac64f28"}}
\ No newline at end of file
diff --git a/crates/signal-hook/Android.bp b/crates/signal-hook/Android.bp
index 62f4917..db072dc 100644
--- a/crates/signal-hook/Android.bp
+++ b/crates/signal-hook/Android.bp
@@ -36,4 +36,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/signal-hook/cargo_embargo.json b/crates/signal-hook/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/signal-hook/cargo_embargo.json
+++ b/crates/signal-hook/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/simd-adler32/.android-checksum.json b/crates/simd-adler32/.android-checksum.json
new file mode 100644
index 0000000..a4fd0d4
--- /dev/null
+++ b/crates/simd-adler32/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"27e657695a62c7fae9264b98b8ca2fe9bd0b6fa14d5fa3f9b0e1e2a00992433d","Android.bp":"0e6621c1ee671467365758deb717305c550d398b344f074d16c43094b0b9b9cc","CHANGELOG.md":"207aef4850a9ac2823d05bb0880b2640d40b5977af96046bda076c9603153d1a","Cargo.toml":"ffab1ad30255c246923cf735fe6c0d8ac224b5cd58d192a2965b008d7f60c222","LICENSE":"54fa0b354708030ead0bc31e2eb2e386171bb46ef67cca6e72207873a4f496bb","LICENSE.md":"54fa0b354708030ead0bc31e2eb2e386171bb46ef67cca6e72207873a4f496bb","METADATA":"ae7797891e626067791d923a021de816fa16f9c666c482ef76b217fdc44137f0","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5cd5e985db11f761341175d21f958bcb0926adad41713ca4cef6f2281b94c1d9","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/hash.rs":"af4c0ebd98015ad21920ea87375c36e004b9d47c2f8fc4d58f2e4dae51e74c65","src/imp/avx2.rs":"1dcd0b7f693d4af6ebb1aa8efc271619c447c6f0328854fbb8691f5943fb6c38","src/imp/avx512.rs":"359707695e805e3697219064bae47ce452855a36d4780e1ad04982c07aaed6fe","src/imp/mod.rs":"03dbd119cf484583901132589b871faa1df83e2be4493f5fef12f15ac2ea726d","src/imp/neon.rs":"3e2925fdc94b8389d347a249617a85c7c313c68e10c6366cab92db8487935785","src/imp/scalar.rs":"8136fb5976de1bd37f4891cb64e13c660e468f7f357d75ec4e209d757594476a","src/imp/sse2.rs":"b4dc4cc64dae16f6e31bd008a540f80f25edeab3ca7bb8072bda0f2d77c12a75","src/imp/ssse3.rs":"50afa6297af5ebe8fef8f4d0d3420897458abc6a92182ab6167f7bd4031e4bd8","src/imp/wasm.rs":"814f1c79f122cc627e6b7a44cdbbd6dd214dd011976115fd163731b72d60c2a6","src/lib.rs":"db0f0b084cd90d1f37b2ea0baaeaa36c3ea74cab00db2b398769cecfb8008ef0"}}
\ No newline at end of file
diff --git a/crates/simd-adler32/.cargo-checksum.json b/crates/simd-adler32/.cargo-checksum.json
new file mode 100644
index 0000000..b25bff0
--- /dev/null
+++ b/crates/simd-adler32/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"4f762219d91ec3f7b6f4f25c6c4f4a83a5c3a0db1503827d9e1541c5fb8b62a1","Cargo.toml":"1df396cf8d69ee6f333bae303d4051c9f189167fa1ce07791becc5d3f2bd14fe","LICENSE.md":"42a35170233e83e18856792e748de4c1ce4a63b2afce9a370c89ef3fe23f9f2d","README.md":"a0568aab174ff15c2252898c7520ce0bd539cfb75d799238acd34dec44ee772c","src/hash.rs":"b5d0aea3ad486cccb67a156606e932b857cf0db5014393df50f290a495836d17","src/imp/avx2.rs":"46a83702bfe182278851d75f83b916a9fe0cc1ff5d1244d1912960ee1fcd82b2","src/imp/avx512.rs":"6e96adfe3099319529c486a186c71c85d92e93b29ea73558b84d65c618367858","src/imp/mod.rs":"9e6a1e69c40b03922b66a939b60e4217886a8aed3757af8d5a1e168c888121dd","src/imp/neon.rs":"2edad3b532b3384c83607a8adc6a1a46b4428708d02cb213f6afd333f60cfc99","src/imp/scalar.rs":"950c9f1202110da14d4ce725591fb2bdab36b73e500d2654e3a75c1a69a4ca5d","src/imp/sse2.rs":"fabefe43151e989a8a24910c682ae2661c30ee39363f0903311e6da60e192658","src/imp/ssse3.rs":"12f719d17bd9044c374f217312ea094625f22436e27bd12a28c60469f9448608","src/imp/wasm.rs":"3b49cde90bde87548e5169c061bf1abdde328710f75cde807d0921130aa232f1","src/lib.rs":"94525f007da93fbb09bbcdc164bc86a13a9526464203eb508ce65e5752c1a3f2"},"package":"d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"}
\ No newline at end of file
diff --git a/crates/simd-adler32/Android.bp b/crates/simd-adler32/Android.bp
new file mode 100644
index 0000000..6012902
--- /dev/null
+++ b/crates/simd-adler32/Android.bp
@@ -0,0 +1,35 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_simd-adler32_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_simd-adler32_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-MIT"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libsimd_adler32",
+ host_supported: true,
+ crate_name: "simd_adler32",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.3.7",
+ crate_root: "src/lib.rs",
+ edition: "2018",
+ features: [
+ "const-generics",
+ "default",
+ "std",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+}
diff --git a/crates/simd-adler32/CHANGELOG.md b/crates/simd-adler32/CHANGELOG.md
new file mode 100644
index 0000000..95b141e
--- /dev/null
+++ b/crates/simd-adler32/CHANGELOG.md
@@ -0,0 +1,12 @@
+# Changelog
+
+## 0.3.3 - 2021-04-14
+
+### Features
+
+- **from_checksum**: add `Adler32::from_checksum`
+
+### Performance Improvements
+
+- **scalar**: improve scalar performance by 90-600%
+ - Defer modulo until right before u16 overflow
diff --git a/crates/simd-adler32/Cargo.toml b/crates/simd-adler32/Cargo.toml
new file mode 100644
index 0000000..cdb8e0b
--- /dev/null
+++ b/crates/simd-adler32/Cargo.toml
@@ -0,0 +1,67 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "simd-adler32"
+version = "0.3.7"
+authors = ["Marvin Countryman <[email protected]>"]
+exclude = ["bench"]
+description = "A SIMD-accelerated Adler-32 hash algorithm implementation."
+readme = "README.md"
+keywords = [
+ "simd",
+ "avx2",
+ "ssse3",
+ "adler",
+ "adler32",
+]
+categories = [
+ "algorithms",
+ "no-std",
+]
+license = "MIT"
+repository = "https://github.com/mcountryman/simd-adler32"
+
+[profile.release]
+opt-level = 2
+debug = 2
+
+[[bench]]
+name = "alts"
+path = "bench/alts.rs"
+harness = false
+
+[[bench]]
+name = "variants"
+path = "bench/variants.rs"
+harness = false
+
+[dev-dependencies.adler]
+version = "1.0.2"
+
+[dev-dependencies.adler32]
+version = "1.2.0"
+
+[dev-dependencies.criterion]
+version = "0.3"
+
+[dev-dependencies.rand]
+version = "0.8"
+
+[features]
+const-generics = []
+default = [
+ "std",
+ "const-generics",
+]
+nightly = []
+std = []
diff --git a/crates/simd-adler32/LICENSE b/crates/simd-adler32/LICENSE
new file mode 120000
index 0000000..f0c4298
--- /dev/null
+++ b/crates/simd-adler32/LICENSE
@@ -0,0 +1 @@
+LICENSE.md
\ No newline at end of file
diff --git a/crates/simd-adler32/LICENSE.md b/crates/simd-adler32/LICENSE.md
new file mode 100644
index 0000000..9bd65ce
--- /dev/null
+++ b/crates/simd-adler32/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) [2021] [Marvin Countryman]
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/crates/simd-adler32/METADATA b/crates/simd-adler32/METADATA
new file mode 100644
index 0000000..7b4bb9e
--- /dev/null
+++ b/crates/simd-adler32/METADATA
@@ -0,0 +1,17 @@
+name: "simd-adler32"
+description: "A SIMD-accelerated Adler-32 hash algorithm implementation."
+third_party {
+ version: "0.3.7"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 4
+ }
+ homepage: "https://crates.io/crates/simd-adler32"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/simd-adler32/simd-adler32-0.3.7.crate"
+ version: "0.3.7"
+ }
+}
diff --git a/crates/simd-adler32/MODULE_LICENSE_MIT b/crates/simd-adler32/MODULE_LICENSE_MIT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/simd-adler32/MODULE_LICENSE_MIT
diff --git a/crates/simd-adler32/README.md b/crates/simd-adler32/README.md
new file mode 100644
index 0000000..4eeec46
--- /dev/null
+++ b/crates/simd-adler32/README.md
@@ -0,0 +1,131 @@
+<h1 align="center">simd-adler32</h1>
+<p align="center">
+ <a href="https://docs.rs/simd-adler32">
+ <img alt="docs.rs badge" src="https://img.shields.io/docsrs/simd-adler32?style=flat-square">
+ </a>
+ <a href="https://crates.io/crates/simd-adler32">
+ <img alt="crates.io badge" src="https://img.shields.io/crates/v/simd-adler32?style=flat-square">
+ </a>
+ <a href="https://github.com/mcountryman/simd-adler32/blob/main/LICENSE.md">
+ <img alt="mit license badge" src="https://img.shields.io/github/license/mcountryman/simd-adler32?style=flat-square">
+ </a>
+</p>
+
+A SIMD-accelerated Adler-32 hash algorithm implementation.
+
+## Features
+
+- No dependencies
+- Support `no_std` (with `default-features = false`)
+- Runtime CPU feature detection (when `std` enabled)
+- Blazing fast performance on as many targets as possible (currently only x86 and x86_64)
+- Default to scalar implementation when simd not available
+
+## Quick start
+
+> Cargo.toml
+
+```toml
+[dependencies]
+simd-adler32 = "*"
+```
+
+> example.rs
+
+```rust
+use simd_adler32::Adler32;
+
+let mut adler = Adler32::new();
+adler.write(b"rust is pretty cool, man");
+let hash = adler.finish();
+
+println!("{}", hash);
+// 1921255656
+```
+
+## Support
+
+**CPU Features**
+
+| impl | arch | feature |
+| ---- | ---------------- | ------- |
+| ✅ | `x86`, `x86_64` | avx512 |
+| ✅ | `x86`, `x86_64` | avx2 |
+| ✅ | `x86`, `x86_64` | ssse3 |
+| ✅ | `x86`, `x86_64` | sse2 |
+| 🚧 | `arm`, `aarch64` | neon |
+| ✅ | `wasm32` | simd128 |
+
+**MSRV** `1.36.0`\*\*
+
+Minimum supported rust version is tested before a new version is published. [**] Feature
+`const-generics` needs to disabled to build on rustc versions `<1.51` which can be done
+by updating your dependency definition to the following.
+
+> Cargo.toml
+
+```toml
+[dependencies]
+simd-adler32 = { version "*", default-features = false, features = ["std"] }
+```
+
+## Performance
+
+Benchmarks listed display number of randomly generated bytes (10k / 100k) and library
+name. Benchmarks sources can be found under the [bench](/bench) directory. Crates used for
+comparison are [adler](https://crates.io/crates/adler) and
+[adler32](https://crates.io/crates/adler32).
+
+> Windows 10 Pro - Intel i5-8300H @ 2.30GHz
+
+| name | avg. time | avg. thrpt |
+| ----------------------- | --------------- | ------------------ |
+| **10k/simd-adler32** | **212.61 ns** | **43.805 GiB/s** |
+| 10k/wuffs | 3843 ns | 2.63 GiB/s\* |
+| 10k/adler32 | 4.8084 us | 1.9369 GiB/s |
+| 10k/adler | 17.979 us | 530.43 MiB/s |
+| ----------------------- | --------------- | ------------------ |
+| **100k/simd-adler32** | **2.7951 us** | **33.320 GiB/s** |
+| 100k/wuffs | 34733 ns | 2.6814 GiB/s\* |
+| 100k/adler32 | 48.488 us | 1.9207 GiB/s |
+| 100k/adler | 178.36 us | 534.69 MiB/s |
+
+\* wuffs ran using mingw64/gcc, ran with `wuffs bench -ccompilers=gcc -reps=1 -iterscale=300 std/adler32`.
+
+> MacBookPro16,1 - Intel i9-9880H CPU @ 2.30GHz
+
+| name | avg. time | avg. thrpt |
+| ----------------------- | --------------- | ------------------ |
+| **10k/simd-adler32** | **200.37 ns** | **46.480 GiB/s** |
+| 10k/adler32 | 4.1516 us | 2.2433 GiB/s |
+| 10k/adler | 10.220 us | 933.15 MiB/s |
+| ----------------------- | --------------- | ------------------ |
+| **100k/simd-adler32** | **2.3282 us** | **40.003 GiB/s** |
+| 100k/adler32 | 41.130 us | 2.2643 GiB/s |
+| 100k/adler | 83.776 us | 534.69 MiB/s |
+
+## Safety
+
+This crate contains a significant amount of `unsafe` code due to the requirement of `unsafe`
+for simd intrinsics. Fuzzing is done on release and debug builds prior to publishing via
+`afl`. Fuzzy tests can be found under [fuzz](/fuzz) the directory.
+
+## Resources
+
+- [LICENSE](./LICENSE.md) - MIT
+- [CHANGELOG](./CHANGELOG.md)
+
+## Credits
+
+Thank you to the contributors of the following projects.
+
+- [adler](https://github.com/jonas-schievink/adler)
+- [adler32](https://github.com/remram44/adler32-rs)
+- [crc32fast](https://github.com/srijs/rust-crc32fast)
+- [wuffs](https://github.com/google/wuffs)
+- [chromium](https://bugs.chromium.org/p/chromium/issues/detail?id=762564)
+- [zlib](https://zlib.net/)
+
+## Contributing
+
+Feel free to submit a issue or pull request. :smile:
diff --git a/crates/simd-adler32/cargo_embargo.json b/crates/simd-adler32/cargo_embargo.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/crates/simd-adler32/cargo_embargo.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/crates/simd-adler32/src/hash.rs b/crates/simd-adler32/src/hash.rs
new file mode 100644
index 0000000..558542b
--- /dev/null
+++ b/crates/simd-adler32/src/hash.rs
@@ -0,0 +1,156 @@
+use crate::{Adler32, Adler32Hash};
+
+impl Adler32Hash for &[u8] {
+ fn hash(&self) -> u32 {
+ let mut hash = Adler32::new();
+
+ hash.write(self);
+ hash.finish()
+ }
+}
+
+impl Adler32Hash for &str {
+ fn hash(&self) -> u32 {
+ let mut hash = Adler32::new();
+
+ hash.write(self.as_bytes());
+ hash.finish()
+ }
+}
+
+#[cfg(feature = "const-generics")]
+impl<const SIZE: usize> Adler32Hash for [u8; SIZE] {
+ fn hash(&self) -> u32 {
+ let mut hash = Adler32::new();
+
+ hash.write(self);
+ hash.finish()
+ }
+}
+
+macro_rules! array_impl {
+ ($s:expr, $($size:expr),+) => {
+ array_impl!($s);
+ $(array_impl!{$size})*
+ };
+ ($size:expr) => {
+ #[cfg(not(feature = "const-generics"))]
+ impl Adler32Hash for [u8; $size] {
+ fn hash(&self) -> u32 {
+ let mut hash = Adler32::new();
+
+ hash.write(self);
+ hash.finish()
+ }
+ }
+ };
+}
+
+array_impl!(
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65,
+ 66,
+ 67,
+ 68,
+ 69,
+ 70,
+ 71,
+ 72,
+ 73,
+ 74,
+ 75,
+ 76,
+ 77,
+ 78,
+ 79,
+ 80,
+ 81,
+ 82,
+ 83,
+ 84,
+ 85,
+ 86,
+ 87,
+ 88,
+ 89,
+ 90,
+ 91,
+ 92,
+ 93,
+ 94,
+ 95,
+ 96,
+ 97,
+ 98,
+ 99,
+ 100,
+ 1024,
+ 1024 * 1024,
+ 1024 * 1024 * 1024,
+ 2048,
+ 4096
+);
diff --git a/crates/simd-adler32/src/imp/avx2.rs b/crates/simd-adler32/src/imp/avx2.rs
new file mode 100644
index 0000000..c16cc99
--- /dev/null
+++ b/crates/simd-adler32/src/imp/avx2.rs
@@ -0,0 +1,214 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports avx2 instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ if std::is_x86_feature_detected!("avx2") {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(
+ target_feature = "avx2",
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(all(
+ not(target_feature = "avx2"),
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(all(
+ any(target_arch = "x86", target_arch = "x86_64"),
+ any(feature = "std", target_feature = "avx2")
+))]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 32;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "x86")]
+ use core::arch::x86::*;
+ #[cfg(target_arch = "x86_64")]
+ use core::arch::x86_64::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ unsafe { update_imp(a, b, data) }
+ }
+
+ #[inline]
+ #[target_feature(enable = "avx2")]
+ unsafe fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ #[inline]
+ unsafe fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline]
+ unsafe fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let one_v = _mm256_set1_epi16(1);
+ let zero_v = _mm256_setzero_si256();
+ let weights = get_weights();
+
+ let mut p_v = _mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, (*a * blocks.len() as u32) as _);
+ let mut a_v = _mm256_setzero_si256();
+ let mut b_v = _mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, *b as _);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const _;
+ let block = _mm256_loadu_si256(block_ptr);
+
+ p_v = _mm256_add_epi32(p_v, a_v);
+
+ a_v = _mm256_add_epi32(a_v, _mm256_sad_epu8(block, zero_v));
+ let mad = _mm256_maddubs_epi16(block, weights);
+ b_v = _mm256_add_epi32(b_v, _mm256_madd_epi16(mad, one_v));
+ }
+
+ b_v = _mm256_add_epi32(b_v, _mm256_slli_epi32(p_v, 5));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add(v: __m256i) -> u32 {
+ let sum = _mm_add_epi32(_mm256_castsi256_si128(v), _mm256_extracti128_si256(v, 1));
+ let hi = _mm_unpackhi_epi64(sum, sum);
+
+ let sum = _mm_add_epi32(hi, sum);
+ let hi = _mm_shuffle_epi32(sum, crate::imp::_MM_SHUFFLE(2, 3, 0, 1));
+
+ let sum = _mm_add_epi32(sum, hi);
+
+ _mm_cvtsi128_si32(sum) as _
+ }
+
+ #[inline(always)]
+ unsafe fn get_weights() -> __m256i {
+ _mm256_set_epi8(
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 1024 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 1024 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 1024 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..1024 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/imp/avx512.rs b/crates/simd-adler32/src/imp/avx512.rs
new file mode 100644
index 0000000..ebb32fa
--- /dev/null
+++ b/crates/simd-adler32/src/imp/avx512.rs
@@ -0,0 +1,242 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports avx512f and avx512bw instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(all(
+ feature = "std",
+ feature = "nightly",
+ any(target_arch = "x86", target_arch = "x86_64")
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ let has_avx512f = std::is_x86_feature_detected!("avx512f");
+ let has_avx512bw = std::is_x86_feature_detected!("avx512bw");
+
+ if has_avx512f && has_avx512bw {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(
+ feature = "nightly",
+ all(target_feature = "avx512f", target_feature = "avx512bw"),
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(all(
+ not(all(feature = "nightly", target_feature = "avx512f", target_feature = "avx512bw")),
+ not(all(
+ feature = "std",
+ feature = "nightly",
+ any(target_arch = "x86", target_arch = "x86_64")
+ ))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(all(
+ feature = "nightly",
+ any(target_arch = "x86", target_arch = "x86_64"),
+ any(
+ feature = "std",
+ all(target_feature = "avx512f", target_feature = "avx512bw")
+ )
+))]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 64;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "x86")]
+ use core::arch::x86::*;
+ #[cfg(target_arch = "x86_64")]
+ use core::arch::x86_64::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ unsafe { update_imp(a, b, data) }
+ }
+
+ #[inline]
+ #[target_feature(enable = "avx512f")]
+ #[target_feature(enable = "avx512bw")]
+ unsafe fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ #[inline]
+ unsafe fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline]
+ unsafe fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let one_v = _mm512_set1_epi16(1);
+ let zero_v = _mm512_setzero_si512();
+ let weights = get_weights();
+
+ let p_v = (*a * blocks.len() as u32) as _;
+ let mut p_v = _mm512_set_epi32(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, p_v);
+ let mut a_v = _mm512_setzero_si512();
+ let mut b_v = _mm512_set_epi32(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *b as _);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const _;
+ let block = _mm512_loadu_si512(block_ptr);
+
+ p_v = _mm512_add_epi32(p_v, a_v);
+
+ a_v = _mm512_add_epi32(a_v, _mm512_sad_epu8(block, zero_v));
+ let mad = _mm512_maddubs_epi16(block, weights);
+ b_v = _mm512_add_epi32(b_v, _mm512_madd_epi16(mad, one_v));
+ }
+
+ b_v = _mm512_add_epi32(b_v, _mm512_slli_epi32(p_v, 6));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add(v: __m512i) -> u32 {
+ let v: [__m256i; 2] = core::mem::transmute(v);
+
+ reduce_add_256(v[0]) + reduce_add_256(v[1])
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_256(v: __m256i) -> u32 {
+ let v: [__m128i; 2] = core::mem::transmute(v);
+ let sum = _mm_add_epi32(v[0], v[1]);
+ let hi = _mm_unpackhi_epi64(sum, sum);
+
+ let sum = _mm_add_epi32(hi, sum);
+ let hi = _mm_shuffle_epi32(sum, crate::imp::_MM_SHUFFLE(2, 3, 0, 1));
+
+ let sum = _mm_add_epi32(sum, hi);
+ let sum = _mm_cvtsi128_si32(sum) as _;
+
+ sum
+ }
+
+ #[inline(always)]
+ unsafe fn get_weights() -> __m512i {
+ _mm512_set_epi8(
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 1024 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 1024 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 1024 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..1024 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/imp/mod.rs b/crates/simd-adler32/src/imp/mod.rs
new file mode 100644
index 0000000..957b50a
--- /dev/null
+++ b/crates/simd-adler32/src/imp/mod.rs
@@ -0,0 +1,23 @@
+pub mod avx2;
+pub mod avx512;
+pub mod scalar;
+pub mod sse2;
+pub mod ssse3;
+pub mod wasm;
+
+pub type Adler32Imp = fn(u16, u16, &[u8]) -> (u16, u16);
+
+#[inline]
+#[allow(non_snake_case)]
+pub const fn _MM_SHUFFLE(z: u32, y: u32, x: u32, w: u32) -> i32 {
+ ((z << 6) | (y << 4) | (x << 2) | w) as i32
+}
+
+pub fn get_imp() -> Adler32Imp {
+ avx512::get_imp()
+ .or_else(avx2::get_imp)
+ .or_else(ssse3::get_imp)
+ .or_else(sse2::get_imp)
+ .or_else(wasm::get_imp)
+ .unwrap_or(scalar::update)
+}
diff --git a/crates/simd-adler32/src/imp/neon.rs b/crates/simd-adler32/src/imp/neon.rs
new file mode 100644
index 0000000..8398b6d
--- /dev/null
+++ b/crates/simd-adler32/src/imp/neon.rs
@@ -0,0 +1,241 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports avx512f and avx512bw instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(all(feature = "std", feature = "nightly", target_arch = "arm"))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ if std::is_arm_feature_detected("neon") {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(feature = "std", feature = "nightly", target_arch = "aarch64"))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ if std::is_aarch64_feature_detected("neon") {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(
+ feature = "nightly",
+ target_feature = "neon",
+ not(all(feature = "std", any(target_arch = "arm", target_arch = "aarch64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(all(
+ not(target_feature = "neon"),
+ not(all(
+ feature = "std",
+ feature = "nightly",
+ any(target_arch = "arm", target_arch = "aarch64")
+ ))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(all(
+ feature = "nightly",
+ any(target_arch = "arm", target_arch = "aarch64"),
+ any(feature = "std", target_feature = "neon")
+))]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 64;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "aarch64")]
+ use core::arch::aarch64::*;
+ #[cfg(target_arch = "arm")]
+ use core::arch::arm::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ unsafe { update_imp(a, b, data) }
+ }
+
+ #[inline]
+ #[target_feature(enable = "neon")]
+ unsafe fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ #[inline]
+ unsafe fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline]
+ unsafe fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let one_v = _mm512_set1_epi16(1);
+ let zero_v = _mm512_setzero_si512();
+ let weights = get_weights();
+
+ let p_v = (*a * blocks.len() as u32) as _;
+ let mut p_v = _mm512_set_epi32(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, p_v);
+ let mut a_v = _mm512_setzero_si512();
+ let mut b_v = _mm512_set_epi32(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, *b as _);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const _;
+ let block = _mm512_loadu_si512(block_ptr);
+
+ p_v = _mm512_add_epi32(p_v, a_v);
+
+ a_v = _mm512_add_epi32(a_v, _mm512_sad_epu8(block, zero_v));
+ let mad = _mm512_maddubs_epi16(block, weights);
+ b_v = _mm512_add_epi32(b_v, _mm512_madd_epi16(mad, one_v));
+ }
+
+ b_v = _mm512_add_epi32(b_v, _mm512_slli_epi32(p_v, 6));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add(v: __m512i) -> u32 {
+ let v: [__m256i; 2] = core::mem::transmute(v);
+
+ reduce_add_256(v[0]) + reduce_add_256(v[1])
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_256(v: __m256i) -> u32 {
+ let v: [__m128i; 2] = core::mem::transmute(v);
+ let sum = _mm_add_epi32(v[0], v[1]);
+ let hi = _mm_unpackhi_epi64(sum, sum);
+
+ let sum = _mm_add_epi32(hi, sum);
+ let hi = _mm_shuffle_epi32(sum, crate::imp::_MM_SHUFFLE(2, 3, 0, 1));
+
+ let sum = _mm_add_epi32(sum, hi);
+ let sum = _mm_cvtsi128_si32(sum) as _;
+
+ sum
+ }
+
+ #[inline(always)]
+ unsafe fn get_weights() -> __m512i {
+ _mm512_set_epi8(
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 1024 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 1024 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 1024 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..1024 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/imp/scalar.rs b/crates/simd-adler32/src/imp/scalar.rs
new file mode 100644
index 0000000..558813e
--- /dev/null
+++ b/crates/simd-adler32/src/imp/scalar.rs
@@ -0,0 +1,69 @@
+const MOD: u32 = 65521;
+const NMAX: usize = 5552;
+
+pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(NMAX);
+ let remainder = chunks.remainder();
+
+ for chunk in chunks {
+ for byte in chunk {
+ a = a.wrapping_add(*byte as _);
+ b = b.wrapping_add(a);
+ }
+
+ a %= MOD;
+ b %= MOD;
+ }
+
+ for byte in remainder {
+ a = a.wrapping_add(*byte as _);
+ b = b.wrapping_add(a);
+ }
+
+ a %= MOD;
+ b %= MOD;
+
+ (a as u16, b as u16)
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn zeroes() {
+ assert_eq!(adler32(&[]), 1);
+ assert_eq!(adler32(&[0]), 1 | 1 << 16);
+ assert_eq!(adler32(&[0, 0]), 1 | 2 << 16);
+ assert_eq!(adler32(&[0; 100]), 0x00640001);
+ assert_eq!(adler32(&[0; 1024]), 0x04000001);
+ assert_eq!(adler32(&[0; 1024 * 1024]), 0x00f00001);
+ }
+
+ #[test]
+ fn ones() {
+ assert_eq!(adler32(&[0xff; 1024]), 0x79a6fc2e);
+ assert_eq!(adler32(&[0xff; 1024 * 1024]), 0x8e88ef11);
+ }
+
+ #[test]
+ fn mixed() {
+ assert_eq!(adler32(&[1]), 2 | 2 << 16);
+ assert_eq!(adler32(&[40]), 41 | 41 << 16);
+
+ assert_eq!(adler32(&[0xA5; 1024 * 1024]), 0xd5009ab1);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_eq!(adler32(b"Wikipedia"), 0x11E60398);
+ }
+
+ fn adler32(data: &[u8]) -> u32 {
+ let (a, b) = super::update(1, 0, data);
+
+ u32::from(b) << 16 | u32::from(a)
+ }
+}
diff --git a/crates/simd-adler32/src/imp/sse2.rs b/crates/simd-adler32/src/imp/sse2.rs
new file mode 100644
index 0000000..b76df52
--- /dev/null
+++ b/crates/simd-adler32/src/imp/sse2.rs
@@ -0,0 +1,233 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports sse2 instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ if std::is_x86_feature_detected!("sse2") {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(
+ target_feature = "sse2",
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(all(
+ not(target_feature = "sse2"),
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(all(
+ any(target_arch = "x86", target_arch = "x86_64"),
+ any(feature = "std", target_feature = "sse2")
+))]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 32;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "x86")]
+ use core::arch::x86::*;
+ #[cfg(target_arch = "x86_64")]
+ use core::arch::x86_64::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ unsafe { update_imp(a, b, data) }
+ }
+
+ #[inline]
+ #[target_feature(enable = "sse2")]
+ unsafe fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ unsafe fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ unsafe fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let zero_v = _mm_setzero_si128();
+ let weight_hi_v = get_weight_hi();
+ let weight_lo_v = get_weight_lo();
+
+ let mut p_v = _mm_set_epi32(0, 0, 0, (*a * blocks.len() as u32) as _);
+ let mut a_v = _mm_setzero_si128();
+ let mut b_v = _mm_set_epi32(0, 0, 0, *b as _);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const _;
+ let left_v = _mm_loadu_si128(block_ptr);
+ let right_v = _mm_loadu_si128(block_ptr.add(1));
+
+ p_v = _mm_add_epi32(p_v, a_v);
+
+ a_v = _mm_add_epi32(a_v, _mm_sad_epu8(left_v, zero_v));
+ let mad = maddubs(left_v, weight_hi_v);
+ b_v = _mm_add_epi32(b_v, mad);
+
+ a_v = _mm_add_epi32(a_v, _mm_sad_epu8(right_v, zero_v));
+ let mad = maddubs(right_v, weight_lo_v);
+ b_v = _mm_add_epi32(b_v, mad);
+ }
+
+ b_v = _mm_add_epi32(b_v, _mm_slli_epi32(p_v, 5));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ unsafe fn maddubs(a: __m128i, b: __m128i) -> __m128i {
+ let a_lo = _mm_unpacklo_epi8(a, _mm_setzero_si128());
+ let a_hi = _mm_unpackhi_epi8(a, _mm_setzero_si128());
+
+ let b_lo = _mm_unpacklo_epi8(b, _mm_setzero_si128());
+ let b_hi = _mm_unpackhi_epi8(b, _mm_setzero_si128());
+
+ let lo = _mm_madd_epi16(a_lo, b_lo);
+ let hi = _mm_madd_epi16(a_hi, b_hi);
+
+ _mm_add_epi32(lo, hi)
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add(v: __m128i) -> u32 {
+ let hi = _mm_unpackhi_epi64(v, v);
+ let sum = _mm_add_epi32(hi, v);
+ let hi = _mm_shuffle_epi32(sum, crate::imp::_MM_SHUFFLE(2, 3, 0, 1));
+
+ let sum = _mm_add_epi32(sum, hi);
+
+ _mm_cvtsi128_si32(sum) as _
+ }
+
+ #[inline(always)]
+ unsafe fn get_weight_lo() -> __m128i {
+ _mm_set_epi8(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
+ }
+
+ #[inline(always)]
+ unsafe fn get_weight_hi() -> __m128i {
+ _mm_set_epi8(
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 1024 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 1024 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 1024 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..1024 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/imp/ssse3.rs b/crates/simd-adler32/src/imp/ssse3.rs
new file mode 100644
index 0000000..2602d47
--- /dev/null
+++ b/crates/simd-adler32/src/imp/ssse3.rs
@@ -0,0 +1,219 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports ssse3 instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ if std::is_x86_feature_detected!("ssse3") {
+ Some(imp::update)
+ } else {
+ None
+ }
+}
+
+#[inline]
+#[cfg(all(
+ target_feature = "ssse3",
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(all(
+ not(target_feature = "ssse3"),
+ not(all(feature = "std", any(target_arch = "x86", target_arch = "x86_64")))
+))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(all(
+ any(target_arch = "x86", target_arch = "x86_64"),
+ any(feature = "std", target_feature = "ssse3")
+))]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 32;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "x86")]
+ use core::arch::x86::*;
+ #[cfg(target_arch = "x86_64")]
+ use core::arch::x86_64::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ unsafe { update_imp(a, b, data) }
+ }
+
+ #[inline]
+ #[target_feature(enable = "ssse3")]
+ unsafe fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ unsafe fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ unsafe fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let one_v = _mm_set1_epi16(1);
+ let zero_v = _mm_set1_epi16(0);
+ let weight_hi_v = get_weight_hi();
+ let weight_lo_v = get_weight_lo();
+
+ let mut p_v = _mm_set_epi32(0, 0, 0, (*a * blocks.len() as u32) as _);
+ let mut a_v = _mm_set_epi32(0, 0, 0, 0);
+ let mut b_v = _mm_set_epi32(0, 0, 0, *b as _);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const _;
+ let left_v = _mm_loadu_si128(block_ptr);
+ let right_v = _mm_loadu_si128(block_ptr.add(1));
+
+ p_v = _mm_add_epi32(p_v, a_v);
+
+ a_v = _mm_add_epi32(a_v, _mm_sad_epu8(left_v, zero_v));
+ let mad = _mm_maddubs_epi16(left_v, weight_hi_v);
+ b_v = _mm_add_epi32(b_v, _mm_madd_epi16(mad, one_v));
+
+ a_v = _mm_add_epi32(a_v, _mm_sad_epu8(right_v, zero_v));
+ let mad = _mm_maddubs_epi16(right_v, weight_lo_v);
+ b_v = _mm_add_epi32(b_v, _mm_madd_epi16(mad, one_v));
+ }
+
+ b_v = _mm_add_epi32(b_v, _mm_slli_epi32(p_v, 5));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ unsafe fn reduce_add(v: __m128i) -> u32 {
+ let hi = _mm_unpackhi_epi64(v, v);
+ let sum = _mm_add_epi32(hi, v);
+ let hi = _mm_shuffle_epi32(sum, crate::imp::_MM_SHUFFLE(2, 3, 0, 1));
+ let sum = _mm_add_epi32(sum, hi);
+
+ _mm_cvtsi128_si32(sum) as _
+ }
+
+ #[inline(always)]
+ unsafe fn get_weight_lo() -> __m128i {
+ _mm_set_epi8(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
+ }
+
+ #[inline(always)]
+ unsafe fn get_weight_hi() -> __m128i {
+ _mm_set_epi8(
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 1024 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 1024 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 1024 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..1024 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/imp/wasm.rs b/crates/simd-adler32/src/imp/wasm.rs
new file mode 100644
index 0000000..5a9152b
--- /dev/null
+++ b/crates/simd-adler32/src/imp/wasm.rs
@@ -0,0 +1,217 @@
+use super::Adler32Imp;
+
+/// Resolves update implementation if CPU supports simd128 instructions.
+pub fn get_imp() -> Option<Adler32Imp> {
+ get_imp_inner()
+}
+
+#[inline]
+#[cfg(target_feature = "simd128")]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ Some(imp::update)
+}
+
+#[inline]
+#[cfg(not(target_feature = "simd128"))]
+fn get_imp_inner() -> Option<Adler32Imp> {
+ None
+}
+
+#[cfg(target_feature = "simd128")]
+mod imp {
+ const MOD: u32 = 65521;
+ const NMAX: usize = 5552;
+ const BLOCK_SIZE: usize = 32;
+ const CHUNK_SIZE: usize = NMAX / BLOCK_SIZE * BLOCK_SIZE;
+
+ #[cfg(target_arch = "wasm32")]
+ use core::arch::wasm32::*;
+ #[cfg(target_arch = "wasm64")]
+ use core::arch::wasm64::*;
+
+ pub fn update(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ update_imp(a, b, data)
+ }
+
+ #[inline]
+ #[target_feature(enable = "simd128")]
+ fn update_imp(a: u16, b: u16, data: &[u8]) -> (u16, u16) {
+ let mut a = a as u32;
+ let mut b = b as u32;
+
+ let chunks = data.chunks_exact(CHUNK_SIZE);
+ let remainder = chunks.remainder();
+ for chunk in chunks {
+ update_chunk_block(&mut a, &mut b, chunk);
+ }
+
+ update_block(&mut a, &mut b, remainder);
+
+ (a as u16, b as u16)
+ }
+
+ fn update_chunk_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert_eq!(
+ chunk.len(),
+ CHUNK_SIZE,
+ "Unexpected chunk size (expected {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ reduce_add_blocks(a, b, chunk);
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ fn update_block(a: &mut u32, b: &mut u32, chunk: &[u8]) {
+ debug_assert!(
+ chunk.len() <= CHUNK_SIZE,
+ "Unexpected chunk size (expected <= {}, got {})",
+ CHUNK_SIZE,
+ chunk.len()
+ );
+
+ for byte in reduce_add_blocks(a, b, chunk) {
+ *a += *byte as u32;
+ *b += *a;
+ }
+
+ *a %= MOD;
+ *b %= MOD;
+ }
+
+ #[inline(always)]
+ fn reduce_add_blocks<'a>(a: &mut u32, b: &mut u32, chunk: &'a [u8]) -> &'a [u8] {
+ if chunk.len() < BLOCK_SIZE {
+ return chunk;
+ }
+
+ let blocks = chunk.chunks_exact(BLOCK_SIZE);
+ let blocks_remainder = blocks.remainder();
+
+ let weight_hi_v = get_weight_hi();
+ let weight_lo_v = get_weight_lo();
+
+ let mut p_v = u32x4(*a * blocks.len() as u32, 0, 0, 0);
+ let mut a_v = u32x4(0, 0, 0, 0);
+ let mut b_v = u32x4(*b, 0, 0, 0);
+
+ for block in blocks {
+ let block_ptr = block.as_ptr() as *const v128;
+ let v_lo = unsafe { block_ptr.read_unaligned() };
+ let v_hi = unsafe { block_ptr.add(1).read_unaligned() };
+
+ p_v = u32x4_add(p_v, a_v);
+
+ a_v = u32x4_add(a_v, u32x4_extadd_quarters_u8x16(v_lo));
+ let mad = i32x4_dot_i8x16(v_lo, weight_lo_v);
+ b_v = u32x4_add(b_v, mad);
+
+ a_v = u32x4_add(a_v, u32x4_extadd_quarters_u8x16(v_hi));
+ let mad = i32x4_dot_i8x16(v_hi, weight_hi_v);
+ b_v = u32x4_add(b_v, mad);
+ }
+
+ b_v = u32x4_add(b_v, u32x4_shl(p_v, 5));
+
+ *a += reduce_add(a_v);
+ *b = reduce_add(b_v);
+
+ blocks_remainder
+ }
+
+ #[inline(always)]
+ fn i32x4_dot_i8x16(a: v128, b: v128) -> v128 {
+ let a_lo = u16x8_extend_low_u8x16(a);
+ let a_hi = u16x8_extend_high_u8x16(a);
+
+ let b_lo = u16x8_extend_low_u8x16(b);
+ let b_hi = u16x8_extend_high_u8x16(b);
+
+ let lo = i32x4_dot_i16x8(a_lo, b_lo);
+ let hi = i32x4_dot_i16x8(a_hi, b_hi);
+
+ i32x4_add(lo, hi)
+ }
+
+ #[inline(always)]
+ fn u32x4_extadd_quarters_u8x16(a: v128) -> v128 {
+ u32x4_extadd_pairwise_u16x8(u16x8_extadd_pairwise_u8x16(a))
+ }
+
+ #[inline(always)]
+ fn reduce_add(v: v128) -> u32 {
+ let arr: [u32; 4] = unsafe { std::mem::transmute(v) };
+ let mut sum = 0u32;
+ for val in arr {
+ sum = sum.wrapping_add(val);
+ }
+ sum
+ }
+
+ #[inline(always)]
+ fn get_weight_lo() -> v128 {
+ u8x16(
+ 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
+ )
+ }
+
+ #[inline(always)]
+ fn get_weight_hi() -> v128 {
+ u8x16(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use rand::Rng;
+
+ #[test]
+ fn zeroes() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[0]);
+ assert_sum_eq(&[0, 0]);
+ assert_sum_eq(&[0; 100]);
+ assert_sum_eq(&[0; 1024]);
+ assert_sum_eq(&[0; 512 * 1024]);
+ }
+
+ #[test]
+ fn ones() {
+ assert_sum_eq(&[]);
+ assert_sum_eq(&[1]);
+ assert_sum_eq(&[1, 1]);
+ assert_sum_eq(&[1; 100]);
+ assert_sum_eq(&[1; 1024]);
+ assert_sum_eq(&[1; 512 * 1024]);
+ }
+
+ #[test]
+ fn random() {
+ let mut random = [0; 512 * 1024];
+ rand::thread_rng().fill(&mut random[..]);
+
+ assert_sum_eq(&random[..1]);
+ assert_sum_eq(&random[..100]);
+ assert_sum_eq(&random[..1024]);
+ assert_sum_eq(&random[..512 * 1024]);
+ }
+
+ /// Example calculation from https://en.wikipedia.org/wiki/Adler-32.
+ #[test]
+ fn wiki() {
+ assert_sum_eq(b"Wikipedia");
+ }
+
+ fn assert_sum_eq(data: &[u8]) {
+ if let Some(update) = super::get_imp() {
+ let (a, b) = update(1, 0, data);
+ let left = u32::from(b) << 16 | u32::from(a);
+ let right = adler::adler32_slice(data);
+
+ assert_eq!(left, right, "len({})", data.len());
+ }
+ }
+}
diff --git a/crates/simd-adler32/src/lib.rs b/crates/simd-adler32/src/lib.rs
new file mode 100644
index 0000000..e61dddd
--- /dev/null
+++ b/crates/simd-adler32/src/lib.rs
@@ -0,0 +1,310 @@
+//! # simd-adler32
+//!
+//! A SIMD-accelerated Adler-32 hash algorithm implementation.
+//!
+//! ## Features
+//!
+//! - No dependencies
+//! - Support `no_std` (with `default-features = false`)
+//! - Runtime CPU feature detection (when `std` enabled)
+//! - Blazing fast performance on as many targets as possible (currently only x86 and x86_64)
+//! - Default to scalar implementation when simd not available
+//!
+//! ## Quick start
+//!
+//! > Cargo.toml
+//!
+//! ```toml
+//! [dependencies]
+//! simd-adler32 = "*"
+//! ```
+//!
+//! > example.rs
+//!
+//! ```rust
+//! use simd_adler32::Adler32;
+//!
+//! let mut adler = Adler32::new();
+//! adler.write(b"rust is pretty cool, man");
+//! let hash = adler.finish();
+//!
+//! println!("{}", hash);
+//! // 1921255656
+//! ```
+//!
+//! ## Feature flags
+//!
+//! * `std` - Enabled by default
+//!
+//! Enables std support, see [CPU Feature Detection](#cpu-feature-detection) for runtime
+//! detection support.
+//! * `nightly`
+//!
+//! Enables nightly features required for avx512 support.
+//!
+//! * `const-generics` - Enabled by default
+//!
+//! Enables const-generics support allowing for user-defined array hashing by value. See
+//! [`Adler32Hash`] for details.
+//!
+//! ## Support
+//!
+//! **CPU Features**
+//!
+//! | impl | arch | feature |
+//! | ---- | ---------------- | ------- |
+//! | ✅ | `x86`, `x86_64` | avx512 |
+//! | ✅ | `x86`, `x86_64` | avx2 |
+//! | ✅ | `x86`, `x86_64` | ssse3 |
+//! | ✅ | `x86`, `x86_64` | sse2 |
+//! | 🚧 | `arm`, `aarch64` | neon |
+//! | | `wasm32` | simd128 |
+//!
+//! **MSRV** `1.36.0`\*\*
+//!
+//! Minimum supported rust version is tested before a new version is published. [**] Feature
+//! `const-generics` needs to disabled to build on rustc versions `<1.51` which can be done
+//! by updating your dependency definition to the following.
+//!
+//! ## CPU Feature Detection
+//! simd-adler32 supports both runtime and compile time CPU feature detection using the
+//! `std::is_x86_feature_detected` macro when the `Adler32` struct is instantiated with
+//! the `new` fn.
+//!
+//! Without `std` feature enabled simd-adler32 falls back to compile time feature detection
+//! using `target-feature` or `target-cpu` flags supplied to rustc. See [https://rust-lang.github.io/packed_simd/perf-guide/target-feature/rustflags.html](https://rust-lang.github.io/packed_simd/perf-guide/target-feature/rustflags.html)
+//! for more information.
+//!
+//! Feature detection tries to use the fastest supported feature first.
+#![cfg_attr(not(feature = "std"), no_std)]
+#![cfg_attr(feature = "nightly", feature(stdsimd, avx512_target_feature))]
+
+#[doc(hidden)]
+pub mod hash;
+#[doc(hidden)]
+pub mod imp;
+
+pub use hash::*;
+use imp::{get_imp, Adler32Imp};
+
+/// An adler32 hash generator type.
+#[derive(Clone)]
+pub struct Adler32 {
+ a: u16,
+ b: u16,
+ update: Adler32Imp,
+}
+
+impl Adler32 {
+ /// Constructs a new `Adler32`.
+ ///
+ /// Potential overhead here due to runtime feature detection although in testing on 100k
+ /// and 10k random byte arrays it was not really noticeable.
+ ///
+ /// # Examples
+ /// ```rust
+ /// use simd_adler32::Adler32;
+ ///
+ /// let mut adler = Adler32::new();
+ /// ```
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ /// Constructs a new `Adler32` using existing checksum.
+ ///
+ /// Potential overhead here due to runtime feature detection although in testing on 100k
+ /// and 10k random byte arrays it was not really noticeable.
+ ///
+ /// # Examples
+ /// ```rust
+ /// use simd_adler32::Adler32;
+ ///
+ /// let mut adler = Adler32::from_checksum(0xdeadbeaf);
+ /// ```
+ pub fn from_checksum(checksum: u32) -> Self {
+ Self {
+ a: checksum as u16,
+ b: (checksum >> 16) as u16,
+ update: get_imp(),
+ }
+ }
+
+ /// Computes hash for supplied data and stores results in internal state.
+ pub fn write(&mut self, data: &[u8]) {
+ let (a, b) = (self.update)(self.a, self.b, data);
+
+ self.a = a;
+ self.b = b;
+ }
+
+ /// Returns the hash value for the values written so far.
+ ///
+ /// Despite its name, the method does not reset the hasher’s internal state. Additional
+ /// writes will continue from the current value. If you need to start a fresh hash
+ /// value, you will have to use `reset`.
+ pub fn finish(&self) -> u32 {
+ (u32::from(self.b) << 16) | u32::from(self.a)
+ }
+
+ /// Resets the internal state.
+ pub fn reset(&mut self) {
+ self.a = 1;
+ self.b = 0;
+ }
+}
+
+/// Compute Adler-32 hash on `Adler32Hash` type.
+///
+/// # Arguments
+/// * `hash` - A Adler-32 hash-able type.
+///
+/// # Examples
+/// ```rust
+/// use simd_adler32::adler32;
+///
+/// let hash = adler32(b"Adler-32");
+/// println!("{}", hash); // 800813569
+/// ```
+pub fn adler32<H: Adler32Hash>(hash: &H) -> u32 {
+ hash.hash()
+}
+
+/// A Adler-32 hash-able type.
+pub trait Adler32Hash {
+ /// Feeds this value into `Adler32`.
+ fn hash(&self) -> u32;
+}
+
+impl Default for Adler32 {
+ fn default() -> Self {
+ Self {
+ a: 1,
+ b: 0,
+ update: get_imp(),
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+pub mod read {
+ //! Reader-based hashing.
+ //!
+ //! # Example
+ //! ```rust
+ //! use std::io::Cursor;
+ //! use simd_adler32::read::adler32;
+ //!
+ //! let mut reader = Cursor::new(b"Hello there");
+ //! let hash = adler32(&mut reader).unwrap();
+ //!
+ //! println!("{}", hash) // 800813569
+ //! ```
+ use crate::Adler32;
+ use std::io::{Read, Result};
+
+ /// Compute Adler-32 hash on reader until EOF.
+ ///
+ /// # Example
+ /// ```rust
+ /// use std::io::Cursor;
+ /// use simd_adler32::read::adler32;
+ ///
+ /// let mut reader = Cursor::new(b"Hello there");
+ /// let hash = adler32(&mut reader).unwrap();
+ ///
+ /// println!("{}", hash) // 800813569
+ /// ```
+ pub fn adler32<R: Read>(reader: &mut R) -> Result<u32> {
+ let mut hash = Adler32::new();
+ let mut buf = [0; 4096];
+
+ loop {
+ match reader.read(&mut buf) {
+ Ok(0) => return Ok(hash.finish()),
+ Ok(n) => {
+ hash.write(&buf[..n]);
+ }
+ Err(err) => return Err(err),
+ }
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+pub mod bufread {
+ //! BufRead-based hashing.
+ //!
+ //! Separate `BufRead` trait implemented to allow for custom buffer size optimization.
+ //!
+ //! # Example
+ //! ```rust
+ //! use std::io::{Cursor, BufReader};
+ //! use simd_adler32::bufread::adler32;
+ //!
+ //! let mut reader = Cursor::new(b"Hello there");
+ //! let mut reader = BufReader::new(reader);
+ //! let hash = adler32(&mut reader).unwrap();
+ //!
+ //! println!("{}", hash) // 800813569
+ //! ```
+ use crate::Adler32;
+ use std::io::{BufRead, ErrorKind, Result};
+
+ /// Compute Adler-32 hash on buf reader until EOF.
+ ///
+ /// # Example
+ /// ```rust
+ /// use std::io::{Cursor, BufReader};
+ /// use simd_adler32::bufread::adler32;
+ ///
+ /// let mut reader = Cursor::new(b"Hello there");
+ /// let mut reader = BufReader::new(reader);
+ /// let hash = adler32(&mut reader).unwrap();
+ ///
+ /// println!("{}", hash) // 800813569
+ /// ```
+ pub fn adler32<R: BufRead>(reader: &mut R) -> Result<u32> {
+ let mut hash = Adler32::new();
+
+ loop {
+ let consumed = match reader.fill_buf() {
+ Ok(buf) => {
+ if buf.is_empty() {
+ return Ok(hash.finish());
+ }
+
+ hash.write(buf);
+ buf.len()
+ }
+ Err(err) => match err.kind() {
+ ErrorKind::Interrupted => continue,
+ ErrorKind::UnexpectedEof => return Ok(hash.finish()),
+ _ => return Err(err),
+ },
+ };
+
+ reader.consume(consumed);
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_from_checksum() {
+ let buf = b"rust is pretty cool man";
+ let sum = 0xdeadbeaf;
+
+ let mut simd = super::Adler32::from_checksum(sum);
+ let mut adler = adler::Adler32::from_checksum(sum);
+
+ simd.write(buf);
+ adler.write_slice(buf);
+
+ let simd = simd.finish();
+ let scalar = adler.checksum();
+
+ assert_eq!(simd, scalar);
+ }
+}
diff --git a/crates/siphasher/.android-checksum.json b/crates/siphasher/.android-checksum.json
index 0329317..4827524 100644
--- a/crates/siphasher/.android-checksum.json
+++ b/crates/siphasher/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a39f07ef11e7704f7e404d89680ef8aa30b4229455bc5ee00f3814e26fb35100","Android.bp":"5be49821d8e4f73dd47864417363922fc63ea46a9ea2b013d7fc5257b7d59381","COPYING":"9efc33a8dfedf0028e00d12a508eaaaf7c032e4d85674a1e95fa45387df2ab49","Cargo.toml":"4dd62d9f9a035965b87412a176966169e75de898da628163a021842e87cf5bd7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"2710830a0e2906089b34bf68517552d758e8f930f9d011bdc1c64fafc249bfbf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"72c71fca2561e3851a72beb3ae8ce99c5fe121566ac31530f67350ccfce78256","TEST_MAPPING":"3e58f618b40bf9404a94632a9fecc37da0f3a04467cefd7bd282094fa5975eec","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","patches/LICENSE.patch":"ff283fd5a3029c8391318629bd16704b04fb7271eeee2b46e1b6572a4f0ff4f3","src/lib.rs":"734ace6614190ae60a6bd375b46d8b74135ac0ca63e4593d78b20a26d2fb7ef8","src/sip.rs":"990e4b0c57aa9d2f2609233b104bc2b919413283c3f0cb849c6aa1f079634172","src/sip128.rs":"106ed8e86b7e637cb20480edf64b3edaceaafdcefb694aff2fadd2d9a9547406","src/tests.rs":"76f401fd7b98815dbccec78243da09bb32867853b9722ccc502a688ce1dacaaf","src/tests128.rs":"2f94435809be41bba5894af232340f37f9710ae154e294c77cf91110018e180c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a39f07ef11e7704f7e404d89680ef8aa30b4229455bc5ee00f3814e26fb35100","Android.bp":"3e7c46f8cc455a6fa53a61a64a3e890020cdcd2061849101900f9ef99c98774b","COPYING":"9efc33a8dfedf0028e00d12a508eaaaf7c032e4d85674a1e95fa45387df2ab49","Cargo.toml":"4dd62d9f9a035965b87412a176966169e75de898da628163a021842e87cf5bd7","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"2710830a0e2906089b34bf68517552d758e8f930f9d011bdc1c64fafc249bfbf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"72c71fca2561e3851a72beb3ae8ce99c5fe121566ac31530f67350ccfce78256","TEST_MAPPING":"3e58f618b40bf9404a94632a9fecc37da0f3a04467cefd7bd282094fa5975eec","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","patches/LICENSE.patch":"ff283fd5a3029c8391318629bd16704b04fb7271eeee2b46e1b6572a4f0ff4f3","src/lib.rs":"734ace6614190ae60a6bd375b46d8b74135ac0ca63e4593d78b20a26d2fb7ef8","src/sip.rs":"990e4b0c57aa9d2f2609233b104bc2b919413283c3f0cb849c6aa1f079634172","src/sip128.rs":"106ed8e86b7e637cb20480edf64b3edaceaafdcefb694aff2fadd2d9a9547406","src/tests.rs":"76f401fd7b98815dbccec78243da09bb32867853b9722ccc502a688ce1dacaaf","src/tests128.rs":"2f94435809be41bba5894af232340f37f9710ae154e294c77cf91110018e180c"}}
\ No newline at end of file
diff --git a/crates/siphasher/Android.bp b/crates/siphasher/Android.bp
index e5e303f..b776fe3 100644
--- a/crates/siphasher/Android.bp
+++ b/crates/siphasher/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/siphasher/cargo_embargo.json b/crates/siphasher/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/siphasher/cargo_embargo.json
+++ b/crates/siphasher/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/slotmap/.android-checksum.json b/crates/slotmap/.android-checksum.json
index e10fe44..2a191e7 100644
--- a/crates/slotmap/.android-checksum.json
+++ b/crates/slotmap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"57c08da436f0cdc3d537fc1c6366c6fe71dc7a1806cf3e4829910e7a89aa7798","Android.bp":"cc5edeec5900b26a48ce93c4c12f7136f3c2ecd59a3fefd797a0aacabe1404a7","Cargo.lock":"292f5c20184e103704e1231308b31dcf2610a0b5988fafe1a00ed9021267014c","Cargo.toml":"3d51c9b22ff16fd5823bf655f945ea43f51a11c06ac23352f3604ab657c79748","LICENSE":"d7f21f23ff9af7cb69e374346d5ef8d549ae3b6eac7143c27c4fa3556af7f1a5","METADATA":"a9bb42cf7c7c5207bba63f85520a86c5c505ad451d5803f3a8ae76a0371cec30","MODULE_LICENSE_ZLIB":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"421d14e5812f85833ccf5526f2ba893b721e93c077f6a867b08d2c2365f31bba","RELEASES.md":"c3590781106a4703cbe6560ea88388bfe914398b06e729022442f54a349baeb3","build.rs":"7c69b23e7ff51ad6ce773344b3ab2c60a19dafb10606d01f27137c7ee210593f","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/doubly_linked_list.rs":"48173f754bd384043571b44a08fa1a71b20e795f223838a5287286a611b13ba4","examples/rand_meld_heap.rs":"b23bf84b10bf5de8a66d9809dc08607c7bbc60becb69f0f580c99ba43e5bdaea","src/basic.rs":"82bbe03b66a7c9f0976b2ff8cefb34ba9007e102937861b9b60968e5bdfb8820","src/dense.rs":"a51402f8e3cce5e8deac1ea4fbb1bea2349dcc77b5c25173f5080edaf87f32cd","src/hop.rs":"1af7a3d8031bfc011e6880df71d6ca6a9b722a490359732592ea838c4ae2dede","src/lib.rs":"307bb3662808f842c2d3d2a0d58fb7090588a4223e8d1d77121f3ab4f03d8ddd","src/secondary.rs":"2b27366f63a69865b98f3198425816de1ad1c687d6757628442682e62ac3dc0f","src/sparse_secondary.rs":"f219de332f863921d42a4f7a61f0834fee72ea76ca7ab66aa2754d44f22ca9f2","src/util.rs":"a853ff0b0e7333cd18b04450416a529a5e9d7e0b12518625878d458aad72cca8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"57c08da436f0cdc3d537fc1c6366c6fe71dc7a1806cf3e4829910e7a89aa7798","Android.bp":"b582cb3ffbd8893475c3569eea41d701fd7bd3b315b4fecbdb6ec3a4ac5ec910","Cargo.lock":"292f5c20184e103704e1231308b31dcf2610a0b5988fafe1a00ed9021267014c","Cargo.toml":"3d51c9b22ff16fd5823bf655f945ea43f51a11c06ac23352f3604ab657c79748","LICENSE":"d7f21f23ff9af7cb69e374346d5ef8d549ae3b6eac7143c27c4fa3556af7f1a5","METADATA":"a9bb42cf7c7c5207bba63f85520a86c5c505ad451d5803f3a8ae76a0371cec30","MODULE_LICENSE_ZLIB":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"421d14e5812f85833ccf5526f2ba893b721e93c077f6a867b08d2c2365f31bba","RELEASES.md":"c3590781106a4703cbe6560ea88388bfe914398b06e729022442f54a349baeb3","build.rs":"7c69b23e7ff51ad6ce773344b3ab2c60a19dafb10606d01f27137c7ee210593f","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/doubly_linked_list.rs":"48173f754bd384043571b44a08fa1a71b20e795f223838a5287286a611b13ba4","examples/rand_meld_heap.rs":"b23bf84b10bf5de8a66d9809dc08607c7bbc60becb69f0f580c99ba43e5bdaea","src/basic.rs":"82bbe03b66a7c9f0976b2ff8cefb34ba9007e102937861b9b60968e5bdfb8820","src/dense.rs":"a51402f8e3cce5e8deac1ea4fbb1bea2349dcc77b5c25173f5080edaf87f32cd","src/hop.rs":"1af7a3d8031bfc011e6880df71d6ca6a9b722a490359732592ea838c4ae2dede","src/lib.rs":"307bb3662808f842c2d3d2a0d58fb7090588a4223e8d1d77121f3ab4f03d8ddd","src/secondary.rs":"2b27366f63a69865b98f3198425816de1ad1c687d6757628442682e62ac3dc0f","src/sparse_secondary.rs":"f219de332f863921d42a4f7a61f0834fee72ea76ca7ab66aa2754d44f22ca9f2","src/util.rs":"a853ff0b0e7333cd18b04450416a529a5e9d7e0b12518625878d458aad72cca8"}}
\ No newline at end of file
diff --git a/crates/slotmap/Android.bp b/crates/slotmap/Android.bp
index 0e9f998..3fba1a1 100644
--- a/crates/slotmap/Android.bp
+++ b/crates/slotmap/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/slotmap/cargo_embargo.json b/crates/slotmap/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/slotmap/cargo_embargo.json
+++ b/crates/slotmap/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/smccc/.android-checksum.json b/crates/smccc/.android-checksum.json
index c17b68d..0310264 100644
--- a/crates/smccc/.android-checksum.json
+++ b/crates/smccc/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7f8539d9139da61b35ac7025cde7dd673510097cd37800a76ec610db40caafdf","AUTHORS":"408207f5d6b6739df8b6705ee6f82c21f8c15acbdf3c59068baa24ff4d4f401f","Android.bp":"7636f7cfdabfed1dae828dc6846c4740680f5a08b2277b29bc4633ec4685edae","CHANGELOG.md":"19734854ec813313e032dda70fbb7c4cf5ad0c2c240c5fe10a60bf9ddab08dd4","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"9a8004eb0d2435676c76b5cda7f43ad1ad0b56d7c196a8464bde46264a234e31","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"7eddbb3bd8a40205122af8bce7349abcd280e388675a44490e730d28b76fd9b3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4547a9e1e4e2906f46ea86df394160a5507132d361c7b5004c95b14db20a3cc7","TEST_MAPPING":"b35fc674408d8237e66455ebee04129374143a142cc31e2462aa6849f6f6da6a","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"b3ce62e93453333b3a8015df054587d11671ba3937066a3c6fc1d6a092c832fa","rules.mk":"3ff5a8f2c7424957832d49742270b1c335c017dc837537dc717d0c5153c3df32","rust-toolchain.toml":"6fe6f1028aeea459c2de6cc156d90d4bafc835614e6df2753ecdc2a71c702833","src/arch.rs":"a717b692b583104c52467a80d3e1f8b8a1722e795696c07b3aa1ec702236e68d","src/arch/calls.rs":"9cb9b787a54f9a3289aa441c92347d7cb566ff8c4e841e9e9394d524bac7d564","src/arch/error.rs":"5f0af373fe759d155bebe88145b10725b9ed46df3e9625724750b6d5d400928c","src/error.rs":"ad72b40201e8ffbf8d4d31e95cc53bd326dc02e815f7225f361afd0ffa4f7c38","src/lib.rs":"41bf5aeee1126ebc6955ace39d56186ee7697c7e8db3922037ebff4cbcf05f61","src/psci.rs":"4d2b96c594f9df4780787970befa92c5fdcb3f9452094b5fc3c963799da83fc6","src/psci/calls.rs":"e10e41f54bf56283280f47be7f689bafb41e032c1ca3cc1ae333b026fac3c441","src/psci/error.rs":"edfd70b3c72f0286422146f05c4899d2f94620cda27c6f4710a52a1f413ca550"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7f8539d9139da61b35ac7025cde7dd673510097cd37800a76ec610db40caafdf","AUTHORS":"408207f5d6b6739df8b6705ee6f82c21f8c15acbdf3c59068baa24ff4d4f401f","Android.bp":"e678850d4b2d93883f982710fcad6142569a446966f34532b19fee23377a397c","CHANGELOG.md":"19734854ec813313e032dda70fbb7c4cf5ad0c2c240c5fe10a60bf9ddab08dd4","CONTRIBUTING.md":"fafbebe560f1f1f4f914f58bef84b23565d46c546c98b83df3d2568dd7549541","Cargo.toml":"9a8004eb0d2435676c76b5cda7f43ad1ad0b56d7c196a8464bde46264a234e31","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"7eddbb3bd8a40205122af8bce7349abcd280e388675a44490e730d28b76fd9b3","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4547a9e1e4e2906f46ea86df394160a5507132d361c7b5004c95b14db20a3cc7","TEST_MAPPING":"b35fc674408d8237e66455ebee04129374143a142cc31e2462aa6849f6f6da6a","android_config.toml":"6df5b7f0cea476b4e984128f44a1c1b9a3c84e5d4cd58c0bc4ad36bcbe518847","cargo_embargo.json":"98ad4b1443025f58c858cdc5fcafb597d6684ebad3b0496daea92afdf7bd74d8","rules.mk":"3ff5a8f2c7424957832d49742270b1c335c017dc837537dc717d0c5153c3df32","rust-toolchain.toml":"6fe6f1028aeea459c2de6cc156d90d4bafc835614e6df2753ecdc2a71c702833","src/arch.rs":"a717b692b583104c52467a80d3e1f8b8a1722e795696c07b3aa1ec702236e68d","src/arch/calls.rs":"9cb9b787a54f9a3289aa441c92347d7cb566ff8c4e841e9e9394d524bac7d564","src/arch/error.rs":"5f0af373fe759d155bebe88145b10725b9ed46df3e9625724750b6d5d400928c","src/error.rs":"ad72b40201e8ffbf8d4d31e95cc53bd326dc02e815f7225f361afd0ffa4f7c38","src/lib.rs":"41bf5aeee1126ebc6955ace39d56186ee7697c7e8db3922037ebff4cbcf05f61","src/psci.rs":"4d2b96c594f9df4780787970befa92c5fdcb3f9452094b5fc3c963799da83fc6","src/psci/calls.rs":"e10e41f54bf56283280f47be7f689bafb41e032c1ca3cc1ae333b026fac3c441","src/psci/error.rs":"edfd70b3c72f0286422146f05c4899d2f94620cda27c6f4710a52a1f413ca550"}}
\ No newline at end of file
diff --git a/crates/smccc/Android.bp b/crates/smccc/Android.bp
index fc8c42c..8f3e4ae 100644
--- a/crates/smccc/Android.bp
+++ b/crates/smccc/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/smccc/cargo_embargo.json b/crates/smccc/cargo_embargo.json
index 77c1e14..a3f020a 100644
--- a/crates/smccc/cargo_embargo.json
+++ b/crates/smccc/cargo_embargo.json
@@ -8,5 +8,6 @@
},
"run_cargo": false,
"tests": true,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/smol_str/.android-checksum.json b/crates/smol_str/.android-checksum.json
new file mode 100644
index 0000000..787ddcc
--- /dev/null
+++ b/crates/smol_str/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"1e815e2c09c3c346fd00c4cbb017f414e8cde285dedab5d92bb253ca70e42600","Android.bp":"71be46de6eec3292734be4dc34785ecf56757a08f4bb715c5565536d2cc8d3db","Cargo.toml":"e17a4c4a45539b6ca808d07445c913e73d98fc3acab88f4fe49ae33914c977dd","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"2b861352a855d9e405f884968668c9a6f0078fa179935b693f93e87567ea2dad","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1bc7b5dcd30e1444eefc7a7086c1bbf480e735dd7dcecd45f60787df22e64819","bors.toml":"09cdb68a68b3d5bc8913484685bf1aa3a75e6c1ab3f32895849f5ba964bc20c2","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"143ae5a021a25cb6c21b6ae4565d413451193caecfe60785131897569f7d5dc8","tests/test.rs":"82c2b75f6b75d198b6daa767f0da02a1bb9d1111b96b38810ddd3adbee1a568b","tests/tidy.rs":"bac56122fd432686e1777c975ca42b4489feff8772933d45b52f03feea15f102"}}
\ No newline at end of file
diff --git a/crates/smol_str/.cargo-checksum.json b/crates/smol_str/.cargo-checksum.json
new file mode 100644
index 0000000..e25edb5
--- /dev/null
+++ b/crates/smol_str/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"ddbc0a2fbeed9eb84ac10f9dd2c7a4118dbc123e0d806df831de517588be1557","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"27bf5ba8c9132c77a1287466d3c92d89b9789081da32396dd33cfdee5c3ed806","bors.toml":"ebd69f714a49dceb8fd10ebadfea6e2767be4732fdef49eddf6239151b4bc78c","src/lib.rs":"82e51ecc01f7fd5cb14c308c00fec23d5b993ab22f684ba9313792f6c2b49dbf","tests/test.rs":"a028134051b34923866c64a4b897e748cc0eeb583f378f074f37b2465062801a","tests/tidy.rs":"b86cc626ca3315d54ae3e93c7be6fd6e7065d399c3c6b786bdfe30789f6b5cf7"},"package":"dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"}
\ No newline at end of file
diff --git a/crates/smol_str/Android.bp b/crates/smol_str/Android.bp
new file mode 100644
index 0000000..8f00f7f
--- /dev/null
+++ b/crates/smol_str/Android.bp
@@ -0,0 +1,35 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_smol_str_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_smol_str_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libsmol_str",
+ host_supported: true,
+ crate_name: "smol_str",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.2.2",
+ crate_root: "src/lib.rs",
+ edition: "2018",
+ features: [
+ "default",
+ "std",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/crates/smol_str/Cargo.toml b/crates/smol_str/Cargo.toml
new file mode 100644
index 0000000..380ca47
--- /dev/null
+++ b/crates/smol_str/Cargo.toml
@@ -0,0 +1,43 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "smol_str"
+version = "0.2.2"
+authors = ["Aleksey Kladov <[email protected]>"]
+description = "small-string optimized string type with O(1) clone"
+readme = "README.md"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/rust-analyzer/smol_str"
+
+[dependencies.arbitrary]
+version = "1.1.0"
+optional = true
+
+[dependencies.serde]
+version = "1.0.136"
+optional = true
+default_features = false
+
+[dev-dependencies.proptest]
+version = "1.0.0"
+
+[dev-dependencies.serde]
+version = "1.0.136"
+features = ["derive"]
+
+[dev-dependencies.serde_json]
+version = "1.0.79"
+
+[features]
+default = ["std"]
+std = ["serde?/std"]
diff --git a/crates/smol_str/LICENSE b/crates/smol_str/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/crates/smol_str/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/crates/smol_str/LICENSE-APACHE b/crates/smol_str/LICENSE-APACHE
new file mode 100644
index 0000000..16fe87b
--- /dev/null
+++ b/crates/smol_str/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/crates/smol_str/METADATA b/crates/smol_str/METADATA
new file mode 100644
index 0000000..b3a51e9
--- /dev/null
+++ b/crates/smol_str/METADATA
@@ -0,0 +1,17 @@
+name: "smol_str"
+description: "small-string optimized string type with O(1) clone"
+third_party {
+ version: "0.2.2"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 3
+ day: 19
+ }
+ homepage: "https://crates.io/crates/smol_str"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/smol_str/smol_str-0.2.2.crate"
+ version: "0.2.2"
+ }
+}
diff --git a/crates/smol_str/MODULE_LICENSE_APACHE2 b/crates/smol_str/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crates/smol_str/MODULE_LICENSE_APACHE2
diff --git a/crates/smol_str/README.md b/crates/smol_str/README.md
new file mode 100644
index 0000000..ce16759
--- /dev/null
+++ b/crates/smol_str/README.md
@@ -0,0 +1,29 @@
+# smol_str
+
+[](https://github.com/rust-analyzer/smol_str/actions?query=branch%3Amaster+workflow%3ACI)
+[](https://crates.io/crates/smol_str)
+[](https://docs.rs/smol_str/)
+
+
+A `SmolStr` is a string type that has the following properties:
+
+* `size_of::<SmolStr>() == 24` (therefore `== size_of::<String>()` on 64 bit platforms)
+* `Clone` is `O(1)`
+* Strings are stack-allocated if they are:
+ * Up to 23 bytes long
+ * Longer than 23 bytes, but substrings of `WS` (see `src/lib.rs`). Such strings consist
+ solely of consecutive newlines, followed by consecutive spaces
+* If a string does not satisfy the aforementioned conditions, it is heap-allocated
+* Additionally, a `SmolStr` can be explicitly created from a `&'static str` without allocation
+
+Unlike `String`, however, `SmolStr` is immutable. The primary use case for
+`SmolStr` is a good enough default storage for tokens of typical programming
+languages. Strings consisting of a series of newlines, followed by a series of
+whitespace are a typical pattern in computer programs because of indentation.
+Note that a specialized interner might be a better solution for some use cases.
+
+## MSRV Policy
+
+Minimal Supported Rust Version: latest stable.
+
+Bumping MSRV is not considered a semver-breaking change.
diff --git a/crates/smol_str/bors.toml b/crates/smol_str/bors.toml
new file mode 100644
index 0000000..b92b99a
--- /dev/null
+++ b/crates/smol_str/bors.toml
@@ -0,0 +1,2 @@
+status = [ "Rust" ]
+delete_merged_branches = true
diff --git a/crates/smol_str/cargo_embargo.json b/crates/smol_str/cargo_embargo.json
new file mode 100644
index 0000000..b6c35c7
--- /dev/null
+++ b/crates/smol_str/cargo_embargo.json
@@ -0,0 +1,4 @@
+{
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/smol_str/src/lib.rs b/crates/smol_str/src/lib.rs
new file mode 100644
index 0000000..78c4e9a
--- /dev/null
+++ b/crates/smol_str/src/lib.rs
@@ -0,0 +1,867 @@
+#![no_std]
+extern crate alloc;
+
+use alloc::{borrow::Cow, boxed::Box, string::String, sync::Arc};
+use core::{
+ borrow::Borrow,
+ cmp::{self, Ordering},
+ convert::Infallible,
+ fmt, hash, iter,
+ mem::transmute,
+ ops::Deref,
+ str::FromStr,
+};
+
+/// A `SmolStr` is a string type that has the following properties:
+///
+/// * `size_of::<SmolStr>() == 24` (therefor `== size_of::<String>()` on 64 bit platforms)
+/// * `Clone` is `O(1)`
+/// * Strings are stack-allocated if they are:
+/// * Up to 23 bytes long
+/// * Longer than 23 bytes, but substrings of `WS` (see below). Such strings consist
+/// solely of consecutive newlines, followed by consecutive spaces
+/// * If a string does not satisfy the aforementioned conditions, it is heap-allocated
+/// * Additionally, a `SmolStr` can be explicitely created from a `&'static str` without allocation
+///
+/// Unlike `String`, however, `SmolStr` is immutable. The primary use case for
+/// `SmolStr` is a good enough default storage for tokens of typical programming
+/// languages. Strings consisting of a series of newlines, followed by a series of
+/// whitespace are a typical pattern in computer programs because of indentation.
+/// Note that a specialized interner might be a better solution for some use cases.
+///
+/// `WS`: A string of 32 newlines followed by 128 spaces.
+pub struct SmolStr(Repr);
+
+impl Clone for SmolStr {
+ #[inline]
+ fn clone(&self) -> Self {
+ if !self.is_heap_allocated() {
+ return unsafe { core::ptr::read(self as *const SmolStr) };
+ }
+ Self(self.0.clone())
+ }
+}
+
+impl SmolStr {
+ #[deprecated = "Use `new_inline` instead"]
+ pub const fn new_inline_from_ascii(len: usize, bytes: &[u8]) -> SmolStr {
+ assert!(len <= INLINE_CAP);
+
+ const ZEROS: &[u8] = &[0; INLINE_CAP];
+
+ let mut buf = [0; INLINE_CAP];
+ macro_rules! s {
+ ($($idx:literal),*) => ( $(s!(set $idx);)* );
+ (set $idx:literal) => ({
+ let src: &[u8] = [ZEROS, bytes][($idx < len) as usize];
+ let byte = src[$idx];
+ let _is_ascii = [(); 128][byte as usize];
+ buf[$idx] = byte
+ });
+ }
+ s!(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22);
+ SmolStr(Repr::Inline {
+ // SAFETY: We know that `len` is less than or equal to the maximum value of `InlineSize`
+ // as we asserted it.
+ len: unsafe { InlineSize::transmute_from_u8(len as u8) },
+ buf,
+ })
+ }
+
+ /// Constructs inline variant of `SmolStr`.
+ ///
+ /// Panics if `text.len() > 23`.
+ #[inline]
+ pub const fn new_inline(text: &str) -> SmolStr {
+ assert!(text.len() <= INLINE_CAP); // avoids checks in loop
+
+ let mut buf = [0; INLINE_CAP];
+ let mut i = 0;
+ while i < text.len() {
+ buf[i] = text.as_bytes()[i];
+ i += 1
+ }
+ SmolStr(Repr::Inline {
+ // SAFETY: We know that `len` is less than or equal to the maximum value of `InlineSize`
+ // as we asserted it.
+ len: unsafe { InlineSize::transmute_from_u8(text.len() as u8) },
+ buf,
+ })
+ }
+
+ /// Constructs a `SmolStr` from a statically allocated string.
+ ///
+ /// This never allocates.
+ #[inline(always)]
+ pub const fn new_static(text: &'static str) -> SmolStr {
+ // NOTE: this never uses the inline storage; if a canonical
+ // representation is needed, we could check for `len() < INLINE_CAP`
+ // and call `new_inline`, but this would mean an extra branch.
+ SmolStr(Repr::Static(text))
+ }
+
+ pub fn new<T>(text: T) -> SmolStr
+ where
+ T: AsRef<str>,
+ {
+ SmolStr(Repr::new(text))
+ }
+
+ #[inline(always)]
+ pub fn as_str(&self) -> &str {
+ self.0.as_str()
+ }
+
+ #[allow(clippy::inherent_to_string_shadow_display)]
+ #[inline(always)]
+ pub fn to_string(&self) -> String {
+ use alloc::borrow::ToOwned;
+
+ self.as_str().to_owned()
+ }
+
+ #[inline(always)]
+ pub fn len(&self) -> usize {
+ self.0.len()
+ }
+
+ #[inline(always)]
+ pub fn is_empty(&self) -> bool {
+ self.0.is_empty()
+ }
+
+ #[inline(always)]
+ pub const fn is_heap_allocated(&self) -> bool {
+ matches!(self.0, Repr::Heap(..))
+ }
+
+ fn from_char_iter<I: iter::Iterator<Item = char>>(mut iter: I) -> SmolStr {
+ let (min_size, _) = iter.size_hint();
+ if min_size > INLINE_CAP {
+ let heap: String = iter.collect();
+ return SmolStr(Repr::Heap(heap.into_boxed_str().into()));
+ }
+ let mut len = 0;
+ let mut buf = [0u8; INLINE_CAP];
+ while let Some(ch) = iter.next() {
+ let size = ch.len_utf8();
+ if size + len > INLINE_CAP {
+ let (min_remaining, _) = iter.size_hint();
+ let mut heap = String::with_capacity(size + len + min_remaining);
+ heap.push_str(core::str::from_utf8(&buf[..len]).unwrap());
+ heap.push(ch);
+ heap.extend(iter);
+ return SmolStr(Repr::Heap(heap.into_boxed_str().into()));
+ }
+ ch.encode_utf8(&mut buf[len..]);
+ len += size;
+ }
+ SmolStr(Repr::Inline {
+ // SAFETY: We know that `len` is less than or equal to the maximum value of `InlineSize`
+ // as we otherwise return early.
+ len: unsafe { InlineSize::transmute_from_u8(len as u8) },
+ buf,
+ })
+ }
+}
+
+impl Default for SmolStr {
+ #[inline(always)]
+ fn default() -> SmolStr {
+ SmolStr(Repr::Inline {
+ len: InlineSize::_V0,
+ buf: [0; INLINE_CAP],
+ })
+ }
+}
+
+impl Deref for SmolStr {
+ type Target = str;
+
+ #[inline(always)]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl PartialEq<SmolStr> for SmolStr {
+ fn eq(&self, other: &SmolStr) -> bool {
+ self.0.ptr_eq(&other.0) || self.as_str() == other.as_str()
+ }
+}
+
+impl Eq for SmolStr {}
+
+impl PartialEq<str> for SmolStr {
+ fn eq(&self, other: &str) -> bool {
+ self.as_str() == other
+ }
+}
+
+impl PartialEq<SmolStr> for str {
+ fn eq(&self, other: &SmolStr) -> bool {
+ other == self
+ }
+}
+
+impl<'a> PartialEq<&'a str> for SmolStr {
+ fn eq(&self, other: &&'a str) -> bool {
+ self == *other
+ }
+}
+
+impl<'a> PartialEq<SmolStr> for &'a str {
+ fn eq(&self, other: &SmolStr) -> bool {
+ *self == other
+ }
+}
+
+impl PartialEq<String> for SmolStr {
+ fn eq(&self, other: &String) -> bool {
+ self.as_str() == other
+ }
+}
+
+impl PartialEq<SmolStr> for String {
+ fn eq(&self, other: &SmolStr) -> bool {
+ other == self
+ }
+}
+
+impl<'a> PartialEq<&'a String> for SmolStr {
+ fn eq(&self, other: &&'a String) -> bool {
+ self == *other
+ }
+}
+
+impl<'a> PartialEq<SmolStr> for &'a String {
+ fn eq(&self, other: &SmolStr) -> bool {
+ *self == other
+ }
+}
+
+impl Ord for SmolStr {
+ fn cmp(&self, other: &SmolStr) -> Ordering {
+ self.as_str().cmp(other.as_str())
+ }
+}
+
+impl PartialOrd for SmolStr {
+ fn partial_cmp(&self, other: &SmolStr) -> Option<Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
+impl hash::Hash for SmolStr {
+ fn hash<H: hash::Hasher>(&self, hasher: &mut H) {
+ self.as_str().hash(hasher);
+ }
+}
+
+impl fmt::Debug for SmolStr {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ fmt::Debug::fmt(self.as_str(), f)
+ }
+}
+
+impl fmt::Display for SmolStr {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), f)
+ }
+}
+
+impl iter::FromIterator<char> for SmolStr {
+ fn from_iter<I: iter::IntoIterator<Item = char>>(iter: I) -> SmolStr {
+ let iter = iter.into_iter();
+ Self::from_char_iter(iter)
+ }
+}
+
+fn build_from_str_iter<T>(mut iter: impl Iterator<Item = T>) -> SmolStr
+where
+ T: AsRef<str>,
+ String: iter::Extend<T>,
+{
+ let mut len = 0;
+ let mut buf = [0u8; INLINE_CAP];
+ while let Some(slice) = iter.next() {
+ let slice = slice.as_ref();
+ let size = slice.len();
+ if size + len > INLINE_CAP {
+ let mut heap = String::with_capacity(size + len);
+ heap.push_str(core::str::from_utf8(&buf[..len]).unwrap());
+ heap.push_str(slice);
+ heap.extend(iter);
+ return SmolStr(Repr::Heap(heap.into_boxed_str().into()));
+ }
+ buf[len..][..size].copy_from_slice(slice.as_bytes());
+ len += size;
+ }
+ SmolStr(Repr::Inline {
+ // SAFETY: We know that `len` is less than or equal to the maximum value of `InlineSize`
+ // as we otherwise return early.
+ len: unsafe { InlineSize::transmute_from_u8(len as u8) },
+ buf,
+ })
+}
+
+impl iter::FromIterator<String> for SmolStr {
+ fn from_iter<I: iter::IntoIterator<Item = String>>(iter: I) -> SmolStr {
+ build_from_str_iter(iter.into_iter())
+ }
+}
+
+impl<'a> iter::FromIterator<&'a String> for SmolStr {
+ fn from_iter<I: iter::IntoIterator<Item = &'a String>>(iter: I) -> SmolStr {
+ SmolStr::from_iter(iter.into_iter().map(|x| x.as_str()))
+ }
+}
+
+impl<'a> iter::FromIterator<&'a str> for SmolStr {
+ fn from_iter<I: iter::IntoIterator<Item = &'a str>>(iter: I) -> SmolStr {
+ build_from_str_iter(iter.into_iter())
+ }
+}
+
+impl AsRef<str> for SmolStr {
+ #[inline(always)]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl From<&str> for SmolStr {
+ #[inline]
+ fn from(s: &str) -> SmolStr {
+ SmolStr::new(s)
+ }
+}
+
+impl From<&mut str> for SmolStr {
+ #[inline]
+ fn from(s: &mut str) -> SmolStr {
+ SmolStr::new(s)
+ }
+}
+
+impl From<&String> for SmolStr {
+ #[inline]
+ fn from(s: &String) -> SmolStr {
+ SmolStr::new(s)
+ }
+}
+
+impl From<String> for SmolStr {
+ #[inline(always)]
+ fn from(text: String) -> Self {
+ Self::new(text)
+ }
+}
+
+impl From<Box<str>> for SmolStr {
+ #[inline]
+ fn from(s: Box<str>) -> SmolStr {
+ SmolStr::new(s)
+ }
+}
+
+impl From<Arc<str>> for SmolStr {
+ #[inline]
+ fn from(s: Arc<str>) -> SmolStr {
+ let repr = Repr::new_on_stack(s.as_ref()).unwrap_or_else(|| Repr::Heap(s));
+ Self(repr)
+ }
+}
+
+impl<'a> From<Cow<'a, str>> for SmolStr {
+ #[inline]
+ fn from(s: Cow<'a, str>) -> SmolStr {
+ SmolStr::new(s)
+ }
+}
+
+impl From<SmolStr> for Arc<str> {
+ #[inline(always)]
+ fn from(text: SmolStr) -> Self {
+ match text.0 {
+ Repr::Heap(data) => data,
+ _ => text.as_str().into(),
+ }
+ }
+}
+
+impl From<SmolStr> for String {
+ #[inline(always)]
+ fn from(text: SmolStr) -> Self {
+ text.as_str().into()
+ }
+}
+
+impl Borrow<str> for SmolStr {
+ #[inline(always)]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl FromStr for SmolStr {
+ type Err = Infallible;
+
+ #[inline]
+ fn from_str(s: &str) -> Result<SmolStr, Self::Err> {
+ Ok(SmolStr::from(s))
+ }
+}
+
+#[cfg(feature = "arbitrary")]
+impl<'a> arbitrary::Arbitrary<'a> for SmolStr {
+ fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> Result<Self, arbitrary::Error> {
+ let s = <&str>::arbitrary(u)?;
+ Ok(SmolStr::new(s))
+ }
+}
+
+const INLINE_CAP: usize = InlineSize::_V23 as usize;
+const N_NEWLINES: usize = 32;
+const N_SPACES: usize = 128;
+const WS: &str =
+ "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ";
+const _: () = {
+ assert!(WS.len() == N_NEWLINES + N_SPACES);
+ assert!(WS.as_bytes()[N_NEWLINES - 1] == b'\n');
+ assert!(WS.as_bytes()[N_NEWLINES] == b' ');
+};
+
+#[derive(Clone, Copy, Debug, PartialEq)]
+#[repr(u8)]
+enum InlineSize {
+ _V0 = 0,
+ _V1,
+ _V2,
+ _V3,
+ _V4,
+ _V5,
+ _V6,
+ _V7,
+ _V8,
+ _V9,
+ _V10,
+ _V11,
+ _V12,
+ _V13,
+ _V14,
+ _V15,
+ _V16,
+ _V17,
+ _V18,
+ _V19,
+ _V20,
+ _V21,
+ _V22,
+ _V23,
+}
+
+impl InlineSize {
+ #[inline(always)]
+ const unsafe fn transmute_from_u8(value: u8) -> Self {
+ debug_assert!(value <= InlineSize::_V23 as u8);
+ unsafe { transmute::<u8, Self>(value) }
+ }
+}
+
+#[derive(Clone, Debug)]
+enum Repr {
+ Inline {
+ len: InlineSize,
+ buf: [u8; INLINE_CAP],
+ },
+ Static(&'static str),
+ Heap(Arc<str>),
+}
+
+impl Repr {
+ /// This function tries to create a new Repr::Inline or Repr::Static
+ /// If it isn't possible, this function returns None
+ fn new_on_stack<T>(text: T) -> Option<Self>
+ where
+ T: AsRef<str>,
+ {
+ let text = text.as_ref();
+
+ let len = text.len();
+ if len <= INLINE_CAP {
+ let mut buf = [0; INLINE_CAP];
+ buf[..len].copy_from_slice(text.as_bytes());
+ return Some(Repr::Inline {
+ // SAFETY: We know that `len` is less than or equal to the maximum value of `InlineSize`
+ len: unsafe { InlineSize::transmute_from_u8(len as u8) },
+ buf,
+ });
+ }
+
+ if len <= N_NEWLINES + N_SPACES {
+ let bytes = text.as_bytes();
+ let possible_newline_count = cmp::min(len, N_NEWLINES);
+ let newlines = bytes[..possible_newline_count]
+ .iter()
+ .take_while(|&&b| b == b'\n')
+ .count();
+ let possible_space_count = len - newlines;
+ if possible_space_count <= N_SPACES && bytes[newlines..].iter().all(|&b| b == b' ') {
+ let spaces = possible_space_count;
+ let substring = &WS[N_NEWLINES - newlines..N_NEWLINES + spaces];
+ return Some(Repr::Static(substring));
+ }
+ }
+ None
+ }
+
+ fn new<T>(text: T) -> Self
+ where
+ T: AsRef<str>,
+ {
+ Self::new_on_stack(text.as_ref()).unwrap_or_else(|| Repr::Heap(text.as_ref().into()))
+ }
+
+ #[inline(always)]
+ fn len(&self) -> usize {
+ match self {
+ Repr::Heap(data) => data.len(),
+ Repr::Static(data) => data.len(),
+ Repr::Inline { len, .. } => *len as usize,
+ }
+ }
+
+ #[inline(always)]
+ fn is_empty(&self) -> bool {
+ match self {
+ Repr::Heap(data) => data.is_empty(),
+ Repr::Static(data) => data.is_empty(),
+ Repr::Inline { len, .. } => *len as u8 == 0,
+ }
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ match self {
+ Repr::Heap(data) => data,
+ Repr::Static(data) => data,
+ Repr::Inline { len, buf } => {
+ let len = *len as usize;
+ let buf = &buf[..len];
+ // SAFETY: buf is guaranteed to be valid utf8 for ..len bytes
+ unsafe { ::core::str::from_utf8_unchecked(buf) }
+ }
+ }
+ }
+
+ fn ptr_eq(&self, other: &Self) -> bool {
+ match (self, other) {
+ (Self::Heap(l0), Self::Heap(r0)) => Arc::ptr_eq(l0, r0),
+ (Self::Static(l0), Self::Static(r0)) => core::ptr::eq(l0, r0),
+ (
+ Self::Inline {
+ len: l_len,
+ buf: l_buf,
+ },
+ Self::Inline {
+ len: r_len,
+ buf: r_buf,
+ },
+ ) => l_len == r_len && l_buf == r_buf,
+ _ => false,
+ }
+ }
+}
+
+/// Convert value to [`SmolStr`] using [`fmt::Display`], potentially without allocating.
+///
+/// Almost identical to [`ToString`], but converts to `SmolStr` instead.
+pub trait ToSmolStr {
+ fn to_smolstr(&self) -> SmolStr;
+}
+
+/// [`str`] methods producing [`SmolStr`]s.
+pub trait StrExt: private::Sealed {
+ /// Returns the lowercase equivalent of this string slice as a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::to_lowercase`].
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn to_lowercase_smolstr(&self) -> SmolStr;
+
+ /// Returns the uppercase equivalent of this string slice as a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::to_uppercase`].
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn to_uppercase_smolstr(&self) -> SmolStr;
+
+ /// Returns the ASCII lowercase equivalent of this string slice as a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::to_ascii_lowercase`].
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn to_ascii_lowercase_smolstr(&self) -> SmolStr;
+
+ /// Returns the ASCII uppercase equivalent of this string slice as a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::to_ascii_uppercase`].
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn to_ascii_uppercase_smolstr(&self) -> SmolStr;
+
+ /// Replaces all matches of a &str with another &str returning a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::replace`].
+ // TODO: Use `Pattern` when stable.
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn replace_smolstr(&self, from: &str, to: &str) -> SmolStr;
+
+ /// Replaces first N matches of a &str with another &str returning a new [`SmolStr`],
+ /// potentially without allocating.
+ ///
+ /// See [`str::replacen`].
+ // TODO: Use `Pattern` when stable.
+ #[must_use = "this returns a new SmolStr without modifying the original"]
+ fn replacen_smolstr(&self, from: &str, to: &str, count: usize) -> SmolStr;
+}
+
+impl StrExt for str {
+ #[inline]
+ fn to_lowercase_smolstr(&self) -> SmolStr {
+ SmolStr::from_char_iter(self.chars().flat_map(|c| c.to_lowercase()))
+ }
+
+ #[inline]
+ fn to_uppercase_smolstr(&self) -> SmolStr {
+ SmolStr::from_char_iter(self.chars().flat_map(|c| c.to_uppercase()))
+ }
+
+ #[inline]
+ fn to_ascii_lowercase_smolstr(&self) -> SmolStr {
+ SmolStr::from_char_iter(self.chars().map(|c| c.to_ascii_lowercase()))
+ }
+
+ #[inline]
+ fn to_ascii_uppercase_smolstr(&self) -> SmolStr {
+ SmolStr::from_char_iter(self.chars().map(|c| c.to_ascii_uppercase()))
+ }
+
+ #[inline]
+ fn replace_smolstr(&self, from: &str, to: &str) -> SmolStr {
+ self.replacen_smolstr(from, to, usize::MAX)
+ }
+
+ #[inline]
+ fn replacen_smolstr(&self, from: &str, to: &str, count: usize) -> SmolStr {
+ let mut result = Writer::new();
+ let mut last_end = 0;
+ for (start, part) in self.match_indices(from).take(count) {
+ // SAFETY: `start` is guaranteed to be within the bounds of `self` as per
+ // `match_indices` and last_end is always less than or equal to `start`
+ result.push_str(unsafe { self.get_unchecked(last_end..start) });
+ result.push_str(to);
+ last_end = start + part.len();
+ }
+ // SAFETY: `self.len()` is guaranteed to be within the bounds of `self` and last_end is
+ // always less than or equal to `self.len()`
+ result.push_str(unsafe { self.get_unchecked(last_end..self.len()) });
+ SmolStr::from(result)
+ }
+}
+
+mod private {
+ /// No downstream impls allowed.
+ pub trait Sealed {}
+ impl Sealed for str {}
+}
+
+/// Formats arguments to a [`SmolStr`], potentially without allocating.
+///
+/// See [`alloc::format!`] or [`format_args!`] for syntax documentation.
+#[macro_export]
+macro_rules! format_smolstr {
+ ($($tt:tt)*) => {{
+ use ::core::fmt::Write;
+ let mut w = $crate::Writer::new();
+ w.write_fmt(format_args!($($tt)*)).expect("a formatting trait implementation returned an error");
+ $crate::SmolStr::from(w)
+ }};
+}
+
+#[doc(hidden)]
+pub struct Writer {
+ inline: [u8; INLINE_CAP],
+ heap: String,
+ len: usize,
+}
+
+impl Writer {
+ #[must_use]
+ pub const fn new() -> Self {
+ Writer {
+ inline: [0; INLINE_CAP],
+ heap: String::new(),
+ len: 0,
+ }
+ }
+
+ fn push_str(&mut self, s: &str) {
+ // if currently on the stack
+ if self.len <= INLINE_CAP {
+ let old_len = self.len;
+ self.len += s.len();
+
+ // if the new length will fit on the stack (even if it fills it entirely)
+ if self.len <= INLINE_CAP {
+ self.inline[old_len..self.len].copy_from_slice(s.as_bytes());
+ return; // skip the heap push below
+ }
+
+ self.heap.reserve(self.len);
+
+ // copy existing inline bytes over to the heap
+ // SAFETY: inline data is guaranteed to be valid utf8 for `old_len` bytes
+ unsafe {
+ self.heap
+ .as_mut_vec()
+ .extend_from_slice(&self.inline[..old_len]);
+ }
+ }
+
+ self.heap.push_str(s);
+ }
+}
+
+impl fmt::Write for Writer {
+ #[inline]
+ fn write_str(&mut self, s: &str) -> fmt::Result {
+ self.push_str(s);
+ Ok(())
+ }
+}
+
+impl From<Writer> for SmolStr {
+ fn from(value: Writer) -> Self {
+ SmolStr(if value.len <= INLINE_CAP {
+ Repr::Inline {
+ // SAFETY: We know that `value.len` is less than or equal to the maximum value of `InlineSize`
+ len: unsafe { InlineSize::transmute_from_u8(value.len as u8) },
+ buf: value.inline,
+ }
+ } else {
+ Repr::new(value.heap)
+ })
+ }
+}
+
+impl<T> ToSmolStr for T
+where
+ T: fmt::Display + ?Sized,
+{
+ fn to_smolstr(&self) -> SmolStr {
+ format_smolstr!("{}", self)
+ }
+}
+
+#[cfg(feature = "serde")]
+mod serde {
+ use alloc::{string::String, vec::Vec};
+ use core::fmt;
+
+ use serde::de::{Deserializer, Error, Unexpected, Visitor};
+
+ use crate::SmolStr;
+
+ // https://github.com/serde-rs/serde/blob/629802f2abfd1a54a6072992888fea7ca5bc209f/serde/src/private/de.rs#L56-L125
+ fn smol_str<'de: 'a, 'a, D>(deserializer: D) -> Result<SmolStr, D::Error>
+ where
+ D: Deserializer<'de>,
+ {
+ struct SmolStrVisitor;
+
+ impl<'a> Visitor<'a> for SmolStrVisitor {
+ type Value = SmolStr;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ formatter.write_str("a string")
+ }
+
+ fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(SmolStr::from(v))
+ }
+
+ fn visit_borrowed_str<E>(self, v: &'a str) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(SmolStr::from(v))
+ }
+
+ fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ Ok(SmolStr::from(v))
+ }
+
+ fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ match core::str::from_utf8(v) {
+ Ok(s) => Ok(SmolStr::from(s)),
+ Err(_) => Err(Error::invalid_value(Unexpected::Bytes(v), &self)),
+ }
+ }
+
+ fn visit_borrowed_bytes<E>(self, v: &'a [u8]) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ match core::str::from_utf8(v) {
+ Ok(s) => Ok(SmolStr::from(s)),
+ Err(_) => Err(Error::invalid_value(Unexpected::Bytes(v), &self)),
+ }
+ }
+
+ fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ match String::from_utf8(v) {
+ Ok(s) => Ok(SmolStr::from(s)),
+ Err(e) => Err(Error::invalid_value(
+ Unexpected::Bytes(&e.into_bytes()),
+ &self,
+ )),
+ }
+ }
+ }
+
+ deserializer.deserialize_str(SmolStrVisitor)
+ }
+
+ impl serde::Serialize for SmolStr {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ self.as_str().serialize(serializer)
+ }
+ }
+
+ impl<'de> serde::Deserialize<'de> for SmolStr {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ smol_str(deserializer)
+ }
+ }
+}
diff --git a/crates/smol_str/tests/test.rs b/crates/smol_str/tests/test.rs
new file mode 100644
index 0000000..2e2914d
--- /dev/null
+++ b/crates/smol_str/tests/test.rs
@@ -0,0 +1,332 @@
+use std::sync::Arc;
+
+#[cfg(not(miri))]
+use proptest::{prop_assert, prop_assert_eq, proptest};
+
+use smol_str::SmolStr;
+
+#[test]
+#[cfg(target_pointer_width = "64")]
+fn smol_str_is_smol() {
+ assert_eq!(
+ ::std::mem::size_of::<SmolStr>(),
+ ::std::mem::size_of::<String>(),
+ );
+}
+
+#[test]
+fn assert_traits() {
+ fn f<T: Send + Sync + ::std::fmt::Debug + Clone>() {}
+ f::<SmolStr>();
+}
+
+#[test]
+fn conversions() {
+ let s: SmolStr = "Hello, World!".into();
+ let s: String = s.into();
+ assert_eq!(s, "Hello, World!");
+
+ let s: SmolStr = Arc::<str>::from("Hello, World!").into();
+ let s: Arc<str> = s.into();
+ assert_eq!(s.as_ref(), "Hello, World!");
+}
+
+#[test]
+fn const_fn_ctor() {
+ const EMPTY: SmolStr = SmolStr::new_inline("");
+ const A: SmolStr = SmolStr::new_inline("A");
+ const HELLO: SmolStr = SmolStr::new_inline("HELLO");
+ const LONG: SmolStr = SmolStr::new_inline("ABCDEFGHIZKLMNOPQRSTUVW");
+
+ assert_eq!(EMPTY, SmolStr::from(""));
+ assert_eq!(A, SmolStr::from("A"));
+ assert_eq!(HELLO, SmolStr::from("HELLO"));
+ assert_eq!(LONG, SmolStr::from("ABCDEFGHIZKLMNOPQRSTUVW"));
+}
+
+#[allow(deprecated)]
+#[test]
+fn old_const_fn_ctor() {
+ const EMPTY: SmolStr = SmolStr::new_inline_from_ascii(0, b"");
+ const A: SmolStr = SmolStr::new_inline_from_ascii(1, b"A");
+ const HELLO: SmolStr = SmolStr::new_inline_from_ascii(5, b"HELLO");
+ const LONG: SmolStr = SmolStr::new_inline_from_ascii(23, b"ABCDEFGHIZKLMNOPQRSTUVW");
+
+ assert_eq!(EMPTY, SmolStr::from(""));
+ assert_eq!(A, SmolStr::from("A"));
+ assert_eq!(HELLO, SmolStr::from("HELLO"));
+ assert_eq!(LONG, SmolStr::from("ABCDEFGHIZKLMNOPQRSTUVW"));
+}
+
+#[cfg(not(miri))]
+fn check_props(std_str: &str, smol: SmolStr) -> Result<(), proptest::test_runner::TestCaseError> {
+ prop_assert_eq!(smol.as_str(), std_str);
+ prop_assert_eq!(smol.len(), std_str.len());
+ prop_assert_eq!(smol.is_empty(), std_str.is_empty());
+ if smol.len() <= 23 {
+ prop_assert!(!smol.is_heap_allocated());
+ }
+ Ok(())
+}
+
+#[cfg(not(miri))]
+proptest! {
+ #[test]
+ fn roundtrip(s: String) {
+ check_props(s.as_str(), SmolStr::new(s.clone()))?;
+ }
+
+ #[test]
+ fn roundtrip_spaces(s in r"( )*") {
+ check_props(s.as_str(), SmolStr::new(s.clone()))?;
+ }
+
+ #[test]
+ fn roundtrip_newlines(s in r"\n*") {
+ check_props(s.as_str(), SmolStr::new(s.clone()))?;
+ }
+
+ #[test]
+ fn roundtrip_ws(s in r"( |\n)*") {
+ check_props(s.as_str(), SmolStr::new(s.clone()))?;
+ }
+
+ #[test]
+ fn from_string_iter(slices in proptest::collection::vec(".*", 1..100)) {
+ let string: String = slices.iter().map(|x| x.as_str()).collect();
+ let smol: SmolStr = slices.into_iter().collect();
+ check_props(string.as_str(), smol)?;
+ }
+
+ #[test]
+ fn from_str_iter(slices in proptest::collection::vec(".*", 1..100)) {
+ let string: String = slices.iter().map(|x| x.as_str()).collect();
+ let smol: SmolStr = slices.iter().collect();
+ check_props(string.as_str(), smol)?;
+ }
+}
+
+#[cfg(feature = "serde")]
+mod serde_tests {
+ use super::*;
+ use serde::{Deserialize, Serialize};
+ use std::collections::HashMap;
+
+ #[derive(Serialize, Deserialize)]
+ struct SmolStrStruct {
+ pub(crate) s: SmolStr,
+ pub(crate) vec: Vec<SmolStr>,
+ pub(crate) map: HashMap<SmolStr, SmolStr>,
+ }
+
+ #[test]
+ fn test_serde() {
+ let s = SmolStr::new("Hello, World");
+ let s = serde_json::to_string(&s).unwrap();
+ assert_eq!(s, "\"Hello, World\"");
+ let s: SmolStr = serde_json::from_str(&s).unwrap();
+ assert_eq!(s, "Hello, World");
+ }
+
+ #[test]
+ fn test_serde_reader() {
+ let s = SmolStr::new("Hello, World");
+ let s = serde_json::to_string(&s).unwrap();
+ assert_eq!(s, "\"Hello, World\"");
+ let s: SmolStr = serde_json::from_reader(std::io::Cursor::new(s)).unwrap();
+ assert_eq!(s, "Hello, World");
+ }
+
+ #[test]
+ fn test_serde_struct() {
+ let mut map = HashMap::new();
+ map.insert(SmolStr::new("a"), SmolStr::new("ohno"));
+ let struct_ = SmolStrStruct {
+ s: SmolStr::new("Hello, World"),
+ vec: vec![SmolStr::new("Hello, World"), SmolStr::new("Hello, World")],
+ map,
+ };
+ let s = serde_json::to_string(&struct_).unwrap();
+ let _new_struct: SmolStrStruct = serde_json::from_str(&s).unwrap();
+ }
+
+ #[test]
+ fn test_serde_struct_reader() {
+ let mut map = HashMap::new();
+ map.insert(SmolStr::new("a"), SmolStr::new("ohno"));
+ let struct_ = SmolStrStruct {
+ s: SmolStr::new("Hello, World"),
+ vec: vec![SmolStr::new("Hello, World"), SmolStr::new("Hello, World")],
+ map,
+ };
+ let s = serde_json::to_string(&struct_).unwrap();
+ let _new_struct: SmolStrStruct = serde_json::from_reader(std::io::Cursor::new(s)).unwrap();
+ }
+
+ #[test]
+ fn test_serde_hashmap() {
+ let mut map = HashMap::new();
+ map.insert(SmolStr::new("a"), SmolStr::new("ohno"));
+ let s = serde_json::to_string(&map).unwrap();
+ let _s: HashMap<SmolStr, SmolStr> = serde_json::from_str(&s).unwrap();
+ }
+
+ #[test]
+ fn test_serde_hashmap_reader() {
+ let mut map = HashMap::new();
+ map.insert(SmolStr::new("a"), SmolStr::new("ohno"));
+ let s = serde_json::to_string(&map).unwrap();
+ let _s: HashMap<SmolStr, SmolStr> =
+ serde_json::from_reader(std::io::Cursor::new(s)).unwrap();
+ }
+
+ #[test]
+ fn test_serde_vec() {
+ let vec = vec![SmolStr::new(""), SmolStr::new("b")];
+ let s = serde_json::to_string(&vec).unwrap();
+ let _s: Vec<SmolStr> = serde_json::from_str(&s).unwrap();
+ }
+
+ #[test]
+ fn test_serde_vec_reader() {
+ let vec = vec![SmolStr::new(""), SmolStr::new("b")];
+ let s = serde_json::to_string(&vec).unwrap();
+ let _s: Vec<SmolStr> = serde_json::from_reader(std::io::Cursor::new(s)).unwrap();
+ }
+}
+
+#[test]
+fn test_search_in_hashmap() {
+ let mut m = ::std::collections::HashMap::<SmolStr, i32>::new();
+ m.insert("aaa".into(), 17);
+ assert_eq!(17, *m.get("aaa").unwrap());
+}
+
+#[test]
+fn test_from_char_iterator() {
+ let examples = [
+ // Simple keyword-like strings
+ ("if", false),
+ ("for", false),
+ ("impl", false),
+ // Strings containing two-byte characters
+ ("パーティーへ行かないか", true),
+ ("パーティーへ行か", true),
+ ("パーティーへ行_", false),
+ ("和製漢語", false),
+ ("部落格", false),
+ ("사회과학원 어학연구소", true),
+ // String containing diverse characters
+ ("表ポあA鷗ŒéB逍Üߪąñ丂㐀𠀀", true),
+ ];
+ for (raw, is_heap) in &examples {
+ let s: SmolStr = raw.chars().collect();
+ assert_eq!(s.as_str(), *raw);
+ assert_eq!(s.is_heap_allocated(), *is_heap);
+ }
+ // String which has too many characters to even consider inlining: Chars::size_hint uses
+ // (`len` + 3) / 4. With `len` = 89, this results in 23, so `from_iter` will immediately
+ // heap allocate
+ let raw = "a".repeat(23 * 4 + 1);
+ let s: SmolStr = raw.chars().collect();
+ assert_eq!(s.as_str(), raw);
+ assert!(s.is_heap_allocated());
+}
+
+#[test]
+fn test_bad_size_hint_char_iter() {
+ struct BadSizeHint<I>(I);
+
+ impl<T, I: Iterator<Item = T>> Iterator for BadSizeHint<I> {
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.0.next()
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (1024, None)
+ }
+ }
+
+ let data = "testing";
+ let collected: SmolStr = BadSizeHint(data.chars()).collect();
+ let new = SmolStr::new(data);
+
+ // Because of the bad size hint, `collected` will be heap allocated, but `new` will be inline
+
+ // If we try to use the type of the string (inline/heap) to quickly test for equality, we need to ensure
+ // `collected` is inline allocated instead
+ assert!(collected.is_heap_allocated());
+ assert!(!new.is_heap_allocated());
+ assert_eq!(new, collected);
+}
+
+#[test]
+fn test_to_smolstr() {
+ use smol_str::ToSmolStr;
+
+ for i in 0..26 {
+ let a = &"abcdefghijklmnopqrstuvwxyz"[i..];
+
+ assert_eq!(a, a.to_smolstr());
+ assert_eq!(a, smol_str::format_smolstr!("{}", a));
+ }
+}
+
+#[cfg(test)]
+mod test_str_ext {
+ use smol_str::StrExt;
+
+ #[test]
+ fn large() {
+ let lowercase = "aaaaaaAAAAAaaaaaaaaaaaaaaaaaaaaaAAAAaaaaaaaaaaaaaa".to_lowercase_smolstr();
+ assert_eq!(
+ lowercase,
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+ );
+ assert!(lowercase.is_heap_allocated());
+ }
+
+ #[test]
+ fn to_lowercase() {
+ let lowercase = "aßΔC".to_lowercase_smolstr();
+ assert_eq!(lowercase, "aßδc");
+ assert!(!lowercase.is_heap_allocated());
+ }
+
+ #[test]
+ fn to_uppercase() {
+ let uppercase = "aßΔC".to_uppercase_smolstr();
+ assert_eq!(uppercase, "ASSΔC");
+ assert!(!uppercase.is_heap_allocated());
+ }
+
+ #[test]
+ fn to_ascii_lowercase() {
+ let uppercase = "aßΔC".to_ascii_lowercase_smolstr();
+ assert_eq!(uppercase, "aßΔc");
+ assert!(!uppercase.is_heap_allocated());
+ }
+
+ #[test]
+ fn to_ascii_uppercase() {
+ let uppercase = "aßΔC".to_ascii_uppercase_smolstr();
+ assert_eq!(uppercase, "AßΔC");
+ assert!(!uppercase.is_heap_allocated());
+ }
+
+ #[test]
+ fn replace() {
+ let result = "foo_bar_baz".replace_smolstr("ba", "do");
+ assert_eq!(result, "foo_dor_doz");
+ assert!(!result.is_heap_allocated());
+ }
+
+ #[test]
+ fn replacen() {
+ let result = "foo_bar_baz".replacen_smolstr("ba", "do", 1);
+ assert_eq!(result, "foo_dor_baz");
+ assert!(!result.is_heap_allocated());
+ }
+}
diff --git a/crates/smol_str/tests/tidy.rs b/crates/smol_str/tests/tidy.rs
new file mode 100644
index 0000000..e2d809e
--- /dev/null
+++ b/crates/smol_str/tests/tidy.rs
@@ -0,0 +1,47 @@
+#![cfg(not(miri))]
+use std::{
+ env,
+ path::{Path, PathBuf},
+ process::{Command, Stdio},
+};
+
+fn project_root() -> PathBuf {
+ PathBuf::from(
+ env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned()),
+ )
+}
+
+fn run(cmd: &str, dir: impl AsRef<Path>) -> Result<(), ()> {
+ let mut args: Vec<_> = cmd.split_whitespace().collect();
+ let bin = args.remove(0);
+ println!("> {}", cmd);
+ let output = Command::new(bin)
+ .args(args)
+ .current_dir(dir)
+ .stdin(Stdio::null())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::inherit())
+ .output()
+ .map_err(drop)?;
+ if output.status.success() {
+ Ok(())
+ } else {
+ let stdout = String::from_utf8(output.stdout).map_err(drop)?;
+ print!("{}", stdout);
+ Err(())
+ }
+}
+
+#[test]
+fn check_code_formatting() {
+ let dir = project_root();
+ if run("rustfmt +stable --version", &dir).is_err() {
+ panic!(
+ "failed to run rustfmt from toolchain 'stable'; \
+ please run `rustup component add rustfmt --toolchain stable` to install it.",
+ );
+ }
+ if run("cargo +stable fmt -- --check", &dir).is_err() {
+ panic!("code is not properly formatted; please format the code by running `cargo fmt`")
+ }
+}
diff --git a/crates/spdx/.android-checksum.json b/crates/spdx/.android-checksum.json
index e691cd2..891f6da 100644
--- a/crates/spdx/.android-checksum.json
+++ b/crates/spdx/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7fe54e02de86603fed2d5ecdf7a1bcec0f709439a4e11db03d0fc746fb74f032","Android.bp":"ddb8f18c3b35c82fc8ddc736adf78fcc3339c3a067c5dc46fd1c9b360c53ebd3","Cargo.toml":"7707377b0e7c9cb704f9023cd841e050e795edbecffd587d26f483909968fb5d","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"22ce202098102ddb44bd78e49aed8a296a5fb8f85fa5b2c5eb21fdc0ac02b186","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37787fbf3b05e4028c6bceadfc4f2f3141bc19eec84b45346699c70e0399b674","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/error.rs":"3fac771e180fd9ee3bb23f6e9f7c34e647836a8555a03f82bee5a05e5e913746","src/expression.rs":"cf56fb547e34df9b5d3ce6b2d3e286bb0b03cf790ac392bef3b4632f2971ca6d","src/expression/minimize.rs":"f725cc2be5fdafb238a0513f31ac476f79e5cd44235b5c11fa811da955821171","src/expression/parser.rs":"704582a9f2880eb0a7d6556324b44d03e0696bb7b350141cb60ca89c938bd35e","src/identifiers.rs":"d75369dd566dd1e35c71f29761df7cc0c9a30672962d21ea03ddb4f77e581071","src/lexer.rs":"3528c95760e140ad8edafaa48bf1bfde4e38f1ac242aac03f49b59d89573d488","src/lib.rs":"a29ab0bb8d1e77784b002cb68816d85c2c05835526021f294bf2510a2ef0a7f8","src/licensee.rs":"c5968cdcc63e8ac4c2d824ab80e1434d25783fbfcea17f673277e9d01d4caf2d","src/text.rs":"2f91657c1e583dd7e59af1d4c42847e2ed123cc5513cbb2f3529de2c7e680536","src/text/exceptions/389-exception":"bf7574421003439e3d0851b25fec723b130fe2700bbb32939914d4a04eea29f4","src/text/exceptions/Asterisk-exception":"ab92e85af9d90f3e27c4eeeeb4812a65f55ccf929a50b5858ff09b85e03b2557","src/text/exceptions/Asterisk-linking-protocols-exception":"c82d5d273c3d89e9a881790a44e4a7b4b8bc496924a9c360fd65085cee2530c8","src/text/exceptions/Autoconf-exception-2.0":"ebd9ef2cd78784be79c513eef9f455dd4d19ef02dbe0b98258d10394c4185fbd","src/text/exceptions/Autoconf-exception-3.0":"4ea55b21d80dc89c6f6400666ea686f4054a883e000db67ed4581d323b8bfc98","src/text/exceptions/Autoconf-exception-generic":"096373f37ab7cae8c8e3f7abc5d8ea2a58294d3279d850273482a7afed439c15","src/text/exceptions/Autoconf-exception-generic-3.0":"2e126eb295630052afb0da5a2e6c308fdede42313e29c7afca8a37be95937a07","src/text/exceptions/Autoconf-exception-macro":"5369ec35d70c2f0adc2a052f840f02a43195d4f9321b792ae94d8c68d4abcf59","src/text/exceptions/Bison-exception-1.24":"ea529c26191d45d6b63b8052549cf6efe88960770900c580803b843e302d76e4","src/text/exceptions/Bison-exception-2.2":"47fc8a2301b4fa513c23155350b0e9c6dc495d11d4ff89ce6d0835db014b2537","src/text/exceptions/Bootloader-exception":"d7aa079ddf6a9be9121645157421202384056b5f756ef7756b31b0508e0344da","src/text/exceptions/CGAL-linking-exception":"8a8526dab14db205de52d20bfb1a430202205004e32b3d068b75078e53d25aed","src/text/exceptions/CLISP-exception-2.0":"135888f53f10b97e3380f5570a836e2f576766f51f48c70a745c8faa1951c414","src/text/exceptions/Classpath-exception-2.0":"e02df194da0e60d652e9481be79e1ca0d980404175a71cb901d99b26d3811663","src/text/exceptions/DigiRule-FOSS-exception":"2518e3ecae365c8d7fae3ee2c47cde7adf4fad3db87e6fdcfa1f459f7f0c05f5","src/text/exceptions/FLTK-exception":"07ca0e3a728183796912d8338d331e3e3c8a590bf6cdc3d5c7fffa1fa2a79622","src/text/exceptions/Fawkes-Runtime-exception":"57eae76289fce038e77b91a134d5f64c743a2e008aa03c583b08a522bf71fc40","src/text/exceptions/Font-exception-2.0":"accb8941ac7addd24937942133623a0e684f2493d688cd50db9971720f61d8e2","src/text/exceptions/GCC-exception-2.0":"d9e948223e731546a00da93b0962121876eb1220601161aef9a79ca42b93fc4a","src/text/exceptions/GCC-exception-2.0-note":"f3ec96d38dfab3b57abcd8bdf7b42e9fa21a37ed666a567ff0884c1769c8f77a","src/text/exceptions/GCC-exception-3.1":"17f95f0932427f5eb5c9ed556dff91865b2ed3512348aef938991e9298e7ef67","src/text/exceptions/GNAT-exception":"258abfa79a25bb389250d274a27123c449e047bd0b5e1c5057feab70fc8a56b7","src/text/exceptions/GNOME-examples-exception":"fb3f197e4b6eb600df18e3cd520508e9df0be9e098cf791d00e7f917765e4d39","src/text/exceptions/GNU-compiler-exception":"643256cc20d26af184dc7f114b09fcea2b26e08398a83d809bbe0b4e080d2954","src/text/exceptions/GPL-3.0-389-ds-base-exception":"57fcbc034398b4c4213456b3d80f93b5fbfe262a43306f3566e139fe8337789c","src/text/exceptions/GPL-3.0-interface-exception":"819336a9767ceaf0e51c43e6db77ddf92c4c2fdb1d6f07b2091e3fd2489dbb18","src/text/exceptions/GPL-3.0-linking-exception":"c061ea2e6ab9e9e9cf60740a2a59daa3fdece446820e091a88ed86a9b6272afd","src/text/exceptions/GPL-3.0-linking-source-exception":"0453e2dc1ea67e5b057b8e769f4562734b014a4a2ef4f2b67b6f555714393830","src/text/exceptions/GPL-CC-1.0":"7134e2b366acd84e30863b000e1bf9eb2d382ccda9a1ccb9242f61ad7d115f7b","src/text/exceptions/GStreamer-exception-2005":"e04ce49ba686fcfc8a88907fba9ee0487c2d7cf26d2286897972d27a599af1aa","src/text/exceptions/GStreamer-exception-2008":"897ba7e2438ea1072ccf272a807749f1ba3bcfab26ad744020a425aa3e1bcba7","src/text/exceptions/Gmsh-exception":"1c5fb8c4b71004433b2e99a263d401d53574084e309920f913745a04f9929c2f","src/text/exceptions/Independent-modules-exception":"caaca913dde9a84dd6ac80e5cf4fc2421f6a1c588129ad19d6c4da03f597679f","src/text/exceptions/KiCad-libraries-exception":"a82fe8dfce5dc5e9c18948d0ea5179bde1cc4b2ea587f385fad36755060f59be","src/text/exceptions/LGPL-3.0-linking-exception":"02ef072e1e301fc750cebf443fb42395519c0e4767e787642c07c0ce36f23797","src/text/exceptions/LLGPL":"ac436290ff60111e22523ddaaef6b540d1413b72ad0631adf2a3d024c561c722","src/text/exceptions/LLVM-exception":"c11feee845cb3c59806452427cdc301d74b5cdc4847762e2eef6fdd36eaa4bb2","src/text/exceptions/LZMA-exception":"148e6359b96c5030e9f9b986a34d854d78fb94cede099beed5f69cab3909af97","src/text/exceptions/Libtool-exception":"071717205b01416d9dc01b2eb0b8bc33d51e42d203832241359b284a899451e5","src/text/exceptions/Linux-syscall-note":"1c075a4522d84c752af9c3121ee36832607f23e7a9a4329d6ad17493050cdb62","src/text/exceptions/Nokia-Qt-exception-1.1":"66a344633f2cf0535de4e07529b631386925ace7b1a39be058b88896cfae93b6","src/text/exceptions/OCCT-exception-1.0":"8c571698fa5678927e4e37a647d023d580994a80149efd1c0035a1d3ffb659f2","src/text/exceptions/OCaml-LGPL-linking-exception":"6fd2cd6c151d227f567d749c4753739dc3d2c76fa55b4697bda3feae4ad64763","src/text/exceptions/OpenJDK-assembly-exception-1.0":"19a15d3ef60715555aeb1fc544ddafb235e34efeb5dd07f407c1577fe5d3de61","src/text/exceptions/PCRE2-exception":"3dc41b925ba4a61a4cb060effaffe97e782f9e50e0b23f5521f6250dca048eb4","src/text/exceptions/PS-or-PDF-font-exception-20170817":"a175ad206db6e84e9c26ed76c11c8c8867a40f135a993fa83b48499f7b910137","src/text/exceptions/QPL-1.0-INRIA-2004-exception":"aa1b1ac51152dddf4e18a62588f86a5ecbc8d630d60116b780b4ed6c689cfd85","src/text/exceptions/Qt-GPL-exception-1.0":"5113b422ea70d4c739016ca149864d4575f56047864ca261f02859d066366439","src/text/exceptions/Qt-LGPL-exception-1.1":"cad4e6c40490d67525d4986dc7106ad9a1e9bac52fc856d4e600e4b5631364ee","src/text/exceptions/Qwt-exception-1.0":"7626b13ac866490bcb27e11a1329872ace4a99b9b3953f3e157a4e874fafa984","src/text/exceptions/RRDtool-FLOSS-exception-2.0":"4fe69f35c5bb32ce8a425842db82a4c6462939626cfba761cac8e50bdfcfe59a","src/text/exceptions/SANE-exception":"d1d14202e5f0afb8f0acebd781165b612b32dc3677de09206bb506b7e398b98a","src/text/exceptions/SHL-2.0":"40f123956187f25262db1233e493850f3d5bd29c24d367cb8f4d7fb503876052","src/text/exceptions/SHL-2.1":"ad1df74fbc60b20adc4899cd4ba7e367e1f048acc79e92564a78ff950b81e167","src/text/exceptions/SWI-exception":"5b192f43ff7a22fe7d39450afbf5e19bb946e54bef174ea97e614025204647c2","src/text/exceptions/Swift-exception":"0191a2497b3d86c7968348cdfbb616598ed48c8513c7917e028e8989f7e955c1","src/text/exceptions/Texinfo-exception":"1074b46425e865677f14f216c393746404cc0116dbf629fa6efacad77ab2ecb7","src/text/exceptions/UBDL-exception":"bfb9a0bbdb82d8b4d09adb9cc33e57df73bef0287814a2be9821900ab37573b0","src/text/exceptions/Universal-FOSS-exception-1.0":"782ead80680fbd84aa9f1885984b00834cab40954842137314a530d73e829ba1","src/text/exceptions/WxWindows-exception-3.1":"af0898cb4314f343a19963c23744cb4833214f812a6eb1c922e4930d3014a45b","src/text/exceptions/cryptsetup-OpenSSL-exception":"9b4f591031f891bfd0c86908085daa4ecc6d453806359ad370d921a84301527c","src/text/exceptions/eCos-exception-2.0":"3ba5d5eef166484a2d0dd5b9464bda7d064fb61266653d056860eae1f6611d9a","src/text/exceptions/erlang-otp-linking-exception":"cee60f5bad8eee40a98cd661b3ad413930adec0df44158f3f033ebcebbb91cc6","src/text/exceptions/fmt-exception":"ec04b60e0787b2d39c244d317a7bba03dbad0b604c3f1941889a38e6544932dc","src/text/exceptions/freertos-exception-2.0":"fc05c3625cb85ea253fb2c0e8917efab5d15d71fe56cd224484f5df45c4f4b13","src/text/exceptions/gnu-javamail-exception":"aa2201e5ea166cef99984b59b757cf017b3d5c18feb70fc94f4d34c32984c77f","src/text/exceptions/harbour-exception":"e7fe0e8fcee7ab96a8d55a9f1735c1de7ffbf900cc70de9fe42241d233744e51","src/text/exceptions/i2p-gpl-java-exception":"0876da5a8f91947a54dd5f1b44f3b2357f421bf0ffee150de25bc8dc01d8df7e","src/text/exceptions/libpri-OpenH323-exception":"c26c088b0068dc5e1a7951c422c46ac334eb4a6e47f22fecdc435ef86ece27b0","src/text/exceptions/mif-exception":"2f3dd782f915a7d3fce9772a18f2b3fa79773a1420b8d6fbaff0dd6288c29450","src/text/exceptions/mxml-exception":"3a9475b502a3bfcb08c03979810a8ba06042f77a8e4d993cfbb3291e78f29151","src/text/exceptions/openvpn-openssl-exception":"ce3c6ad009f37532ebe9d10d53abb3c3bb23f8519406f36ef0aaf7d3b54fe0d1","src/text/exceptions/romic-exception":"17e8c318d0b5de1cc77f3b9fd5e19759c4b84da0545aff9c963f34ff49533e3f","src/text/exceptions/stunnel-exception":"1b81bf4a5ce2a03aef7653f9ce837ed818de0f12e3631969de8f9a58d86f1173","src/text/exceptions/u-boot-exception-2.0":"b08d9f9a9edf1e957fd4d5ad5e9961dbc6e8b2e89bdc4fa192115d8ce35baa89","src/text/exceptions/vsftpd-openssl-exception":"b27aea7f70f94320f82e42596fe9903aa3bdc3f17062f0357e883e2bbf9994fb","src/text/exceptions/x11vnc-openssl-exception":"99621917f5dfc469c4021fe155588e5147c057e27b31e490e519af443c92c723","src/text/licenses/0BSD":"bf81e56656013cdfb3cd5e5a2fcec81d3e32f7ff4aaa208d49a5f1a3e4661029","src/text/licenses/3D-Slicer-1.0":"18cf9307955cabe47726ca11a8f7dc4e141cb8c8b36a7bf20a8a60da0e00cacd","src/text/licenses/AAL":"ca0d73f2b63baad7d1d96a09c9c8b5e77b9e91804370773d236e3c7766c5f02b","src/text/licenses/ADSL":"e186bf79354a59a7465f7180613630085c1716b6f97c1652ae54fa9571a61a8f","src/text/licenses/AFL-1.1":"108193e9cc4a3ac3f2aaedb2653abf0016bbe70eb519312de5887148324d68fa","src/text/licenses/AFL-1.2":"491fe765acf6fd48c93925249c14319f6838f3300812c5c099b5260a9b3f666f","src/text/licenses/AFL-2.0":"8269f88be3fec5e18f33dd3e8ab7ef9ddb8c12fae895c712c6b4d5520386fcf5","src/text/licenses/AFL-2.1":"7bbfad8fac7c71b6668b2b7475e4f06666f14d4512377d0152fde846ff985b0d","src/text/licenses/AFL-3.0":"68aa6df96f8b81057e67fbd229b968347f2a95f4b3a510dc73f2d2175fc53214","src/text/licenses/AGPL-1.0":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-1.0-only":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-1.0-or-later":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-3.0":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AGPL-3.0-only":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AGPL-3.0-or-later":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AMD-newlib":"6501d61513ac0f694534597a3c681df79b3cb75f58a0aa6d53ec5f2ba9e31572","src/text/licenses/AMDPLPA":"a10c016454118490535c5afb3b2dc4b176cbcc31e1fd768beabd0a1220044a36","src/text/licenses/AML":"8a9d78f0f50495c4575291bfba26f132f8f3bc0c109eafe28853d900b1690eb4","src/text/licenses/AML-glslang":"3b831219a83a4eb9f8dbca13ed47f4599c2c744921777f6e9623fc9ba4953078","src/text/licenses/AMPAS":"c865a905dc40259bbe78c0b446be8ad47d4f97ec905f05ac26710c67b22e30c4","src/text/licenses/ANTLR-PD":"beeaef8152c59e2e5e670c1dcd72d9c1a6e72e876f819af55a01edaced3e31b9","src/text/licenses/ANTLR-PD-fallback":"684132fba805a7e4034977ca7d67e8c482cf6ab3a794b8ab2380bb3d8bad8196","src/text/licenses/APAFML":"4fbe161606da0cd748cdb33e69ca560e96c886172b022a6d8321dde8ac40e6b4","src/text/licenses/APL-1.0":"d7d0bae33041fe85d221747a93144755845a9ee7bf390cca4695adfcd33b7f4c","src/text/licenses/APSL-1.0":"714efc25a55197b52b73c14f3f214c93350fa51809c748f2ee38f566fefa324a","src/text/licenses/APSL-1.1":"ffda3a2e25f34916a63d32539516d70c5674eba6c7211c6daf76692ed4c33bea","src/text/licenses/APSL-1.2":"bff68b6bc2e8bcace58300ad75cd1f7a587152e5876cf24b47e47d9c99febe3c","src/text/licenses/APSL-2.0":"543a04e3a3bf032900b157dad24b34b606835d3cc7452b3bc645493a2d02c6c3","src/text/licenses/ASWF-Digital-Assets-1.0":"ab4fc16c63de107f87c908264664b9c26bb521cf927c390369ed306a2677c641","src/text/licenses/ASWF-Digital-Assets-1.1":"c7dd8520cf191d5e3ba55613d0895bded38c3fc5b80db7d8d77ad7d5248aaaf7","src/text/licenses/Abstyles":"2c8a66bac1fafa730bd2a090c9cc8ae47c209e9c807cb38b89e989e2ee30880b","src/text/licenses/AdaCore-doc":"1e522d7a0f05991d148d1639ad1b58d0e71cabf64db278dcc5bccf59e7fb1bd7","src/text/licenses/Adobe-2006":"857ee3985341c4520f46e843802bab8bf86644a86848ae3138199bde365b5673","src/text/licenses/Adobe-Display-PostScript":"5003df50c4489173455991609862535fe3e9ca9563e34dd811d07be38a3d5b71","src/text/licenses/Adobe-Glyph":"5160de6fad91dae7e21639b17196c5bea83ede332d7158e073f922d72fb8be42","src/text/licenses/Adobe-Utopia":"9aec8ec4c4564f527df1683e5d16015003008e85e78720c4fc17351353556eba","src/text/licenses/Afmparse":"41b6ceedb0c27bfc77f5a78fcf8e2bac89ec25ed2f69dd5bae11f4c3a64c8b70","src/text/licenses/Aladdin":"a1e139016198f8fca8a0ba49059a64c4ffbdab103a13463a02187d5422c4e0cf","src/text/licenses/Apache-1.0":"576a426fdae6c6ff441517eacfc328b46ed5666adc72796c8f2fd4df897ae9c2","src/text/licenses/Apache-1.1":"c66b431bc87949535d9e5ae97ff6dd903e625187799a9ae4321ff92b684b8bf7","src/text/licenses/Apache-2.0":"eda9356a0784f41da85f4ea5128f8e10e683d8bbe9d0e9126f38922a766b498f","src/text/licenses/App-s2p":"ba72699fab343c25b4409a521e1348ae55de95708bb6dbc7dfe8b42e87ff0184","src/text/licenses/Arphic-1999":"85cb253396ffeec39c57804ec2d33cb857dacf5bc9f414a0ef1557a1e1a05c81","src/text/licenses/Artistic-1.0":"a8736c86e50add36d92ae5197f45d84e6764c262a33037a3b6e4abf359aaea2a","src/text/licenses/Artistic-1.0-Perl":"3429306cf4acde9b53c75f3783eed05faa1a8f477e9f9c62a39be6289ce95af4","src/text/licenses/Artistic-1.0-cl8":"ce236aec093bd9fd9f3c8dc671c574f9a2aed7e2d7ff95f62a73f963ca0b85dc","src/text/licenses/Artistic-2.0":"6480282f7530b5468f68a7ac705c97bdec93c6d3fc1f7f17a607d0de8644c949","src/text/licenses/BSD-1-Clause":"0de287bb14e74dc7559856dd2b1fb0348aa77c467b2047db598508ed0103f613","src/text/licenses/BSD-2-Clause":"ae6f4601836026c7828cc8c7a91b85f28a4f8776eb9dfff6070a2c908925acf6","src/text/licenses/BSD-2-Clause-Darwin":"647b203983b045d9d64707b2c7937854db0174507be03b4b6d1599506871ac0e","src/text/licenses/BSD-2-Clause-FreeBSD":"66420ab02ebf157b609ea23d6fd3c3ba88b9a204649fe8a36fc089b3d5a04995","src/text/licenses/BSD-2-Clause-NetBSD":"ea8dec4861cd611c926cd7575dbdd4d77e91140018c891a5202a803c745567ca","src/text/licenses/BSD-2-Clause-Patent":"2c70f10db3693ca4a8b28dff888af4f315b8f5229c2b7a6133b741b15f2f6178","src/text/licenses/BSD-2-Clause-Views":"8bdf983e34927adec6dcbc5a32d642e4d7745e00a22f9858498a5f38dd639be9","src/text/licenses/BSD-2-Clause-first-lines":"e394888d87185af792e97f8e096fe022249f9742df1f89f40579f636131a093a","src/text/licenses/BSD-3-Clause":"a4ef83f8773306aadf2d13ed4fc6d793a92c386f24bb3c00856edcc8d08c470a","src/text/licenses/BSD-3-Clause-Attribution":"3c7bd06ae0ee41942d5f7d9c741f3885c5825377539c17f40126b99925f946b4","src/text/licenses/BSD-3-Clause-Clear":"89f780cf55ff75579d56e5db1e9a214e93054112ac50d2055fc2e46530583732","src/text/licenses/BSD-3-Clause-HP":"4a769bb37d246e114096cd02c98b08accf2c9b4539eda8ec7dd666173463097f","src/text/licenses/BSD-3-Clause-LBNL":"b633f32e7bb25a31ff0ebd3e46a61d7b2e007d30bd423de520ea37faa6b688c1","src/text/licenses/BSD-3-Clause-Modification":"735e88b4de41cd56d90ba683139f3bb7114500743f487855700b8e930013f289","src/text/licenses/BSD-3-Clause-No-Military-License":"d38579ecf765ab396bc8bc1954602f6d519e07166813bc986225e3142b6dc22e","src/text/licenses/BSD-3-Clause-No-Nuclear-License":"402a2a9d438c80de79050b109d7138dbf45f97e094e909b9eab44e1bad22a7f8","src/text/licenses/BSD-3-Clause-No-Nuclear-License-2014":"46eea79d040e85da45b691aab8b3b840e4f4732a100e7909145d565ec046bf26","src/text/licenses/BSD-3-Clause-No-Nuclear-Warranty":"787b69f9ab40ae5f3e717185e54170567a664302e8f0d7e86f43e9b298a8ac93","src/text/licenses/BSD-3-Clause-Open-MPI":"58fa5f3d112fe373046ff655bde4d6224dd8da69e8b60526c644f7928371f4fb","src/text/licenses/BSD-3-Clause-Sun":"0780412360715df852c04f5ab47959381a203aa6665d8f660a2b0e0e7aa922ed","src/text/licenses/BSD-3-Clause-acpica":"5bb5e38b1abec1244086f755273e828516f6c3bcfe0b28c6f34ab5b76c08c5c2","src/text/licenses/BSD-3-Clause-flex":"36c5404424f059d1740a17c2e6f2a810d3a8e36d82bd7a9ae14323257a9f18fa","src/text/licenses/BSD-4-Clause":"79dd34dfc1334298d2debdce77b3f7e7dfbeeae174827ba05769415af2abf901","src/text/licenses/BSD-4-Clause-Shortened":"3c1572c383c673969d75305da8041d138f80ea0f3591381dc420125f2baac3ec","src/text/licenses/BSD-4-Clause-UC":"c94915678bbde03c68f45eb30b7f6fcb8e177534c83f69aedead724ac03b5a1a","src/text/licenses/BSD-4.3RENO":"85ae1455057dff5572a0d127ef757426eff4712d8a0878e94eb145c2c387a643","src/text/licenses/BSD-4.3TAHOE":"7a0fa2d66a53b7adcacf002fe3f8f9de30472e761bf9c0f68cf8cd4e8d9afa31","src/text/licenses/BSD-Advertising-Acknowledgement":"61bb41c6864e5b983f3f992aba5c994f340fdc1d06598a19e400302bff53c1b3","src/text/licenses/BSD-Attribution-HPND-disclaimer":"261e0a75b31937221e3fa2ef2478301375176ba5ce57714384115738523c2add","src/text/licenses/BSD-Inferno-Nettverk":"861e2e386429b3452ef6bb45671bfcf2926f6b1a760d592033e4055cf05329ca","src/text/licenses/BSD-Protection":"ef05e52a4a5b7cb8694d29a53ff2bd9db731c5043dab7ffda3bfcf4b53a03a0a","src/text/licenses/BSD-Source-Code":"60721d36a5b52a172f77bc89df97e82f4be7e01d3062ebbd61e8534fca8bd24c","src/text/licenses/BSD-Source-beginning-file":"c65c7902bfb40e952a166dee65dc067b9a377546aac9c2c00156567c1350f6a8","src/text/licenses/BSD-Systemics":"d6c2bb8762fcffb842a3d88db603460524c9cc8932203fa691d95d2163c2ad48","src/text/licenses/BSD-Systemics-W3Works":"36d42f7591116c173c5f70f6fc65441b7436a0ca8e11747d67dee0a5e6060b20","src/text/licenses/BSL-1.0":"9c5fd85f3c1e4f52ec8b5e0eb10328238a8a9aac4dcaefe683e1ea0f435329de","src/text/licenses/BUSL-1.1":"b46ec83c18d8dacc668a896c759c122a91c3b9eda6554abe1e47a03ea631584d","src/text/licenses/Baekmuk":"b9f704de2684cf3eb2c2ad5f74f8373b22aed48dc5578b199aeaa576bc541917","src/text/licenses/Bahyph":"ea83f77bb2ea212ab2432f81026dbcc014b398b232524a7662b72840de686ad2","src/text/licenses/Barr":"c56ab4d2ca972d97a2820989eb7ef91a4439a93f862032c31fa3332d91f508a7","src/text/licenses/Beerware":"6126661ec76780882f8e92e6ac248f4588db90a89b3b058ce453e8719e78c786","src/text/licenses/BitTorrent-1.0":"760a3ec6e818c8f88aa52f762154f670c6ffd39a1fe33810afc006f88de08112","src/text/licenses/BitTorrent-1.1":"c6b8a9647595f06046eab0ccd44baa80ff50a2bf45602b987c735a4fdce542c1","src/text/licenses/Bitstream-Charter":"2a0e1a9c74c7d7fe9f0e5c21ff51ed0f8c885051ba6751dc3418902dd3541b13","src/text/licenses/Bitstream-Vera":"4f95f852a6bb0982658b63c83513780e588cd9b8f0cdd8b88917ef28879d0038","src/text/licenses/BlueOak-1.0.0":"b2f648adefbc44b34347c696ef9ae03ceda2396eab82e1fb6682ed5f4cbd3f79","src/text/licenses/Boehm-GC":"cae60743416e71335382573a0a713abbcf3f4081313dbb9be5f3b712792352fb","src/text/licenses/Boehm-GC-without-fee":"a9e3790699060bab9af0c7408f0d5980522b69a43cffa2bc62f2bfb29fdc693c","src/text/licenses/Borceux":"c178b1b09563af39b7dbcecb4c0ffd1046e6125da3fbddaa2a152d4d7aeab975","src/text/licenses/Brian-Gladman-2-Clause":"10d879038e99655146cd72a01775e180da3c59f827d98db645e5291cf35fb73c","src/text/licenses/Brian-Gladman-3-Clause":"98b1482242a2ea74300d5046f9078ccee2be0d8c11180f92e1599fe0f989709d","src/text/licenses/C-UDA-1.0":"d05d2c92aca6a8cb8d45d941e80888b837f4739c8c4efead84c6334f2fd317dc","src/text/licenses/CAL-1.0":"0e56831a7ff113cb354ad68abf21e5f48da2c31e493a37a821cdee1b9274744d","src/text/licenses/CAL-1.0-Combined-Work-Exception":"0e56831a7ff113cb354ad68abf21e5f48da2c31e493a37a821cdee1b9274744d","src/text/licenses/CATOSL-1.1":"f54934e163427d213ef33c87652a2e0b1047322abc43a41d45fd264c3edea6e0","src/text/licenses/CC-BY-1.0":"f4cd37c789019e0db02ff3190d39d0692d6cc87b44740b1c0a2377671d2bb3fc","src/text/licenses/CC-BY-2.0":"7d85593b4b97b8f325f28ba782c3676ce724d3f7c62e04788cae9af5c3496ab7","src/text/licenses/CC-BY-2.5":"88c28c7c76daeeef704c5cda027e5c56014fc52e06665a3503298dea5540e029","src/text/licenses/CC-BY-2.5-AU":"251b47615515041cc5ef30355d9b56891e639a4675918020c5c95c23e8849d3b","src/text/licenses/CC-BY-3.0":"77f9f8f2d40f63e6411be7ebf2903cb878f61036ee59d793e5ff1c0a15716276","src/text/licenses/CC-BY-3.0-AT":"e2811b0b7e4fcfc194bc935fa80eccde6145a45c1e4b055b76e3244fb7e71ac2","src/text/licenses/CC-BY-3.0-AU":"2464b5292dd962f6f338e988337a1c3011c86a989e138ed180363c99bf5179b3","src/text/licenses/CC-BY-3.0-DE":"dff28938c8e465cc22eb1f0b9a07bbed1d5c91d4305ca0040f8c1791cce75fff","src/text/licenses/CC-BY-3.0-IGO":"7870cd288ee087994eadc9a7439f1ab377835037b2e9ed805ee7353d311302d0","src/text/licenses/CC-BY-3.0-NL":"6165cfe8f73b8dd978d8ff1dc9e366c38bf128aca9d9fc14d6709e7122e48108","src/text/licenses/CC-BY-3.0-US":"ba1935ba720818a3697060935bd27ca2ecfd2b053b0551e2c55980feb10cddb7","src/text/licenses/CC-BY-4.0":"c0027b469a6d99268b1d8db2f34ab7f8354e860d3d904e5256b6ade3e5553cdd","src/text/licenses/CC-BY-NC-1.0":"34a899517872228494180c356ef435f21fc72aabd6a71cafb1d3c7b66240aeb6","src/text/licenses/CC-BY-NC-2.0":"d66602c60a2e0761a57d80c23ff051bf0244e58159a3f330f3856ffd4699f648","src/text/licenses/CC-BY-NC-2.5":"2a9615d87349d61006bc303c6892f9e8b340e4c8c0715923e9b828c4b4296c8c","src/text/licenses/CC-BY-NC-3.0":"0945dddc12c4d8f66e67b0960b9989e170c67f64effc4de1b7b9cd3f0199f76e","src/text/licenses/CC-BY-NC-3.0-DE":"937f17f5a2e3c6b1825c247c7e357a8d6aedbf461433e359b8029e669ca94195","src/text/licenses/CC-BY-NC-4.0":"1372b1e722dfdf6e6476ec1011af34bd55eafc689642a370ed966bb7f0f43e10","src/text/licenses/CC-BY-NC-ND-1.0":"6b3e5ce79112ce2b2173675d74fa0d337c78f7957a30808ab39198f0f6b7df2f","src/text/licenses/CC-BY-NC-ND-2.0":"9d1849891e124d7a3f3f2e5a3e2d91a2301441173f9c3a2d01f785e7411e209e","src/text/licenses/CC-BY-NC-ND-2.5":"c0effddcc150b57a8434f47a06c1d0ba1cd321654478ed00541be7eb236a58ed","src/text/licenses/CC-BY-NC-ND-3.0":"37e88b450ea04163e1300bd0db539bc9ad99cd2acfa74dc34c9e18802c222b12","src/text/licenses/CC-BY-NC-ND-3.0-DE":"d58720fd20b7d9ad8b8193c8ec78ce37c7874d1e416bbc34f5ad36296314a4f6","src/text/licenses/CC-BY-NC-ND-3.0-IGO":"833044479fa093b113bd5b9c017af6bb79401daf4704d4c6c4137d34f518150a","src/text/licenses/CC-BY-NC-ND-4.0":"2c7afeedaf05e5cc7a3c5a2f64d2ab7da82786415dd77adea3f117a4d5cee7f9","src/text/licenses/CC-BY-NC-SA-1.0":"5d24260c70aa7e99faebaa5eb02deeaa292b95d81c60527063afb339c3cfdcdf","src/text/licenses/CC-BY-NC-SA-2.0":"381d8180841bd998e27a70a6e84cdc736d8a1bfe3fa8423e149513532e462560","src/text/licenses/CC-BY-NC-SA-2.0-DE":"14a49246b6e30550668463ca916becc6b113f55c5d3c93374b3593277badc83a","src/text/licenses/CC-BY-NC-SA-2.0-FR":"0ec8add7783509052fc4a237886d95a593e6b24c01af34f43311d4b26cc9ce12","src/text/licenses/CC-BY-NC-SA-2.0-UK":"1abbf3a2b5a3974069895fb379127d3a90982ca0020a28dd0df9e92395610f04","src/text/licenses/CC-BY-NC-SA-2.5":"d47a6c8e7643b5e33d7b5fb99ede8bd78997c165393fab5623840e7711459f3b","src/text/licenses/CC-BY-NC-SA-3.0":"9ce2de5b48f60701a40035ebf449423dd8c7a5af888899587e41c1122adcaed4","src/text/licenses/CC-BY-NC-SA-3.0-DE":"0c2a9990f16db7d09916982b893b6db4214c7d82d6313f0c6470315c1351a1fa","src/text/licenses/CC-BY-NC-SA-3.0-IGO":"cf965fb1ba94d058ed7f9d317798a0d376617fd728a8bc73f5992d829c49ea15","src/text/licenses/CC-BY-NC-SA-4.0":"12b630d1586ec6e8e04528731cbb46d6822b657ea5832cf41c5b7b065df5ab64","src/text/licenses/CC-BY-ND-1.0":"875669cb70494fd96e4a5e3565cf9b5dce9ca4b433299d6dfb7861a88b0f176f","src/text/licenses/CC-BY-ND-2.0":"142f9479c87faae709717c82a5425fb50cf5f5d56a3d7f64d9025bd7c6eafa55","src/text/licenses/CC-BY-ND-2.5":"ad0345f2b7fc9e04ad8f8de2063dbd94532bd3c1d17cf15686a2b3821a5e7cd1","src/text/licenses/CC-BY-ND-3.0":"5b8be952978cbec0afc9a0d7358bf72cb8407690621b315c37b84dac2bf3e4aa","src/text/licenses/CC-BY-ND-3.0-DE":"4c0becd0dec297c2de0d6493911751ded9fa1beaf99c601bbcb0ce3a1af0a3b4","src/text/licenses/CC-BY-ND-4.0":"726bd2e25869cf0a0f31739645a1ff5a8a0b73d52ff096d09f0a240325f7f4df","src/text/licenses/CC-BY-SA-1.0":"5c37a8622340221bbf3d59dc512d2f9361cde13ea13e6eb1c8a10c8121852bd0","src/text/licenses/CC-BY-SA-2.0":"76a3ebac267c65346dcf6e36ebe3e6c2efd6ead8bb743b7bcdf657606ee51429","src/text/licenses/CC-BY-SA-2.0-UK":"460c3d23b2d54637db93bac9eae9f1aa22c204bd3ce44f75ea5f43193b8bc277","src/text/licenses/CC-BY-SA-2.1-JP":"4a12f37cde9cb0d03bd2c3675464d89b5bc4ad8b49e03bda1ad949e87c42099f","src/text/licenses/CC-BY-SA-2.5":"d7ffe89898321ef4a2c7b80d72224de4135456aa711a567e5afc25fd97bdc40b","src/text/licenses/CC-BY-SA-3.0":"2ff8ddaf4a1c5a291b229413dbedbc2888c9792207db8607949831ffbaf5ce2d","src/text/licenses/CC-BY-SA-3.0-AT":"808ecd7631146a248b063c20a13b5938c8e92d3fa51bb9815b2bdc931318f92b","src/text/licenses/CC-BY-SA-3.0-DE":"e06498634175eb2dcb06dde1b4a67218b573eb03dbdd00ecf406e819388ce4bc","src/text/licenses/CC-BY-SA-3.0-IGO":"f768d38607abf8d342041c285bfb09aabecb9594cf5f35b76ffe1ab614d44e81","src/text/licenses/CC-BY-SA-4.0":"9e07fc72ac9c4740f2fa2040640ad6ea5ec08020837d6684d982de1f2df5ae8d","src/text/licenses/CC-PDDC":"6397b48c9601f239553be99e1fb6aec03011086848d4dd8acf83441e2592094f","src/text/licenses/CC-PDM-1.0":"9c28a8082599532255db6e14be8fa452835dc8c9b43830ac54455cd8a6995aaa","src/text/licenses/CC-SA-1.0":"19c811d2c15c3adfbcb2747e50a5106fcdabede08a188d2726c7208c88303646","src/text/licenses/CC0-1.0":"35de31a7569fa2c291b997c1775f7a97aff427328e12a8b90b4c92f86f3551d4","src/text/licenses/CDDL-1.0":"786de81877a07d874f9a9f90a7af936e5ff97a910af0b974d3b9576f92197fbc","src/text/licenses/CDDL-1.1":"1c2d2921fa709bcfc2e2626fdfd329e3e4ff7b2703f2b2d747579abc43b6c269","src/text/licenses/CDL-1.0":"b92cdadf1901cab66b4a782f5cc6adec37344c786b3cdff058fc708d33cfdda2","src/text/licenses/CDLA-Permissive-1.0":"3fa548df74d9d85cddd877da49a71d2985a52961e16d3bf164a9f16f1f031d07","src/text/licenses/CDLA-Permissive-2.0":"ffc2f9dcc34a25d02ac7ecc1e3241d1c6869a7a31006a29acc748f136c165338","src/text/licenses/CDLA-Sharing-1.0":"814ce50c84d18eaa3605115454eccae07e201fc4ace2a3eeff9ef637a08df272","src/text/licenses/CECILL-1.0":"1df0c2fdad4229187b7066a41f6d7f4b456c611c7e887daf0968b2f4f282e299","src/text/licenses/CECILL-1.1":"c19311b4bebce1e4aa1fb5e576f56335615babe9d09912104f76f4424911526a","src/text/licenses/CECILL-2.0":"678011813f82f6e151e411e8b87d8bfbb3cf914f0368131992e8360426e26a56","src/text/licenses/CECILL-2.1":"e59b50a0272e78b8a15b70141655ede2a1adcee2ea60460d2981df3000623248","src/text/licenses/CECILL-B":"2d0f35827aa5b3a2f7cde1f98fad6d3b01fe08c9257c4d05393c11fd589bc17e","src/text/licenses/CECILL-C":"136b5c1912923ce5f485e242e1cb806f05a057095b3bdfec2761e19b64e73537","src/text/licenses/CERN-OHL-1.1":"c93f163948076ee3a3badcee261b9248a8dabea8b9e53bae8b6f6807bbe0c5e9","src/text/licenses/CERN-OHL-1.2":"6f8082777ce3ec1d5c33ba6089df285c61cc267fed229f73bd6a1be4cbb5a153","src/text/licenses/CERN-OHL-P-2.0":"f04192423fbc18800e5c87570b9c14aab2188f5d965d8c406f6b575f73c361f8","src/text/licenses/CERN-OHL-S-2.0":"bfc59a7e90f32d639d532d280cf1e42411fb7c2b4b897174b74cddaaaf5f2f27","src/text/licenses/CERN-OHL-W-2.0":"9dc6e5ffff9a46a86187619b6a17a2698caadacf5952e43b175abcf7474c5f9d","src/text/licenses/CFITSIO":"e812952e17646ecddf24423b05c4c3b939d3f36b1f59075ef5d0dcce5776db6c","src/text/licenses/CMU-Mach":"1cf2e3d4eb17a6da5a720bca07042a4a64d85776bbf04938b336c1dbd9379b47","src/text/licenses/CMU-Mach-nodoc":"942480b2cb38c779d794ace460e294555687ff54527fb3300f497d7ad9e51258","src/text/licenses/CNRI-Jython":"87c303cb8c9bd6d637edc1129b40c42b21757d0c452d0945469ee74621504184","src/text/licenses/CNRI-Python":"5ac3f5210b2ef1898d59af67a80ad7552fb66f79e50a493f462cad26e7ceca1e","src/text/licenses/CNRI-Python-GPL-Compatible":"b5b327b486192f20ec94d1e8567bb82b26eb1ef6073899ccbbab11cc06077119","src/text/licenses/COIL-1.0":"1e8a20746c7491315d3f9c62a379d15a6f93ab2d5b06358c041d8b5edbc77cc7","src/text/licenses/CPAL-1.0":"1605d41ec4ca1d4913548396b42d474df84509175206797720c010bd3aff89dd","src/text/licenses/CPL-1.0":"c449a331a5bc0586d8ccb0b058bc3cee85c6d7c524ff4c1b55eaa6d4444a1351","src/text/licenses/CPOL-1.02":"0c08b170b49f3960085030c365cfb44562724fcc0ca146e4f07cc87ad1dad083","src/text/licenses/CUA-OPL-1.0":"c06c5d67fbc3e50e9feb41c33b48635ded8a3e404a78a3f48e282e7e5d3ac16e","src/text/licenses/Caldera":"f59616b6b8465cad3817547ad2c0fbae4e764ae1b0d5d96657e92eb8ac79fd4f","src/text/licenses/Caldera-no-preamble":"e373d32e22ab5806709fe97e189a7ef70fd320fe4bf8ceb03d4c5c114e9f706e","src/text/licenses/Catharon":"e9e7d075221ad3da56e1f6d2d6f1b32fc872286da5c5c5ceb1c9f6f271db920b","src/text/licenses/ClArtistic":"7bf418950ffe4dad07ed898fda13aa2c82563687dabd7269238de19b6cd0abbf","src/text/licenses/Clips":"f18fb02e3fd74e0e8e466d6b6712babdd044adec99dd473eea396f5be6bcf478","src/text/licenses/Community-Spec-1.0":"09eda9568ffa65cea24d56f455456ddf98b9b9cd67fd9dfbb3204838923e8312","src/text/licenses/Condor-1.1":"e1d5a4a5c55e08cfa5e52bf3dc7f62cb7cdea29ebe80688a49dc3bd8087204b7","src/text/licenses/Cornell-Lossless-JPEG":"1358f99586d553823dd73937c5f4f33cb487d050d6090c329d4656b7a04bc8f4","src/text/licenses/Cronyx":"abf0af660b635a7fb8f7a94b4fe08fc0ecb1dfa3f6b1f295e3d58fd733273ff3","src/text/licenses/Crossword":"9e620328b6e12544ce931c7291f2da0f46d76204251eaab43ddcce419ea3782f","src/text/licenses/CrystalStacker":"56d771af7cf644254d498d8b1b281aa9592b7b6025d7cfd4d2df8c1c6ac6b435","src/text/licenses/Cube":"e58995cc002a5084014486ea85baa4ce3af29cc6af7fc7667d3ae0fc9a63bd5c","src/text/licenses/D-FSL-1.0":"347b10b3a46547d754b5a4b952bd29235bd1734a8af6c13d23c484b68dd23116","src/text/licenses/DEC-3-Clause":"8598f47dbd4c29f48965d8527edd5b1239ac3fc4d1c1a443efd552f3f9ee081f","src/text/licenses/DL-DE-BY-2.0":"4a22b0591fdd8d04457569dbaf3db46ffb141df3ea2755c13378e394267155ee","src/text/licenses/DL-DE-ZERO-2.0":"910b9f9ddb3e6dc314eb357133dfbec0813637301a9013d9aee01209ee78f1a1","src/text/licenses/DOC":"9596a0c1f7f1e91506fe98e26745ee8be393b48a12a828409ba61484e6d15a44","src/text/licenses/DRL-1.0":"f659deed3bde8162f184b3749e792fba3740a820a3f66668d1177b7b2245cfbf","src/text/licenses/DRL-1.1":"23738e2cb9e7b9fd7a1e8063fc5aca56a7b414da535accb73c7dbf9def9d1721","src/text/licenses/DSDP":"0256908b583c787763f8b450477ae31d4e88af108f7df9f7e1199978f43c9063","src/text/licenses/DocBook-Schema":"5faa09a2591578ad88e4329411649cc8536b315b63d515d5049990cd822f729f","src/text/licenses/DocBook-Stylesheet":"ec02f8e2294aaa67003d0e23b1d22f8a9c91f1c98d641ed46eae95385d82e55c","src/text/licenses/DocBook-XML":"677a7f9be83e7d0ab0c8c00dea7a1e71fda574cf1e39b442aba94b32469b44bb","src/text/licenses/Dotseqn":"a5081ff95d94fd77df70a8a119982b6508ab35566f75cbcc818fd491d10328ed","src/text/licenses/ECL-1.0":"4664e2abcfe6b104ce6908424845c3e4fea7b88a3cf963c51438fe305917483b","src/text/licenses/ECL-2.0":"c4065084b2860bd466b78a15835fc2c30754639c13b9321e8f73f80ea7e9675f","src/text/licenses/EFL-1.0":"5d88db08a148ad0d9eff1246675705919ce9c82ebfb986dc166d5f06a0242972","src/text/licenses/EFL-2.0":"5d868cfc5d44f71ce3ac0fad8c98af2bc0255a2955738fb117129a648adb0389","src/text/licenses/EPICS":"a19287d72c9ebcecfd4b5b2521ae4b3cc2096f4fd75c78830f3dd4459916df1b","src/text/licenses/EPL-1.0":"c20043904484ca0bfd39d8359b1ec3179d9ab6a51bd213c456e16282e5c8cfda","src/text/licenses/EPL-2.0":"93087f13b19708cb94362e3d7603fda174ca31c0b19930c73034030d002712d8","src/text/licenses/EUDatagrid":"d7231523043c2c6471c16dc22cd066b18ddae035bb82a868f6602ac8c851818d","src/text/licenses/EUPL-1.0":"538df49de4182a5e4c54f55b1c68aead85efbd3831257a4b4464958dda46a172","src/text/licenses/EUPL-1.1":"3d4a4397d53377be7734e2bd556fd7288279410729be9a434af6787c105a7246","src/text/licenses/EUPL-1.2":"64549754d93c6c7cc2442853809a97fed17776edbe034ef8fba3d566c104570a","src/text/licenses/Elastic-2.0":"295d440c35fc31d3b01d6e11bbff67e668806a91e1984ab338cb73aeee7241fe","src/text/licenses/Entessa":"41f13517a92a9d34d0f72e5f075ae3ab545c73de14c34c157d4b9f9eb40aae78","src/text/licenses/ErlPL-1.1":"00c5141dd366f162f72c2a46c492c7448afd711bbd97ca58518413c01d6f03fd","src/text/licenses/Eurosym":"a5ada5484a1b88fe49030510aa90824e2166085aa6e7ec244871e75751c6077b","src/text/licenses/FBM":"9d8a07cee54fce316f14fdf1a8bc343ad40b00ee20404bf3764b268568179eef","src/text/licenses/FDK-AAC":"2fce9b7bcf1560e6d4d1fc0c48681368bc95f5f1ef8757f7f0ef243759783ba9","src/text/licenses/FSFAP":"d598cde31c3a87e1624f091d10822540613f26f41ee9c65e59d4b9b59fae4fe0","src/text/licenses/FSFAP-no-warranty-disclaimer":"eb735470102d416f7f549938ae28d545cdaf4676816699917538ac3b6b1b2d99","src/text/licenses/FSFUL":"875208d18e81fb98f7ca10089e0856acd135876f2a72f9e7bcf51b6c0fe8cbfe","src/text/licenses/FSFULLR":"d188d4ed5b4be4ad19274243b2c62f22296e7149c2aec81bad16efc99fc604bd","src/text/licenses/FSFULLRWD":"a5b0a5c078e5b8208edcef5507531b95d8c8c1f559747585919e1787e163a133","src/text/licenses/FTL":"dad8ce85a7546abae4a1f40c5f402c395b81df6e3c1b85a82a7e6e22ad918c9e","src/text/licenses/Fair":"d16f6263eeed9cb4c0d8d3e6dd322dca7aa8f2ddc52ba894b05ce242b3d58c04","src/text/licenses/Ferguson-Twofish":"8eb0ad20fd96d8b31fbd6752f4f1fc12a7748f3bdb942e0e10ef7f3ae9a4fe76","src/text/licenses/Frameworx-1.0":"c202c7c5b67964b41e353ed4d4e93cd3fc9e68eccd53e10af88bf67e131891f4","src/text/licenses/FreeBSD-DOC":"aabed5b0897349220123be4f9ace2debbfbc84c2ee6938842df7c272e63c24d4","src/text/licenses/FreeImage":"32931a63f672cd68981ae644563568836a95f06e9c1a62ac38c1599f0cab3905","src/text/licenses/Furuseth":"e15ef2e33945b97c23e642e3673598a49a28502093520e36721e62a29113f425","src/text/licenses/GCR-docs":"07f967fb7c4d77fb071f35b65ba3400ebabdfe367a8bf26758a3a98a9d100491","src/text/licenses/GD":"834b1e11994ed10948bb95a331b9e37b828532b76ef4db8b0cb0d4e26f1edc90","src/text/licenses/GFDL-1.1":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-invariants-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-invariants-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-no-invariants-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-no-invariants-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.2":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-invariants-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-invariants-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-no-invariants-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-no-invariants-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.3":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-invariants-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-invariants-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-no-invariants-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-no-invariants-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GL2PS":"c82b94a146dad0965a523621ea319f2847ca17403513a3a44cf141e319156c1a","src/text/licenses/GLWTPL":"c650281d26908af7f9bd41d19e4d057e874bc06177247cb35ec392a5dc1153cf","src/text/licenses/GPL-1.0":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-1.0+":"6bc27a888050d25cadbd4a56358ffdee7d7a4ffc91cc4268b356476a154ef33c","src/text/licenses/GPL-1.0-only":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-1.0-or-later":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-2.0":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0+":"e5273a6d0ad8a35a2d80fea6f4f603938f2fe4d8fa8c4252424c92bf3fcd16a4","src/text/licenses/GPL-2.0-only":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0-or-later":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0-with-GCC-exception":"bfb4530f6bab62c3841c25d46be0aeb19022c13441b675a0d0b455cab3af0988","src/text/licenses/GPL-2.0-with-autoconf-exception":"0118d2ae89c67cef4f95fc7d986df19a5aa40eb1128f8e7dcfa47f6b05574869","src/text/licenses/GPL-2.0-with-bison-exception":"f572411e0282854b0eeb38db7b04121844cdbfc9b43fc2ad71b8e93e6df0d2b6","src/text/licenses/GPL-2.0-with-classpath-exception":"0b1175b029268046b1db104fc3fd004254455adc28a83c69cf69cfa55b5a9051","src/text/licenses/GPL-2.0-with-font-exception":"6131133987317483f07359b10e692497166f7ed84afba4266bb7ae0bb4946307","src/text/licenses/GPL-3.0":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0+":"37d0075c097e4f3a6ba9523db5731818dd20cbe31a014f1adbe54ff96561e453","src/text/licenses/GPL-3.0-only":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0-or-later":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0-with-GCC-exception":"fe15c3a710a6f15239b5a70ace1880bb8f0dedb24fc95315840afa358f01a06e","src/text/licenses/GPL-3.0-with-autoconf-exception":"bb6e3cb5d589cb59666313fa1b7a775e53d5a3dd0bcabb0912977b946ac7a21b","src/text/licenses/Giftware":"d205aeae81296bdbb88f5fc24a1fa6ba0b579a875ffff04ee8bf33bba3a50ff2","src/text/licenses/Glide":"412afafcf0afedc59e3d3fa858f9f0f96a8e9bbaa462b129d0ebdea928db5e32","src/text/licenses/Glulxe":"94ee4ff898116c16963aee627103956cde0cc62660c7d3527fcf1e0b04ea6c36","src/text/licenses/Graphics-Gems":"4deac78b4ae36c209851d0d48273be8bcb57553d03b87a1cb6fe69f68af5b7a1","src/text/licenses/Gutmann":"f974a705574846c71b8489f053123f6c5dbde93c259d1d361a3950d51af6e1ee","src/text/licenses/HIDAPI":"ec0e669413bd3c47edbf7b27e5aba094b8ddb247385a9475ae3e068c71c59bbf","src/text/licenses/HP-1986":"7f65786161c795f3b61d4eff5239355707e4166d340198def924df30b0e16898","src/text/licenses/HP-1989":"8f8156d26c42c826ea6f52ae14bab1e42ddbe8fe0bd1b8f2d2cd5304f9c5c0f1","src/text/licenses/HPND":"85bbaa558af6929b3e88f32860da3a3a58474de524bc5580af44518622b2d727","src/text/licenses/HPND-DEC":"271f559012b55c67991e2a5d9e9c171eba8afe8978412f3c69da693e10e14081","src/text/licenses/HPND-Fenneberg-Livingston":"8d647eb76badc9d10b581983069902b024bc3c2b5fb4c605bc64c30ceb6d715a","src/text/licenses/HPND-INRIA-IMAG":"cb4cfbd39f8439e48cac120391b89c28798f14aa0f3c1cdf5a431cf1d9bd3326","src/text/licenses/HPND-Intel":"2249464eed991dd8d52c0547425c03200fffff7cd629be7b167ddbd59804e00e","src/text/licenses/HPND-Kevlin-Henney":"bd892026e797daec95cfdfd737113407ec575aff2392ef731028fa040db844ae","src/text/licenses/HPND-MIT-disclaimer":"442ca01f673cb8026225f45e074af3f54ed3bc3856c32fce4cc3eef7f4c61e27","src/text/licenses/HPND-Markus-Kuhn":"52bac2bf41c33bdb291fcafb47326ead29654e3007b463b5f17263f2a2396282","src/text/licenses/HPND-Netrek":"cf6456070bbfd02bd1d8687cb3a5bfe4ce7699f79890a74cb7e568286b2d317f","src/text/licenses/HPND-Pbmplus":"f9e2f42913d6ccd7fad4c727fdf295d7bf95de6cf9b8d35881de16c02f134f82","src/text/licenses/HPND-UC":"8cd07a265133446e04770e94c8dccde62b3ab436a191294376835929e8259d2f","src/text/licenses/HPND-UC-export-US":"a5be94e1d019d499e208235f730cbcd810046a68a2095bc94cdbf17db157e2a6","src/text/licenses/HPND-doc":"e21e925a8626ce15f2d8e24ef861a3d19c4fdc1b11680ef03c3ffa0beb5db4f2","src/text/licenses/HPND-doc-sell":"52cc928871b77f3b82cbe4a2749e3df357b4e59c503cae1ff3569054f3335d04","src/text/licenses/HPND-export-US":"276c6fe67e72567542fa8282dd44db75b07985177ce1fd74f310911db488dbbe","src/text/licenses/HPND-export-US-acknowledgement":"b2bb4349fe6b685dfb8f87466dd4f2d4beaf30751c3047574157e7521283e0f5","src/text/licenses/HPND-export-US-modify":"979d992fd8fc3d875344527fdbaaa3e4619722b3d83a8971ce83cfd0d64c7740","src/text/licenses/HPND-export2-US":"abf03769e8a383827bbb62378e3c64edea9047f486d40b6558ab18c05a17d513","src/text/licenses/HPND-merchantability-variant":"38ad65cc9e79e0700d1d70fe31520d5a3cf72b9edc8aae831fcbb4fceb5cdbea","src/text/licenses/HPND-sell-MIT-disclaimer-xserver":"09f7460a4a6a4583bca9b718d770f333f093e52e76f2538a0d73c8a8f62e146a","src/text/licenses/HPND-sell-regexpr":"83c8852480d6881c2132ed435e84ef480bcfaae47190eab5446976251eaa0a6b","src/text/licenses/HPND-sell-variant":"ddce2887109fc2ba6e55e45766351be232ca96474d62231785ce3a05fbeaf079","src/text/licenses/HPND-sell-variant-MIT-disclaimer":"4454ea0ae41590e57952a90dd3d2a8502013814738a93461d15862ab86425a33","src/text/licenses/HPND-sell-variant-MIT-disclaimer-rev":"eea866b98c9e4c9cb49c28f15e7ad324a022c847d6d472e0e1962503ac84ca35","src/text/licenses/HTMLTIDY":"8d06baf798b4ffcc5ce1af1680bd8e6f53d5b93f57d057e2899be41772056200","src/text/licenses/HaskellReport":"7223721cad2bfd1e0d8cf018fb87c4a1226643ba47060dc60a6e1a847bc6c828","src/text/licenses/Hippocratic-2.1":"967b59504a9df10c774144b13b3b49ec3566b05b7591b1fbfcd0577678d84bf2","src/text/licenses/IBM-pibs":"71ccd099abebc8c92902284bdbd05b04bab424d037880d04b03101ffd4c61da3","src/text/licenses/ICU":"59dfff5b952281eaf8f0894ae4b4e7e0e6f4d8e7fbf476e8627c4d0d01e3c023","src/text/licenses/IEC-Code-Components-EULA":"8d2e20dab7dfb915289e9c3af9089480f01240f9efc5e11d2e8568ec503a8e3e","src/text/licenses/IJG":"dc593685dbad80ceb851c8866f69d7ea7307e8351551f33d33cfd6dda24e4507","src/text/licenses/IJG-short":"2595754596064a22f13b1179b68b88ea06358be147d8e2ebc86d81edd3e63fec","src/text/licenses/IPA":"4fcec38d94cc7f2416d4c348a9d1bf906616c1e0d3de92d5e75cb55ee36e9eb3","src/text/licenses/IPL-1.0":"c86f2665d106b33189eeddf937897c9a1f30525a890ff717f6e6f51b00b0979f","src/text/licenses/ISC":"b3beb25c1f9172b0c1e4a8d76d90ac8afc9af03f9ad93f3502dbcc9fa6ae7fad","src/text/licenses/ISC-Veillard":"ff8237f74853c6fe6f10426771dfb6bae4af3ad04aa4bb2856cc6301ba19193b","src/text/licenses/ImageMagick":"26b90116e18394d712b68161643db7665a5993e90cb4d72e40a96b780cfe634d","src/text/licenses/Imlib2":"a05554da921912c566a74a82f586c20517718a6a69918f843d61d859f729ed05","src/text/licenses/Info-ZIP":"fb84ab8ccf924dca4672b6203a00c14681d7ad805850fd80b836fb6758a8fb67","src/text/licenses/Inner-Net-2.0":"5ae59463053af4cce22a84cca687fccec0eaba58884661d1e19fd07e8fc83620","src/text/licenses/InnoSetup":"54aea45525ec551b29e28f23d3c793128f382e7b11ac6c732816c9642800f903","src/text/licenses/Intel":"150202de933fc459e49e511b5ef4a217e5eb7a6a06e54c6d57723f518cb39b2e","src/text/licenses/Intel-ACPI":"f33b5c233b62b8078086bd10e8c5b7aa8de6f01560c0a3af263c5774fd434c50","src/text/licenses/Interbase-1.0":"900ef91b882ae2bd53656a1eb1c0b9c375f84f9fd4df8708ffd08a39e899c20d","src/text/licenses/JPL-image":"e72b52254eb0434b1318ee3a3c4b8828523411c0522093ab418b6aafe5277981","src/text/licenses/JPNIC":"5ac3dc40fbb7de92edc8be4e4ee801af4957f1e3b9b0e80f2f43ef5e05025aa4","src/text/licenses/JSON":"bae9ae7a9e50585ef2a22429d3422cacdf5067a79531bcfdc50f741242c65402","src/text/licenses/Jam":"a42c471b32038fd09238489664caf15e49cda083fff1cd7e2bdf4197fa1b116e","src/text/licenses/JasPer-2.0":"e30544defd605428f32ebfdf552d6a208d51723f45ace092f35bb9c7f3f22d14","src/text/licenses/Kastrup":"1bcc1b6313e867c0832de75224704937bda5fd79e581800bf07a69d814a87a41","src/text/licenses/Kazlib":"27ac971bf32d51d127e513c0a05b63c90bfcd2b42fce838e66bc4203b9ee4906","src/text/licenses/Knuth-CTAN":"ee33f54dd5f645af620bb32058e1258b814d45c0d480cdba3c4151e092fb0cac","src/text/licenses/LAL-1.2":"3c80bc6bc78b293f305e00d4eaea838bcba27e270963d745b9ac73f7544c33ae","src/text/licenses/LAL-1.3":"6b5f7a16da51c0b3d5344fdd0d25cdfc01e910ef891d7f0119269d19513c6010","src/text/licenses/LGPL-2.0":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.0+":"9f902fc9dfe2096047c3429fa7fca4bfc254a518f6150dc4c97d52954729ff11","src/text/licenses/LGPL-2.0-only":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.0-or-later":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.1":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-2.1+":"c628c91db4e5db1685e86e52bcbad60398cbd91c71f51164ef588f5efa110f8c","src/text/licenses/LGPL-2.1-only":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-2.1-or-later":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-3.0":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPL-3.0+":"e5aaca4b8a3abd07848e8afa63a6a7ed7ad61a32f6f1848d1f337b14c902706d","src/text/licenses/LGPL-3.0-only":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPL-3.0-or-later":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPLLR":"5d908218d3ebd35afedc7d5b6f42e9bcd0bdf63bf77fb428be249dfb05d51208","src/text/licenses/LOOP":"7e8250fffb186ac1d9b30dcb6f051740a9fb60e0b8de1b9cd7866f062b8101a7","src/text/licenses/LPD-document":"82b5d4aec5bd88c0b7f68adbf8340ec1ace813264a92bebda6da3e9670a745e4","src/text/licenses/LPL-1.0":"2b0e3f324d86fab446c6b4cef34fb6a85cfa67d47426679f9538cafaefee93bd","src/text/licenses/LPL-1.02":"d303e93f6bb015b356351ec37c253f17bee63ac0df6d65a6c358fd634a49d559","src/text/licenses/LPPL-1.0":"9de271cffd48e4a5fae17f5994c826b93368c4a240e22a84504b14d84c43427c","src/text/licenses/LPPL-1.1":"5e72356013d988fb66bfcc7f1e771120945e1802643a3aa0a1ba70aa5083404c","src/text/licenses/LPPL-1.2":"837436e638efc7e8a502bff2f0208bc57ebcd6e2497dfc416af2c33662b95536","src/text/licenses/LPPL-1.3a":"3e73a4d8a97b68028060c2e212257555f06a03cd884fe5869f96c3cd801a0e9a","src/text/licenses/LPPL-1.3c":"65338fbffd33eec1d71a9343f152dd724a93eb1104b9c29d3670c181e07a906f","src/text/licenses/LZMA-SDK-9.11-to-9.20":"525ecf2d29338414f845268c9534aa84edb4a2fb97de7ae9a719ee7faf03f269","src/text/licenses/LZMA-SDK-9.22":"ae84caf79d8d2780dd948db18eec78ed4e25ae8eb93e8ca6b5a5d30be989e468","src/text/licenses/Latex2e":"7060e6cea50e18168b452f1cbf2cc847de0a358d785fafe0c631c7bd21b714c5","src/text/licenses/Latex2e-translated-notice":"7c22638330bbac1bf49215f52b53e5d7b04cbc9e8f91e07bfce406ef221f148c","src/text/licenses/Leptonica":"997468ffc230219809687290414917f71fff34fad741bb54b7276911d1663174","src/text/licenses/LiLiQ-P-1.1":"ef724cda2b940ba30955f534edf453ee7a76d9bafbdbfbe28a2a5b6ae3f9afdb","src/text/licenses/LiLiQ-R-1.1":"0855d92eed5b38a498b1469080853f00a5961b9119c448bc917e38aac0b40438","src/text/licenses/LiLiQ-Rplus-1.1":"a8eedbabb7103dc4bc221e2eb3837e99655f7a838ac3915d192780e041bbca21","src/text/licenses/Libpng":"f273db5cc34c36420cb058051536f1dfa70af40afd98e4ba9d625b0091a74edb","src/text/licenses/Linux-OpenIB":"f74dc4f8c72486884a9c27b42348b191c5e5c60ba1791d326a0051beba7a0688","src/text/licenses/Linux-man-pages-1-para":"c71ce6fc73f24cdd0d0fdeb12efe571e04c82a12add7c60974b065e0c8e39302","src/text/licenses/Linux-man-pages-copyleft":"11007c5fc1ca881c84966f74345a3ac2be1787850e203d8efbb929a54a91b0b8","src/text/licenses/Linux-man-pages-copyleft-2-para":"e35039611083cdc915ac67f2b0286dbaf5eeee0f0922735751defea467c9a160","src/text/licenses/Linux-man-pages-copyleft-var":"c067adff08e98a76764b0da5f1c60048d47ebf8649929a846ce70daa7a315bda","src/text/licenses/Lucida-Bitmap-Fonts":"900bf7c17641911394df16877cf751c649d1a1661d87f3e6f81f5bf27e5244f6","src/text/licenses/MIPS":"31258a20be90679cfabeb858f9bd33da57708b4430cfb2ac92d7e65cd4c572ab","src/text/licenses/MIT":"22091f0471aafac462de43e47afa865d161cbdd6a5bf47c6d639a1fb66a8741c","src/text/licenses/MIT-0":"9ea21eba7e2fd6e772c3493a49a4ffa9b5d7c60b3305dfcab785b46ad3ac1f3a","src/text/licenses/MIT-CMU":"016df239d798a629c2c884d424a0b26aa2fa50f6b9ff10733481c9ab36b7bd01","src/text/licenses/MIT-Click":"25073809d8fa293017ac35cfaa4bdba7939ddebdda6bc04843cf1312e1da54a8","src/text/licenses/MIT-Festival":"4f6800aaa035cfe49be85d5edf221effe3f7fa1bde09f17b82d82b1f4b10f45c","src/text/licenses/MIT-Khronos-old":"3d7dff5dfbb7a826fce841145ec8ed119704306a6096c1e227cfbcff7ca3ed26","src/text/licenses/MIT-Modern-Variant":"983a2628e423caea606a0a91eef743f96edca45076dc080296cd313e31377475","src/text/licenses/MIT-Wu":"05ea64795ca79b8df836bbbc19aab3331ba27794650a1fc9b57017c9c26ae5d9","src/text/licenses/MIT-advertising":"f3ae13312402777d9dabb483196c2bfcaadab88b2e339396ede2e4f804abecec","src/text/licenses/MIT-enna":"a2ff6d2140c6456c601bfce9eb2b345cecd949f33ca1288f3d6e518b17003c57","src/text/licenses/MIT-feh":"489eb641e430fadbf5b4d5fbcaf6f46aad574c7c3e58ad4172a82b3de52a6b03","src/text/licenses/MIT-open-group":"2cd5124d93079970e77501927e4d74977bf86926f48b3735d616cb664b906f73","src/text/licenses/MIT-testregex":"6d58d5fe908c8ff485cb32e5ab2e89584d3f2f7cecc795fd2447738e4872acf3","src/text/licenses/MITNFA":"2744ef47d52e5cbce7067714d527ec35b54d170e20d4d2d6ce33e0ef5a92ac6a","src/text/licenses/MMIXware":"a946db60c940577efe2cd1e59b68c07b537be983664b752a5d3da0de39f64d63","src/text/licenses/MPEG-SSG":"17b7590bd283e18e0e8673be75665d14993315465d91fb7ad33f9e5c7d4eb5b2","src/text/licenses/MPL-1.0":"a529687e80d13909ac372e7b0c040cf101e5b0078be38fc782636febbc7cccb1","src/text/licenses/MPL-1.1":"a21e7a0602eaa65d8c68f931c8fef55503e9fa0e3d6594e3d000aaae3413ecc8","src/text/licenses/MPL-2.0":"d1f32f16bf4a7d6e11faae6fcc4b3e4f4d9753deeaf48e0774ed2ac470db10c8","src/text/licenses/MPL-2.0-no-copyleft-exception":"d1f32f16bf4a7d6e11faae6fcc4b3e4f4d9753deeaf48e0774ed2ac470db10c8","src/text/licenses/MS-LPL":"e9fe07f8c59032b248185f257b73bf1a517e3444cdfe5e420bc957dedc1889d0","src/text/licenses/MS-PL":"8cf636a97355caeb7ce042d3359a1d3250d78abe0f73c9eecb473c70f55d5ecb","src/text/licenses/MS-RL":"f6e9d88e50821d159dc03e41ed04d392b2a31bcb061e42ce6cdb030608e4abe2","src/text/licenses/MTLL":"86577859bacfe28fbee3873b343a3018b54ec152ad5ea2232b5437c1ff881199","src/text/licenses/Mackerras-3-Clause":"9599c71cb524c885cc8a904dd2d739674b86059a9d8c5e811a32b5fa75b83173","src/text/licenses/Mackerras-3-Clause-acknowledgment":"5cba085f0911fff064c8f38e4671f2f33e7193d1433ec3d34830f82231acbcf4","src/text/licenses/MakeIndex":"e8fb1ac240f674958f1885d4fea0530117e01013d4b5ea595a682de3e9345c94","src/text/licenses/Martin-Birgmeier":"fe541e4c07ae2665d126309612ff7d23eed6018c3ec27985bd20796410087090","src/text/licenses/McPhee-slideshow":"3a5f7176c2b524f794590c926d9075cf6c862db2691e7cf414b2ffee312eecd2","src/text/licenses/Minpack":"f81f3a4a9578e0069cf847ee5281e2e5d3de2b9d6cf286238626ec378eea1be4","src/text/licenses/MirOS":"c0b1810ec52ec044e8f6f7babf05f8d5dd72f30f9ea7dcd81e95bfd140c5a78d","src/text/licenses/Motosoto":"c1c247ea7f6e9be3d65e11e3146cd98397914eaede0a2f684758c066421546ad","src/text/licenses/MulanPSL-1.0":"2cba65543214c3f822c5038ba9f4a43079130c8de91f72b288bc534ba91d6562","src/text/licenses/MulanPSL-2.0":"08f3f2494ff5f62e812eb57e650e5a30716c99c0f7a52504f9724af603bbce4c","src/text/licenses/Multics":"1fd3963bc7fa7ec24627870041e386f6f488bfd2ced9273b37b6b51dbd3a682d","src/text/licenses/Mup":"ff75cb1f2c762bb608b31f251ed64ab439451d7462773e04dd5f62973dedb456","src/text/licenses/NAIST-2003":"f58795e9d2099d47549a529f6836c52e9ed024ea6281f398af0b2ace016fd4dd","src/text/licenses/NASA-1.3":"57856d7e1781b59f7911692553bdfe7e8a43b9c34d3962881049e7e98df5ea01","src/text/licenses/NBPL-1.0":"ee8f457a8dcdd4fe96746eb37afcce85350ac4bec36ade81d16df6ccebec57a6","src/text/licenses/NCBI-PD":"af5dfcf2c6ae71f1170cc215f6eb33f0c21e4c94b63db9e55e39ac6c9bf3dcf8","src/text/licenses/NCGL-UK-2.0":"42ba150f10f26c5e230dca6b81b02271b0dfb9f43a07e0f6d5956016dedfbffe","src/text/licenses/NCL":"34780bd9ed109dc504587871c2e7585797c3c8ca3d8a460b66826f44e2e01604","src/text/licenses/NCSA":"8b612400725c6240a1da40261c90bf38fe11ada1448f240dcfd284984fc25b38","src/text/licenses/NGPL":"6c39a7ff502531d22b58670a0854514aa1023f85df146f65ea1fe46e0a155dfd","src/text/licenses/NICTA-1.0":"0a27af876dc7c258f7694292afc08f57221b6c601f8e8af1948d88aaf2038676","src/text/licenses/NIST-PD":"4a2f0bdae358cecb7da482b329a56ef0ff56b1ad1fa03545d11731eb6fae8082","src/text/licenses/NIST-PD-fallback":"560a015822e1aa20dab3fd8f87202787feff2fd9dac4dc1907010ffed54b5cab","src/text/licenses/NIST-Software":"292eb1283d6d568221211164436a812563874f20145bf7b8bba6f6bd7558d49b","src/text/licenses/NLOD-1.0":"97dc758de7ef371b60ed44160921c0fc294be98363e1588d40993eada62b7238","src/text/licenses/NLOD-2.0":"6aa380e63530108dec2cfaeaa685d783b5957771ce00d05d9f513920584ae1d1","src/text/licenses/NLPL":"b3b119d4142404593766b2f6e66afdc582e028e44cecbe3e064dc83248da12cb","src/text/licenses/NOSL":"e7bbbbe29b1dcb440a850067af0c43b25b56c0f50f34b082f4a0ff988a5e5d5d","src/text/licenses/NPL-1.0":"1268c395c1530dd02865d1d5120f3daaab6cfb749cacbabe68eda6f94ec8fae9","src/text/licenses/NPL-1.1":"937b9bfc3457f24c147e062cf6897205b1f8a212b5fe01eea9c3d2689521bdbb","src/text/licenses/NPOSL-3.0":"82a7e8d31ebc1a549ccf194985d10d2960c90f1cb1a795b1dbea25c0eaeb5af3","src/text/licenses/NRL":"313b88be88e69b7375bcb259084f244335b187fbfc2719cec5015134d48407a8","src/text/licenses/NTP":"6752cd9b915a90ea7eb2186efde36e0bfd2b19a2bd6137c4355793af4ac55495","src/text/licenses/NTP-0":"e85d674f890677588924ce020f4e4edb52c6fb3e393fb45b7993c0400b5e7980","src/text/licenses/Naumen":"b125dc2fdd86e81bf1a0b2f87ca71c185d55f510d2f2e6b7f7de68faedf41cca","src/text/licenses/Net-SNMP":"da183dd185a42f5f9475129353ec1ff9ee456cff4dbd962fc12c5337ddb65d82","src/text/licenses/NetCDF":"a2f55c50d0b7cfe480d862f66a03b0a77b1e52644feb12b97391bbc54e8caad8","src/text/licenses/Newsletr":"3356f22bf719f35d126fa67500d35eebf2b37324f38a7304fc3d483851c68089","src/text/licenses/Nokia":"9155ef5851955ffac94995006a65b33ed0ef5faff79d0e90874a4931a34ceedc","src/text/licenses/Noweb":"7338330239a3c2ef7266a97a5666dfb6ad8e044e6befe6536b991f9d40358665","src/text/licenses/Nunit":"7a0441a11299d73f0d0bb3da94725c93f721f38644c157033f03f83aad6e467f","src/text/licenses/O-UDA-1.0":"3a86d6685d235d8defc70c430abcc51a2c753f23e8620c44cda0320b069c79a3","src/text/licenses/OAR":"4eb4530591d2a3cda369bbce57a682f4dbb97f15f79da55e7c96b797c6883ef5","src/text/licenses/OCCT-PL":"a84b61340d456f6e5244f801608a17571f0e58d9cf8f0efe20de27b80307a9bf","src/text/licenses/OCLC-2.0":"5fe7e506daa562bbe259a5c0d5fad3d89edc483bed54595f430a14cc08195d6a","src/text/licenses/ODC-By-1.0":"1663343606ccf2a507fe4ddcc0c1d42653bd749f8f6ed94ca31c23effc2ab63c","src/text/licenses/ODbL-1.0":"1e31c2133cda6d0445e98b8ebec52c13a59c7313dc1cfa833dcd12ee13e181bc","src/text/licenses/OFFIS":"a247977b7fa930a200050346c5973b8eb5eaad9ae5e1254683961f5f335e8ba7","src/text/licenses/OFL-1.0":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.0-RFN":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.0-no-RFN":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.1":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OFL-1.1-RFN":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OFL-1.1-no-RFN":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OGC-1.0":"40c04c5b7ab7f7488ba99a1027958117dd8d18ada291308777c61a6a6db50f5a","src/text/licenses/OGDL-Taiwan-1.0":"7db09bc36414d469ff308fe8b70a6ece3655891a8a52890c17ec95eb1d58f663","src/text/licenses/OGL-Canada-2.0":"119b672e363ffa4f98ecd51b82be184b8df334d6bcb29b61627102a5017e7ff2","src/text/licenses/OGL-UK-1.0":"efd7392a2210e0fb22b9b931cdd44f23b5b81a23d41be22696e197b5ed834140","src/text/licenses/OGL-UK-2.0":"4f7c21e386d5d7aa1de9ec436b767598b3bb4eb63af5be59f1f0442d80eab980","src/text/licenses/OGL-UK-3.0":"45beada9164fb98a7b04d88f65fb0ba6f44db95eccc747b54e73ef51a4ad4233","src/text/licenses/OGTSL":"0969904add29eb8b435ed5fe72bb832352c1cf5ec1a42a62cc97169855d7a9a3","src/text/licenses/OLDAP-1.1":"92504abbe0c4ec89e119daabc2d448748bf4b7d4abe283e2d737e94fcac2a416","src/text/licenses/OLDAP-1.2":"1df9089da3fd14a59938b76b627ae98e19422b6e97130c7ae68af37bd8383c37","src/text/licenses/OLDAP-1.3":"61641cb2cda4cfa7d4e6fe9a8695778d90634379a57d7d6695454a920801e297","src/text/licenses/OLDAP-1.4":"15c32740b19f96a90e87cc3a365df34c76b30d0dcf6f17e18808b69623d6ff3c","src/text/licenses/OLDAP-2.0":"3b92d823d098e6367284d875a6b223a9303ff5d18cdd29fac2bcfe4e3f27644c","src/text/licenses/OLDAP-2.0.1":"72d3fbab94ed770db223ca2f5dc3f0700805ea2809c7a0fad92c41107c3bfc32","src/text/licenses/OLDAP-2.1":"7d0daa4be8f9b0097e33a4f00a81f56f25958286dec7174a51c7af37f31d317c","src/text/licenses/OLDAP-2.2":"c3c419c0add6a38ce764cfb6028e418dbff699f70cd385184ea9801483e80ac2","src/text/licenses/OLDAP-2.2.1":"e1df968e3a515dc8b534fdee0beb000e60b03e0aa0a9ecc62139f82049486564","src/text/licenses/OLDAP-2.2.2":"0536a80b67dbb8fcc5871d5239b647cd17d6e70e4efb1b6a60622601897103f8","src/text/licenses/OLDAP-2.3":"8bdb33291a450d9243da17bc29a8b332d086fdce5604f509454838d994bb04c6","src/text/licenses/OLDAP-2.4":"ee220d44cf6a8fc7bcb937004bc6242fbf36ffb004f67118b505149f2b7937ec","src/text/licenses/OLDAP-2.5":"1dbbb42c36af2f350e5b065e18303b34bb2b9eba8a4e97dfc50222160d1e74d9","src/text/licenses/OLDAP-2.6":"35e63abfca5cefb237a53afbeaf617e838a01b1a5899e91b20cde640aba3d46d","src/text/licenses/OLDAP-2.7":"4aeee2ed5158ab1bbdaef019ae242b12b73f616b3bac0ad0f40beeea92c9a081","src/text/licenses/OLDAP-2.8":"594064f2e6fb5ed255656e4493c44691b1bacb9df563bfa1b30e0c2f4449995a","src/text/licenses/OLFL-1.3":"39882c22d0957be6ea2a6e6835f1ac6764a7c3a0ca47ef84cbecb579ccec02ac","src/text/licenses/OML":"d84bd46fbd8d9a45e90c2b636e35b45dbf5878353bb214a69de0e83f1c88932d","src/text/licenses/OPL-1.0":"a09c7fd8625190a115a743a121e1b8383e6c7e30ac93bb5c06db874bb860c8fb","src/text/licenses/OPL-UK-3.0":"b10557f42e24fad83adb4bd155e475a2e8d4235e5d908b042240ebdd1cca8b33","src/text/licenses/OPUBL-1.0":"d4a2dedd96a6bd6818e50bf50f11946355db5dfa4c759c516ea9ef98a34399db","src/text/licenses/OSET-PL-2.1":"38cc3bbb4be4a8e76c632925eb33f0ea02d0077a629a62b16df0b31ef4315b58","src/text/licenses/OSL-1.0":"2fe26aee33e037f43b58c589a4af9b808329aa6145470cd91d1f252b42470117","src/text/licenses/OSL-1.1":"c05b98ba40e353d4451a5d1e96a08d8939421b6e2f51edcfbab38f6ebbb0f02b","src/text/licenses/OSL-2.0":"ae856b4549bfc186474e23f50cd8094d103980c1f8559889e87d42b6ce0255dc","src/text/licenses/OSL-2.1":"d199dabb4aff0be874a5a93ace16f852c3319a075ca07da79e92146186ab66a6","src/text/licenses/OSL-3.0":"81fb606bcdc628cd72040e53460cc6ab836d30f55e50de21fa5cae1f5c158d96","src/text/licenses/OpenPBS-2.3":"648417982aebe3da0478c271c4821bec1ea9a0c5ede8245cf1b3256fbcbe8165","src/text/licenses/OpenSSL":"b52fdcd2da098138edb9423e8ea35766677765763460df487b60fa5050b34251","src/text/licenses/OpenSSL-standalone":"272da7a1a8c47f0e2dc851821db42eb15c03ccd37b939d1e36ff87e4f021fea4","src/text/licenses/OpenVision":"025a9ba45686616eafa7f03e0054fbc2c2e2026a1a4fe12689ff9e9f62cfc931","src/text/licenses/PADL":"8ecd462cc8372df2059ad574603deb4ce08a0b0f525aa768389c8e1f5cbbd782","src/text/licenses/PDDL-1.0":"45ac42bfdb32740e76437c285982e7261849bc529a1cbc346b238cd443141178","src/text/licenses/PHP-3.0":"0a7ea06f9c15ad8fd85a4be404433e39d0594e8bc3ad2fc29d05a4a050d4cd93","src/text/licenses/PHP-3.01":"81cff089cea63f0e6d070be8852cee15bcdd638ba120969963476c4ac0e2e84a","src/text/licenses/PPL":"9302d1999e862dc23de4b57af573e9601a8391cd6e5201869c929884d856db26","src/text/licenses/PSF-2.0":"d67482e5dac1f4528997143ef626c95274fb5857e86fbb3e29fe4cbf66f03160","src/text/licenses/Parity-6.0.0":"0ab9e24c8357439f5a2a29adc3e964e702c20fbd4fed8816b7aa10bfcda6ff6f","src/text/licenses/Parity-7.0.0":"e78cb6d3f8ec65c7a4e2abb8376ec745768fa1e0062c08ab6ab8f54b73b1496c","src/text/licenses/Pixar":"444e56d41b71199edd9fb553d82d76ab178c9c77056f8ad21e49c810e2f513c4","src/text/licenses/Plexus":"fda88c3e5ab0aee121f216ea86a2978872d3117f031ef4d124c05f3ceff798d4","src/text/licenses/PolyForm-Noncommercial-1.0.0":"5b87de44a59160613a93f8ee01c4e14a17fd55f9f3e4c18ffe0382d3285f6961","src/text/licenses/PolyForm-Small-Business-1.0.0":"b137cf32e963d5a3a4e0b6c79047029289808fbbd94da5c6db7af31a7e5b4d44","src/text/licenses/PostgreSQL":"a891f343e90a53a5c621c7036e95558e29f956c3d98fb4086e438d84510f564f","src/text/licenses/Python-2.0":"4fa679f90a6f329e94b37e09449a04e7e815ce79bf773a0c859762160232fadf","src/text/licenses/Python-2.0.1":"58b0c88160862629fb05ec3538083db9cdbff2aa694f3a64a3ff93f19e5bd54f","src/text/licenses/QPL-1.0":"a8d6d5e5841d623e57bff66b0e991844fc3c370285274bcb4d860bb57271c4a9","src/text/licenses/QPL-1.0-INRIA-2004":"63c68392833a2b0fc8fbabcd66c76f20349568d98d2ca8bf4c46ee8cf70e3ef8","src/text/licenses/Qhull":"97f0b70be72c3560ccc049fe46344136b6946855c942bc1c49c85eaf2294273f","src/text/licenses/RHeCos-1.1":"5f5af9523a2db703b52b51634730741e26b9067a73ba11ef1a65323acf1b1123","src/text/licenses/RPL-1.1":"f3405323e28e5cb71721a7038f2eaa154cbdbed38a978397a46a78c15c5d5a38","src/text/licenses/RPL-1.5":"2b649274419972a8eae6e6fbd79d8159113c8384e3b2eda0ee00a6562f440919","src/text/licenses/RPSL-1.0":"b566afc90e6c3363e60861d1f095170262241f72da545fd72b18e2c10ce7be27","src/text/licenses/RSA-MD":"450d1077ede086cc4328805a8fa619d721d7328630c929dc5f139ea3897d7625","src/text/licenses/RSCPL":"3d259d43f57450b9b53a36159af6e75fea73fca49fa6f4320be951b10edbe603","src/text/licenses/Rdisc":"e204dfe53c8f4924fdecc5c6c97338271ca28a5b9e1c1c278d14bf7f96834b93","src/text/licenses/Ruby":"2035767ae06c8d7aa51e6dab2597a2fe87a461c11952b71892732b3bcf7db00f","src/text/licenses/Ruby-pty":"d2ad4c24ff14cf14e687c1d1d8db805aac8b80bdf83ada3ad54209eb6a3656c6","src/text/licenses/SAX-PD":"c4c44a340c46fc8851e3649b017dbc2a08fedf769043124debc3d08d753ab06e","src/text/licenses/SAX-PD-2.0":"e78a9e34f76168c027e29afd153b3c88ac019a94a28a9ea55e30a21cb31c91da","src/text/licenses/SCEA":"d4f58fb03abf4398d76de342097e2650b456658635075b7c077b19ab789db7f0","src/text/licenses/SGI-B-1.0":"c6e68e34d99bfaba315e0674af5d7ffb53f3f52d374f40ad251ffbb3827a7152","src/text/licenses/SGI-B-1.1":"ff51082b02507f809255621656e44b096954684c341f6a4333f71b18d7bff7dc","src/text/licenses/SGI-B-2.0":"7e2c3b20eadada21656edbc248d4665ca8a747d42966566387f0c62fc3b8b16d","src/text/licenses/SGI-OpenGL":"a19b1f72879dd88279ed1d7c727a22f0d09fde52ff13f2f0c6d793df18fb423d","src/text/licenses/SGP4":"a48af91e1992f1c6c99b6be64622ffb8210bbc78bbbd75420a1a91be06810d4e","src/text/licenses/SHL-0.5":"b4a1c3eaa8b770bf82212533d856d75904557b19e4a2b8be2e58c17481d2588c","src/text/licenses/SHL-0.51":"9d9f19a1e1e87185e71b75c5a77b81f926fccc8427897f9112a167cef1830acf","src/text/licenses/SISSL":"e1cb1537b3f7df4a59ba3c5239a5d0da98d7dbccb42ae44dc9e5dd874b071e5a","src/text/licenses/SISSL-1.2":"d71ea6dc86ac74af3b4ef90f65b1e6fb044b70913cba74bcbfa3adc697890fe3","src/text/licenses/SL":"7f4c215a8b6c1edb939caf2607995208e2cb7d03ad40b335fda2e1511252de95","src/text/licenses/SMAIL-GPL":"c0b533ca7f5854f88d2bf4278e31c94765db1397a703074df25fcec5aff9c6dd","src/text/licenses/SMLNJ":"35c0e4e123e18088aee49f7afe5042a27d31c1bf21b6bb2a94f1fbd79c1f0111","src/text/licenses/SMPPL":"40660dcbabac143a0d81ce004f868e207012da6022be2879f080e590949fb0ca","src/text/licenses/SNIA":"f472d233d775c16aca28ebfc72875ca4743660611fe88dd3cd313b74e27bbda6","src/text/licenses/SPL-1.0":"177e82eacb388661fbbe7cf4bc62b1a81bc7deae7aaa6e4d1ff53d4365dd5d44","src/text/licenses/SSH-OpenSSH":"0cad42dcdb06b5b786d96e74fef3aacad9e954050855f33d1b5057c0831db4e9","src/text/licenses/SSH-short":"7f04b8d3b84d677117a0b9b1d1f7b2a63bd5a948c5d66efc12a9ef984f9c1db8","src/text/licenses/SSLeay-standalone":"2de99e636e6d356bef7ab96d0682fe903721a2b80b16271f7eb701a3bcb1ffdd","src/text/licenses/SSPL-1.0":"a781bc910f38c170e993eb6c4653272615af0a4cf6f8389f6b3e427063ccca16","src/text/licenses/SWL":"35f7e72c010c3950fb095bdabee7e2455c553b21d710a87ebad806e706402987","src/text/licenses/Saxpath":"aaea5aa0f3c19770e9b8ecfc6b3acfbaa8d9c736d286d51fd916303edbf391fa","src/text/licenses/SchemeReport":"a2467d004ceaa6e33908c707926746e7f8b9da1320f5ca1b31330374f3972060","src/text/licenses/Sendmail":"12836a800e71125130dbdb221c84cda2790a3f8fb08a42ae0e2cb202d409822c","src/text/licenses/Sendmail-8.23":"abd2cf1a05df0544e30bcc1a50f3383fb5fc338aee99872a217c05c4218b59c9","src/text/licenses/Sendmail-Open-Source-1.1":"7b629e1edb6c9340934d9201df3ec9011f48e1140d2a23232cd4b1fccef81fb4","src/text/licenses/SimPL-2.0":"fee5683eed65ea0cdc99ad04fd4d70bed42a9c15f3c38052a8b84a679380fd52","src/text/licenses/Sleepycat":"26393213c97077b4275914163a3598fae7ddc5e9bc427e36a88dd88bdc3d8c55","src/text/licenses/Soundex":"5081c788d3ea4b0209d3e60f1294fe2e515b07b2171065b9de7af533f5a56dd8","src/text/licenses/Spencer-86":"960ef09a9d58af3bf8be6a01d8311008e257560f7f395944bcc32e46c89ca723","src/text/licenses/Spencer-94":"dc7bce8715fd48ceab0b64c093a1953512bd1778297ba6cbbb30518c9bfc493c","src/text/licenses/Spencer-99":"df9a1efcb970719c5a325afc6ada9ebeb1a43aa0d7ef2b0a137cd050132ca0dd","src/text/licenses/StandardML-NJ":"3a2672908aeddf1891aac8c21c0db820b9c8ce2c94a10612523d58bdc636c1fd","src/text/licenses/SugarCRM-1.1.3":"56995526446bef6d1c134f23acb10445ca565bc7ea2ef4bc3e19f2db141712f0","src/text/licenses/Sun-PPP":"31422997f40b2f0d6f0bc48ee9c1c0edd89e88b64408ce03fc987e351415e7b1","src/text/licenses/Sun-PPP-2000":"5652d77b66ae215c07d35f30a91913dcbe994af4ccb930f78e4db1d9d7f9e43e","src/text/licenses/SunPro":"065468c166942235f26b40f1c4acdc18ceed314e5f2883edad2a3b0ba1dffcde","src/text/licenses/Symlinks":"26f49156b0aaa5c2a8aa4a73e1c73df78e190868f67879d00d02a0737b629bb5","src/text/licenses/TAPR-OHL-1.0":"9249cf28c7648899be179534cf29f6d80e245c0e14cfb2138b1fe12c39ada059","src/text/licenses/TCL":"bc6b78c00d46067caedaedc7189a85cee89371abc2655f2c047cf95e9a1a75e3","src/text/licenses/TCP-wrappers":"9cb6fe0ec3e222da0c53e6eb656a68e02ee5d13cac19f17092deb9aa77e0aa84","src/text/licenses/TGPPL-1.0":"5ae6a4a14d4940e7de53cdbd2aa8fdd73e0b0c44ade2e3d93719c014d87422e0","src/text/licenses/TMate":"17e193a1da923d671f94fcb51f15e33578bef279e9ae0387e134750e48a253a1","src/text/licenses/TORQUE-1.1":"20392d661c4dbbb99e9e7f5cf5ecc2a2773c3824547dac90cf81db99599a6c13","src/text/licenses/TOSL":"aa58c3e9ec54bca823c61b495ce2df43fc35c9cd011733916686979331c36317","src/text/licenses/TPDL":"52e46f59ccfbb400d3d6707128a6b68a35974cf49c50509f950698476117cd80","src/text/licenses/TPL-1.0":"4dd1b423fe602dff87d6de6726f1c6592a03d2a26df2cf78fda10fc5363c87a4","src/text/licenses/TTWL":"71a20b9fc009fff5f421b9788f5c42ecb3c61f1d4293f5f538c90895212dfa69","src/text/licenses/TTYP0":"ebed58fc95446746921ac2b7d2c9d738fb0838af1dc67e1297c2d887ab0ad980","src/text/licenses/TU-Berlin-1.0":"3d9a5d0fe3f57171854cb9f71ab53471a56cbebf199546f2247c9c6e72c13608","src/text/licenses/TU-Berlin-2.0":"564f08250c3d7b6e6abb36065a6459a7e1c73515e7f09f8cb197ce10ae0fc9aa","src/text/licenses/TermReadKey":"edc4ca48f2e9d5251b59ead37e4aa08f5ffcfd30c3f9ee54f8f41fd1de829255","src/text/licenses/ThirdEye":"ee052eaf53a91a78caa5c87fe9ef649a52b8ec5e0c2ee5499116d9d0d8ea0b64","src/text/licenses/TrustedQSL":"383caa7ddde9e2138526ad6926e86ab2b16ae66ac591dbd29c73b1dc0a5f6923","src/text/licenses/UCAR":"7843c47b011a9b621cf17e3c1f70cd759baf02669dd81a3a5969c16d1d80f770","src/text/licenses/UCL-1.0":"5320e0109a36a6a032f4b483c5fcbfe9382e28431e45606ef90bc688d38bc849","src/text/licenses/UMich-Merit":"b8f3dfdb6c8da1c2309792fe3b1f1c5a51b8a42d4cb0570a3ff3ade71d2b5259","src/text/licenses/UPL-1.0":"232341243b15140bbeb6115f662c433c3435ad46ee6ab4f2ec879dfbfb177f60","src/text/licenses/URT-RLE":"8d142f8178117a888c6869bdcacc9607035b3e86a1b4f1369ae1203963bf6e9b","src/text/licenses/Ubuntu-font-1.0":"a9f466ee2e78891d6ee274b3da9c1567d909ec329104f3fdde43bb27186cbce7","src/text/licenses/Unicode-3.0":"5f0e74cb9608305b00f3ffcb2363d93305950b35cd35e435ae078c21d63a5e35","src/text/licenses/Unicode-DFS-2015":"3a52e39d8139f2fe7a78828755005621cc137a0f94ba1bbf8f7a45f73604b896","src/text/licenses/Unicode-DFS-2016":"908a701c33bc8102c7844ea9f3cba72002bf87cde1a7055bc59b1b8c9cd4d2ae","src/text/licenses/Unicode-TOU":"c5139e0802344660f99a2f0a00d97db57ab7d4fc6d76e1acffccbdb1a7003aa4","src/text/licenses/UnixCrypt":"377a20717038750919f218aa095257c46caa2731ee25af1c348ee66c1d7c7583","src/text/licenses/Unlicense":"bfc894afd754c14520be9c3ae14a959464f6a083c041d655564e31871cc2c320","src/text/licenses/VOSTROM":"5611c9f0a82db6c0d4a63346cc4c2798bcf150088c69aa0f7271271d9956ad5d","src/text/licenses/VSL-1.0":"8ddfa0ad2780d0f09ba890a577a8ed901ae41dea9fad97d663f4844eaca11987","src/text/licenses/Vim":"5e15a353f6b0db0c3521d2c8a7f1935f60ed96ecb0ab6947950eb472ed9209f9","src/text/licenses/W3C":"1a7b8aef68d6eadb2462dbf1bfde237f30df8b46c24c73a3979c715aa38f0e00","src/text/licenses/W3C-19980720":"02925d93137632c94b769a15fde33858fcce724dd7b6545c499719238714620a","src/text/licenses/W3C-20150513":"ab6f092e9e9659bcb30bea39334399ec4c15731cfc108e7ba8828e928ee459f9","src/text/licenses/WTFPL":"43bd14d4561d06e479d9e1973ddd1444b3d8297e6a439e673be489e8fd7890f7","src/text/licenses/Watcom-1.0":"f13551b01cb75628dce10ea306cd647712f0673a13b2829b056d7b03951f89ef","src/text/licenses/Widget-Workshop":"daf2e3a2c214388d66c86dc7a3c46d28e667d595942ed5b557a30e8351e493fa","src/text/licenses/Wsuipa":"92c1777c46ecd27148c349b61fb04939f306b72bcfd3bc08a5bb3f3fd726ab72","src/text/licenses/X11":"7f7361ec093d431e7c40f1f7ea1017c3dc6ad4ae9053f572d44b8e70a2fc3136","src/text/licenses/X11-distribute-modifications-variant":"f0e5a56b5994599f788301f30e51eacf36f7fa14fafd3c416deee1c79083d71e","src/text/licenses/X11-swapped":"cbff2270e7e495a0ac1ce0a555dbc0417c7ee36ba12b06f61e8378fb37aac686","src/text/licenses/XFree86-1.1":"706ae26e7460492fac9ab8192f2f2d9de25bbe73627531722d5e327a1f10d46e","src/text/licenses/XSkat":"1107e79eb58c1696aed5d0182509df093822d02493c5a607ccc1f48da78dd879","src/text/licenses/Xdebug-1.03":"cf58deab9857cd12000ee3efbcade234903e9c07688fabeacedf25be3c3cf04d","src/text/licenses/Xerox":"489d9c7efeecb5b37c7147c565a847b7cbdeb84f79a1c2824955a76d47b6de0b","src/text/licenses/Xfig":"b3bb218701f3fb2d31710ac6f80da42f3cbf4904947512a43c63f4207852d717","src/text/licenses/Xnet":"9dccc3b9b95647cd740c2ee398f5435efc8cffc0f86b62f39f1c7a3c94550ce0","src/text/licenses/YPL-1.0":"7a0aa985fcb4f2d200cd188fb46276812f73e1fb1ef763970bb8cb97fe886e7b","src/text/licenses/YPL-1.1":"117b2b4c1adc16fa8f5c3107fc3397c52bd01f951e7ae040a1421c2643c73118","src/text/licenses/ZPL-1.1":"83ff66168f5be6c0f99e01e7293b67a0e11e4334955d5eb0507f5756b85176e1","src/text/licenses/ZPL-2.0":"1231ca0cde7c0d12d8ac85140f2380ead734a7de969c01943532b6155f658135","src/text/licenses/ZPL-2.1":"da1414ab888ca8a9899a5e7f83d6b4ef192057a24f9e88139bd0a32d2449b6c3","src/text/licenses/Zed":"db26e41c8ac287779a7e74577fe2cf53f9664d516a200b4ba53b2a81d1be7c51","src/text/licenses/Zeeff":"8127c5006fd031555c6efaf555af1b5d76cb7bc087c0192f9b56ef21b34bf6a9","src/text/licenses/Zend-2.0":"71f045b5074cf8dcdc91a09cee22b25a8704e3d56bfbe115c8f142b6657bc201","src/text/licenses/Zimbra-1.3":"c8c8af63d2f2a014bdad1409d18ed6f9607b6d7cf9ced0c3ae0af1ccfcffcbac","src/text/licenses/Zimbra-1.4":"13cca63ac9514cfbf14dfdf0cbcdc326773ade96fada688d01fa6c8a5920d0b3","src/text/licenses/Zlib":"8b682b616d2043852e55295b262b4b11e261a6e297d8d9aa89357a8082fce9e8","src/text/licenses/any-OSI":"fefdcc788cfd9fa0fddef25a7789a807802eb07b16783395f0e581989c25e2f4","src/text/licenses/any-OSI-perl-modules":"52d425bab2aab99f82f961a4117daca884967594560ce1e6a3b30f4aab4c5839","src/text/licenses/bcrypt-Solar-Designer":"a28ba992641a04363ccdf1c546ab4d149a607b7f9e411dea42a85686477b9110","src/text/licenses/blessing":"e3c609c89761985de2b89c88247f5b2efe4cc6512b2312575391457219b33f55","src/text/licenses/bzip2-1.0.5":"9da69b5fa2ca8985031df9c37de8257a71a03e220783d910deda7a7e06aa3525","src/text/licenses/bzip2-1.0.6":"0958f6d0e5e711450bbaf8a196f8db5cea0a4abccca7f282f270ffd18e70b7c8","src/text/licenses/check-cvs":"c229cb28eb826059e35527aa5d5ea6c24ee7a4dec5dedd71e9d7877e90df22ef","src/text/licenses/checkmk":"fb3cc74bcac1476b863dd79f9bb9f3385a3b8a782fcdf6bf9d6792bc63f7af08","src/text/licenses/copyleft-next-0.3.0":"315ecf001c5499a1157c5c031bddd3982a5cf13a2eb8b60277401342192975d7","src/text/licenses/copyleft-next-0.3.1":"22d5bae7579a8e404060110a01a57196960b8071035223bc1744f515f07c9e3d","src/text/licenses/curl":"01a77e446e3bfd0e877f37719779cd8e4b7d70c2bf7510dd680629a0f20d375b","src/text/licenses/cve-tou":"3bc7feaa15ace4caa3b96b41c447fff8d42588d602b423e36444448f3da48988","src/text/licenses/diffmark":"1227d3f80fae8346e9951d119109be46cd3de24550f8a1ad68fda4fba99df8c5","src/text/licenses/dtoa":"a504e699d2ab925ff89caa2434dcdb134a5bb949a44b756c843c40ed340dac44","src/text/licenses/dvipdfm":"e274d186874d8cf4cfaa5084e33d841127897af75b52a22d24e436cbffaa687b","src/text/licenses/eCos-2.0":"eac19c30ef10e301d7827a24c35b6c9e550ad01deeca89e2c263b6feaf8a00b8","src/text/licenses/eGenix":"5f66889418ee2e479d5af92ad50b8dda4c263bab23534686d9b2ef37a65ad9f5","src/text/licenses/etalab-2.0":"723f79c0bdee9dfa003ee342d5ae8e305780f7d112876a4012b09605a42740c2","src/text/licenses/fwlw":"db6d2cbfc0b930e7a4e350ad017c445768c8bb51731bcbda40e676fa3e725e34","src/text/licenses/gSOAP-1.3b":"22047c5ff710d8c11d72cd6c17a2174203b6fa5313b99234f4948d5d2957e9fa","src/text/licenses/generic-xts":"873f3d28714387797016b56737ad61e9426b9d0fcd65da68b86312f6a943e4fd","src/text/licenses/gnuplot":"bd14706d0657bd227fccf72f9c4563b4e8da643aa44b2f8b713ebc262f52ed5c","src/text/licenses/gtkbook":"81cc2b1b1f299fe342341609bbca6bbcb0bc716e0a4bd7dce446530cc66e3a6b","src/text/licenses/hdparm":"6f17d515c7efa8825c55fd8ea438b0d5415c89c7315ed5f491c3b4b11e860c3c","src/text/licenses/iMatix":"e3c843ac6145c54566392729fcb8afa7936a84271ae73f4b5a17138e684c2524","src/text/licenses/libpng-2.0":"4149e2a41ac1187a3c188bcce1d581d995357a4719ee9e64a66778a0749795a8","src/text/licenses/libselinux-1.0":"1b977c77e0e0b1ae3c01402fc7b95820af1d3623a53e3a93f650024271f1842d","src/text/licenses/libtiff":"4eaed6fd03111365e55905c518b260b139c241d58b657ed1a6039d855f2ae0fc","src/text/licenses/libutil-David-Nugent":"595c294a1b5c973b6992dc9aafc415e710ecc10c2ff163981e318ed2985fdda1","src/text/licenses/lsof":"a95a606dafcf4ed5f8334a53b9b67e1db508b24503c3926aad3287ced49e821f","src/text/licenses/magaz":"57d33894b50a45f87a1e82cb4ad9249cfaa5ed8c6b58575099de6092e033ec04","src/text/licenses/mailprio":"9e242d276c2b952dd2e0eaa411afae480cb9cbd33487c0bf4241dd08a099ee61","src/text/licenses/metamail":"74bfc2d97a489078f955c46c1df97f27f38cb367b99c0c122424507c947df21c","src/text/licenses/mpi-permissive":"fc63093a40f452d9b2bd6bd69320ef31a646f9134698548b7ebb26f074637508","src/text/licenses/mpich2":"5f05d56ed7d04fb7f5c8eb3a0555b4246dd240a76abb65cf93ff122474ac73b2","src/text/licenses/mplus":"c1a2d13f201753ef98e8c8b6f6f86740699c38305a539627eb25906952ad69c8","src/text/licenses/pkgconf":"fc792f59c641ea4033bd06ca2ef0cd034531545120a088aa61f9dd987b95bb5a","src/text/licenses/pnmstitch":"c728aecc598193678c2ad888b85060523f3fbcc76ec7003f3705ffebaa502267","src/text/licenses/psfrag":"6f59521c701c5702a4949494da2800b315b7780361d6d670f9364eb8b3a5d541","src/text/licenses/psutils":"5ea4df4d6be054108d8274a94717f949cbba1347da0875e5d33601915e17778e","src/text/licenses/python-ldap":"3a5d2d3e26921c5527ff39490b37369e3930794f58276d5337917cb7099e8b70","src/text/licenses/radvd":"f205fa3cb2a90a5c79e81bae9df8bffcafa1a09b861a927d6fa8738fa3cb7e22","src/text/licenses/snprintf":"e98d1f943a3731125e8f843fd446173a745ae4ee1f1ddd09a698874ba6d91ba5","src/text/licenses/softSurfer":"33a694ddfb0d457a0b124c5f5cc80b3e5847004e97ac30187564fffa7f8539fb","src/text/licenses/ssh-keyscan":"3007497cf3be7dce24caa154226c43263d8924b8a54c162bd2f856d68a040b7f","src/text/licenses/swrule":"88de1b8665028a2937b6608b4e9a7ec6ba83d0efc4af9040625466b02fe8f9cd","src/text/licenses/threeparttable":"790508924cd0da3b16258eb56d1b01e831738304628227d7b5c1b7e123cbb6b3","src/text/licenses/ulem":"405ccde8751334aa0a283cc874d5408aa3f8c3666f87eb2eda58ec311a1554b9","src/text/licenses/w3m":"3992b8d032797088d038335adc2086b0759f03963cbf5e38f2b32adcff51dae3","src/text/licenses/wwl":"71bf92f19b17938817df8b90bea0daca55165257b07d45ec15b84ef0fa5302c3","src/text/licenses/wxWindows":"7babf8acec1830daf2da190b5c1605bcf40bc991d7f48d42fa805a59b3141c1a","src/text/licenses/xinetd":"c136c175ea35cc75083c9c78dae1a80659fb7c4843a4a1bd4c57af3957c2fd4d","src/text/licenses/xkeyboard-config-Zinoviev":"bcc1176eb9c8cb6d5cb25922afdc98e2901d9c7b5195769a97b3ae8641c3425c","src/text/licenses/xlock":"4e12ed1b776c0d9ce26e001b7dc0249c6fbbc5a3de30c760e5dfafe7a08c7191","src/text/licenses/xpp":"35fe38c33b1f23a991a1e20e8273c2aa8927fb281c02322e8c01411fc22ce86b","src/text/licenses/xzoom":"01ff7f8738c716722eaa3d8c21c6bee6684e5fe720b3fa05dc516d00cc22d673","src/text/licenses/zlib-acknowledgement":"701aefec0795eadb70bcf26757ebd6b8b9d4494242bfa3cb72a0d1996e366569"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7fe54e02de86603fed2d5ecdf7a1bcec0f709439a4e11db03d0fc746fb74f032","Android.bp":"abf185910c8c55bac1d74929330f308def9737f5e19082ea4c02f8cdb16bc381","Cargo.toml":"7707377b0e7c9cb704f9023cd841e050e795edbecffd587d26f483909968fb5d","LICENSE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","LICENSE-APACHE":"7722225cffb95a2612191ba6d6f48aa4e3a2ee4da76baf32013d207b3c39f711","METADATA":"22ce202098102ddb44bd78e49aed8a296a5fb8f85fa5b2c5eb21fdc0ac02b186","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37787fbf3b05e4028c6bceadfc4f2f3141bc19eec84b45346699c70e0399b674","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/error.rs":"3fac771e180fd9ee3bb23f6e9f7c34e647836a8555a03f82bee5a05e5e913746","src/expression.rs":"cf56fb547e34df9b5d3ce6b2d3e286bb0b03cf790ac392bef3b4632f2971ca6d","src/expression/minimize.rs":"f725cc2be5fdafb238a0513f31ac476f79e5cd44235b5c11fa811da955821171","src/expression/parser.rs":"704582a9f2880eb0a7d6556324b44d03e0696bb7b350141cb60ca89c938bd35e","src/identifiers.rs":"d75369dd566dd1e35c71f29761df7cc0c9a30672962d21ea03ddb4f77e581071","src/lexer.rs":"3528c95760e140ad8edafaa48bf1bfde4e38f1ac242aac03f49b59d89573d488","src/lib.rs":"a29ab0bb8d1e77784b002cb68816d85c2c05835526021f294bf2510a2ef0a7f8","src/licensee.rs":"c5968cdcc63e8ac4c2d824ab80e1434d25783fbfcea17f673277e9d01d4caf2d","src/text.rs":"2f91657c1e583dd7e59af1d4c42847e2ed123cc5513cbb2f3529de2c7e680536","src/text/exceptions/389-exception":"bf7574421003439e3d0851b25fec723b130fe2700bbb32939914d4a04eea29f4","src/text/exceptions/Asterisk-exception":"ab92e85af9d90f3e27c4eeeeb4812a65f55ccf929a50b5858ff09b85e03b2557","src/text/exceptions/Asterisk-linking-protocols-exception":"c82d5d273c3d89e9a881790a44e4a7b4b8bc496924a9c360fd65085cee2530c8","src/text/exceptions/Autoconf-exception-2.0":"ebd9ef2cd78784be79c513eef9f455dd4d19ef02dbe0b98258d10394c4185fbd","src/text/exceptions/Autoconf-exception-3.0":"4ea55b21d80dc89c6f6400666ea686f4054a883e000db67ed4581d323b8bfc98","src/text/exceptions/Autoconf-exception-generic":"096373f37ab7cae8c8e3f7abc5d8ea2a58294d3279d850273482a7afed439c15","src/text/exceptions/Autoconf-exception-generic-3.0":"2e126eb295630052afb0da5a2e6c308fdede42313e29c7afca8a37be95937a07","src/text/exceptions/Autoconf-exception-macro":"5369ec35d70c2f0adc2a052f840f02a43195d4f9321b792ae94d8c68d4abcf59","src/text/exceptions/Bison-exception-1.24":"ea529c26191d45d6b63b8052549cf6efe88960770900c580803b843e302d76e4","src/text/exceptions/Bison-exception-2.2":"47fc8a2301b4fa513c23155350b0e9c6dc495d11d4ff89ce6d0835db014b2537","src/text/exceptions/Bootloader-exception":"d7aa079ddf6a9be9121645157421202384056b5f756ef7756b31b0508e0344da","src/text/exceptions/CGAL-linking-exception":"8a8526dab14db205de52d20bfb1a430202205004e32b3d068b75078e53d25aed","src/text/exceptions/CLISP-exception-2.0":"135888f53f10b97e3380f5570a836e2f576766f51f48c70a745c8faa1951c414","src/text/exceptions/Classpath-exception-2.0":"e02df194da0e60d652e9481be79e1ca0d980404175a71cb901d99b26d3811663","src/text/exceptions/DigiRule-FOSS-exception":"2518e3ecae365c8d7fae3ee2c47cde7adf4fad3db87e6fdcfa1f459f7f0c05f5","src/text/exceptions/FLTK-exception":"07ca0e3a728183796912d8338d331e3e3c8a590bf6cdc3d5c7fffa1fa2a79622","src/text/exceptions/Fawkes-Runtime-exception":"57eae76289fce038e77b91a134d5f64c743a2e008aa03c583b08a522bf71fc40","src/text/exceptions/Font-exception-2.0":"accb8941ac7addd24937942133623a0e684f2493d688cd50db9971720f61d8e2","src/text/exceptions/GCC-exception-2.0":"d9e948223e731546a00da93b0962121876eb1220601161aef9a79ca42b93fc4a","src/text/exceptions/GCC-exception-2.0-note":"f3ec96d38dfab3b57abcd8bdf7b42e9fa21a37ed666a567ff0884c1769c8f77a","src/text/exceptions/GCC-exception-3.1":"17f95f0932427f5eb5c9ed556dff91865b2ed3512348aef938991e9298e7ef67","src/text/exceptions/GNAT-exception":"258abfa79a25bb389250d274a27123c449e047bd0b5e1c5057feab70fc8a56b7","src/text/exceptions/GNOME-examples-exception":"fb3f197e4b6eb600df18e3cd520508e9df0be9e098cf791d00e7f917765e4d39","src/text/exceptions/GNU-compiler-exception":"643256cc20d26af184dc7f114b09fcea2b26e08398a83d809bbe0b4e080d2954","src/text/exceptions/GPL-3.0-389-ds-base-exception":"57fcbc034398b4c4213456b3d80f93b5fbfe262a43306f3566e139fe8337789c","src/text/exceptions/GPL-3.0-interface-exception":"819336a9767ceaf0e51c43e6db77ddf92c4c2fdb1d6f07b2091e3fd2489dbb18","src/text/exceptions/GPL-3.0-linking-exception":"c061ea2e6ab9e9e9cf60740a2a59daa3fdece446820e091a88ed86a9b6272afd","src/text/exceptions/GPL-3.0-linking-source-exception":"0453e2dc1ea67e5b057b8e769f4562734b014a4a2ef4f2b67b6f555714393830","src/text/exceptions/GPL-CC-1.0":"7134e2b366acd84e30863b000e1bf9eb2d382ccda9a1ccb9242f61ad7d115f7b","src/text/exceptions/GStreamer-exception-2005":"e04ce49ba686fcfc8a88907fba9ee0487c2d7cf26d2286897972d27a599af1aa","src/text/exceptions/GStreamer-exception-2008":"897ba7e2438ea1072ccf272a807749f1ba3bcfab26ad744020a425aa3e1bcba7","src/text/exceptions/Gmsh-exception":"1c5fb8c4b71004433b2e99a263d401d53574084e309920f913745a04f9929c2f","src/text/exceptions/Independent-modules-exception":"caaca913dde9a84dd6ac80e5cf4fc2421f6a1c588129ad19d6c4da03f597679f","src/text/exceptions/KiCad-libraries-exception":"a82fe8dfce5dc5e9c18948d0ea5179bde1cc4b2ea587f385fad36755060f59be","src/text/exceptions/LGPL-3.0-linking-exception":"02ef072e1e301fc750cebf443fb42395519c0e4767e787642c07c0ce36f23797","src/text/exceptions/LLGPL":"ac436290ff60111e22523ddaaef6b540d1413b72ad0631adf2a3d024c561c722","src/text/exceptions/LLVM-exception":"c11feee845cb3c59806452427cdc301d74b5cdc4847762e2eef6fdd36eaa4bb2","src/text/exceptions/LZMA-exception":"148e6359b96c5030e9f9b986a34d854d78fb94cede099beed5f69cab3909af97","src/text/exceptions/Libtool-exception":"071717205b01416d9dc01b2eb0b8bc33d51e42d203832241359b284a899451e5","src/text/exceptions/Linux-syscall-note":"1c075a4522d84c752af9c3121ee36832607f23e7a9a4329d6ad17493050cdb62","src/text/exceptions/Nokia-Qt-exception-1.1":"66a344633f2cf0535de4e07529b631386925ace7b1a39be058b88896cfae93b6","src/text/exceptions/OCCT-exception-1.0":"8c571698fa5678927e4e37a647d023d580994a80149efd1c0035a1d3ffb659f2","src/text/exceptions/OCaml-LGPL-linking-exception":"6fd2cd6c151d227f567d749c4753739dc3d2c76fa55b4697bda3feae4ad64763","src/text/exceptions/OpenJDK-assembly-exception-1.0":"19a15d3ef60715555aeb1fc544ddafb235e34efeb5dd07f407c1577fe5d3de61","src/text/exceptions/PCRE2-exception":"3dc41b925ba4a61a4cb060effaffe97e782f9e50e0b23f5521f6250dca048eb4","src/text/exceptions/PS-or-PDF-font-exception-20170817":"a175ad206db6e84e9c26ed76c11c8c8867a40f135a993fa83b48499f7b910137","src/text/exceptions/QPL-1.0-INRIA-2004-exception":"aa1b1ac51152dddf4e18a62588f86a5ecbc8d630d60116b780b4ed6c689cfd85","src/text/exceptions/Qt-GPL-exception-1.0":"5113b422ea70d4c739016ca149864d4575f56047864ca261f02859d066366439","src/text/exceptions/Qt-LGPL-exception-1.1":"cad4e6c40490d67525d4986dc7106ad9a1e9bac52fc856d4e600e4b5631364ee","src/text/exceptions/Qwt-exception-1.0":"7626b13ac866490bcb27e11a1329872ace4a99b9b3953f3e157a4e874fafa984","src/text/exceptions/RRDtool-FLOSS-exception-2.0":"4fe69f35c5bb32ce8a425842db82a4c6462939626cfba761cac8e50bdfcfe59a","src/text/exceptions/SANE-exception":"d1d14202e5f0afb8f0acebd781165b612b32dc3677de09206bb506b7e398b98a","src/text/exceptions/SHL-2.0":"40f123956187f25262db1233e493850f3d5bd29c24d367cb8f4d7fb503876052","src/text/exceptions/SHL-2.1":"ad1df74fbc60b20adc4899cd4ba7e367e1f048acc79e92564a78ff950b81e167","src/text/exceptions/SWI-exception":"5b192f43ff7a22fe7d39450afbf5e19bb946e54bef174ea97e614025204647c2","src/text/exceptions/Swift-exception":"0191a2497b3d86c7968348cdfbb616598ed48c8513c7917e028e8989f7e955c1","src/text/exceptions/Texinfo-exception":"1074b46425e865677f14f216c393746404cc0116dbf629fa6efacad77ab2ecb7","src/text/exceptions/UBDL-exception":"bfb9a0bbdb82d8b4d09adb9cc33e57df73bef0287814a2be9821900ab37573b0","src/text/exceptions/Universal-FOSS-exception-1.0":"782ead80680fbd84aa9f1885984b00834cab40954842137314a530d73e829ba1","src/text/exceptions/WxWindows-exception-3.1":"af0898cb4314f343a19963c23744cb4833214f812a6eb1c922e4930d3014a45b","src/text/exceptions/cryptsetup-OpenSSL-exception":"9b4f591031f891bfd0c86908085daa4ecc6d453806359ad370d921a84301527c","src/text/exceptions/eCos-exception-2.0":"3ba5d5eef166484a2d0dd5b9464bda7d064fb61266653d056860eae1f6611d9a","src/text/exceptions/erlang-otp-linking-exception":"cee60f5bad8eee40a98cd661b3ad413930adec0df44158f3f033ebcebbb91cc6","src/text/exceptions/fmt-exception":"ec04b60e0787b2d39c244d317a7bba03dbad0b604c3f1941889a38e6544932dc","src/text/exceptions/freertos-exception-2.0":"fc05c3625cb85ea253fb2c0e8917efab5d15d71fe56cd224484f5df45c4f4b13","src/text/exceptions/gnu-javamail-exception":"aa2201e5ea166cef99984b59b757cf017b3d5c18feb70fc94f4d34c32984c77f","src/text/exceptions/harbour-exception":"e7fe0e8fcee7ab96a8d55a9f1735c1de7ffbf900cc70de9fe42241d233744e51","src/text/exceptions/i2p-gpl-java-exception":"0876da5a8f91947a54dd5f1b44f3b2357f421bf0ffee150de25bc8dc01d8df7e","src/text/exceptions/libpri-OpenH323-exception":"c26c088b0068dc5e1a7951c422c46ac334eb4a6e47f22fecdc435ef86ece27b0","src/text/exceptions/mif-exception":"2f3dd782f915a7d3fce9772a18f2b3fa79773a1420b8d6fbaff0dd6288c29450","src/text/exceptions/mxml-exception":"3a9475b502a3bfcb08c03979810a8ba06042f77a8e4d993cfbb3291e78f29151","src/text/exceptions/openvpn-openssl-exception":"ce3c6ad009f37532ebe9d10d53abb3c3bb23f8519406f36ef0aaf7d3b54fe0d1","src/text/exceptions/romic-exception":"17e8c318d0b5de1cc77f3b9fd5e19759c4b84da0545aff9c963f34ff49533e3f","src/text/exceptions/stunnel-exception":"1b81bf4a5ce2a03aef7653f9ce837ed818de0f12e3631969de8f9a58d86f1173","src/text/exceptions/u-boot-exception-2.0":"b08d9f9a9edf1e957fd4d5ad5e9961dbc6e8b2e89bdc4fa192115d8ce35baa89","src/text/exceptions/vsftpd-openssl-exception":"b27aea7f70f94320f82e42596fe9903aa3bdc3f17062f0357e883e2bbf9994fb","src/text/exceptions/x11vnc-openssl-exception":"99621917f5dfc469c4021fe155588e5147c057e27b31e490e519af443c92c723","src/text/licenses/0BSD":"bf81e56656013cdfb3cd5e5a2fcec81d3e32f7ff4aaa208d49a5f1a3e4661029","src/text/licenses/3D-Slicer-1.0":"18cf9307955cabe47726ca11a8f7dc4e141cb8c8b36a7bf20a8a60da0e00cacd","src/text/licenses/AAL":"ca0d73f2b63baad7d1d96a09c9c8b5e77b9e91804370773d236e3c7766c5f02b","src/text/licenses/ADSL":"e186bf79354a59a7465f7180613630085c1716b6f97c1652ae54fa9571a61a8f","src/text/licenses/AFL-1.1":"108193e9cc4a3ac3f2aaedb2653abf0016bbe70eb519312de5887148324d68fa","src/text/licenses/AFL-1.2":"491fe765acf6fd48c93925249c14319f6838f3300812c5c099b5260a9b3f666f","src/text/licenses/AFL-2.0":"8269f88be3fec5e18f33dd3e8ab7ef9ddb8c12fae895c712c6b4d5520386fcf5","src/text/licenses/AFL-2.1":"7bbfad8fac7c71b6668b2b7475e4f06666f14d4512377d0152fde846ff985b0d","src/text/licenses/AFL-3.0":"68aa6df96f8b81057e67fbd229b968347f2a95f4b3a510dc73f2d2175fc53214","src/text/licenses/AGPL-1.0":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-1.0-only":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-1.0-or-later":"ea77b9e5cc289d433c2c824a2ef23e3367725d1dc68f6f1bcf3cb18290b755d6","src/text/licenses/AGPL-3.0":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AGPL-3.0-only":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AGPL-3.0-or-later":"910411882d3af4c239da54951a57565c7b14ab98ef2ec0c5d08d8d381f20920a","src/text/licenses/AMD-newlib":"6501d61513ac0f694534597a3c681df79b3cb75f58a0aa6d53ec5f2ba9e31572","src/text/licenses/AMDPLPA":"a10c016454118490535c5afb3b2dc4b176cbcc31e1fd768beabd0a1220044a36","src/text/licenses/AML":"8a9d78f0f50495c4575291bfba26f132f8f3bc0c109eafe28853d900b1690eb4","src/text/licenses/AML-glslang":"3b831219a83a4eb9f8dbca13ed47f4599c2c744921777f6e9623fc9ba4953078","src/text/licenses/AMPAS":"c865a905dc40259bbe78c0b446be8ad47d4f97ec905f05ac26710c67b22e30c4","src/text/licenses/ANTLR-PD":"beeaef8152c59e2e5e670c1dcd72d9c1a6e72e876f819af55a01edaced3e31b9","src/text/licenses/ANTLR-PD-fallback":"684132fba805a7e4034977ca7d67e8c482cf6ab3a794b8ab2380bb3d8bad8196","src/text/licenses/APAFML":"4fbe161606da0cd748cdb33e69ca560e96c886172b022a6d8321dde8ac40e6b4","src/text/licenses/APL-1.0":"d7d0bae33041fe85d221747a93144755845a9ee7bf390cca4695adfcd33b7f4c","src/text/licenses/APSL-1.0":"714efc25a55197b52b73c14f3f214c93350fa51809c748f2ee38f566fefa324a","src/text/licenses/APSL-1.1":"ffda3a2e25f34916a63d32539516d70c5674eba6c7211c6daf76692ed4c33bea","src/text/licenses/APSL-1.2":"bff68b6bc2e8bcace58300ad75cd1f7a587152e5876cf24b47e47d9c99febe3c","src/text/licenses/APSL-2.0":"543a04e3a3bf032900b157dad24b34b606835d3cc7452b3bc645493a2d02c6c3","src/text/licenses/ASWF-Digital-Assets-1.0":"ab4fc16c63de107f87c908264664b9c26bb521cf927c390369ed306a2677c641","src/text/licenses/ASWF-Digital-Assets-1.1":"c7dd8520cf191d5e3ba55613d0895bded38c3fc5b80db7d8d77ad7d5248aaaf7","src/text/licenses/Abstyles":"2c8a66bac1fafa730bd2a090c9cc8ae47c209e9c807cb38b89e989e2ee30880b","src/text/licenses/AdaCore-doc":"1e522d7a0f05991d148d1639ad1b58d0e71cabf64db278dcc5bccf59e7fb1bd7","src/text/licenses/Adobe-2006":"857ee3985341c4520f46e843802bab8bf86644a86848ae3138199bde365b5673","src/text/licenses/Adobe-Display-PostScript":"5003df50c4489173455991609862535fe3e9ca9563e34dd811d07be38a3d5b71","src/text/licenses/Adobe-Glyph":"5160de6fad91dae7e21639b17196c5bea83ede332d7158e073f922d72fb8be42","src/text/licenses/Adobe-Utopia":"9aec8ec4c4564f527df1683e5d16015003008e85e78720c4fc17351353556eba","src/text/licenses/Afmparse":"41b6ceedb0c27bfc77f5a78fcf8e2bac89ec25ed2f69dd5bae11f4c3a64c8b70","src/text/licenses/Aladdin":"a1e139016198f8fca8a0ba49059a64c4ffbdab103a13463a02187d5422c4e0cf","src/text/licenses/Apache-1.0":"576a426fdae6c6ff441517eacfc328b46ed5666adc72796c8f2fd4df897ae9c2","src/text/licenses/Apache-1.1":"c66b431bc87949535d9e5ae97ff6dd903e625187799a9ae4321ff92b684b8bf7","src/text/licenses/Apache-2.0":"eda9356a0784f41da85f4ea5128f8e10e683d8bbe9d0e9126f38922a766b498f","src/text/licenses/App-s2p":"ba72699fab343c25b4409a521e1348ae55de95708bb6dbc7dfe8b42e87ff0184","src/text/licenses/Arphic-1999":"85cb253396ffeec39c57804ec2d33cb857dacf5bc9f414a0ef1557a1e1a05c81","src/text/licenses/Artistic-1.0":"a8736c86e50add36d92ae5197f45d84e6764c262a33037a3b6e4abf359aaea2a","src/text/licenses/Artistic-1.0-Perl":"3429306cf4acde9b53c75f3783eed05faa1a8f477e9f9c62a39be6289ce95af4","src/text/licenses/Artistic-1.0-cl8":"ce236aec093bd9fd9f3c8dc671c574f9a2aed7e2d7ff95f62a73f963ca0b85dc","src/text/licenses/Artistic-2.0":"6480282f7530b5468f68a7ac705c97bdec93c6d3fc1f7f17a607d0de8644c949","src/text/licenses/BSD-1-Clause":"0de287bb14e74dc7559856dd2b1fb0348aa77c467b2047db598508ed0103f613","src/text/licenses/BSD-2-Clause":"ae6f4601836026c7828cc8c7a91b85f28a4f8776eb9dfff6070a2c908925acf6","src/text/licenses/BSD-2-Clause-Darwin":"647b203983b045d9d64707b2c7937854db0174507be03b4b6d1599506871ac0e","src/text/licenses/BSD-2-Clause-FreeBSD":"66420ab02ebf157b609ea23d6fd3c3ba88b9a204649fe8a36fc089b3d5a04995","src/text/licenses/BSD-2-Clause-NetBSD":"ea8dec4861cd611c926cd7575dbdd4d77e91140018c891a5202a803c745567ca","src/text/licenses/BSD-2-Clause-Patent":"2c70f10db3693ca4a8b28dff888af4f315b8f5229c2b7a6133b741b15f2f6178","src/text/licenses/BSD-2-Clause-Views":"8bdf983e34927adec6dcbc5a32d642e4d7745e00a22f9858498a5f38dd639be9","src/text/licenses/BSD-2-Clause-first-lines":"e394888d87185af792e97f8e096fe022249f9742df1f89f40579f636131a093a","src/text/licenses/BSD-3-Clause":"a4ef83f8773306aadf2d13ed4fc6d793a92c386f24bb3c00856edcc8d08c470a","src/text/licenses/BSD-3-Clause-Attribution":"3c7bd06ae0ee41942d5f7d9c741f3885c5825377539c17f40126b99925f946b4","src/text/licenses/BSD-3-Clause-Clear":"89f780cf55ff75579d56e5db1e9a214e93054112ac50d2055fc2e46530583732","src/text/licenses/BSD-3-Clause-HP":"4a769bb37d246e114096cd02c98b08accf2c9b4539eda8ec7dd666173463097f","src/text/licenses/BSD-3-Clause-LBNL":"b633f32e7bb25a31ff0ebd3e46a61d7b2e007d30bd423de520ea37faa6b688c1","src/text/licenses/BSD-3-Clause-Modification":"735e88b4de41cd56d90ba683139f3bb7114500743f487855700b8e930013f289","src/text/licenses/BSD-3-Clause-No-Military-License":"d38579ecf765ab396bc8bc1954602f6d519e07166813bc986225e3142b6dc22e","src/text/licenses/BSD-3-Clause-No-Nuclear-License":"402a2a9d438c80de79050b109d7138dbf45f97e094e909b9eab44e1bad22a7f8","src/text/licenses/BSD-3-Clause-No-Nuclear-License-2014":"46eea79d040e85da45b691aab8b3b840e4f4732a100e7909145d565ec046bf26","src/text/licenses/BSD-3-Clause-No-Nuclear-Warranty":"787b69f9ab40ae5f3e717185e54170567a664302e8f0d7e86f43e9b298a8ac93","src/text/licenses/BSD-3-Clause-Open-MPI":"58fa5f3d112fe373046ff655bde4d6224dd8da69e8b60526c644f7928371f4fb","src/text/licenses/BSD-3-Clause-Sun":"0780412360715df852c04f5ab47959381a203aa6665d8f660a2b0e0e7aa922ed","src/text/licenses/BSD-3-Clause-acpica":"5bb5e38b1abec1244086f755273e828516f6c3bcfe0b28c6f34ab5b76c08c5c2","src/text/licenses/BSD-3-Clause-flex":"36c5404424f059d1740a17c2e6f2a810d3a8e36d82bd7a9ae14323257a9f18fa","src/text/licenses/BSD-4-Clause":"79dd34dfc1334298d2debdce77b3f7e7dfbeeae174827ba05769415af2abf901","src/text/licenses/BSD-4-Clause-Shortened":"3c1572c383c673969d75305da8041d138f80ea0f3591381dc420125f2baac3ec","src/text/licenses/BSD-4-Clause-UC":"c94915678bbde03c68f45eb30b7f6fcb8e177534c83f69aedead724ac03b5a1a","src/text/licenses/BSD-4.3RENO":"85ae1455057dff5572a0d127ef757426eff4712d8a0878e94eb145c2c387a643","src/text/licenses/BSD-4.3TAHOE":"7a0fa2d66a53b7adcacf002fe3f8f9de30472e761bf9c0f68cf8cd4e8d9afa31","src/text/licenses/BSD-Advertising-Acknowledgement":"61bb41c6864e5b983f3f992aba5c994f340fdc1d06598a19e400302bff53c1b3","src/text/licenses/BSD-Attribution-HPND-disclaimer":"261e0a75b31937221e3fa2ef2478301375176ba5ce57714384115738523c2add","src/text/licenses/BSD-Inferno-Nettverk":"861e2e386429b3452ef6bb45671bfcf2926f6b1a760d592033e4055cf05329ca","src/text/licenses/BSD-Protection":"ef05e52a4a5b7cb8694d29a53ff2bd9db731c5043dab7ffda3bfcf4b53a03a0a","src/text/licenses/BSD-Source-Code":"60721d36a5b52a172f77bc89df97e82f4be7e01d3062ebbd61e8534fca8bd24c","src/text/licenses/BSD-Source-beginning-file":"c65c7902bfb40e952a166dee65dc067b9a377546aac9c2c00156567c1350f6a8","src/text/licenses/BSD-Systemics":"d6c2bb8762fcffb842a3d88db603460524c9cc8932203fa691d95d2163c2ad48","src/text/licenses/BSD-Systemics-W3Works":"36d42f7591116c173c5f70f6fc65441b7436a0ca8e11747d67dee0a5e6060b20","src/text/licenses/BSL-1.0":"9c5fd85f3c1e4f52ec8b5e0eb10328238a8a9aac4dcaefe683e1ea0f435329de","src/text/licenses/BUSL-1.1":"b46ec83c18d8dacc668a896c759c122a91c3b9eda6554abe1e47a03ea631584d","src/text/licenses/Baekmuk":"b9f704de2684cf3eb2c2ad5f74f8373b22aed48dc5578b199aeaa576bc541917","src/text/licenses/Bahyph":"ea83f77bb2ea212ab2432f81026dbcc014b398b232524a7662b72840de686ad2","src/text/licenses/Barr":"c56ab4d2ca972d97a2820989eb7ef91a4439a93f862032c31fa3332d91f508a7","src/text/licenses/Beerware":"6126661ec76780882f8e92e6ac248f4588db90a89b3b058ce453e8719e78c786","src/text/licenses/BitTorrent-1.0":"760a3ec6e818c8f88aa52f762154f670c6ffd39a1fe33810afc006f88de08112","src/text/licenses/BitTorrent-1.1":"c6b8a9647595f06046eab0ccd44baa80ff50a2bf45602b987c735a4fdce542c1","src/text/licenses/Bitstream-Charter":"2a0e1a9c74c7d7fe9f0e5c21ff51ed0f8c885051ba6751dc3418902dd3541b13","src/text/licenses/Bitstream-Vera":"4f95f852a6bb0982658b63c83513780e588cd9b8f0cdd8b88917ef28879d0038","src/text/licenses/BlueOak-1.0.0":"b2f648adefbc44b34347c696ef9ae03ceda2396eab82e1fb6682ed5f4cbd3f79","src/text/licenses/Boehm-GC":"cae60743416e71335382573a0a713abbcf3f4081313dbb9be5f3b712792352fb","src/text/licenses/Boehm-GC-without-fee":"a9e3790699060bab9af0c7408f0d5980522b69a43cffa2bc62f2bfb29fdc693c","src/text/licenses/Borceux":"c178b1b09563af39b7dbcecb4c0ffd1046e6125da3fbddaa2a152d4d7aeab975","src/text/licenses/Brian-Gladman-2-Clause":"10d879038e99655146cd72a01775e180da3c59f827d98db645e5291cf35fb73c","src/text/licenses/Brian-Gladman-3-Clause":"98b1482242a2ea74300d5046f9078ccee2be0d8c11180f92e1599fe0f989709d","src/text/licenses/C-UDA-1.0":"d05d2c92aca6a8cb8d45d941e80888b837f4739c8c4efead84c6334f2fd317dc","src/text/licenses/CAL-1.0":"0e56831a7ff113cb354ad68abf21e5f48da2c31e493a37a821cdee1b9274744d","src/text/licenses/CAL-1.0-Combined-Work-Exception":"0e56831a7ff113cb354ad68abf21e5f48da2c31e493a37a821cdee1b9274744d","src/text/licenses/CATOSL-1.1":"f54934e163427d213ef33c87652a2e0b1047322abc43a41d45fd264c3edea6e0","src/text/licenses/CC-BY-1.0":"f4cd37c789019e0db02ff3190d39d0692d6cc87b44740b1c0a2377671d2bb3fc","src/text/licenses/CC-BY-2.0":"7d85593b4b97b8f325f28ba782c3676ce724d3f7c62e04788cae9af5c3496ab7","src/text/licenses/CC-BY-2.5":"88c28c7c76daeeef704c5cda027e5c56014fc52e06665a3503298dea5540e029","src/text/licenses/CC-BY-2.5-AU":"251b47615515041cc5ef30355d9b56891e639a4675918020c5c95c23e8849d3b","src/text/licenses/CC-BY-3.0":"77f9f8f2d40f63e6411be7ebf2903cb878f61036ee59d793e5ff1c0a15716276","src/text/licenses/CC-BY-3.0-AT":"e2811b0b7e4fcfc194bc935fa80eccde6145a45c1e4b055b76e3244fb7e71ac2","src/text/licenses/CC-BY-3.0-AU":"2464b5292dd962f6f338e988337a1c3011c86a989e138ed180363c99bf5179b3","src/text/licenses/CC-BY-3.0-DE":"dff28938c8e465cc22eb1f0b9a07bbed1d5c91d4305ca0040f8c1791cce75fff","src/text/licenses/CC-BY-3.0-IGO":"7870cd288ee087994eadc9a7439f1ab377835037b2e9ed805ee7353d311302d0","src/text/licenses/CC-BY-3.0-NL":"6165cfe8f73b8dd978d8ff1dc9e366c38bf128aca9d9fc14d6709e7122e48108","src/text/licenses/CC-BY-3.0-US":"ba1935ba720818a3697060935bd27ca2ecfd2b053b0551e2c55980feb10cddb7","src/text/licenses/CC-BY-4.0":"c0027b469a6d99268b1d8db2f34ab7f8354e860d3d904e5256b6ade3e5553cdd","src/text/licenses/CC-BY-NC-1.0":"34a899517872228494180c356ef435f21fc72aabd6a71cafb1d3c7b66240aeb6","src/text/licenses/CC-BY-NC-2.0":"d66602c60a2e0761a57d80c23ff051bf0244e58159a3f330f3856ffd4699f648","src/text/licenses/CC-BY-NC-2.5":"2a9615d87349d61006bc303c6892f9e8b340e4c8c0715923e9b828c4b4296c8c","src/text/licenses/CC-BY-NC-3.0":"0945dddc12c4d8f66e67b0960b9989e170c67f64effc4de1b7b9cd3f0199f76e","src/text/licenses/CC-BY-NC-3.0-DE":"937f17f5a2e3c6b1825c247c7e357a8d6aedbf461433e359b8029e669ca94195","src/text/licenses/CC-BY-NC-4.0":"1372b1e722dfdf6e6476ec1011af34bd55eafc689642a370ed966bb7f0f43e10","src/text/licenses/CC-BY-NC-ND-1.0":"6b3e5ce79112ce2b2173675d74fa0d337c78f7957a30808ab39198f0f6b7df2f","src/text/licenses/CC-BY-NC-ND-2.0":"9d1849891e124d7a3f3f2e5a3e2d91a2301441173f9c3a2d01f785e7411e209e","src/text/licenses/CC-BY-NC-ND-2.5":"c0effddcc150b57a8434f47a06c1d0ba1cd321654478ed00541be7eb236a58ed","src/text/licenses/CC-BY-NC-ND-3.0":"37e88b450ea04163e1300bd0db539bc9ad99cd2acfa74dc34c9e18802c222b12","src/text/licenses/CC-BY-NC-ND-3.0-DE":"d58720fd20b7d9ad8b8193c8ec78ce37c7874d1e416bbc34f5ad36296314a4f6","src/text/licenses/CC-BY-NC-ND-3.0-IGO":"833044479fa093b113bd5b9c017af6bb79401daf4704d4c6c4137d34f518150a","src/text/licenses/CC-BY-NC-ND-4.0":"2c7afeedaf05e5cc7a3c5a2f64d2ab7da82786415dd77adea3f117a4d5cee7f9","src/text/licenses/CC-BY-NC-SA-1.0":"5d24260c70aa7e99faebaa5eb02deeaa292b95d81c60527063afb339c3cfdcdf","src/text/licenses/CC-BY-NC-SA-2.0":"381d8180841bd998e27a70a6e84cdc736d8a1bfe3fa8423e149513532e462560","src/text/licenses/CC-BY-NC-SA-2.0-DE":"14a49246b6e30550668463ca916becc6b113f55c5d3c93374b3593277badc83a","src/text/licenses/CC-BY-NC-SA-2.0-FR":"0ec8add7783509052fc4a237886d95a593e6b24c01af34f43311d4b26cc9ce12","src/text/licenses/CC-BY-NC-SA-2.0-UK":"1abbf3a2b5a3974069895fb379127d3a90982ca0020a28dd0df9e92395610f04","src/text/licenses/CC-BY-NC-SA-2.5":"d47a6c8e7643b5e33d7b5fb99ede8bd78997c165393fab5623840e7711459f3b","src/text/licenses/CC-BY-NC-SA-3.0":"9ce2de5b48f60701a40035ebf449423dd8c7a5af888899587e41c1122adcaed4","src/text/licenses/CC-BY-NC-SA-3.0-DE":"0c2a9990f16db7d09916982b893b6db4214c7d82d6313f0c6470315c1351a1fa","src/text/licenses/CC-BY-NC-SA-3.0-IGO":"cf965fb1ba94d058ed7f9d317798a0d376617fd728a8bc73f5992d829c49ea15","src/text/licenses/CC-BY-NC-SA-4.0":"12b630d1586ec6e8e04528731cbb46d6822b657ea5832cf41c5b7b065df5ab64","src/text/licenses/CC-BY-ND-1.0":"875669cb70494fd96e4a5e3565cf9b5dce9ca4b433299d6dfb7861a88b0f176f","src/text/licenses/CC-BY-ND-2.0":"142f9479c87faae709717c82a5425fb50cf5f5d56a3d7f64d9025bd7c6eafa55","src/text/licenses/CC-BY-ND-2.5":"ad0345f2b7fc9e04ad8f8de2063dbd94532bd3c1d17cf15686a2b3821a5e7cd1","src/text/licenses/CC-BY-ND-3.0":"5b8be952978cbec0afc9a0d7358bf72cb8407690621b315c37b84dac2bf3e4aa","src/text/licenses/CC-BY-ND-3.0-DE":"4c0becd0dec297c2de0d6493911751ded9fa1beaf99c601bbcb0ce3a1af0a3b4","src/text/licenses/CC-BY-ND-4.0":"726bd2e25869cf0a0f31739645a1ff5a8a0b73d52ff096d09f0a240325f7f4df","src/text/licenses/CC-BY-SA-1.0":"5c37a8622340221bbf3d59dc512d2f9361cde13ea13e6eb1c8a10c8121852bd0","src/text/licenses/CC-BY-SA-2.0":"76a3ebac267c65346dcf6e36ebe3e6c2efd6ead8bb743b7bcdf657606ee51429","src/text/licenses/CC-BY-SA-2.0-UK":"460c3d23b2d54637db93bac9eae9f1aa22c204bd3ce44f75ea5f43193b8bc277","src/text/licenses/CC-BY-SA-2.1-JP":"4a12f37cde9cb0d03bd2c3675464d89b5bc4ad8b49e03bda1ad949e87c42099f","src/text/licenses/CC-BY-SA-2.5":"d7ffe89898321ef4a2c7b80d72224de4135456aa711a567e5afc25fd97bdc40b","src/text/licenses/CC-BY-SA-3.0":"2ff8ddaf4a1c5a291b229413dbedbc2888c9792207db8607949831ffbaf5ce2d","src/text/licenses/CC-BY-SA-3.0-AT":"808ecd7631146a248b063c20a13b5938c8e92d3fa51bb9815b2bdc931318f92b","src/text/licenses/CC-BY-SA-3.0-DE":"e06498634175eb2dcb06dde1b4a67218b573eb03dbdd00ecf406e819388ce4bc","src/text/licenses/CC-BY-SA-3.0-IGO":"f768d38607abf8d342041c285bfb09aabecb9594cf5f35b76ffe1ab614d44e81","src/text/licenses/CC-BY-SA-4.0":"9e07fc72ac9c4740f2fa2040640ad6ea5ec08020837d6684d982de1f2df5ae8d","src/text/licenses/CC-PDDC":"6397b48c9601f239553be99e1fb6aec03011086848d4dd8acf83441e2592094f","src/text/licenses/CC-PDM-1.0":"9c28a8082599532255db6e14be8fa452835dc8c9b43830ac54455cd8a6995aaa","src/text/licenses/CC-SA-1.0":"19c811d2c15c3adfbcb2747e50a5106fcdabede08a188d2726c7208c88303646","src/text/licenses/CC0-1.0":"35de31a7569fa2c291b997c1775f7a97aff427328e12a8b90b4c92f86f3551d4","src/text/licenses/CDDL-1.0":"786de81877a07d874f9a9f90a7af936e5ff97a910af0b974d3b9576f92197fbc","src/text/licenses/CDDL-1.1":"1c2d2921fa709bcfc2e2626fdfd329e3e4ff7b2703f2b2d747579abc43b6c269","src/text/licenses/CDL-1.0":"b92cdadf1901cab66b4a782f5cc6adec37344c786b3cdff058fc708d33cfdda2","src/text/licenses/CDLA-Permissive-1.0":"3fa548df74d9d85cddd877da49a71d2985a52961e16d3bf164a9f16f1f031d07","src/text/licenses/CDLA-Permissive-2.0":"ffc2f9dcc34a25d02ac7ecc1e3241d1c6869a7a31006a29acc748f136c165338","src/text/licenses/CDLA-Sharing-1.0":"814ce50c84d18eaa3605115454eccae07e201fc4ace2a3eeff9ef637a08df272","src/text/licenses/CECILL-1.0":"1df0c2fdad4229187b7066a41f6d7f4b456c611c7e887daf0968b2f4f282e299","src/text/licenses/CECILL-1.1":"c19311b4bebce1e4aa1fb5e576f56335615babe9d09912104f76f4424911526a","src/text/licenses/CECILL-2.0":"678011813f82f6e151e411e8b87d8bfbb3cf914f0368131992e8360426e26a56","src/text/licenses/CECILL-2.1":"e59b50a0272e78b8a15b70141655ede2a1adcee2ea60460d2981df3000623248","src/text/licenses/CECILL-B":"2d0f35827aa5b3a2f7cde1f98fad6d3b01fe08c9257c4d05393c11fd589bc17e","src/text/licenses/CECILL-C":"136b5c1912923ce5f485e242e1cb806f05a057095b3bdfec2761e19b64e73537","src/text/licenses/CERN-OHL-1.1":"c93f163948076ee3a3badcee261b9248a8dabea8b9e53bae8b6f6807bbe0c5e9","src/text/licenses/CERN-OHL-1.2":"6f8082777ce3ec1d5c33ba6089df285c61cc267fed229f73bd6a1be4cbb5a153","src/text/licenses/CERN-OHL-P-2.0":"f04192423fbc18800e5c87570b9c14aab2188f5d965d8c406f6b575f73c361f8","src/text/licenses/CERN-OHL-S-2.0":"bfc59a7e90f32d639d532d280cf1e42411fb7c2b4b897174b74cddaaaf5f2f27","src/text/licenses/CERN-OHL-W-2.0":"9dc6e5ffff9a46a86187619b6a17a2698caadacf5952e43b175abcf7474c5f9d","src/text/licenses/CFITSIO":"e812952e17646ecddf24423b05c4c3b939d3f36b1f59075ef5d0dcce5776db6c","src/text/licenses/CMU-Mach":"1cf2e3d4eb17a6da5a720bca07042a4a64d85776bbf04938b336c1dbd9379b47","src/text/licenses/CMU-Mach-nodoc":"942480b2cb38c779d794ace460e294555687ff54527fb3300f497d7ad9e51258","src/text/licenses/CNRI-Jython":"87c303cb8c9bd6d637edc1129b40c42b21757d0c452d0945469ee74621504184","src/text/licenses/CNRI-Python":"5ac3f5210b2ef1898d59af67a80ad7552fb66f79e50a493f462cad26e7ceca1e","src/text/licenses/CNRI-Python-GPL-Compatible":"b5b327b486192f20ec94d1e8567bb82b26eb1ef6073899ccbbab11cc06077119","src/text/licenses/COIL-1.0":"1e8a20746c7491315d3f9c62a379d15a6f93ab2d5b06358c041d8b5edbc77cc7","src/text/licenses/CPAL-1.0":"1605d41ec4ca1d4913548396b42d474df84509175206797720c010bd3aff89dd","src/text/licenses/CPL-1.0":"c449a331a5bc0586d8ccb0b058bc3cee85c6d7c524ff4c1b55eaa6d4444a1351","src/text/licenses/CPOL-1.02":"0c08b170b49f3960085030c365cfb44562724fcc0ca146e4f07cc87ad1dad083","src/text/licenses/CUA-OPL-1.0":"c06c5d67fbc3e50e9feb41c33b48635ded8a3e404a78a3f48e282e7e5d3ac16e","src/text/licenses/Caldera":"f59616b6b8465cad3817547ad2c0fbae4e764ae1b0d5d96657e92eb8ac79fd4f","src/text/licenses/Caldera-no-preamble":"e373d32e22ab5806709fe97e189a7ef70fd320fe4bf8ceb03d4c5c114e9f706e","src/text/licenses/Catharon":"e9e7d075221ad3da56e1f6d2d6f1b32fc872286da5c5c5ceb1c9f6f271db920b","src/text/licenses/ClArtistic":"7bf418950ffe4dad07ed898fda13aa2c82563687dabd7269238de19b6cd0abbf","src/text/licenses/Clips":"f18fb02e3fd74e0e8e466d6b6712babdd044adec99dd473eea396f5be6bcf478","src/text/licenses/Community-Spec-1.0":"09eda9568ffa65cea24d56f455456ddf98b9b9cd67fd9dfbb3204838923e8312","src/text/licenses/Condor-1.1":"e1d5a4a5c55e08cfa5e52bf3dc7f62cb7cdea29ebe80688a49dc3bd8087204b7","src/text/licenses/Cornell-Lossless-JPEG":"1358f99586d553823dd73937c5f4f33cb487d050d6090c329d4656b7a04bc8f4","src/text/licenses/Cronyx":"abf0af660b635a7fb8f7a94b4fe08fc0ecb1dfa3f6b1f295e3d58fd733273ff3","src/text/licenses/Crossword":"9e620328b6e12544ce931c7291f2da0f46d76204251eaab43ddcce419ea3782f","src/text/licenses/CrystalStacker":"56d771af7cf644254d498d8b1b281aa9592b7b6025d7cfd4d2df8c1c6ac6b435","src/text/licenses/Cube":"e58995cc002a5084014486ea85baa4ce3af29cc6af7fc7667d3ae0fc9a63bd5c","src/text/licenses/D-FSL-1.0":"347b10b3a46547d754b5a4b952bd29235bd1734a8af6c13d23c484b68dd23116","src/text/licenses/DEC-3-Clause":"8598f47dbd4c29f48965d8527edd5b1239ac3fc4d1c1a443efd552f3f9ee081f","src/text/licenses/DL-DE-BY-2.0":"4a22b0591fdd8d04457569dbaf3db46ffb141df3ea2755c13378e394267155ee","src/text/licenses/DL-DE-ZERO-2.0":"910b9f9ddb3e6dc314eb357133dfbec0813637301a9013d9aee01209ee78f1a1","src/text/licenses/DOC":"9596a0c1f7f1e91506fe98e26745ee8be393b48a12a828409ba61484e6d15a44","src/text/licenses/DRL-1.0":"f659deed3bde8162f184b3749e792fba3740a820a3f66668d1177b7b2245cfbf","src/text/licenses/DRL-1.1":"23738e2cb9e7b9fd7a1e8063fc5aca56a7b414da535accb73c7dbf9def9d1721","src/text/licenses/DSDP":"0256908b583c787763f8b450477ae31d4e88af108f7df9f7e1199978f43c9063","src/text/licenses/DocBook-Schema":"5faa09a2591578ad88e4329411649cc8536b315b63d515d5049990cd822f729f","src/text/licenses/DocBook-Stylesheet":"ec02f8e2294aaa67003d0e23b1d22f8a9c91f1c98d641ed46eae95385d82e55c","src/text/licenses/DocBook-XML":"677a7f9be83e7d0ab0c8c00dea7a1e71fda574cf1e39b442aba94b32469b44bb","src/text/licenses/Dotseqn":"a5081ff95d94fd77df70a8a119982b6508ab35566f75cbcc818fd491d10328ed","src/text/licenses/ECL-1.0":"4664e2abcfe6b104ce6908424845c3e4fea7b88a3cf963c51438fe305917483b","src/text/licenses/ECL-2.0":"c4065084b2860bd466b78a15835fc2c30754639c13b9321e8f73f80ea7e9675f","src/text/licenses/EFL-1.0":"5d88db08a148ad0d9eff1246675705919ce9c82ebfb986dc166d5f06a0242972","src/text/licenses/EFL-2.0":"5d868cfc5d44f71ce3ac0fad8c98af2bc0255a2955738fb117129a648adb0389","src/text/licenses/EPICS":"a19287d72c9ebcecfd4b5b2521ae4b3cc2096f4fd75c78830f3dd4459916df1b","src/text/licenses/EPL-1.0":"c20043904484ca0bfd39d8359b1ec3179d9ab6a51bd213c456e16282e5c8cfda","src/text/licenses/EPL-2.0":"93087f13b19708cb94362e3d7603fda174ca31c0b19930c73034030d002712d8","src/text/licenses/EUDatagrid":"d7231523043c2c6471c16dc22cd066b18ddae035bb82a868f6602ac8c851818d","src/text/licenses/EUPL-1.0":"538df49de4182a5e4c54f55b1c68aead85efbd3831257a4b4464958dda46a172","src/text/licenses/EUPL-1.1":"3d4a4397d53377be7734e2bd556fd7288279410729be9a434af6787c105a7246","src/text/licenses/EUPL-1.2":"64549754d93c6c7cc2442853809a97fed17776edbe034ef8fba3d566c104570a","src/text/licenses/Elastic-2.0":"295d440c35fc31d3b01d6e11bbff67e668806a91e1984ab338cb73aeee7241fe","src/text/licenses/Entessa":"41f13517a92a9d34d0f72e5f075ae3ab545c73de14c34c157d4b9f9eb40aae78","src/text/licenses/ErlPL-1.1":"00c5141dd366f162f72c2a46c492c7448afd711bbd97ca58518413c01d6f03fd","src/text/licenses/Eurosym":"a5ada5484a1b88fe49030510aa90824e2166085aa6e7ec244871e75751c6077b","src/text/licenses/FBM":"9d8a07cee54fce316f14fdf1a8bc343ad40b00ee20404bf3764b268568179eef","src/text/licenses/FDK-AAC":"2fce9b7bcf1560e6d4d1fc0c48681368bc95f5f1ef8757f7f0ef243759783ba9","src/text/licenses/FSFAP":"d598cde31c3a87e1624f091d10822540613f26f41ee9c65e59d4b9b59fae4fe0","src/text/licenses/FSFAP-no-warranty-disclaimer":"eb735470102d416f7f549938ae28d545cdaf4676816699917538ac3b6b1b2d99","src/text/licenses/FSFUL":"875208d18e81fb98f7ca10089e0856acd135876f2a72f9e7bcf51b6c0fe8cbfe","src/text/licenses/FSFULLR":"d188d4ed5b4be4ad19274243b2c62f22296e7149c2aec81bad16efc99fc604bd","src/text/licenses/FSFULLRWD":"a5b0a5c078e5b8208edcef5507531b95d8c8c1f559747585919e1787e163a133","src/text/licenses/FTL":"dad8ce85a7546abae4a1f40c5f402c395b81df6e3c1b85a82a7e6e22ad918c9e","src/text/licenses/Fair":"d16f6263eeed9cb4c0d8d3e6dd322dca7aa8f2ddc52ba894b05ce242b3d58c04","src/text/licenses/Ferguson-Twofish":"8eb0ad20fd96d8b31fbd6752f4f1fc12a7748f3bdb942e0e10ef7f3ae9a4fe76","src/text/licenses/Frameworx-1.0":"c202c7c5b67964b41e353ed4d4e93cd3fc9e68eccd53e10af88bf67e131891f4","src/text/licenses/FreeBSD-DOC":"aabed5b0897349220123be4f9ace2debbfbc84c2ee6938842df7c272e63c24d4","src/text/licenses/FreeImage":"32931a63f672cd68981ae644563568836a95f06e9c1a62ac38c1599f0cab3905","src/text/licenses/Furuseth":"e15ef2e33945b97c23e642e3673598a49a28502093520e36721e62a29113f425","src/text/licenses/GCR-docs":"07f967fb7c4d77fb071f35b65ba3400ebabdfe367a8bf26758a3a98a9d100491","src/text/licenses/GD":"834b1e11994ed10948bb95a331b9e37b828532b76ef4db8b0cb0d4e26f1edc90","src/text/licenses/GFDL-1.1":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-invariants-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-invariants-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-no-invariants-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-no-invariants-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-only":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.1-or-later":"6dc9fa510c87a2e232f8d09362a57b9d49682d173d16c79e4efab608fca92749","src/text/licenses/GFDL-1.2":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-invariants-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-invariants-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-no-invariants-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-no-invariants-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-only":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.2-or-later":"4c7a2b28582b3789627c6db3883a121939c0bd17bac2472f5d214324ff0829b5","src/text/licenses/GFDL-1.3":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-invariants-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-invariants-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-no-invariants-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-no-invariants-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-only":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GFDL-1.3-or-later":"863c53830ae3beb09a6ac70a879425f6a6901441eaff8594940df1c5124bd629","src/text/licenses/GL2PS":"c82b94a146dad0965a523621ea319f2847ca17403513a3a44cf141e319156c1a","src/text/licenses/GLWTPL":"c650281d26908af7f9bd41d19e4d057e874bc06177247cb35ec392a5dc1153cf","src/text/licenses/GPL-1.0":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-1.0+":"6bc27a888050d25cadbd4a56358ffdee7d7a4ffc91cc4268b356476a154ef33c","src/text/licenses/GPL-1.0-only":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-1.0-or-later":"e1c1e319f84dd19811abc4ba3d7f354158db65c36ed431fe60715fa82b31ad92","src/text/licenses/GPL-2.0":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0+":"e5273a6d0ad8a35a2d80fea6f4f603938f2fe4d8fa8c4252424c92bf3fcd16a4","src/text/licenses/GPL-2.0-only":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0-or-later":"242b3c3f92a55fe5d73a83c97c59358990430fd9aa68ba394f7857a516913675","src/text/licenses/GPL-2.0-with-GCC-exception":"bfb4530f6bab62c3841c25d46be0aeb19022c13441b675a0d0b455cab3af0988","src/text/licenses/GPL-2.0-with-autoconf-exception":"0118d2ae89c67cef4f95fc7d986df19a5aa40eb1128f8e7dcfa47f6b05574869","src/text/licenses/GPL-2.0-with-bison-exception":"f572411e0282854b0eeb38db7b04121844cdbfc9b43fc2ad71b8e93e6df0d2b6","src/text/licenses/GPL-2.0-with-classpath-exception":"0b1175b029268046b1db104fc3fd004254455adc28a83c69cf69cfa55b5a9051","src/text/licenses/GPL-2.0-with-font-exception":"6131133987317483f07359b10e692497166f7ed84afba4266bb7ae0bb4946307","src/text/licenses/GPL-3.0":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0+":"37d0075c097e4f3a6ba9523db5731818dd20cbe31a014f1adbe54ff96561e453","src/text/licenses/GPL-3.0-only":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0-or-later":"69b31612382b7b3f26e1b4e29e523ab22cecfd4e8651707ef59724ea25e9b715","src/text/licenses/GPL-3.0-with-GCC-exception":"fe15c3a710a6f15239b5a70ace1880bb8f0dedb24fc95315840afa358f01a06e","src/text/licenses/GPL-3.0-with-autoconf-exception":"bb6e3cb5d589cb59666313fa1b7a775e53d5a3dd0bcabb0912977b946ac7a21b","src/text/licenses/Giftware":"d205aeae81296bdbb88f5fc24a1fa6ba0b579a875ffff04ee8bf33bba3a50ff2","src/text/licenses/Glide":"412afafcf0afedc59e3d3fa858f9f0f96a8e9bbaa462b129d0ebdea928db5e32","src/text/licenses/Glulxe":"94ee4ff898116c16963aee627103956cde0cc62660c7d3527fcf1e0b04ea6c36","src/text/licenses/Graphics-Gems":"4deac78b4ae36c209851d0d48273be8bcb57553d03b87a1cb6fe69f68af5b7a1","src/text/licenses/Gutmann":"f974a705574846c71b8489f053123f6c5dbde93c259d1d361a3950d51af6e1ee","src/text/licenses/HIDAPI":"ec0e669413bd3c47edbf7b27e5aba094b8ddb247385a9475ae3e068c71c59bbf","src/text/licenses/HP-1986":"7f65786161c795f3b61d4eff5239355707e4166d340198def924df30b0e16898","src/text/licenses/HP-1989":"8f8156d26c42c826ea6f52ae14bab1e42ddbe8fe0bd1b8f2d2cd5304f9c5c0f1","src/text/licenses/HPND":"85bbaa558af6929b3e88f32860da3a3a58474de524bc5580af44518622b2d727","src/text/licenses/HPND-DEC":"271f559012b55c67991e2a5d9e9c171eba8afe8978412f3c69da693e10e14081","src/text/licenses/HPND-Fenneberg-Livingston":"8d647eb76badc9d10b581983069902b024bc3c2b5fb4c605bc64c30ceb6d715a","src/text/licenses/HPND-INRIA-IMAG":"cb4cfbd39f8439e48cac120391b89c28798f14aa0f3c1cdf5a431cf1d9bd3326","src/text/licenses/HPND-Intel":"2249464eed991dd8d52c0547425c03200fffff7cd629be7b167ddbd59804e00e","src/text/licenses/HPND-Kevlin-Henney":"bd892026e797daec95cfdfd737113407ec575aff2392ef731028fa040db844ae","src/text/licenses/HPND-MIT-disclaimer":"442ca01f673cb8026225f45e074af3f54ed3bc3856c32fce4cc3eef7f4c61e27","src/text/licenses/HPND-Markus-Kuhn":"52bac2bf41c33bdb291fcafb47326ead29654e3007b463b5f17263f2a2396282","src/text/licenses/HPND-Netrek":"cf6456070bbfd02bd1d8687cb3a5bfe4ce7699f79890a74cb7e568286b2d317f","src/text/licenses/HPND-Pbmplus":"f9e2f42913d6ccd7fad4c727fdf295d7bf95de6cf9b8d35881de16c02f134f82","src/text/licenses/HPND-UC":"8cd07a265133446e04770e94c8dccde62b3ab436a191294376835929e8259d2f","src/text/licenses/HPND-UC-export-US":"a5be94e1d019d499e208235f730cbcd810046a68a2095bc94cdbf17db157e2a6","src/text/licenses/HPND-doc":"e21e925a8626ce15f2d8e24ef861a3d19c4fdc1b11680ef03c3ffa0beb5db4f2","src/text/licenses/HPND-doc-sell":"52cc928871b77f3b82cbe4a2749e3df357b4e59c503cae1ff3569054f3335d04","src/text/licenses/HPND-export-US":"276c6fe67e72567542fa8282dd44db75b07985177ce1fd74f310911db488dbbe","src/text/licenses/HPND-export-US-acknowledgement":"b2bb4349fe6b685dfb8f87466dd4f2d4beaf30751c3047574157e7521283e0f5","src/text/licenses/HPND-export-US-modify":"979d992fd8fc3d875344527fdbaaa3e4619722b3d83a8971ce83cfd0d64c7740","src/text/licenses/HPND-export2-US":"abf03769e8a383827bbb62378e3c64edea9047f486d40b6558ab18c05a17d513","src/text/licenses/HPND-merchantability-variant":"38ad65cc9e79e0700d1d70fe31520d5a3cf72b9edc8aae831fcbb4fceb5cdbea","src/text/licenses/HPND-sell-MIT-disclaimer-xserver":"09f7460a4a6a4583bca9b718d770f333f093e52e76f2538a0d73c8a8f62e146a","src/text/licenses/HPND-sell-regexpr":"83c8852480d6881c2132ed435e84ef480bcfaae47190eab5446976251eaa0a6b","src/text/licenses/HPND-sell-variant":"ddce2887109fc2ba6e55e45766351be232ca96474d62231785ce3a05fbeaf079","src/text/licenses/HPND-sell-variant-MIT-disclaimer":"4454ea0ae41590e57952a90dd3d2a8502013814738a93461d15862ab86425a33","src/text/licenses/HPND-sell-variant-MIT-disclaimer-rev":"eea866b98c9e4c9cb49c28f15e7ad324a022c847d6d472e0e1962503ac84ca35","src/text/licenses/HTMLTIDY":"8d06baf798b4ffcc5ce1af1680bd8e6f53d5b93f57d057e2899be41772056200","src/text/licenses/HaskellReport":"7223721cad2bfd1e0d8cf018fb87c4a1226643ba47060dc60a6e1a847bc6c828","src/text/licenses/Hippocratic-2.1":"967b59504a9df10c774144b13b3b49ec3566b05b7591b1fbfcd0577678d84bf2","src/text/licenses/IBM-pibs":"71ccd099abebc8c92902284bdbd05b04bab424d037880d04b03101ffd4c61da3","src/text/licenses/ICU":"59dfff5b952281eaf8f0894ae4b4e7e0e6f4d8e7fbf476e8627c4d0d01e3c023","src/text/licenses/IEC-Code-Components-EULA":"8d2e20dab7dfb915289e9c3af9089480f01240f9efc5e11d2e8568ec503a8e3e","src/text/licenses/IJG":"dc593685dbad80ceb851c8866f69d7ea7307e8351551f33d33cfd6dda24e4507","src/text/licenses/IJG-short":"2595754596064a22f13b1179b68b88ea06358be147d8e2ebc86d81edd3e63fec","src/text/licenses/IPA":"4fcec38d94cc7f2416d4c348a9d1bf906616c1e0d3de92d5e75cb55ee36e9eb3","src/text/licenses/IPL-1.0":"c86f2665d106b33189eeddf937897c9a1f30525a890ff717f6e6f51b00b0979f","src/text/licenses/ISC":"b3beb25c1f9172b0c1e4a8d76d90ac8afc9af03f9ad93f3502dbcc9fa6ae7fad","src/text/licenses/ISC-Veillard":"ff8237f74853c6fe6f10426771dfb6bae4af3ad04aa4bb2856cc6301ba19193b","src/text/licenses/ImageMagick":"26b90116e18394d712b68161643db7665a5993e90cb4d72e40a96b780cfe634d","src/text/licenses/Imlib2":"a05554da921912c566a74a82f586c20517718a6a69918f843d61d859f729ed05","src/text/licenses/Info-ZIP":"fb84ab8ccf924dca4672b6203a00c14681d7ad805850fd80b836fb6758a8fb67","src/text/licenses/Inner-Net-2.0":"5ae59463053af4cce22a84cca687fccec0eaba58884661d1e19fd07e8fc83620","src/text/licenses/InnoSetup":"54aea45525ec551b29e28f23d3c793128f382e7b11ac6c732816c9642800f903","src/text/licenses/Intel":"150202de933fc459e49e511b5ef4a217e5eb7a6a06e54c6d57723f518cb39b2e","src/text/licenses/Intel-ACPI":"f33b5c233b62b8078086bd10e8c5b7aa8de6f01560c0a3af263c5774fd434c50","src/text/licenses/Interbase-1.0":"900ef91b882ae2bd53656a1eb1c0b9c375f84f9fd4df8708ffd08a39e899c20d","src/text/licenses/JPL-image":"e72b52254eb0434b1318ee3a3c4b8828523411c0522093ab418b6aafe5277981","src/text/licenses/JPNIC":"5ac3dc40fbb7de92edc8be4e4ee801af4957f1e3b9b0e80f2f43ef5e05025aa4","src/text/licenses/JSON":"bae9ae7a9e50585ef2a22429d3422cacdf5067a79531bcfdc50f741242c65402","src/text/licenses/Jam":"a42c471b32038fd09238489664caf15e49cda083fff1cd7e2bdf4197fa1b116e","src/text/licenses/JasPer-2.0":"e30544defd605428f32ebfdf552d6a208d51723f45ace092f35bb9c7f3f22d14","src/text/licenses/Kastrup":"1bcc1b6313e867c0832de75224704937bda5fd79e581800bf07a69d814a87a41","src/text/licenses/Kazlib":"27ac971bf32d51d127e513c0a05b63c90bfcd2b42fce838e66bc4203b9ee4906","src/text/licenses/Knuth-CTAN":"ee33f54dd5f645af620bb32058e1258b814d45c0d480cdba3c4151e092fb0cac","src/text/licenses/LAL-1.2":"3c80bc6bc78b293f305e00d4eaea838bcba27e270963d745b9ac73f7544c33ae","src/text/licenses/LAL-1.3":"6b5f7a16da51c0b3d5344fdd0d25cdfc01e910ef891d7f0119269d19513c6010","src/text/licenses/LGPL-2.0":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.0+":"9f902fc9dfe2096047c3429fa7fca4bfc254a518f6150dc4c97d52954729ff11","src/text/licenses/LGPL-2.0-only":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.0-or-later":"be46b9919b2329ff317c9ab0bae0a846f07264760055bed4d87520e32df2fe7d","src/text/licenses/LGPL-2.1":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-2.1+":"c628c91db4e5db1685e86e52bcbad60398cbd91c71f51164ef588f5efa110f8c","src/text/licenses/LGPL-2.1-only":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-2.1-or-later":"6c09678c0285310971be21f8a2f7255afcfa51f36715ce90d8a8b3b83a90eba9","src/text/licenses/LGPL-3.0":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPL-3.0+":"e5aaca4b8a3abd07848e8afa63a6a7ed7ad61a32f6f1848d1f337b14c902706d","src/text/licenses/LGPL-3.0-only":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPL-3.0-or-later":"fe162fcaf4ca5470b8b49fa4c715f3f190946b205fb6cb767462fb49d0826223","src/text/licenses/LGPLLR":"5d908218d3ebd35afedc7d5b6f42e9bcd0bdf63bf77fb428be249dfb05d51208","src/text/licenses/LOOP":"7e8250fffb186ac1d9b30dcb6f051740a9fb60e0b8de1b9cd7866f062b8101a7","src/text/licenses/LPD-document":"82b5d4aec5bd88c0b7f68adbf8340ec1ace813264a92bebda6da3e9670a745e4","src/text/licenses/LPL-1.0":"2b0e3f324d86fab446c6b4cef34fb6a85cfa67d47426679f9538cafaefee93bd","src/text/licenses/LPL-1.02":"d303e93f6bb015b356351ec37c253f17bee63ac0df6d65a6c358fd634a49d559","src/text/licenses/LPPL-1.0":"9de271cffd48e4a5fae17f5994c826b93368c4a240e22a84504b14d84c43427c","src/text/licenses/LPPL-1.1":"5e72356013d988fb66bfcc7f1e771120945e1802643a3aa0a1ba70aa5083404c","src/text/licenses/LPPL-1.2":"837436e638efc7e8a502bff2f0208bc57ebcd6e2497dfc416af2c33662b95536","src/text/licenses/LPPL-1.3a":"3e73a4d8a97b68028060c2e212257555f06a03cd884fe5869f96c3cd801a0e9a","src/text/licenses/LPPL-1.3c":"65338fbffd33eec1d71a9343f152dd724a93eb1104b9c29d3670c181e07a906f","src/text/licenses/LZMA-SDK-9.11-to-9.20":"525ecf2d29338414f845268c9534aa84edb4a2fb97de7ae9a719ee7faf03f269","src/text/licenses/LZMA-SDK-9.22":"ae84caf79d8d2780dd948db18eec78ed4e25ae8eb93e8ca6b5a5d30be989e468","src/text/licenses/Latex2e":"7060e6cea50e18168b452f1cbf2cc847de0a358d785fafe0c631c7bd21b714c5","src/text/licenses/Latex2e-translated-notice":"7c22638330bbac1bf49215f52b53e5d7b04cbc9e8f91e07bfce406ef221f148c","src/text/licenses/Leptonica":"997468ffc230219809687290414917f71fff34fad741bb54b7276911d1663174","src/text/licenses/LiLiQ-P-1.1":"ef724cda2b940ba30955f534edf453ee7a76d9bafbdbfbe28a2a5b6ae3f9afdb","src/text/licenses/LiLiQ-R-1.1":"0855d92eed5b38a498b1469080853f00a5961b9119c448bc917e38aac0b40438","src/text/licenses/LiLiQ-Rplus-1.1":"a8eedbabb7103dc4bc221e2eb3837e99655f7a838ac3915d192780e041bbca21","src/text/licenses/Libpng":"f273db5cc34c36420cb058051536f1dfa70af40afd98e4ba9d625b0091a74edb","src/text/licenses/Linux-OpenIB":"f74dc4f8c72486884a9c27b42348b191c5e5c60ba1791d326a0051beba7a0688","src/text/licenses/Linux-man-pages-1-para":"c71ce6fc73f24cdd0d0fdeb12efe571e04c82a12add7c60974b065e0c8e39302","src/text/licenses/Linux-man-pages-copyleft":"11007c5fc1ca881c84966f74345a3ac2be1787850e203d8efbb929a54a91b0b8","src/text/licenses/Linux-man-pages-copyleft-2-para":"e35039611083cdc915ac67f2b0286dbaf5eeee0f0922735751defea467c9a160","src/text/licenses/Linux-man-pages-copyleft-var":"c067adff08e98a76764b0da5f1c60048d47ebf8649929a846ce70daa7a315bda","src/text/licenses/Lucida-Bitmap-Fonts":"900bf7c17641911394df16877cf751c649d1a1661d87f3e6f81f5bf27e5244f6","src/text/licenses/MIPS":"31258a20be90679cfabeb858f9bd33da57708b4430cfb2ac92d7e65cd4c572ab","src/text/licenses/MIT":"22091f0471aafac462de43e47afa865d161cbdd6a5bf47c6d639a1fb66a8741c","src/text/licenses/MIT-0":"9ea21eba7e2fd6e772c3493a49a4ffa9b5d7c60b3305dfcab785b46ad3ac1f3a","src/text/licenses/MIT-CMU":"016df239d798a629c2c884d424a0b26aa2fa50f6b9ff10733481c9ab36b7bd01","src/text/licenses/MIT-Click":"25073809d8fa293017ac35cfaa4bdba7939ddebdda6bc04843cf1312e1da54a8","src/text/licenses/MIT-Festival":"4f6800aaa035cfe49be85d5edf221effe3f7fa1bde09f17b82d82b1f4b10f45c","src/text/licenses/MIT-Khronos-old":"3d7dff5dfbb7a826fce841145ec8ed119704306a6096c1e227cfbcff7ca3ed26","src/text/licenses/MIT-Modern-Variant":"983a2628e423caea606a0a91eef743f96edca45076dc080296cd313e31377475","src/text/licenses/MIT-Wu":"05ea64795ca79b8df836bbbc19aab3331ba27794650a1fc9b57017c9c26ae5d9","src/text/licenses/MIT-advertising":"f3ae13312402777d9dabb483196c2bfcaadab88b2e339396ede2e4f804abecec","src/text/licenses/MIT-enna":"a2ff6d2140c6456c601bfce9eb2b345cecd949f33ca1288f3d6e518b17003c57","src/text/licenses/MIT-feh":"489eb641e430fadbf5b4d5fbcaf6f46aad574c7c3e58ad4172a82b3de52a6b03","src/text/licenses/MIT-open-group":"2cd5124d93079970e77501927e4d74977bf86926f48b3735d616cb664b906f73","src/text/licenses/MIT-testregex":"6d58d5fe908c8ff485cb32e5ab2e89584d3f2f7cecc795fd2447738e4872acf3","src/text/licenses/MITNFA":"2744ef47d52e5cbce7067714d527ec35b54d170e20d4d2d6ce33e0ef5a92ac6a","src/text/licenses/MMIXware":"a946db60c940577efe2cd1e59b68c07b537be983664b752a5d3da0de39f64d63","src/text/licenses/MPEG-SSG":"17b7590bd283e18e0e8673be75665d14993315465d91fb7ad33f9e5c7d4eb5b2","src/text/licenses/MPL-1.0":"a529687e80d13909ac372e7b0c040cf101e5b0078be38fc782636febbc7cccb1","src/text/licenses/MPL-1.1":"a21e7a0602eaa65d8c68f931c8fef55503e9fa0e3d6594e3d000aaae3413ecc8","src/text/licenses/MPL-2.0":"d1f32f16bf4a7d6e11faae6fcc4b3e4f4d9753deeaf48e0774ed2ac470db10c8","src/text/licenses/MPL-2.0-no-copyleft-exception":"d1f32f16bf4a7d6e11faae6fcc4b3e4f4d9753deeaf48e0774ed2ac470db10c8","src/text/licenses/MS-LPL":"e9fe07f8c59032b248185f257b73bf1a517e3444cdfe5e420bc957dedc1889d0","src/text/licenses/MS-PL":"8cf636a97355caeb7ce042d3359a1d3250d78abe0f73c9eecb473c70f55d5ecb","src/text/licenses/MS-RL":"f6e9d88e50821d159dc03e41ed04d392b2a31bcb061e42ce6cdb030608e4abe2","src/text/licenses/MTLL":"86577859bacfe28fbee3873b343a3018b54ec152ad5ea2232b5437c1ff881199","src/text/licenses/Mackerras-3-Clause":"9599c71cb524c885cc8a904dd2d739674b86059a9d8c5e811a32b5fa75b83173","src/text/licenses/Mackerras-3-Clause-acknowledgment":"5cba085f0911fff064c8f38e4671f2f33e7193d1433ec3d34830f82231acbcf4","src/text/licenses/MakeIndex":"e8fb1ac240f674958f1885d4fea0530117e01013d4b5ea595a682de3e9345c94","src/text/licenses/Martin-Birgmeier":"fe541e4c07ae2665d126309612ff7d23eed6018c3ec27985bd20796410087090","src/text/licenses/McPhee-slideshow":"3a5f7176c2b524f794590c926d9075cf6c862db2691e7cf414b2ffee312eecd2","src/text/licenses/Minpack":"f81f3a4a9578e0069cf847ee5281e2e5d3de2b9d6cf286238626ec378eea1be4","src/text/licenses/MirOS":"c0b1810ec52ec044e8f6f7babf05f8d5dd72f30f9ea7dcd81e95bfd140c5a78d","src/text/licenses/Motosoto":"c1c247ea7f6e9be3d65e11e3146cd98397914eaede0a2f684758c066421546ad","src/text/licenses/MulanPSL-1.0":"2cba65543214c3f822c5038ba9f4a43079130c8de91f72b288bc534ba91d6562","src/text/licenses/MulanPSL-2.0":"08f3f2494ff5f62e812eb57e650e5a30716c99c0f7a52504f9724af603bbce4c","src/text/licenses/Multics":"1fd3963bc7fa7ec24627870041e386f6f488bfd2ced9273b37b6b51dbd3a682d","src/text/licenses/Mup":"ff75cb1f2c762bb608b31f251ed64ab439451d7462773e04dd5f62973dedb456","src/text/licenses/NAIST-2003":"f58795e9d2099d47549a529f6836c52e9ed024ea6281f398af0b2ace016fd4dd","src/text/licenses/NASA-1.3":"57856d7e1781b59f7911692553bdfe7e8a43b9c34d3962881049e7e98df5ea01","src/text/licenses/NBPL-1.0":"ee8f457a8dcdd4fe96746eb37afcce85350ac4bec36ade81d16df6ccebec57a6","src/text/licenses/NCBI-PD":"af5dfcf2c6ae71f1170cc215f6eb33f0c21e4c94b63db9e55e39ac6c9bf3dcf8","src/text/licenses/NCGL-UK-2.0":"42ba150f10f26c5e230dca6b81b02271b0dfb9f43a07e0f6d5956016dedfbffe","src/text/licenses/NCL":"34780bd9ed109dc504587871c2e7585797c3c8ca3d8a460b66826f44e2e01604","src/text/licenses/NCSA":"8b612400725c6240a1da40261c90bf38fe11ada1448f240dcfd284984fc25b38","src/text/licenses/NGPL":"6c39a7ff502531d22b58670a0854514aa1023f85df146f65ea1fe46e0a155dfd","src/text/licenses/NICTA-1.0":"0a27af876dc7c258f7694292afc08f57221b6c601f8e8af1948d88aaf2038676","src/text/licenses/NIST-PD":"4a2f0bdae358cecb7da482b329a56ef0ff56b1ad1fa03545d11731eb6fae8082","src/text/licenses/NIST-PD-fallback":"560a015822e1aa20dab3fd8f87202787feff2fd9dac4dc1907010ffed54b5cab","src/text/licenses/NIST-Software":"292eb1283d6d568221211164436a812563874f20145bf7b8bba6f6bd7558d49b","src/text/licenses/NLOD-1.0":"97dc758de7ef371b60ed44160921c0fc294be98363e1588d40993eada62b7238","src/text/licenses/NLOD-2.0":"6aa380e63530108dec2cfaeaa685d783b5957771ce00d05d9f513920584ae1d1","src/text/licenses/NLPL":"b3b119d4142404593766b2f6e66afdc582e028e44cecbe3e064dc83248da12cb","src/text/licenses/NOSL":"e7bbbbe29b1dcb440a850067af0c43b25b56c0f50f34b082f4a0ff988a5e5d5d","src/text/licenses/NPL-1.0":"1268c395c1530dd02865d1d5120f3daaab6cfb749cacbabe68eda6f94ec8fae9","src/text/licenses/NPL-1.1":"937b9bfc3457f24c147e062cf6897205b1f8a212b5fe01eea9c3d2689521bdbb","src/text/licenses/NPOSL-3.0":"82a7e8d31ebc1a549ccf194985d10d2960c90f1cb1a795b1dbea25c0eaeb5af3","src/text/licenses/NRL":"313b88be88e69b7375bcb259084f244335b187fbfc2719cec5015134d48407a8","src/text/licenses/NTP":"6752cd9b915a90ea7eb2186efde36e0bfd2b19a2bd6137c4355793af4ac55495","src/text/licenses/NTP-0":"e85d674f890677588924ce020f4e4edb52c6fb3e393fb45b7993c0400b5e7980","src/text/licenses/Naumen":"b125dc2fdd86e81bf1a0b2f87ca71c185d55f510d2f2e6b7f7de68faedf41cca","src/text/licenses/Net-SNMP":"da183dd185a42f5f9475129353ec1ff9ee456cff4dbd962fc12c5337ddb65d82","src/text/licenses/NetCDF":"a2f55c50d0b7cfe480d862f66a03b0a77b1e52644feb12b97391bbc54e8caad8","src/text/licenses/Newsletr":"3356f22bf719f35d126fa67500d35eebf2b37324f38a7304fc3d483851c68089","src/text/licenses/Nokia":"9155ef5851955ffac94995006a65b33ed0ef5faff79d0e90874a4931a34ceedc","src/text/licenses/Noweb":"7338330239a3c2ef7266a97a5666dfb6ad8e044e6befe6536b991f9d40358665","src/text/licenses/Nunit":"7a0441a11299d73f0d0bb3da94725c93f721f38644c157033f03f83aad6e467f","src/text/licenses/O-UDA-1.0":"3a86d6685d235d8defc70c430abcc51a2c753f23e8620c44cda0320b069c79a3","src/text/licenses/OAR":"4eb4530591d2a3cda369bbce57a682f4dbb97f15f79da55e7c96b797c6883ef5","src/text/licenses/OCCT-PL":"a84b61340d456f6e5244f801608a17571f0e58d9cf8f0efe20de27b80307a9bf","src/text/licenses/OCLC-2.0":"5fe7e506daa562bbe259a5c0d5fad3d89edc483bed54595f430a14cc08195d6a","src/text/licenses/ODC-By-1.0":"1663343606ccf2a507fe4ddcc0c1d42653bd749f8f6ed94ca31c23effc2ab63c","src/text/licenses/ODbL-1.0":"1e31c2133cda6d0445e98b8ebec52c13a59c7313dc1cfa833dcd12ee13e181bc","src/text/licenses/OFFIS":"a247977b7fa930a200050346c5973b8eb5eaad9ae5e1254683961f5f335e8ba7","src/text/licenses/OFL-1.0":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.0-RFN":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.0-no-RFN":"bcef776a2ead56f42fa180255581665485eaabdc3fe5b92dda7a3278a1098e52","src/text/licenses/OFL-1.1":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OFL-1.1-RFN":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OFL-1.1-no-RFN":"dd552c618de6b8b6057b32a27a33ccf8ee93dadb8cfc138148581501f2dc9292","src/text/licenses/OGC-1.0":"40c04c5b7ab7f7488ba99a1027958117dd8d18ada291308777c61a6a6db50f5a","src/text/licenses/OGDL-Taiwan-1.0":"7db09bc36414d469ff308fe8b70a6ece3655891a8a52890c17ec95eb1d58f663","src/text/licenses/OGL-Canada-2.0":"119b672e363ffa4f98ecd51b82be184b8df334d6bcb29b61627102a5017e7ff2","src/text/licenses/OGL-UK-1.0":"efd7392a2210e0fb22b9b931cdd44f23b5b81a23d41be22696e197b5ed834140","src/text/licenses/OGL-UK-2.0":"4f7c21e386d5d7aa1de9ec436b767598b3bb4eb63af5be59f1f0442d80eab980","src/text/licenses/OGL-UK-3.0":"45beada9164fb98a7b04d88f65fb0ba6f44db95eccc747b54e73ef51a4ad4233","src/text/licenses/OGTSL":"0969904add29eb8b435ed5fe72bb832352c1cf5ec1a42a62cc97169855d7a9a3","src/text/licenses/OLDAP-1.1":"92504abbe0c4ec89e119daabc2d448748bf4b7d4abe283e2d737e94fcac2a416","src/text/licenses/OLDAP-1.2":"1df9089da3fd14a59938b76b627ae98e19422b6e97130c7ae68af37bd8383c37","src/text/licenses/OLDAP-1.3":"61641cb2cda4cfa7d4e6fe9a8695778d90634379a57d7d6695454a920801e297","src/text/licenses/OLDAP-1.4":"15c32740b19f96a90e87cc3a365df34c76b30d0dcf6f17e18808b69623d6ff3c","src/text/licenses/OLDAP-2.0":"3b92d823d098e6367284d875a6b223a9303ff5d18cdd29fac2bcfe4e3f27644c","src/text/licenses/OLDAP-2.0.1":"72d3fbab94ed770db223ca2f5dc3f0700805ea2809c7a0fad92c41107c3bfc32","src/text/licenses/OLDAP-2.1":"7d0daa4be8f9b0097e33a4f00a81f56f25958286dec7174a51c7af37f31d317c","src/text/licenses/OLDAP-2.2":"c3c419c0add6a38ce764cfb6028e418dbff699f70cd385184ea9801483e80ac2","src/text/licenses/OLDAP-2.2.1":"e1df968e3a515dc8b534fdee0beb000e60b03e0aa0a9ecc62139f82049486564","src/text/licenses/OLDAP-2.2.2":"0536a80b67dbb8fcc5871d5239b647cd17d6e70e4efb1b6a60622601897103f8","src/text/licenses/OLDAP-2.3":"8bdb33291a450d9243da17bc29a8b332d086fdce5604f509454838d994bb04c6","src/text/licenses/OLDAP-2.4":"ee220d44cf6a8fc7bcb937004bc6242fbf36ffb004f67118b505149f2b7937ec","src/text/licenses/OLDAP-2.5":"1dbbb42c36af2f350e5b065e18303b34bb2b9eba8a4e97dfc50222160d1e74d9","src/text/licenses/OLDAP-2.6":"35e63abfca5cefb237a53afbeaf617e838a01b1a5899e91b20cde640aba3d46d","src/text/licenses/OLDAP-2.7":"4aeee2ed5158ab1bbdaef019ae242b12b73f616b3bac0ad0f40beeea92c9a081","src/text/licenses/OLDAP-2.8":"594064f2e6fb5ed255656e4493c44691b1bacb9df563bfa1b30e0c2f4449995a","src/text/licenses/OLFL-1.3":"39882c22d0957be6ea2a6e6835f1ac6764a7c3a0ca47ef84cbecb579ccec02ac","src/text/licenses/OML":"d84bd46fbd8d9a45e90c2b636e35b45dbf5878353bb214a69de0e83f1c88932d","src/text/licenses/OPL-1.0":"a09c7fd8625190a115a743a121e1b8383e6c7e30ac93bb5c06db874bb860c8fb","src/text/licenses/OPL-UK-3.0":"b10557f42e24fad83adb4bd155e475a2e8d4235e5d908b042240ebdd1cca8b33","src/text/licenses/OPUBL-1.0":"d4a2dedd96a6bd6818e50bf50f11946355db5dfa4c759c516ea9ef98a34399db","src/text/licenses/OSET-PL-2.1":"38cc3bbb4be4a8e76c632925eb33f0ea02d0077a629a62b16df0b31ef4315b58","src/text/licenses/OSL-1.0":"2fe26aee33e037f43b58c589a4af9b808329aa6145470cd91d1f252b42470117","src/text/licenses/OSL-1.1":"c05b98ba40e353d4451a5d1e96a08d8939421b6e2f51edcfbab38f6ebbb0f02b","src/text/licenses/OSL-2.0":"ae856b4549bfc186474e23f50cd8094d103980c1f8559889e87d42b6ce0255dc","src/text/licenses/OSL-2.1":"d199dabb4aff0be874a5a93ace16f852c3319a075ca07da79e92146186ab66a6","src/text/licenses/OSL-3.0":"81fb606bcdc628cd72040e53460cc6ab836d30f55e50de21fa5cae1f5c158d96","src/text/licenses/OpenPBS-2.3":"648417982aebe3da0478c271c4821bec1ea9a0c5ede8245cf1b3256fbcbe8165","src/text/licenses/OpenSSL":"b52fdcd2da098138edb9423e8ea35766677765763460df487b60fa5050b34251","src/text/licenses/OpenSSL-standalone":"272da7a1a8c47f0e2dc851821db42eb15c03ccd37b939d1e36ff87e4f021fea4","src/text/licenses/OpenVision":"025a9ba45686616eafa7f03e0054fbc2c2e2026a1a4fe12689ff9e9f62cfc931","src/text/licenses/PADL":"8ecd462cc8372df2059ad574603deb4ce08a0b0f525aa768389c8e1f5cbbd782","src/text/licenses/PDDL-1.0":"45ac42bfdb32740e76437c285982e7261849bc529a1cbc346b238cd443141178","src/text/licenses/PHP-3.0":"0a7ea06f9c15ad8fd85a4be404433e39d0594e8bc3ad2fc29d05a4a050d4cd93","src/text/licenses/PHP-3.01":"81cff089cea63f0e6d070be8852cee15bcdd638ba120969963476c4ac0e2e84a","src/text/licenses/PPL":"9302d1999e862dc23de4b57af573e9601a8391cd6e5201869c929884d856db26","src/text/licenses/PSF-2.0":"d67482e5dac1f4528997143ef626c95274fb5857e86fbb3e29fe4cbf66f03160","src/text/licenses/Parity-6.0.0":"0ab9e24c8357439f5a2a29adc3e964e702c20fbd4fed8816b7aa10bfcda6ff6f","src/text/licenses/Parity-7.0.0":"e78cb6d3f8ec65c7a4e2abb8376ec745768fa1e0062c08ab6ab8f54b73b1496c","src/text/licenses/Pixar":"444e56d41b71199edd9fb553d82d76ab178c9c77056f8ad21e49c810e2f513c4","src/text/licenses/Plexus":"fda88c3e5ab0aee121f216ea86a2978872d3117f031ef4d124c05f3ceff798d4","src/text/licenses/PolyForm-Noncommercial-1.0.0":"5b87de44a59160613a93f8ee01c4e14a17fd55f9f3e4c18ffe0382d3285f6961","src/text/licenses/PolyForm-Small-Business-1.0.0":"b137cf32e963d5a3a4e0b6c79047029289808fbbd94da5c6db7af31a7e5b4d44","src/text/licenses/PostgreSQL":"a891f343e90a53a5c621c7036e95558e29f956c3d98fb4086e438d84510f564f","src/text/licenses/Python-2.0":"4fa679f90a6f329e94b37e09449a04e7e815ce79bf773a0c859762160232fadf","src/text/licenses/Python-2.0.1":"58b0c88160862629fb05ec3538083db9cdbff2aa694f3a64a3ff93f19e5bd54f","src/text/licenses/QPL-1.0":"a8d6d5e5841d623e57bff66b0e991844fc3c370285274bcb4d860bb57271c4a9","src/text/licenses/QPL-1.0-INRIA-2004":"63c68392833a2b0fc8fbabcd66c76f20349568d98d2ca8bf4c46ee8cf70e3ef8","src/text/licenses/Qhull":"97f0b70be72c3560ccc049fe46344136b6946855c942bc1c49c85eaf2294273f","src/text/licenses/RHeCos-1.1":"5f5af9523a2db703b52b51634730741e26b9067a73ba11ef1a65323acf1b1123","src/text/licenses/RPL-1.1":"f3405323e28e5cb71721a7038f2eaa154cbdbed38a978397a46a78c15c5d5a38","src/text/licenses/RPL-1.5":"2b649274419972a8eae6e6fbd79d8159113c8384e3b2eda0ee00a6562f440919","src/text/licenses/RPSL-1.0":"b566afc90e6c3363e60861d1f095170262241f72da545fd72b18e2c10ce7be27","src/text/licenses/RSA-MD":"450d1077ede086cc4328805a8fa619d721d7328630c929dc5f139ea3897d7625","src/text/licenses/RSCPL":"3d259d43f57450b9b53a36159af6e75fea73fca49fa6f4320be951b10edbe603","src/text/licenses/Rdisc":"e204dfe53c8f4924fdecc5c6c97338271ca28a5b9e1c1c278d14bf7f96834b93","src/text/licenses/Ruby":"2035767ae06c8d7aa51e6dab2597a2fe87a461c11952b71892732b3bcf7db00f","src/text/licenses/Ruby-pty":"d2ad4c24ff14cf14e687c1d1d8db805aac8b80bdf83ada3ad54209eb6a3656c6","src/text/licenses/SAX-PD":"c4c44a340c46fc8851e3649b017dbc2a08fedf769043124debc3d08d753ab06e","src/text/licenses/SAX-PD-2.0":"e78a9e34f76168c027e29afd153b3c88ac019a94a28a9ea55e30a21cb31c91da","src/text/licenses/SCEA":"d4f58fb03abf4398d76de342097e2650b456658635075b7c077b19ab789db7f0","src/text/licenses/SGI-B-1.0":"c6e68e34d99bfaba315e0674af5d7ffb53f3f52d374f40ad251ffbb3827a7152","src/text/licenses/SGI-B-1.1":"ff51082b02507f809255621656e44b096954684c341f6a4333f71b18d7bff7dc","src/text/licenses/SGI-B-2.0":"7e2c3b20eadada21656edbc248d4665ca8a747d42966566387f0c62fc3b8b16d","src/text/licenses/SGI-OpenGL":"a19b1f72879dd88279ed1d7c727a22f0d09fde52ff13f2f0c6d793df18fb423d","src/text/licenses/SGP4":"a48af91e1992f1c6c99b6be64622ffb8210bbc78bbbd75420a1a91be06810d4e","src/text/licenses/SHL-0.5":"b4a1c3eaa8b770bf82212533d856d75904557b19e4a2b8be2e58c17481d2588c","src/text/licenses/SHL-0.51":"9d9f19a1e1e87185e71b75c5a77b81f926fccc8427897f9112a167cef1830acf","src/text/licenses/SISSL":"e1cb1537b3f7df4a59ba3c5239a5d0da98d7dbccb42ae44dc9e5dd874b071e5a","src/text/licenses/SISSL-1.2":"d71ea6dc86ac74af3b4ef90f65b1e6fb044b70913cba74bcbfa3adc697890fe3","src/text/licenses/SL":"7f4c215a8b6c1edb939caf2607995208e2cb7d03ad40b335fda2e1511252de95","src/text/licenses/SMAIL-GPL":"c0b533ca7f5854f88d2bf4278e31c94765db1397a703074df25fcec5aff9c6dd","src/text/licenses/SMLNJ":"35c0e4e123e18088aee49f7afe5042a27d31c1bf21b6bb2a94f1fbd79c1f0111","src/text/licenses/SMPPL":"40660dcbabac143a0d81ce004f868e207012da6022be2879f080e590949fb0ca","src/text/licenses/SNIA":"f472d233d775c16aca28ebfc72875ca4743660611fe88dd3cd313b74e27bbda6","src/text/licenses/SPL-1.0":"177e82eacb388661fbbe7cf4bc62b1a81bc7deae7aaa6e4d1ff53d4365dd5d44","src/text/licenses/SSH-OpenSSH":"0cad42dcdb06b5b786d96e74fef3aacad9e954050855f33d1b5057c0831db4e9","src/text/licenses/SSH-short":"7f04b8d3b84d677117a0b9b1d1f7b2a63bd5a948c5d66efc12a9ef984f9c1db8","src/text/licenses/SSLeay-standalone":"2de99e636e6d356bef7ab96d0682fe903721a2b80b16271f7eb701a3bcb1ffdd","src/text/licenses/SSPL-1.0":"a781bc910f38c170e993eb6c4653272615af0a4cf6f8389f6b3e427063ccca16","src/text/licenses/SWL":"35f7e72c010c3950fb095bdabee7e2455c553b21d710a87ebad806e706402987","src/text/licenses/Saxpath":"aaea5aa0f3c19770e9b8ecfc6b3acfbaa8d9c736d286d51fd916303edbf391fa","src/text/licenses/SchemeReport":"a2467d004ceaa6e33908c707926746e7f8b9da1320f5ca1b31330374f3972060","src/text/licenses/Sendmail":"12836a800e71125130dbdb221c84cda2790a3f8fb08a42ae0e2cb202d409822c","src/text/licenses/Sendmail-8.23":"abd2cf1a05df0544e30bcc1a50f3383fb5fc338aee99872a217c05c4218b59c9","src/text/licenses/Sendmail-Open-Source-1.1":"7b629e1edb6c9340934d9201df3ec9011f48e1140d2a23232cd4b1fccef81fb4","src/text/licenses/SimPL-2.0":"fee5683eed65ea0cdc99ad04fd4d70bed42a9c15f3c38052a8b84a679380fd52","src/text/licenses/Sleepycat":"26393213c97077b4275914163a3598fae7ddc5e9bc427e36a88dd88bdc3d8c55","src/text/licenses/Soundex":"5081c788d3ea4b0209d3e60f1294fe2e515b07b2171065b9de7af533f5a56dd8","src/text/licenses/Spencer-86":"960ef09a9d58af3bf8be6a01d8311008e257560f7f395944bcc32e46c89ca723","src/text/licenses/Spencer-94":"dc7bce8715fd48ceab0b64c093a1953512bd1778297ba6cbbb30518c9bfc493c","src/text/licenses/Spencer-99":"df9a1efcb970719c5a325afc6ada9ebeb1a43aa0d7ef2b0a137cd050132ca0dd","src/text/licenses/StandardML-NJ":"3a2672908aeddf1891aac8c21c0db820b9c8ce2c94a10612523d58bdc636c1fd","src/text/licenses/SugarCRM-1.1.3":"56995526446bef6d1c134f23acb10445ca565bc7ea2ef4bc3e19f2db141712f0","src/text/licenses/Sun-PPP":"31422997f40b2f0d6f0bc48ee9c1c0edd89e88b64408ce03fc987e351415e7b1","src/text/licenses/Sun-PPP-2000":"5652d77b66ae215c07d35f30a91913dcbe994af4ccb930f78e4db1d9d7f9e43e","src/text/licenses/SunPro":"065468c166942235f26b40f1c4acdc18ceed314e5f2883edad2a3b0ba1dffcde","src/text/licenses/Symlinks":"26f49156b0aaa5c2a8aa4a73e1c73df78e190868f67879d00d02a0737b629bb5","src/text/licenses/TAPR-OHL-1.0":"9249cf28c7648899be179534cf29f6d80e245c0e14cfb2138b1fe12c39ada059","src/text/licenses/TCL":"bc6b78c00d46067caedaedc7189a85cee89371abc2655f2c047cf95e9a1a75e3","src/text/licenses/TCP-wrappers":"9cb6fe0ec3e222da0c53e6eb656a68e02ee5d13cac19f17092deb9aa77e0aa84","src/text/licenses/TGPPL-1.0":"5ae6a4a14d4940e7de53cdbd2aa8fdd73e0b0c44ade2e3d93719c014d87422e0","src/text/licenses/TMate":"17e193a1da923d671f94fcb51f15e33578bef279e9ae0387e134750e48a253a1","src/text/licenses/TORQUE-1.1":"20392d661c4dbbb99e9e7f5cf5ecc2a2773c3824547dac90cf81db99599a6c13","src/text/licenses/TOSL":"aa58c3e9ec54bca823c61b495ce2df43fc35c9cd011733916686979331c36317","src/text/licenses/TPDL":"52e46f59ccfbb400d3d6707128a6b68a35974cf49c50509f950698476117cd80","src/text/licenses/TPL-1.0":"4dd1b423fe602dff87d6de6726f1c6592a03d2a26df2cf78fda10fc5363c87a4","src/text/licenses/TTWL":"71a20b9fc009fff5f421b9788f5c42ecb3c61f1d4293f5f538c90895212dfa69","src/text/licenses/TTYP0":"ebed58fc95446746921ac2b7d2c9d738fb0838af1dc67e1297c2d887ab0ad980","src/text/licenses/TU-Berlin-1.0":"3d9a5d0fe3f57171854cb9f71ab53471a56cbebf199546f2247c9c6e72c13608","src/text/licenses/TU-Berlin-2.0":"564f08250c3d7b6e6abb36065a6459a7e1c73515e7f09f8cb197ce10ae0fc9aa","src/text/licenses/TermReadKey":"edc4ca48f2e9d5251b59ead37e4aa08f5ffcfd30c3f9ee54f8f41fd1de829255","src/text/licenses/ThirdEye":"ee052eaf53a91a78caa5c87fe9ef649a52b8ec5e0c2ee5499116d9d0d8ea0b64","src/text/licenses/TrustedQSL":"383caa7ddde9e2138526ad6926e86ab2b16ae66ac591dbd29c73b1dc0a5f6923","src/text/licenses/UCAR":"7843c47b011a9b621cf17e3c1f70cd759baf02669dd81a3a5969c16d1d80f770","src/text/licenses/UCL-1.0":"5320e0109a36a6a032f4b483c5fcbfe9382e28431e45606ef90bc688d38bc849","src/text/licenses/UMich-Merit":"b8f3dfdb6c8da1c2309792fe3b1f1c5a51b8a42d4cb0570a3ff3ade71d2b5259","src/text/licenses/UPL-1.0":"232341243b15140bbeb6115f662c433c3435ad46ee6ab4f2ec879dfbfb177f60","src/text/licenses/URT-RLE":"8d142f8178117a888c6869bdcacc9607035b3e86a1b4f1369ae1203963bf6e9b","src/text/licenses/Ubuntu-font-1.0":"a9f466ee2e78891d6ee274b3da9c1567d909ec329104f3fdde43bb27186cbce7","src/text/licenses/Unicode-3.0":"5f0e74cb9608305b00f3ffcb2363d93305950b35cd35e435ae078c21d63a5e35","src/text/licenses/Unicode-DFS-2015":"3a52e39d8139f2fe7a78828755005621cc137a0f94ba1bbf8f7a45f73604b896","src/text/licenses/Unicode-DFS-2016":"908a701c33bc8102c7844ea9f3cba72002bf87cde1a7055bc59b1b8c9cd4d2ae","src/text/licenses/Unicode-TOU":"c5139e0802344660f99a2f0a00d97db57ab7d4fc6d76e1acffccbdb1a7003aa4","src/text/licenses/UnixCrypt":"377a20717038750919f218aa095257c46caa2731ee25af1c348ee66c1d7c7583","src/text/licenses/Unlicense":"bfc894afd754c14520be9c3ae14a959464f6a083c041d655564e31871cc2c320","src/text/licenses/VOSTROM":"5611c9f0a82db6c0d4a63346cc4c2798bcf150088c69aa0f7271271d9956ad5d","src/text/licenses/VSL-1.0":"8ddfa0ad2780d0f09ba890a577a8ed901ae41dea9fad97d663f4844eaca11987","src/text/licenses/Vim":"5e15a353f6b0db0c3521d2c8a7f1935f60ed96ecb0ab6947950eb472ed9209f9","src/text/licenses/W3C":"1a7b8aef68d6eadb2462dbf1bfde237f30df8b46c24c73a3979c715aa38f0e00","src/text/licenses/W3C-19980720":"02925d93137632c94b769a15fde33858fcce724dd7b6545c499719238714620a","src/text/licenses/W3C-20150513":"ab6f092e9e9659bcb30bea39334399ec4c15731cfc108e7ba8828e928ee459f9","src/text/licenses/WTFPL":"43bd14d4561d06e479d9e1973ddd1444b3d8297e6a439e673be489e8fd7890f7","src/text/licenses/Watcom-1.0":"f13551b01cb75628dce10ea306cd647712f0673a13b2829b056d7b03951f89ef","src/text/licenses/Widget-Workshop":"daf2e3a2c214388d66c86dc7a3c46d28e667d595942ed5b557a30e8351e493fa","src/text/licenses/Wsuipa":"92c1777c46ecd27148c349b61fb04939f306b72bcfd3bc08a5bb3f3fd726ab72","src/text/licenses/X11":"7f7361ec093d431e7c40f1f7ea1017c3dc6ad4ae9053f572d44b8e70a2fc3136","src/text/licenses/X11-distribute-modifications-variant":"f0e5a56b5994599f788301f30e51eacf36f7fa14fafd3c416deee1c79083d71e","src/text/licenses/X11-swapped":"cbff2270e7e495a0ac1ce0a555dbc0417c7ee36ba12b06f61e8378fb37aac686","src/text/licenses/XFree86-1.1":"706ae26e7460492fac9ab8192f2f2d9de25bbe73627531722d5e327a1f10d46e","src/text/licenses/XSkat":"1107e79eb58c1696aed5d0182509df093822d02493c5a607ccc1f48da78dd879","src/text/licenses/Xdebug-1.03":"cf58deab9857cd12000ee3efbcade234903e9c07688fabeacedf25be3c3cf04d","src/text/licenses/Xerox":"489d9c7efeecb5b37c7147c565a847b7cbdeb84f79a1c2824955a76d47b6de0b","src/text/licenses/Xfig":"b3bb218701f3fb2d31710ac6f80da42f3cbf4904947512a43c63f4207852d717","src/text/licenses/Xnet":"9dccc3b9b95647cd740c2ee398f5435efc8cffc0f86b62f39f1c7a3c94550ce0","src/text/licenses/YPL-1.0":"7a0aa985fcb4f2d200cd188fb46276812f73e1fb1ef763970bb8cb97fe886e7b","src/text/licenses/YPL-1.1":"117b2b4c1adc16fa8f5c3107fc3397c52bd01f951e7ae040a1421c2643c73118","src/text/licenses/ZPL-1.1":"83ff66168f5be6c0f99e01e7293b67a0e11e4334955d5eb0507f5756b85176e1","src/text/licenses/ZPL-2.0":"1231ca0cde7c0d12d8ac85140f2380ead734a7de969c01943532b6155f658135","src/text/licenses/ZPL-2.1":"da1414ab888ca8a9899a5e7f83d6b4ef192057a24f9e88139bd0a32d2449b6c3","src/text/licenses/Zed":"db26e41c8ac287779a7e74577fe2cf53f9664d516a200b4ba53b2a81d1be7c51","src/text/licenses/Zeeff":"8127c5006fd031555c6efaf555af1b5d76cb7bc087c0192f9b56ef21b34bf6a9","src/text/licenses/Zend-2.0":"71f045b5074cf8dcdc91a09cee22b25a8704e3d56bfbe115c8f142b6657bc201","src/text/licenses/Zimbra-1.3":"c8c8af63d2f2a014bdad1409d18ed6f9607b6d7cf9ced0c3ae0af1ccfcffcbac","src/text/licenses/Zimbra-1.4":"13cca63ac9514cfbf14dfdf0cbcdc326773ade96fada688d01fa6c8a5920d0b3","src/text/licenses/Zlib":"8b682b616d2043852e55295b262b4b11e261a6e297d8d9aa89357a8082fce9e8","src/text/licenses/any-OSI":"fefdcc788cfd9fa0fddef25a7789a807802eb07b16783395f0e581989c25e2f4","src/text/licenses/any-OSI-perl-modules":"52d425bab2aab99f82f961a4117daca884967594560ce1e6a3b30f4aab4c5839","src/text/licenses/bcrypt-Solar-Designer":"a28ba992641a04363ccdf1c546ab4d149a607b7f9e411dea42a85686477b9110","src/text/licenses/blessing":"e3c609c89761985de2b89c88247f5b2efe4cc6512b2312575391457219b33f55","src/text/licenses/bzip2-1.0.5":"9da69b5fa2ca8985031df9c37de8257a71a03e220783d910deda7a7e06aa3525","src/text/licenses/bzip2-1.0.6":"0958f6d0e5e711450bbaf8a196f8db5cea0a4abccca7f282f270ffd18e70b7c8","src/text/licenses/check-cvs":"c229cb28eb826059e35527aa5d5ea6c24ee7a4dec5dedd71e9d7877e90df22ef","src/text/licenses/checkmk":"fb3cc74bcac1476b863dd79f9bb9f3385a3b8a782fcdf6bf9d6792bc63f7af08","src/text/licenses/copyleft-next-0.3.0":"315ecf001c5499a1157c5c031bddd3982a5cf13a2eb8b60277401342192975d7","src/text/licenses/copyleft-next-0.3.1":"22d5bae7579a8e404060110a01a57196960b8071035223bc1744f515f07c9e3d","src/text/licenses/curl":"01a77e446e3bfd0e877f37719779cd8e4b7d70c2bf7510dd680629a0f20d375b","src/text/licenses/cve-tou":"3bc7feaa15ace4caa3b96b41c447fff8d42588d602b423e36444448f3da48988","src/text/licenses/diffmark":"1227d3f80fae8346e9951d119109be46cd3de24550f8a1ad68fda4fba99df8c5","src/text/licenses/dtoa":"a504e699d2ab925ff89caa2434dcdb134a5bb949a44b756c843c40ed340dac44","src/text/licenses/dvipdfm":"e274d186874d8cf4cfaa5084e33d841127897af75b52a22d24e436cbffaa687b","src/text/licenses/eCos-2.0":"eac19c30ef10e301d7827a24c35b6c9e550ad01deeca89e2c263b6feaf8a00b8","src/text/licenses/eGenix":"5f66889418ee2e479d5af92ad50b8dda4c263bab23534686d9b2ef37a65ad9f5","src/text/licenses/etalab-2.0":"723f79c0bdee9dfa003ee342d5ae8e305780f7d112876a4012b09605a42740c2","src/text/licenses/fwlw":"db6d2cbfc0b930e7a4e350ad017c445768c8bb51731bcbda40e676fa3e725e34","src/text/licenses/gSOAP-1.3b":"22047c5ff710d8c11d72cd6c17a2174203b6fa5313b99234f4948d5d2957e9fa","src/text/licenses/generic-xts":"873f3d28714387797016b56737ad61e9426b9d0fcd65da68b86312f6a943e4fd","src/text/licenses/gnuplot":"bd14706d0657bd227fccf72f9c4563b4e8da643aa44b2f8b713ebc262f52ed5c","src/text/licenses/gtkbook":"81cc2b1b1f299fe342341609bbca6bbcb0bc716e0a4bd7dce446530cc66e3a6b","src/text/licenses/hdparm":"6f17d515c7efa8825c55fd8ea438b0d5415c89c7315ed5f491c3b4b11e860c3c","src/text/licenses/iMatix":"e3c843ac6145c54566392729fcb8afa7936a84271ae73f4b5a17138e684c2524","src/text/licenses/libpng-2.0":"4149e2a41ac1187a3c188bcce1d581d995357a4719ee9e64a66778a0749795a8","src/text/licenses/libselinux-1.0":"1b977c77e0e0b1ae3c01402fc7b95820af1d3623a53e3a93f650024271f1842d","src/text/licenses/libtiff":"4eaed6fd03111365e55905c518b260b139c241d58b657ed1a6039d855f2ae0fc","src/text/licenses/libutil-David-Nugent":"595c294a1b5c973b6992dc9aafc415e710ecc10c2ff163981e318ed2985fdda1","src/text/licenses/lsof":"a95a606dafcf4ed5f8334a53b9b67e1db508b24503c3926aad3287ced49e821f","src/text/licenses/magaz":"57d33894b50a45f87a1e82cb4ad9249cfaa5ed8c6b58575099de6092e033ec04","src/text/licenses/mailprio":"9e242d276c2b952dd2e0eaa411afae480cb9cbd33487c0bf4241dd08a099ee61","src/text/licenses/metamail":"74bfc2d97a489078f955c46c1df97f27f38cb367b99c0c122424507c947df21c","src/text/licenses/mpi-permissive":"fc63093a40f452d9b2bd6bd69320ef31a646f9134698548b7ebb26f074637508","src/text/licenses/mpich2":"5f05d56ed7d04fb7f5c8eb3a0555b4246dd240a76abb65cf93ff122474ac73b2","src/text/licenses/mplus":"c1a2d13f201753ef98e8c8b6f6f86740699c38305a539627eb25906952ad69c8","src/text/licenses/pkgconf":"fc792f59c641ea4033bd06ca2ef0cd034531545120a088aa61f9dd987b95bb5a","src/text/licenses/pnmstitch":"c728aecc598193678c2ad888b85060523f3fbcc76ec7003f3705ffebaa502267","src/text/licenses/psfrag":"6f59521c701c5702a4949494da2800b315b7780361d6d670f9364eb8b3a5d541","src/text/licenses/psutils":"5ea4df4d6be054108d8274a94717f949cbba1347da0875e5d33601915e17778e","src/text/licenses/python-ldap":"3a5d2d3e26921c5527ff39490b37369e3930794f58276d5337917cb7099e8b70","src/text/licenses/radvd":"f205fa3cb2a90a5c79e81bae9df8bffcafa1a09b861a927d6fa8738fa3cb7e22","src/text/licenses/snprintf":"e98d1f943a3731125e8f843fd446173a745ae4ee1f1ddd09a698874ba6d91ba5","src/text/licenses/softSurfer":"33a694ddfb0d457a0b124c5f5cc80b3e5847004e97ac30187564fffa7f8539fb","src/text/licenses/ssh-keyscan":"3007497cf3be7dce24caa154226c43263d8924b8a54c162bd2f856d68a040b7f","src/text/licenses/swrule":"88de1b8665028a2937b6608b4e9a7ec6ba83d0efc4af9040625466b02fe8f9cd","src/text/licenses/threeparttable":"790508924cd0da3b16258eb56d1b01e831738304628227d7b5c1b7e123cbb6b3","src/text/licenses/ulem":"405ccde8751334aa0a283cc874d5408aa3f8c3666f87eb2eda58ec311a1554b9","src/text/licenses/w3m":"3992b8d032797088d038335adc2086b0759f03963cbf5e38f2b32adcff51dae3","src/text/licenses/wwl":"71bf92f19b17938817df8b90bea0daca55165257b07d45ec15b84ef0fa5302c3","src/text/licenses/wxWindows":"7babf8acec1830daf2da190b5c1605bcf40bc991d7f48d42fa805a59b3141c1a","src/text/licenses/xinetd":"c136c175ea35cc75083c9c78dae1a80659fb7c4843a4a1bd4c57af3957c2fd4d","src/text/licenses/xkeyboard-config-Zinoviev":"bcc1176eb9c8cb6d5cb25922afdc98e2901d9c7b5195769a97b3ae8641c3425c","src/text/licenses/xlock":"4e12ed1b776c0d9ce26e001b7dc0249c6fbbc5a3de30c760e5dfafe7a08c7191","src/text/licenses/xpp":"35fe38c33b1f23a991a1e20e8273c2aa8927fb281c02322e8c01411fc22ce86b","src/text/licenses/xzoom":"01ff7f8738c716722eaa3d8c21c6bee6684e5fe720b3fa05dc516d00cc22d673","src/text/licenses/zlib-acknowledgement":"701aefec0795eadb70bcf26757ebd6b8b9d4494242bfa3cb72a0d1996e366569"}}
\ No newline at end of file
diff --git a/crates/spdx/Android.bp b/crates/spdx/Android.bp
index c8dc6ac..5202278 100644
--- a/crates/spdx/Android.bp
+++ b/crates/spdx/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/spdx/cargo_embargo.json b/crates/spdx/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/spdx/cargo_embargo.json
+++ b/crates/spdx/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/spidev/.android-checksum.json b/crates/spidev/.android-checksum.json
index d842e16..83fffa6 100644
--- a/crates/spidev/.android-checksum.json
+++ b/crates/spidev/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"29e58ffe16bd0f7477364b7a65d9454b67689cb4899dd794398ea432be4bcd60","Android.bp":"66c7fe16575b23eb8d83e98b7172a23aa90a2084a24ede1e0e7a7445d06625fa","CHANGELOG.md":"3d8d07e61dc26c55cadad667d0bd3a665deb07853af1809a4c71fa0b1b6fbcb7","CODE_OF_CONDUCT.md":"7fefcdbb0097a56ad246546b971488f63b23198a4c8ad6703a228a6274202f86","Cargo.lock":"f154a367547b260d406871aac8fb0d6c017b2338ca5bb82b6e4e9a11020bb62a","Cargo.toml":"5c2a54c6561d5bcb35577d760025d67b128f31f8e6023bbcc1a983ffae3c298b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"9ee48ae1789b204b0546ac4b5d45d5aa2ecbeb047e579f082b615c3ee06d3c30","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2e7606c96b105821c86bebb566455eb56dae3c78548a8cb319d31deeb5ce51a9","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/spidev-bidir.rs":"f2c730a4694fcb838f452d3ac0b127a39691eae7c82df21efa7f96faf62531b6","examples/spidev-hello.rs":"11f8ec890c33e3d72c901e04684b4e6baccd18c4ad3809fc5c9569790aed92eb","src/lib.rs":"7ff24348e32c4c8631ef4597d431155b66cee14545a764c8cc53748b83599c6c","src/spidevioctl.rs":"7b89d684bb40cf6360378a8e43a984e849665f4233df1b1ede250d470955846a","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"29e58ffe16bd0f7477364b7a65d9454b67689cb4899dd794398ea432be4bcd60","Android.bp":"6dd9109fcbc3e4fed8cb29c3e6d8947d8cb04949141a44cc5990b48bc7386657","CHANGELOG.md":"3d8d07e61dc26c55cadad667d0bd3a665deb07853af1809a4c71fa0b1b6fbcb7","CODE_OF_CONDUCT.md":"7fefcdbb0097a56ad246546b971488f63b23198a4c8ad6703a228a6274202f86","Cargo.lock":"f154a367547b260d406871aac8fb0d6c017b2338ca5bb82b6e4e9a11020bb62a","Cargo.toml":"5c2a54c6561d5bcb35577d760025d67b128f31f8e6023bbcc1a983ffae3c298b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"9ee48ae1789b204b0546ac4b5d45d5aa2ecbeb047e579f082b615c3ee06d3c30","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2e7606c96b105821c86bebb566455eb56dae3c78548a8cb319d31deeb5ce51a9","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/spidev-bidir.rs":"f2c730a4694fcb838f452d3ac0b127a39691eae7c82df21efa7f96faf62531b6","examples/spidev-hello.rs":"11f8ec890c33e3d72c901e04684b4e6baccd18c4ad3809fc5c9569790aed92eb","src/lib.rs":"7ff24348e32c4c8631ef4597d431155b66cee14545a764c8cc53748b83599c6c","src/spidevioctl.rs":"7b89d684bb40cf6360378a8e43a984e849665f4233df1b1ede250d470955846a","triagebot.toml":"26772e45fe413284e600760236cfd60cb726b7ae47fde22f2f9c474bd27ff8b0"}}
\ No newline at end of file
diff --git a/crates/spidev/Android.bp b/crates/spidev/Android.bp
index c6778e3..ecebfca 100644
--- a/crates/spidev/Android.bp
+++ b/crates/spidev/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/spidev/cargo_embargo.json b/crates/spidev/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/spidev/cargo_embargo.json
+++ b/crates/spidev/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/spki/.android-checksum.json b/crates/spki/.android-checksum.json
index 853f289..03d6d3c 100644
--- a/crates/spki/.android-checksum.json
+++ b/crates/spki/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c81fcfeaa75dfbaa341cdad7544f18860d01f6cb6c5775a9d3770e12242f53f1","Android.bp":"5bfdb1f56dd3bd67c9a676f46475c9d97eb3853ebe03af147cae082fc1f5a738","CHANGELOG.md":"674c2284819a7cad45464dbe11aab33339743df4506612b204886a88961bf39e","Cargo.toml":"dfabc2c8a914f35b4f5e1949e37449c557e2fc06516e0c7a5a557c0612d5e449","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"1bcbed559a30dd43adfad2206a4008ebc16f38383ab037f2c13120d6ca654fb0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4b3503d20350d83439aa0a4a5c51f362becbd24713f303f5ba5d87d7215c8e49","cargo_embargo.json":"4448b5112a9e6f77c36e6c065e4e1d32175c13d9ba9cb38c98873b721acf96d9","patches/rules.mk.diff":"ee81e05037cbdc3220f80afe5046d7c4d6ba4d68b5da0e1830649cfb0b65887c","rules.mk":"2c7c1b902df4d87467500011436b6b0e27f1d17c4783a1c9c15db2c9f441429a","src/algorithm.rs":"2f8660a4ec92ee19ae5a2d039d8d50ce641f24bb0ce91c7db6d97c9cb2e48ade","src/error.rs":"10f63073f250baa8b3accb836aaed2bde73875b885105893564d2ff01919e708","src/fingerprint.rs":"0b5dda61207e973144839d1ee34770292f22bd7a519cfeb5e3ed18cd76d5fc9d","src/lib.rs":"b2166da27ec0056b05201aa09aecd5fe9d5de1d686fd4cade6a2096f2b034509","src/spki.rs":"cf73a4ceb1cf6ff08210df93dbba7eecbf80552e23315c86fc6a58e87cf5a5dd","src/traits.rs":"2b20dacc7235a92792f816953f8418f3fd3cff15cd9e966d2d1a0013f9a39795","tests/examples/ed25519-pub.der":"e13b6ba770d304b04ebec9e382214ebfd7a276a62d6435ca84ca93daf44a0d24","tests/examples/ed25519-pub.pem":"f349368de6f4c09adc520fd85bd1d7cd4609af598277dae84adcebe07f3114f3","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/p256-pub.pem":"2f8e52804ad30b8a73fefc2a6bf88bcc25fbc858f1f82388e28f41d0c06087a5","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/rsa2048-pub.pem":"1081034bf9140b406ec94af3160e570da8988bfd640b7be07e737ab9a8d20556","tests/spki.rs":"35e6cb6edcaf4ccd4acacb658e7452166737d3b51ff4b0df43530e0d6bcc265c","tests/traits.rs":"46e52a334cbb7a87174e47a86337ffaaeb71f114810e7ea976d9d6cecc613b1a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c81fcfeaa75dfbaa341cdad7544f18860d01f6cb6c5775a9d3770e12242f53f1","Android.bp":"8b2a7019a152ef592af7bcd35f6ee282f0e32b322c5b06cde9cc222c08d2775e","CHANGELOG.md":"674c2284819a7cad45464dbe11aab33339743df4506612b204886a88961bf39e","Cargo.toml":"dfabc2c8a914f35b4f5e1949e37449c557e2fc06516e0c7a5a557c0612d5e449","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"1bcbed559a30dd43adfad2206a4008ebc16f38383ab037f2c13120d6ca654fb0","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4b3503d20350d83439aa0a4a5c51f362becbd24713f303f5ba5d87d7215c8e49","cargo_embargo.json":"9260dea959a7b37f2bb62cc1f77ea2d9868804f1c94a9bbfc1acdf9d483bbae3","patches/rules.mk.diff":"ee81e05037cbdc3220f80afe5046d7c4d6ba4d68b5da0e1830649cfb0b65887c","rules.mk":"2c7c1b902df4d87467500011436b6b0e27f1d17c4783a1c9c15db2c9f441429a","src/algorithm.rs":"2f8660a4ec92ee19ae5a2d039d8d50ce641f24bb0ce91c7db6d97c9cb2e48ade","src/error.rs":"10f63073f250baa8b3accb836aaed2bde73875b885105893564d2ff01919e708","src/fingerprint.rs":"0b5dda61207e973144839d1ee34770292f22bd7a519cfeb5e3ed18cd76d5fc9d","src/lib.rs":"b2166da27ec0056b05201aa09aecd5fe9d5de1d686fd4cade6a2096f2b034509","src/spki.rs":"cf73a4ceb1cf6ff08210df93dbba7eecbf80552e23315c86fc6a58e87cf5a5dd","src/traits.rs":"2b20dacc7235a92792f816953f8418f3fd3cff15cd9e966d2d1a0013f9a39795","tests/examples/ed25519-pub.der":"e13b6ba770d304b04ebec9e382214ebfd7a276a62d6435ca84ca93daf44a0d24","tests/examples/ed25519-pub.pem":"f349368de6f4c09adc520fd85bd1d7cd4609af598277dae84adcebe07f3114f3","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/p256-pub.pem":"2f8e52804ad30b8a73fefc2a6bf88bcc25fbc858f1f82388e28f41d0c06087a5","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/rsa2048-pub.pem":"1081034bf9140b406ec94af3160e570da8988bfd640b7be07e737ab9a8d20556","tests/spki.rs":"35e6cb6edcaf4ccd4acacb658e7452166737d3b51ff4b0df43530e0d6bcc265c","tests/traits.rs":"46e52a334cbb7a87174e47a86337ffaaeb71f114810e7ea976d9d6cecc613b1a"}}
\ No newline at end of file
diff --git a/crates/spki/Android.bp b/crates/spki/Android.bp
index 3414247..c61066a 100644
--- a/crates/spki/Android.bp
+++ b/crates/spki/Android.bp
@@ -29,6 +29,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//external/rust/android-crates-io/crates/pkcs1:__subpackages__",
"//external/rust/android-crates-io/crates/pkcs8:__subpackages__",
@@ -62,6 +63,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//external/rust/android-crates-io/crates/pkcs1:__subpackages__",
"//external/rust/android-crates-io/crates/pkcs8:__subpackages__",
diff --git a/crates/spki/cargo_embargo.json b/crates/spki/cargo_embargo.json
index 679c393..4baeeed 100644
--- a/crates/spki/cargo_embargo.json
+++ b/crates/spki/cargo_embargo.json
@@ -45,5 +45,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/stable_deref_trait/.android-checksum.json b/crates/stable_deref_trait/.android-checksum.json
index e704fba..3367954 100644
--- a/crates/stable_deref_trait/.android-checksum.json
+++ b/crates/stable_deref_trait/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"697c7a4f007af7212cf9753a5549f6cd031f9d20bc70f44d0ed226f66be802c5","Android.bp":"43265175cc051eb3613dedb10940bc912ff5a4cea6995353a612131bd5168990","Cargo.toml":"8670692c07883de597b81604daa421bf14bef1a64389c20763039704300c1ce2","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"a70c8e62de3f3454a48f2bccd7d404e24569b72e4f9eaf38015a8f50e2070fdb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5125a53f976f6f90d73874a363c1d8085420c8f2eb700929d2ff307ba7e999c1","cargo_embargo.json":"023a69572e26d01f14a025ee2c499a7677824a699b326d9bf19cdd91b39c8dcb","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"fca42f1ec224f002b3f52b1afbfec176cd9567904de814bf1ffba1528c84d52a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"697c7a4f007af7212cf9753a5549f6cd031f9d20bc70f44d0ed226f66be802c5","Android.bp":"7626d1ba769a36f3c49430ca51f73a5626f00c55def8bd7c2f8a53a06ec8c70b","Cargo.toml":"8670692c07883de597b81604daa421bf14bef1a64389c20763039704300c1ce2","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"a70c8e62de3f3454a48f2bccd7d404e24569b72e4f9eaf38015a8f50e2070fdb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"5125a53f976f6f90d73874a363c1d8085420c8f2eb700929d2ff307ba7e999c1","cargo_embargo.json":"ef93915557a172ff032708c1651e583596085ae5991ee06bcca3dfa84c5444e4","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"fca42f1ec224f002b3f52b1afbfec176cd9567904de814bf1ffba1528c84d52a"}}
\ No newline at end of file
diff --git a/crates/stable_deref_trait/Android.bp b/crates/stable_deref_trait/Android.bp
index 28644b7..f5e3a5d 100644
--- a/crates/stable_deref_trait/Android.bp
+++ b/crates/stable_deref_trait/Android.bp
@@ -36,6 +36,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/stable_deref_trait/cargo_embargo.json b/crates/stable_deref_trait/cargo_embargo.json
index 9798990..af3ba12 100644
--- a/crates/stable_deref_trait/cargo_embargo.json
+++ b/crates/stable_deref_trait/cargo_embargo.json
@@ -7,5 +7,6 @@
"stable_deref_trait": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/strck/.android-checksum.json b/crates/strck/.android-checksum.json
index ebeb353..48cdb50 100644
--- a/crates/strck/.android-checksum.json
+++ b/crates/strck/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c21830e2622e44c918caac79acb1876bc2e53801bbe3cefe99ae375c0cf147e1","Android.bp":"697fbd7e1e8d52ddc22026f4c8bdfb4e4efd4da292a85bd81ca10ce9841436a2","Cargo.toml":"ddd875f9a65a3fe12fadfa7d05b245ad22bf89ef991adf3f4618ab8ca58c170d","LICENSE":"925c27109d285db9a03a9f65accd174639adcaa7bd8a2d87b6fa265dcdd51f65","METADATA":"9e2a9c4514a8d39c9ae74f26b6ce53824a2665f88ff489e032d0fcc6ebc39ced","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c77b5c875c26c172b7892cf1ee3b612d4069acad02862541fda54934ff12d97a","cargo_embargo.json":"223d1d30c6ec772545ff36514f19f2ad5b63edc0db85fde7bd415778747edf57","src/ident/mod.rs":"c7622504b90037a10926de56eec8cad1c40baa0620b2d7c5716885db19c5cfa4","src/ident/rust.rs":"bbb82383158eb93b014befa3676c6c27d8acc1c0d7c813b48d4bef0a8ec83e54","src/ident/unicode.rs":"1d3c2367aa1c8bda2f6b92a42d740e95bb003d303a2bc6c53535f3b8804e8aa0","src/lib.rs":"fab4b94e369a4373ba8350b13ff16f3624a98d8bf302eb471a38e2673c5b9d7f","src/partial_eq.rs":"06ba6ae2ce101898047a68e4d53b84f3756e910b30845619b185e9580cb17ff6","src/serde.rs":"bc8785fef135bc5e9bcf6018d573baed14fa0c9b3bd850c705ea924004b3863f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c21830e2622e44c918caac79acb1876bc2e53801bbe3cefe99ae375c0cf147e1","Android.bp":"e2405d5a5b3f89d5ff1af3b15124b7a904a2454e59fd7deace90649cc86616f8","Cargo.toml":"ddd875f9a65a3fe12fadfa7d05b245ad22bf89ef991adf3f4618ab8ca58c170d","LICENSE":"925c27109d285db9a03a9f65accd174639adcaa7bd8a2d87b6fa265dcdd51f65","METADATA":"9e2a9c4514a8d39c9ae74f26b6ce53824a2665f88ff489e032d0fcc6ebc39ced","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c77b5c875c26c172b7892cf1ee3b612d4069acad02862541fda54934ff12d97a","cargo_embargo.json":"33a39db0b987164ec15243ca34dbfe3700798324f7b0c322c6a40285150d297a","src/ident/mod.rs":"c7622504b90037a10926de56eec8cad1c40baa0620b2d7c5716885db19c5cfa4","src/ident/rust.rs":"bbb82383158eb93b014befa3676c6c27d8acc1c0d7c813b48d4bef0a8ec83e54","src/ident/unicode.rs":"1d3c2367aa1c8bda2f6b92a42d740e95bb003d303a2bc6c53535f3b8804e8aa0","src/lib.rs":"fab4b94e369a4373ba8350b13ff16f3624a98d8bf302eb471a38e2673c5b9d7f","src/partial_eq.rs":"06ba6ae2ce101898047a68e4d53b84f3756e910b30845619b185e9580cb17ff6","src/serde.rs":"bc8785fef135bc5e9bcf6018d573baed14fa0c9b3bd850c705ea924004b3863f"}}
\ No newline at end of file
diff --git a/crates/strck/Android.bp b/crates/strck/Android.bp
index ee0d16c..77d677e 100644
--- a/crates/strck/Android.bp
+++ b/crates/strck/Android.bp
@@ -29,4 +29,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/strck/cargo_embargo.json b/crates/strck/cargo_embargo.json
index 7431b41..7e88c22 100644
--- a/crates/strck/cargo_embargo.json
+++ b/crates/strck/cargo_embargo.json
@@ -1,3 +1,6 @@
{
- "features": ["ident"]
+ "features": [
+ "ident"
+ ],
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/strum/.android-checksum.json b/crates/strum/.android-checksum.json
index 578f383..ea77098 100644
--- a/crates/strum/.android-checksum.json
+++ b/crates/strum/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"01c8cea6f4f78999eef4c846985f21fad83b7209ff32ccfd2c931d04fdc1edf5","Android.bp":"9cca58ae0552b26d30ab260887aa8921ac8f03448cce29e7ebdb2a0ae776d4af","Cargo.toml":"2f79195a448fa01a3c78dff2c62ac68ea5be6347cdfc20c6c8b6c50dae03024e","LICENSE":"1884079d8260fd6643f913346f742df6dabc32a0d1d1a973f6c70b2ae20383fe","METADATA":"4b7fef6289da6bbdd50c2c24fea739346deaad6b21c73e183a3dabfe0e7c4d02","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5a072044da2a52d2a656564d830e2960cfb8f242a68812cb03290cb7b247b2","android_config.toml":"9653479b2e5807b447bc6d909d4de097906bb43f6bb6a9ff3c97bab55df52f7b","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/additional_attributes.rs":"fc2e26c26de442bf925fc69a1ce5091d49639e08bd7611318abd28c815affcf1","src/lib.rs":"8a635261891a311a737235ba8f92d006f4d8c3af879c9cffd2841a86cdb0ff07"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"01c8cea6f4f78999eef4c846985f21fad83b7209ff32ccfd2c931d04fdc1edf5","Android.bp":"c69935c269919556c62f31ff2a9e7519bda5fb8ad95c8ab6fb926fdfd1a1aff0","Cargo.toml":"2f79195a448fa01a3c78dff2c62ac68ea5be6347cdfc20c6c8b6c50dae03024e","LICENSE":"1884079d8260fd6643f913346f742df6dabc32a0d1d1a973f6c70b2ae20383fe","METADATA":"4b7fef6289da6bbdd50c2c24fea739346deaad6b21c73e183a3dabfe0e7c4d02","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5a072044da2a52d2a656564d830e2960cfb8f242a68812cb03290cb7b247b2","android_config.toml":"9653479b2e5807b447bc6d909d4de097906bb43f6bb6a9ff3c97bab55df52f7b","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/additional_attributes.rs":"fc2e26c26de442bf925fc69a1ce5091d49639e08bd7611318abd28c815affcf1","src/lib.rs":"8a635261891a311a737235ba8f92d006f4d8c3af879c9cffd2841a86cdb0ff07"}}
\ No newline at end of file
diff --git a/crates/strum/Android.bp b/crates/strum/Android.bp
index 8092c3f..147898d 100644
--- a/crates/strum/Android.bp
+++ b/crates/strum/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/strum/cargo_embargo.json b/crates/strum/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/strum/cargo_embargo.json
+++ b/crates/strum/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/strum_macros/.android-checksum.json b/crates/strum_macros/.android-checksum.json
index d594c80..c3611c7 100644
--- a/crates/strum_macros/.android-checksum.json
+++ b/crates/strum_macros/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1d8e73d5c55a6513198141ed2cf6fa27617169585d8518d73b4e304c54390708","Android.bp":"5bd38a3eeeee7340b6b75845974bde91cd01a62539e32036cb49a93a0558ac6b","Cargo.toml":"06632f61ac20770365030a7dbd1affcdf505cfd9cfa20269e864abcc07d84f9e","LICENSE":"1884079d8260fd6643f913346f742df6dabc32a0d1d1a973f6c70b2ae20383fe","METADATA":"f9a7cfb46e7b7fdfeb5d67d1ee9aeab98bb29c5ca0ec0e54465308538bccf8ed","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5a072044da2a52d2a656564d830e2960cfb8f242a68812cb03290cb7b247b2","TEST_MAPPING":"130934553eb809f532f064b6d924421ef21dc989325f59a50bd6f726f2cba884","cargo_embargo.json":"fa702ccdadce959e0baa3621834e37c34b5b20d1d2993055e3efbb9ad62a03b8","src/helpers/case_style.rs":"a401e30dc1198a382681dfbc7edabe641df80e6717b6b57ad3d8f9d3457c24ca","src/helpers/inner_variant_props.rs":"1654fe72b87e6cc7806e4169727a4715f3bd33820c592db5ec6d72e6e3b35c49","src/helpers/metadata.rs":"31ba36e56052b96908f85095bec8876e08e7cc28968015d7ae0f9d8fcc30bb44","src/helpers/mod.rs":"9f40e9f1ac4e34b1af4d78be2ff89dced14e08a4ffcc0ce1f16833fefedff3fc","src/helpers/type_props.rs":"b4aa27f2cf6703eeda71d919300fc55a74bb3c1ca67b15f0c77a98d062521075","src/helpers/variant_props.rs":"fa790a9bc7c2690b697b0efe416dccdb5e5808e587dfa8a0586f94d2d54beabd","src/lib.rs":"9e80e54e65916686c41c2752fcf2cb9dd3889ced1041e3aa248bda341a309b89","src/macros/enum_count.rs":"c3f068684816e891171537745c5a4a86bbb76f74578e079880a874ef0d1e7fc5","src/macros/enum_discriminants.rs":"6ad2e73219f48f8a9def9e4e2bfc51719b2c560ebce3bfab323271df9941f57b","src/macros/enum_is.rs":"a67764b68d10774516aec79b4a121aa8526b85c1ba4eb19406ea839925ac2fbf","src/macros/enum_iter.rs":"b040954e5e3ef6987b7d22ae1b34ce879579f5a18111b90a4c59c1298690c2a0","src/macros/enum_messages.rs":"1b2680ec9f423120c012640f971690be2dd22d88cddb194d22f99a939b365049","src/macros/enum_properties.rs":"fd3a1bb536c356c4ab3e64b62385c92ea7a903a599e795ab4bc80dbb55dbb085","src/macros/enum_table.rs":"0fff3e080937fed589e21eef15b2016b365bcea1339daa8f6017ffdc5f38732b","src/macros/enum_try_as.rs":"c486284310825ccb6f40e835d664999056d302254ee4b9539dab45a6c9559e01","src/macros/enum_variant_array.rs":"4a82897758e6059aae96e8d999e7c69e226bd61fe54c0d9cf610bdfd38e407b9","src/macros/enum_variant_names.rs":"9c3bac48f80b7aab75d779377de56ba143e7f831d659bb4e1070ee4e6181d2fe","src/macros/from_repr.rs":"7045d34969935d2dbe0b81c34e56585cc0f72209bb49f7d31d988a7325457a43","src/macros/mod.rs":"d3f44f5625d76d0f114ff394d6b95723ca9f6b2a089784c09b12dab42f54cc47","src/macros/strings/as_ref_str.rs":"78e9be641e2717368d4a010ded162145d31e23fc8a4cf31b0441a7bbae69cb77","src/macros/strings/display.rs":"74f3502d7a5c1d55fb02d49fdba112b014806df7bfdef8e6ae96f635294193d6","src/macros/strings/from_string.rs":"16e8322c326e6e92980a9973d99908a79fc16d075e9e5f9af368eb1cf68a272b","src/macros/strings/mod.rs":"40cff9e434a44ec4b8bb8e184d47ed15a1ad361b1dbcecabf3ac50025e3db1db","src/macros/strings/to_string.rs":"ef77f2087f20dfc2775324e99e178bc40831c1a3017de1a58104b901daced823"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1d8e73d5c55a6513198141ed2cf6fa27617169585d8518d73b4e304c54390708","Android.bp":"5bd38a3eeeee7340b6b75845974bde91cd01a62539e32036cb49a93a0558ac6b","Cargo.toml":"06632f61ac20770365030a7dbd1affcdf505cfd9cfa20269e864abcc07d84f9e","LICENSE":"1884079d8260fd6643f913346f742df6dabc32a0d1d1a973f6c70b2ae20383fe","METADATA":"f9a7cfb46e7b7fdfeb5d67d1ee9aeab98bb29c5ca0ec0e54465308538bccf8ed","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5a072044da2a52d2a656564d830e2960cfb8f242a68812cb03290cb7b247b2","TEST_MAPPING":"130934553eb809f532f064b6d924421ef21dc989325f59a50bd6f726f2cba884","cargo_embargo.json":"237ddd0729f909eadd3c34de6d87e92c6c46e456d5e1ce809bb0bcb35abbb784","src/helpers/case_style.rs":"a401e30dc1198a382681dfbc7edabe641df80e6717b6b57ad3d8f9d3457c24ca","src/helpers/inner_variant_props.rs":"1654fe72b87e6cc7806e4169727a4715f3bd33820c592db5ec6d72e6e3b35c49","src/helpers/metadata.rs":"31ba36e56052b96908f85095bec8876e08e7cc28968015d7ae0f9d8fcc30bb44","src/helpers/mod.rs":"9f40e9f1ac4e34b1af4d78be2ff89dced14e08a4ffcc0ce1f16833fefedff3fc","src/helpers/type_props.rs":"b4aa27f2cf6703eeda71d919300fc55a74bb3c1ca67b15f0c77a98d062521075","src/helpers/variant_props.rs":"fa790a9bc7c2690b697b0efe416dccdb5e5808e587dfa8a0586f94d2d54beabd","src/lib.rs":"9e80e54e65916686c41c2752fcf2cb9dd3889ced1041e3aa248bda341a309b89","src/macros/enum_count.rs":"c3f068684816e891171537745c5a4a86bbb76f74578e079880a874ef0d1e7fc5","src/macros/enum_discriminants.rs":"6ad2e73219f48f8a9def9e4e2bfc51719b2c560ebce3bfab323271df9941f57b","src/macros/enum_is.rs":"a67764b68d10774516aec79b4a121aa8526b85c1ba4eb19406ea839925ac2fbf","src/macros/enum_iter.rs":"b040954e5e3ef6987b7d22ae1b34ce879579f5a18111b90a4c59c1298690c2a0","src/macros/enum_messages.rs":"1b2680ec9f423120c012640f971690be2dd22d88cddb194d22f99a939b365049","src/macros/enum_properties.rs":"fd3a1bb536c356c4ab3e64b62385c92ea7a903a599e795ab4bc80dbb55dbb085","src/macros/enum_table.rs":"0fff3e080937fed589e21eef15b2016b365bcea1339daa8f6017ffdc5f38732b","src/macros/enum_try_as.rs":"c486284310825ccb6f40e835d664999056d302254ee4b9539dab45a6c9559e01","src/macros/enum_variant_array.rs":"4a82897758e6059aae96e8d999e7c69e226bd61fe54c0d9cf610bdfd38e407b9","src/macros/enum_variant_names.rs":"9c3bac48f80b7aab75d779377de56ba143e7f831d659bb4e1070ee4e6181d2fe","src/macros/from_repr.rs":"7045d34969935d2dbe0b81c34e56585cc0f72209bb49f7d31d988a7325457a43","src/macros/mod.rs":"d3f44f5625d76d0f114ff394d6b95723ca9f6b2a089784c09b12dab42f54cc47","src/macros/strings/as_ref_str.rs":"78e9be641e2717368d4a010ded162145d31e23fc8a4cf31b0441a7bbae69cb77","src/macros/strings/display.rs":"74f3502d7a5c1d55fb02d49fdba112b014806df7bfdef8e6ae96f635294193d6","src/macros/strings/from_string.rs":"16e8322c326e6e92980a9973d99908a79fc16d075e9e5f9af368eb1cf68a272b","src/macros/strings/mod.rs":"40cff9e434a44ec4b8bb8e184d47ed15a1ad361b1dbcecabf3ac50025e3db1db","src/macros/strings/to_string.rs":"ef77f2087f20dfc2775324e99e178bc40831c1a3017de1a58104b901daced823"}}
\ No newline at end of file
diff --git a/crates/strum_macros/cargo_embargo.json b/crates/strum_macros/cargo_embargo.json
index 818511f..0f01747 100644
--- a/crates/strum_macros/cargo_embargo.json
+++ b/crates/strum_macros/cargo_embargo.json
@@ -5,5 +5,6 @@
}
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/syn-mid/.android-checksum.json b/crates/syn-mid/.android-checksum.json
index 5f6760c..e58fbff 100644
--- a/crates/syn-mid/.android-checksum.json
+++ b/crates/syn-mid/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b78a7d2611cbd6ab0af895082cd32fb96179c352508769a3c9f7a1230799cf29","Android.bp":"ec90108bf72fa4a0125b53d4b44b6b798f43ea53461b4ee58f4c48451bcbdd0d","CHANGELOG.md":"930c16bf5dc6b16b9d34f66ddc16ed098af3c11a279654a8b5d6503bc0a540f5","Cargo.toml":"33c7019cb5490dc3bf4284c549754f6465674f449dba9d2e4e881dd051d72662","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"0d1351d4c6febd88a71501299784b77da0dcf739dc58d287a9ce0719046dbb90","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"451790d3603b8ce1460da15a0db4ce247e69a7c92409921b8265a6c2ded86fd5","cargo_embargo.json":"021517931f34255b2ed44def5462082471e806635141c2008d281f370ac28cf4","src/func.rs":"666e75400f90527429b121a5132d80ea4747cbb9d3eb3f8441f89b9527274f70","src/lib.rs":"ef78bf51af6417a72acb2ab4b91bdfa52ddbddf2810ada814529f4fcb6d14158","src/macros.rs":"feb78405facb712185e195a1e729299e7738c6fe25ba01954fa4f3fac08248f8","src/pat.rs":"733e892fef78b80612dfd2151c84c953d3b65771f22fa059b4e06c40584d5ab5","src/path.rs":"7e609c3c47b3126a61328a72aeb0ea65b5469f697e34d0e88fe7e433a956f468"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b78a7d2611cbd6ab0af895082cd32fb96179c352508769a3c9f7a1230799cf29","Android.bp":"ec90108bf72fa4a0125b53d4b44b6b798f43ea53461b4ee58f4c48451bcbdd0d","CHANGELOG.md":"930c16bf5dc6b16b9d34f66ddc16ed098af3c11a279654a8b5d6503bc0a540f5","Cargo.toml":"33c7019cb5490dc3bf4284c549754f6465674f449dba9d2e4e881dd051d72662","LICENSE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","LICENSE-APACHE":"83ecae571fc46eed7fa5cfb5e930b6b1dd0a6d79c24912fecacc955318987b3d","METADATA":"0d1351d4c6febd88a71501299784b77da0dcf739dc58d287a9ce0719046dbb90","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"451790d3603b8ce1460da15a0db4ce247e69a7c92409921b8265a6c2ded86fd5","cargo_embargo.json":"3640bfdb7bd1cdb86de9973677f6673c7f570a37f979913afac5b44365935141","src/func.rs":"666e75400f90527429b121a5132d80ea4747cbb9d3eb3f8441f89b9527274f70","src/lib.rs":"ef78bf51af6417a72acb2ab4b91bdfa52ddbddf2810ada814529f4fcb6d14158","src/macros.rs":"feb78405facb712185e195a1e729299e7738c6fe25ba01954fa4f3fac08248f8","src/pat.rs":"733e892fef78b80612dfd2151c84c953d3b65771f22fa059b4e06c40584d5ab5","src/path.rs":"7e609c3c47b3126a61328a72aeb0ea65b5469f697e34d0e88fe7e433a956f468"}}
\ No newline at end of file
diff --git a/crates/syn-mid/cargo_embargo.json b/crates/syn-mid/cargo_embargo.json
index b49e77c..dc0450b 100644
--- a/crates/syn-mid/cargo_embargo.json
+++ b/crates/syn-mid/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/syn/.android-checksum.json b/crates/syn/.android-checksum.json
index 526eb74..74f7f7e 100644
--- a/crates/syn/.android-checksum.json
+++ b/crates/syn/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"879e0a8b9116accc524c9ac04fdac8afdd00cda97dee70064413cf4dc26f85db","Android.bp":"5f5d4183131d2e340422e1619b42ee0b87e12e0855424ccfe501abb2da7922f4","Cargo.toml":"6cbc969f074647a8dd4d5cd9a07c9fb611dcb8626736de6151e61a2d65f038fc","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"98c6f27c091a84958d75ae2554766093701918260e68eef10933e5b45eee6502","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9e3d96a9b35fd9b5948cacd78803c52b3c7bcc999228ef2878c9db3c1a6700db","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","benches/file.rs":"652df66340764c9a86bb000ac114ad926960025f2caca1155b8b4a3146b91935","benches/rust.rs":"0e73bab7684477cac097929400ab7ecfdc0e5cc3d198b920ea8c741a4b4ddb72","cargo_embargo.json":"fa14e6e521e1ac4b8e60f605a9a1d03b636ff6519065507e7b87db5e8e239db0","patches/rules.mk.diff":"b3d6baa97437c1c3d5eda8fc60af30c56fe345d36fa2229db9aa3abb013822ea","rules.mk":"f2a06305f7fa472ed055208798d9d27e800938e8c33e919c21a01426635edef0","src/attr.rs":"8640bfa6d726cea1e5ee9003edfd2738c439b4cbaa9cea686b885710ddead223","src/bigint.rs":"e83575534e2b0d7804fe783c5d74d181c1a8551a4e0ee1d2ecfc98ab57dd80ef","src/buffer.rs":"738315eaeb204e25d34d18596c047caa14f2578103309585a3de40fc80fbc6c1","src/classify.rs":"5ee81ce72f23bc80cd20b4eb3592f6fb4cf4b48cb09ba7aac8b101027f4730d5","src/custom_keyword.rs":"9d29fc42718db5ddc5a9aa6cc1b505194c1420d2154e6815317336d598acd995","src/custom_punctuation.rs":"13ea2d4ff08a2e4659b24f148960c4d87c1540887e4b72fbc74f9b69e6cc5226","src/data.rs":"29a4ba9d8368eb9849a8593d0a16dfb447d8247f33eb7863447c60260d7f1822","src/derive.rs":"337b090b5adde045e4f0e67dca4b7d3565a20609d652aeb6a2e66d143877b48d","src/discouraged.rs":"71098f177068e0a019f4364e806b97dad06ba68e13f17ff56376d0cf72eee89c","src/drops.rs":"3dadaa62f3a84212d67f563378fdab7c1529048499deff7cb705053212efcd52","src/error.rs":"5c9b857d2bb7a5eb2a1a4488792a9ddbb5b622c957942589db00a6f4c66814de","src/export.rs":"dae16b876935b560aae18de580d47b36b7374381fda7942733b7857d278f003e","src/expr.rs":"8fb6ebe44ab267fec7b500de1b6dafd62a2785b4d8e3c4720246ff54f4b861d9","src/ext.rs":"57af9f63dc53e63334071b23ae8f15f4642d39130b9988b747a5d6024a2efff2","src/file.rs":"5086358a24a874dedaa297021b7c4b53557ca324a9d801de74340c2d10a87b59","src/fixup.rs":"2b3022ba94ccd3ffaa932c1be3652c07363deb7f2353b78d514813731b801e9f","src/gen/clone.rs":"79ea85a32631a42201e5cbc4680474df27f5d639c65c7af080fd3c15a2310790","src/gen/debug.rs":"0bc0e9e293e95edf9538f610e450df302a88151a17cddad5a9741e81da36c116","src/gen/eq.rs":"038c884c28290648ad85aaab3f331b73082959dac51fa7c0e83e9a4056658827","src/gen/fold.rs":"9b17f5946e4c92209794b340f4599bdd65f2f57610fe2f43c579bdeff1cbc1e2","src/gen/hash.rs":"740c3b33869129fabaff5b95c88e69dc7f307986f299ef77cba90f75601c7836","src/gen/token.css":"fda7badfa7b1401d7a4307553d2793cc95913db01cc167908b86b299c1a99808","src/gen/visit.rs":"7c9685a89e4a2ffc484357e74fc6144370ffa4e670e27a94d9fc302d877b388c","src/gen/visit_mut.rs":"a09f5b9e308e05ca9a05fc4e5f228c37be55d5d3208335af288374a57682383b","src/generics.rs":"2f62c7530af8b9ae10c88107ccc39edffda891929228cf22b87a83b6da93f26c","src/group.rs":"ea9143c9f224577dc70af813cafa70e55bc02b141a70d3cecf0d99d9e54d780f","src/ident.rs":"5a5c0aef1528138d0a8afaeedffc7c1c12cb8405186d6479b85bf05c41f74f70","src/item.rs":"ac4bd0ea42034985ec4fc1d350973e1d0fa1a44a945e60259e402d410271e772","src/lib.rs":"11c3543fd01d1f4e40ab120bd22f9cae1e345a1c78fb82629e986f88ba922cba","src/lifetime.rs":"85d8ec76c48097a2a5d4938f034a280eb4a82e74c9c93fce4056de34cfd5ae12","src/lit.rs":"daa0fca34214f5c7e6d92d2b224161b09839aa6bfc07fb242367cd25eafb5ce6","src/lookahead.rs":"fa6b93a09b0e013a797918438ac3573d524ba034284255755d6ccbd0579c4a14","src/mac.rs":"a656390e6fa3605ed703f0fc103913b1a965896053abf9e06abe0171ea2c7a81","src/macros.rs":"12aaa1d0628d9262b1c08129cef3b7b2b77ac390f3dc96bf3aa1f69858e2fac9","src/meta.rs":"ad4960098dd90cd917c01aeba4699b16786e6cff7ee4829199512713c533462b","src/op.rs":"62c8d6bcf612a4b4db37b0178a63e50eba3f839164c500b2ca5f3178d7c76373","src/parse.rs":"b4c5207caec6fa30661d59c24418b02dca66e7a6213d8eabfd983598b323ee15","src/parse_macro_input.rs":"28e67c76e4774279e626d44c26e6b687b775c61818bc3c6e163713b2337e4d4a","src/parse_quote.rs":"39cf7ed471f4533cb1a7ccd1018b53cfdaaae83f3c5047915492c596defbd366","src/pat.rs":"990374af68c9c31099fd0eac8ec985f4a4e6f323a25307bd1c7f132d30b2377d","src/path.rs":"ba5ff72744b6552cf97a88413d699a644c0228ed3c8c07ff010123621b793849","src/precedence.rs":"0f9ea5d4b213d08ae065f9246722357832944657509c2412ae1385141bca5de0","src/print.rs":"69d23dae2458f3f0747485e6491dfde830fdcb6bb0c8e115528f4297c14d1b30","src/punctuated.rs":"48dd296f646fd5830cb31dbbb3883e14dcc4179cebc5c43ab45a93742135e369","src/restriction.rs":"4945a287710a97f4920847c50029fe880cdb509b1cd3688a1a6e77172efe567e","src/scan_expr.rs":"0189cad44956e3ec597989c7324382068a5bf8cbf788caf44bc5cb027de93cf8","src/sealed.rs":"93917292f4842b04d59343458a7a25507f989a807c2696d17fd436aa252687c9","src/span.rs":"f687a44d8bf598095c5945213d13d45c2ec3e65c8007f7ff9f1916e4e52cf0d6","src/spanned.rs":"581ee1d8358db0832cefaec2d87c59d7299e80adde12e050dd1eae76e791e6a3","src/stmt.rs":"2945c23814ca28ad9b1add34fc7ae7ec26fe569fb9f46948e91225b217ebe24a","src/thread.rs":"86e9b5f4b716f6b0332ff3906ebbf55bb000ef3ba60ca9506df98420ee81a21e","src/token.rs":"7837562159903dbd5f6e74de4100e48cc23dcacad97d1abf529f3f5904f46cb0","src/tt.rs":"f4496db9be822900b73c18ddd567fab8aa2cf59b58cc602fa5bcee5ed79aa0d3","src/ty.rs":"be5152d5d1ee1f7ff4f19fe82a24430134049ca053f0ee3e8317d9bfa9767130","src/verbatim.rs":"9414367a03d2be4a07adfea1cb3d393d8c312e692346fddd6f196854bccff049","src/whitespace.rs":"d8c15abe68ad16b14960e987ed7f42332893fdde86696693be4c533162c88dfb","tests/common/eq.rs":"c1b5d37609d146e837eb575d5990ee22e8cf7508abd32a91012cd133d33b1cce","tests/common/mod.rs":"34d49d7ca94d59b9a3e26f31e136258ad1435d42ac1444cb1779479b6a5b1626","tests/common/parse.rs":"d56c03149f28e2d3c5cc91e85ed5ff9ec7165b28882560705267f483f18e1a0a","tests/common/visit.rs":"677c8fbd9fb8ad0115a19f4dc7191e9e5cfffc71fb8a566321b903728f09d163","tests/debug/gen.rs":"747e454a76f2d2569f92fce699155248ecf3aaf9f6b6db8e1432a0f2f4c391d6","tests/debug/mod.rs":"89475f591af872f2dbca0693137ef87bedc2470630a49f00c042e6b6ef8a7c85","tests/macros/mod.rs":"5ce3746277995ae5014f135899e1109560805fdf1cc9a05e5edee303a00b68da","tests/regression.rs":"293190040dd2c81e4c023da0f8e5dad234635d0ce2c71165f07e4b1b26e99743","tests/regression/issue1108.rs":"7f5c9e84dcb2b679fec1c0128eaf0d2c05bc0a07a414efafd5e86040b1014ea0","tests/regression/issue1235.rs":"ae38c33361dcce8f2c1b13220163498bce69d0138c15791311f96e6e26e95ea7","tests/repo/mod.rs":"b49d8243f7551e950c91ef725f99853ff18a3504be8e9069d5534524b80bf4fe","tests/repo/progress.rs":"52ab80a03bd7c28a4fb53a8321922637e0ccb6a8f89b05fc80dc98057dc20acc","tests/test_asyncness.rs":"efeededf544e4517ffbc204dbc2eae81228849e6958ede27a5b93ecae201dbea","tests/test_attribute.rs":"66482a7b40fbd57a00e4f92de3852864497a1f0498ac76c560069a23fc1ab797","tests/test_derive_input.rs":"9eba831e31502fc1433cb9045c94e45b2ea48924053174f566e2cdf593944f8b","tests/test_expr.rs":"1746168c01ad63cb12bd1305c32708871ee1e06092c6e9ca5905374f8a4d033b","tests/test_generics.rs":"5f8c6a62246ab5e313cb139890334d74a4984ded79a064a8b53ec00a2a20bfa4","tests/test_grouping.rs":"5d0419a9cea98c3c090fec77470518f727c952bc22245183be1542575fdaf7fa","tests/test_ident.rs":"0767b1495600b15c3c0b5ff73d7ae3d259ae1c548f025c2760a3ca23118658ae","tests/test_item.rs":"54c8740f3fe74b9d77684a08c0b9dfe72a9762990061225f7a31ba10cfe1ac3f","tests/test_iterators.rs":"77ac42ea54c07dc1c85263b8ceb0c645770abb8b3703eddd4c04cd3023fcac85","tests/test_lit.rs":"93807c4ef05e5c01934e7daa6a4d46887d909c6b9b549a113cbad54dbb83c940","tests/test_meta.rs":"ff5ca82fa795b6ab94edf9f10b52f63c47ba5681a974c35ffc2cc57e57281234","tests/test_parse_buffer.rs":"9603fa08950b304ae3e209c384f41758bae276f3ff88e415dcabd45af9d848d1","tests/test_parse_quote.rs":"6659405127ecddccec51c2ac19a88eb16a143cecaac181f9be8d3701e9887ef9","tests/test_parse_stream.rs":"eab69e8f5d3ff6acb7b739470786520f7225a4263d62a0e436c7bc5c26fc3668","tests/test_pat.rs":"9aec093d88b1577207fbf29224f656a9933e09f659c8f2d8dc46f6920fafe920","tests/test_path.rs":"477eddfee2a1f640a60015350c4157c3f4d6954949f63ba76b21318f7c526ac6","tests/test_precedence.rs":"18febb1c99d366a6350c337fbed42a733ac6be4ab3ae186c3d7def04289c7e57","tests/test_receiver.rs":"f1024b304f300c3f30bd3f25c7cc24d4dfd3fffe16fdd2188ce0d3a7f6743d08","tests/test_round_trip.rs":"20c787f5c75997ba67f810a158a68a9be0daa9886e4c815615a68c1ea6953e18","tests/test_shebang.rs":"9ba0405c4bbddb68d4b6d493cbe7d39f61dc7442715efd9150ea846dfdfe54f2","tests/test_size.rs":"6711587780bf1ee33418962be62c2a42bece082502e69a0cd0ae578fd72d8be9","tests/test_stmt.rs":"e4c02fa5ac7e93bb67967d4731726ad93a059b19b98024c31b93cb46e1acc90e","tests/test_token_trees.rs":"5e134074ae4203bdac96eb17ea4de2d19cd4116d43b8624fe50eba0c9d4276f8","tests/test_ty.rs":"1a5ed431315b51e9e853080bde728bf89c2719a4e6abc3a2e3902f97f17ee8e5","tests/test_unparenthesize.rs":"dede2dd59ca843b084d94bf6f2bf57e3350dd36ab8454fdd83ffb3700512e052","tests/test_visibility.rs":"9c4e0069d3c937b8ddce64cd8bb863390f82cfc238255845ee492b29c1ffc41c","tests/zzz_stable.rs":"ba0d69d7cb804fab348c1d62c2f2696e91f9fed2ef25378853867ef11595b8ae"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9b8875a487348d6404c38bb7303f839a4235bb67df95428574fec39538f6d077","Android.bp":"9bf810c493a2f5453723cd054d3a0e7297bee489465747e3a68e366101a9ee32","Cargo.toml":"d131f508895244771d619f336640aec7e781019f946467fd70a9b6d7c77e67c1","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"2c347e579b5af436d7202f2c7ece5c1508939a8c44c36fd11d63afcd50ae3767","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9e3d96a9b35fd9b5948cacd78803c52b3c7bcc999228ef2878c9db3c1a6700db","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","benches/file.rs":"33e1f6685e4be13bd251170bb293ba2a80e312d56cbdecb7a772b6b44b1447d9","benches/rust.rs":"7ec55b93a43d1f87d5cba8ec19b99f1aec2ff2d69700f482714e4fc01c4b7199","cargo_embargo.json":"14ea11e2b6f919e93447716889fc594d8da67e5cca8d1657dd28bf764adc60b8","patches/rules.mk.diff":"b3d6baa97437c1c3d5eda8fc60af30c56fe345d36fa2229db9aa3abb013822ea","rules.mk":"f2a06305f7fa472ed055208798d9d27e800938e8c33e919c21a01426635edef0","src/attr.rs":"8640bfa6d726cea1e5ee9003edfd2738c439b4cbaa9cea686b885710ddead223","src/bigint.rs":"e83575534e2b0d7804fe783c5d74d181c1a8551a4e0ee1d2ecfc98ab57dd80ef","src/buffer.rs":"738315eaeb204e25d34d18596c047caa14f2578103309585a3de40fc80fbc6c1","src/classify.rs":"5ee81ce72f23bc80cd20b4eb3592f6fb4cf4b48cb09ba7aac8b101027f4730d5","src/custom_keyword.rs":"9d29fc42718db5ddc5a9aa6cc1b505194c1420d2154e6815317336d598acd995","src/custom_punctuation.rs":"13ea2d4ff08a2e4659b24f148960c4d87c1540887e4b72fbc74f9b69e6cc5226","src/data.rs":"29a4ba9d8368eb9849a8593d0a16dfb447d8247f33eb7863447c60260d7f1822","src/derive.rs":"337b090b5adde045e4f0e67dca4b7d3565a20609d652aeb6a2e66d143877b48d","src/discouraged.rs":"71098f177068e0a019f4364e806b97dad06ba68e13f17ff56376d0cf72eee89c","src/drops.rs":"3dadaa62f3a84212d67f563378fdab7c1529048499deff7cb705053212efcd52","src/error.rs":"5c9b857d2bb7a5eb2a1a4488792a9ddbb5b622c957942589db00a6f4c66814de","src/export.rs":"dae16b876935b560aae18de580d47b36b7374381fda7942733b7857d278f003e","src/expr.rs":"8fb6ebe44ab267fec7b500de1b6dafd62a2785b4d8e3c4720246ff54f4b861d9","src/ext.rs":"57af9f63dc53e63334071b23ae8f15f4642d39130b9988b747a5d6024a2efff2","src/file.rs":"5086358a24a874dedaa297021b7c4b53557ca324a9d801de74340c2d10a87b59","src/fixup.rs":"2b3022ba94ccd3ffaa932c1be3652c07363deb7f2353b78d514813731b801e9f","src/gen/clone.rs":"79ea85a32631a42201e5cbc4680474df27f5d639c65c7af080fd3c15a2310790","src/gen/debug.rs":"0bc0e9e293e95edf9538f610e450df302a88151a17cddad5a9741e81da36c116","src/gen/eq.rs":"038c884c28290648ad85aaab3f331b73082959dac51fa7c0e83e9a4056658827","src/gen/fold.rs":"c125c9f9d2c5aae5cdcc389f2335f8c438656f5b41011c74321c84a79908ff50","src/gen/hash.rs":"740c3b33869129fabaff5b95c88e69dc7f307986f299ef77cba90f75601c7836","src/gen/token.css":"fda7badfa7b1401d7a4307553d2793cc95913db01cc167908b86b299c1a99808","src/gen/visit.rs":"985912f08514f401881dc59f1e163a312f772d52b4d215aad436417d4b2a7395","src/gen/visit_mut.rs":"b61c62b9231855aa27e3c7655dcd330bbefe78a7d883696bf834171cd21ade98","src/generics.rs":"2f62c7530af8b9ae10c88107ccc39edffda891929228cf22b87a83b6da93f26c","src/group.rs":"ea9143c9f224577dc70af813cafa70e55bc02b141a70d3cecf0d99d9e54d780f","src/ident.rs":"5a5c0aef1528138d0a8afaeedffc7c1c12cb8405186d6479b85bf05c41f74f70","src/item.rs":"ac4bd0ea42034985ec4fc1d350973e1d0fa1a44a945e60259e402d410271e772","src/lib.rs":"a14d4b322ad5b419c402712be6693375d312fa39a19f9580b0a88b635a790ca8","src/lifetime.rs":"85d8ec76c48097a2a5d4938f034a280eb4a82e74c9c93fce4056de34cfd5ae12","src/lit.rs":"3ac8e71d599e1cb19288498407d64b0107f2da5a15618535af2be7ebaf62db3e","src/lookahead.rs":"fa6b93a09b0e013a797918438ac3573d524ba034284255755d6ccbd0579c4a14","src/mac.rs":"a656390e6fa3605ed703f0fc103913b1a965896053abf9e06abe0171ea2c7a81","src/macros.rs":"12aaa1d0628d9262b1c08129cef3b7b2b77ac390f3dc96bf3aa1f69858e2fac9","src/meta.rs":"ad4960098dd90cd917c01aeba4699b16786e6cff7ee4829199512713c533462b","src/op.rs":"62c8d6bcf612a4b4db37b0178a63e50eba3f839164c500b2ca5f3178d7c76373","src/parse.rs":"b4c5207caec6fa30661d59c24418b02dca66e7a6213d8eabfd983598b323ee15","src/parse_macro_input.rs":"28e67c76e4774279e626d44c26e6b687b775c61818bc3c6e163713b2337e4d4a","src/parse_quote.rs":"39cf7ed471f4533cb1a7ccd1018b53cfdaaae83f3c5047915492c596defbd366","src/pat.rs":"990374af68c9c31099fd0eac8ec985f4a4e6f323a25307bd1c7f132d30b2377d","src/path.rs":"ba5ff72744b6552cf97a88413d699a644c0228ed3c8c07ff010123621b793849","src/precedence.rs":"0f9ea5d4b213d08ae065f9246722357832944657509c2412ae1385141bca5de0","src/print.rs":"69d23dae2458f3f0747485e6491dfde830fdcb6bb0c8e115528f4297c14d1b30","src/punctuated.rs":"48dd296f646fd5830cb31dbbb3883e14dcc4179cebc5c43ab45a93742135e369","src/restriction.rs":"4945a287710a97f4920847c50029fe880cdb509b1cd3688a1a6e77172efe567e","src/scan_expr.rs":"0189cad44956e3ec597989c7324382068a5bf8cbf788caf44bc5cb027de93cf8","src/sealed.rs":"93917292f4842b04d59343458a7a25507f989a807c2696d17fd436aa252687c9","src/span.rs":"f687a44d8bf598095c5945213d13d45c2ec3e65c8007f7ff9f1916e4e52cf0d6","src/spanned.rs":"581ee1d8358db0832cefaec2d87c59d7299e80adde12e050dd1eae76e791e6a3","src/stmt.rs":"2945c23814ca28ad9b1add34fc7ae7ec26fe569fb9f46948e91225b217ebe24a","src/thread.rs":"86e9b5f4b716f6b0332ff3906ebbf55bb000ef3ba60ca9506df98420ee81a21e","src/token.rs":"7837562159903dbd5f6e74de4100e48cc23dcacad97d1abf529f3f5904f46cb0","src/tt.rs":"f4496db9be822900b73c18ddd567fab8aa2cf59b58cc602fa5bcee5ed79aa0d3","src/ty.rs":"be5152d5d1ee1f7ff4f19fe82a24430134049ca053f0ee3e8317d9bfa9767130","src/verbatim.rs":"9414367a03d2be4a07adfea1cb3d393d8c312e692346fddd6f196854bccff049","src/whitespace.rs":"d8c15abe68ad16b14960e987ed7f42332893fdde86696693be4c533162c88dfb","tests/common/eq.rs":"b4aa68482c09213b8d99c78e1bb21511654c92a73f9e9006a173b1ae62b91a7e","tests/common/mod.rs":"34d49d7ca94d59b9a3e26f31e136258ad1435d42ac1444cb1779479b6a5b1626","tests/common/parse.rs":"d56c03149f28e2d3c5cc91e85ed5ff9ec7165b28882560705267f483f18e1a0a","tests/common/visit.rs":"677c8fbd9fb8ad0115a19f4dc7191e9e5cfffc71fb8a566321b903728f09d163","tests/debug/gen.rs":"747e454a76f2d2569f92fce699155248ecf3aaf9f6b6db8e1432a0f2f4c391d6","tests/debug/mod.rs":"89475f591af872f2dbca0693137ef87bedc2470630a49f00c042e6b6ef8a7c85","tests/macros/mod.rs":"5ce3746277995ae5014f135899e1109560805fdf1cc9a05e5edee303a00b68da","tests/regression.rs":"293190040dd2c81e4c023da0f8e5dad234635d0ce2c71165f07e4b1b26e99743","tests/regression/issue1108.rs":"7f5c9e84dcb2b679fec1c0128eaf0d2c05bc0a07a414efafd5e86040b1014ea0","tests/regression/issue1235.rs":"ae38c33361dcce8f2c1b13220163498bce69d0138c15791311f96e6e26e95ea7","tests/repo/mod.rs":"b49d8243f7551e950c91ef725f99853ff18a3504be8e9069d5534524b80bf4fe","tests/repo/progress.rs":"52ab80a03bd7c28a4fb53a8321922637e0ccb6a8f89b05fc80dc98057dc20acc","tests/test_asyncness.rs":"f62f3434a9379cf0c6be3b27d34708bee23291acba97d9e5824b11bec726429e","tests/test_attribute.rs":"54c74b58d7d20e4494b695d1d0f4e47039737fca2887d8d55b59dd06ee73ed70","tests/test_derive_input.rs":"9c2a1266dfe90697efffe9b2345c8d8beffeb4809b9e5b8c811c5e8016f23992","tests/test_expr.rs":"dad3c97975fe3b85e20adf4c171866144d82dacf360da00d3baf233d94f49e69","tests/test_generics.rs":"768dfe90f6da92af73774c0dc3c815ac5fb9c2ec45909b4dab8228f1c3f9d841","tests/test_grouping.rs":"4aa7e16f3a558cbf9461b2abcc8ab1732b5d223bbbd057515a889e60894f2fff","tests/test_ident.rs":"0767b1495600b15c3c0b5ff73d7ae3d259ae1c548f025c2760a3ca23118658ae","tests/test_item.rs":"4ff53927ee9394908c60a54be5004079821a53a15571f79b1407e245745d656c","tests/test_iterators.rs":"4dbb792b406b973a5d21f510e8df54d916879d1336c89d5367c0607dc6a6caae","tests/test_lit.rs":"575551640c6aa6fe9f0b8ae36e2c802bd3ba05db1ab961e029495b43139a97df","tests/test_meta.rs":"dca9fbda98ee645dca700399d80c156f5d34aa6f68a22695386334ce5e3fa331","tests/test_parse_buffer.rs":"9603fa08950b304ae3e209c384f41758bae276f3ff88e415dcabd45af9d848d1","tests/test_parse_quote.rs":"7bac8de682d9166861d02ab003ca455030cd64af45b283467d43bbcce7a01ecd","tests/test_parse_stream.rs":"eab69e8f5d3ff6acb7b739470786520f7225a4263d62a0e436c7bc5c26fc3668","tests/test_pat.rs":"fa8db377ca1f32954833bf1da25df958aa8d314a1d754a25ce3dd902f49b7bbd","tests/test_path.rs":"e2392cecc16ec33180bd29a22ac7f362d3be5152d8e3ac48075ebfc1cb666479","tests/test_precedence.rs":"d6701179de011688ea7dafb2f7eda99ec9e11d12d25e74b301448a7a66574766","tests/test_receiver.rs":"6141b9e7b6c6f5ca6058480ce76233e1cacdf1f9613b4ed834f14a4213327ba0","tests/test_round_trip.rs":"8ffa888cb22d0d00d34a5eb11a8c623b61cbd5cc6f310457b8be52c154f76d9f","tests/test_shebang.rs":"1ced698ae7a3d920607cd403a379c42546eda0d01e75bddd400d3a630d958567","tests/test_size.rs":"6711587780bf1ee33418962be62c2a42bece082502e69a0cd0ae578fd72d8be9","tests/test_stmt.rs":"bc00e13a6526460380472730f7e996e35626715e55e366643d022d3d486c2d9a","tests/test_token_trees.rs":"386ceff157e9f255d2ef5b031f280d8a3cf558fd1865bcd3e2d9a510fa59921b","tests/test_ty.rs":"4f0216c59ff27370ae841f0a3ea65aeceb4d9ff61ce470fd82b26ac8ee1701ba","tests/test_unparenthesize.rs":"b0d1b9fe7c960e6c79fc3a0d8c13eebb9ff478b48fffbd062d917f84159a8c4b","tests/test_visibility.rs":"54a63b06270d69c72c7bedf360384f7443a658ff94339b894c56e16a3798cc4f","tests/zzz_stable.rs":"ba0d69d7cb804fab348c1d62c2f2696e91f9fed2ef25378853867ef11595b8ae"}}
\ No newline at end of file
diff --git a/crates/syn/.cargo-checksum.json b/crates/syn/.cargo-checksum.json
index bd58734..3c813a8 100644
--- a/crates/syn/.cargo-checksum.json
+++ b/crates/syn/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"c65ef4680630d2f79e6de21b43e708e00987831eaeda9d7e6e28825d158f7b39","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"ae6deb98ea51df4829c0327139a555cc115c6bcf6fb459db0ef0d6a96c4566ec","benches/file.rs":"e3593aa456d7ad50a118150e262ce2beb2092ed5c9391e93a055700d228cafb2","benches/rust.rs":"3aa1256cc628130ddf1969cd018a5bc7d260d9ee43caf02be3591cd3b5b2d30b","src/attr.rs":"d890e2f0866758aec4a21729e2ea76b51485e43170f78b5a130499edad8a069d","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"c2b99c6b4268205050fa93e6695f0f6d5990c4b2a7b24e234fd8d81c265f309a","src/classify.rs":"3c796df4c891034abc3008196d34ad62c22fcb9525a067890731a5a6bbc7b5fb","src/custom_keyword.rs":"322114e36ae43a2f8605506fb4568efdbc2986853e2fee74bd10a4ca0fb60c69","src/custom_punctuation.rs":"2ae2339c29b1aff3ab16157d51a3a07bfca594aa38586981534fe07a62cdd9d1","src/data.rs":"5bb05d41eb93f5c895f05f31a2aa468f3332265a6d5e7a89968c5daa273937dc","src/derive.rs":"f54f8cf9386a2d45186ff3c86ade5dae59e0e337b0198532449190ae8520cff8","src/discouraged.rs":"88b38a75d074d3f0b4186f2b4988844e8284a0c9d279d784327c6b595b9e33ea","src/drops.rs":"e98da4aaafb5afc75919f9e2914326ad09bf16094a9407c60a05515a2e01dd00","src/error.rs":"3b03fd75eee8b0bb646eaf20f7e287345bdc7515ad5286024a2dd1e53c1e7bf2","src/export.rs":"b260cc49da1da3489e7755832bc8015cfad79e84f6c74e237f65ae25a2385e56","src/expr.rs":"5dd538aa24dd8ce2567a94ff9a894bbfa1725f87760d17ee1d8ddd6cf7564b62","src/ext.rs":"ed143b029af286e62ceb4310286a4ce894792dd588465face042b4199b39d329","src/file.rs":"378839f4e6a9f30d524a6a9213cc513711ddeb14e04d98b0c67644d81788919d","src/fixup.rs":"305588a36da23a566bb9f49ac8a4d26f957082c358692888313f08571f8c39b2","src/gen/clone.rs":"7af00b0a240453d7aac178be1b6cdf9df3b33f1281da35e02f66ba7ba55d060c","src/gen/debug.rs":"59bc259fa9dc0c7ffe094df7ad8afc9c4e79b6d73a8f0fae8a2e435905866e7a","src/gen/eq.rs":"d7428672d82c1931fdefb8bda0425a25ebbe20e5e2736b18cfd1752b64e99f78","src/gen/fold.rs":"99e8d2a7a7ca3e57c9358e6ea364f68145351f0c81677930e6c3597d15fab527","src/gen/hash.rs":"6808bb0e47e7346a14fbec5f55430906efa172f46417c83c2f7c76ce8c9ceab6","src/gen/token.css":"3a5882d0b3aefbf56ca5d08c28c117e25ac2327eadf7242202d906b2ddb2232e","src/gen/visit.rs":"10ce13d77cec3b3babc8f332902b0bddd712bb5fd5de1f4b3d7761e67cc13947","src/gen/visit_mut.rs":"53672f7c2568b1a9ad0ab33009c61ca19a3ebf18f5d1da57910e4e92fd6075e3","src/generics.rs":"f144722f5c2678ad27e76606dd9e2d672b95f003c272a6eaa5d1fd30b77a1410","src/group.rs":"ddbff97e41315bdf9dfce215a8c00bb4d532827cf794246afde7308b39dc09ca","src/ident.rs":"d6061030fadae9c7dc847e1ee46178d9657d782aad108c7197e8cafe765b3eaa","src/item.rs":"2c1547f87927aee8443bebfcc7c924d128f2c78cebd4e23afd81bdd1b0298ee8","src/lib.rs":"306e9574b5bf9ebfe9bd747a31799ec1303a49386c9404e6bcf8ffe56bb6efd4","src/lifetime.rs":"5787d5a5dc7e5332b03283a25ae0a9e826464242ca2d149b1a19e7cae9cee34d","src/lit.rs":"2466b4b7c3ef02af6e078358c18f0ecb557b5e38e95addc0c89515a0ff728a9b","src/lookahead.rs":"6c8071c172620969b4b708981c7424d672985038be7dfde95ddc433604111773","src/mac.rs":"fdce8291f71adef3f69975f229156dca2309ca232ed943061afaf96220908ab8","src/macros.rs":"2a6e895dfe1c3a9a7237b5e23358ca5d8967e2beae6d094dda68d3659f9a5c84","src/meta.rs":"969d8ccbdbc6ea2e4928a21831b791c57447b231e1373149e4c63b46f3951801","src/op.rs":"a61757370f802e44efa3c4a1057ae2cd26e64e273f7d76c06d5ffb49602319e2","src/parse.rs":"bbe69237d50ce5f9b5c029e851607c54ca6232cad0790551c2f5bb29e2f9657d","src/parse_macro_input.rs":"e4e22b63d0496d06a4ca17742a22467ed93f08a739081324773828bad63175ee","src/parse_quote.rs":"80eec7ce54c38f3bbd23acb70cd8a6649d7e1523c3977e3bf12849fd8c5cf16d","src/pat.rs":"1455a882df5defbf6b774a80f37fe24cf96d5ad1e5584c5204c0c9723883566b","src/path.rs":"835e9db196da62b4a01d13e56327c6c62ac029abb6086ac52c9bd6ac659320e9","src/precedence.rs":"58420a5015003ecd4d7a4a0c87c168caa4c696e646355523d9eaae81fc5e1d54","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"c8fa91447a3c5dba95d44f88984d42d9f4fb93bf4581329f2ecbce2450f518d5","src/restriction.rs":"a7152ec5a4ee4f55446019aa2b4d84f2238776f0e6ffc0c22adf3374b517fe56","src/scan_expr.rs":"d46ae7a3eaaa6476553db3164676ec71aa82bcd8a2e4cad59deb07893c79f1c8","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"0a48e375e5c9768f6f64174a91ba6a255f4b021e2fb3548d8494e617f142601b","src/spanned.rs":"4b9bd65f60ab81922adfd0be8f03b6d50e98da3a5f525f242f9639aec4beac79","src/stmt.rs":"5afa302e742408acd3adfc83e7c00a64213a06783b21f66c32f653bee8b1c95a","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"e985766dbf6595c7a7fc19834c145fa78a1b4572915ebb0b0cf7ce5d114124cb","src/tt.rs":"a58303a95d08d6bf3f3e09715b9b70a57b91b54774cfc1f00f2848034d2ff5c7","src/ty.rs":"b0e29da2f6d11e7766ef76d54a5af65eb7eaa00f3cf2db95276528057f77a37c","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"9cdcbfe9045b259046329a795bc1105ab5a871471a6d3f7318d275ee53f7a825","tests/common/eq.rs":"e83a621b31d654d8c1121ded86437564ab373c804134571fe35e797fdf98710d","tests/common/mod.rs":"b752aa8f1faf8c6abf1286a12fb50b6c257ec1889d81bcdb3dc3257134695a89","tests/common/parse.rs":"c173bd515ba1d53b3b676161849fa8df0ae3d5592445843cee65b6628b71ac32","tests/common/visit.rs":"2eb0b56f8110f7a12b2143db16c07e0229d1b7c8b9c3d4b2c4344f904e553277","tests/debug/gen.rs":"3843ce1b6ea5a8e72bd24dfd52760d9326c30e05a3cfe5b28f8f0ac6d76318cf","tests/debug/mod.rs":"1259df940bbcaa968a837e402d6853f2efa38d2260e306d42f17f9e8ef74fae5","tests/macros/mod.rs":"c246b05fcca55d3880278754f36c802a8a006bb0a17d0c787989dd6716e76f37","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"1c47966118a0a5bd5ba1cb2163ec8928917bd6299e4ee6a4d9a6b6a67ce10ef8","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"aca499c3c120f35f56033493aa732079af9a85463cc39297ed46ad2397be1c6d","tests/test_attribute.rs":"48078187c20a257422e02042c47acea8bb9b3644696e5d6a1eb0962864b81691","tests/test_derive_input.rs":"e062007ef389c0b8490d9145f9cc5dec59acbf34927c92355a43f2a847070ac2","tests/test_expr.rs":"f1ae9ca18da846584adc6c858b622c31d532aa866af7fdd4b10507ca855f369c","tests/test_generics.rs":"73ed0bb52b75720911fb03977b8ec33b873c2eaab735114d7a5fb45531b0b3c4","tests/test_grouping.rs":"28084b1b922884b54dfa6dc573ffc19a58138e5b08e0b6e0a82120572983c81d","tests/test_ident.rs":"d5850e817720e774cd397a46dbc5298c57933823c18e20805e84503fc9387e8f","tests/test_item.rs":"7191698ea9ed6e94ac57dbcfc4b484623d0c31cf89b005d5935083431be725f3","tests/test_iterators.rs":"f1ab7d5504dc06dc79cc3ba09c0364b045d2da86deb06e60412e6b80208b7439","tests/test_lit.rs":"8ec75a817036f0ff918b350370e90b2fb3fdef0ed32587b0015ebc09f9456c10","tests/test_meta.rs":"fee43f1219dd23523766feded7609d7c7fc3a156ecd55e309b2c5b40f11e045a","tests/test_parse_buffer.rs":"0de6af13ba0345986b18d495063f9b75a1018e8569c34b277f9522c63a6c0941","tests/test_parse_quote.rs":"28c11ab23b374327f56b29cc5f424f4a22a5974b92f9077a8dd0b8dca08c8d5c","tests/test_parse_stream.rs":"b6b533432173123d6d01d8d2cb33714bc50b30b16ffbb6116f93937221ad4594","tests/test_pat.rs":"d70d701ab2b9bd4f632e926af44c829ac273cf6fdacbdc52df4ec7cefcc9e09c","tests/test_path.rs":"9529c461c38ac1ecca1c6b798392aba791e7d371228b7670cde4c9b34c8e9d68","tests/test_precedence.rs":"540f7277c0e22ddc5368bd9ede169258b6212a90481c34e4370417b02b8e3223","tests/test_receiver.rs":"d34a1c5cac8f78ff0ff41df3bd9631b02edacab4d50059e8a2ed3d13fe6ba4c5","tests/test_round_trip.rs":"9c00a071a98cad7ce730d9e78e75ac63852924d6c1eaa6b6e29d06f02d276560","tests/test_shebang.rs":"98f7ec66e2240391c8f48fe9a330737930740b6275fef22486555ebef113acad","tests/test_size.rs":"03efaf829b80b7db1f831474c1d3ce268914fc499d0e2a7eea03cad04a482974","tests/test_stmt.rs":"3cf4463864039483c1ee329e3796d690b47c18bc8255c407451d31b239440ffe","tests/test_token_trees.rs":"f0a57f4d46b5dd4dbdf601450f6eb4db5fb5622dce3e9d17d2f021021b37fd9d","tests/test_ty.rs":"57622225e442427b79a68ff86a3fb2ebf2b81cc2ae1d2d00be601e8402bb1197","tests/test_unparenthesize.rs":"b04fee449f613e1a9ce75f8282e25783162c5762148b338218bb3ee3e2b8853b","tests/test_visibility.rs":"f0ef86f7a89b8b78b841cad25d98420e96f59309d3d42f6930c6defad183edc7","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"}
\ No newline at end of file
+{"files":{"Cargo.toml":"2cdd404464108685e81766cca27d49b5f71e55975e46451c52c0e910a90fa8b1","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"ae6deb98ea51df4829c0327139a555cc115c6bcf6fb459db0ef0d6a96c4566ec","benches/file.rs":"6f2ae7748d1576cff48e4ef55d4e87e2f5bb7898a36aa99ea6dd6ed0f72a4e3c","benches/rust.rs":"84df2b710e5379e34b6e2f33b2932d667944b556b6badbfbc7c84935e1623904","src/attr.rs":"d890e2f0866758aec4a21729e2ea76b51485e43170f78b5a130499edad8a069d","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"c2b99c6b4268205050fa93e6695f0f6d5990c4b2a7b24e234fd8d81c265f309a","src/classify.rs":"3c796df4c891034abc3008196d34ad62c22fcb9525a067890731a5a6bbc7b5fb","src/custom_keyword.rs":"322114e36ae43a2f8605506fb4568efdbc2986853e2fee74bd10a4ca0fb60c69","src/custom_punctuation.rs":"2ae2339c29b1aff3ab16157d51a3a07bfca594aa38586981534fe07a62cdd9d1","src/data.rs":"5bb05d41eb93f5c895f05f31a2aa468f3332265a6d5e7a89968c5daa273937dc","src/derive.rs":"f54f8cf9386a2d45186ff3c86ade5dae59e0e337b0198532449190ae8520cff8","src/discouraged.rs":"88b38a75d074d3f0b4186f2b4988844e8284a0c9d279d784327c6b595b9e33ea","src/drops.rs":"e98da4aaafb5afc75919f9e2914326ad09bf16094a9407c60a05515a2e01dd00","src/error.rs":"3b03fd75eee8b0bb646eaf20f7e287345bdc7515ad5286024a2dd1e53c1e7bf2","src/export.rs":"b260cc49da1da3489e7755832bc8015cfad79e84f6c74e237f65ae25a2385e56","src/expr.rs":"5dd538aa24dd8ce2567a94ff9a894bbfa1725f87760d17ee1d8ddd6cf7564b62","src/ext.rs":"ed143b029af286e62ceb4310286a4ce894792dd588465face042b4199b39d329","src/file.rs":"378839f4e6a9f30d524a6a9213cc513711ddeb14e04d98b0c67644d81788919d","src/fixup.rs":"305588a36da23a566bb9f49ac8a4d26f957082c358692888313f08571f8c39b2","src/gen/clone.rs":"7af00b0a240453d7aac178be1b6cdf9df3b33f1281da35e02f66ba7ba55d060c","src/gen/debug.rs":"59bc259fa9dc0c7ffe094df7ad8afc9c4e79b6d73a8f0fae8a2e435905866e7a","src/gen/eq.rs":"d7428672d82c1931fdefb8bda0425a25ebbe20e5e2736b18cfd1752b64e99f78","src/gen/fold.rs":"39b0a26cfdf0accaff6da108a2b6d8f93e83c63d0bf6a8d7af0900fc0f71b55b","src/gen/hash.rs":"6808bb0e47e7346a14fbec5f55430906efa172f46417c83c2f7c76ce8c9ceab6","src/gen/token.css":"3a5882d0b3aefbf56ca5d08c28c117e25ac2327eadf7242202d906b2ddb2232e","src/gen/visit.rs":"fe1443aa7953eaca10d6bf982396e627e31ce6b8aea8eb7cf949e0adeea5badb","src/gen/visit_mut.rs":"9948f0f07aefd8133dcc958e744c49f1da625d199f7707363b79f0373b2dcd6b","src/generics.rs":"f144722f5c2678ad27e76606dd9e2d672b95f003c272a6eaa5d1fd30b77a1410","src/group.rs":"ddbff97e41315bdf9dfce215a8c00bb4d532827cf794246afde7308b39dc09ca","src/ident.rs":"d6061030fadae9c7dc847e1ee46178d9657d782aad108c7197e8cafe765b3eaa","src/item.rs":"2c1547f87927aee8443bebfcc7c924d128f2c78cebd4e23afd81bdd1b0298ee8","src/lib.rs":"6aeceab152586aa0e23b1b3023d0ecae709e66368794fb6efd81670f1af9ef85","src/lifetime.rs":"5787d5a5dc7e5332b03283a25ae0a9e826464242ca2d149b1a19e7cae9cee34d","src/lit.rs":"1e985aa8231403c5e3d1b4f625f69d8dfa0859aaae8450c7c77585a4b2d20a61","src/lookahead.rs":"6c8071c172620969b4b708981c7424d672985038be7dfde95ddc433604111773","src/mac.rs":"fdce8291f71adef3f69975f229156dca2309ca232ed943061afaf96220908ab8","src/macros.rs":"2a6e895dfe1c3a9a7237b5e23358ca5d8967e2beae6d094dda68d3659f9a5c84","src/meta.rs":"969d8ccbdbc6ea2e4928a21831b791c57447b231e1373149e4c63b46f3951801","src/op.rs":"a61757370f802e44efa3c4a1057ae2cd26e64e273f7d76c06d5ffb49602319e2","src/parse.rs":"bbe69237d50ce5f9b5c029e851607c54ca6232cad0790551c2f5bb29e2f9657d","src/parse_macro_input.rs":"e4e22b63d0496d06a4ca17742a22467ed93f08a739081324773828bad63175ee","src/parse_quote.rs":"80eec7ce54c38f3bbd23acb70cd8a6649d7e1523c3977e3bf12849fd8c5cf16d","src/pat.rs":"1455a882df5defbf6b774a80f37fe24cf96d5ad1e5584c5204c0c9723883566b","src/path.rs":"835e9db196da62b4a01d13e56327c6c62ac029abb6086ac52c9bd6ac659320e9","src/precedence.rs":"58420a5015003ecd4d7a4a0c87c168caa4c696e646355523d9eaae81fc5e1d54","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"c8fa91447a3c5dba95d44f88984d42d9f4fb93bf4581329f2ecbce2450f518d5","src/restriction.rs":"a7152ec5a4ee4f55446019aa2b4d84f2238776f0e6ffc0c22adf3374b517fe56","src/scan_expr.rs":"d46ae7a3eaaa6476553db3164676ec71aa82bcd8a2e4cad59deb07893c79f1c8","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"0a48e375e5c9768f6f64174a91ba6a255f4b021e2fb3548d8494e617f142601b","src/spanned.rs":"4b9bd65f60ab81922adfd0be8f03b6d50e98da3a5f525f242f9639aec4beac79","src/stmt.rs":"5afa302e742408acd3adfc83e7c00a64213a06783b21f66c32f653bee8b1c95a","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"e985766dbf6595c7a7fc19834c145fa78a1b4572915ebb0b0cf7ce5d114124cb","src/tt.rs":"a58303a95d08d6bf3f3e09715b9b70a57b91b54774cfc1f00f2848034d2ff5c7","src/ty.rs":"b0e29da2f6d11e7766ef76d54a5af65eb7eaa00f3cf2db95276528057f77a37c","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"9cdcbfe9045b259046329a795bc1105ab5a871471a6d3f7318d275ee53f7a825","tests/common/eq.rs":"4902afefc3e501def17c8be7d1a357b967920d1fd7b088cc971692063d46793b","tests/common/mod.rs":"b752aa8f1faf8c6abf1286a12fb50b6c257ec1889d81bcdb3dc3257134695a89","tests/common/parse.rs":"c173bd515ba1d53b3b676161849fa8df0ae3d5592445843cee65b6628b71ac32","tests/common/visit.rs":"2eb0b56f8110f7a12b2143db16c07e0229d1b7c8b9c3d4b2c4344f904e553277","tests/debug/gen.rs":"3843ce1b6ea5a8e72bd24dfd52760d9326c30e05a3cfe5b28f8f0ac6d76318cf","tests/debug/mod.rs":"1259df940bbcaa968a837e402d6853f2efa38d2260e306d42f17f9e8ef74fae5","tests/macros/mod.rs":"c246b05fcca55d3880278754f36c802a8a006bb0a17d0c787989dd6716e76f37","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"1c47966118a0a5bd5ba1cb2163ec8928917bd6299e4ee6a4d9a6b6a67ce10ef8","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"70b4376cc8b972fc04afcda6f9a95beaab32e97a642cb46d6b5fae1b9937aa81","tests/test_attribute.rs":"31c6818818b5b8dfbae455656691e01fd420fd6dd444b7306141aa5fa7b4642d","tests/test_derive_input.rs":"d30953e8fef57ebc7e9bd2746c7cf37a6b4f341e67b449e89c8f87be572ad430","tests/test_expr.rs":"e48d050194aca8a3de87bb8c20a34281ee27ea4a58ab3ec52415cef66d15c7cd","tests/test_generics.rs":"c461907d3af5ed51d3b5f34ce671c6fa4690be6dd7460c6e5e294f1c2bcc62d0","tests/test_grouping.rs":"e17b1ea6620f8ba46d57d088f723b76672f31de67e94888732ba122440a4d545","tests/test_ident.rs":"d5850e817720e774cd397a46dbc5298c57933823c18e20805e84503fc9387e8f","tests/test_item.rs":"e7503bbb383e6046386364c51c4c01fde5b316e4feb82ca3da91d7905d6b9ca1","tests/test_iterators.rs":"af76401d7276acd593da883e080c20f2742100c25857d5a42e6f873bf388aa4e","tests/test_lit.rs":"fb8c25c0e462c4a2747503bfc3dbb1bbb9492aecfe0725b81e6ecd815012d82c","tests/test_meta.rs":"7b1b3a787e5f7c61e648b14176f3875e0cbc123975c61ad72be1aff798054c75","tests/test_parse_buffer.rs":"0de6af13ba0345986b18d495063f9b75a1018e8569c34b277f9522c63a6c0941","tests/test_parse_quote.rs":"b0d1e9606c1cdb8a1b2247f37572d5aceb5034d2784f472f61edecd41e0f60d7","tests/test_parse_stream.rs":"b6b533432173123d6d01d8d2cb33714bc50b30b16ffbb6116f93937221ad4594","tests/test_pat.rs":"30c18bbfd43976700e7b58c7bd335ef9743b2041d94762c6781394828947ef74","tests/test_path.rs":"37bf61ea7f04b39dc0b14bbcbb7bb33df8a259ffa74c1c105f93ea9247dedf63","tests/test_precedence.rs":"61c64cf1bc03bc9e79c947b62c992d8c7d36c606399cc8069d7d1adf19f18a50","tests/test_receiver.rs":"4439bcfe97223865d15e5691db282ab146984a73017191a34da7cb06c121dec1","tests/test_round_trip.rs":"35ccbb5ae9dc1bf5d2dd5bcd896b18ec1742b71260f82009ec7d545d16afeb15","tests/test_shebang.rs":"c5b21cab06fb2feb169eed124b925aa2a021fb2e4f2dc2590af4566b3003349b","tests/test_size.rs":"03efaf829b80b7db1f831474c1d3ce268914fc499d0e2a7eea03cad04a482974","tests/test_stmt.rs":"59f548c765ffed557c7e5f25ab4326227b4fefdf3e23ca8b3cc67a238abbba04","tests/test_token_trees.rs":"e6c507a8c8ffde6a313c29649dc22afc5f3fed000d6b9088289f94635ee1439f","tests/test_ty.rs":"9900198e6ac04f3343d6e715ac643e8bbba517491326f42c7589c1afc30ae076","tests/test_unparenthesize.rs":"522d13fc613af07f624dc2a71b7dd56d4683cdf124fc61c06bbe597314e1eda4","tests/test_visibility.rs":"bf6dae7c2fd2c0e68e5eeb99b2d475e012019e2c053036f7dcaa8e4ae4ced0fd","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"}
\ No newline at end of file
diff --git a/crates/syn/Android.bp b/crates/syn/Android.bp
index b4b1a03..98d2ed1 100644
--- a/crates/syn/Android.bp
+++ b/crates/syn/Android.bp
@@ -18,7 +18,7 @@
host_cross_supported: false,
crate_name: "syn",
cargo_env_compat: true,
- cargo_pkg_version: "2.0.98",
+ cargo_pkg_version: "2.0.100",
crate_root: "src/lib.rs",
edition: "2021",
features: [
diff --git a/crates/syn/Cargo.toml b/crates/syn/Cargo.toml
index cfa2a87..a44fa4a 100644
--- a/crates/syn/Cargo.toml
+++ b/crates/syn/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.61"
name = "syn"
-version = "2.0.98"
+version = "2.0.100"
authors = ["David Tolnay <[email protected]>"]
build = false
include = [
@@ -49,6 +49,10 @@
rustdoc-args = [
"--generate-link-to-definition",
"--extend-css=src/gen/token.css",
+ "--extern-html-root-url=core=https://doc.rust-lang.org",
+ "--extern-html-root-url=alloc=https://doc.rust-lang.org",
+ "--extern-html-root-url=std=https://doc.rust-lang.org",
+ "--extern-html-root-url=proc_macro=https://doc.rust-lang.org",
]
targets = ["x86_64-unknown-linux-gnu"]
@@ -87,7 +91,6 @@
[lib]
name = "syn"
path = "src/lib.rs"
-doc-scrape-examples = false
[[test]]
name = "regression"
diff --git a/crates/syn/METADATA b/crates/syn/METADATA
index e4b2d21..0c65008 100644
--- a/crates/syn/METADATA
+++ b/crates/syn/METADATA
@@ -1,17 +1,17 @@
name: "syn"
description: "Parser for Rust source code"
third_party {
- version: "2.0.98"
+ version: "2.0.100"
license_type: NOTICE
last_upgrade_date {
year: 2025
- month: 2
- day: 4
+ month: 3
+ day: 19
}
homepage: "https://crates.io/crates/syn"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/syn/syn-2.0.98.crate"
- version: "2.0.98"
+ value: "https://static.crates.io/crates/syn/syn-2.0.100.crate"
+ version: "2.0.100"
}
}
diff --git a/crates/syn/benches/file.rs b/crates/syn/benches/file.rs
index 5754d20..6167488 100644
--- a/crates/syn/benches/file.rs
+++ b/crates/syn/benches/file.rs
@@ -3,6 +3,7 @@
#![feature(rustc_private, test)]
#![recursion_limit = "1024"]
#![allow(
+ clippy::elidable_lifetime_names,
clippy::items_after_statements,
clippy::manual_let_else,
clippy::match_like_matches_macro,
diff --git a/crates/syn/benches/rust.rs b/crates/syn/benches/rust.rs
index 81b5425..d0abce5 100644
--- a/crates/syn/benches/rust.rs
+++ b/crates/syn/benches/rust.rs
@@ -8,6 +8,7 @@
#![allow(
clippy::arc_with_non_send_sync,
clippy::cast_lossless,
+ clippy::elidable_lifetime_names,
clippy::let_underscore_untyped,
clippy::manual_let_else,
clippy::match_like_matches_macro,
@@ -58,7 +59,6 @@
extern crate rustc_span;
use crate::repo;
- use rustc_data_structures::sync::Lrc;
use rustc_error_messages::FluentBundle;
use rustc_errors::emitter::Emitter;
use rustc_errors::registry::Registry;
@@ -68,6 +68,7 @@
use rustc_span::source_map::{FilePathMapping, SourceMap};
use rustc_span::FileName;
use std::path::Path;
+ use std::sync::Arc;
pub fn bench(path: &Path, content: &str) -> Result<(), ()> {
struct SilentEmitter;
@@ -90,7 +91,7 @@
let edition = repo::edition(path).parse().unwrap();
rustc_span::create_session_if_not_set_then(edition, |_| {
- let source_map = Lrc::new(SourceMap::new(FilePathMapping::empty()));
+ let source_map = Arc::new(SourceMap::new(FilePathMapping::empty()));
let emitter = Box::new(SilentEmitter);
let handler = DiagCtxt::new(emitter);
let sess = ParseSess::with_dcx(handler, source_map);
diff --git a/crates/syn/cargo_embargo.json b/crates/syn/cargo_embargo.json
index 2225e16..160f589 100644
--- a/crates/syn/cargo_embargo.json
+++ b/crates/syn/cargo_embargo.json
@@ -14,5 +14,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/syn/src/gen/fold.rs b/crates/syn/src/gen/fold.rs
index 6ad6294..1f0afd3 100644
--- a/crates/syn/src/gen/fold.rs
+++ b/crates/syn/src/gen/fold.rs
@@ -793,7 +793,7 @@
fold_signature(self, i)
}
fn fold_span(&mut self, i: proc_macro2::Span) -> proc_macro2::Span {
- fold_span(self, i)
+ i
}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
@@ -813,6 +813,12 @@
fn fold_stmt_macro(&mut self, i: crate::StmtMacro) -> crate::StmtMacro {
fold_stmt_macro(self, i)
}
+ fn fold_token_stream(
+ &mut self,
+ i: proc_macro2::TokenStream,
+ ) -> proc_macro2::TokenStream {
+ i
+ }
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
fn fold_trait_bound(&mut self, i: crate::TraitBound) -> crate::TraitBound {
@@ -1418,7 +1424,9 @@
crate::Expr::Unsafe(_binding_0) => {
crate::Expr::Unsafe(full!(f.fold_expr_unsafe(_binding_0)))
}
- crate::Expr::Verbatim(_binding_0) => crate::Expr::Verbatim(_binding_0),
+ crate::Expr::Verbatim(_binding_0) => {
+ crate::Expr::Verbatim(f.fold_token_stream(_binding_0))
+ }
crate::Expr::While(_binding_0) => {
crate::Expr::While(full!(f.fold_expr_while(_binding_0)))
}
@@ -2089,7 +2097,7 @@
crate::ForeignItem::Macro(f.fold_foreign_item_macro(_binding_0))
}
crate::ForeignItem::Verbatim(_binding_0) => {
- crate::ForeignItem::Verbatim(_binding_0)
+ crate::ForeignItem::Verbatim(f.fold_token_stream(_binding_0))
}
}
}
@@ -2251,7 +2259,9 @@
crate::ImplItem::Macro(_binding_0) => {
crate::ImplItem::Macro(f.fold_impl_item_macro(_binding_0))
}
- crate::ImplItem::Verbatim(_binding_0) => crate::ImplItem::Verbatim(_binding_0),
+ crate::ImplItem::Verbatim(_binding_0) => {
+ crate::ImplItem::Verbatim(f.fold_token_stream(_binding_0))
+ }
}
}
#[cfg(feature = "full")]
@@ -2389,7 +2399,9 @@
crate::Item::Union(f.fold_item_union(_binding_0))
}
crate::Item::Use(_binding_0) => crate::Item::Use(f.fold_item_use(_binding_0)),
- crate::Item::Verbatim(_binding_0) => crate::Item::Verbatim(_binding_0),
+ crate::Item::Verbatim(_binding_0) => {
+ crate::Item::Verbatim(f.fold_token_stream(_binding_0))
+ }
}
}
#[cfg(feature = "full")]
@@ -2812,7 +2824,7 @@
path: f.fold_path(node.path),
bang_token: node.bang_token,
delimiter: f.fold_macro_delimiter(node.delimiter),
- tokens: node.tokens,
+ tokens: f.fold_token_stream(node.tokens),
}
}
#[cfg(any(feature = "derive", feature = "full"))]
@@ -2874,7 +2886,7 @@
crate::MetaList {
path: f.fold_path(node.path),
delimiter: f.fold_macro_delimiter(node.delimiter),
- tokens: node.tokens,
+ tokens: f.fold_token_stream(node.tokens),
}
}
#[cfg(any(feature = "derive", feature = "full"))]
@@ -2935,7 +2947,9 @@
crate::Pat::TupleStruct(f.fold_pat_tuple_struct(_binding_0))
}
crate::Pat::Type(_binding_0) => crate::Pat::Type(f.fold_pat_type(_binding_0)),
- crate::Pat::Verbatim(_binding_0) => crate::Pat::Verbatim(_binding_0),
+ crate::Pat::Verbatim(_binding_0) => {
+ crate::Pat::Verbatim(f.fold_token_stream(_binding_0))
+ }
crate::Pat::Wild(_binding_0) => crate::Pat::Wild(f.fold_pat_wild(_binding_0)),
}
}
@@ -3366,7 +3380,9 @@
crate::TraitItem::Macro(_binding_0) => {
crate::TraitItem::Macro(f.fold_trait_item_macro(_binding_0))
}
- crate::TraitItem::Verbatim(_binding_0) => crate::TraitItem::Verbatim(_binding_0),
+ crate::TraitItem::Verbatim(_binding_0) => {
+ crate::TraitItem::Verbatim(f.fold_token_stream(_binding_0))
+ }
}
}
#[cfg(feature = "full")]
@@ -3482,7 +3498,9 @@
crate::Type::Tuple(_binding_0) => {
crate::Type::Tuple(f.fold_type_tuple(_binding_0))
}
- crate::Type::Verbatim(_binding_0) => crate::Type::Verbatim(_binding_0),
+ crate::Type::Verbatim(_binding_0) => {
+ crate::Type::Verbatim(f.fold_token_stream(_binding_0))
+ }
}
}
#[cfg(any(feature = "derive", feature = "full"))]
@@ -3607,7 +3625,7 @@
)
}
crate::TypeParamBound::Verbatim(_binding_0) => {
- crate::TypeParamBound::Verbatim(_binding_0)
+ crate::TypeParamBound::Verbatim(f.fold_token_stream(_binding_0))
}
}
}
diff --git a/crates/syn/src/gen/visit.rs b/crates/syn/src/gen/visit.rs
index b82f275..cd258fc 100644
--- a/crates/syn/src/gen/visit.rs
+++ b/crates/syn/src/gen/visit.rs
@@ -740,9 +740,7 @@
fn visit_signature(&mut self, i: &'ast crate::Signature) {
visit_signature(self, i);
}
- fn visit_span(&mut self, i: &proc_macro2::Span) {
- visit_span(self, i);
- }
+ fn visit_span(&mut self, i: &proc_macro2::Span) {}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
fn visit_static_mutability(&mut self, i: &'ast crate::StaticMutability) {
@@ -758,6 +756,7 @@
fn visit_stmt_macro(&mut self, i: &'ast crate::StmtMacro) {
visit_stmt_macro(self, i);
}
+ fn visit_token_stream(&mut self, i: &'ast proc_macro2::TokenStream) {}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
fn visit_trait_bound(&mut self, i: &'ast crate::TraitBound) {
@@ -1421,7 +1420,7 @@
full!(v.visit_expr_unsafe(_binding_0));
}
crate::Expr::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
crate::Expr::While(_binding_0) => {
full!(v.visit_expr_while(_binding_0));
@@ -2137,7 +2136,7 @@
v.visit_foreign_item_macro(_binding_0);
}
crate::ForeignItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
@@ -2288,7 +2287,7 @@
v.visit_impl_item_macro(_binding_0);
}
crate::ImplItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
@@ -2426,7 +2425,7 @@
v.visit_item_use(_binding_0);
}
crate::Item::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
@@ -2845,7 +2844,7 @@
v.visit_path(&node.path);
skip!(node.bang_token);
v.visit_macro_delimiter(&node.delimiter);
- skip!(node.tokens);
+ v.visit_token_stream(&node.tokens);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
@@ -2906,7 +2905,7 @@
{
v.visit_path(&node.path);
v.visit_macro_delimiter(&node.delimiter);
- skip!(node.tokens);
+ v.visit_token_stream(&node.tokens);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
@@ -2987,7 +2986,7 @@
v.visit_pat_type(_binding_0);
}
crate::Pat::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
crate::Pat::Wild(_binding_0) => {
v.visit_pat_wild(_binding_0);
@@ -3438,7 +3437,7 @@
v.visit_trait_item_macro(_binding_0);
}
crate::TraitItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
@@ -3562,7 +3561,7 @@
v.visit_type_tuple(_binding_0);
}
crate::Type::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
@@ -3683,7 +3682,7 @@
full!(v.visit_precise_capture(_binding_0));
}
crate::TypeParamBound::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream(_binding_0);
}
}
}
diff --git a/crates/syn/src/gen/visit_mut.rs b/crates/syn/src/gen/visit_mut.rs
index 7257009..2bbd689 100644
--- a/crates/syn/src/gen/visit_mut.rs
+++ b/crates/syn/src/gen/visit_mut.rs
@@ -748,9 +748,7 @@
fn visit_signature_mut(&mut self, i: &mut crate::Signature) {
visit_signature_mut(self, i);
}
- fn visit_span_mut(&mut self, i: &mut proc_macro2::Span) {
- visit_span_mut(self, i);
- }
+ fn visit_span_mut(&mut self, i: &mut proc_macro2::Span) {}
#[cfg(feature = "full")]
#[cfg_attr(docsrs, doc(cfg(feature = "full")))]
fn visit_static_mutability_mut(&mut self, i: &mut crate::StaticMutability) {
@@ -766,6 +764,7 @@
fn visit_stmt_macro_mut(&mut self, i: &mut crate::StmtMacro) {
visit_stmt_macro_mut(self, i);
}
+ fn visit_token_stream_mut(&mut self, i: &mut proc_macro2::TokenStream) {}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
fn visit_trait_bound_mut(&mut self, i: &mut crate::TraitBound) {
@@ -1419,7 +1418,7 @@
full!(v.visit_expr_unsafe_mut(_binding_0));
}
crate::Expr::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
crate::Expr::While(_binding_0) => {
full!(v.visit_expr_while_mut(_binding_0));
@@ -2049,7 +2048,7 @@
v.visit_foreign_item_macro_mut(_binding_0);
}
crate::ForeignItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
@@ -2191,7 +2190,7 @@
v.visit_impl_item_macro_mut(_binding_0);
}
crate::ImplItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
@@ -2321,7 +2320,7 @@
v.visit_item_use_mut(_binding_0);
}
crate::Item::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
@@ -2706,7 +2705,7 @@
v.visit_path_mut(&mut node.path);
skip!(node.bang_token);
v.visit_macro_delimiter_mut(&mut node.delimiter);
- skip!(node.tokens);
+ v.visit_token_stream_mut(&mut node.tokens);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
@@ -2767,7 +2766,7 @@
{
v.visit_path_mut(&mut node.path);
v.visit_macro_delimiter_mut(&mut node.delimiter);
- skip!(node.tokens);
+ v.visit_token_stream_mut(&mut node.tokens);
}
#[cfg(any(feature = "derive", feature = "full"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "derive", feature = "full"))))]
@@ -2848,7 +2847,7 @@
v.visit_pat_type_mut(_binding_0);
}
crate::Pat::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
crate::Pat::Wild(_binding_0) => {
v.visit_pat_wild_mut(_binding_0);
@@ -3270,7 +3269,7 @@
v.visit_trait_item_macro_mut(_binding_0);
}
crate::TraitItem::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
@@ -3386,7 +3385,7 @@
v.visit_type_tuple_mut(_binding_0);
}
crate::Type::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
@@ -3505,7 +3504,7 @@
full!(v.visit_precise_capture_mut(_binding_0));
}
crate::TypeParamBound::Verbatim(_binding_0) => {
- skip!(_binding_0);
+ v.visit_token_stream_mut(_binding_0);
}
}
}
diff --git a/crates/syn/src/lib.rs b/crates/syn/src/lib.rs
index 436ec74..dd39b28 100644
--- a/crates/syn/src/lib.rs
+++ b/crates/syn/src/lib.rs
@@ -249,7 +249,7 @@
//! dynamic library libproc_macro from rustc toolchain.
// Syn types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/syn/2.0.98")]
+#![doc(html_root_url = "https://docs.rs/syn/2.0.100")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(unsafe_op_in_unsafe_fn)]
#![allow(non_camel_case_types)]
@@ -264,6 +264,7 @@
clippy::derivable_impls,
clippy::diverging_sub_expression,
clippy::doc_markdown,
+ clippy::elidable_lifetime_names,
clippy::enum_glob_use,
clippy::expl_impl_clone_on_copy,
clippy::explicit_auto_deref,
diff --git a/crates/syn/src/lit.rs b/crates/syn/src/lit.rs
index 76bc497..45c26d5 100644
--- a/crates/syn/src/lit.rs
+++ b/crates/syn/src/lit.rs
@@ -1281,9 +1281,6 @@
}
}
- // Clippy false positive
- // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
- #[allow(clippy::needless_continue)]
fn parse_lit_str_cooked(mut s: &str) -> (Box<str>, Box<str>) {
assert_eq!(byte(s, 0), b'"');
s = &s[1..];
@@ -1376,9 +1373,6 @@
}
}
- // Clippy false positive
- // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
- #[allow(clippy::needless_continue)]
fn parse_lit_byte_str_cooked(mut s: &str) -> (Vec<u8>, Box<str>) {
assert_eq!(byte(s, 0), b'b');
assert_eq!(byte(s, 1), b'"');
@@ -1455,9 +1449,6 @@
}
}
- // Clippy false positive
- // https://github.com/rust-lang-nursery/rust-clippy/issues/2329
- #[allow(clippy::needless_continue)]
fn parse_lit_c_str_cooked(mut s: &str) -> (CString, Box<str>) {
assert_eq!(byte(s, 0), b'c');
assert_eq!(byte(s, 1), b'"');
diff --git a/crates/syn/tests/common/eq.rs b/crates/syn/tests/common/eq.rs
index bae9b30..53fd84e 100644
--- a/crates/syn/tests/common/eq.rs
+++ b/crates/syn/tests/common/eq.rs
@@ -49,6 +49,7 @@
use rustc_ast::ast::FieldDef;
use rustc_ast::ast::FloatTy;
use rustc_ast::ast::Fn;
+use rustc_ast::ast::FnContract;
use rustc_ast::ast::FnDecl;
use rustc_ast::ast::FnHeader;
use rustc_ast::ast::FnRetTy;
@@ -147,6 +148,8 @@
use rustc_ast::ast::TyAliasWhereClause;
use rustc_ast::ast::TyAliasWhereClauses;
use rustc_ast::ast::TyKind;
+use rustc_ast::ast::TyPat;
+use rustc_ast::ast::TyPatKind;
use rustc_ast::ast::UintTy;
use rustc_ast::ast::UnOp;
use rustc_ast::ast::UnsafeBinderCastKind;
@@ -173,13 +176,13 @@
Spacing, TokenStream, TokenTree,
};
use rustc_data_structures::packed::Pu128;
-use rustc_data_structures::sync::Lrc;
use rustc_span::source_map::Spanned;
use rustc_span::symbol::{sym, Ident};
use rustc_span::{ErrorGuaranteed, Span, Symbol, SyntaxContext, DUMMY_SP};
use std::borrow::Cow;
use std::collections::HashMap;
use std::hash::{BuildHasher, Hash};
+use std::sync::Arc;
use thin_vec::ThinVec;
pub trait SpanlessEq {
@@ -198,7 +201,7 @@
}
}
-impl<T: ?Sized + SpanlessEq> SpanlessEq for Lrc<T> {
+impl<T: ?Sized + SpanlessEq> SpanlessEq for Arc<T> {
fn eq(&self, other: &Self) -> bool {
SpanlessEq::eq(&**self, &**other)
}
@@ -497,7 +500,8 @@
spanless_eq_struct!(Expr; id kind span attrs !tokens);
spanless_eq_struct!(ExprField; attrs id span ident expr is_shorthand is_placeholder);
spanless_eq_struct!(FieldDef; attrs id span vis safety ident ty default is_placeholder);
-spanless_eq_struct!(Fn; defaultness generics sig body);
+spanless_eq_struct!(Fn; defaultness generics sig contract body);
+spanless_eq_struct!(FnContract; requires ensures);
spanless_eq_struct!(FnDecl; inputs output);
spanless_eq_struct!(FnHeader; constness coroutine_kind safety ext);
spanless_eq_struct!(FnSig; header decl span);
@@ -545,6 +549,7 @@
spanless_eq_struct!(TyAlias; defaultness generics where_clauses bounds ty);
spanless_eq_struct!(TyAliasWhereClause; !has_where_token span);
spanless_eq_struct!(TyAliasWhereClauses; before after !split);
+spanless_eq_struct!(TyPat; id kind span tokens);
spanless_eq_struct!(UnsafeBinderTy; generic_params inner_ty);
spanless_eq_struct!(UseTree; prefix kind span);
spanless_eq_struct!(Variant; attrs id span !vis ident data disr_expr is_placeholder);
@@ -552,7 +557,7 @@
spanless_eq_struct!(WhereBoundPredicate; bound_generic_params bounded_ty bounds);
spanless_eq_struct!(WhereClause; has_where_token predicates span);
spanless_eq_struct!(WhereEqPredicate; lhs_ty rhs_ty);
-spanless_eq_struct!(WherePredicate; kind id span);
+spanless_eq_struct!(WherePredicate; attrs kind id span is_placeholder);
spanless_eq_struct!(WhereRegionPredicate; lifetime bounds);
spanless_eq_enum!(AngleBracketedArg; Arg(0) Constraint(0));
spanless_eq_enum!(AsmMacro; Asm GlobalAsm NakedAsm);
@@ -568,7 +573,7 @@
spanless_eq_enum!(BoundConstness; Never Always(0) Maybe(0));
spanless_eq_enum!(BoundPolarity; Positive Negative(0) Maybe(0));
spanless_eq_enum!(ByRef; Yes(0) No);
-spanless_eq_enum!(CaptureBy; Value(move_kw) Ref);
+spanless_eq_enum!(CaptureBy; Value(move_kw) Ref Use(use_kw));
spanless_eq_enum!(ClosureBinder; NotPresent For(span generic_params));
spanless_eq_enum!(Const; Yes(0) No);
spanless_eq_enum!(Defaultness; Default(0) Final);
@@ -618,6 +623,7 @@
spanless_eq_enum!(Term; Ty(0) Const(0));
spanless_eq_enum!(TokenTree; Token(0 1) Delimited(0 1 2 3));
spanless_eq_enum!(TraitObjectSyntax; Dyn DynStar None);
+spanless_eq_enum!(TyPatKind; Range(0 1 2) Err(0));
spanless_eq_enum!(UintTy; Usize U8 U16 U32 U64 U128);
spanless_eq_enum!(UnOp; Deref Not Neg);
spanless_eq_enum!(UnsafeBinderCastKind; Wrap Unwrap);
@@ -632,8 +638,8 @@
spanless_eq_enum!(ExprKind; Array(0) ConstBlock(0) Call(0 1) MethodCall(0)
Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1) Let(0 1 2 3)
If(0 1 2) While(0 1 2) ForLoop(pat iter body label kind) Loop(0 1 2)
- Match(0 1 2) Closure(0) Block(0 1) Gen(0 1 2 3) Await(0 1) TryBlock(0)
- Assign(0 1 2) AssignOp(0 1 2) Field(0 1) Index(0 1 2) Underscore
+ Match(0 1 2) Closure(0) Block(0 1) Gen(0 1 2 3) Await(0 1) Use(0 1)
+ TryBlock(0) Assign(0 1 2) AssignOp(0 1 2) Field(0 1) Index(0 1 2) Underscore
Range(0 1 2) Path(0 1) AddrOf(0 1 2) Break(0 1) Continue(0) Ret(0)
InlineAsm(0) OffsetOf(0 1) MacCall(0) Struct(0) Repeat(0 1) Paren(0) Try(0)
Yield(0) Yeet(0) Become(0) IncludedBytes(0) FormatArgs(0)
@@ -769,7 +775,7 @@
match trees.next() {
Some(TokenTree::Token(
Token {
- kind: TokenKind::Not,
+ kind: TokenKind::Bang,
span: _,
},
_spacing,
diff --git a/crates/syn/tests/test_asyncness.rs b/crates/syn/tests/test_asyncness.rs
index e409bc9..09dbfc5 100644
--- a/crates/syn/tests/test_asyncness.rs
+++ b/crates/syn/tests/test_asyncness.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_attribute.rs b/crates/syn/tests/test_attribute.rs
index 739b894..a19dd0b 100644
--- a/crates/syn/tests/test_attribute.rs
+++ b/crates/syn/tests/test_attribute.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_derive_input.rs b/crates/syn/tests/test_derive_input.rs
index 9cf1e11..11467c7 100644
--- a/crates/syn/tests/test_derive_input.rs
+++ b/crates/syn/tests/test_derive_input.rs
@@ -1,5 +1,6 @@
#![allow(
clippy::assertions_on_result_states,
+ clippy::elidable_lifetime_names,
clippy::manual_let_else,
clippy::needless_lifetimes,
clippy::too_many_lines,
diff --git a/crates/syn/tests/test_expr.rs b/crates/syn/tests/test_expr.rs
index 67d5f0d..5203ec0 100644
--- a/crates/syn/tests/test_expr.rs
+++ b/crates/syn/tests/test_expr.rs
@@ -2,6 +2,7 @@
#![recursion_limit = "1024"]
#![feature(rustc_private)]
#![allow(
+ clippy::elidable_lifetime_names,
clippy::match_like_matches_macro,
clippy::needless_lifetimes,
clippy::single_element_loop,
diff --git a/crates/syn/tests/test_generics.rs b/crates/syn/tests/test_generics.rs
index 9f405e7..4dc183c 100644
--- a/crates/syn/tests/test_generics.rs
+++ b/crates/syn/tests/test_generics.rs
@@ -1,4 +1,5 @@
#![allow(
+ clippy::elidable_lifetime_names,
clippy::manual_let_else,
clippy::needless_lifetimes,
clippy::too_many_lines,
diff --git a/crates/syn/tests/test_grouping.rs b/crates/syn/tests/test_grouping.rs
index 9809db0..5d4b629 100644
--- a/crates/syn/tests/test_grouping.rs
+++ b/crates/syn/tests/test_grouping.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_item.rs b/crates/syn/tests/test_item.rs
index 51a5ba9..0a12b7a 100644
--- a/crates/syn/tests/test_item.rs
+++ b/crates/syn/tests/test_item.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_iterators.rs b/crates/syn/tests/test_iterators.rs
index 3f0637c..525d77b 100644
--- a/crates/syn/tests/test_iterators.rs
+++ b/crates/syn/tests/test_iterators.rs
@@ -1,4 +1,5 @@
#![allow(
+ clippy::elidable_lifetime_names,
clippy::map_unwrap_or,
clippy::needless_lifetimes,
clippy::uninlined_format_args
diff --git a/crates/syn/tests/test_lit.rs b/crates/syn/tests/test_lit.rs
index a7194ab..6a7208a 100644
--- a/crates/syn/tests/test_lit.rs
+++ b/crates/syn/tests/test_lit.rs
@@ -1,4 +1,5 @@
#![allow(
+ clippy::elidable_lifetime_names,
clippy::float_cmp,
clippy::needless_lifetimes,
clippy::needless_raw_string_hashes,
diff --git a/crates/syn/tests/test_meta.rs b/crates/syn/tests/test_meta.rs
index abb842b..519b3ec 100644
--- a/crates/syn/tests/test_meta.rs
+++ b/crates/syn/tests/test_meta.rs
@@ -1,4 +1,5 @@
#![allow(
+ clippy::elidable_lifetime_names,
clippy::needless_lifetimes,
clippy::shadow_unrelated,
clippy::too_many_lines,
diff --git a/crates/syn/tests/test_parse_quote.rs b/crates/syn/tests/test_parse_quote.rs
index c3a9004..33665e0 100644
--- a/crates/syn/tests/test_parse_quote.rs
+++ b/crates/syn/tests/test_parse_quote.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_pat.rs b/crates/syn/tests/test_pat.rs
index eabba40..615de6a 100644
--- a/crates/syn/tests/test_pat.rs
+++ b/crates/syn/tests/test_pat.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_path.rs b/crates/syn/tests/test_path.rs
index bdb2749..39aa91c 100644
--- a/crates/syn/tests/test_path.rs
+++ b/crates/syn/tests/test_path.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_precedence.rs b/crates/syn/tests/test_precedence.rs
index c7b4ace..1d52022 100644
--- a/crates/syn/tests/test_precedence.rs
+++ b/crates/syn/tests/test_precedence.rs
@@ -19,6 +19,7 @@
#![allow(
clippy::blocks_in_conditions,
clippy::doc_markdown,
+ clippy::elidable_lifetime_names,
clippy::explicit_deref_methods,
clippy::let_underscore_untyped,
clippy::manual_assert,
diff --git a/crates/syn/tests/test_receiver.rs b/crates/syn/tests/test_receiver.rs
index c4a6317..b0e2a91 100644
--- a/crates/syn/tests/test_receiver.rs
+++ b/crates/syn/tests/test_receiver.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_round_trip.rs b/crates/syn/tests/test_round_trip.rs
index 197552f..c649a55 100644
--- a/crates/syn/tests/test_round_trip.rs
+++ b/crates/syn/tests/test_round_trip.rs
@@ -4,6 +4,7 @@
#![feature(rustc_private)]
#![allow(
clippy::blocks_in_conditions,
+ clippy::elidable_lifetime_names,
clippy::manual_assert,
clippy::manual_let_else,
clippy::match_like_matches_macro,
diff --git a/crates/syn/tests/test_shebang.rs b/crates/syn/tests/test_shebang.rs
index 994ab1c..20450b7 100644
--- a/crates/syn/tests/test_shebang.rs
+++ b/crates/syn/tests/test_shebang.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_stmt.rs b/crates/syn/tests/test_stmt.rs
index b2a49b0..ba1e63a 100644
--- a/crates/syn/tests/test_stmt.rs
+++ b/crates/syn/tests/test_stmt.rs
@@ -1,5 +1,6 @@
#![allow(
clippy::assertions_on_result_states,
+ clippy::elidable_lifetime_names,
clippy::needless_lifetimes,
clippy::non_ascii_literal,
clippy::uninlined_format_args
diff --git a/crates/syn/tests/test_token_trees.rs b/crates/syn/tests/test_token_trees.rs
index 9bd73b1..3dc3734 100644
--- a/crates/syn/tests/test_token_trees.rs
+++ b/crates/syn/tests/test_token_trees.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_ty.rs b/crates/syn/tests/test_ty.rs
index ea55d94..c85f592 100644
--- a/crates/syn/tests/test_ty.rs
+++ b/crates/syn/tests/test_ty.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/syn/tests/test_unparenthesize.rs b/crates/syn/tests/test_unparenthesize.rs
index 1330aa2..ece2c2e 100644
--- a/crates/syn/tests/test_unparenthesize.rs
+++ b/crates/syn/tests/test_unparenthesize.rs
@@ -2,6 +2,7 @@
#![recursion_limit = "1024"]
#![feature(rustc_private)]
#![allow(
+ clippy::elidable_lifetime_names,
clippy::manual_assert,
clippy::match_like_matches_macro,
clippy::needless_lifetimes,
diff --git a/crates/syn/tests/test_visibility.rs b/crates/syn/tests/test_visibility.rs
index 6c065d0..0bc98b1 100644
--- a/crates/syn/tests/test_visibility.rs
+++ b/crates/syn/tests/test_visibility.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::needless_lifetimes, clippy::uninlined_format_args)]
+#![allow(
+ clippy::elidable_lifetime_names,
+ clippy::needless_lifetimes,
+ clippy::uninlined_format_args
+)]
#[macro_use]
mod macros;
diff --git a/crates/synstructure/.android-checksum.json b/crates/synstructure/.android-checksum.json
index 695dc46..ba21b96 100644
--- a/crates/synstructure/.android-checksum.json
+++ b/crates/synstructure/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f89bfa2dba1504a5959c3af8f7ef91c180789be58a2e34b68132d68950f2ef80","Android.bp":"2a83570d1813fa66bf840e6f177da157075da2203366da9e4c5cf53261458bd2","Cargo.toml":"847ef797326df611b33de84b23f3d616ad6f34dbf610d054bebc64d58913bb04","LICENSE":"bb78d6a5b2f4ba5d604d2fccd6e84f515837bba757398168ff4e0fd4b01bd8cd","METADATA":"7be3d9ce2891a33bb1de3558413b8a70a95154e4ff2c0515521b62120493a174","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"31949e4de86d838c07ff7d855a7a63a2e0ab1557a82fb4296a10abc8c4eb4039","TEST_MAPPING":"671cc8a83f867386aafc0b38cf0052adac235fa68c990e4e3bad1912ba69c4d6","cargo_embargo.json":"15c8d53a8d6555220ddcd5b6fd60a310b5b873f964d3a7542af67d7ab6de16bc","rules.mk":"f2eb9bbf9d8cbba8afc07ae692ff0b3b3b5c886bc9310279e7adb1b115fbb263","src/lib.rs":"080b9dce59720d48a94fec5e24bcd1bccfb9408a8ea729acd2c0f05dc709c8f6","src/macros.rs":"ec7ce588095009a78ec79ad4d0eb3b9ff8e23a1693fff09088e6d5513fe439fc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f89bfa2dba1504a5959c3af8f7ef91c180789be58a2e34b68132d68950f2ef80","Android.bp":"2a83570d1813fa66bf840e6f177da157075da2203366da9e4c5cf53261458bd2","Cargo.toml":"847ef797326df611b33de84b23f3d616ad6f34dbf610d054bebc64d58913bb04","LICENSE":"bb78d6a5b2f4ba5d604d2fccd6e84f515837bba757398168ff4e0fd4b01bd8cd","METADATA":"7be3d9ce2891a33bb1de3558413b8a70a95154e4ff2c0515521b62120493a174","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"31949e4de86d838c07ff7d855a7a63a2e0ab1557a82fb4296a10abc8c4eb4039","TEST_MAPPING":"671cc8a83f867386aafc0b38cf0052adac235fa68c990e4e3bad1912ba69c4d6","cargo_embargo.json":"9a5530478074a7aee8647ead7aa0204bf7599b58990bab583202a1fa075ce2fa","rules.mk":"f2eb9bbf9d8cbba8afc07ae692ff0b3b3b5c886bc9310279e7adb1b115fbb263","src/lib.rs":"080b9dce59720d48a94fec5e24bcd1bccfb9408a8ea729acd2c0f05dc709c8f6","src/macros.rs":"ec7ce588095009a78ec79ad4d0eb3b9ff8e23a1693fff09088e6d5513fe439fc"}}
\ No newline at end of file
diff --git a/crates/synstructure/cargo_embargo.json b/crates/synstructure/cargo_embargo.json
index 72e9a41..c7c4220 100644
--- a/crates/synstructure/cargo_embargo.json
+++ b/crates/synstructure/cargo_embargo.json
@@ -9,5 +9,6 @@
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/taffy/.android-checksum.json b/crates/taffy/.android-checksum.json
index d999cb7..4f1d681 100644
--- a/crates/taffy/.android-checksum.json
+++ b/crates/taffy/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c1689acbd498a45cf741f5a9fba071fb5e062d4a890fe0df9bf82745db0efd38","Android.bp":"d928f805815f9559e3ab6316965e7661ebcee445a64ee3d63d0f33bf2873bf95","Cargo.lock":"a64c06f1bde1c0deb6f9834e4cfede33e2f4af6a41a6bab7955f7c9124ec95e4","Cargo.toml":"0ff5722bb0e9b9bfbdda7f8a07b23c770f5d833654927e97bcb4653a665c07af","LICENSE":"4506fe956b171a309a805da209838a04c67ca01ba87bb4ee2319e29bb198d0e8","METADATA":"ddf2fd2c8957deec55646bbe61a8af4d364065c44c164854f00cdd31ba96865b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a311745417e7fbfee1c03f2f7e92bd2bc84c10cfab2a44a593d67b3b42ecf173","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/basic.rs":"03104def2bfc9283317b4ae4d3cd2bf057f7d5d2a370d522f99ad772703b1c10","examples/common/image.rs":"167bcefc2ff5aa73e9125eefdb7e4f9cf08a5b416af482b38a96a8464c333175","examples/common/text.rs":"3b06d05dad53c0842ce31943a36681a2c00670b6a0f2e8624c4aa09c112d2078","examples/custom_tree_owned_partial.rs":"f20009907521487b562ccb355d1788c33a23c14a4792fda319593aa4d3149d4f","examples/custom_tree_owned_unsafe.rs":"ea988e5bf0f1cc54534af534ecf329865bdc8f2adf2d6e52e5b3fab05a10c043","examples/custom_tree_vec.rs":"e090bd1ee8172b535e4025b644041c946cadaac74f4e705811ea9741d73139af","examples/flexbox_gap.rs":"e06443191a34f83e83c09ef77f560dc5bde61aab3d6b94067e36e9300973eb58","examples/grid_holy_grail.rs":"9f978f54669893117dd0bc418907d36284c9175a1f28841075f6a16e287a4005","examples/measure.rs":"416eb0cb70e30817b931bc9f4fc60101f8c7b97685d32dc2ba5bbfdf85710c75","examples/nested.rs":"06ed7a24b6447c848fd931aa77feebf0bc3891a1385927f062da9d5d589c16b2","patches/LICENSE.patch":"9f524257806ad757a95f8101f2d1f9424d301b80ffe13de43aab1e11bbc3d398","src/compute/block.rs":"9d092d015eba770add68121389c42be82c2f1eb9e7430833e7b564279a546901","src/compute/common/alignment.rs":"653bab5ead652cb8d131a57efb139b6f829088e0a7b0a8d7daf18d92dbd49caf","src/compute/common/content_size.rs":"e90ca8fc92bace71ab2aa332a5c7e177479555d6a3e5571dc4eea5ebdce2dbda","src/compute/common/mod.rs":"71f80a4df61f620e0bd27351af53cfa26b54a832bba01a2c2b47e3b070e854a6","src/compute/flexbox.rs":"d7936fc17297565c94374fd0741d5a1ff6bf11bac289098c8c16b9891dc5c58f","src/compute/grid/alignment.rs":"80bab3c2f7a7e0913dc1182af98bec7fecafd023bfdabcb3613080651c853d7d","src/compute/grid/explicit_grid.rs":"a97d07212109ed4718024e4b25b50faf08a757a6d035c6d92341d4935986c539","src/compute/grid/implicit_grid.rs":"33b98e4f323353151392fa13d0dac88b13bc712e6d88c1ad1318739c3530970d","src/compute/grid/mod.rs":"6aeb7e4b8631542dc09171ab5b1b9588942a70485eeb85ffb137d886178d6ee7","src/compute/grid/placement.rs":"659a500755ea7f1db0cd35cb08ff798187a148416902933176a8cb07bbc46af3","src/compute/grid/track_sizing.rs":"e8ad68749ff5c7cbcf9cde40cfdff4ef8a74e00fa60728e00e85fe2c195e0bd8","src/compute/grid/types/cell_occupancy.rs":"37f74d9f70c89c242038df551907b7ce636e69605b083aab86c38093b782fe2f","src/compute/grid/types/coordinates.rs":"b46df82088b1381a5d8b8e5040ef0e97ffdbbe8eb445585969b811c27d84684c","src/compute/grid/types/grid_item.rs":"0fdabc455ac5e1c69a3dbd377d417b0421c1460ca0dcd6e863dfdfa784886c38","src/compute/grid/types/grid_track.rs":"a97144c0a51f6ef75524ba61f0a0db4065aa708db3a968ca1070d8f762c2bf42","src/compute/grid/types/grid_track_counts.rs":"c83ca6cff001679771989543c8081f26be2ff1d6d9cbd7f9056650722624d1cb","src/compute/grid/types/mod.rs":"a7a1775ce696a9b1da2856b9c18b0d645cb5500be47127991e9e9072729a91ea","src/compute/grid/util/mod.rs":"0eca1bf4c8f01e599541deeb88197ccf20e91485f1be73f988e7ac37961c807e","src/compute/grid/util/test_helpers.rs":"9b659fc6b40770a5a7a1a792b5cd9489cf3d90130e4563c6d5ae7887c24f081a","src/compute/leaf.rs":"59bfcff3e2f2eebe65561d147c1047abc16bbee938cee6d43117898c5fcec398","src/compute/mod.rs":"88f2cd5eed5e6bfabccab56482b952a6576056f9d226628e8b7147ab9d6ae934","src/geometry.rs":"6a946df58a72bc3ab9dd33aa9015b3bf52726dac697d23cc9bd8a3d78f66e736","src/lib.rs":"04ec8a6f169ace7167698905f2c129ecb2859635807e6b46802da6591f122773","src/prelude.rs":"63890eeae5f7614dbe210bea363c91aa275a3eefecfe7770405d9063b575b2b8","src/style/alignment.rs":"20b1170947f4484020e66b23360fe9f956d651f90984a6489b3b4676c941ac30","src/style/block.rs":"dae0ef1ec38b37b6e78230a776b60312ac6c00dd2735b9e9c8dacbc451f52633","src/style/dimension.rs":"5e6071e95fb9ac317a00f4a79987a3d9737bd67b23d7f1ea2115a930d68d32f7","src/style/flex.rs":"076930bbf805803e0f03d1c3849c330671345564cc14cbca19179f148f5b5962","src/style/grid.rs":"9d5fa8292773094220e9638e3f8ccc5a562db686a94b686eca030f1f63fc964f","src/style/mod.rs":"2cdd876af398e4da5f232efd2f9a5627d12b12ef7d0b91354cddac9b1b8c93b6","src/style_helpers.rs":"c05cb35c3b265d73bf7268589312ec70030e0f10d5f1ffc75a706097d529678c","src/test.rs":"4bab3295be7c6a5de7c550b9d6d971c097995302540ff2370d31b8e125d25b40","src/tree/cache.rs":"55f58af1c9c7572d966c105a3c97244b0d7e7adfff3f8ebc64c314578915af17","src/tree/layout.rs":"8acfa00f93878f80ee8a459e1cff2a6afcf4a6f18b51dabe66b93a9d28f63546","src/tree/mod.rs":"21c8c874414a7c3c53bfe5334913266948d6db85591eae9b877bbbfa9743a3f6","src/tree/node.rs":"1ca722c20b91e844b502c30866f7a66cd32d7c5f9d7d8692aae7f578aad30405","src/tree/taffy_tree.rs":"1dc39e740e355f80c82b7782fe839efe18802f22fce9eab130e2c573bccb2315","src/tree/traits.rs":"5e0c449dad059552b22fca2d1a46b6ef7eb7bac8bdaf66fbcaec66a54468b89b","src/util/debug.rs":"486bf30586b3132d0d5f78ee70ef8d67901aff50460c3b485a74d51ee0cbc012","src/util/math.rs":"e3691e2855277c1756e8589eff734568cc8b6469787725c73f76e1f636ecf26d","src/util/mod.rs":"87863cf6daedf15a5251cd00684dbe911dae35ca66e43b0f904d074893f2b339","src/util/print.rs":"0f2ac776ebfa26c36e86b581397e2a417860aea436ae7f75991e9e5452ac2355","src/util/resolve.rs":"5c023a3163c424324f31987dcc55b73f7118163f1a0aa7f626ce5d76d878a6f8","src/util/sys.rs":"36f8523aa11de7c69f72db41763e3ffa091c0f9e196e23d2885ca367ac1366ee"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c1689acbd498a45cf741f5a9fba071fb5e062d4a890fe0df9bf82745db0efd38","Android.bp":"95a122de6e5ac46b97d69af6efab3d5813c86bb65ac13a6ba4fed86e6fa3027e","Cargo.lock":"a64c06f1bde1c0deb6f9834e4cfede33e2f4af6a41a6bab7955f7c9124ec95e4","Cargo.toml":"0ff5722bb0e9b9bfbdda7f8a07b23c770f5d833654927e97bcb4653a665c07af","LICENSE":"4506fe956b171a309a805da209838a04c67ca01ba87bb4ee2319e29bb198d0e8","METADATA":"ddf2fd2c8957deec55646bbe61a8af4d364065c44c164854f00cdd31ba96865b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a311745417e7fbfee1c03f2f7e92bd2bc84c10cfab2a44a593d67b3b42ecf173","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/basic.rs":"03104def2bfc9283317b4ae4d3cd2bf057f7d5d2a370d522f99ad772703b1c10","examples/common/image.rs":"167bcefc2ff5aa73e9125eefdb7e4f9cf08a5b416af482b38a96a8464c333175","examples/common/text.rs":"3b06d05dad53c0842ce31943a36681a2c00670b6a0f2e8624c4aa09c112d2078","examples/custom_tree_owned_partial.rs":"f20009907521487b562ccb355d1788c33a23c14a4792fda319593aa4d3149d4f","examples/custom_tree_owned_unsafe.rs":"ea988e5bf0f1cc54534af534ecf329865bdc8f2adf2d6e52e5b3fab05a10c043","examples/custom_tree_vec.rs":"e090bd1ee8172b535e4025b644041c946cadaac74f4e705811ea9741d73139af","examples/flexbox_gap.rs":"e06443191a34f83e83c09ef77f560dc5bde61aab3d6b94067e36e9300973eb58","examples/grid_holy_grail.rs":"9f978f54669893117dd0bc418907d36284c9175a1f28841075f6a16e287a4005","examples/measure.rs":"416eb0cb70e30817b931bc9f4fc60101f8c7b97685d32dc2ba5bbfdf85710c75","examples/nested.rs":"06ed7a24b6447c848fd931aa77feebf0bc3891a1385927f062da9d5d589c16b2","patches/LICENSE.patch":"9f524257806ad757a95f8101f2d1f9424d301b80ffe13de43aab1e11bbc3d398","src/compute/block.rs":"9d092d015eba770add68121389c42be82c2f1eb9e7430833e7b564279a546901","src/compute/common/alignment.rs":"653bab5ead652cb8d131a57efb139b6f829088e0a7b0a8d7daf18d92dbd49caf","src/compute/common/content_size.rs":"e90ca8fc92bace71ab2aa332a5c7e177479555d6a3e5571dc4eea5ebdce2dbda","src/compute/common/mod.rs":"71f80a4df61f620e0bd27351af53cfa26b54a832bba01a2c2b47e3b070e854a6","src/compute/flexbox.rs":"d7936fc17297565c94374fd0741d5a1ff6bf11bac289098c8c16b9891dc5c58f","src/compute/grid/alignment.rs":"80bab3c2f7a7e0913dc1182af98bec7fecafd023bfdabcb3613080651c853d7d","src/compute/grid/explicit_grid.rs":"a97d07212109ed4718024e4b25b50faf08a757a6d035c6d92341d4935986c539","src/compute/grid/implicit_grid.rs":"33b98e4f323353151392fa13d0dac88b13bc712e6d88c1ad1318739c3530970d","src/compute/grid/mod.rs":"6aeb7e4b8631542dc09171ab5b1b9588942a70485eeb85ffb137d886178d6ee7","src/compute/grid/placement.rs":"659a500755ea7f1db0cd35cb08ff798187a148416902933176a8cb07bbc46af3","src/compute/grid/track_sizing.rs":"e8ad68749ff5c7cbcf9cde40cfdff4ef8a74e00fa60728e00e85fe2c195e0bd8","src/compute/grid/types/cell_occupancy.rs":"37f74d9f70c89c242038df551907b7ce636e69605b083aab86c38093b782fe2f","src/compute/grid/types/coordinates.rs":"b46df82088b1381a5d8b8e5040ef0e97ffdbbe8eb445585969b811c27d84684c","src/compute/grid/types/grid_item.rs":"0fdabc455ac5e1c69a3dbd377d417b0421c1460ca0dcd6e863dfdfa784886c38","src/compute/grid/types/grid_track.rs":"a97144c0a51f6ef75524ba61f0a0db4065aa708db3a968ca1070d8f762c2bf42","src/compute/grid/types/grid_track_counts.rs":"c83ca6cff001679771989543c8081f26be2ff1d6d9cbd7f9056650722624d1cb","src/compute/grid/types/mod.rs":"a7a1775ce696a9b1da2856b9c18b0d645cb5500be47127991e9e9072729a91ea","src/compute/grid/util/mod.rs":"0eca1bf4c8f01e599541deeb88197ccf20e91485f1be73f988e7ac37961c807e","src/compute/grid/util/test_helpers.rs":"9b659fc6b40770a5a7a1a792b5cd9489cf3d90130e4563c6d5ae7887c24f081a","src/compute/leaf.rs":"59bfcff3e2f2eebe65561d147c1047abc16bbee938cee6d43117898c5fcec398","src/compute/mod.rs":"88f2cd5eed5e6bfabccab56482b952a6576056f9d226628e8b7147ab9d6ae934","src/geometry.rs":"6a946df58a72bc3ab9dd33aa9015b3bf52726dac697d23cc9bd8a3d78f66e736","src/lib.rs":"04ec8a6f169ace7167698905f2c129ecb2859635807e6b46802da6591f122773","src/prelude.rs":"63890eeae5f7614dbe210bea363c91aa275a3eefecfe7770405d9063b575b2b8","src/style/alignment.rs":"20b1170947f4484020e66b23360fe9f956d651f90984a6489b3b4676c941ac30","src/style/block.rs":"dae0ef1ec38b37b6e78230a776b60312ac6c00dd2735b9e9c8dacbc451f52633","src/style/dimension.rs":"5e6071e95fb9ac317a00f4a79987a3d9737bd67b23d7f1ea2115a930d68d32f7","src/style/flex.rs":"076930bbf805803e0f03d1c3849c330671345564cc14cbca19179f148f5b5962","src/style/grid.rs":"9d5fa8292773094220e9638e3f8ccc5a562db686a94b686eca030f1f63fc964f","src/style/mod.rs":"2cdd876af398e4da5f232efd2f9a5627d12b12ef7d0b91354cddac9b1b8c93b6","src/style_helpers.rs":"c05cb35c3b265d73bf7268589312ec70030e0f10d5f1ffc75a706097d529678c","src/test.rs":"4bab3295be7c6a5de7c550b9d6d971c097995302540ff2370d31b8e125d25b40","src/tree/cache.rs":"55f58af1c9c7572d966c105a3c97244b0d7e7adfff3f8ebc64c314578915af17","src/tree/layout.rs":"8acfa00f93878f80ee8a459e1cff2a6afcf4a6f18b51dabe66b93a9d28f63546","src/tree/mod.rs":"21c8c874414a7c3c53bfe5334913266948d6db85591eae9b877bbbfa9743a3f6","src/tree/node.rs":"1ca722c20b91e844b502c30866f7a66cd32d7c5f9d7d8692aae7f578aad30405","src/tree/taffy_tree.rs":"1dc39e740e355f80c82b7782fe839efe18802f22fce9eab130e2c573bccb2315","src/tree/traits.rs":"5e0c449dad059552b22fca2d1a46b6ef7eb7bac8bdaf66fbcaec66a54468b89b","src/util/debug.rs":"486bf30586b3132d0d5f78ee70ef8d67901aff50460c3b485a74d51ee0cbc012","src/util/math.rs":"e3691e2855277c1756e8589eff734568cc8b6469787725c73f76e1f636ecf26d","src/util/mod.rs":"87863cf6daedf15a5251cd00684dbe911dae35ca66e43b0f904d074893f2b339","src/util/print.rs":"0f2ac776ebfa26c36e86b581397e2a417860aea436ae7f75991e9e5452ac2355","src/util/resolve.rs":"5c023a3163c424324f31987dcc55b73f7118163f1a0aa7f626ce5d76d878a6f8","src/util/sys.rs":"36f8523aa11de7c69f72db41763e3ffa091c0f9e196e23d2885ca367ac1366ee"}}
\ No newline at end of file
diff --git a/crates/taffy/Android.bp b/crates/taffy/Android.bp
index 28287e6..147e95d 100644
--- a/crates/taffy/Android.bp
+++ b/crates/taffy/Android.bp
@@ -43,4 +43,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/taffy/cargo_embargo.json b/crates/taffy/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/taffy/cargo_embargo.json
+++ b/crates/taffy/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/textdistance/.android-checksum.json b/crates/textdistance/.android-checksum.json
index 4f0150b..5c6250a 100644
--- a/crates/textdistance/.android-checksum.json
+++ b/crates/textdistance/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"3b9241683db786136d74469a4be22faf0881e1266c36a8cc1d6467ff85d66d63","Android.bp":"a45dcb358eacf2628a28361fe037e0737f041a86e45928c91eff1cbbda28bc41","Cargo.lock":"1104c19811a60b82753c98876aca318475182db2798432d0ada4daaeae61f2e3","Cargo.toml":"2331a78976d39e9c0d882a50cd72d62d886678334f4a3f9df87bbd178d1a7c12","LICENSE":"decc1c7bfdb75b188bd69fcc81c1ee3b71bd2f7d6f67db68f23a428aaa1a4497","METADATA":"40b380f76ef7851233b1e2c271bd63be14d799c844bdabe5f7d1e2f65e0cff52","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37e1f9890617702e835134a3ddef056bc1d0d7f75c20cfedca213199a3556a30","Taskfile.yaml":"eb60c88c5ea196cf976df722209c43d7a92de7c036b6746053e0c9aae9d7c783","benches/str_benchmarks.rs":"020324785d0019674082dfca385f62a25e3b93918db489c9be17b53b1d16a3ed","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","src/algorithm.rs":"a3295b4a8a8756f9d6e2add55041c1c8def7a2d54d4508a6479eecfc5b4519de","src/algorithms/bag.rs":"70087c96676dfbd05e239d7e60f9dde6e682a44404a14c5c773b082db8bd0b37","src/algorithms/cosine.rs":"0c7211705986db034e06749b6954094e96e2bd137d4dddec1ea90f6b8580c4ea","src/algorithms/damerau_levenshtein.rs":"1c01fa1f13653b5882fe0b8ff2e3cdf22988a3391ba77c295804169e408ce157","src/algorithms/entropy_ncd.rs":"a2ddd172e0a281c8a7f99962f8657c447b9d58d12c71e36c4132f107288f5467","src/algorithms/hamming.rs":"10c942e5ed03fa2ddb80199370b3bb8fd1167e8ae9d6767df952a3f90474bfc4","src/algorithms/jaccard.rs":"0afa9f244ace606a02706cb6cce7615275fdb42ec0b8058c288dbb220d9ea032","src/algorithms/jaro.rs":"45ce234e39999d1ad24a503fd3339736c611838c7274aa95328ddec4ffeda6a6","src/algorithms/jaro_winkler.rs":"2dfba19b7d75bc28699bbe37859730e038df2e2f8705afc1dcf394803b28ae41","src/algorithms/lcsseq.rs":"586ab3333a66844515048031bfe3f675c6b55e40c96107f9c37dfdb6f260bfc5","src/algorithms/lcsstr.rs":"817da97a27b492e550495fb7b88ad2c76ecc466d815cbb22aba609b8d5c0fcbd","src/algorithms/length.rs":"34d311be89ff8da511bfb98f3d42b8e8f0629898cfab1736602bd9b2460e527a","src/algorithms/levenshtein.rs":"5d950805dcb57d4b5e7fa1ae856a37475e83da8af4dee6a2d2021f2c90326b13","src/algorithms/lig3.rs":"61ebbe3cb8dfa1e889cd32f8c08ae90151ed494ac6be67f20e9e76c12bc6f42c","src/algorithms/mlipns.rs":"bf60fb5a4aef9231de80ba13b6d03dbb04604203ae6fe84fdec941ce769721c7","src/algorithms/overlap.rs":"c27835ae21d28aa19eea71d30325172215f3b41f105be4d94897e4974fbb7095","src/algorithms/prefix.rs":"475c3cfad4c40bfff0ea5d05e1f706ce7b31dd59fbda1af56070981817450068","src/algorithms/ratcliff_obershelp.rs":"49282fa9f0936d58ee1c6ac9e7e5ff45ba864eb1a22695a82032d6c8aad15f04","src/algorithms/roberts.rs":"fa4d6fc74de9b79d809b1c63ab265f4b0fd594dd02ed96991af0d569a97bb25a","src/algorithms/sift4_common.rs":"ed6ef5de7b7dbd1f15f68dfb1bdceee14a6e5806877b0fdf0c3a2a04e198085d","src/algorithms/sift4_simple.rs":"fd0c5025d0a96eda2a891bea29d7358988f9a169bb4e01bfd1a6fbad46120d15","src/algorithms/smith_waterman.rs":"5041b6ccbb2f6f8abb5b437e02e4ccf02a80354dc5aac32b0fe49447bd3abae9","src/algorithms/sorensen_dice.rs":"cb6865f36a78c89afc47da11c2213e489a7c801b4e3c6183c7eb05733b13bbb0","src/algorithms/suffix.rs":"bcda0eb35133d9c6cf3c40352654ee11c7a340a43c3954f542ad37691b76ce8a","src/algorithms/tversky.rs":"f564fc05dffc7f5e4f5d8bafa3fbc0e86188857d15faac6ddee01f802b61dc8c","src/algorithms/yujian_bo.rs":"b09605c480cfa82e9d6a7f857ab809a49f0139581e1aa54d05e2a7b11e080b91","src/counter.rs":"1c597c5cb009404bf22d5b8d5ec0156efff636305247934a6782d4b85c158378","src/lib.rs":"4e60e7d15bf262801dbd44ecd16424be33c12b2580592ef42580eadb3abe4211","src/main.rs":"8d9ea0112d0a2e9cc0ef53d5b760af8cfede3ec81bcae77095cee1fb14e7354b","src/nstr.rs":"263d0284a214b00f396a9737d3f0aa3043af61b02de8d3f7b0f11079cf08a7bc","src/result.rs":"fcafb7ef94669d96e1f78c01397b695566a6a4e2c933bfae99441852d1ff218c","src/str.rs":"c5217fde85d68e2519fdece2207612af336230badb56fd433eb362a305df7b8e","tests/integration_test.rs":"2595d2e421f62e39cb7f0c963079e38313acfa5b0173189ca350b3b44601f86a","tests/test_introspection.py":"9531d8e0f8ab6305ca1589d3ca56d023fe70231161a8d793c404e4af278219c6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"3b9241683db786136d74469a4be22faf0881e1266c36a8cc1d6467ff85d66d63","Android.bp":"60d8e396b4a1f7ce807b0bc7afa627007787daa785e484d65ab76bbceb667841","Cargo.lock":"1104c19811a60b82753c98876aca318475182db2798432d0ada4daaeae61f2e3","Cargo.toml":"2331a78976d39e9c0d882a50cd72d62d886678334f4a3f9df87bbd178d1a7c12","LICENSE":"decc1c7bfdb75b188bd69fcc81c1ee3b71bd2f7d6f67db68f23a428aaa1a4497","METADATA":"40b380f76ef7851233b1e2c271bd63be14d799c844bdabe5f7d1e2f65e0cff52","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37e1f9890617702e835134a3ddef056bc1d0d7f75c20cfedca213199a3556a30","Taskfile.yaml":"eb60c88c5ea196cf976df722209c43d7a92de7c036b6746053e0c9aae9d7c783","benches/str_benchmarks.rs":"020324785d0019674082dfca385f62a25e3b93918db489c9be17b53b1d16a3ed","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","src/algorithm.rs":"a3295b4a8a8756f9d6e2add55041c1c8def7a2d54d4508a6479eecfc5b4519de","src/algorithms/bag.rs":"70087c96676dfbd05e239d7e60f9dde6e682a44404a14c5c773b082db8bd0b37","src/algorithms/cosine.rs":"0c7211705986db034e06749b6954094e96e2bd137d4dddec1ea90f6b8580c4ea","src/algorithms/damerau_levenshtein.rs":"1c01fa1f13653b5882fe0b8ff2e3cdf22988a3391ba77c295804169e408ce157","src/algorithms/entropy_ncd.rs":"a2ddd172e0a281c8a7f99962f8657c447b9d58d12c71e36c4132f107288f5467","src/algorithms/hamming.rs":"10c942e5ed03fa2ddb80199370b3bb8fd1167e8ae9d6767df952a3f90474bfc4","src/algorithms/jaccard.rs":"0afa9f244ace606a02706cb6cce7615275fdb42ec0b8058c288dbb220d9ea032","src/algorithms/jaro.rs":"45ce234e39999d1ad24a503fd3339736c611838c7274aa95328ddec4ffeda6a6","src/algorithms/jaro_winkler.rs":"2dfba19b7d75bc28699bbe37859730e038df2e2f8705afc1dcf394803b28ae41","src/algorithms/lcsseq.rs":"586ab3333a66844515048031bfe3f675c6b55e40c96107f9c37dfdb6f260bfc5","src/algorithms/lcsstr.rs":"817da97a27b492e550495fb7b88ad2c76ecc466d815cbb22aba609b8d5c0fcbd","src/algorithms/length.rs":"34d311be89ff8da511bfb98f3d42b8e8f0629898cfab1736602bd9b2460e527a","src/algorithms/levenshtein.rs":"5d950805dcb57d4b5e7fa1ae856a37475e83da8af4dee6a2d2021f2c90326b13","src/algorithms/lig3.rs":"61ebbe3cb8dfa1e889cd32f8c08ae90151ed494ac6be67f20e9e76c12bc6f42c","src/algorithms/mlipns.rs":"bf60fb5a4aef9231de80ba13b6d03dbb04604203ae6fe84fdec941ce769721c7","src/algorithms/overlap.rs":"c27835ae21d28aa19eea71d30325172215f3b41f105be4d94897e4974fbb7095","src/algorithms/prefix.rs":"475c3cfad4c40bfff0ea5d05e1f706ce7b31dd59fbda1af56070981817450068","src/algorithms/ratcliff_obershelp.rs":"49282fa9f0936d58ee1c6ac9e7e5ff45ba864eb1a22695a82032d6c8aad15f04","src/algorithms/roberts.rs":"fa4d6fc74de9b79d809b1c63ab265f4b0fd594dd02ed96991af0d569a97bb25a","src/algorithms/sift4_common.rs":"ed6ef5de7b7dbd1f15f68dfb1bdceee14a6e5806877b0fdf0c3a2a04e198085d","src/algorithms/sift4_simple.rs":"fd0c5025d0a96eda2a891bea29d7358988f9a169bb4e01bfd1a6fbad46120d15","src/algorithms/smith_waterman.rs":"5041b6ccbb2f6f8abb5b437e02e4ccf02a80354dc5aac32b0fe49447bd3abae9","src/algorithms/sorensen_dice.rs":"cb6865f36a78c89afc47da11c2213e489a7c801b4e3c6183c7eb05733b13bbb0","src/algorithms/suffix.rs":"bcda0eb35133d9c6cf3c40352654ee11c7a340a43c3954f542ad37691b76ce8a","src/algorithms/tversky.rs":"f564fc05dffc7f5e4f5d8bafa3fbc0e86188857d15faac6ddee01f802b61dc8c","src/algorithms/yujian_bo.rs":"b09605c480cfa82e9d6a7f857ab809a49f0139581e1aa54d05e2a7b11e080b91","src/counter.rs":"1c597c5cb009404bf22d5b8d5ec0156efff636305247934a6782d4b85c158378","src/lib.rs":"4e60e7d15bf262801dbd44ecd16424be33c12b2580592ef42580eadb3abe4211","src/main.rs":"8d9ea0112d0a2e9cc0ef53d5b760af8cfede3ec81bcae77095cee1fb14e7354b","src/nstr.rs":"263d0284a214b00f396a9737d3f0aa3043af61b02de8d3f7b0f11079cf08a7bc","src/result.rs":"fcafb7ef94669d96e1f78c01397b695566a6a4e2c933bfae99441852d1ff218c","src/str.rs":"c5217fde85d68e2519fdece2207612af336230badb56fd433eb362a305df7b8e","tests/integration_test.rs":"2595d2e421f62e39cb7f0c963079e38313acfa5b0173189ca350b3b44601f86a","tests/test_introspection.py":"9531d8e0f8ab6305ca1589d3ca56d023fe70231161a8d793c404e4af278219c6"}}
\ No newline at end of file
diff --git a/crates/textdistance/Android.bp b/crates/textdistance/Android.bp
index 91c5106..a8e260c 100644
--- a/crates/textdistance/Android.bp
+++ b/crates/textdistance/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_binary {
@@ -52,4 +53,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/textdistance/cargo_embargo.json b/crates/textdistance/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/textdistance/cargo_embargo.json
+++ b/crates/textdistance/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/textwrap/.android-checksum.json b/crates/textwrap/.android-checksum.json
index 5e12b91..74c2c03 100644
--- a/crates/textwrap/.android-checksum.json
+++ b/crates/textwrap/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7e77f39180c989a22361906b5ae1fd2a0cf1a0fe3291b82ca593301d049b9505","Android.bp":"fbbee48ccd4119bddfaa62f80c6c9226dc5d81ab0ef515a066f26fdc37c584f3","CHANGELOG.md":"a1d0803aaf577473bd76a725e9507d6ab9d165cd6cc7c8321bb1be31ee6538bb","Cargo.toml":"59463707508faba3f65ca341bc38c02fc9ff32c306a8cbafe02af1c63db038ca","LICENSE":"6313043340d419f839feeecb23b50e9578ea6395482c4cdeeee97b368b055ecd","METADATA":"902ba0c9fd2f70277cb37556816a10f1e7e0c3ac32cbca57587e4ff91f03795a","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"34f7fe435aadd8272c81d9b778d82c353735d128578028f9fa4a941edd50d469","TEST_MAPPING":"150ff00712a0e459d398e2c22b3d247530b9dd85a8afa66fb33b8b0b33c50326","cargo_embargo.json":"90e88d48b8b66c169f4bdb414623f05a1268265397fdeb5aecb3e50c74916444","dprint.json":"71e1b0666488e4014cfd03825cf43866a7b8570394563f42d57c18af97cfede4","rustfmt.toml":"922261b27cfc88b760a98e5599e8aa236a30277b4d6ff94b4f13ce1048e47724","src/columns.rs":"3a53a79c7b85bff98f8e8d5418cce71e388b484b821a21d74aae442e402ad5de","src/core.rs":"e32e47d387071d8a44dfa72d774a2a29b4139309d5c3218d866ba6cab2f8fff2","src/fill.rs":"341b37ee7da0b1ea0bb3a5623a6cae597e516494392a4bbbbbc7613330a8dfec","src/fuzzing.rs":"501c698180b11eff01b02ed571a8aea4a42be692c973dc4d27c8e70f5dd02d32","src/indentation.rs":"9f8e7de5b0cdae818ad04f287a547124228e46c5761fade573ac110d87ad153e","src/lib.rs":"31447d5792f84315c9c487059b06e3729b3e0a8c01b7df8fe20cf01241f4f4cb","src/line_ending.rs":"608b79214e3699a8478df22d90c36b48ebd9dc4fccbc5c92ee3ff4adfb64d205","src/options.rs":"22468f72f1c593290afb08c0df46f73fce6950be00caa27b6a00d1a6d0c29062","src/refill.rs":"d1a0698020464d6e3a59c23f5389d4485337c78ee93193405cc1d9a86a267265","src/termwidth.rs":"4d5fb79617e643a246594ea69ed6c317f3bce40ae96eeb54777bc77a66366f21","src/word_separators.rs":"39255fbaf836a4de6c21803a6b6adecfb07d33bbf51a8cfc26dba4bbe3b3ed48","src/word_splitters.rs":"9e5c903d2fdd2aeacae4f08f629f08560e1df613b78d658be44d963c510772bd","src/wrap.rs":"a2103572284312021ca266861a683c418817d107695a8ded7fa372145f60db14","src/wrap_algorithms.rs":"20b0a0db8c0923ae236856a0d9b66f83ff8d630532f66e3f20e6553a0aec6257","src/wrap_algorithms/optimal_fit.rs":"869c7d2980cf65eb889215cc9bad1a50e04ac17b112be8d580563e3a1b3ef176","tests/indent.rs":"b72b15af05a4fc797cda88390adac9f0e7de1696d70d8dbcd0ec7eedc6297d74","tests/version-numbers.rs":"5c979a297b0a007544a3a9577b774e1d01bf04c03a23a7f554889afc1fdde159"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7e77f39180c989a22361906b5ae1fd2a0cf1a0fe3291b82ca593301d049b9505","Android.bp":"1a8bc59a80f031aa47ad2a48a2c264a10e7531b8c35099a30d6d7a6beec85b32","CHANGELOG.md":"a1d0803aaf577473bd76a725e9507d6ab9d165cd6cc7c8321bb1be31ee6538bb","Cargo.toml":"59463707508faba3f65ca341bc38c02fc9ff32c306a8cbafe02af1c63db038ca","LICENSE":"6313043340d419f839feeecb23b50e9578ea6395482c4cdeeee97b368b055ecd","METADATA":"902ba0c9fd2f70277cb37556816a10f1e7e0c3ac32cbca57587e4ff91f03795a","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"34f7fe435aadd8272c81d9b778d82c353735d128578028f9fa4a941edd50d469","TEST_MAPPING":"150ff00712a0e459d398e2c22b3d247530b9dd85a8afa66fb33b8b0b33c50326","cargo_embargo.json":"e2ee2db8c252f9d1ff5e4aed113120ba5d608fe947f8bc2d5f6bbf20a8859a28","dprint.json":"71e1b0666488e4014cfd03825cf43866a7b8570394563f42d57c18af97cfede4","rustfmt.toml":"922261b27cfc88b760a98e5599e8aa236a30277b4d6ff94b4f13ce1048e47724","src/columns.rs":"3a53a79c7b85bff98f8e8d5418cce71e388b484b821a21d74aae442e402ad5de","src/core.rs":"e32e47d387071d8a44dfa72d774a2a29b4139309d5c3218d866ba6cab2f8fff2","src/fill.rs":"341b37ee7da0b1ea0bb3a5623a6cae597e516494392a4bbbbbc7613330a8dfec","src/fuzzing.rs":"501c698180b11eff01b02ed571a8aea4a42be692c973dc4d27c8e70f5dd02d32","src/indentation.rs":"9f8e7de5b0cdae818ad04f287a547124228e46c5761fade573ac110d87ad153e","src/lib.rs":"31447d5792f84315c9c487059b06e3729b3e0a8c01b7df8fe20cf01241f4f4cb","src/line_ending.rs":"608b79214e3699a8478df22d90c36b48ebd9dc4fccbc5c92ee3ff4adfb64d205","src/options.rs":"22468f72f1c593290afb08c0df46f73fce6950be00caa27b6a00d1a6d0c29062","src/refill.rs":"d1a0698020464d6e3a59c23f5389d4485337c78ee93193405cc1d9a86a267265","src/termwidth.rs":"4d5fb79617e643a246594ea69ed6c317f3bce40ae96eeb54777bc77a66366f21","src/word_separators.rs":"39255fbaf836a4de6c21803a6b6adecfb07d33bbf51a8cfc26dba4bbe3b3ed48","src/word_splitters.rs":"9e5c903d2fdd2aeacae4f08f629f08560e1df613b78d658be44d963c510772bd","src/wrap.rs":"a2103572284312021ca266861a683c418817d107695a8ded7fa372145f60db14","src/wrap_algorithms.rs":"20b0a0db8c0923ae236856a0d9b66f83ff8d630532f66e3f20e6553a0aec6257","src/wrap_algorithms/optimal_fit.rs":"869c7d2980cf65eb889215cc9bad1a50e04ac17b112be8d580563e3a1b3ef176","tests/indent.rs":"b72b15af05a4fc797cda88390adac9f0e7de1696d70d8dbcd0ec7eedc6297d74","tests/version-numbers.rs":"5c979a297b0a007544a3a9577b774e1d01bf04c03a23a7f554889afc1fdde159"}}
\ No newline at end of file
diff --git a/crates/textwrap/Android.bp b/crates/textwrap/Android.bp
index d929998..4005178 100644
--- a/crates/textwrap/Android.bp
+++ b/crates/textwrap/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/textwrap/cargo_embargo.json b/crates/textwrap/cargo_embargo.json
index 5a3fcaa..8be1dbc 100644
--- a/crates/textwrap/cargo_embargo.json
+++ b/crates/textwrap/cargo_embargo.json
@@ -5,5 +5,6 @@
"com.android.virt"
],
"features": [],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/thiserror-impl/.android-checksum.json b/crates/thiserror-impl/.android-checksum.json
index 58c32a0..24673c9 100644
--- a/crates/thiserror-impl/.android-checksum.json
+++ b/crates/thiserror-impl/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"82085634ed40e5be4c3253c7984effe7177c27b582fb55d763f521e5dd14b4db","Android.bp":"1993c14d3ec422159b35d998650c9c0d92f45564951efda0d7887c95e760ddbe","Cargo.toml":"4d8b112ec0e50d0936a9810d04f4e78e691c5fb17fef9349784661330a1fa322","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"26302627c7ccda5280f3d648e75062a311199b2f2e943196bc6b86cdc43ffe2b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"f935a2c2019169411ab63fc9475f797223d7caf28484fc0287977fa0b8db3643","cargo_embargo.json":"2cfc52f9eb76af7f4e8556acf0400fb847df8011aaed77c31aaa5e81cb45d4df","rules.mk":"fdf160cd11dd3e7d82f61b1ffecd4499440870d0116d7c3da709e92acbd11158","src/ast.rs":"537a5d1657905dcb10281fc62074a07d61a6cfdbbd210c73b11a9482fdac3f75","src/attr.rs":"163c00ea8602a2a12272f221639fb6230d78513aff4ccbd0331eb18133cbc118","src/expand.rs":"bf4e21b21ef1b8c9f6c46055e47be9ec0ee01a67490631a3c0035c669334e28c","src/fallback.rs":"e0a4f8dba6262a5f0a3f1369715a41f515e057349cb69b98227d7e32debc19cc","src/fmt.rs":"1966bbc1874a4a0aef50d41dd03526fbec7ed9b6f3d725fcc4377dd926da8ad2","src/generics.rs":"ea2c6b921d40185f8ac7f5fafac3425cb0ba1e69e8c8f3d73b15e410f2a9f67e","src/lib.rs":"d3ff190f8b047890bcef40bdc49bed00982f4fbfc2884834b2e5e1d5437d0891","src/prop.rs":"d41e7ea14531916cd44704b215be09813a978ea02c6276735a76cbfcf36bda1c","src/scan_expr.rs":"0189cad44956e3ec597989c7324382068a5bf8cbf788caf44bc5cb027de93cf8","src/unraw.rs":"4b33f4627978e5a57f92385e7f840416661c3c6c386b00fbf56b2cc311d500ae","src/valid.rs":"fd6b0a136269681545b4966869ec3b2825457f21738f6ec1ded046aba2fe96bc"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"82085634ed40e5be4c3253c7984effe7177c27b582fb55d763f521e5dd14b4db","Android.bp":"210d505171c039ee96688d5a0905ea07c31a263732c0b6c8ec209321ceb27d8f","Cargo.toml":"4d8b112ec0e50d0936a9810d04f4e78e691c5fb17fef9349784661330a1fa322","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"26302627c7ccda5280f3d648e75062a311199b2f2e943196bc6b86cdc43ffe2b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"f935a2c2019169411ab63fc9475f797223d7caf28484fc0287977fa0b8db3643","cargo_embargo.json":"22a28d55056a760b416b8c6cbe7d150324cb1f078b6813860c8f372de3a22c1a","rules.mk":"fdf160cd11dd3e7d82f61b1ffecd4499440870d0116d7c3da709e92acbd11158","src/ast.rs":"537a5d1657905dcb10281fc62074a07d61a6cfdbbd210c73b11a9482fdac3f75","src/attr.rs":"163c00ea8602a2a12272f221639fb6230d78513aff4ccbd0331eb18133cbc118","src/expand.rs":"bf4e21b21ef1b8c9f6c46055e47be9ec0ee01a67490631a3c0035c669334e28c","src/fallback.rs":"e0a4f8dba6262a5f0a3f1369715a41f515e057349cb69b98227d7e32debc19cc","src/fmt.rs":"1966bbc1874a4a0aef50d41dd03526fbec7ed9b6f3d725fcc4377dd926da8ad2","src/generics.rs":"ea2c6b921d40185f8ac7f5fafac3425cb0ba1e69e8c8f3d73b15e410f2a9f67e","src/lib.rs":"d3ff190f8b047890bcef40bdc49bed00982f4fbfc2884834b2e5e1d5437d0891","src/prop.rs":"d41e7ea14531916cd44704b215be09813a978ea02c6276735a76cbfcf36bda1c","src/scan_expr.rs":"0189cad44956e3ec597989c7324382068a5bf8cbf788caf44bc5cb027de93cf8","src/unraw.rs":"4b33f4627978e5a57f92385e7f840416661c3c6c386b00fbf56b2cc311d500ae","src/valid.rs":"fd6b0a136269681545b4966869ec3b2825457f21738f6ec1ded046aba2fe96bc"}}
\ No newline at end of file
diff --git a/crates/thiserror-impl/Android.bp b/crates/thiserror-impl/Android.bp
index 9c46fde..e09343d 100644
--- a/crates/thiserror-impl/Android.bp
+++ b/crates/thiserror-impl/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/thiserror-impl/cargo_embargo.json b/crates/thiserror-impl/cargo_embargo.json
index 1dc3922..5238984 100644
--- a/crates/thiserror-impl/cargo_embargo.json
+++ b/crates/thiserror-impl/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/threadpool/.android-checksum.json b/crates/threadpool/.android-checksum.json
index 8cc218c..364967b 100644
--- a/crates/threadpool/.android-checksum.json
+++ b/crates/threadpool/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6b7ac943a8c7e027b7d97a9567a4104613de265e1ec68622fa50376c2478466e","Android.bp":"c7be725f4312d21382c0c7c854a519071b78788cf49cf5eb207a6f99ac08f844","CHANGES.md":"e1653b7acb38d73cb3b3b4214d2406849b7b12e35144d3d8d49fb9a0478f4255","Cargo.toml":"366bc32d932da2a5cce777e9f2025d0b25ef388a3e64e384c2fe6f14f86cc8ad","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3363844ec39659926728c07c59e6ab14e1b8aa66ef44bc2252d0d05371e47f41","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"d505b9ed1b8a3b006bef0cc2ced0ed0ccacba4a63da32967ed54ad296eec7c61"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6b7ac943a8c7e027b7d97a9567a4104613de265e1ec68622fa50376c2478466e","Android.bp":"e14c0da9f541cf410b138fe81855b7ff229cc0e365ba0449fd3c337be4a09a2f","CHANGES.md":"e1653b7acb38d73cb3b3b4214d2406849b7b12e35144d3d8d49fb9a0478f4255","Cargo.toml":"366bc32d932da2a5cce777e9f2025d0b25ef388a3e64e384c2fe6f14f86cc8ad","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"3363844ec39659926728c07c59e6ab14e1b8aa66ef44bc2252d0d05371e47f41","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"d505b9ed1b8a3b006bef0cc2ced0ed0ccacba4a63da32967ed54ad296eec7c61"}}
\ No newline at end of file
diff --git a/crates/threadpool/Android.bp b/crates/threadpool/Android.bp
index f03f8e0..76860f5 100644
--- a/crates/threadpool/Android.bp
+++ b/crates/threadpool/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/threadpool/cargo_embargo.json b/crates/threadpool/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/threadpool/cargo_embargo.json
+++ b/crates/threadpool/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tikv-jemalloc-sys/.android-checksum.json b/crates/tikv-jemalloc-sys/.android-checksum.json
index 0422d4c..f04cff9 100644
--- a/crates/tikv-jemalloc-sys/.android-checksum.json
+++ b/crates/tikv-jemalloc-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"98decbc071d1e0a175e46bc0d000e288cf7aa132bc37a8a4487cf5a78161fbcd","Android.bp":"88075c7d31dcb2be060f26b1ad14ba4c48bbf4ade7c368b638be3a192cc5ea88","Cargo.toml":"589d78c9ba2b77a638bf1c52d2cc95250059b7c554d3102b13bc559d501a2167","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"30775751547e4cdd7bce39acafb1ad9a1df47f4b62dbfc5f71d363f6c70a4b41","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4e13d070f2e85c23176105fbdb8850aeba4b588a08a0479b1993277e7cdd020b","cargo_embargo.json":"37dbcb6f471a10d78de3caf2791a852bdcc15de8d53e192c02e73f4fabc72da4","patches/Android.bp.patch":"2ee158625c8cbe256cb5d0e74de0e95ffab322ff6e822e2c0ff996d114fcde70","patches/delete_c_library.patch":"d1bdfa94cf3fbc08b4e4a0522fc91f57e5562a73519f3b4c2656879cf45fcdc8","patches/rename_prefix.patch":"f97930397ef030d09416864ad37c9034fedb5c1cd148f0acf4bd899a92fd3aa7","src/env.rs":"4d6b41b4443640d8f38b3427f58eb52a61a81df77e3134e5b11943d091226bec","src/lib.rs":"340e5c8cbc3794a85cbb193ad0584a9690a2a21ef6169bebd02ef510e470d35f","tests/malloc_conf_empty.rs":"a25832519b951c6e2cd53d1db715fec70033ebfcba7d43ad2b0d403a0c56cd5a","tests/malloc_conf_set.rs":"ddc4b33b18bd53b0b7f694f9b77b2e4ce1d200ad8b3a7aeb90a75d8054dac55c","tests/unprefixed_malloc.rs":"b6996eaa0bb741f5815caf00a1b6f8152285989df3b61e0e73a9bfdc1a1ba500","update_jemalloc.md":"2760bf5266754a9635f59311e56d091764770503f2d5f64aedab811756925862"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"98decbc071d1e0a175e46bc0d000e288cf7aa132bc37a8a4487cf5a78161fbcd","Android.bp":"88075c7d31dcb2be060f26b1ad14ba4c48bbf4ade7c368b638be3a192cc5ea88","Cargo.toml":"589d78c9ba2b77a638bf1c52d2cc95250059b7c554d3102b13bc559d501a2167","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"30775751547e4cdd7bce39acafb1ad9a1df47f4b62dbfc5f71d363f6c70a4b41","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4e13d070f2e85c23176105fbdb8850aeba4b588a08a0479b1993277e7cdd020b","cargo_embargo.json":"4978523d6b6afa8e65143aa9e82d38f9e75b710e37b1571f6792428cb2a4c30c","patches/Android.bp.patch":"2ee158625c8cbe256cb5d0e74de0e95ffab322ff6e822e2c0ff996d114fcde70","patches/delete_c_library.patch":"d1bdfa94cf3fbc08b4e4a0522fc91f57e5562a73519f3b4c2656879cf45fcdc8","patches/rename_prefix.patch":"f97930397ef030d09416864ad37c9034fedb5c1cd148f0acf4bd899a92fd3aa7","src/env.rs":"4d6b41b4443640d8f38b3427f58eb52a61a81df77e3134e5b11943d091226bec","src/lib.rs":"340e5c8cbc3794a85cbb193ad0584a9690a2a21ef6169bebd02ef510e470d35f","tests/malloc_conf_empty.rs":"a25832519b951c6e2cd53d1db715fec70033ebfcba7d43ad2b0d403a0c56cd5a","tests/malloc_conf_set.rs":"ddc4b33b18bd53b0b7f694f9b77b2e4ce1d200ad8b3a7aeb90a75d8054dac55c","tests/unprefixed_malloc.rs":"b6996eaa0bb741f5815caf00a1b6f8152285989df3b61e0e73a9bfdc1a1ba500","update_jemalloc.md":"2760bf5266754a9635f59311e56d091764770503f2d5f64aedab811756925862"}}
\ No newline at end of file
diff --git a/crates/tikv-jemalloc-sys/cargo_embargo.json b/crates/tikv-jemalloc-sys/cargo_embargo.json
index d54a653..55b4ee3 100644
--- a/crates/tikv-jemalloc-sys/cargo_embargo.json
+++ b/crates/tikv-jemalloc-sys/cargo_embargo.json
@@ -6,6 +6,9 @@
}
},
"run_cargo": false,
- "extra_cfg": ["prefixed"],
- "tests": false
+ "extra_cfg": [
+ "prefixed"
+ ],
+ "tests": false,
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/tikv-jemallocator/.android-checksum.json b/crates/tikv-jemallocator/.android-checksum.json
index d85275d..4028982 100644
--- a/crates/tikv-jemallocator/.android-checksum.json
+++ b/crates/tikv-jemallocator/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"07f48fe64358fc5a15d9f9a21159bcba2ef6bbd0e208743a6e1da1e476b1fb2c","Android.bp":"34463b74ae7c97ba1d41a32d17fbb0b522bd7029e8042ea878ae1dbdcc366288","Cargo.toml":"7d396934df25bd1496e61deb65cf0d147f36394bd474181b1038f637d1e9978c","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"8a264c3c26959d09d681e7fe09e8e1be08c06218bcc0a636cf67f970b304b96d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ccf77a451fbaee5755b0596bbd257bec2f46bdf199da23406d0ae2b74f1a0ff0","benches/roundtrip.rs":"e6ac556257265e5f8c1ad1fb1cda2177e11a2903461262a0469763e02805674e","cargo_embargo.json":"83e6c083cc00a10acc3fc80c37c18ddbecc6857b4b0e68cd3731ac9840da5c86","src/lib.rs":"e7a0ad22c317ec97e6d51b84477e11e1734bc6eb96a8643602c0323c358203f6","tests/background_thread_defaults.rs":"33a2d34d8cc55cccb3c7d488d18c96e4b8de9a5103cb92225152e5ce76c687da","tests/background_thread_enabled.rs":"c05b27b648b765f2c984897b9b6a0bec95dddb75193f951395449ca523263af7","tests/ffi.rs":"f7a940e269a4df2286dba4c89731f4af9f6967b37f631007ce69e1a89d7644d3","tests/grow_in_place.rs":"deb838194a4344ee809bd3cc040f590564870e3dc5761a3cadfe337f00dab686","tests/malloctl.rs":"30d5eb8a4a9acd133c1d5468d7b86c7ed938e5cfb85c96bf73ea9384402cb625","tests/shrink_in_place.rs":"8f6ea47b22dffd1356bc753e182e3be1e6dbc4a67b8e35c36bff61c59fb61d8e","tests/smoke.rs":"3a22377d01a8ca07202e3c23d870f642eefa9cef985f53f2c2d8980732c2295f","tests/smoke_ffi.rs":"74a34a8cc70b26abf98a70fd10ef3e4646caab64c2147242186853ab3f156c10","tests/usable_size.rs":"ab4fded014ad2d5704522c2dca613fdb62283bd7a44111931ddc3e4c5a84a576"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"07f48fe64358fc5a15d9f9a21159bcba2ef6bbd0e208743a6e1da1e476b1fb2c","Android.bp":"34463b74ae7c97ba1d41a32d17fbb0b522bd7029e8042ea878ae1dbdcc366288","Cargo.toml":"7d396934df25bd1496e61deb65cf0d147f36394bd474181b1038f637d1e9978c","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"8a264c3c26959d09d681e7fe09e8e1be08c06218bcc0a636cf67f970b304b96d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ccf77a451fbaee5755b0596bbd257bec2f46bdf199da23406d0ae2b74f1a0ff0","benches/roundtrip.rs":"e6ac556257265e5f8c1ad1fb1cda2177e11a2903461262a0469763e02805674e","cargo_embargo.json":"e751080e4985786bb071ce831d454d17655cee88746524001836f65962fae09d","src/lib.rs":"e7a0ad22c317ec97e6d51b84477e11e1734bc6eb96a8643602c0323c358203f6","tests/background_thread_defaults.rs":"33a2d34d8cc55cccb3c7d488d18c96e4b8de9a5103cb92225152e5ce76c687da","tests/background_thread_enabled.rs":"c05b27b648b765f2c984897b9b6a0bec95dddb75193f951395449ca523263af7","tests/ffi.rs":"f7a940e269a4df2286dba4c89731f4af9f6967b37f631007ce69e1a89d7644d3","tests/grow_in_place.rs":"deb838194a4344ee809bd3cc040f590564870e3dc5761a3cadfe337f00dab686","tests/malloctl.rs":"30d5eb8a4a9acd133c1d5468d7b86c7ed938e5cfb85c96bf73ea9384402cb625","tests/shrink_in_place.rs":"8f6ea47b22dffd1356bc753e182e3be1e6dbc4a67b8e35c36bff61c59fb61d8e","tests/smoke.rs":"3a22377d01a8ca07202e3c23d870f642eefa9cef985f53f2c2d8980732c2295f","tests/smoke_ffi.rs":"74a34a8cc70b26abf98a70fd10ef3e4646caab64c2147242186853ab3f156c10","tests/usable_size.rs":"ab4fded014ad2d5704522c2dca613fdb62283bd7a44111931ddc3e4c5a84a576"}}
\ No newline at end of file
diff --git a/crates/tikv-jemallocator/cargo_embargo.json b/crates/tikv-jemallocator/cargo_embargo.json
index bd465d2..f592d88 100644
--- a/crates/tikv-jemallocator/cargo_embargo.json
+++ b/crates/tikv-jemallocator/cargo_embargo.json
@@ -10,5 +10,6 @@
]
},
"run_cargo": false,
- "tests": false
+ "tests": false,
+ "min_sdk_version": "29"
}
\ No newline at end of file
diff --git a/crates/tinyjson/.android-checksum.json b/crates/tinyjson/.android-checksum.json
index b984585..51f8b9c 100644
--- a/crates/tinyjson/.android-checksum.json
+++ b/crates/tinyjson/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"03517f904a1ab403824ae38311dc909151c5295cde85e207eb6569f5748194e5","Android.bp":"f31c433c267ec84f75bcbff9f6efd9fbfa42a5f5dd9cc42e226a711d79a1f01e","Cargo.toml":"833c28972f3ff630589a4bc71cf36c33be583ee68e5c003e31265104b1a82efe","LICENSE":"4597189ff76b0d3b4b8380e8c1159a1716f808e3f38587b0073380c78d22e073","LICENSE.txt":"4597189ff76b0d3b4b8380e8c1159a1716f808e3f38587b0073380c78d22e073","METADATA":"6105932d2a0332531c881d9880892312e8fb19a095836f39f1c24e9b88982ea6","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9faa559afb95bed2f49463314ae33d34e58ad68c0ed9449f5ecd26277f1530f4","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/README.md":"e8ef4708896f9744c89bdcd8a65ff20ce3e2d3dbaa64b20f62202b6191b548ef","src/generator.rs":"a4b1b2a544b301b597cf3b3079b8e851d241a4e3b194014afe7bc94e6aaf61cb","src/json_value.rs":"da591881d699a85d6d04c775657fb22cd0ac34428709b9bed72403663ec123c8","src/lib.rs":"8fbd7006507f3ca6998dd99335fd862abbf26008475d9f8a273eb47ffa712249","src/parser.rs":"3514d71eaa233e6e8d0488d90314211dff6bb1a0af626bd27ecba214adc98407","tests/assets/JSON-Schema-Test-Suite/README.md":"e3f51189cd91641f854186d9a3f372c7d07f6a38a667302fa177085584e0f96b","tests/assets/JSONTestSuite/README.md":"a86092cc9625f23a025568ccf7974984a0a3c82d06c883e8fb5ff36c33582296","tests/assets/jsonorg/README.md":"02e0e21011b6d2c126518dd1585e2823cef41521b1cb6be5c8e9f2a55156e7cb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"03517f904a1ab403824ae38311dc909151c5295cde85e207eb6569f5748194e5","Android.bp":"2e5f76329396652dd838827a061914e59514d5a82fbf92ada6da48d008d9bae8","Cargo.toml":"833c28972f3ff630589a4bc71cf36c33be583ee68e5c003e31265104b1a82efe","LICENSE":"4597189ff76b0d3b4b8380e8c1159a1716f808e3f38587b0073380c78d22e073","LICENSE.txt":"4597189ff76b0d3b4b8380e8c1159a1716f808e3f38587b0073380c78d22e073","METADATA":"6105932d2a0332531c881d9880892312e8fb19a095836f39f1c24e9b88982ea6","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"9faa559afb95bed2f49463314ae33d34e58ad68c0ed9449f5ecd26277f1530f4","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/README.md":"e8ef4708896f9744c89bdcd8a65ff20ce3e2d3dbaa64b20f62202b6191b548ef","src/generator.rs":"a4b1b2a544b301b597cf3b3079b8e851d241a4e3b194014afe7bc94e6aaf61cb","src/json_value.rs":"da591881d699a85d6d04c775657fb22cd0ac34428709b9bed72403663ec123c8","src/lib.rs":"8fbd7006507f3ca6998dd99335fd862abbf26008475d9f8a273eb47ffa712249","src/parser.rs":"3514d71eaa233e6e8d0488d90314211dff6bb1a0af626bd27ecba214adc98407","tests/assets/JSON-Schema-Test-Suite/README.md":"e3f51189cd91641f854186d9a3f372c7d07f6a38a667302fa177085584e0f96b","tests/assets/JSONTestSuite/README.md":"a86092cc9625f23a025568ccf7974984a0a3c82d06c883e8fb5ff36c33582296","tests/assets/jsonorg/README.md":"02e0e21011b6d2c126518dd1585e2823cef41521b1cb6be5c8e9f2a55156e7cb"}}
\ No newline at end of file
diff --git a/crates/tinyjson/Android.bp b/crates/tinyjson/Android.bp
index 15655ca..caf37e4 100644
--- a/crates/tinyjson/Android.bp
+++ b/crates/tinyjson/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/tinyjson/cargo_embargo.json b/crates/tinyjson/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/tinyjson/cargo_embargo.json
+++ b/crates/tinyjson/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tinystr/.android-checksum.json b/crates/tinystr/.android-checksum.json
index a1c83dd..57f0e99 100644
--- a/crates/tinystr/.android-checksum.json
+++ b/crates/tinystr/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"9175578edc7e73a19fb6fdde362e4b265f44838285531587979e321912c24ebb","Android.bp":"4217080243244cae85df59caec4aee2f27bfbdf9bb45c2c5b145e1fd19134b1b","Cargo.toml":"67e670b5ce803adb10592ac7c3a00184daae2763e5022a370d892ea06afcdaac","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"dabf1b865bb9c07192eebf1ea88cc7ed928d80aa86a44c44dddab37c1059f856","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8be3be5ef96ed1f4fcff3687fd5599e4c509616a11d54fa0b6b9ed5e92efbae4","benches/common/mod.rs":"bc14c38672f31434fa69ffa3a8e528981f7ce9e31266c74ab440d0b256cd3d74","benches/construct.rs":"5be8e8401bf14d26a5bb29f3539fd7c46c3216bc83e9d2f4f87f4aa6e02643fb","benches/overview.rs":"87fe8cd30e308cca754aad387b6a002ce9c73424a03833e0a5fba95a36469ba0","benches/read.rs":"b87efa5db852883725d0211e087caabf3daed73ce75367b5b1e03a32a8427695","benches/serde.rs":"1107a358076c0a4d7ed7f2d40c229703f5ae94fd3b264c3e485c5402c69f228c","cargo_embargo.json":"0cdf59189531bc62ef36ae46c3a1401b04cee7f4c35ac28ca2fad0db7c77e8b8","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/ascii.rs":"09009bc68622ebf72292d6b9e8b2c61df97a38fd9396c379f5194c27fe439277","src/asciibyte.rs":"067dacb27550aea1e3060e48dcbe21c77ad00b40a53685f7d4463eaa7b44e851","src/databake.rs":"467340ca9f26b242324fbaa4d904daac25230be20c7a62ae094c40f54588b215","src/error.rs":"e745d379fce95ad1b76b018d7fd12e014549555e6a9ce998dd062a87ea9760cd","src/int_ops.rs":"c4cc39f9128847c64c9380df3013b5318b125b05586a0dcfca18d005543fa338","src/lib.rs":"71ed11ac575c4de7bc8370032c26c9601116192c2764152f6fcc146f40f1da66","src/macros.rs":"8c8af8649347145a7430368dd344dbf90c3d85e2b0379ea196ede3fee5650ecf","src/serde.rs":"7d861b9b9c4dca6a535e148309d978c5497c6b8615f3cb6a33912d708aa8c0ed","src/ule.rs":"a0aead2d6f1102b0510a914fd7b4faaf54c0d578f1978b19ff990a46cdee09ca","src/unvalidated.rs":"2601bbd0d92171e52fb9d865127a4571da18c8fff6ced212cb71d3e598e60b99","tests/serde.rs":"f9137e03e3d4380f2cee38f5a7ac8f2e7a9ae2d57a482279d412ca1d7cc399a8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"9175578edc7e73a19fb6fdde362e4b265f44838285531587979e321912c24ebb","Android.bp":"f6e3c2ba303fc6d9ac341e9813e57bc7505410f0596f7a0c67c129a1998c078f","Cargo.toml":"67e670b5ce803adb10592ac7c3a00184daae2763e5022a370d892ea06afcdaac","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"dabf1b865bb9c07192eebf1ea88cc7ed928d80aa86a44c44dddab37c1059f856","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"8be3be5ef96ed1f4fcff3687fd5599e4c509616a11d54fa0b6b9ed5e92efbae4","benches/common/mod.rs":"bc14c38672f31434fa69ffa3a8e528981f7ce9e31266c74ab440d0b256cd3d74","benches/construct.rs":"5be8e8401bf14d26a5bb29f3539fd7c46c3216bc83e9d2f4f87f4aa6e02643fb","benches/overview.rs":"87fe8cd30e308cca754aad387b6a002ce9c73424a03833e0a5fba95a36469ba0","benches/read.rs":"b87efa5db852883725d0211e087caabf3daed73ce75367b5b1e03a32a8427695","benches/serde.rs":"1107a358076c0a4d7ed7f2d40c229703f5ae94fd3b264c3e485c5402c69f228c","cargo_embargo.json":"58f5c623b6459abf745fa62fc634c5240cc90b26203953f54f3cf9f510347564","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/ascii.rs":"09009bc68622ebf72292d6b9e8b2c61df97a38fd9396c379f5194c27fe439277","src/asciibyte.rs":"067dacb27550aea1e3060e48dcbe21c77ad00b40a53685f7d4463eaa7b44e851","src/databake.rs":"467340ca9f26b242324fbaa4d904daac25230be20c7a62ae094c40f54588b215","src/error.rs":"e745d379fce95ad1b76b018d7fd12e014549555e6a9ce998dd062a87ea9760cd","src/int_ops.rs":"c4cc39f9128847c64c9380df3013b5318b125b05586a0dcfca18d005543fa338","src/lib.rs":"71ed11ac575c4de7bc8370032c26c9601116192c2764152f6fcc146f40f1da66","src/macros.rs":"8c8af8649347145a7430368dd344dbf90c3d85e2b0379ea196ede3fee5650ecf","src/serde.rs":"7d861b9b9c4dca6a535e148309d978c5497c6b8615f3cb6a33912d708aa8c0ed","src/ule.rs":"a0aead2d6f1102b0510a914fd7b4faaf54c0d578f1978b19ff990a46cdee09ca","src/unvalidated.rs":"2601bbd0d92171e52fb9d865127a4571da18c8fff6ced212cb71d3e598e60b99","tests/serde.rs":"f9137e03e3d4380f2cee38f5a7ac8f2e7a9ae2d57a482279d412ca1d7cc399a8"}}
\ No newline at end of file
diff --git a/crates/tinystr/Android.bp b/crates/tinystr/Android.bp
index 6cc823b..ae48c20 100644
--- a/crates/tinystr/Android.bp
+++ b/crates/tinystr/Android.bp
@@ -9,10 +9,7 @@
license {
name: "external_rust_crates_tinystr_license",
visibility: [":__subpackages__"],
- license_kinds: [
- "SPDX-license-identifier-Unicode-3.0",
- "legacy_notice",
- ],
+ license_kinds: ["SPDX-license-identifier-Unicode-3.0"],
license_text: ["LICENSE"],
}
@@ -40,6 +37,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/tinystr/cargo_embargo.json b/crates/tinystr/cargo_embargo.json
index 960a0ea..f5a8755 100644
--- a/crates/tinystr/cargo_embargo.json
+++ b/crates/tinystr/cargo_embargo.json
@@ -11,5 +11,6 @@
"tinystr": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tinytemplate/.android-checksum.json b/crates/tinytemplate/.android-checksum.json
index d44d6b8..a05e003 100644
--- a/crates/tinytemplate/.android-checksum.json
+++ b/crates/tinytemplate/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"312779035d2b9aad3710cdaf05df3c217532ad0061862c350aada381e62c6b36","Android.bp":"5b9845e6c3a903878bfad4c52be4896c293776f0c1543ff382c12a9ab9e52322","CHANGELOG.md":"a796fd7c2025b48ec2f23cbfb24fdc0191dbb17881f3ee399d57d8a1c3857d4c","CONTRIBUTING.md":"56b5f9da4925de36973b94b21a29de7996d9a534eb02f84a97f62056c966631c","Cargo.toml":"4f8c950a9bab3dda383be04a4cb4229beb62f0b4e4db6935e3624c5625e756b6","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"83a81783be53d1924dbd4f7ef0e25c78548a2669414bc07b7dbaab0ab9155863","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c87b0a90c22aafeabd0bfcbe40b063d2bb1d37431c863c162f96b07739c5582a","TEST_MAPPING":"303371904123294c47d4151f3ccf96e20aff109743e527fdeac482d705fc70b2","benches/benchmarks.rs":"c7692d951d3c8d5679aa5e147297061243c7817d96dccfb243d78f511a04feca","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","src/compiler.rs":"397b964000a5c6b18a13b3f99e918f723b6bce49575f9f225f261161f39a3198","src/error.rs":"d8eb744eb458220681154756d80aa5f3aadc2bb2a44d83c86d0b09b022a32199","src/instruction.rs":"eb4b59bc8617814e55a7da1d3f890a23d2990e87e2a715a854843e674f75eb9c","src/lib.rs":"e06f56f64956d45af00910f7ae2f3d917973e8a73427b0175cbe0ae01cb3e351","src/syntax.rs":"5158ff0a03a0525c148691f2791ab559b25ea0a76e32edcd2b27b07ce82b02d0","src/template.rs":"4e18706781588c7ab7487dccae253006c6b5f798926bc290555ef9923ba46e83"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"312779035d2b9aad3710cdaf05df3c217532ad0061862c350aada381e62c6b36","Android.bp":"25fea5f2b695b9137e72aa820966cc9051657e1651f73fec045cd7f93bb5172f","CHANGELOG.md":"a796fd7c2025b48ec2f23cbfb24fdc0191dbb17881f3ee399d57d8a1c3857d4c","CONTRIBUTING.md":"56b5f9da4925de36973b94b21a29de7996d9a534eb02f84a97f62056c966631c","Cargo.toml":"4f8c950a9bab3dda383be04a4cb4229beb62f0b4e4db6935e3624c5625e756b6","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"83a81783be53d1924dbd4f7ef0e25c78548a2669414bc07b7dbaab0ab9155863","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c87b0a90c22aafeabd0bfcbe40b063d2bb1d37431c863c162f96b07739c5582a","TEST_MAPPING":"303371904123294c47d4151f3ccf96e20aff109743e527fdeac482d705fc70b2","benches/benchmarks.rs":"c7692d951d3c8d5679aa5e147297061243c7817d96dccfb243d78f511a04feca","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","src/compiler.rs":"397b964000a5c6b18a13b3f99e918f723b6bce49575f9f225f261161f39a3198","src/error.rs":"d8eb744eb458220681154756d80aa5f3aadc2bb2a44d83c86d0b09b022a32199","src/instruction.rs":"eb4b59bc8617814e55a7da1d3f890a23d2990e87e2a715a854843e674f75eb9c","src/lib.rs":"e06f56f64956d45af00910f7ae2f3d917973e8a73427b0175cbe0ae01cb3e351","src/syntax.rs":"5158ff0a03a0525c148691f2791ab559b25ea0a76e32edcd2b27b07ce82b02d0","src/template.rs":"4e18706781588c7ab7487dccae253006c6b5f798926bc290555ef9923ba46e83"}}
\ No newline at end of file
diff --git a/crates/tinytemplate/Android.bp b/crates/tinytemplate/Android.bp
index 856fa44..c2cfa2a 100644
--- a/crates/tinytemplate/Android.bp
+++ b/crates/tinytemplate/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/tinytemplate/cargo_embargo.json b/crates/tinytemplate/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/tinytemplate/cargo_embargo.json
+++ b/crates/tinytemplate/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tokio-macros/.android-checksum.json b/crates/tokio-macros/.android-checksum.json
index 7722686..0ba41d8 100644
--- a/crates/tokio-macros/.android-checksum.json
+++ b/crates/tokio-macros/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"02cc2d46c1e5b2a0a98ee9ff0347f16eee74c93db5f923d328fbcd42f517449a","Android.bp":"661f146f5e57fcfd053942222994398a496216f339dc9d5cd388fb2020c722f8","CHANGELOG.md":"09121d23efd7af8690cd56e999954ded88ae7d5788462ef47cd73ea6ce6e0a48","Cargo.toml":"bbf4c19cd5f40b6f6dcd633d14f0e29c6e129cee48482106c0cabe2f382996e8","LICENSE":"a17ab14c797e7b65c15985982ee00d3dcee1fefb8aac87dbae76a710ba2913a2","METADATA":"9fdf318b8593e25d70164562c0dd4afc5a7b352cdc83788d7f4822be1f93dccd","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2ce5d67bfab53489bb3351d5e5dbdf05f7b073c45e765ca77381bc12ee5a26f4","TEST_MAPPING":"c024977f1d74e9c72b87573f1c7cfe9a7f8d1daadb084005fb7edf55d17c0d6c","cargo_embargo.json":"e37f85d7910d24b95d6031db6603828d484aadca5822522d571d9c334ef6f3aa","src/entry.rs":"99011f43ee7a6aced620edff7f48d075aca12eede42a0d1d2d247959f84e2fd2","src/lib.rs":"ecf3c91e8649b688e48c3d968947b1b1dc4b84a099ff953cb2a8b35f6f19c20f","src/select.rs":"ec926a6b0b4e7dabffc8e49da4ab21549d623131373a735bc3312c29c7d2eeeb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"02cc2d46c1e5b2a0a98ee9ff0347f16eee74c93db5f923d328fbcd42f517449a","Android.bp":"661f146f5e57fcfd053942222994398a496216f339dc9d5cd388fb2020c722f8","CHANGELOG.md":"09121d23efd7af8690cd56e999954ded88ae7d5788462ef47cd73ea6ce6e0a48","Cargo.toml":"bbf4c19cd5f40b6f6dcd633d14f0e29c6e129cee48482106c0cabe2f382996e8","LICENSE":"a17ab14c797e7b65c15985982ee00d3dcee1fefb8aac87dbae76a710ba2913a2","METADATA":"9fdf318b8593e25d70164562c0dd4afc5a7b352cdc83788d7f4822be1f93dccd","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2ce5d67bfab53489bb3351d5e5dbdf05f7b073c45e765ca77381bc12ee5a26f4","TEST_MAPPING":"c024977f1d74e9c72b87573f1c7cfe9a7f8d1daadb084005fb7edf55d17c0d6c","cargo_embargo.json":"cf7e41fe967df06ac337468269c6fa5e90db406d43753d0e3a0135a745390786","src/entry.rs":"99011f43ee7a6aced620edff7f48d075aca12eede42a0d1d2d247959f84e2fd2","src/lib.rs":"ecf3c91e8649b688e48c3d968947b1b1dc4b84a099ff953cb2a8b35f6f19c20f","src/select.rs":"ec926a6b0b4e7dabffc8e49da4ab21549d623131373a735bc3312c29c7d2eeeb"}}
\ No newline at end of file
diff --git a/crates/tokio-macros/cargo_embargo.json b/crates/tokio-macros/cargo_embargo.json
index ab4e99c..2751b2c 100644
--- a/crates/tokio-macros/cargo_embargo.json
+++ b/crates/tokio-macros/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tokio-test/.android-checksum.json b/crates/tokio-test/.android-checksum.json
index 72e8d80..e350e3b 100644
--- a/crates/tokio-test/.android-checksum.json
+++ b/crates/tokio-test/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ff222676c6a99af029b543f43d30ca938e67ddeba3f47336c76fe25ff457c40d","Android.bp":"52ceb47c84918613d1b7afe0e09f0714cd4fb0df07a9c70721146cd6593f5793","CHANGELOG.md":"da29a7c006f16dac3b608af4d9fcccfeb5f6ffc0a18fe9f3abad5e3361620dd8","Cargo.toml":"59618225de5c96a7225d81be7b2949c9bd625611ae26843bcd7d8e67826d3e80","LICENSE":"afbfa5da38bde89b6e877441be941619fa6a117876bea3b90c8241ee8d108d89","METADATA":"a40f1e6e6a04bf29603d4895c7483069b72a27423e9e85e8f71bdb197c38f88c","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4f471e11a0c0eae4926203e5604584ce16d5c18498ff51a25f03485ab935ce98","TEST_MAPPING":"8091725bd6fbb37b88be3ac92ba01a263766adb11a95b37929e0f26c38dda5e9","cargo_embargo.json":"d87209d4c367ff47dd3b7c46cebe3557f0596daaaae987d18ea162cb31e92b6c","src/io.rs":"01c1bea12baef03f1170f5e7a17a38eb5f25e308e3ef27a7a9be90454b27977f","src/lib.rs":"df931a481a4e5c70b9656bb3262d6d7c5e704d9ae37585d866430637dda20ddf","src/macros.rs":"316e8405ef09259c131e9377d933c4cc44ca6107890c6287585fc95f9e104ce5","src/task.rs":"9bc9eb863a9cdb9d2903a7dcda8e35a0ac64b71095111ac00340c8bb8e49ead5","tests/block_on.rs":"7f42f01040ab6245466965892838723481ad82046ea38757089ad2d8d2f15bd6","tests/io.rs":"31e665361e20acbf3c70fe384b8d45fe7304e9390be24b02dccaeceb18a4fe05","tests/macros.rs":"dd6d9eecb47477d8c84d19326e1b8ade089cadd9aa4c88b14f0c301c32f3945e"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ff222676c6a99af029b543f43d30ca938e67ddeba3f47336c76fe25ff457c40d","Android.bp":"d81dd32a8b36780a2560911111b53c1a5ae018e43960b3ebea6729d7d76fa966","CHANGELOG.md":"da29a7c006f16dac3b608af4d9fcccfeb5f6ffc0a18fe9f3abad5e3361620dd8","Cargo.toml":"59618225de5c96a7225d81be7b2949c9bd625611ae26843bcd7d8e67826d3e80","LICENSE":"afbfa5da38bde89b6e877441be941619fa6a117876bea3b90c8241ee8d108d89","METADATA":"a40f1e6e6a04bf29603d4895c7483069b72a27423e9e85e8f71bdb197c38f88c","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4f471e11a0c0eae4926203e5604584ce16d5c18498ff51a25f03485ab935ce98","TEST_MAPPING":"8091725bd6fbb37b88be3ac92ba01a263766adb11a95b37929e0f26c38dda5e9","cargo_embargo.json":"d183e250a432dabdf1d9c481158f748a7550768ffa2510ffd22661a74cd5b652","src/io.rs":"01c1bea12baef03f1170f5e7a17a38eb5f25e308e3ef27a7a9be90454b27977f","src/lib.rs":"df931a481a4e5c70b9656bb3262d6d7c5e704d9ae37585d866430637dda20ddf","src/macros.rs":"316e8405ef09259c131e9377d933c4cc44ca6107890c6287585fc95f9e104ce5","src/task.rs":"9bc9eb863a9cdb9d2903a7dcda8e35a0ac64b71095111ac00340c8bb8e49ead5","tests/block_on.rs":"7f42f01040ab6245466965892838723481ad82046ea38757089ad2d8d2f15bd6","tests/io.rs":"31e665361e20acbf3c70fe384b8d45fe7304e9390be24b02dccaeceb18a4fe05","tests/macros.rs":"dd6d9eecb47477d8c84d19326e1b8ade089cadd9aa4c88b14f0c301c32f3945e"}}
\ No newline at end of file
diff --git a/crates/tokio-test/Android.bp b/crates/tokio-test/Android.bp
index 164c70b..ed1132b 100644
--- a/crates/tokio-test/Android.bp
+++ b/crates/tokio-test/Android.bp
@@ -34,6 +34,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/tokio-test/cargo_embargo.json b/crates/tokio-test/cargo_embargo.json
index 9a0a579..d238ed2 100644
--- a/crates/tokio-test/cargo_embargo.json
+++ b/crates/tokio-test/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/toml/.android-checksum.json b/crates/toml/.android-checksum.json
index 2ea72a4..38ac326 100644
--- a/crates/toml/.android-checksum.json
+++ b/crates/toml/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8d998aa2aafc5b97bac79ef3720ca2b3e8721cd907ce4e53ced21043862a9564","Android.bp":"11d60a1dbab17e9a52a211ab4236e1d0ab217aebb39c23537b6e5f707f5c483a","Cargo.lock":"a87a8d00b7e1d43b03ec61b564d77941567fbaa6c7a132c3b583f7681bc39911","Cargo.toml":"0537aaa2e1ea61c9491175c67884623158200fa33403bc7dd2aa92dd64cb7b58","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"d43548478b0904291793c949bcc9fdd48132088bf7b63071f6fbfa41ba113952","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"88c1bcea6c3dc175ab2ef2e6b99ba78f98d9470a93f115f4f0da1205ef71428a","cargo_embargo.json":"239d8e8ee49ab8854b0c7e906cc1c6b0f2bdbd081cb19156345a353c69bf93ff","examples/decode.rs":"16df4cdb0d28f075eae95d480fa3bfcf4729b33720d77358133c181ea7b05939","examples/enum_external.rs":"1ccc93149e9157e04e964bb844aaa369aaf6e449208594f2b2df76d885f14be1","examples/toml2json.rs":"7d8b8b1a41a7e6bdab780747c2b827a02279123a0660c692c75d1d8cb1478d81","src/de.rs":"c7422c2db6e13e2a6dc76e527a8dffef0c3509076c89a8323ca8e88a0025c05c","src/edit.rs":"fa7d7c416425e41ead117721ded65aa202647acced6e4a0d2adb522184242068","src/fmt.rs":"f2ebad7e60510f9c392f1d018af07e3c5a953106e0e826d9267f801a4de2876c","src/lib.rs":"a848ae0391d55ab2417788215df587a1df4e7504b5d924cc4839ca51951a6ef3","src/macros.rs":"7ca07c3aede6b376e5abc709bbb89dfe4559ae95efec1de0522736342d9d2ea8","src/map.rs":"4edddb4dbd3ab5ed59578ee5871b0b0cd32f3989c3123b64f6705b7990548abb","src/ser.rs":"d127e7d56281a28b919d1fef539a946ead205aa7a4b98087b00fc7e295cb2189","src/table.rs":"faa6de32a49afa6dba904e7954d132a7ac14eaf14af2b96d507339c4654c9b53","src/value.rs":"81466e4b3ac24cb848519da5028cd0526639ff5903b0b0e2db5f7df07d1f48f2","tests/decoder.rs":"04ec9cc023c26e03c4e3b09a45b1f1df5d2db74800558bbd6bdda675a5485af3","tests/decoder_compliance.rs":"a07e99d9d125a460a048d7340ce3c9214ac7d9c93f982c4f827bb0caafb26803","tests/encoder.rs":"8041caf86be24bfa88525aa042da7351c4b5309d7563f0c4a3802ddea32440b2","tests/encoder_compliance.rs":"587f8a8a7faf3f81b6bbef4c6a5ecf723fcea0b82b706db7d3cdb8f251aef804","tests/testsuite/de_errors.rs":"4c1507c90789ed16221183b8a2dadfedcd792496beb87a8559dfa182333fa14d","tests/testsuite/display.rs":"a408a3147cd33151de032f539c503e788815c6877629aaff4155683a19fbf50a","tests/testsuite/display_tricky.rs":"8fd273503b20fee0b647f6d6203db194e921b36dd14e7ea9b66a7932c0c52570","tests/testsuite/enum_external_deserialize.rs":"21db0f2a324b27ca1968f1e6da67323d244e173599c0d98ee5d7a9b63bfb0703","tests/testsuite/float.rs":"c2bfceade5ee18e87bef6e20696b533bff3249441b4d3d2820c54d874542868c","tests/testsuite/formatting.rs":"bde71ab906aa662548410f158a995865f21468568ef7778f101a5d4656f0f147","tests/testsuite/macros.rs":"0e2b6f9f91ae632b8c599fc6ee6d1310cf263c7b3eac45d749fced4d76312814","tests/testsuite/main.rs":"b2b919ee6c39999e014793461677f5e3342f4352cfdccff871ca6e295ce62613","tests/testsuite/pretty.rs":"5f14338143929d733c37e51c98cf9ae69325d23d64e830fc8b34f0e840a4883c","tests/testsuite/serde.rs":"47e86e84fe0b8eb2ca244e6279e9cba5bd1a6d2e1c71fc82aa5d9ce235706f0e","tests/testsuite/spanned.rs":"22601496dc92f9805bd61348bbff7b39e9bf5082b932230c2bb3838e08c8491e","tests/testsuite/spanned_impls.rs":"019aedd5e31d72edd1a1697b745f5c2fecf28a71204810a9a74f03b30c5662ac","tests/testsuite/tables_last.rs":"530915b4b0999eaa711036fc0004ed5fc54f9f441a312de7220507de4f111688"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8d998aa2aafc5b97bac79ef3720ca2b3e8721cd907ce4e53ced21043862a9564","Android.bp":"11d60a1dbab17e9a52a211ab4236e1d0ab217aebb39c23537b6e5f707f5c483a","Cargo.lock":"a87a8d00b7e1d43b03ec61b564d77941567fbaa6c7a132c3b583f7681bc39911","Cargo.toml":"0537aaa2e1ea61c9491175c67884623158200fa33403bc7dd2aa92dd64cb7b58","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"d43548478b0904291793c949bcc9fdd48132088bf7b63071f6fbfa41ba113952","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"88c1bcea6c3dc175ab2ef2e6b99ba78f98d9470a93f115f4f0da1205ef71428a","cargo_embargo.json":"270934e1773a1ca25fb06149e46600d6b3f951bd18c9b86e8bce6654b90979da","examples/decode.rs":"16df4cdb0d28f075eae95d480fa3bfcf4729b33720d77358133c181ea7b05939","examples/enum_external.rs":"1ccc93149e9157e04e964bb844aaa369aaf6e449208594f2b2df76d885f14be1","examples/toml2json.rs":"7d8b8b1a41a7e6bdab780747c2b827a02279123a0660c692c75d1d8cb1478d81","src/de.rs":"c7422c2db6e13e2a6dc76e527a8dffef0c3509076c89a8323ca8e88a0025c05c","src/edit.rs":"fa7d7c416425e41ead117721ded65aa202647acced6e4a0d2adb522184242068","src/fmt.rs":"f2ebad7e60510f9c392f1d018af07e3c5a953106e0e826d9267f801a4de2876c","src/lib.rs":"a848ae0391d55ab2417788215df587a1df4e7504b5d924cc4839ca51951a6ef3","src/macros.rs":"7ca07c3aede6b376e5abc709bbb89dfe4559ae95efec1de0522736342d9d2ea8","src/map.rs":"4edddb4dbd3ab5ed59578ee5871b0b0cd32f3989c3123b64f6705b7990548abb","src/ser.rs":"d127e7d56281a28b919d1fef539a946ead205aa7a4b98087b00fc7e295cb2189","src/table.rs":"faa6de32a49afa6dba904e7954d132a7ac14eaf14af2b96d507339c4654c9b53","src/value.rs":"81466e4b3ac24cb848519da5028cd0526639ff5903b0b0e2db5f7df07d1f48f2","tests/decoder.rs":"04ec9cc023c26e03c4e3b09a45b1f1df5d2db74800558bbd6bdda675a5485af3","tests/decoder_compliance.rs":"a07e99d9d125a460a048d7340ce3c9214ac7d9c93f982c4f827bb0caafb26803","tests/encoder.rs":"8041caf86be24bfa88525aa042da7351c4b5309d7563f0c4a3802ddea32440b2","tests/encoder_compliance.rs":"587f8a8a7faf3f81b6bbef4c6a5ecf723fcea0b82b706db7d3cdb8f251aef804","tests/testsuite/de_errors.rs":"4c1507c90789ed16221183b8a2dadfedcd792496beb87a8559dfa182333fa14d","tests/testsuite/display.rs":"a408a3147cd33151de032f539c503e788815c6877629aaff4155683a19fbf50a","tests/testsuite/display_tricky.rs":"8fd273503b20fee0b647f6d6203db194e921b36dd14e7ea9b66a7932c0c52570","tests/testsuite/enum_external_deserialize.rs":"21db0f2a324b27ca1968f1e6da67323d244e173599c0d98ee5d7a9b63bfb0703","tests/testsuite/float.rs":"c2bfceade5ee18e87bef6e20696b533bff3249441b4d3d2820c54d874542868c","tests/testsuite/formatting.rs":"bde71ab906aa662548410f158a995865f21468568ef7778f101a5d4656f0f147","tests/testsuite/macros.rs":"0e2b6f9f91ae632b8c599fc6ee6d1310cf263c7b3eac45d749fced4d76312814","tests/testsuite/main.rs":"b2b919ee6c39999e014793461677f5e3342f4352cfdccff871ca6e295ce62613","tests/testsuite/pretty.rs":"5f14338143929d733c37e51c98cf9ae69325d23d64e830fc8b34f0e840a4883c","tests/testsuite/serde.rs":"47e86e84fe0b8eb2ca244e6279e9cba5bd1a6d2e1c71fc82aa5d9ce235706f0e","tests/testsuite/spanned.rs":"22601496dc92f9805bd61348bbff7b39e9bf5082b932230c2bb3838e08c8491e","tests/testsuite/spanned_impls.rs":"019aedd5e31d72edd1a1697b745f5c2fecf28a71204810a9a74f03b30c5662ac","tests/testsuite/tables_last.rs":"530915b4b0999eaa711036fc0004ed5fc54f9f441a312de7220507de4f111688"}}
\ No newline at end of file
diff --git a/crates/toml/cargo_embargo.json b/crates/toml/cargo_embargo.json
index 14d6fa6..7ee491f 100644
--- a/crates/toml/cargo_embargo.json
+++ b/crates/toml/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/toml_datetime/.android-checksum.json b/crates/toml_datetime/.android-checksum.json
index 3a0f6eb..b797387 100644
--- a/crates/toml_datetime/.android-checksum.json
+++ b/crates/toml_datetime/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"4584dd3adcd0bd40fdd33d93aa40e852b6fe928c04aaf7dc62fc5771383f3dd1","Android.bp":"4ae161b15dcf440bd99ab981b2dc5ff67d9f2ff6c12891a10e8e90da3427afea","Cargo.toml":"7f65365254ad41ec47d51b77e4f2cf7983557e19a2fb7df9051d17fe7a03457d","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"49366069887a476402e678703e41913fe0056039d370b4585bd5f01c7cfdf5eb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"38892b4567da5672cd8cc0a1b27ccb6bcf33963878374e7609e9375d10f109fe","cargo_embargo.json":"bd415b3992f06f4d7603672061edf35efc0a31aac64f086348cd16e3ca9b9a30","src/datetime.rs":"dae4356c731677d55b23f9d30dcd30585ec9f76b4cba9909c60ac0c6f5973298","src/lib.rs":"f12eba69c53cf3400df8c327d1bda7addc6884587ee0e85eb9da4a1f4f66b07f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"4584dd3adcd0bd40fdd33d93aa40e852b6fe928c04aaf7dc62fc5771383f3dd1","Android.bp":"4ae161b15dcf440bd99ab981b2dc5ff67d9f2ff6c12891a10e8e90da3427afea","Cargo.toml":"7f65365254ad41ec47d51b77e4f2cf7983557e19a2fb7df9051d17fe7a03457d","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"49366069887a476402e678703e41913fe0056039d370b4585bd5f01c7cfdf5eb","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"38892b4567da5672cd8cc0a1b27ccb6bcf33963878374e7609e9375d10f109fe","cargo_embargo.json":"4fdb36f4ecb419ba86180bb5d82a0655275885b2c2abc9c861279812ad3d55c1","src/datetime.rs":"dae4356c731677d55b23f9d30dcd30585ec9f76b4cba9909c60ac0c6f5973298","src/lib.rs":"f12eba69c53cf3400df8c327d1bda7addc6884587ee0e85eb9da4a1f4f66b07f"}}
\ No newline at end of file
diff --git a/crates/toml_datetime/cargo_embargo.json b/crates/toml_datetime/cargo_embargo.json
index 8e0c857..dd1e137 100644
--- a/crates/toml_datetime/cargo_embargo.json
+++ b/crates/toml_datetime/cargo_embargo.json
@@ -7,5 +7,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/toml_edit/.android-checksum.json b/crates/toml_edit/.android-checksum.json
index 804633f..6a3ff65 100644
--- a/crates/toml_edit/.android-checksum.json
+++ b/crates/toml_edit/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f474e15b5e45cb030701e8bb2ee732bd71ed8afe82dfb90f21a51a2a2eb5a4bb","Android.bp":"cbbf49d65b7d5ac5998800f3b995be86cdc1769925411c8015c9dcb322e12a39","Cargo.lock":"f4d23b06ae3b1896c4dda9e6a8cf5d91ac7fd39c6bbbb011de5cd512a7f7aaf9","Cargo.toml":"da166bdd7496436389b616aa50eeb9ab89f53cf2da7c97a7c5d252ca3af06ef3","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"f796074e5e74904daaf2e8f75853978569d6982f9e67ce81d760747f81553e5c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f45dac46b26743d4f8fe1358b5c4707f782eb6e487f8a9b8443ef774e9483b78","cargo_embargo.json":"397647bf02fb37ea9b3ec5313148fac22602f64f91ec8ee36cc82f1f0f58b793","examples/visit.rs":"97b91b3931ea8a2096cfb5982ff97c6a3b71698c72698f73293bbfbaaece0e12","src/array.rs":"3782a701436c40e4babeaaf40602f6df8ef511294a98522400a1c57ee963d8f8","src/array_of_tables.rs":"ca1b69a942378075e7f5ab0ae09d27bcdb7e78c2c0bb0bbf07e7d5f837338078","src/de/array.rs":"3bed5da8060696518c5e2a3800c221ecdfe3e392350967caa2ee2aab1dd46bed","src/de/datetime.rs":"adcfa9c96a655face16212d4b9be0221723c5916dd4ba0b967c363273c6acf3b","src/de/key.rs":"59cb84b0d3c43fed624d67d3ca01afe042dbe3199d0247f47a6f93097473504e","src/de/mod.rs":"d99680ff57dd8328a782bfd17dbe77cf4d48e132ef59cdb6138e0e90ab5b1ea9","src/de/spanned.rs":"12f7f11ffae52d147dfd6b8e31837d28736cf88d44c93a8071eca736b26414b5","src/de/table.rs":"6993c09ca5885161a51f0802326a8f624b6889342a583bda4e4bada06e59b016","src/de/table_enum.rs":"ad5e7916066904191bd278ed5b7013da7c7d0f50dbf243b9eda5c12129d1e8f5","src/de/value.rs":"019b94c674129abd3348a043c8d7de775fda247debbe185729fff84700067fe1","src/document.rs":"154c96a0a4e80be5ecb9a50725f14d0dec03f59cead324a3e0569ab818e61333","src/encode.rs":"d02199bedb80ce24799db66d214e559fd796d9901bf398ef83b2c5fbf70b1711","src/error.rs":"0d30634003d0ec6c0fc2dca1d1a5cfda178dd9b0caecc162639050b700b3c27d","src/index.rs":"8b5a233305cca7d5c41e5e5cc4fd7be303b44092b55d7167a3fbe595959542a4","src/inline_table.rs":"c26f24ebcb34ffe86388a392147ad28af9c6cbf8e1b2fc504c2b191290f882ed","src/internal_string.rs":"3ccabfff6260df6beba70e9ce29e11e166a06efba0830c657e4d2cd762da6010","src/item.rs":"c43dbc652c4bddeabd9072257652d68f918718a8fc24be94fa988c0fd15c60d4","src/key.rs":"87bb3adaa47e3597fd1e3c37b933ecceec6a61837c3faef6f8109f78b2706119","src/lib.rs":"37bc2c6d236bd543114837a80afc6ffdcacf166e0956bb7a8c0fd35c8fd2f800","src/parser/array.rs":"6745c448bd2468ecc368f51751049fac82752c59d86048a22d8a9ffba00013d7","src/parser/datetime.rs":"ad2078bcc1b9b6c77aebffa1fbcc21401c4a66a95c3ac009a9f2f23aafbee958","src/parser/document.rs":"ea1ada09e7396b61dea578e2f704f1be226c44b7b9b704217ed70bb6fe7cbdce","src/parser/error.rs":"e31e69f00dc9b642713886876573a0e55b438b20a1502481ea9ea26ccb14186a","src/parser/inline_table.rs":"cddd4a09d132be2338aa16ea152c49493301b59554d31d619c9219f0f8beb28f","src/parser/key.rs":"c84b3746cbf7b87f193d28b6b442a0712d6a02274d1c759f7159f8e5102031ef","src/parser/mod.rs":"690f65d437860015d9e757bea1f2eeef15e5f658795623820c67f567a2286d37","src/parser/numbers.rs":"576989e6ad257aeb06463bc800688c39bf585c0cc91b8ae9e0f750a7d3c4e6a4","src/parser/state.rs":"ed8b07352b00f60cd31448adb6b48b7c69828130741928f143ea6fe04af3c938","src/parser/strings.rs":"680878e7170936e1b82d18a289ce13586bffbee0e6d6f4f937c71b996b0ef26d","src/parser/table.rs":"ebe15adb0b447c6590cde2a0726a35450b2bc24cd348b6c1199fdb4cdb434a0d","src/parser/trivia.rs":"b57f101165739ce924e04c47b8878730a12856ccbe3d889413c6cf395244e7f1","src/parser/value.rs":"bc446c4d15af7fff26910d47f60f3caf910af9cf422482e793d2bfdaa4b42d30","src/raw_string.rs":"bdfbe84a498220a6adb015f76609affad0fd352c719a3cb37ff131865b7ab738","src/repr.rs":"ab88409650b979454780d447de8a65aed5c798fd7a4434a5f772d8f83cf9b920","src/ser/array.rs":"ffd5a0e51e324a7defdb345bf625d583cd78f2e45eacd9e4023b638ffb67fd75","src/ser/key.rs":"3f03b4f13c3ec9f7f58d3be1f8ee7dbde9c99dfea143827aca4fffc0d577cd5f","src/ser/map.rs":"d166fc26f6e64bb8ec7076db5cdc50ee77844bc9f1148addbc6cec9da87fafcd","src/ser/mod.rs":"77ed3ed6ac0594e9bed647f00040b009a9802556b33d14824133d508ddfea238","src/ser/pretty.rs":"cee56f209185fd0b78ae4f044f6042bd7e7b7cc8604ca99af8f658d11b88d46c","src/ser/value.rs":"bcbdb731349298b278236fc97ff073a08644d431673be4604de2ba915cedec74","src/table.rs":"52a53f254ef49ac1b05381a3c842f048803b3953efe9970743745dcea664f932","src/value.rs":"b12985099a0542640f73200eaddd073c3024019607c950b00722522497ebae4e","src/visit.rs":"5e7a385a1e659563760e177c5dda97c4b33679df0286c59f43307e7e159c8e04","src/visit_mut.rs":"44b4ceb0e721b7438630ec3a6488619e8380342aee7314ccd1cb2593778a32a3","tests/decoder.rs":"f913f2422aa6924032bc8a6ab77df5954c20ba6c259930af24e83e27cb493f82","tests/decoder_compliance.rs":"74c36d82d52205c3490844ef3df952e294aa92c6e9ee64dff231473072b78b1d","tests/encoder.rs":"32421da7d726611006c2c7198e0da3944ad3b42d7b456a6ebdb894ff90f40280","tests/encoder_compliance.rs":"1d9538ee077af51782213cc3484de5252b8700e242b832735c401fd6343623d6","tests/fixtures/invalid/array/array.stderr":"517c397c7afb8fe855fe9b86a253f620f761b5403fdbb08b219c893f096804c2","tests/fixtures/invalid/array/double-comma-1.stderr":"517c397c7afb8fe855fe9b86a253f620f761b5403fdbb08b219c893f096804c2","tests/fixtures/invalid/array/double-comma-2.stderr":"f8a4c678e4fa5bb4b2dc66064d113bd81beb5e5258046685f967feefa825e8a8","tests/fixtures/invalid/array/extend-defined-aot.stderr":"86cc5eb992fa9add3ad39766d6c6736d30dfd9c464cc516c45dec12bc1c8e8b0","tests/fixtures/invalid/array/extending-table.stderr":"9d666931632f0c02362f102e9edd86916a7de491a83d6dfc68a0c2f87b0794d6","tests/fixtures/invalid/array/missing-separator-1.stderr":"fb21970f88b6f5ede63891c6baf406cfcefea7d48c15c0b4670c71d97c61c3ce","tests/fixtures/invalid/array/missing-separator-2.stderr":"3a807ad6e94c3d70b62696bec39d7a1e558e5771d6c6484a80e89ffde6aa9540","tests/fixtures/invalid/array/no-close-1.stderr":"7c1689bf4779e193a475bc181b622e2dcaa2b02e2c9a052ba953c94d2e48b724","tests/fixtures/invalid/array/no-close-2.stderr":"e3421314255375d50d74e04b527adec9aa1b7cd9a8502120247785a34f0b7368","tests/fixtures/invalid/array/no-close-3.stderr":"ec1d919de5766216b887a34099b2117db7e3e3cfaccd8b295f44268d950df14e","tests/fixtures/invalid/array/no-close-4.stderr":"4372b71512f369cefea355dc044e04483c5f7943028ad5cc0d3514804d3ad18d","tests/fixtures/invalid/array/no-close-5.stderr":"87d9fcd6aae71e0542f70eb8ee2a509f024e66d0b10d03b2f7f697d76b2bb575","tests/fixtures/invalid/array/no-close-6.stderr":"9ae5dc0d71db715990ef8c7e8ded74643c4a451c5abb4c05fe1bd6eae61d20b9","tests/fixtures/invalid/array/no-close-7.stderr":"eae2afb173b6a4d58e65dc94782c1b5079588806396c6b5716fefe911643966a","tests/fixtures/invalid/array/no-close-8.stderr":"feba7ed79aaa5d7b92fca24d09ddfdc1a2198e84a51aa8a4a7578b75e945e002","tests/fixtures/invalid/array/no-close-table-1.stderr":"ff5517cc98a1e0918889defcf594a919f1c52ef508bcc4183114305f2df8cd77","tests/fixtures/invalid/array/no-close-table-2.stderr":"21751532b65a2db6064cee09f15f65d4773c34ed83b7269d09e2ac00e5859278","tests/fixtures/invalid/array/no-comma-1.stderr":"02a1e51cbf040add31472bd7c56723005c89c8b793ef59769cad78d36e4f3139","tests/fixtures/invalid/array/no-comma-2.stderr":"4dc26ed513ceb32d721c4e25a7a1918b9c61bc93d926bbab04975dc1a930fda3","tests/fixtures/invalid/array/no-comma-3.stderr":"f5441aa4804a2ce10fa621304def1c296b4b35bf6e7657a2926d364b9d3d4db9","tests/fixtures/invalid/array/only-comma-1.stderr":"b7d5fe39fb03327a5b55b940f524aa4dbb5548604fbc8786e1e4e502fbf6f16c","tests/fixtures/invalid/array/only-comma-2.stderr":"4a54ddd36885beb51fa70327ecfe81fd6dddc5f1f23ff85a61f30834577b4b2a","tests/fixtures/invalid/array/tables-1.stderr":"2a9ec07bfa4c818d204e8d49c621e13194cffc99c21a75533a8dd3b00ffcfdb2","tests/fixtures/invalid/array/tables-2.stderr":"e04375e46225e12956b22fb717615b6cf33f2064f12a9a6c93074f42adaa5374","tests/fixtures/invalid/array/text-after-array-entries.stderr":"320eb4e7f8ba560da84cac292a9d5de03534f6ca6ff6928e429ae8cd55ec4395","tests/fixtures/invalid/array/text-before-array-separator.stderr":"b37ba17334486b7b16d4b5bde308d2a8c7605429c389e3ec30b02cd975fcf441","tests/fixtures/invalid/array/text-in-array.stderr":"895f20e5d6f2748c16659edbdb4c6e91d84f29e45f8e72d380bb3205f6c9065a","tests/fixtures/invalid/bool/almost-false-with-extra.stderr":"9c06a48312aa0138684e37b8d4193e46ff1badf6ee3d2424d6c6e5f341db8a61","tests/fixtures/invalid/bool/almost-false.stderr":"d3c827c1c521f98b2242a7183c96b00682764889a46666a5dcfb6d0fa7a743c0","tests/fixtures/invalid/bool/almost-true-with-extra.stderr":"9db6045a6e3ba501874de810a16a35f9837647dbab22ea9d8c9d89a7494b983f","tests/fixtures/invalid/bool/almost-true.stderr":"2816a9e9637d3402750f7a35622d738abc83825d706fb4c19d8f007df2396bb8","tests/fixtures/invalid/bool/bool.stderr":"9c06a48312aa0138684e37b8d4193e46ff1badf6ee3d2424d6c6e5f341db8a61","tests/fixtures/invalid/bool/capitalized-false.stderr":"b7e9c3764103c257ceae4f0aeb714ae58917722cb6ac1a1fdb0cde6f9efe1c83","tests/fixtures/invalid/bool/capitalized-true.stderr":"ac46ab983618490106a1bd3263e0e34e54010a014a795184fb722d5ef49aab2d","tests/fixtures/invalid/bool/just-f.stderr":"d3f2bc776b3137f378be5acb9e10e745cd124178d836289fb1b7091ab12556fb","tests/fixtures/invalid/bool/just-t.stderr":"1f6c7ced5fd72596cde8daf3bd05a61c9f0a28bfb612b8b6b0b6de4630d1c0a0","tests/fixtures/invalid/bool/mixed-case-false.stderr":"7d57131577e1c018075c1a83347e80183aa1db1b6aee1027a11cb7f229b05d21","tests/fixtures/invalid/bool/mixed-case-true.stderr":"9cfe3868f18cecce20bc674593f15fe88cb6fb7361f54ffec1616e877f714cf2","tests/fixtures/invalid/bool/mixed-case.stderr":"34738e926e3e5ea99fc9860c0177463699e54b2c48fe11168a6c25bc173802ac","tests/fixtures/invalid/bool/starting-same-false.stderr":"620c142ae095c8da9aa1298a82a42ce1f0f13eda91c66e75e4c5b6f82bee0455","tests/fixtures/invalid/bool/starting-same-true.stderr":"8e1016111cd84601db76df8579ce7aab7fa7a0e013e66d3174cb8bbd80c4764f","tests/fixtures/invalid/bool/wrong-case-false.stderr":"ca86c0166b4992d0255e2c8f5ed2935d58c325965039006f1903c8ddaf549593","tests/fixtures/invalid/bool/wrong-case-true.stderr":"6264fc52c455d04e1f89d0d2726b4325066699595f6120ad4583802642cd6735","tests/fixtures/invalid/control/bare-cr.stderr":"be847ba07cd507752b8124ca13e8d012c666b81cee56be1309815c8d490470c1","tests/fixtures/invalid/control/bare-formfeed.stderr":"18a939f8d8459a4e3a2d9dee5756fa81b3f12a2179e685c35ecd25f4da9d8aef","tests/fixtures/invalid/control/bare-null.stderr":"cd58586e56fa9b00fa17be23dfd531dcf9eb5e10556464decd4b60fdc6eaf72f","tests/fixtures/invalid/control/bare-vertical-tab.stderr":"970f649f9575b1553da1382466eafe16413696203e7ddbaa99a0585a3f0ca157","tests/fixtures/invalid/control/comment-cr.stderr":"7e729bfc9b0c575521c39d763e8ab8f7baf94054e183e59cbe976d840a0f1c62","tests/fixtures/invalid/control/comment-del.stderr":"5c41d37aad38933267d8d8fe80d9600650627dbe3433b8ac876ca63bd086094b","tests/fixtures/invalid/control/comment-ff.stderr":"4a7eaa53d883dcab7f23b09d33794a687b5d0c7777ab172a0bd81f9503878762","tests/fixtures/invalid/control/comment-lf.stderr":"a24258d06bc41156b92ab14fac3793c85d706e74d5c280337c4ec0c4f80f92ff","tests/fixtures/invalid/control/comment-null.stderr":"afcf5791d6fde718cd6a2b514483d45d2355bf08f9fa392d75c7192bc390913e","tests/fixtures/invalid/control/comment-us.stderr":"280fbd7dc323d8841d5b9fa821f48061fc01a968bc1f5893fdac30fc17afaa3d","tests/fixtures/invalid/control/control.stderr":"07adf02cb547ed379a402121e4db738daa698358e53c2fa852c617fb766b41fc","tests/fixtures/invalid/control/multi-cr.stderr":"1b70b31b5c10eac9a52cad0b7739bbe5b9a74c9cce4ba105143c622a33164c14","tests/fixtures/invalid/control/multi-del.stderr":"6a7f52409dbf8b5bc1097fec2d1330310c97d78eb3ea2027f219b25e519ec270","tests/fixtures/invalid/control/multi-lf.stderr":"e723fdaf9e19aef9a0eee8a919e5986822c25ac1131e24422e9fabc0887ccc63","tests/fixtures/invalid/control/multi-null.stderr":"ab3e944c835a74ebab8c56c39c3ba6496e8d4d2b03f324a66e2e511ac8b7fd10","tests/fixtures/invalid/control/multi-us.stderr":"1df029e738c4cb78a68b360fc131fb6d9f5b93f78e292a27aaf4c40e8aa3d842","tests/fixtures/invalid/control/rawmulti-cd.stderr":"fbadd57208404b2116c9cc16f36b80e1ab08276d7838e17e4bd48a8df7e194d2","tests/fixtures/invalid/control/rawmulti-del.stderr":"ee50d46a73bfcd85f7b3b677d4148cf2390e5ea13b59a6bc81dacea3e049ab33","tests/fixtures/invalid/control/rawmulti-lf.stderr":"6cae2d709ae5ee6afc355322388d8b57d8e9674929d71af5b7761bab5d751cb9","tests/fixtures/invalid/control/rawmulti-null.stderr":"0efaa11fc391b16d27e1de09027171e8d379d3ffddd2489045ba10912ebccb89","tests/fixtures/invalid/control/rawmulti-us.stderr":"31a28ca07db60771f7787f8ef30fa160ce3715df28532bc9892ec15e380c36c1","tests/fixtures/invalid/control/rawstring-cr.stderr":"32819db35fde8ef9ee282557740c8b2dd077c0bcf421614fb06db18d732af57e","tests/fixtures/invalid/control/rawstring-del.stderr":"8a7828be56c7d941c6879698be4825fc1f9b75766898e782675d860581e7393e","tests/fixtures/invalid/control/rawstring-lf.stderr":"1d01b15b19024ce4c36866f025ed6adc4f3c3bac1a2b5fdf4ea79471dc5c9b49","tests/fixtures/invalid/control/rawstring-null.stderr":"245b39b3943e776fb5cb2d52497e0fb301420c36f7f5b47df9980aa05496ab5b","tests/fixtures/invalid/control/rawstring-us.stderr":"7fb0ed283f42d3b1cc3852698b6047c2975d2c780eebe14f65d2b3d11d9f0bad","tests/fixtures/invalid/control/string-bs.stderr":"0a12dfbbf6161d24f29d78679928a4e835d47558344773c2d585a2201bb043ad","tests/fixtures/invalid/control/string-cr.stderr":"cf5970ede487e7fd692baa45247d55df70b8207f8d67df6c2e55eb9d4ef9352b","tests/fixtures/invalid/control/string-del.stderr":"35c65f3ceb74b80d4a5d8109f61f099bdf640379dc9751fd7678447a33eaec78","tests/fixtures/invalid/control/string-lf.stderr":"ede4b6df958cac81b05525f25b1ac2c1435eae895f545dac57a553a7840fc8d7","tests/fixtures/invalid/control/string-null.stderr":"c30aa237809c03dee02d36a1fc4a02d6f184bd425bfc2accda6b3fa1bb55fe1a","tests/fixtures/invalid/control/string-us.stderr":"7d922c62bf118c23b85991935b8b4c7a113d39d0092d13d22be1e0ad7ed20a31","tests/fixtures/invalid/datetime/feb-29.stderr":"743e7bcaa21ce6a8e7f033b56de7a0f3e7dd54ea84bf293e044af4e192f693bf","tests/fixtures/invalid/datetime/feb-30.stderr":"744e980d51f19b89a203192eae4f88e5ecba71853e006ab1c52988818584507c","tests/fixtures/invalid/datetime/hour-over.stderr":"0aabf978f79acc6b4d0d3d6a9b05833aa65d418d71aa5cbbd71035797adc1b0e","tests/fixtures/invalid/datetime/mday-over.stderr":"76f70be6d3ca444339aa15f4e6243b784a4c414fde0cd932b20c182266276782","tests/fixtures/invalid/datetime/mday-under.stderr":"54456d2ec892deb33b596cd82d400bdc6777cd2b5c643e45556b9646057f7d55","tests/fixtures/invalid/datetime/minute-over.stderr":"ffa678092cb67d6848910218d9a5bd46f5a308b7bce2269b8b6e46c2ec019dd0","tests/fixtures/invalid/datetime/month-over.stderr":"906596048b7dbbae0630ec1216827a95ce562a09f98704595d27c3491cdfc7ee","tests/fixtures/invalid/datetime/month-under.stderr":"c073c25ef0a3aa10b1d29ac28df9c9207143ffd595680ff633400d076a76dde7","tests/fixtures/invalid/datetime/no-leads-month.stderr":"4f5066ed79bcd945215a57f55ef230f47dd64e2ec55438a7ee08bc3f7067e318","tests/fixtures/invalid/datetime/no-leads-with-milli.stderr":"ffce1f8e7bb51130705ebb7ba8e9ef007de9a9e7f33b476e4fefb15a030d2e1d","tests/fixtures/invalid/datetime/no-leads.stderr":"4f5066ed79bcd945215a57f55ef230f47dd64e2ec55438a7ee08bc3f7067e318","tests/fixtures/invalid/datetime/no-secs.stderr":"8c504dfaa1dfef25b78a8548509b3139f92e3e04bcb848a1e04f7529e169ad63","tests/fixtures/invalid/datetime/no-t.stderr":"ec4852cfa295ad2944101831bf40489e6c22b5a33fdb3faa5347e2d18c25c227","tests/fixtures/invalid/datetime/offset-overflow-hour.stderr":"7a4250381a915c58e3aa81cb3afb59fc4163b7d25cee0a6625b615b4fe5e0fad","tests/fixtures/invalid/datetime/offset-overflow-minute.stderr":"6721e5fb29bb4ab20711eeb3fe42a6f1fad4b279075296c0a97124d75dac08af","tests/fixtures/invalid/datetime/second-over.stderr":"ba720829aee7506625c354e5f53dbd6b67ec351061df1e32b49cb11ea69bf52e","tests/fixtures/invalid/datetime/time-no-leads.stderr":"5117ac62dd754a203f2fd6e5163a2ce352776bee513219252cec77c0ed71bbbb","tests/fixtures/invalid/datetime/y10k.stderr":"ac3db71c252bb0b2f0bdc8a9d734ca60289afecfb5a66309a895b54c7d8e61f7","tests/fixtures/invalid/encoding/bad-codepoint.stderr":"64244879fa48b9c4f2f7b219325d4c308772c032b7005edd2ee4d771b5448bc1","tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr":"d55ab89a2f111bbfffd362928dbe3a1dafe7f8f37a04e1c56307efe4f4ea14d8","tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr":"52e5ea4555b208f3ce91debc99e01dacc6e706381fb274259730b0a82f041660","tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr":"e22a4a60afcbf41351abb9d4d61a4c5d6dce246f98fedbccd33557eea8596524","tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr":"e22a4a60afcbf41351abb9d4d61a4c5d6dce246f98fedbccd33557eea8596524","tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr":"eea9032a7d46e496ff8f6d4a95344b4d7660adb0fc715f652aefea54ce72d85d","tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr":"eea9032a7d46e496ff8f6d4a95344b4d7660adb0fc715f652aefea54ce72d85d","tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr":"dc9eb6707b252b77ee0c30bc471a4bd58308b31bfc892e2fd5c3995458e41b97","tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr":"6570c6feea522cf017c8dcdc1e4b76cfeef2092bc3b938af0140e171817a8311","tests/fixtures/invalid/encoding/utf16-bom.stderr":"d9c278ec8c5a422f4553180ea76dd223278acc0d0ecc5f725235db6b379e5b99","tests/fixtures/invalid/encoding/utf16-comment.stderr":"2f2c4ffa18d08721d707b7083706efe5394e9fdd3504791a52949d76b7442e67","tests/fixtures/invalid/encoding/utf16-key.stderr":"8a8465ae12c6f3065edc3b237b7066bc8cf03b95a22403c8c5a1b1a5f085dbad","tests/fixtures/invalid/float/double-point-1.stderr":"817b02c19d53f02107569e7ddf9b38334cd85edd0a452795baaf6d5c0ffbbf63","tests/fixtures/invalid/float/double-point-2.stderr":"8b5a07c41087342d5f8bfaa8998465dae954cad11d93f01f4ed4a5541694e7d4","tests/fixtures/invalid/float/exp-double-e-1.stderr":"657c856a8d474cec0d557f4a5401456966bc82c8061a092977f4ae0cb71fb04f","tests/fixtures/invalid/float/exp-double-e-2.stderr":"ad101779127abb35a6e35020a4818c1622ae5433208bad57f1daf113357f6ab9","tests/fixtures/invalid/float/exp-double-us.stderr":"e6e53e58b5deefc9e50e6eca91423881b682bcf8528bfa0386158aad9458ae74","tests/fixtures/invalid/float/exp-leading-us.stderr":"5e45eeabdcf142ebd5b5ee2b77e2520c5ae7e35e943034e12c84095f51a1141e","tests/fixtures/invalid/float/exp-point-1.stderr":"2d4202fc806e23ce05f8bb3e63e31d1b4874875b018f28bd2b59c8714aa70cd2","tests/fixtures/invalid/float/exp-point-2.stderr":"d85145654b358cb63f44ea754c88f29a073fe5f637d07b279a986ddc0c347df4","tests/fixtures/invalid/float/exp-point-3.stderr":"3fb7d6151b522057a2b15137daa916681220cf575dec560f084d3c9c2dae1f3c","tests/fixtures/invalid/float/exp-trailing-us-1.stderr":"71aef4dde4dc2371702025127b9802540765a0c0db6f96156bf6542c574b30b7","tests/fixtures/invalid/float/exp-trailing-us-2.stderr":"c63f97484c7c498b01fef93984beadb9311d884ce5b7856ab1301cc398ae9c4c","tests/fixtures/invalid/float/exp-trailing-us.stderr":"f5bbc5fdf2dd018c031ca5c79edd7f16a0da25676bed96ffc0682401497ef362","tests/fixtures/invalid/float/float.stderr":"511c7e989b6e4768f089634036848acc896439a06df83a97fbcb92ade1554e98","tests/fixtures/invalid/float/inf-capital.stderr":"d493ce9b11dae0dea40a2c8c7666125031d5323ab82bf1b8af997049d60072fa","tests/fixtures/invalid/float/inf-incomplete-1.stderr":"6090e21b98dc6df8e67962c8458ac773bf3dd4b78ae4f4453dfbe01657401a7c","tests/fixtures/invalid/float/inf-incomplete-2.stderr":"abc3855709f099a9023f0d3e305edb8c97570223f889431dad32e21e83747d6c","tests/fixtures/invalid/float/inf-incomplete-3.stderr":"9fb99f8ca91b9fecb86ce27e1b4fa6ca05a2d5c0ab039972d4d2a7dcf2c6228f","tests/fixtures/invalid/float/inf_underscore.stderr":"8e7202c508c9d6e35410e4ff89bee3a5db4a88367e69e210fd4ae4f9bf602286","tests/fixtures/invalid/float/leading-point-neg.stderr":"21e3e8ea4c817ca286b1ee6dd359c91b6e8ffcb376bed393e03a29e55d7a6a61","tests/fixtures/invalid/float/leading-point-plus.stderr":"ff0f7a8a5cdccfc7e6d3e6b1381643b759f5aeff5546bfd2fd4dd29f8f1b1551","tests/fixtures/invalid/float/leading-point.stderr":"5c7590482ac55bb0d11eb9e1291a80d8c891ed1949adfc64e81b75bc5f8c8b06","tests/fixtures/invalid/float/leading-us.stderr":"67ce463deceabfa0dd4eeebfa68d72eb53fd235455d6181b4c8597c6507e0ee7","tests/fixtures/invalid/float/leading-zero-neg.stderr":"16b6cf97171ec9f85a36e09a1ef39087eff3a0c441a9f9d96c43a9d0fdb5ee38","tests/fixtures/invalid/float/leading-zero-plus.stderr":"f08e1416644c743b3463342313f023982051e992756e9784229b1bcfc1e19aaf","tests/fixtures/invalid/float/leading-zero.stderr":"511c7e989b6e4768f089634036848acc896439a06df83a97fbcb92ade1554e98","tests/fixtures/invalid/float/nan-capital.stderr":"66fe63db08d9ee24e8a90f4e2b5f2c15fb3f35dfb7eb81ffe760f8957967370b","tests/fixtures/invalid/float/nan-incomplete-1.stderr":"138d0d28aa5e90b9fb344c743478c0b6be79492ecac856d71e239af5f6e1aa99","tests/fixtures/invalid/float/nan-incomplete-2.stderr":"31f200fbfc6e4c8d06f58960dd7349f650af86d22a1f0d6fd8c4df46bb4a0b3a","tests/fixtures/invalid/float/nan-incomplete-3.stderr":"3b16f8d82cdf18df21bba1e83d2aa33e175ab5a37fd5f3214b1be84a07acab10","tests/fixtures/invalid/float/nan_underscore.stderr":"4a30507eaf227e8c8e2bbda6d7b3cb4fdcf793216981d1f9302cb2b049e95d58","tests/fixtures/invalid/float/trailing-point-min.stderr":"0b5c7385ced699074d6042b5fa0ea9266ea64a191dd0e43466ca71a2ceaba76b","tests/fixtures/invalid/float/trailing-point-plus.stderr":"856edc036309660c223b1cac7c99d9d6b61bb4b49e592410c3f308fb0a678800","tests/fixtures/invalid/float/trailing-point.stderr":"5241f4525c36c1cde19d520aacdfb7db1bdea07710d2621d2a60ac7b1d1e70a9","tests/fixtures/invalid/float/trailing-us-exp-1.stderr":"42a7b0d43ef2b548c2199a4c9ade5b30c28b91a625d6bac6f57d721b4fff2848","tests/fixtures/invalid/float/trailing-us-exp-2.stderr":"13c1374bbf3f5e3c762b6246dc8ea1f5e619b3edd6d66a2e37ba51fe3ba0acca","tests/fixtures/invalid/float/trailing-us.stderr":"4103e29434d2c323c7461903cbe27dc0a5a70c9907d2d47ee31eaba3f4d51b2e","tests/fixtures/invalid/float/us-after-point.stderr":"2d0ef75d124b8ff10a48639d2f837a13cb18ae66891c9fc3709199ff724c1af3","tests/fixtures/invalid/float/us-before-point.stderr":"844c0d11f60522784f6f22f7f3d418c7e6f16cd96cafa55f542996974fd267c0","tests/fixtures/invalid/inline-table/bad-key-syntax.stderr":"9fe839d2c861b2026ffcbb37a7aaca3498df90f66da6d402d5ab96ff357de453","tests/fixtures/invalid/inline-table/double-comma.stderr":"67e92c9f776a5bd04f908a79c6f2e8c146ebb6072129ab7fbd9606ed8d56fc44","tests/fixtures/invalid/inline-table/duplicate-key-1.stderr":"3eded78c2d76205b8f516e180f8c8849d6ba34f04df72c5ffac319264d16f40f","tests/fixtures/invalid/inline-table/duplicate-key-2.stderr":"a166a188a3682704cf70153666734fe63ccc23075265d0d20ebfa25ba7a633fc","tests/fixtures/invalid/inline-table/duplicate-key-3.stderr":"3e4cad3fdeda14976a0e6193465ac7b0c052a075b55a4dabb95ec2a03d7ef532","tests/fixtures/invalid/inline-table/duplicate-key-4.stderr":"2ffe3212ff7d4dbdd7f41f0c0d037599d223c1876af8c9fa25770431abd7c6f7","tests/fixtures/invalid/inline-table/empty-1.stderr":"ee1624b0ebfc28edb9af042a4926d6b5b62fe7b6265544b158b577bfab1f0866","tests/fixtures/invalid/inline-table/empty-2.stderr":"70c376a4f2368d3586184e70110115525f35cfef2fd15bd2c0a9579a88868cd2","tests/fixtures/invalid/inline-table/empty-3.stderr":"fb05dcafd2b5e290ea8de8d0b8d9ad0fc58452d75c537e8482a2fa7fb714126c","tests/fixtures/invalid/inline-table/linebreak-1.stderr":"016daca1cf56861089265156af1ef41772ed0c5fad6848cbf8c8c91ddf748ade","tests/fixtures/invalid/inline-table/linebreak-2.stderr":"b259282b6bc1a9f9c96de41d2c5b0f27b9d8648ec8984aeb6760cc15ff5714d3","tests/fixtures/invalid/inline-table/linebreak-3.stderr":"59b34b9c76c57e02df83c8ce97b1f3e856026cbb33416d7335f287222e11ec35","tests/fixtures/invalid/inline-table/linebreak-4.stderr":"8a78e7240345fc8b850cd54d3f1c74187e4abcbc65b85e3b1da79ebf3e139d70","tests/fixtures/invalid/inline-table/no-close-1.stderr":"6da0e9a2d2d272d199745c704aea6bf317921d8ab005882a3de793e6ff87e863","tests/fixtures/invalid/inline-table/no-close-2.stderr":"eef11b2fc399ca9b7a397c5366a9b7a9021e783cb189d68fd5c29cc607a5f4ab","tests/fixtures/invalid/inline-table/no-comma-1.stderr":"d2a33a967d517c9690b90845347d26d8845c997ba4ed61c640a58cdf919d7c7c","tests/fixtures/invalid/inline-table/no-comma-2.stderr":"c4452ed96f19979b36019c568fd8c73e72db2711a87d17cc8f62362b88598b30","tests/fixtures/invalid/inline-table/overwrite-01.stderr":"4e47f343291068cb0164fa2d48be2c3257458ee7467cd60d664bfbb83713f2f9","tests/fixtures/invalid/inline-table/overwrite-02.stderr":"40718dec554fde10db86ab240f5071b35ba564503962938f7b9464341e7b27f1","tests/fixtures/invalid/inline-table/overwrite-03.stderr":"0318c1d4713cea361a857d382bc8b150dbb1ba8f8e613df472e936bab38485a9","tests/fixtures/invalid/inline-table/overwrite-04.stderr":"9e55cced7664c821c073937321880bf75150affa44d4363c774f5834bbac7470","tests/fixtures/invalid/inline-table/overwrite-05.stderr":"59a0ef41c6059994212244c16a8808b4ac721c710f1364639f7116d43a7a8b26","tests/fixtures/invalid/inline-table/overwrite-06.stderr":"c2a6060831445d4143254c6908468bb04cb5be501161028429467a2dbb68e235","tests/fixtures/invalid/inline-table/overwrite-07.stderr":"cbe9f4d1b428e658591e077790986a6589385474efd2ae9f488b6003715198ca","tests/fixtures/invalid/inline-table/overwrite-08.stderr":"d85341eff5c078131c65c801a259d0909921c541ea5a8eb75e752e5d174092f4","tests/fixtures/invalid/inline-table/overwrite-09.stderr":"99c73b045436b330b4f6570bc1a40726dec71a524e44f6b63a8c55ceec4e5f4a","tests/fixtures/invalid/inline-table/overwrite-10.stderr":"746d1cfde95d2c5fd748e4b95fb95383e014a00f73c03625f7ebefa52243e815","tests/fixtures/invalid/inline-table/trailing-comma.stderr":"079ea824e27cae66b32160b99d6fd75b38514960c440ef14274528fabacc98d3","tests/fixtures/invalid/integer/capital-bin.stderr":"9224535b369db24906be0bbbac4ffa80d1b570db8135ce7f58202956cf889857","tests/fixtures/invalid/integer/capital-hex.stderr":"ee731f89283c425e7c54cabd439651cc4926c1d721ee92ec809b123521ff7c91","tests/fixtures/invalid/integer/capital-oct.stderr":"52005625e8e51afa09a5163c9eaa010e09830727128d68a1e48fa600be6823e5","tests/fixtures/invalid/integer/double-sign-nex.stderr":"819ab532a90faab548580eb0a959199466acfcd04d29d77cd0af7acba509cb1c","tests/fixtures/invalid/integer/double-sign-plus.stderr":"94f6b7c5dbe458ebb1504b7672a36c9d115e17b0e629dcfe47360803c9cfa923","tests/fixtures/invalid/integer/double-us.stderr":"c9a377fc0417b12123e9cdc4b2fe69aade63e532e20e65f279d7b4460ad05e49","tests/fixtures/invalid/integer/incomplete-bin.stderr":"143b9a89feb99b5a420bdc6aeff919ebf6d53bc011f31afbee5b8677a8ac84bd","tests/fixtures/invalid/integer/incomplete-hex.stderr":"b246cd8117362f5451c60298a318d6f93233bf9959c73cdd7a6d590d226291c2","tests/fixtures/invalid/integer/incomplete-oct.stderr":"4cdbcf8ce0a743a9442321a15c01670109debeed6a9712a95d2cb95a9debc469","tests/fixtures/invalid/integer/integer.stderr":"1afca937abf7f267f8c8e9d2112309d1aa2dc90ee1e2d4328f5a30b19ab70941","tests/fixtures/invalid/integer/invalid-bin.stderr":"e94521b61ae2bee5032073007ddd027945723f8c7faf3b4523ba1f8e9604160e","tests/fixtures/invalid/integer/invalid-hex-1.stderr":"5873555438d114b5d1eb323cdf95a651bef7f95b4c1259d657fdeb993350a2be","tests/fixtures/invalid/integer/invalid-hex-2.stderr":"fac8c488203e501d3ff383313f8a1beebfc5ff5676eb6624ca9a774094105bdb","tests/fixtures/invalid/integer/invalid-hex.stderr":"521096bb5d0c10e420a452adb133eecee4e153809a3c29822e64569e4ecf2779","tests/fixtures/invalid/integer/invalid-oct.stderr":"cf940d8abf0a98dbf4b139089cb964964b30e6fbdf89d9a11bfe94b06bbb3547","tests/fixtures/invalid/integer/leading-us-bin.stderr":"34a6f856274435b07ed74ddcbfd0c471920b418858fc2685eacacf8b814d2222","tests/fixtures/invalid/integer/leading-us-hex.stderr":"a468c4d3ef104f5f575ef61e01a2889bd52112fe00917380d9fe094e7f1f0625","tests/fixtures/invalid/integer/leading-us-oct.stderr":"c6600b9cac7b6a935923b951b24051f2494fdc2d351c0f109f63da546a280315","tests/fixtures/invalid/integer/leading-us.stderr":"4c156a62e39d8404bcaea001ad347aa3366ad956899fb385492203d17da9b34e","tests/fixtures/invalid/integer/leading-zero-1.stderr":"1afca937abf7f267f8c8e9d2112309d1aa2dc90ee1e2d4328f5a30b19ab70941","tests/fixtures/invalid/integer/leading-zero-2.stderr":"4e4ce0d6714fb455def4a586c076072bc8d83b87f3b62122611b6e62df5fe532","tests/fixtures/invalid/integer/leading-zero-3.stderr":"d28a4f3b59454eb4a5756d9878b54c03a154aa3af32a9bc4b746fa8d4c842454","tests/fixtures/invalid/integer/leading-zero-sign-1.stderr":"b84ffda89f4797a517f8488b59ebd795fa42e59be7719b3883b2290c8f1060db","tests/fixtures/invalid/integer/leading-zero-sign-2.stderr":"3484e932794a500ed92322323032f7ca2c95fda1af3586fe3d9d5d0cdcdc41e3","tests/fixtures/invalid/integer/leading-zero-sign-3.stderr":"1f7afe7069d13990918c68a32ba46a9e17a305ced699c94cba72b01eec5aed93","tests/fixtures/invalid/integer/negative-bin.stderr":"b3825a06a49dc04be695629fb45ad33a6882ea73821c3c42db7dc9ebc878b5e8","tests/fixtures/invalid/integer/negative-hex.stderr":"f54b8ecd33db30a04ff9312f4b7a42d06ce8c276062a56bdf3773b10e267036c","tests/fixtures/invalid/integer/negative-oct.stderr":"12a30a960af847a2762336b6b0569d603c84dcb31a694bc93a136fa503c298e6","tests/fixtures/invalid/integer/positive-bin.stderr":"f4f91449d9863cfb107f4f174e12e64b01e676c36bab77a431078c9a0fda6e94","tests/fixtures/invalid/integer/positive-hex.stderr":"1ea707ef22ca30bd0ce9becdd4c6c3f04a65a79c153ec38875b4a8626c62dbf2","tests/fixtures/invalid/integer/positive-oct.stderr":"f033b6c19e3f1f04c69baa8ebc4156ac913be0428e85fd474a99d57298c23e75","tests/fixtures/invalid/integer/text-after-integer.stderr":"581885f158d84ac387b8bfb483d4bb0593e23bbf251a63a542ec81630ffd0bd5","tests/fixtures/invalid/integer/trailing-us-bin.stderr":"7e5928cd15695fa35403a024856f64cbbf7a056e8079f76d1923e38401086e41","tests/fixtures/invalid/integer/trailing-us-hex.stderr":"83d3672baed59c1b0ca8b27400b469cd18d2c0790ececd9d5dd72e283ceb4584","tests/fixtures/invalid/integer/trailing-us-oct.stderr":"e048d0b7900704573a076501b5fa48289dbaec4ebb279f10775ab0b8c5060dd6","tests/fixtures/invalid/integer/trailing-us.stderr":"9e46f25d350e02fa57100d87917d9e6a961907df89955c01bbd2bb473f807297","tests/fixtures/invalid/integer/us-after-bin.stderr":"e833ae217e60edfe08f5c76fbbd8ec2bf6de9b41b16905e474791f1b5bc4695f","tests/fixtures/invalid/integer/us-after-hex.stderr":"d5cd357750289db24ddba5d8278eef6073f591a05bb495096e8f6214626187e7","tests/fixtures/invalid/integer/us-after-oct.stderr":"7254481b53b8602413ede570876963fb6ea9c2699adb986ee17023cabf5916fb","tests/fixtures/invalid/key/after-array.stderr":"8489fa15adf8e674687aef4a8ef8acc10235ada0e7a3b2fa17aaeae9f9e02189","tests/fixtures/invalid/key/after-table.stderr":"d1856cc75dc16c95c045ae4c05982448e3c2680057cc1e08c09ebe68ffbb35c8","tests/fixtures/invalid/key/after-value.stderr":"00398c3f1305f387b9ff9f17dcc76061350a800e652e00ff2f3892993c42ea33","tests/fixtures/invalid/key/bare-invalid-character.stderr":"19220d575145a93b522e39f59ee63fe0418194fa2b80d9649916d4b8df556147","tests/fixtures/invalid/key/dotted-redefine-table-1.stderr":"169e40f3d1be87cf099a9e7c6e39175ec0fd701c933b427cefc300d2e854aa07","tests/fixtures/invalid/key/dotted-redefine-table-2.stderr":"72d632c3572aa914603d154152e10157d4db3d90db0da0eca88baf1416b3e29f","tests/fixtures/invalid/key/duplicate-keys-1.stderr":"f4207dea6f110318da0c9c71b3957c8182b133bda91911804a98bac71c025cc2","tests/fixtures/invalid/key/duplicate-keys-2.stderr":"a5e1fb5b90daf5b7e659ed76c82dd0ff6cf2a09e3578c98bdf907bc7801614ce","tests/fixtures/invalid/key/duplicate-keys-3.stderr":"c8d91fe50b91ad091430b9699aea28a42b7822373c43fa064900721df066d45c","tests/fixtures/invalid/key/duplicate-keys-4.stderr":"ad171657bb84292443753bdf9f2963cb268a45dee78ca4f39dd474b6698fb020","tests/fixtures/invalid/key/empty.stderr":"0da32834de6e29b7254260b51b5b26f1537111088f2dfcc7085cf717aa9c7b42","tests/fixtures/invalid/key/end-in-escape.stderr":"f8710ef2b803f053d1c2f85204f7d9beadc485c4a5525d1c17d8c8cc228c0eca","tests/fixtures/invalid/key/escape.stderr":"11c5f871342cd20a90270eb3cc47c06fb186e7493d27026f5936e78c0bd088b5","tests/fixtures/invalid/key/hash.stderr":"55122578bd7c090a641a0aaf980aebe3fd2c1fcf820da4d72408bfce527a5293","tests/fixtures/invalid/key/newline-1.stderr":"32c0795720a45125ff56a3e0a20ce62c2a2174fc02f44f2dd6620db15bc56547","tests/fixtures/invalid/key/newline-2.stderr":"f2d74552b3489eb7f89ec8f4cfb5084ac21ad338ef2a0d320a57c0eca30fe5bb","tests/fixtures/invalid/key/newline-3.stderr":"672d411c92fcfdb495b41a15e6cebf0e73d4484e6a0902772b9937f5ebf35c61","tests/fixtures/invalid/key/newline-4.stderr":"aa2b599e10e8a20bec1d1fe112ec90ccb5bed8d42e43dba8ccf0d5c18d4b131c","tests/fixtures/invalid/key/newline-5.stderr":"961866b075ab56f652c9661e900070b729ce5db2f57210e95f9c3955f5ba4b41","tests/fixtures/invalid/key/no-eol.stderr":"e8f14df57190fc8a0f4e704a38c42126aef0663f9315f84d23c371f0860a5a73","tests/fixtures/invalid/key/open-bracket.stderr":"330a1a96948b442437bd81f461e91e0b328e225abd304832b7d1660eebc77c5b","tests/fixtures/invalid/key/partial-quoted.stderr":"29dd53ef16e939b137da2c7d62c24aa2481bd44359a02578b77597296b25efc8","tests/fixtures/invalid/key/quoted-unclosed-1.stderr":"6b566ea67dd061ec05c6754bebdb583d93934412cdc6176bbd68d3bd403cca7a","tests/fixtures/invalid/key/quoted-unclosed-2.stderr":"396c4f9bd1ff398b439ae54b23452007e1e7518b38232b89b0f5b1b448e764cb","tests/fixtures/invalid/key/single-open-bracket.stderr":"52d8e13b39b9507ef37a65c0eb779e89ff7d00fd4a70245d44225a35200a6ae7","tests/fixtures/invalid/key/space.stderr":"9f3d6ed39f1a05ac99bedceb66c53835090182b47293bdfa0c080ac80285bbb0","tests/fixtures/invalid/key/special-character.stderr":"68aa496dfd623d18af16fac5b1fbf5f74365fe0c05feb3e5d34bcbe47fb1472e","tests/fixtures/invalid/key/start-bracket.stderr":"93a0e8ada8447d60ae738b4c0816d9087a84932dad2651505327ff37d3b12c86","tests/fixtures/invalid/key/start-dot.stderr":"25b23ad9a454746edcffc91b79eee11bdc9d9daf67640aa8d28594a98da3ddc1","tests/fixtures/invalid/key/two-equals-1.stderr":"f5398f176b3b1a3fac4cc7d68d1e595e2f1b60f92ebdd4f3f9bbe5d7191eef3e","tests/fixtures/invalid/key/two-equals-2.stderr":"099b5d50827299b921c3c1c00a2c804d580f67d06c2e5593660c6d6ad5900a66","tests/fixtures/invalid/key/two-equals-3.stderr":"b51c719bd0d8f585b4b017937e7d0df2ded58e3a37e2cc17cf9bf04277347a1b","tests/fixtures/invalid/key/without-value-1.stderr":"b1a087f97400f49a9bd6ba8bf44b3afbc3a0db6423d17b95fca5fc5be7a3a775","tests/fixtures/invalid/key/without-value-2.stderr":"cef84c2625e41ab3fda621f35d5e936a8d43bd292f3856f80cd2a148efc6d6b7","tests/fixtures/invalid/key/without-value-3.stderr":"295097c33c87dd153e607b3aaf648168678e6773e28ed0148d0b2e5144c1c0e7","tests/fixtures/invalid/key/without-value-4.stderr":"65173e2596ae1ac268c1f5a66fcb2e83be5663425aecf3fb3a99091b6fd40ea3","tests/fixtures/invalid/key/without-value-5.stderr":"9279c3cddcea9568abe57303cb5de41d8d1c71ac4ec991e1fd28651776314b57","tests/fixtures/invalid/key/without-value-6.stderr":"dfd20b35750e3a3cf1da7e8e1f20043235c0349cfd118bb12cf1a42165cc7ec5","tests/fixtures/invalid/key/without-value-7.stderr":"d0183883abf80ce86271bb0b8704637f93830cccb4c853f7834d132c9f153d4e","tests/fixtures/invalid/local-date/feb-29.stderr":"4c97e157ddaf9940d438560f34642ec4903609417905c02456ae386ade5573bc","tests/fixtures/invalid/local-date/feb-30.stderr":"1710668c24dd3aa9fde6e0f782eb880af872e4bb5a5186b281c8e6ed40e86dca","tests/fixtures/invalid/local-date/mday-over.stderr":"546af4611d7a589f4907bb085b74a5d74aab7505b613c448d8075aa9f14633d5","tests/fixtures/invalid/local-date/mday-under.stderr":"102c21e5b546a4a069c576d7ccc5a1bc259522e951fd7487e7ceb26f982bcc43","tests/fixtures/invalid/local-date/month-over.stderr":"4cac731d0f95392744498706c91b4940a30254d3910856da666bcdf1610c80fe","tests/fixtures/invalid/local-date/month-under.stderr":"df4ca9f526a23709fe9feb51b71b5ae3efac806a3fb337a40b626a27104b4124","tests/fixtures/invalid/local-date/no-leads-with-milli.stderr":"67e6de0c6025e5f498e0d5e0c7bdd2cd74a01cefe0a3992ad935b7b7f260fe93","tests/fixtures/invalid/local-date/no-leads.stderr":"d653403d2686bf1e56c21a120b7a6fdfd6e0f5bd231b14789259c23028e16dec","tests/fixtures/invalid/local-date/trailing-t.stderr":"9cf2e418427abe378484486356229b38f1db53842090a2d7d0637cad1a6b16c5","tests/fixtures/invalid/local-date/y10k.stderr":"ff9286e64bf70a2e35bed170d191349f0045fc8d6f184a183cbea693496e99e8","tests/fixtures/invalid/local-datetime/feb-29.stderr":"3fbdaad131492c5e7c85df1e90f73977a2f1236422b5fe86847fa000dbee7e5b","tests/fixtures/invalid/local-datetime/feb-30.stderr":"32e38bb349f6cde4e60534764f5839240313caeee12ddf4d97d4df404a6f3b01","tests/fixtures/invalid/local-datetime/hour-over.stderr":"0aefa752706aca82810109a94b9a5bbb8f50ebc4aa85bfb091466618c714c1f3","tests/fixtures/invalid/local-datetime/mday-over.stderr":"5873d8c67de9fd55e424aadcdb68d42842ccdee9f2e2e94e0bc42caea6635645","tests/fixtures/invalid/local-datetime/mday-under.stderr":"a1df2d77cf02f3cfe2a44daa946978aeff84db9ee033e61358e2610ef8acd3d3","tests/fixtures/invalid/local-datetime/minute-over.stderr":"1717bf680a89f59a66d5dae8dc98a17757b8973f70f869744ce6b496fa2c7c9d","tests/fixtures/invalid/local-datetime/month-over.stderr":"ffc05504137e79700f4c78955470e975bee840580cf10229202903a498e09858","tests/fixtures/invalid/local-datetime/month-under.stderr":"8e77bd4dad24e1d7e5c017702410cea56a085585e7d97425c55761b0246efde8","tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr":"88a35c260a65588d5ca0246c0f27f5e5e6fe8836777e5998c9f3c4bacca1c8f2","tests/fixtures/invalid/local-datetime/no-leads.stderr":"40795bab32c16aa63e609add7f809c7c22d2764d98700b3eb91c20e6eea156e8","tests/fixtures/invalid/local-datetime/no-secs.stderr":"f946633b31380b72df35d6a0e371f4eebca26332abac1c3d2841918461df30cd","tests/fixtures/invalid/local-datetime/no-t.stderr":"802e0bcf8a66b32fe9f2d0571808782bd37a6f1ff8c5e92368b5ad4c18d2218a","tests/fixtures/invalid/local-datetime/second-over.stderr":"7494350b21ac24f7f30c95f568412d7214a66dd9b04fbf454647f0972588a7fc","tests/fixtures/invalid/local-datetime/time-no-leads.stderr":"5117ac62dd754a203f2fd6e5163a2ce352776bee513219252cec77c0ed71bbbb","tests/fixtures/invalid/local-datetime/y10k.stderr":"66cdcfa2f4dbd5270936e531a1f3a9ac54a70dec246f3ef93b180911c201db1d","tests/fixtures/invalid/local-time/hour-over.stderr":"0f0507c0f3888330f1346e6a4c100c4bcbbc6549599cd39249fb59c7923b1801","tests/fixtures/invalid/local-time/minute-over.stderr":"052a762b6f62e21d59d145da3d242489990f99023681a4a645022af743a836be","tests/fixtures/invalid/local-time/no-secs.stderr":"db11e76aebb5c91f57869f1dd14ff7b0ab19b400eeb8b15936d0d82e4a8d0fe0","tests/fixtures/invalid/local-time/second-over.stderr":"18402b0e6cf205f466e3ec3d409daeeb77e355d41548f11bd3e3369240a282d8","tests/fixtures/invalid/local-time/time-no-leads-2.stderr":"2e446fcabdeeba0c118d1d49b89d7ad1271dd9eaf1ba109ee445c4f68ee96214","tests/fixtures/invalid/local-time/time-no-leads.stderr":"70094ae81f89871b0804839a5cea0f7591ab55b6c72c5d2867004cd4a0e0d86f","tests/fixtures/invalid/spec/inline-table-2-0.stderr":"41118ecf5033fdb7de4edaf1abf90e524bb50f8f3c44ef0a080be4ba1470b82d","tests/fixtures/invalid/spec/inline-table-3-0.stderr":"b7ea14eb8c6ba2cb126dc3947d00ce10a5403103a682e719ff51efebae6bb613","tests/fixtures/invalid/spec/key-value-pair-1.stderr":"d8b4149dc0ede93fe7c0d7d02a0df9d31fb2456b87ebeb532623bd6f825c2d23","tests/fixtures/invalid/spec/keys-2.stderr":"de2e84dc37ec53bc12ca585a9d2586404a920375bc201d7b2643fdcd537da691","tests/fixtures/invalid/spec/string-4-0.stderr":"c6dc77f81979a92cb5612b7f4b8e96d41bad9bf7a9a706bff5a05a6c65f76e86","tests/fixtures/invalid/spec/string-7-0.stderr":"3226561489c03d8fc983b0584d40f18629f46a425c5c7f34a4e984e164a4eb38","tests/fixtures/invalid/spec/table-9-0.stderr":"23b1d3b522e9fac974c4ea254df4798adf574be6dfc8ef1107438c502b3aca4e","tests/fixtures/invalid/spec/table-9-1.stderr":"f0164ed288eedfed3a6fecabf305a93050a6c3cc6a9397894633e4ac33b2c834","tests/fixtures/invalid/string/bad-byte-escape.stderr":"5807e3215b0def7410283291aeeb46514fa0a65d4326bff3669585e0222d5b2c","tests/fixtures/invalid/string/bad-concat.stderr":"176458d0d31d02a16e9856a80b1b9c4dc040b3ee3c83c8a678df9b1bd12c1e4b","tests/fixtures/invalid/string/bad-escape-1.stderr":"388e58e25fd5fc78b2465f1258c952f4850211b19e9fb65cc31a29774a19aabd","tests/fixtures/invalid/string/bad-escape-2.stderr":"51829779b7317fe753c54b53eb08fba669b16fc970fc29699a0a497aa95dc623","tests/fixtures/invalid/string/bad-escape-3.stderr":"8e5050c043061a991f6cf84be6b6e6ce468a35dd2ac50a3a4ce2ca1e1d5304e1","tests/fixtures/invalid/string/bad-hex-esc-1.stderr":"68446cc8fe418df4441e15118161a953cbeb22822d67c54b81c8f97aa48005f3","tests/fixtures/invalid/string/bad-hex-esc-2.stderr":"d7d979d0c5700548eae7a42c7e87253de0118b67a67ef6dbeb0598d574800099","tests/fixtures/invalid/string/bad-hex-esc-3.stderr":"fee92d2f9937e322423201b3099c7a246fabae85ccc23e990b602e1f5e181d9f","tests/fixtures/invalid/string/bad-hex-esc-4.stderr":"2c6f994aebcd9e644f469c84edb9d8ba6b6b094a949410935a590e8e6e6122ef","tests/fixtures/invalid/string/bad-hex-esc-5.stderr":"10f740ce3c36f4a8f7a1f8ab5c84e0fa5e4c3a88ebe534f79858781079139a96","tests/fixtures/invalid/string/bad-multiline.stderr":"a1ecdec206e87461bb4bb27ecd21a43da48d1d5bef6d8d746958d45219ce9dfd","tests/fixtures/invalid/string/bad-slash-escape.stderr":"7f3b917db5a8d87484f8b03680a2cd60288e549c5bca0c9e00c7e531d3e0405c","tests/fixtures/invalid/string/bad-uni-esc-1.stderr":"385be83541cc94367c9849619740c8d198b9c138f6f4916685cead90fabc3b9b","tests/fixtures/invalid/string/bad-uni-esc-2.stderr":"592fd536f48c1aa6c4c9b454c5cf5e1a7473860602ff2875430d4a7e676b6594","tests/fixtures/invalid/string/bad-uni-esc-3.stderr":"f6c284685af63ac02fee8e8ee641b03e90893a03001834625ca22482cae4d29a","tests/fixtures/invalid/string/bad-uni-esc-4.stderr":"1df7029bc305307943cc58417f98cca4c854deba8475b305675b2505d4d9b83f","tests/fixtures/invalid/string/bad-uni-esc-5.stderr":"6cfc8fee06b9770271b1241ba6025a470b1ca8cbb80a3dce7d6ee1b2c2f7f637","tests/fixtures/invalid/string/bad-uni-esc-6.stderr":"73d8f5132741c15286327111496d475807dcb638b34c10db20bb37d96910c209","tests/fixtures/invalid/string/bad-uni-esc-7.stderr":"c9c967322b827675040ad78cf4fa1c9890bb13a124a2274eb693622d5ec50420","tests/fixtures/invalid/string/basic-byte-escapes.stderr":"50d06255616038364b52a0a32113d96e8b87de8e5ffcef93c2c88d0af9b57670","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr":"b26e80921025c1fb0dfe33c01460e5ac96791585ab8204db3e76c83ccd404afb","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr":"c9f8c422be49fb11111623c4322c421b25bb9592fade95bc1cc2ed9c3c2bd93d","tests/fixtures/invalid/string/basic-multiline-quotes.stderr":"70de515fa0500fe6ba3b915d224653824ae4e213cf41d9b3465b536a0007c623","tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr":"2c104ecdfe88a89893d167ad41167108208d3aeb0c22c7d5193950ac2805af60","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr":"82b7d85f48c58289c81d149814c591195f361e23875dc2a9767215bf077a148c","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr":"9b28ddf18556e9adaf77319877189112aa8ac93464ecc09a8c5020c3c13b143a","tests/fixtures/invalid/string/basic-unknown-escape.stderr":"81ebb5efff40faa0b5161e4d92faac81aaf85c038987ca3d0ce7ff28f91f3cd5","tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr":"6776f505f0a2a6a67e3e5fbfa6ca0b9ca2653a1a623d1fb3b463305ec872699f","tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr":"e304eb9ed3f7a136c74a1c70fe73f5f75a169ea93aba2789e6441f84fbcfb03c","tests/fixtures/invalid/string/missing-quotes.stderr":"ae9dea4e735224472bfcdb61471def4877404a0a3680e41340b0495552ea8133","tests/fixtures/invalid/string/multiline-bad-escape-1.stderr":"7c5fc3bf00f17344781150281839f78228905d85e41895f4c6d5fb67c7ef0a2c","tests/fixtures/invalid/string/multiline-bad-escape-2.stderr":"c4f5464eced80eb93368ee62ec14c6c4c8160ec7e33000b5d7840f748306b2ea","tests/fixtures/invalid/string/multiline-bad-escape-3.stderr":"ad14d3d916a15353394638613d6d79da2e004e7e522c48edbd2ff45edbcb2685","tests/fixtures/invalid/string/multiline-bad-escape-4.stderr":"e0b254f4a49cde181f4d8d94e032299e1506a09e8bc5bd54590a04251d5978ab","tests/fixtures/invalid/string/multiline-escape-space-1.stderr":"addc40c648a77da6e8ee3d63e73e58331bc5f8cff6d4ba67bfe679db464de835","tests/fixtures/invalid/string/multiline-escape-space-2.stderr":"8e9cc938972808cdeb4e8d2f180e1ff856000eb52f3e77ed5149658c15296d75","tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr":"5e57a18bec64d8ca2fd53473aff6f1cdc8e5c35209ecf84a9e9da8ef3865fcfb","tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr":"40a6c9ece9e2b03c137283b825b6c0380e5778e1c76d20ed2f46647e3ea6b25d","tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr":"cfefa000b457e225de66a0618b2d245c0887099cda67c6ced68612df58a50c49","tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr":"12629cc0445ac282832bebf35e0bb2eb1e305a4a4c147f4103773501d56d3bae","tests/fixtures/invalid/string/multiline-no-close-1.stderr":"40f5d85746b8d297b1cc27bfcb95b8bd2a2a471f0b820bca0b3437c4ff6fecc2","tests/fixtures/invalid/string/multiline-no-close-2.stderr":"3c121acbcad1ef6821da5452f0e9223f75915be50ab11d69efa498cd2c9685a4","tests/fixtures/invalid/string/multiline-no-close-3.stderr":"9850d68e589fb8ebe7b1cbf9f27e4ac991d27b939a5be577df02aa9dae58207d","tests/fixtures/invalid/string/multiline-no-close-4.stderr":"dd0703ac4d584850805bb5a7afdb1e68db06fef1dbe2a93ba85b01ec76da6b9a","tests/fixtures/invalid/string/multiline-no-close-5.stderr":"c6874fe259394f8a14636182b4fb0f20009d678853fbf4f5c7e0e0d53fe0b789","tests/fixtures/invalid/string/multiline-quotes-1.stderr":"4d524fc6b34800ef6093894044763f1eba2b4fffc110b2558ad4f76249985651","tests/fixtures/invalid/string/no-close-1.stderr":"ee585c98fe640bd5a6edb8c5930358b1a7c9085d07e7fb318bc094e81dc6e1a5","tests/fixtures/invalid/string/no-close-2.stderr":"2284df23ebcab2f4a535e31726035f5cdda9d56190269a8189bd959fb806c636","tests/fixtures/invalid/string/no-close-3.stderr":"30cb3d9d517219b70c7d468207f0f4567d80b00330a943f482803980d8f65998","tests/fixtures/invalid/string/no-close-4.stderr":"4ff50513bc0249a3e503db5f255c1251bfdcdb764a6541d484f7e09bf4efbcab","tests/fixtures/invalid/string/string.stderr":"68446cc8fe418df4441e15118161a953cbeb22822d67c54b81c8f97aa48005f3","tests/fixtures/invalid/string/text-after-string.stderr":"a20980f6482cb204272c705c89ee6cc0987b44c5fb357466f05fe442754c1cc7","tests/fixtures/invalid/string/wrong-close.stderr":"6b376b179dd7022bea271e63e77f0afc15076cd4ad0c81bae6007fdc430072a4","tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr":"76b544968f3a5771cd2f5efad26167ab5bdcbd8b067586ec0e602281ae5869dd","tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr":"1379eea8bb3f62ddc212705a525cad262da23f16b03bd0626650c61c6811a680","tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr":"7b0ce2aee2d44c234a14bab3fb339661f00b3e3bd39784f3ae7058f3a48fbdc7","tests/fixtures/invalid/table/array-empty.stderr":"e3cd186fd3a22b55fb7e18c6247f91c8da4b61396bde01ab970847aba933b80d","tests/fixtures/invalid/table/array-implicit.stderr":"dcff7e1489ff2a416a5945891c7007152ebbb8cd028baff4439ad2167a1f5976","tests/fixtures/invalid/table/array-no-close-1.stderr":"a816d34d85c8a0ced8cb9315723ea1483711a6f19f6e2e2c96a409d7d43c6fe0","tests/fixtures/invalid/table/array-no-close-2.stderr":"b07a23ed41ea508abc35fcaaad1b38d30705ad874e62ecfb6affbffb39ff4487","tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr":"abfbf76b0555af439f38404ff1f4b2736a759f1bfca347f5eeb8a3754312e835","tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr":"a55218213d972554ab52867926d6c108a308c009b8be13e05578cba1a8638f67","tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr":"ebabea3cc176fc9f85083f697fd9d6ef97d7230e369be4c504e78c00a82672de","tests/fixtures/invalid/table/duplicate-key-table.stderr":"58598e44d8ab8e8fcaa0f9ddbe2415013ade6965db761d99162312cde1e56fd8","tests/fixtures/invalid/table/duplicate-table-array.stderr":"4079ad8885e7fdd2a0674c31767efb16350ac5906ea5f71f980e06b804a515ba","tests/fixtures/invalid/table/duplicate-table-array2.stderr":"9b647eef2e77b8538ea32d0533b80c870fa4173f0a5b151399c84d7edde3f31a","tests/fixtures/invalid/table/duplicate.stderr":"f537ae526887a2288b943ec1b2d3ee31bf0c9193feaa27bb9e8c447e104ece6d","tests/fixtures/invalid/table/empty-implicit-table.stderr":"b331fd776de53639f8b6f9740f0922ca97aa3919ea365904829dbd61e39a58d4","tests/fixtures/invalid/table/empty.stderr":"bc6c1109c2dea2c69becd952c68f7ced16d983051a9a0b32af1868349e4f2f40","tests/fixtures/invalid/table/equals-sign.stderr":"93ab20fbe68fd87648a4ee58d8af26ea7224818f605fa4cdb2ec5aaad652d050","tests/fixtures/invalid/table/llbrace.stderr":"90b78fd64904ea772687d8fea6df07b684a6d278a47aab242eeace8547921a18","tests/fixtures/invalid/table/nested-brackets-close.stderr":"85435c519a813544af5e686cd89f0a7c2944ab30806ee6fc3632266a03801a51","tests/fixtures/invalid/table/nested-brackets-open.stderr":"2bbca8c47edf49cb4541d869ec198beb5167bd9ea1e40d7daa461f03c5554293","tests/fixtures/invalid/table/no-close-1.stderr":"6e1bbe0ba02c31cd687a9dc8fe0fde2ce1c0cda31aec651dff58f41d8aa7d62a","tests/fixtures/invalid/table/no-close-2.stderr":"6e50b27f819a6769accee8b45850a2181932a8809fcdaf347c6d129ae6da307c","tests/fixtures/invalid/table/no-close-3.stderr":"68ce4165d0133af527af7c56fd1af4e652af27cc221f1051a8073e7192a78a20","tests/fixtures/invalid/table/no-close-4.stderr":"52d8e13b39b9507ef37a65c0eb779e89ff7d00fd4a70245d44225a35200a6ae7","tests/fixtures/invalid/table/no-close-5.stderr":"7c3f3c078dbeffcf3b55d3ba811d89fbdd19c1d2ae62b290224003ad26863a00","tests/fixtures/invalid/table/overwrite-array-in-parent.stderr":"f4f94892b9268181ad4e5d64337ec3bd11d0b1a49add7a7c52a0a949f511e79e","tests/fixtures/invalid/table/overwrite-bool-with-array.stderr":"1773dc739ded58c66dadc101668fde5877ba018268dc3b124a4b788b0a0f1c68","tests/fixtures/invalid/table/overwrite-with-deep-table.stderr":"7e1c743c45e4919cab3d36cff96a2165f15cd749411d8c9e758c7ccb7d972893","tests/fixtures/invalid/table/redefine-1.stderr":"a8795ab0ce678bea6299751633e08747b862a46c8f4546094cd1e5f643715202","tests/fixtures/invalid/table/redefine-2.stderr":"dbd674695c75ab83513cf0207304e7ec84565d6dac607e8da85eb9cf41475806","tests/fixtures/invalid/table/redefine-3.stderr":"e161dd3883e7d38e558d296898b637a09ff287cf35a8d921577693fd3c7a2770","tests/fixtures/invalid/table/rrbrace.stderr":"412d28cdee519340465a0e764529acffd5947f566d8b87d69a1a9890845e3747","tests/fixtures/invalid/table/super-twice.stderr":"c9d37817b5e5afd36a2ef3f12190ccf512217e5fdbb78d075d873ca2d2a90f98","tests/fixtures/invalid/table/text-after-table.stderr":"accc6467f519ab738eaa646c255d527ae47c4958231db59b2a9ef16549dc2fbe","tests/fixtures/invalid/table/whitespace.stderr":"73d125e308a219ce5aba0d45ea17b6247eda746e76740f640066b891092efd16","tests/fixtures/invalid/table/with-pound.stderr":"eb3fd32c944de502852f2e7b453f3f56849e7fbdbe9060863f9d65e308bd7f2d","tests/invalid.rs":"a8ca04aa4970cd310aaa01b97a55f78f84e6ccc0cae0974bb5e3b78056f5f437","tests/testsuite/convert.rs":"bb224d372b98c2c746c0ed127dd4c0289b1486b070b5d126939a412add34b461","tests/testsuite/datetime.rs":"62354b8e44466ecb63e0b64ab5e70212075cc42bc5ddf00d513004968f01c15e","tests/testsuite/edit.rs":"ea917588c1e2a331864f59340d4c385fc20156d551ead34438908d76522ed434","tests/testsuite/float.rs":"91b0be9a56c5b0ce7e54f7eda3ec72efbb33f855ebd49da660483bba3935586a","tests/testsuite/invalid.rs":"b2998cd7a30c8dc96f614e938edc9a7bf2eccf5662706994241294220319319a","tests/testsuite/main.rs":"c85d415a8c20f47f383c051fe7cfe3324947844bee922d6135cabdf63ada8403","tests/testsuite/parse.rs":"e3c19bc40167768cd50613ffef316c1ea31bdba3d9f52e997a0a84cc67d2ec19","tests/testsuite/stackoverflow.rs":"74df28497f99d467cb710eb5b3c48e77360747c7c21242e6a82c55389f0d92e1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f474e15b5e45cb030701e8bb2ee732bd71ed8afe82dfb90f21a51a2a2eb5a4bb","Android.bp":"cbbf49d65b7d5ac5998800f3b995be86cdc1769925411c8015c9dcb322e12a39","Cargo.lock":"f4d23b06ae3b1896c4dda9e6a8cf5d91ac7fd39c6bbbb011de5cd512a7f7aaf9","Cargo.toml":"da166bdd7496436389b616aa50eeb9ab89f53cf2da7c97a7c5d252ca3af06ef3","LICENSE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","LICENSE-APACHE":"e4493d0badd82c469fd611cf0c31ea8a74cce85c52c4a4c2579e344226f0602e","METADATA":"f796074e5e74904daaf2e8f75853978569d6982f9e67ce81d760747f81553e5c","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f45dac46b26743d4f8fe1358b5c4707f782eb6e487f8a9b8443ef774e9483b78","cargo_embargo.json":"dc0baab3fcf5f037419b0787ea0f87a137644bf2e150cebb91321d65cfac61e0","examples/visit.rs":"97b91b3931ea8a2096cfb5982ff97c6a3b71698c72698f73293bbfbaaece0e12","src/array.rs":"3782a701436c40e4babeaaf40602f6df8ef511294a98522400a1c57ee963d8f8","src/array_of_tables.rs":"ca1b69a942378075e7f5ab0ae09d27bcdb7e78c2c0bb0bbf07e7d5f837338078","src/de/array.rs":"3bed5da8060696518c5e2a3800c221ecdfe3e392350967caa2ee2aab1dd46bed","src/de/datetime.rs":"adcfa9c96a655face16212d4b9be0221723c5916dd4ba0b967c363273c6acf3b","src/de/key.rs":"59cb84b0d3c43fed624d67d3ca01afe042dbe3199d0247f47a6f93097473504e","src/de/mod.rs":"d99680ff57dd8328a782bfd17dbe77cf4d48e132ef59cdb6138e0e90ab5b1ea9","src/de/spanned.rs":"12f7f11ffae52d147dfd6b8e31837d28736cf88d44c93a8071eca736b26414b5","src/de/table.rs":"6993c09ca5885161a51f0802326a8f624b6889342a583bda4e4bada06e59b016","src/de/table_enum.rs":"ad5e7916066904191bd278ed5b7013da7c7d0f50dbf243b9eda5c12129d1e8f5","src/de/value.rs":"019b94c674129abd3348a043c8d7de775fda247debbe185729fff84700067fe1","src/document.rs":"154c96a0a4e80be5ecb9a50725f14d0dec03f59cead324a3e0569ab818e61333","src/encode.rs":"d02199bedb80ce24799db66d214e559fd796d9901bf398ef83b2c5fbf70b1711","src/error.rs":"0d30634003d0ec6c0fc2dca1d1a5cfda178dd9b0caecc162639050b700b3c27d","src/index.rs":"8b5a233305cca7d5c41e5e5cc4fd7be303b44092b55d7167a3fbe595959542a4","src/inline_table.rs":"c26f24ebcb34ffe86388a392147ad28af9c6cbf8e1b2fc504c2b191290f882ed","src/internal_string.rs":"3ccabfff6260df6beba70e9ce29e11e166a06efba0830c657e4d2cd762da6010","src/item.rs":"c43dbc652c4bddeabd9072257652d68f918718a8fc24be94fa988c0fd15c60d4","src/key.rs":"87bb3adaa47e3597fd1e3c37b933ecceec6a61837c3faef6f8109f78b2706119","src/lib.rs":"37bc2c6d236bd543114837a80afc6ffdcacf166e0956bb7a8c0fd35c8fd2f800","src/parser/array.rs":"6745c448bd2468ecc368f51751049fac82752c59d86048a22d8a9ffba00013d7","src/parser/datetime.rs":"ad2078bcc1b9b6c77aebffa1fbcc21401c4a66a95c3ac009a9f2f23aafbee958","src/parser/document.rs":"ea1ada09e7396b61dea578e2f704f1be226c44b7b9b704217ed70bb6fe7cbdce","src/parser/error.rs":"e31e69f00dc9b642713886876573a0e55b438b20a1502481ea9ea26ccb14186a","src/parser/inline_table.rs":"cddd4a09d132be2338aa16ea152c49493301b59554d31d619c9219f0f8beb28f","src/parser/key.rs":"c84b3746cbf7b87f193d28b6b442a0712d6a02274d1c759f7159f8e5102031ef","src/parser/mod.rs":"690f65d437860015d9e757bea1f2eeef15e5f658795623820c67f567a2286d37","src/parser/numbers.rs":"576989e6ad257aeb06463bc800688c39bf585c0cc91b8ae9e0f750a7d3c4e6a4","src/parser/state.rs":"ed8b07352b00f60cd31448adb6b48b7c69828130741928f143ea6fe04af3c938","src/parser/strings.rs":"680878e7170936e1b82d18a289ce13586bffbee0e6d6f4f937c71b996b0ef26d","src/parser/table.rs":"ebe15adb0b447c6590cde2a0726a35450b2bc24cd348b6c1199fdb4cdb434a0d","src/parser/trivia.rs":"b57f101165739ce924e04c47b8878730a12856ccbe3d889413c6cf395244e7f1","src/parser/value.rs":"bc446c4d15af7fff26910d47f60f3caf910af9cf422482e793d2bfdaa4b42d30","src/raw_string.rs":"bdfbe84a498220a6adb015f76609affad0fd352c719a3cb37ff131865b7ab738","src/repr.rs":"ab88409650b979454780d447de8a65aed5c798fd7a4434a5f772d8f83cf9b920","src/ser/array.rs":"ffd5a0e51e324a7defdb345bf625d583cd78f2e45eacd9e4023b638ffb67fd75","src/ser/key.rs":"3f03b4f13c3ec9f7f58d3be1f8ee7dbde9c99dfea143827aca4fffc0d577cd5f","src/ser/map.rs":"d166fc26f6e64bb8ec7076db5cdc50ee77844bc9f1148addbc6cec9da87fafcd","src/ser/mod.rs":"77ed3ed6ac0594e9bed647f00040b009a9802556b33d14824133d508ddfea238","src/ser/pretty.rs":"cee56f209185fd0b78ae4f044f6042bd7e7b7cc8604ca99af8f658d11b88d46c","src/ser/value.rs":"bcbdb731349298b278236fc97ff073a08644d431673be4604de2ba915cedec74","src/table.rs":"52a53f254ef49ac1b05381a3c842f048803b3953efe9970743745dcea664f932","src/value.rs":"b12985099a0542640f73200eaddd073c3024019607c950b00722522497ebae4e","src/visit.rs":"5e7a385a1e659563760e177c5dda97c4b33679df0286c59f43307e7e159c8e04","src/visit_mut.rs":"44b4ceb0e721b7438630ec3a6488619e8380342aee7314ccd1cb2593778a32a3","tests/decoder.rs":"f913f2422aa6924032bc8a6ab77df5954c20ba6c259930af24e83e27cb493f82","tests/decoder_compliance.rs":"74c36d82d52205c3490844ef3df952e294aa92c6e9ee64dff231473072b78b1d","tests/encoder.rs":"32421da7d726611006c2c7198e0da3944ad3b42d7b456a6ebdb894ff90f40280","tests/encoder_compliance.rs":"1d9538ee077af51782213cc3484de5252b8700e242b832735c401fd6343623d6","tests/fixtures/invalid/array/array.stderr":"517c397c7afb8fe855fe9b86a253f620f761b5403fdbb08b219c893f096804c2","tests/fixtures/invalid/array/double-comma-1.stderr":"517c397c7afb8fe855fe9b86a253f620f761b5403fdbb08b219c893f096804c2","tests/fixtures/invalid/array/double-comma-2.stderr":"f8a4c678e4fa5bb4b2dc66064d113bd81beb5e5258046685f967feefa825e8a8","tests/fixtures/invalid/array/extend-defined-aot.stderr":"86cc5eb992fa9add3ad39766d6c6736d30dfd9c464cc516c45dec12bc1c8e8b0","tests/fixtures/invalid/array/extending-table.stderr":"9d666931632f0c02362f102e9edd86916a7de491a83d6dfc68a0c2f87b0794d6","tests/fixtures/invalid/array/missing-separator-1.stderr":"fb21970f88b6f5ede63891c6baf406cfcefea7d48c15c0b4670c71d97c61c3ce","tests/fixtures/invalid/array/missing-separator-2.stderr":"3a807ad6e94c3d70b62696bec39d7a1e558e5771d6c6484a80e89ffde6aa9540","tests/fixtures/invalid/array/no-close-1.stderr":"7c1689bf4779e193a475bc181b622e2dcaa2b02e2c9a052ba953c94d2e48b724","tests/fixtures/invalid/array/no-close-2.stderr":"e3421314255375d50d74e04b527adec9aa1b7cd9a8502120247785a34f0b7368","tests/fixtures/invalid/array/no-close-3.stderr":"ec1d919de5766216b887a34099b2117db7e3e3cfaccd8b295f44268d950df14e","tests/fixtures/invalid/array/no-close-4.stderr":"4372b71512f369cefea355dc044e04483c5f7943028ad5cc0d3514804d3ad18d","tests/fixtures/invalid/array/no-close-5.stderr":"87d9fcd6aae71e0542f70eb8ee2a509f024e66d0b10d03b2f7f697d76b2bb575","tests/fixtures/invalid/array/no-close-6.stderr":"9ae5dc0d71db715990ef8c7e8ded74643c4a451c5abb4c05fe1bd6eae61d20b9","tests/fixtures/invalid/array/no-close-7.stderr":"eae2afb173b6a4d58e65dc94782c1b5079588806396c6b5716fefe911643966a","tests/fixtures/invalid/array/no-close-8.stderr":"feba7ed79aaa5d7b92fca24d09ddfdc1a2198e84a51aa8a4a7578b75e945e002","tests/fixtures/invalid/array/no-close-table-1.stderr":"ff5517cc98a1e0918889defcf594a919f1c52ef508bcc4183114305f2df8cd77","tests/fixtures/invalid/array/no-close-table-2.stderr":"21751532b65a2db6064cee09f15f65d4773c34ed83b7269d09e2ac00e5859278","tests/fixtures/invalid/array/no-comma-1.stderr":"02a1e51cbf040add31472bd7c56723005c89c8b793ef59769cad78d36e4f3139","tests/fixtures/invalid/array/no-comma-2.stderr":"4dc26ed513ceb32d721c4e25a7a1918b9c61bc93d926bbab04975dc1a930fda3","tests/fixtures/invalid/array/no-comma-3.stderr":"f5441aa4804a2ce10fa621304def1c296b4b35bf6e7657a2926d364b9d3d4db9","tests/fixtures/invalid/array/only-comma-1.stderr":"b7d5fe39fb03327a5b55b940f524aa4dbb5548604fbc8786e1e4e502fbf6f16c","tests/fixtures/invalid/array/only-comma-2.stderr":"4a54ddd36885beb51fa70327ecfe81fd6dddc5f1f23ff85a61f30834577b4b2a","tests/fixtures/invalid/array/tables-1.stderr":"2a9ec07bfa4c818d204e8d49c621e13194cffc99c21a75533a8dd3b00ffcfdb2","tests/fixtures/invalid/array/tables-2.stderr":"e04375e46225e12956b22fb717615b6cf33f2064f12a9a6c93074f42adaa5374","tests/fixtures/invalid/array/text-after-array-entries.stderr":"320eb4e7f8ba560da84cac292a9d5de03534f6ca6ff6928e429ae8cd55ec4395","tests/fixtures/invalid/array/text-before-array-separator.stderr":"b37ba17334486b7b16d4b5bde308d2a8c7605429c389e3ec30b02cd975fcf441","tests/fixtures/invalid/array/text-in-array.stderr":"895f20e5d6f2748c16659edbdb4c6e91d84f29e45f8e72d380bb3205f6c9065a","tests/fixtures/invalid/bool/almost-false-with-extra.stderr":"9c06a48312aa0138684e37b8d4193e46ff1badf6ee3d2424d6c6e5f341db8a61","tests/fixtures/invalid/bool/almost-false.stderr":"d3c827c1c521f98b2242a7183c96b00682764889a46666a5dcfb6d0fa7a743c0","tests/fixtures/invalid/bool/almost-true-with-extra.stderr":"9db6045a6e3ba501874de810a16a35f9837647dbab22ea9d8c9d89a7494b983f","tests/fixtures/invalid/bool/almost-true.stderr":"2816a9e9637d3402750f7a35622d738abc83825d706fb4c19d8f007df2396bb8","tests/fixtures/invalid/bool/bool.stderr":"9c06a48312aa0138684e37b8d4193e46ff1badf6ee3d2424d6c6e5f341db8a61","tests/fixtures/invalid/bool/capitalized-false.stderr":"b7e9c3764103c257ceae4f0aeb714ae58917722cb6ac1a1fdb0cde6f9efe1c83","tests/fixtures/invalid/bool/capitalized-true.stderr":"ac46ab983618490106a1bd3263e0e34e54010a014a795184fb722d5ef49aab2d","tests/fixtures/invalid/bool/just-f.stderr":"d3f2bc776b3137f378be5acb9e10e745cd124178d836289fb1b7091ab12556fb","tests/fixtures/invalid/bool/just-t.stderr":"1f6c7ced5fd72596cde8daf3bd05a61c9f0a28bfb612b8b6b0b6de4630d1c0a0","tests/fixtures/invalid/bool/mixed-case-false.stderr":"7d57131577e1c018075c1a83347e80183aa1db1b6aee1027a11cb7f229b05d21","tests/fixtures/invalid/bool/mixed-case-true.stderr":"9cfe3868f18cecce20bc674593f15fe88cb6fb7361f54ffec1616e877f714cf2","tests/fixtures/invalid/bool/mixed-case.stderr":"34738e926e3e5ea99fc9860c0177463699e54b2c48fe11168a6c25bc173802ac","tests/fixtures/invalid/bool/starting-same-false.stderr":"620c142ae095c8da9aa1298a82a42ce1f0f13eda91c66e75e4c5b6f82bee0455","tests/fixtures/invalid/bool/starting-same-true.stderr":"8e1016111cd84601db76df8579ce7aab7fa7a0e013e66d3174cb8bbd80c4764f","tests/fixtures/invalid/bool/wrong-case-false.stderr":"ca86c0166b4992d0255e2c8f5ed2935d58c325965039006f1903c8ddaf549593","tests/fixtures/invalid/bool/wrong-case-true.stderr":"6264fc52c455d04e1f89d0d2726b4325066699595f6120ad4583802642cd6735","tests/fixtures/invalid/control/bare-cr.stderr":"be847ba07cd507752b8124ca13e8d012c666b81cee56be1309815c8d490470c1","tests/fixtures/invalid/control/bare-formfeed.stderr":"18a939f8d8459a4e3a2d9dee5756fa81b3f12a2179e685c35ecd25f4da9d8aef","tests/fixtures/invalid/control/bare-null.stderr":"cd58586e56fa9b00fa17be23dfd531dcf9eb5e10556464decd4b60fdc6eaf72f","tests/fixtures/invalid/control/bare-vertical-tab.stderr":"970f649f9575b1553da1382466eafe16413696203e7ddbaa99a0585a3f0ca157","tests/fixtures/invalid/control/comment-cr.stderr":"7e729bfc9b0c575521c39d763e8ab8f7baf94054e183e59cbe976d840a0f1c62","tests/fixtures/invalid/control/comment-del.stderr":"5c41d37aad38933267d8d8fe80d9600650627dbe3433b8ac876ca63bd086094b","tests/fixtures/invalid/control/comment-ff.stderr":"4a7eaa53d883dcab7f23b09d33794a687b5d0c7777ab172a0bd81f9503878762","tests/fixtures/invalid/control/comment-lf.stderr":"a24258d06bc41156b92ab14fac3793c85d706e74d5c280337c4ec0c4f80f92ff","tests/fixtures/invalid/control/comment-null.stderr":"afcf5791d6fde718cd6a2b514483d45d2355bf08f9fa392d75c7192bc390913e","tests/fixtures/invalid/control/comment-us.stderr":"280fbd7dc323d8841d5b9fa821f48061fc01a968bc1f5893fdac30fc17afaa3d","tests/fixtures/invalid/control/control.stderr":"07adf02cb547ed379a402121e4db738daa698358e53c2fa852c617fb766b41fc","tests/fixtures/invalid/control/multi-cr.stderr":"1b70b31b5c10eac9a52cad0b7739bbe5b9a74c9cce4ba105143c622a33164c14","tests/fixtures/invalid/control/multi-del.stderr":"6a7f52409dbf8b5bc1097fec2d1330310c97d78eb3ea2027f219b25e519ec270","tests/fixtures/invalid/control/multi-lf.stderr":"e723fdaf9e19aef9a0eee8a919e5986822c25ac1131e24422e9fabc0887ccc63","tests/fixtures/invalid/control/multi-null.stderr":"ab3e944c835a74ebab8c56c39c3ba6496e8d4d2b03f324a66e2e511ac8b7fd10","tests/fixtures/invalid/control/multi-us.stderr":"1df029e738c4cb78a68b360fc131fb6d9f5b93f78e292a27aaf4c40e8aa3d842","tests/fixtures/invalid/control/rawmulti-cd.stderr":"fbadd57208404b2116c9cc16f36b80e1ab08276d7838e17e4bd48a8df7e194d2","tests/fixtures/invalid/control/rawmulti-del.stderr":"ee50d46a73bfcd85f7b3b677d4148cf2390e5ea13b59a6bc81dacea3e049ab33","tests/fixtures/invalid/control/rawmulti-lf.stderr":"6cae2d709ae5ee6afc355322388d8b57d8e9674929d71af5b7761bab5d751cb9","tests/fixtures/invalid/control/rawmulti-null.stderr":"0efaa11fc391b16d27e1de09027171e8d379d3ffddd2489045ba10912ebccb89","tests/fixtures/invalid/control/rawmulti-us.stderr":"31a28ca07db60771f7787f8ef30fa160ce3715df28532bc9892ec15e380c36c1","tests/fixtures/invalid/control/rawstring-cr.stderr":"32819db35fde8ef9ee282557740c8b2dd077c0bcf421614fb06db18d732af57e","tests/fixtures/invalid/control/rawstring-del.stderr":"8a7828be56c7d941c6879698be4825fc1f9b75766898e782675d860581e7393e","tests/fixtures/invalid/control/rawstring-lf.stderr":"1d01b15b19024ce4c36866f025ed6adc4f3c3bac1a2b5fdf4ea79471dc5c9b49","tests/fixtures/invalid/control/rawstring-null.stderr":"245b39b3943e776fb5cb2d52497e0fb301420c36f7f5b47df9980aa05496ab5b","tests/fixtures/invalid/control/rawstring-us.stderr":"7fb0ed283f42d3b1cc3852698b6047c2975d2c780eebe14f65d2b3d11d9f0bad","tests/fixtures/invalid/control/string-bs.stderr":"0a12dfbbf6161d24f29d78679928a4e835d47558344773c2d585a2201bb043ad","tests/fixtures/invalid/control/string-cr.stderr":"cf5970ede487e7fd692baa45247d55df70b8207f8d67df6c2e55eb9d4ef9352b","tests/fixtures/invalid/control/string-del.stderr":"35c65f3ceb74b80d4a5d8109f61f099bdf640379dc9751fd7678447a33eaec78","tests/fixtures/invalid/control/string-lf.stderr":"ede4b6df958cac81b05525f25b1ac2c1435eae895f545dac57a553a7840fc8d7","tests/fixtures/invalid/control/string-null.stderr":"c30aa237809c03dee02d36a1fc4a02d6f184bd425bfc2accda6b3fa1bb55fe1a","tests/fixtures/invalid/control/string-us.stderr":"7d922c62bf118c23b85991935b8b4c7a113d39d0092d13d22be1e0ad7ed20a31","tests/fixtures/invalid/datetime/feb-29.stderr":"743e7bcaa21ce6a8e7f033b56de7a0f3e7dd54ea84bf293e044af4e192f693bf","tests/fixtures/invalid/datetime/feb-30.stderr":"744e980d51f19b89a203192eae4f88e5ecba71853e006ab1c52988818584507c","tests/fixtures/invalid/datetime/hour-over.stderr":"0aabf978f79acc6b4d0d3d6a9b05833aa65d418d71aa5cbbd71035797adc1b0e","tests/fixtures/invalid/datetime/mday-over.stderr":"76f70be6d3ca444339aa15f4e6243b784a4c414fde0cd932b20c182266276782","tests/fixtures/invalid/datetime/mday-under.stderr":"54456d2ec892deb33b596cd82d400bdc6777cd2b5c643e45556b9646057f7d55","tests/fixtures/invalid/datetime/minute-over.stderr":"ffa678092cb67d6848910218d9a5bd46f5a308b7bce2269b8b6e46c2ec019dd0","tests/fixtures/invalid/datetime/month-over.stderr":"906596048b7dbbae0630ec1216827a95ce562a09f98704595d27c3491cdfc7ee","tests/fixtures/invalid/datetime/month-under.stderr":"c073c25ef0a3aa10b1d29ac28df9c9207143ffd595680ff633400d076a76dde7","tests/fixtures/invalid/datetime/no-leads-month.stderr":"4f5066ed79bcd945215a57f55ef230f47dd64e2ec55438a7ee08bc3f7067e318","tests/fixtures/invalid/datetime/no-leads-with-milli.stderr":"ffce1f8e7bb51130705ebb7ba8e9ef007de9a9e7f33b476e4fefb15a030d2e1d","tests/fixtures/invalid/datetime/no-leads.stderr":"4f5066ed79bcd945215a57f55ef230f47dd64e2ec55438a7ee08bc3f7067e318","tests/fixtures/invalid/datetime/no-secs.stderr":"8c504dfaa1dfef25b78a8548509b3139f92e3e04bcb848a1e04f7529e169ad63","tests/fixtures/invalid/datetime/no-t.stderr":"ec4852cfa295ad2944101831bf40489e6c22b5a33fdb3faa5347e2d18c25c227","tests/fixtures/invalid/datetime/offset-overflow-hour.stderr":"7a4250381a915c58e3aa81cb3afb59fc4163b7d25cee0a6625b615b4fe5e0fad","tests/fixtures/invalid/datetime/offset-overflow-minute.stderr":"6721e5fb29bb4ab20711eeb3fe42a6f1fad4b279075296c0a97124d75dac08af","tests/fixtures/invalid/datetime/second-over.stderr":"ba720829aee7506625c354e5f53dbd6b67ec351061df1e32b49cb11ea69bf52e","tests/fixtures/invalid/datetime/time-no-leads.stderr":"5117ac62dd754a203f2fd6e5163a2ce352776bee513219252cec77c0ed71bbbb","tests/fixtures/invalid/datetime/y10k.stderr":"ac3db71c252bb0b2f0bdc8a9d734ca60289afecfb5a66309a895b54c7d8e61f7","tests/fixtures/invalid/encoding/bad-codepoint.stderr":"64244879fa48b9c4f2f7b219325d4c308772c032b7005edd2ee4d771b5448bc1","tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr":"d55ab89a2f111bbfffd362928dbe3a1dafe7f8f37a04e1c56307efe4f4ea14d8","tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr":"52e5ea4555b208f3ce91debc99e01dacc6e706381fb274259730b0a82f041660","tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr":"e22a4a60afcbf41351abb9d4d61a4c5d6dce246f98fedbccd33557eea8596524","tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr":"e22a4a60afcbf41351abb9d4d61a4c5d6dce246f98fedbccd33557eea8596524","tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr":"eea9032a7d46e496ff8f6d4a95344b4d7660adb0fc715f652aefea54ce72d85d","tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr":"eea9032a7d46e496ff8f6d4a95344b4d7660adb0fc715f652aefea54ce72d85d","tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr":"dc9eb6707b252b77ee0c30bc471a4bd58308b31bfc892e2fd5c3995458e41b97","tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr":"6570c6feea522cf017c8dcdc1e4b76cfeef2092bc3b938af0140e171817a8311","tests/fixtures/invalid/encoding/utf16-bom.stderr":"d9c278ec8c5a422f4553180ea76dd223278acc0d0ecc5f725235db6b379e5b99","tests/fixtures/invalid/encoding/utf16-comment.stderr":"2f2c4ffa18d08721d707b7083706efe5394e9fdd3504791a52949d76b7442e67","tests/fixtures/invalid/encoding/utf16-key.stderr":"8a8465ae12c6f3065edc3b237b7066bc8cf03b95a22403c8c5a1b1a5f085dbad","tests/fixtures/invalid/float/double-point-1.stderr":"817b02c19d53f02107569e7ddf9b38334cd85edd0a452795baaf6d5c0ffbbf63","tests/fixtures/invalid/float/double-point-2.stderr":"8b5a07c41087342d5f8bfaa8998465dae954cad11d93f01f4ed4a5541694e7d4","tests/fixtures/invalid/float/exp-double-e-1.stderr":"657c856a8d474cec0d557f4a5401456966bc82c8061a092977f4ae0cb71fb04f","tests/fixtures/invalid/float/exp-double-e-2.stderr":"ad101779127abb35a6e35020a4818c1622ae5433208bad57f1daf113357f6ab9","tests/fixtures/invalid/float/exp-double-us.stderr":"e6e53e58b5deefc9e50e6eca91423881b682bcf8528bfa0386158aad9458ae74","tests/fixtures/invalid/float/exp-leading-us.stderr":"5e45eeabdcf142ebd5b5ee2b77e2520c5ae7e35e943034e12c84095f51a1141e","tests/fixtures/invalid/float/exp-point-1.stderr":"2d4202fc806e23ce05f8bb3e63e31d1b4874875b018f28bd2b59c8714aa70cd2","tests/fixtures/invalid/float/exp-point-2.stderr":"d85145654b358cb63f44ea754c88f29a073fe5f637d07b279a986ddc0c347df4","tests/fixtures/invalid/float/exp-point-3.stderr":"3fb7d6151b522057a2b15137daa916681220cf575dec560f084d3c9c2dae1f3c","tests/fixtures/invalid/float/exp-trailing-us-1.stderr":"71aef4dde4dc2371702025127b9802540765a0c0db6f96156bf6542c574b30b7","tests/fixtures/invalid/float/exp-trailing-us-2.stderr":"c63f97484c7c498b01fef93984beadb9311d884ce5b7856ab1301cc398ae9c4c","tests/fixtures/invalid/float/exp-trailing-us.stderr":"f5bbc5fdf2dd018c031ca5c79edd7f16a0da25676bed96ffc0682401497ef362","tests/fixtures/invalid/float/float.stderr":"511c7e989b6e4768f089634036848acc896439a06df83a97fbcb92ade1554e98","tests/fixtures/invalid/float/inf-capital.stderr":"d493ce9b11dae0dea40a2c8c7666125031d5323ab82bf1b8af997049d60072fa","tests/fixtures/invalid/float/inf-incomplete-1.stderr":"6090e21b98dc6df8e67962c8458ac773bf3dd4b78ae4f4453dfbe01657401a7c","tests/fixtures/invalid/float/inf-incomplete-2.stderr":"abc3855709f099a9023f0d3e305edb8c97570223f889431dad32e21e83747d6c","tests/fixtures/invalid/float/inf-incomplete-3.stderr":"9fb99f8ca91b9fecb86ce27e1b4fa6ca05a2d5c0ab039972d4d2a7dcf2c6228f","tests/fixtures/invalid/float/inf_underscore.stderr":"8e7202c508c9d6e35410e4ff89bee3a5db4a88367e69e210fd4ae4f9bf602286","tests/fixtures/invalid/float/leading-point-neg.stderr":"21e3e8ea4c817ca286b1ee6dd359c91b6e8ffcb376bed393e03a29e55d7a6a61","tests/fixtures/invalid/float/leading-point-plus.stderr":"ff0f7a8a5cdccfc7e6d3e6b1381643b759f5aeff5546bfd2fd4dd29f8f1b1551","tests/fixtures/invalid/float/leading-point.stderr":"5c7590482ac55bb0d11eb9e1291a80d8c891ed1949adfc64e81b75bc5f8c8b06","tests/fixtures/invalid/float/leading-us.stderr":"67ce463deceabfa0dd4eeebfa68d72eb53fd235455d6181b4c8597c6507e0ee7","tests/fixtures/invalid/float/leading-zero-neg.stderr":"16b6cf97171ec9f85a36e09a1ef39087eff3a0c441a9f9d96c43a9d0fdb5ee38","tests/fixtures/invalid/float/leading-zero-plus.stderr":"f08e1416644c743b3463342313f023982051e992756e9784229b1bcfc1e19aaf","tests/fixtures/invalid/float/leading-zero.stderr":"511c7e989b6e4768f089634036848acc896439a06df83a97fbcb92ade1554e98","tests/fixtures/invalid/float/nan-capital.stderr":"66fe63db08d9ee24e8a90f4e2b5f2c15fb3f35dfb7eb81ffe760f8957967370b","tests/fixtures/invalid/float/nan-incomplete-1.stderr":"138d0d28aa5e90b9fb344c743478c0b6be79492ecac856d71e239af5f6e1aa99","tests/fixtures/invalid/float/nan-incomplete-2.stderr":"31f200fbfc6e4c8d06f58960dd7349f650af86d22a1f0d6fd8c4df46bb4a0b3a","tests/fixtures/invalid/float/nan-incomplete-3.stderr":"3b16f8d82cdf18df21bba1e83d2aa33e175ab5a37fd5f3214b1be84a07acab10","tests/fixtures/invalid/float/nan_underscore.stderr":"4a30507eaf227e8c8e2bbda6d7b3cb4fdcf793216981d1f9302cb2b049e95d58","tests/fixtures/invalid/float/trailing-point-min.stderr":"0b5c7385ced699074d6042b5fa0ea9266ea64a191dd0e43466ca71a2ceaba76b","tests/fixtures/invalid/float/trailing-point-plus.stderr":"856edc036309660c223b1cac7c99d9d6b61bb4b49e592410c3f308fb0a678800","tests/fixtures/invalid/float/trailing-point.stderr":"5241f4525c36c1cde19d520aacdfb7db1bdea07710d2621d2a60ac7b1d1e70a9","tests/fixtures/invalid/float/trailing-us-exp-1.stderr":"42a7b0d43ef2b548c2199a4c9ade5b30c28b91a625d6bac6f57d721b4fff2848","tests/fixtures/invalid/float/trailing-us-exp-2.stderr":"13c1374bbf3f5e3c762b6246dc8ea1f5e619b3edd6d66a2e37ba51fe3ba0acca","tests/fixtures/invalid/float/trailing-us.stderr":"4103e29434d2c323c7461903cbe27dc0a5a70c9907d2d47ee31eaba3f4d51b2e","tests/fixtures/invalid/float/us-after-point.stderr":"2d0ef75d124b8ff10a48639d2f837a13cb18ae66891c9fc3709199ff724c1af3","tests/fixtures/invalid/float/us-before-point.stderr":"844c0d11f60522784f6f22f7f3d418c7e6f16cd96cafa55f542996974fd267c0","tests/fixtures/invalid/inline-table/bad-key-syntax.stderr":"9fe839d2c861b2026ffcbb37a7aaca3498df90f66da6d402d5ab96ff357de453","tests/fixtures/invalid/inline-table/double-comma.stderr":"67e92c9f776a5bd04f908a79c6f2e8c146ebb6072129ab7fbd9606ed8d56fc44","tests/fixtures/invalid/inline-table/duplicate-key-1.stderr":"3eded78c2d76205b8f516e180f8c8849d6ba34f04df72c5ffac319264d16f40f","tests/fixtures/invalid/inline-table/duplicate-key-2.stderr":"a166a188a3682704cf70153666734fe63ccc23075265d0d20ebfa25ba7a633fc","tests/fixtures/invalid/inline-table/duplicate-key-3.stderr":"3e4cad3fdeda14976a0e6193465ac7b0c052a075b55a4dabb95ec2a03d7ef532","tests/fixtures/invalid/inline-table/duplicate-key-4.stderr":"2ffe3212ff7d4dbdd7f41f0c0d037599d223c1876af8c9fa25770431abd7c6f7","tests/fixtures/invalid/inline-table/empty-1.stderr":"ee1624b0ebfc28edb9af042a4926d6b5b62fe7b6265544b158b577bfab1f0866","tests/fixtures/invalid/inline-table/empty-2.stderr":"70c376a4f2368d3586184e70110115525f35cfef2fd15bd2c0a9579a88868cd2","tests/fixtures/invalid/inline-table/empty-3.stderr":"fb05dcafd2b5e290ea8de8d0b8d9ad0fc58452d75c537e8482a2fa7fb714126c","tests/fixtures/invalid/inline-table/linebreak-1.stderr":"016daca1cf56861089265156af1ef41772ed0c5fad6848cbf8c8c91ddf748ade","tests/fixtures/invalid/inline-table/linebreak-2.stderr":"b259282b6bc1a9f9c96de41d2c5b0f27b9d8648ec8984aeb6760cc15ff5714d3","tests/fixtures/invalid/inline-table/linebreak-3.stderr":"59b34b9c76c57e02df83c8ce97b1f3e856026cbb33416d7335f287222e11ec35","tests/fixtures/invalid/inline-table/linebreak-4.stderr":"8a78e7240345fc8b850cd54d3f1c74187e4abcbc65b85e3b1da79ebf3e139d70","tests/fixtures/invalid/inline-table/no-close-1.stderr":"6da0e9a2d2d272d199745c704aea6bf317921d8ab005882a3de793e6ff87e863","tests/fixtures/invalid/inline-table/no-close-2.stderr":"eef11b2fc399ca9b7a397c5366a9b7a9021e783cb189d68fd5c29cc607a5f4ab","tests/fixtures/invalid/inline-table/no-comma-1.stderr":"d2a33a967d517c9690b90845347d26d8845c997ba4ed61c640a58cdf919d7c7c","tests/fixtures/invalid/inline-table/no-comma-2.stderr":"c4452ed96f19979b36019c568fd8c73e72db2711a87d17cc8f62362b88598b30","tests/fixtures/invalid/inline-table/overwrite-01.stderr":"4e47f343291068cb0164fa2d48be2c3257458ee7467cd60d664bfbb83713f2f9","tests/fixtures/invalid/inline-table/overwrite-02.stderr":"40718dec554fde10db86ab240f5071b35ba564503962938f7b9464341e7b27f1","tests/fixtures/invalid/inline-table/overwrite-03.stderr":"0318c1d4713cea361a857d382bc8b150dbb1ba8f8e613df472e936bab38485a9","tests/fixtures/invalid/inline-table/overwrite-04.stderr":"9e55cced7664c821c073937321880bf75150affa44d4363c774f5834bbac7470","tests/fixtures/invalid/inline-table/overwrite-05.stderr":"59a0ef41c6059994212244c16a8808b4ac721c710f1364639f7116d43a7a8b26","tests/fixtures/invalid/inline-table/overwrite-06.stderr":"c2a6060831445d4143254c6908468bb04cb5be501161028429467a2dbb68e235","tests/fixtures/invalid/inline-table/overwrite-07.stderr":"cbe9f4d1b428e658591e077790986a6589385474efd2ae9f488b6003715198ca","tests/fixtures/invalid/inline-table/overwrite-08.stderr":"d85341eff5c078131c65c801a259d0909921c541ea5a8eb75e752e5d174092f4","tests/fixtures/invalid/inline-table/overwrite-09.stderr":"99c73b045436b330b4f6570bc1a40726dec71a524e44f6b63a8c55ceec4e5f4a","tests/fixtures/invalid/inline-table/overwrite-10.stderr":"746d1cfde95d2c5fd748e4b95fb95383e014a00f73c03625f7ebefa52243e815","tests/fixtures/invalid/inline-table/trailing-comma.stderr":"079ea824e27cae66b32160b99d6fd75b38514960c440ef14274528fabacc98d3","tests/fixtures/invalid/integer/capital-bin.stderr":"9224535b369db24906be0bbbac4ffa80d1b570db8135ce7f58202956cf889857","tests/fixtures/invalid/integer/capital-hex.stderr":"ee731f89283c425e7c54cabd439651cc4926c1d721ee92ec809b123521ff7c91","tests/fixtures/invalid/integer/capital-oct.stderr":"52005625e8e51afa09a5163c9eaa010e09830727128d68a1e48fa600be6823e5","tests/fixtures/invalid/integer/double-sign-nex.stderr":"819ab532a90faab548580eb0a959199466acfcd04d29d77cd0af7acba509cb1c","tests/fixtures/invalid/integer/double-sign-plus.stderr":"94f6b7c5dbe458ebb1504b7672a36c9d115e17b0e629dcfe47360803c9cfa923","tests/fixtures/invalid/integer/double-us.stderr":"c9a377fc0417b12123e9cdc4b2fe69aade63e532e20e65f279d7b4460ad05e49","tests/fixtures/invalid/integer/incomplete-bin.stderr":"143b9a89feb99b5a420bdc6aeff919ebf6d53bc011f31afbee5b8677a8ac84bd","tests/fixtures/invalid/integer/incomplete-hex.stderr":"b246cd8117362f5451c60298a318d6f93233bf9959c73cdd7a6d590d226291c2","tests/fixtures/invalid/integer/incomplete-oct.stderr":"4cdbcf8ce0a743a9442321a15c01670109debeed6a9712a95d2cb95a9debc469","tests/fixtures/invalid/integer/integer.stderr":"1afca937abf7f267f8c8e9d2112309d1aa2dc90ee1e2d4328f5a30b19ab70941","tests/fixtures/invalid/integer/invalid-bin.stderr":"e94521b61ae2bee5032073007ddd027945723f8c7faf3b4523ba1f8e9604160e","tests/fixtures/invalid/integer/invalid-hex-1.stderr":"5873555438d114b5d1eb323cdf95a651bef7f95b4c1259d657fdeb993350a2be","tests/fixtures/invalid/integer/invalid-hex-2.stderr":"fac8c488203e501d3ff383313f8a1beebfc5ff5676eb6624ca9a774094105bdb","tests/fixtures/invalid/integer/invalid-hex.stderr":"521096bb5d0c10e420a452adb133eecee4e153809a3c29822e64569e4ecf2779","tests/fixtures/invalid/integer/invalid-oct.stderr":"cf940d8abf0a98dbf4b139089cb964964b30e6fbdf89d9a11bfe94b06bbb3547","tests/fixtures/invalid/integer/leading-us-bin.stderr":"34a6f856274435b07ed74ddcbfd0c471920b418858fc2685eacacf8b814d2222","tests/fixtures/invalid/integer/leading-us-hex.stderr":"a468c4d3ef104f5f575ef61e01a2889bd52112fe00917380d9fe094e7f1f0625","tests/fixtures/invalid/integer/leading-us-oct.stderr":"c6600b9cac7b6a935923b951b24051f2494fdc2d351c0f109f63da546a280315","tests/fixtures/invalid/integer/leading-us.stderr":"4c156a62e39d8404bcaea001ad347aa3366ad956899fb385492203d17da9b34e","tests/fixtures/invalid/integer/leading-zero-1.stderr":"1afca937abf7f267f8c8e9d2112309d1aa2dc90ee1e2d4328f5a30b19ab70941","tests/fixtures/invalid/integer/leading-zero-2.stderr":"4e4ce0d6714fb455def4a586c076072bc8d83b87f3b62122611b6e62df5fe532","tests/fixtures/invalid/integer/leading-zero-3.stderr":"d28a4f3b59454eb4a5756d9878b54c03a154aa3af32a9bc4b746fa8d4c842454","tests/fixtures/invalid/integer/leading-zero-sign-1.stderr":"b84ffda89f4797a517f8488b59ebd795fa42e59be7719b3883b2290c8f1060db","tests/fixtures/invalid/integer/leading-zero-sign-2.stderr":"3484e932794a500ed92322323032f7ca2c95fda1af3586fe3d9d5d0cdcdc41e3","tests/fixtures/invalid/integer/leading-zero-sign-3.stderr":"1f7afe7069d13990918c68a32ba46a9e17a305ced699c94cba72b01eec5aed93","tests/fixtures/invalid/integer/negative-bin.stderr":"b3825a06a49dc04be695629fb45ad33a6882ea73821c3c42db7dc9ebc878b5e8","tests/fixtures/invalid/integer/negative-hex.stderr":"f54b8ecd33db30a04ff9312f4b7a42d06ce8c276062a56bdf3773b10e267036c","tests/fixtures/invalid/integer/negative-oct.stderr":"12a30a960af847a2762336b6b0569d603c84dcb31a694bc93a136fa503c298e6","tests/fixtures/invalid/integer/positive-bin.stderr":"f4f91449d9863cfb107f4f174e12e64b01e676c36bab77a431078c9a0fda6e94","tests/fixtures/invalid/integer/positive-hex.stderr":"1ea707ef22ca30bd0ce9becdd4c6c3f04a65a79c153ec38875b4a8626c62dbf2","tests/fixtures/invalid/integer/positive-oct.stderr":"f033b6c19e3f1f04c69baa8ebc4156ac913be0428e85fd474a99d57298c23e75","tests/fixtures/invalid/integer/text-after-integer.stderr":"581885f158d84ac387b8bfb483d4bb0593e23bbf251a63a542ec81630ffd0bd5","tests/fixtures/invalid/integer/trailing-us-bin.stderr":"7e5928cd15695fa35403a024856f64cbbf7a056e8079f76d1923e38401086e41","tests/fixtures/invalid/integer/trailing-us-hex.stderr":"83d3672baed59c1b0ca8b27400b469cd18d2c0790ececd9d5dd72e283ceb4584","tests/fixtures/invalid/integer/trailing-us-oct.stderr":"e048d0b7900704573a076501b5fa48289dbaec4ebb279f10775ab0b8c5060dd6","tests/fixtures/invalid/integer/trailing-us.stderr":"9e46f25d350e02fa57100d87917d9e6a961907df89955c01bbd2bb473f807297","tests/fixtures/invalid/integer/us-after-bin.stderr":"e833ae217e60edfe08f5c76fbbd8ec2bf6de9b41b16905e474791f1b5bc4695f","tests/fixtures/invalid/integer/us-after-hex.stderr":"d5cd357750289db24ddba5d8278eef6073f591a05bb495096e8f6214626187e7","tests/fixtures/invalid/integer/us-after-oct.stderr":"7254481b53b8602413ede570876963fb6ea9c2699adb986ee17023cabf5916fb","tests/fixtures/invalid/key/after-array.stderr":"8489fa15adf8e674687aef4a8ef8acc10235ada0e7a3b2fa17aaeae9f9e02189","tests/fixtures/invalid/key/after-table.stderr":"d1856cc75dc16c95c045ae4c05982448e3c2680057cc1e08c09ebe68ffbb35c8","tests/fixtures/invalid/key/after-value.stderr":"00398c3f1305f387b9ff9f17dcc76061350a800e652e00ff2f3892993c42ea33","tests/fixtures/invalid/key/bare-invalid-character.stderr":"19220d575145a93b522e39f59ee63fe0418194fa2b80d9649916d4b8df556147","tests/fixtures/invalid/key/dotted-redefine-table-1.stderr":"169e40f3d1be87cf099a9e7c6e39175ec0fd701c933b427cefc300d2e854aa07","tests/fixtures/invalid/key/dotted-redefine-table-2.stderr":"72d632c3572aa914603d154152e10157d4db3d90db0da0eca88baf1416b3e29f","tests/fixtures/invalid/key/duplicate-keys-1.stderr":"f4207dea6f110318da0c9c71b3957c8182b133bda91911804a98bac71c025cc2","tests/fixtures/invalid/key/duplicate-keys-2.stderr":"a5e1fb5b90daf5b7e659ed76c82dd0ff6cf2a09e3578c98bdf907bc7801614ce","tests/fixtures/invalid/key/duplicate-keys-3.stderr":"c8d91fe50b91ad091430b9699aea28a42b7822373c43fa064900721df066d45c","tests/fixtures/invalid/key/duplicate-keys-4.stderr":"ad171657bb84292443753bdf9f2963cb268a45dee78ca4f39dd474b6698fb020","tests/fixtures/invalid/key/empty.stderr":"0da32834de6e29b7254260b51b5b26f1537111088f2dfcc7085cf717aa9c7b42","tests/fixtures/invalid/key/end-in-escape.stderr":"f8710ef2b803f053d1c2f85204f7d9beadc485c4a5525d1c17d8c8cc228c0eca","tests/fixtures/invalid/key/escape.stderr":"11c5f871342cd20a90270eb3cc47c06fb186e7493d27026f5936e78c0bd088b5","tests/fixtures/invalid/key/hash.stderr":"55122578bd7c090a641a0aaf980aebe3fd2c1fcf820da4d72408bfce527a5293","tests/fixtures/invalid/key/newline-1.stderr":"32c0795720a45125ff56a3e0a20ce62c2a2174fc02f44f2dd6620db15bc56547","tests/fixtures/invalid/key/newline-2.stderr":"f2d74552b3489eb7f89ec8f4cfb5084ac21ad338ef2a0d320a57c0eca30fe5bb","tests/fixtures/invalid/key/newline-3.stderr":"672d411c92fcfdb495b41a15e6cebf0e73d4484e6a0902772b9937f5ebf35c61","tests/fixtures/invalid/key/newline-4.stderr":"aa2b599e10e8a20bec1d1fe112ec90ccb5bed8d42e43dba8ccf0d5c18d4b131c","tests/fixtures/invalid/key/newline-5.stderr":"961866b075ab56f652c9661e900070b729ce5db2f57210e95f9c3955f5ba4b41","tests/fixtures/invalid/key/no-eol.stderr":"e8f14df57190fc8a0f4e704a38c42126aef0663f9315f84d23c371f0860a5a73","tests/fixtures/invalid/key/open-bracket.stderr":"330a1a96948b442437bd81f461e91e0b328e225abd304832b7d1660eebc77c5b","tests/fixtures/invalid/key/partial-quoted.stderr":"29dd53ef16e939b137da2c7d62c24aa2481bd44359a02578b77597296b25efc8","tests/fixtures/invalid/key/quoted-unclosed-1.stderr":"6b566ea67dd061ec05c6754bebdb583d93934412cdc6176bbd68d3bd403cca7a","tests/fixtures/invalid/key/quoted-unclosed-2.stderr":"396c4f9bd1ff398b439ae54b23452007e1e7518b38232b89b0f5b1b448e764cb","tests/fixtures/invalid/key/single-open-bracket.stderr":"52d8e13b39b9507ef37a65c0eb779e89ff7d00fd4a70245d44225a35200a6ae7","tests/fixtures/invalid/key/space.stderr":"9f3d6ed39f1a05ac99bedceb66c53835090182b47293bdfa0c080ac80285bbb0","tests/fixtures/invalid/key/special-character.stderr":"68aa496dfd623d18af16fac5b1fbf5f74365fe0c05feb3e5d34bcbe47fb1472e","tests/fixtures/invalid/key/start-bracket.stderr":"93a0e8ada8447d60ae738b4c0816d9087a84932dad2651505327ff37d3b12c86","tests/fixtures/invalid/key/start-dot.stderr":"25b23ad9a454746edcffc91b79eee11bdc9d9daf67640aa8d28594a98da3ddc1","tests/fixtures/invalid/key/two-equals-1.stderr":"f5398f176b3b1a3fac4cc7d68d1e595e2f1b60f92ebdd4f3f9bbe5d7191eef3e","tests/fixtures/invalid/key/two-equals-2.stderr":"099b5d50827299b921c3c1c00a2c804d580f67d06c2e5593660c6d6ad5900a66","tests/fixtures/invalid/key/two-equals-3.stderr":"b51c719bd0d8f585b4b017937e7d0df2ded58e3a37e2cc17cf9bf04277347a1b","tests/fixtures/invalid/key/without-value-1.stderr":"b1a087f97400f49a9bd6ba8bf44b3afbc3a0db6423d17b95fca5fc5be7a3a775","tests/fixtures/invalid/key/without-value-2.stderr":"cef84c2625e41ab3fda621f35d5e936a8d43bd292f3856f80cd2a148efc6d6b7","tests/fixtures/invalid/key/without-value-3.stderr":"295097c33c87dd153e607b3aaf648168678e6773e28ed0148d0b2e5144c1c0e7","tests/fixtures/invalid/key/without-value-4.stderr":"65173e2596ae1ac268c1f5a66fcb2e83be5663425aecf3fb3a99091b6fd40ea3","tests/fixtures/invalid/key/without-value-5.stderr":"9279c3cddcea9568abe57303cb5de41d8d1c71ac4ec991e1fd28651776314b57","tests/fixtures/invalid/key/without-value-6.stderr":"dfd20b35750e3a3cf1da7e8e1f20043235c0349cfd118bb12cf1a42165cc7ec5","tests/fixtures/invalid/key/without-value-7.stderr":"d0183883abf80ce86271bb0b8704637f93830cccb4c853f7834d132c9f153d4e","tests/fixtures/invalid/local-date/feb-29.stderr":"4c97e157ddaf9940d438560f34642ec4903609417905c02456ae386ade5573bc","tests/fixtures/invalid/local-date/feb-30.stderr":"1710668c24dd3aa9fde6e0f782eb880af872e4bb5a5186b281c8e6ed40e86dca","tests/fixtures/invalid/local-date/mday-over.stderr":"546af4611d7a589f4907bb085b74a5d74aab7505b613c448d8075aa9f14633d5","tests/fixtures/invalid/local-date/mday-under.stderr":"102c21e5b546a4a069c576d7ccc5a1bc259522e951fd7487e7ceb26f982bcc43","tests/fixtures/invalid/local-date/month-over.stderr":"4cac731d0f95392744498706c91b4940a30254d3910856da666bcdf1610c80fe","tests/fixtures/invalid/local-date/month-under.stderr":"df4ca9f526a23709fe9feb51b71b5ae3efac806a3fb337a40b626a27104b4124","tests/fixtures/invalid/local-date/no-leads-with-milli.stderr":"67e6de0c6025e5f498e0d5e0c7bdd2cd74a01cefe0a3992ad935b7b7f260fe93","tests/fixtures/invalid/local-date/no-leads.stderr":"d653403d2686bf1e56c21a120b7a6fdfd6e0f5bd231b14789259c23028e16dec","tests/fixtures/invalid/local-date/trailing-t.stderr":"9cf2e418427abe378484486356229b38f1db53842090a2d7d0637cad1a6b16c5","tests/fixtures/invalid/local-date/y10k.stderr":"ff9286e64bf70a2e35bed170d191349f0045fc8d6f184a183cbea693496e99e8","tests/fixtures/invalid/local-datetime/feb-29.stderr":"3fbdaad131492c5e7c85df1e90f73977a2f1236422b5fe86847fa000dbee7e5b","tests/fixtures/invalid/local-datetime/feb-30.stderr":"32e38bb349f6cde4e60534764f5839240313caeee12ddf4d97d4df404a6f3b01","tests/fixtures/invalid/local-datetime/hour-over.stderr":"0aefa752706aca82810109a94b9a5bbb8f50ebc4aa85bfb091466618c714c1f3","tests/fixtures/invalid/local-datetime/mday-over.stderr":"5873d8c67de9fd55e424aadcdb68d42842ccdee9f2e2e94e0bc42caea6635645","tests/fixtures/invalid/local-datetime/mday-under.stderr":"a1df2d77cf02f3cfe2a44daa946978aeff84db9ee033e61358e2610ef8acd3d3","tests/fixtures/invalid/local-datetime/minute-over.stderr":"1717bf680a89f59a66d5dae8dc98a17757b8973f70f869744ce6b496fa2c7c9d","tests/fixtures/invalid/local-datetime/month-over.stderr":"ffc05504137e79700f4c78955470e975bee840580cf10229202903a498e09858","tests/fixtures/invalid/local-datetime/month-under.stderr":"8e77bd4dad24e1d7e5c017702410cea56a085585e7d97425c55761b0246efde8","tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr":"88a35c260a65588d5ca0246c0f27f5e5e6fe8836777e5998c9f3c4bacca1c8f2","tests/fixtures/invalid/local-datetime/no-leads.stderr":"40795bab32c16aa63e609add7f809c7c22d2764d98700b3eb91c20e6eea156e8","tests/fixtures/invalid/local-datetime/no-secs.stderr":"f946633b31380b72df35d6a0e371f4eebca26332abac1c3d2841918461df30cd","tests/fixtures/invalid/local-datetime/no-t.stderr":"802e0bcf8a66b32fe9f2d0571808782bd37a6f1ff8c5e92368b5ad4c18d2218a","tests/fixtures/invalid/local-datetime/second-over.stderr":"7494350b21ac24f7f30c95f568412d7214a66dd9b04fbf454647f0972588a7fc","tests/fixtures/invalid/local-datetime/time-no-leads.stderr":"5117ac62dd754a203f2fd6e5163a2ce352776bee513219252cec77c0ed71bbbb","tests/fixtures/invalid/local-datetime/y10k.stderr":"66cdcfa2f4dbd5270936e531a1f3a9ac54a70dec246f3ef93b180911c201db1d","tests/fixtures/invalid/local-time/hour-over.stderr":"0f0507c0f3888330f1346e6a4c100c4bcbbc6549599cd39249fb59c7923b1801","tests/fixtures/invalid/local-time/minute-over.stderr":"052a762b6f62e21d59d145da3d242489990f99023681a4a645022af743a836be","tests/fixtures/invalid/local-time/no-secs.stderr":"db11e76aebb5c91f57869f1dd14ff7b0ab19b400eeb8b15936d0d82e4a8d0fe0","tests/fixtures/invalid/local-time/second-over.stderr":"18402b0e6cf205f466e3ec3d409daeeb77e355d41548f11bd3e3369240a282d8","tests/fixtures/invalid/local-time/time-no-leads-2.stderr":"2e446fcabdeeba0c118d1d49b89d7ad1271dd9eaf1ba109ee445c4f68ee96214","tests/fixtures/invalid/local-time/time-no-leads.stderr":"70094ae81f89871b0804839a5cea0f7591ab55b6c72c5d2867004cd4a0e0d86f","tests/fixtures/invalid/spec/inline-table-2-0.stderr":"41118ecf5033fdb7de4edaf1abf90e524bb50f8f3c44ef0a080be4ba1470b82d","tests/fixtures/invalid/spec/inline-table-3-0.stderr":"b7ea14eb8c6ba2cb126dc3947d00ce10a5403103a682e719ff51efebae6bb613","tests/fixtures/invalid/spec/key-value-pair-1.stderr":"d8b4149dc0ede93fe7c0d7d02a0df9d31fb2456b87ebeb532623bd6f825c2d23","tests/fixtures/invalid/spec/keys-2.stderr":"de2e84dc37ec53bc12ca585a9d2586404a920375bc201d7b2643fdcd537da691","tests/fixtures/invalid/spec/string-4-0.stderr":"c6dc77f81979a92cb5612b7f4b8e96d41bad9bf7a9a706bff5a05a6c65f76e86","tests/fixtures/invalid/spec/string-7-0.stderr":"3226561489c03d8fc983b0584d40f18629f46a425c5c7f34a4e984e164a4eb38","tests/fixtures/invalid/spec/table-9-0.stderr":"23b1d3b522e9fac974c4ea254df4798adf574be6dfc8ef1107438c502b3aca4e","tests/fixtures/invalid/spec/table-9-1.stderr":"f0164ed288eedfed3a6fecabf305a93050a6c3cc6a9397894633e4ac33b2c834","tests/fixtures/invalid/string/bad-byte-escape.stderr":"5807e3215b0def7410283291aeeb46514fa0a65d4326bff3669585e0222d5b2c","tests/fixtures/invalid/string/bad-concat.stderr":"176458d0d31d02a16e9856a80b1b9c4dc040b3ee3c83c8a678df9b1bd12c1e4b","tests/fixtures/invalid/string/bad-escape-1.stderr":"388e58e25fd5fc78b2465f1258c952f4850211b19e9fb65cc31a29774a19aabd","tests/fixtures/invalid/string/bad-escape-2.stderr":"51829779b7317fe753c54b53eb08fba669b16fc970fc29699a0a497aa95dc623","tests/fixtures/invalid/string/bad-escape-3.stderr":"8e5050c043061a991f6cf84be6b6e6ce468a35dd2ac50a3a4ce2ca1e1d5304e1","tests/fixtures/invalid/string/bad-hex-esc-1.stderr":"68446cc8fe418df4441e15118161a953cbeb22822d67c54b81c8f97aa48005f3","tests/fixtures/invalid/string/bad-hex-esc-2.stderr":"d7d979d0c5700548eae7a42c7e87253de0118b67a67ef6dbeb0598d574800099","tests/fixtures/invalid/string/bad-hex-esc-3.stderr":"fee92d2f9937e322423201b3099c7a246fabae85ccc23e990b602e1f5e181d9f","tests/fixtures/invalid/string/bad-hex-esc-4.stderr":"2c6f994aebcd9e644f469c84edb9d8ba6b6b094a949410935a590e8e6e6122ef","tests/fixtures/invalid/string/bad-hex-esc-5.stderr":"10f740ce3c36f4a8f7a1f8ab5c84e0fa5e4c3a88ebe534f79858781079139a96","tests/fixtures/invalid/string/bad-multiline.stderr":"a1ecdec206e87461bb4bb27ecd21a43da48d1d5bef6d8d746958d45219ce9dfd","tests/fixtures/invalid/string/bad-slash-escape.stderr":"7f3b917db5a8d87484f8b03680a2cd60288e549c5bca0c9e00c7e531d3e0405c","tests/fixtures/invalid/string/bad-uni-esc-1.stderr":"385be83541cc94367c9849619740c8d198b9c138f6f4916685cead90fabc3b9b","tests/fixtures/invalid/string/bad-uni-esc-2.stderr":"592fd536f48c1aa6c4c9b454c5cf5e1a7473860602ff2875430d4a7e676b6594","tests/fixtures/invalid/string/bad-uni-esc-3.stderr":"f6c284685af63ac02fee8e8ee641b03e90893a03001834625ca22482cae4d29a","tests/fixtures/invalid/string/bad-uni-esc-4.stderr":"1df7029bc305307943cc58417f98cca4c854deba8475b305675b2505d4d9b83f","tests/fixtures/invalid/string/bad-uni-esc-5.stderr":"6cfc8fee06b9770271b1241ba6025a470b1ca8cbb80a3dce7d6ee1b2c2f7f637","tests/fixtures/invalid/string/bad-uni-esc-6.stderr":"73d8f5132741c15286327111496d475807dcb638b34c10db20bb37d96910c209","tests/fixtures/invalid/string/bad-uni-esc-7.stderr":"c9c967322b827675040ad78cf4fa1c9890bb13a124a2274eb693622d5ec50420","tests/fixtures/invalid/string/basic-byte-escapes.stderr":"50d06255616038364b52a0a32113d96e8b87de8e5ffcef93c2c88d0af9b57670","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr":"b26e80921025c1fb0dfe33c01460e5ac96791585ab8204db3e76c83ccd404afb","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr":"c9f8c422be49fb11111623c4322c421b25bb9592fade95bc1cc2ed9c3c2bd93d","tests/fixtures/invalid/string/basic-multiline-quotes.stderr":"70de515fa0500fe6ba3b915d224653824ae4e213cf41d9b3465b536a0007c623","tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr":"2c104ecdfe88a89893d167ad41167108208d3aeb0c22c7d5193950ac2805af60","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr":"82b7d85f48c58289c81d149814c591195f361e23875dc2a9767215bf077a148c","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr":"9b28ddf18556e9adaf77319877189112aa8ac93464ecc09a8c5020c3c13b143a","tests/fixtures/invalid/string/basic-unknown-escape.stderr":"81ebb5efff40faa0b5161e4d92faac81aaf85c038987ca3d0ce7ff28f91f3cd5","tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr":"6776f505f0a2a6a67e3e5fbfa6ca0b9ca2653a1a623d1fb3b463305ec872699f","tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr":"e304eb9ed3f7a136c74a1c70fe73f5f75a169ea93aba2789e6441f84fbcfb03c","tests/fixtures/invalid/string/missing-quotes.stderr":"ae9dea4e735224472bfcdb61471def4877404a0a3680e41340b0495552ea8133","tests/fixtures/invalid/string/multiline-bad-escape-1.stderr":"7c5fc3bf00f17344781150281839f78228905d85e41895f4c6d5fb67c7ef0a2c","tests/fixtures/invalid/string/multiline-bad-escape-2.stderr":"c4f5464eced80eb93368ee62ec14c6c4c8160ec7e33000b5d7840f748306b2ea","tests/fixtures/invalid/string/multiline-bad-escape-3.stderr":"ad14d3d916a15353394638613d6d79da2e004e7e522c48edbd2ff45edbcb2685","tests/fixtures/invalid/string/multiline-bad-escape-4.stderr":"e0b254f4a49cde181f4d8d94e032299e1506a09e8bc5bd54590a04251d5978ab","tests/fixtures/invalid/string/multiline-escape-space-1.stderr":"addc40c648a77da6e8ee3d63e73e58331bc5f8cff6d4ba67bfe679db464de835","tests/fixtures/invalid/string/multiline-escape-space-2.stderr":"8e9cc938972808cdeb4e8d2f180e1ff856000eb52f3e77ed5149658c15296d75","tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr":"5e57a18bec64d8ca2fd53473aff6f1cdc8e5c35209ecf84a9e9da8ef3865fcfb","tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr":"40a6c9ece9e2b03c137283b825b6c0380e5778e1c76d20ed2f46647e3ea6b25d","tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr":"cfefa000b457e225de66a0618b2d245c0887099cda67c6ced68612df58a50c49","tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr":"12629cc0445ac282832bebf35e0bb2eb1e305a4a4c147f4103773501d56d3bae","tests/fixtures/invalid/string/multiline-no-close-1.stderr":"40f5d85746b8d297b1cc27bfcb95b8bd2a2a471f0b820bca0b3437c4ff6fecc2","tests/fixtures/invalid/string/multiline-no-close-2.stderr":"3c121acbcad1ef6821da5452f0e9223f75915be50ab11d69efa498cd2c9685a4","tests/fixtures/invalid/string/multiline-no-close-3.stderr":"9850d68e589fb8ebe7b1cbf9f27e4ac991d27b939a5be577df02aa9dae58207d","tests/fixtures/invalid/string/multiline-no-close-4.stderr":"dd0703ac4d584850805bb5a7afdb1e68db06fef1dbe2a93ba85b01ec76da6b9a","tests/fixtures/invalid/string/multiline-no-close-5.stderr":"c6874fe259394f8a14636182b4fb0f20009d678853fbf4f5c7e0e0d53fe0b789","tests/fixtures/invalid/string/multiline-quotes-1.stderr":"4d524fc6b34800ef6093894044763f1eba2b4fffc110b2558ad4f76249985651","tests/fixtures/invalid/string/no-close-1.stderr":"ee585c98fe640bd5a6edb8c5930358b1a7c9085d07e7fb318bc094e81dc6e1a5","tests/fixtures/invalid/string/no-close-2.stderr":"2284df23ebcab2f4a535e31726035f5cdda9d56190269a8189bd959fb806c636","tests/fixtures/invalid/string/no-close-3.stderr":"30cb3d9d517219b70c7d468207f0f4567d80b00330a943f482803980d8f65998","tests/fixtures/invalid/string/no-close-4.stderr":"4ff50513bc0249a3e503db5f255c1251bfdcdb764a6541d484f7e09bf4efbcab","tests/fixtures/invalid/string/string.stderr":"68446cc8fe418df4441e15118161a953cbeb22822d67c54b81c8f97aa48005f3","tests/fixtures/invalid/string/text-after-string.stderr":"a20980f6482cb204272c705c89ee6cc0987b44c5fb357466f05fe442754c1cc7","tests/fixtures/invalid/string/wrong-close.stderr":"6b376b179dd7022bea271e63e77f0afc15076cd4ad0c81bae6007fdc430072a4","tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr":"76b544968f3a5771cd2f5efad26167ab5bdcbd8b067586ec0e602281ae5869dd","tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr":"1379eea8bb3f62ddc212705a525cad262da23f16b03bd0626650c61c6811a680","tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr":"7b0ce2aee2d44c234a14bab3fb339661f00b3e3bd39784f3ae7058f3a48fbdc7","tests/fixtures/invalid/table/array-empty.stderr":"e3cd186fd3a22b55fb7e18c6247f91c8da4b61396bde01ab970847aba933b80d","tests/fixtures/invalid/table/array-implicit.stderr":"dcff7e1489ff2a416a5945891c7007152ebbb8cd028baff4439ad2167a1f5976","tests/fixtures/invalid/table/array-no-close-1.stderr":"a816d34d85c8a0ced8cb9315723ea1483711a6f19f6e2e2c96a409d7d43c6fe0","tests/fixtures/invalid/table/array-no-close-2.stderr":"b07a23ed41ea508abc35fcaaad1b38d30705ad874e62ecfb6affbffb39ff4487","tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr":"abfbf76b0555af439f38404ff1f4b2736a759f1bfca347f5eeb8a3754312e835","tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr":"a55218213d972554ab52867926d6c108a308c009b8be13e05578cba1a8638f67","tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr":"ebabea3cc176fc9f85083f697fd9d6ef97d7230e369be4c504e78c00a82672de","tests/fixtures/invalid/table/duplicate-key-table.stderr":"58598e44d8ab8e8fcaa0f9ddbe2415013ade6965db761d99162312cde1e56fd8","tests/fixtures/invalid/table/duplicate-table-array.stderr":"4079ad8885e7fdd2a0674c31767efb16350ac5906ea5f71f980e06b804a515ba","tests/fixtures/invalid/table/duplicate-table-array2.stderr":"9b647eef2e77b8538ea32d0533b80c870fa4173f0a5b151399c84d7edde3f31a","tests/fixtures/invalid/table/duplicate.stderr":"f537ae526887a2288b943ec1b2d3ee31bf0c9193feaa27bb9e8c447e104ece6d","tests/fixtures/invalid/table/empty-implicit-table.stderr":"b331fd776de53639f8b6f9740f0922ca97aa3919ea365904829dbd61e39a58d4","tests/fixtures/invalid/table/empty.stderr":"bc6c1109c2dea2c69becd952c68f7ced16d983051a9a0b32af1868349e4f2f40","tests/fixtures/invalid/table/equals-sign.stderr":"93ab20fbe68fd87648a4ee58d8af26ea7224818f605fa4cdb2ec5aaad652d050","tests/fixtures/invalid/table/llbrace.stderr":"90b78fd64904ea772687d8fea6df07b684a6d278a47aab242eeace8547921a18","tests/fixtures/invalid/table/nested-brackets-close.stderr":"85435c519a813544af5e686cd89f0a7c2944ab30806ee6fc3632266a03801a51","tests/fixtures/invalid/table/nested-brackets-open.stderr":"2bbca8c47edf49cb4541d869ec198beb5167bd9ea1e40d7daa461f03c5554293","tests/fixtures/invalid/table/no-close-1.stderr":"6e1bbe0ba02c31cd687a9dc8fe0fde2ce1c0cda31aec651dff58f41d8aa7d62a","tests/fixtures/invalid/table/no-close-2.stderr":"6e50b27f819a6769accee8b45850a2181932a8809fcdaf347c6d129ae6da307c","tests/fixtures/invalid/table/no-close-3.stderr":"68ce4165d0133af527af7c56fd1af4e652af27cc221f1051a8073e7192a78a20","tests/fixtures/invalid/table/no-close-4.stderr":"52d8e13b39b9507ef37a65c0eb779e89ff7d00fd4a70245d44225a35200a6ae7","tests/fixtures/invalid/table/no-close-5.stderr":"7c3f3c078dbeffcf3b55d3ba811d89fbdd19c1d2ae62b290224003ad26863a00","tests/fixtures/invalid/table/overwrite-array-in-parent.stderr":"f4f94892b9268181ad4e5d64337ec3bd11d0b1a49add7a7c52a0a949f511e79e","tests/fixtures/invalid/table/overwrite-bool-with-array.stderr":"1773dc739ded58c66dadc101668fde5877ba018268dc3b124a4b788b0a0f1c68","tests/fixtures/invalid/table/overwrite-with-deep-table.stderr":"7e1c743c45e4919cab3d36cff96a2165f15cd749411d8c9e758c7ccb7d972893","tests/fixtures/invalid/table/redefine-1.stderr":"a8795ab0ce678bea6299751633e08747b862a46c8f4546094cd1e5f643715202","tests/fixtures/invalid/table/redefine-2.stderr":"dbd674695c75ab83513cf0207304e7ec84565d6dac607e8da85eb9cf41475806","tests/fixtures/invalid/table/redefine-3.stderr":"e161dd3883e7d38e558d296898b637a09ff287cf35a8d921577693fd3c7a2770","tests/fixtures/invalid/table/rrbrace.stderr":"412d28cdee519340465a0e764529acffd5947f566d8b87d69a1a9890845e3747","tests/fixtures/invalid/table/super-twice.stderr":"c9d37817b5e5afd36a2ef3f12190ccf512217e5fdbb78d075d873ca2d2a90f98","tests/fixtures/invalid/table/text-after-table.stderr":"accc6467f519ab738eaa646c255d527ae47c4958231db59b2a9ef16549dc2fbe","tests/fixtures/invalid/table/whitespace.stderr":"73d125e308a219ce5aba0d45ea17b6247eda746e76740f640066b891092efd16","tests/fixtures/invalid/table/with-pound.stderr":"eb3fd32c944de502852f2e7b453f3f56849e7fbdbe9060863f9d65e308bd7f2d","tests/invalid.rs":"a8ca04aa4970cd310aaa01b97a55f78f84e6ccc0cae0974bb5e3b78056f5f437","tests/testsuite/convert.rs":"bb224d372b98c2c746c0ed127dd4c0289b1486b070b5d126939a412add34b461","tests/testsuite/datetime.rs":"62354b8e44466ecb63e0b64ab5e70212075cc42bc5ddf00d513004968f01c15e","tests/testsuite/edit.rs":"ea917588c1e2a331864f59340d4c385fc20156d551ead34438908d76522ed434","tests/testsuite/float.rs":"91b0be9a56c5b0ce7e54f7eda3ec72efbb33f855ebd49da660483bba3935586a","tests/testsuite/invalid.rs":"b2998cd7a30c8dc96f614e938edc9a7bf2eccf5662706994241294220319319a","tests/testsuite/main.rs":"c85d415a8c20f47f383c051fe7cfe3324947844bee922d6135cabdf63ada8403","tests/testsuite/parse.rs":"e3c19bc40167768cd50613ffef316c1ea31bdba3d9f52e997a0a84cc67d2ec19","tests/testsuite/stackoverflow.rs":"74df28497f99d467cb710eb5b3c48e77360747c7c21242e6a82c55389f0d92e1"}}
\ No newline at end of file
diff --git a/crates/toml_edit/cargo_embargo.json b/crates/toml_edit/cargo_embargo.json
index 262fe71..b3204ba 100644
--- a/crates/toml_edit/cargo_embargo.json
+++ b/crates/toml_edit/cargo_embargo.json
@@ -8,5 +8,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tracing-attributes/.android-checksum.json b/crates/tracing-attributes/.android-checksum.json
index abf2078..2bd0ddb 100644
--- a/crates/tracing-attributes/.android-checksum.json
+++ b/crates/tracing-attributes/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"cd6fbccb20c7dd5338d83ca72e777ddb2d3084e2ce6d4ef38719e0f461287ec2","Android.bp":"af09534d1f9d54c71da8c1136064b63b902e0206d0f6432e9b1bf620ef5bc521","CHANGELOG.md":"557f0fb29f5a63d9536f3ca28a4028ad93f8048823d97c61c6446055d53e2f47","Cargo.toml":"e7e7d39e938fe3dd249380818afda0f8389dbd976a3db389cc1a1d36c1a20585","LICENSE":"81b5afff24bf73e7d6660ff9e03a493ba57f494dad837134a654b3945a3199d7","METADATA":"1f671a5079aba08c4786fec5c64c44689a2ccb2d9bec9002f06cb62cec601aa3","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"be66b185b95c0f33bf9b6f370ba045f1f79765ac9566858d704ca31c44427fba","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/attr.rs":"be4d482d9e634afafacf5e13cb20abff62f983512979111f507a25b7f49fc82d","src/expand.rs":"7f24b1fa5f0beffb34edddbe2f49b709eff128df6397ef93cc9ae1ca7351c390","src/lib.rs":"505bd3bbe87a8b23e8a6a1fb265281eb77ce8bb03c4eae8edd8eb1afb3d72359","tests/async_fn.rs":"6e42feaa7fbb7f997a34e2f284e692a0c068ef28e8d2c21a3fb5f20bf4bd1d56","tests/destructuring.rs":"2e836898172f24182c0b54e0edf93e36a71127f521c0b7e31fb35a9cab7f6910","tests/err.rs":"f142f076c2c4863939006cc81691758b7d9ff7eb5a6eaa95008838090d78cd10","tests/fields.rs":"312d5e3d2441eeb8ce9154b8a3603ec8c3fd14c6b1c5155a962a2e1a5bc25e84","tests/follows_from.rs":"81a24187fee1c9f9313f6dd6370c467463591d36909d5e0bf54a2ec9c2e2cf5b","tests/instrument.rs":"d5d18ee7485d08b65dcfcdbead9c22bfa51ebfb89180f12f8f4e640ed907f8b1","tests/levels.rs":"14cda34bffb5b733f1acaf6080557c6b9cf3efa6581e68e23803033c57df6c20","tests/names.rs":"9d2946928ce2265cda11ecf5ddb2ebae06531b44094b17f116f00f38578d87cb","tests/parents.rs":"3653fbfed4e27f962cbd1bbefedf3b599e92c1021424ae1b800d041c5bbd5284","tests/ret.rs":"e22f7fadb3b37da2e992ecb20511a10edb505726bfe71497438794fb11e43252","tests/targets.rs":"87d18793c2b5bc58a8d40830810e80ac0766c0fc359cd545c73a2dc1cb6007bf","tests/ui.rs":"d5efab7ed2ff60a29bc373dd70f9f25cc2002549a6cd0a62668b81e2e94fe450","tests/ui/async_instrument.rs":"c435a93406c0b912b6783a1b18eb88f163905184fbd77e566f2ddc5e308e1c9b","tests/ui/async_instrument.stderr":"67f2a821cf63ed39c69a47174228d1efcb928b9130c24f9f44be3725ae342874","tests/ui/const_instrument.rs":"e860a5afc023682de98f8268de56e685dcb63ffe130a4dcc0c6911bcb050cbce","tests/ui/const_instrument.stderr":"fa25a10ec58d70ce0b0bf8c199b252fd1be32353787332d8cfd0fdf76112acfa"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"cd6fbccb20c7dd5338d83ca72e777ddb2d3084e2ce6d4ef38719e0f461287ec2","Android.bp":"9ddae396e0ff11b51697ff964b188cab4d45a71ad5a0fa7b0318c747a795ebd5","CHANGELOG.md":"557f0fb29f5a63d9536f3ca28a4028ad93f8048823d97c61c6446055d53e2f47","Cargo.toml":"e7e7d39e938fe3dd249380818afda0f8389dbd976a3db389cc1a1d36c1a20585","LICENSE":"81b5afff24bf73e7d6660ff9e03a493ba57f494dad837134a654b3945a3199d7","METADATA":"1f671a5079aba08c4786fec5c64c44689a2ccb2d9bec9002f06cb62cec601aa3","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"be66b185b95c0f33bf9b6f370ba045f1f79765ac9566858d704ca31c44427fba","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/attr.rs":"be4d482d9e634afafacf5e13cb20abff62f983512979111f507a25b7f49fc82d","src/expand.rs":"7f24b1fa5f0beffb34edddbe2f49b709eff128df6397ef93cc9ae1ca7351c390","src/lib.rs":"505bd3bbe87a8b23e8a6a1fb265281eb77ce8bb03c4eae8edd8eb1afb3d72359","tests/async_fn.rs":"6e42feaa7fbb7f997a34e2f284e692a0c068ef28e8d2c21a3fb5f20bf4bd1d56","tests/destructuring.rs":"2e836898172f24182c0b54e0edf93e36a71127f521c0b7e31fb35a9cab7f6910","tests/err.rs":"f142f076c2c4863939006cc81691758b7d9ff7eb5a6eaa95008838090d78cd10","tests/fields.rs":"312d5e3d2441eeb8ce9154b8a3603ec8c3fd14c6b1c5155a962a2e1a5bc25e84","tests/follows_from.rs":"81a24187fee1c9f9313f6dd6370c467463591d36909d5e0bf54a2ec9c2e2cf5b","tests/instrument.rs":"d5d18ee7485d08b65dcfcdbead9c22bfa51ebfb89180f12f8f4e640ed907f8b1","tests/levels.rs":"14cda34bffb5b733f1acaf6080557c6b9cf3efa6581e68e23803033c57df6c20","tests/names.rs":"9d2946928ce2265cda11ecf5ddb2ebae06531b44094b17f116f00f38578d87cb","tests/parents.rs":"3653fbfed4e27f962cbd1bbefedf3b599e92c1021424ae1b800d041c5bbd5284","tests/ret.rs":"e22f7fadb3b37da2e992ecb20511a10edb505726bfe71497438794fb11e43252","tests/targets.rs":"87d18793c2b5bc58a8d40830810e80ac0766c0fc359cd545c73a2dc1cb6007bf","tests/ui.rs":"d5efab7ed2ff60a29bc373dd70f9f25cc2002549a6cd0a62668b81e2e94fe450","tests/ui/async_instrument.rs":"c435a93406c0b912b6783a1b18eb88f163905184fbd77e566f2ddc5e308e1c9b","tests/ui/async_instrument.stderr":"67f2a821cf63ed39c69a47174228d1efcb928b9130c24f9f44be3725ae342874","tests/ui/const_instrument.rs":"e860a5afc023682de98f8268de56e685dcb63ffe130a4dcc0c6911bcb050cbce","tests/ui/const_instrument.stderr":"fa25a10ec58d70ce0b0bf8c199b252fd1be32353787332d8cfd0fdf76112acfa"}}
\ No newline at end of file
diff --git a/crates/tracing-attributes/Android.bp b/crates/tracing-attributes/Android.bp
index 0d2b6d6..054bd89 100644
--- a/crates/tracing-attributes/Android.bp
+++ b/crates/tracing-attributes/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/tracing-attributes/cargo_embargo.json b/crates/tracing-attributes/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/tracing-attributes/cargo_embargo.json
+++ b/crates/tracing-attributes/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/tungstenite/.android-checksum.json b/crates/tungstenite/.android-checksum.json
index 261584e..9f9767b 100644
--- a/crates/tungstenite/.android-checksum.json
+++ b/crates/tungstenite/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1752b7d44ef10b3693a4ebe37517084ca7fba77b51cf55c76c6dc89236d8af38","Android.bp":"60fd38495349b1ab40738af89d4889d0d385221699ad2978e021da756c600526","CHANGELOG.md":"f93ca5ef40a4d8fa295cb01b432c61ccae83f366b303ff6fb9b6f6c8cdbb88eb","Cargo.lock":"8e1ad40f9fcccd27882f8f26c7ca5769172ec97e8a4bf32403cbf9d06e1d0dde","Cargo.toml":"15e568ff82eeefa39118e34166a22fc4ffce72f31bfed161030b7a061d5ce31b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"d1c589e52840b64acfd0550a3e0cc8a390f3dcaafae4b71a211512b3ecf4926b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fd300344cd2672f34d1313ae163e787f621affb0e778a025e88a10b3eb464946","benches/buffer.rs":"39cae616e4f10bb91e512d7040fd76733376cfe1cdd9bb47c08a35c92c0fb5fa","benches/write.rs":"a4a30aa69221ee7d4f34310a2ac0608935cedaa2ea8a747b8bff30cf6325e24b","cargo_embargo.json":"ab8fe9ae28c2e1ae4815aa7c0dcf4e3043ddfb6eb647d025e0d1a3c7ec3a7ab4","examples/autobahn-client.rs":"312d5fa595f9cfebe068e48f365f91097a5b7a32b96eb93b3885d8090ddd352a","examples/autobahn-server.rs":"0680afb9eb37f268dd3adc58504900ec82c56e694e7e6e222af5b335f5f223d0","examples/callback-error.rs":"c4cea677237534a0b92c08ba4373b385c1761bd8d41d40275ec70342cb3a9d88","examples/client.rs":"7d15ef2b3e112e1131863899af01384522fc37c83d889428105046bc5838747f","examples/server.rs":"5ec9ad244d281deb0bf29080d6343a6206c5ae6bb9e275d20da99a1e183369ba","examples/srv_accept_unmasked_frames.rs":"95b45392010c89bb0de154bad23ec84cd45dac9197bf0255080086fcca5a5888","src/buffer.rs":"29815269d88d4893708b8d0badf6699ed76c2270e4adbff0f87f05d0ff7b91a5","src/client.rs":"8c25bab275a8773af9b8ba078509ca2d33362010adb5197bed443cc237ef28fc","src/error.rs":"ba560f403dace05a43f361f76cd7d8401e9f7e5102defa2e0f6ac3686a4f9442","src/handshake/client.rs":"879425517c96efe9628e48454be1470e08922be2c9a1eb241cffbe402bb27367","src/handshake/headers.rs":"4cd4ffd698b53f03f1ecb5389a9034d861c1ec4e0344b191730630a4a066ea0b","src/handshake/machine.rs":"bbca958a2c2e2ce66d5d4396f7db75a7ec2e26e03551ee228c404221c6b3ed9d","src/handshake/mod.rs":"371474e1e0dbf2fdd411f370763ffbefb7f98638a76498c6a9cbbba7eab60f0e","src/handshake/server.rs":"101ff8268099b6caa154e83ff32ef72d28cec3035664ddf793ff83ec9e7cfbb1","src/lib.rs":"9a4e0a99d141eee29b250e3484cb930a78d454edf1b18aafad8a103fbd75d2d8","src/protocol/frame/coding.rs":"22e18e946fe8ea7dabee2f04a074513076be111197a24def06b056adb9ba7907","src/protocol/frame/frame.rs":"785735f1358b10241ca631fbb488ad880ef9a1c0cd0db8eb41be42511cce955e","src/protocol/frame/mask.rs":"7c3ba13e21924a0bcaeac08858d685b4d3f77fb6240424b4f78614e928075b94","src/protocol/frame/mod.rs":"16ee9055023cf8918b35238c1d3c10d82149e48c7b796ebba2ada2c64be91fce","src/protocol/message.rs":"b03d221b0fd36702ccab2eacec54537502e6848347a9a025776f0d69b16aa3d1","src/protocol/mod.rs":"7f284681aa2095f02c6457d376f03a2951421166fa1b5e47da047a57932a8bdb","src/server.rs":"cef598fc1bfab158284a5518da8468067f901363fa3540a761be0058be97900f","src/stream.rs":"138ac055f480029d2272621d31326d1f32133f63bfda8e68d0e887e36e5a2640","src/tls.rs":"25b0e9427f75b22384b641274aea94a14f15cd4570f5618dc2972c18561004c7","src/util.rs":"edb9d908ca0ef207a8a9ecab79cdf1fc9f91cf3cb62787154823f77dd0d08469"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1752b7d44ef10b3693a4ebe37517084ca7fba77b51cf55c76c6dc89236d8af38","Android.bp":"e3827ff4bacb21ea8cb9cf5966e842abacdd60c1316a53c81700e03fbb52b3f2","CHANGELOG.md":"f93ca5ef40a4d8fa295cb01b432c61ccae83f366b303ff6fb9b6f6c8cdbb88eb","Cargo.lock":"8e1ad40f9fcccd27882f8f26c7ca5769172ec97e8a4bf32403cbf9d06e1d0dde","Cargo.toml":"15e568ff82eeefa39118e34166a22fc4ffce72f31bfed161030b7a061d5ce31b","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"d1c589e52840b64acfd0550a3e0cc8a390f3dcaafae4b71a211512b3ecf4926b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fd300344cd2672f34d1313ae163e787f621affb0e778a025e88a10b3eb464946","benches/buffer.rs":"39cae616e4f10bb91e512d7040fd76733376cfe1cdd9bb47c08a35c92c0fb5fa","benches/write.rs":"a4a30aa69221ee7d4f34310a2ac0608935cedaa2ea8a747b8bff30cf6325e24b","cargo_embargo.json":"9f60acdad07efd57b553a157e62d2e9ed9e020595deab483eb2f78a24f6d4113","examples/autobahn-client.rs":"312d5fa595f9cfebe068e48f365f91097a5b7a32b96eb93b3885d8090ddd352a","examples/autobahn-server.rs":"0680afb9eb37f268dd3adc58504900ec82c56e694e7e6e222af5b335f5f223d0","examples/callback-error.rs":"c4cea677237534a0b92c08ba4373b385c1761bd8d41d40275ec70342cb3a9d88","examples/client.rs":"7d15ef2b3e112e1131863899af01384522fc37c83d889428105046bc5838747f","examples/server.rs":"5ec9ad244d281deb0bf29080d6343a6206c5ae6bb9e275d20da99a1e183369ba","examples/srv_accept_unmasked_frames.rs":"95b45392010c89bb0de154bad23ec84cd45dac9197bf0255080086fcca5a5888","src/buffer.rs":"29815269d88d4893708b8d0badf6699ed76c2270e4adbff0f87f05d0ff7b91a5","src/client.rs":"8c25bab275a8773af9b8ba078509ca2d33362010adb5197bed443cc237ef28fc","src/error.rs":"ba560f403dace05a43f361f76cd7d8401e9f7e5102defa2e0f6ac3686a4f9442","src/handshake/client.rs":"879425517c96efe9628e48454be1470e08922be2c9a1eb241cffbe402bb27367","src/handshake/headers.rs":"4cd4ffd698b53f03f1ecb5389a9034d861c1ec4e0344b191730630a4a066ea0b","src/handshake/machine.rs":"bbca958a2c2e2ce66d5d4396f7db75a7ec2e26e03551ee228c404221c6b3ed9d","src/handshake/mod.rs":"371474e1e0dbf2fdd411f370763ffbefb7f98638a76498c6a9cbbba7eab60f0e","src/handshake/server.rs":"101ff8268099b6caa154e83ff32ef72d28cec3035664ddf793ff83ec9e7cfbb1","src/lib.rs":"9a4e0a99d141eee29b250e3484cb930a78d454edf1b18aafad8a103fbd75d2d8","src/protocol/frame/coding.rs":"22e18e946fe8ea7dabee2f04a074513076be111197a24def06b056adb9ba7907","src/protocol/frame/frame.rs":"785735f1358b10241ca631fbb488ad880ef9a1c0cd0db8eb41be42511cce955e","src/protocol/frame/mask.rs":"7c3ba13e21924a0bcaeac08858d685b4d3f77fb6240424b4f78614e928075b94","src/protocol/frame/mod.rs":"16ee9055023cf8918b35238c1d3c10d82149e48c7b796ebba2ada2c64be91fce","src/protocol/message.rs":"b03d221b0fd36702ccab2eacec54537502e6848347a9a025776f0d69b16aa3d1","src/protocol/mod.rs":"7f284681aa2095f02c6457d376f03a2951421166fa1b5e47da047a57932a8bdb","src/server.rs":"cef598fc1bfab158284a5518da8468067f901363fa3540a761be0058be97900f","src/stream.rs":"138ac055f480029d2272621d31326d1f32133f63bfda8e68d0e887e36e5a2640","src/tls.rs":"25b0e9427f75b22384b641274aea94a14f15cd4570f5618dc2972c18561004c7","src/util.rs":"edb9d908ca0ef207a8a9ecab79cdf1fc9f91cf3cb62787154823f77dd0d08469"}}
\ No newline at end of file
diff --git a/crates/tungstenite/Android.bp b/crates/tungstenite/Android.bp
index 6597038..11f18be 100644
--- a/crates/tungstenite/Android.bp
+++ b/crates/tungstenite/Android.bp
@@ -35,4 +35,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/tungstenite/cargo_embargo.json b/crates/tungstenite/cargo_embargo.json
index b639cc5..4737641 100644
--- a/crates/tungstenite/cargo_embargo.json
+++ b/crates/tungstenite/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"features": [],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/twox-hash/.android-checksum.json b/crates/twox-hash/.android-checksum.json
index 9fe2f94..149b0fc 100644
--- a/crates/twox-hash/.android-checksum.json
+++ b/crates/twox-hash/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"ac4b6846550b5de97f894aebf0b5f0c200aaec5cec59543b18837d5021200191","Android.bp":"9169c42476cb14813f86c0e8138185cb050f26bfa5831120c245ba89f2e71153","CHANGELOG.md":"ab441a59cfbb4d393ec50f8a20cc0ef26e029babb613f22d68029dfa00efd4da","Cargo.toml":"6d45d2aff43535358170842447aa612046739d1c75ed857ba0291bc950e36478","LICENSE":"fc031453123dd708eaa3701676a3bd4499e74210ed08681ceac606a36eed31b5","LICENSE.txt":"fc031453123dd708eaa3701676a3bd4499e74210ed08681ceac606a36eed31b5","METADATA":"d74ab9a9986f448224b519091c775ca2392b02d57e8c3b4ebe754efcdc26407e","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ab3c241279453ec28ec9f984402f448eb987ba018b644229c99ca6d6a2ccac41","TEST_MAPPING":"bd09946d0ac6db7c8df83cad2aa5f9d1f8a14bc5d1c5317849cdd484fd87bbe4","cargo_embargo.json":"b622d968e90d8059fff193d85eab060c0530a0cf64db68475e4374dcd73e1ac2","clippy.toml":"68c4e9e2fdd2226efe63a39fb9eddaff52940c1ce24012ec5e8f11cf6d2a4ca5","src/lib.rs":"91e33b4f47c53f0fb7c5d0698a7b6b41f8558c1c45d39c3c4441166aa820dbe1","src/xxhash3.rs":"293bce13663248c63d2c8424f3f0d4c8abed6446ea846b7849181965bcf1e555","src/xxhash3/large.rs":"114429b4a1e2d770bd91ab20656ee2c29a8053be5c7d2a6966b3176e4eb7c12b","src/xxhash3/large/avx2.rs":"dd070bcf170fdbef84316f0054e78a17f61f3beabaed97011b4ef2a7a0bc517c","src/xxhash3/large/neon.rs":"489e46b49b4eb53357510f16260c1ec932041124a16d11b0524be76fbe5e8fe5","src/xxhash3/large/scalar.rs":"268b2b790a29b8d2f793273b7cc29f0efb3e4dd8d5cdad66d11a4c5ff38494fd","src/xxhash3/large/sse2.rs":"d90893cd94f85980861b78884f3313d61f76ea1505f61dddefd4b132d6e18fde","src/xxhash3/secret.rs":"df943f90f1f0a2aee9e979585c51d83f2811d6ef456cf05e8887f72a4b99cbb5","src/xxhash3/streaming.rs":"f92409e486c7133df893f227153e703e8837fd0b5df27d35e50b81bf224be06c","src/xxhash32.rs":"8d6ae63689fe9329418ae0616cb70af3d18f7486cbf245cf8fedba8f26fa6d66","src/xxhash3_128.rs":"c00d59ced64d3d002a2a32c2650def08cd8f19b9cce40d975c19115c56b17607","src/xxhash3_64.rs":"ebee709850d19f52288345e0e4c7c8ebd3aed9cac03a6309c47e29a74de136ea","src/xxhash64.rs":"38ea94f1b9b577dec5da5f383138a14ac3a148f97d566003906528984199af79"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"ac4b6846550b5de97f894aebf0b5f0c200aaec5cec59543b18837d5021200191","Android.bp":"08e81abb22def128798e0744eefcc14639fccd8bd229e5a9b371415d8cd0d11c","CHANGELOG.md":"ab441a59cfbb4d393ec50f8a20cc0ef26e029babb613f22d68029dfa00efd4da","Cargo.toml":"6d45d2aff43535358170842447aa612046739d1c75ed857ba0291bc950e36478","LICENSE":"fc031453123dd708eaa3701676a3bd4499e74210ed08681ceac606a36eed31b5","LICENSE.txt":"fc031453123dd708eaa3701676a3bd4499e74210ed08681ceac606a36eed31b5","METADATA":"d74ab9a9986f448224b519091c775ca2392b02d57e8c3b4ebe754efcdc26407e","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ab3c241279453ec28ec9f984402f448eb987ba018b644229c99ca6d6a2ccac41","TEST_MAPPING":"bd09946d0ac6db7c8df83cad2aa5f9d1f8a14bc5d1c5317849cdd484fd87bbe4","cargo_embargo.json":"0a7b0451f923c51d45402574b4b98c4f71c19c862213bedcc58230da264a4471","clippy.toml":"68c4e9e2fdd2226efe63a39fb9eddaff52940c1ce24012ec5e8f11cf6d2a4ca5","src/lib.rs":"91e33b4f47c53f0fb7c5d0698a7b6b41f8558c1c45d39c3c4441166aa820dbe1","src/xxhash3.rs":"293bce13663248c63d2c8424f3f0d4c8abed6446ea846b7849181965bcf1e555","src/xxhash3/large.rs":"114429b4a1e2d770bd91ab20656ee2c29a8053be5c7d2a6966b3176e4eb7c12b","src/xxhash3/large/avx2.rs":"dd070bcf170fdbef84316f0054e78a17f61f3beabaed97011b4ef2a7a0bc517c","src/xxhash3/large/neon.rs":"489e46b49b4eb53357510f16260c1ec932041124a16d11b0524be76fbe5e8fe5","src/xxhash3/large/scalar.rs":"268b2b790a29b8d2f793273b7cc29f0efb3e4dd8d5cdad66d11a4c5ff38494fd","src/xxhash3/large/sse2.rs":"d90893cd94f85980861b78884f3313d61f76ea1505f61dddefd4b132d6e18fde","src/xxhash3/secret.rs":"df943f90f1f0a2aee9e979585c51d83f2811d6ef456cf05e8887f72a4b99cbb5","src/xxhash3/streaming.rs":"f92409e486c7133df893f227153e703e8837fd0b5df27d35e50b81bf224be06c","src/xxhash32.rs":"8d6ae63689fe9329418ae0616cb70af3d18f7486cbf245cf8fedba8f26fa6d66","src/xxhash3_128.rs":"c00d59ced64d3d002a2a32c2650def08cd8f19b9cce40d975c19115c56b17607","src/xxhash3_64.rs":"ebee709850d19f52288345e0e4c7c8ebd3aed9cac03a6309c47e29a74de136ea","src/xxhash64.rs":"38ea94f1b9b577dec5da5f383138a14ac3a148f97d566003906528984199af79"}}
\ No newline at end of file
diff --git a/crates/twox-hash/Android.bp b/crates/twox-hash/Android.bp
index 371e6b1..999f17c 100644
--- a/crates/twox-hash/Android.bp
+++ b/crates/twox-hash/Android.bp
@@ -38,6 +38,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/twox-hash/cargo_embargo.json b/crates/twox-hash/cargo_embargo.json
index abeede5..456581d 100644
--- a/crates/twox-hash/cargo_embargo.json
+++ b/crates/twox-hash/cargo_embargo.json
@@ -1,4 +1,7 @@
{
"tests": true,
- "module_blocklist": ["hash_file"]
-}
+ "module_blocklist": [
+ "hash_file"
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ucd-trie/.android-checksum.json b/crates/ucd-trie/.android-checksum.json
index a02e24e..7eb5e8e 100644
--- a/crates/ucd-trie/.android-checksum.json
+++ b/crates/ucd-trie/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"11075ec80d03968d63911e16cf8a115517f796651d274765b4885e89e2d59059","Android.bp":"ce38247603a7348823dcb5e8835f268a7ff251ca95e3b426d7155f51a546ffe9","Cargo.toml":"02f691aeb1e1a835452c200c8dde3bf03baa500d74d6e0d99c439d7a7b53cb44","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"683a448207250bd7f0889d4fc559753f4b13c4eb6f433243652f3e18338f96db","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a03b211f35702a4f45bc06935506626e71fae856f8ed5d48e44ac24ba8965ed2","benches/bench.rs":"7e3d91717ca67b740fa5c4127e9278410bda3e74e8a7a4706f8ee40f6bb160c1","cargo_embargo.json":"ad0819b9d6f6999319dec49128e2d7faa980bf09168c1b229fd010605ca5b8a9","src/general_category.rs":"c772f77d7a5d694aa9ce1dda96a2e9d78ccd586eee70e3434c1cb2ff644ec298","src/lib.rs":"797f2840e1d8d5ae9f9f1490ce457e6ca9a70701097638bcb4c6bb01b9516351","src/owned.rs":"c64307c18c8bd3791b19b18d35d6b60d14d5508ebe5cff674cc5dabb1117c9e9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"11075ec80d03968d63911e16cf8a115517f796651d274765b4885e89e2d59059","Android.bp":"ce38247603a7348823dcb5e8835f268a7ff251ca95e3b426d7155f51a546ffe9","Cargo.toml":"02f691aeb1e1a835452c200c8dde3bf03baa500d74d6e0d99c439d7a7b53cb44","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"683a448207250bd7f0889d4fc559753f4b13c4eb6f433243652f3e18338f96db","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a03b211f35702a4f45bc06935506626e71fae856f8ed5d48e44ac24ba8965ed2","benches/bench.rs":"7e3d91717ca67b740fa5c4127e9278410bda3e74e8a7a4706f8ee40f6bb160c1","cargo_embargo.json":"6422276718a89312f266054ceea5ad7147ff7b71b8d1144d99017976a5a5aaa3","src/general_category.rs":"c772f77d7a5d694aa9ce1dda96a2e9d78ccd586eee70e3434c1cb2ff644ec298","src/lib.rs":"797f2840e1d8d5ae9f9f1490ce457e6ca9a70701097638bcb4c6bb01b9516351","src/owned.rs":"c64307c18c8bd3791b19b18d35d6b60d14d5508ebe5cff674cc5dabb1117c9e9"}}
\ No newline at end of file
diff --git a/crates/ucd-trie/cargo_embargo.json b/crates/ucd-trie/cargo_embargo.json
index 680a89d..5518c6b 100644
--- a/crates/ucd-trie/cargo_embargo.json
+++ b/crates/ucd-trie/cargo_embargo.json
@@ -5,5 +5,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/ucs2/.android-checksum.json b/crates/ucs2/.android-checksum.json
index 0d44a82..16b560d 100644
--- a/crates/ucs2/.android-checksum.json
+++ b/crates/ucs2/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"68db6101486f5162b8a654a091e902f550a86164e1b84e6e1a9fda74a25c237a","Android.bp":"38b4b860a3100096de59bd42e354e63a8867804761620a089345d3f15441016c","CHANGELOG.md":"439e1da35f77471b8e4e13d83c30a4b914c281bd59b604c1d64c3b9ca5c1db27","Cargo.toml":"3c2446a49ac7b4ce22758617e62404f3ce4aad27718b13bb44b31aecdeb87ff3","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"265562abf2cf4f400d500c7153768a305edb9a22297a2d03ee11e9f9ce8d3860","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"48c7ebb7f340a4824c006533b202333d2ae55908044d010dde39139328c8e81d","cargo_embargo.json":"6247ed3cb53c3d68e25de46646949b6577c02c934030f0969c3608a1df632df5","src/lib.rs":"7535a9a6aa4d35a0defdb53a34d00a2db49e7e2f7aa458167f18a236bfb9dcdb","src/macros.rs":"39d67e94af306609850910cdf34f4cc98f211d58da23898312e6be4b79de678a","tests/tests.rs":"3ca2314d3e6b3a3e560b401652b8f71217c0be8c62b56ad313eb3a83fc8019a3"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"68db6101486f5162b8a654a091e902f550a86164e1b84e6e1a9fda74a25c237a","Android.bp":"05bb606f41fcc85db88f682dae2a30217ed90da72e35fd27f1a6284b63f8d060","CHANGELOG.md":"439e1da35f77471b8e4e13d83c30a4b914c281bd59b604c1d64c3b9ca5c1db27","Cargo.toml":"3c2446a49ac7b4ce22758617e62404f3ce4aad27718b13bb44b31aecdeb87ff3","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"265562abf2cf4f400d500c7153768a305edb9a22297a2d03ee11e9f9ce8d3860","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"48c7ebb7f340a4824c006533b202333d2ae55908044d010dde39139328c8e81d","cargo_embargo.json":"0560e0a27834b829fd87f2cb5621c634aae2ab77099c28f10c1808005ec3cb67","src/lib.rs":"7535a9a6aa4d35a0defdb53a34d00a2db49e7e2f7aa458167f18a236bfb9dcdb","src/macros.rs":"39d67e94af306609850910cdf34f4cc98f211d58da23898312e6be4b79de678a","tests/tests.rs":"3ca2314d3e6b3a3e560b401652b8f71217c0be8c62b56ad313eb3a83fc8019a3"}}
\ No newline at end of file
diff --git a/crates/ucs2/Android.bp b/crates/ucs2/Android.bp
index ea68943..45618b7 100644
--- a/crates/ucs2/Android.bp
+++ b/crates/ucs2/Android.bp
@@ -33,4 +33,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/ucs2/cargo_embargo.json b/crates/ucs2/cargo_embargo.json
index c1dd1e6..4af4550 100644
--- a/crates/ucs2/cargo_embargo.json
+++ b/crates/ucs2/cargo_embargo.json
@@ -10,5 +10,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/uefi-macros/.android-checksum.json b/crates/uefi-macros/.android-checksum.json
index cce7042..aedde63 100644
--- a/crates/uefi-macros/.android-checksum.json
+++ b/crates/uefi-macros/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a319fe1baed3c486ccb6163e4fa74748b526d200389865474655b0b476d08a4e","Android.bp":"e2d9159726fa89ef24ec89a980613877712e75d7feb1ef70f581e2721108a291","CHANGELOG.md":"6bed0918e922e0d7e2256ae20d1813475ed3381923ae121883bde23ac343905d","Cargo.toml":"ccc2c3d6e709c97ec102e73e4a8bd1e2a984125c165ddea739ffd7ffd03df06c","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"d7de30827335bc93ded23f1572c1ec0177e3eaf73667852059322b9a101bfb56","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4b263857b6bce7cb088948e36758d9048eb79eab93132dba1fc8977d24cf4fda","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","src/lib.rs":"da76b540de75ef8c6122ab6cd1c66a2d0608ad0bc663f0f8c9e42b9f7d36cc53","tests/compilation.rs":"c961a3a048014772100089634295170f41967448521580fab216eb11016d80df","tests/ui/fail/entry_bad_abi.rs":"0cd47dab70bb413e88f9d171db4170b23e9aceac2e97ac6df2e02adabacec6d9","tests/ui/fail/entry_bad_abi.stderr":"9074b6f986d99a5dca31113f78de17f2dc71814e8a518aa6d17d951b14d82c76","tests/ui/fail/entry_bad_arg.rs":"78e4164f93b50c3192f7f31940d7bd0e4b8a07620573218658b8f13832061db0","tests/ui/fail/entry_bad_arg.stderr":"19b7035265757837b93fdffd33a99ec73867055107ff02a118f17282dd1c1a23","tests/ui/fail/entry_bad_async.rs":"8e9263cc22f4961d66421cf8f49ff6ec1b08523993381df851cedba112006a7d","tests/ui/fail/entry_bad_async.stderr":"9b5c3d54728429c3ce06e3eb87955d43aaa0425ee8e50885ebf9ee2161bea7fb","tests/ui/fail/entry_bad_attr_arg.rs":"0a4e1a1e9199e6fe93f0c669d473d84930c6f1f478efffb4e2af334945782b8a","tests/ui/fail/entry_bad_attr_arg.stderr":"54352a1e033cf8147736be351583769424ecfa1ae0f89564e94e2486c0f5c990","tests/ui/fail/entry_bad_const.rs":"abcf213e162fdddb909dc57e479bd07791b74f328c97c20d1f8c2809e665947c","tests/ui/fail/entry_bad_const.stderr":"56de4f83dfade0d9829d2ada05c48f65faf19aa3685479915ea541c687adccb7","tests/ui/fail/entry_bad_generic.rs":"26ef86703e6ec809f9310eb349a5b6bfb6ffdf216f435c9f4b90de4b99fe92f2","tests/ui/fail/entry_bad_generic.stderr":"a7347c2d3a79ed07fc226b6c9dfd7d71ac9843d27434c1f55227279a2d51e328","tests/ui/fail/entry_bad_return_type.rs":"ac87dd07dc7438eb59e6be51aac1440eb2b4711b0479d2d9e5074f306d863637","tests/ui/fail/entry_bad_return_type.stderr":"97d11e9c733d29992c88c740255d4951e2375a5de013231faae3b566d3b964d8","tests/ui/pass/entry.rs":"3a9c1500a0d19d4de4f9cefcc561e7c4fcc178f20335a12a700284eca7362f33","tests/ui/pass/entry_docstring.rs":"e3d7e231418a56dbf6d180bc990efb9e23c94f41cc6f3dee0967549bd838f6c6","tests/ui/pass/entry_unsafe.rs":"992c54f2db563ae60aaf03e9565ed527461f087f45bebbb3700c809471394115"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a319fe1baed3c486ccb6163e4fa74748b526d200389865474655b0b476d08a4e","Android.bp":"a83232849a9eefc3aa4ffde88ad8874f3cfef329327751af37a68593515d72cf","CHANGELOG.md":"6bed0918e922e0d7e2256ae20d1813475ed3381923ae121883bde23ac343905d","Cargo.toml":"ccc2c3d6e709c97ec102e73e4a8bd1e2a984125c165ddea739ffd7ffd03df06c","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"d7de30827335bc93ded23f1572c1ec0177e3eaf73667852059322b9a101bfb56","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4b263857b6bce7cb088948e36758d9048eb79eab93132dba1fc8977d24cf4fda","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","src/lib.rs":"da76b540de75ef8c6122ab6cd1c66a2d0608ad0bc663f0f8c9e42b9f7d36cc53","tests/compilation.rs":"c961a3a048014772100089634295170f41967448521580fab216eb11016d80df","tests/ui/fail/entry_bad_abi.rs":"0cd47dab70bb413e88f9d171db4170b23e9aceac2e97ac6df2e02adabacec6d9","tests/ui/fail/entry_bad_abi.stderr":"9074b6f986d99a5dca31113f78de17f2dc71814e8a518aa6d17d951b14d82c76","tests/ui/fail/entry_bad_arg.rs":"78e4164f93b50c3192f7f31940d7bd0e4b8a07620573218658b8f13832061db0","tests/ui/fail/entry_bad_arg.stderr":"19b7035265757837b93fdffd33a99ec73867055107ff02a118f17282dd1c1a23","tests/ui/fail/entry_bad_async.rs":"8e9263cc22f4961d66421cf8f49ff6ec1b08523993381df851cedba112006a7d","tests/ui/fail/entry_bad_async.stderr":"9b5c3d54728429c3ce06e3eb87955d43aaa0425ee8e50885ebf9ee2161bea7fb","tests/ui/fail/entry_bad_attr_arg.rs":"0a4e1a1e9199e6fe93f0c669d473d84930c6f1f478efffb4e2af334945782b8a","tests/ui/fail/entry_bad_attr_arg.stderr":"54352a1e033cf8147736be351583769424ecfa1ae0f89564e94e2486c0f5c990","tests/ui/fail/entry_bad_const.rs":"abcf213e162fdddb909dc57e479bd07791b74f328c97c20d1f8c2809e665947c","tests/ui/fail/entry_bad_const.stderr":"56de4f83dfade0d9829d2ada05c48f65faf19aa3685479915ea541c687adccb7","tests/ui/fail/entry_bad_generic.rs":"26ef86703e6ec809f9310eb349a5b6bfb6ffdf216f435c9f4b90de4b99fe92f2","tests/ui/fail/entry_bad_generic.stderr":"a7347c2d3a79ed07fc226b6c9dfd7d71ac9843d27434c1f55227279a2d51e328","tests/ui/fail/entry_bad_return_type.rs":"ac87dd07dc7438eb59e6be51aac1440eb2b4711b0479d2d9e5074f306d863637","tests/ui/fail/entry_bad_return_type.stderr":"97d11e9c733d29992c88c740255d4951e2375a5de013231faae3b566d3b964d8","tests/ui/pass/entry.rs":"3a9c1500a0d19d4de4f9cefcc561e7c4fcc178f20335a12a700284eca7362f33","tests/ui/pass/entry_docstring.rs":"e3d7e231418a56dbf6d180bc990efb9e23c94f41cc6f3dee0967549bd838f6c6","tests/ui/pass/entry_unsafe.rs":"992c54f2db563ae60aaf03e9565ed527461f087f45bebbb3700c809471394115"}}
\ No newline at end of file
diff --git a/crates/uefi-macros/Android.bp b/crates/uefi-macros/Android.bp
index 854cbb6..596fef4 100644
--- a/crates/uefi-macros/Android.bp
+++ b/crates/uefi-macros/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/uefi-macros/cargo_embargo.json b/crates/uefi-macros/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/uefi-macros/cargo_embargo.json
+++ b/crates/uefi-macros/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/uefi-raw/.android-checksum.json b/crates/uefi-raw/.android-checksum.json
index f59566f..4409641 100644
--- a/crates/uefi-raw/.android-checksum.json
+++ b/crates/uefi-raw/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b7549318dca7f37a2f3f7eb636389bc3d34c60a89e09c2207230cd269a133949","Android.bp":"cecb808b1f342cab9110fe0551dfc35921998f650b75382f47121bafd9ccf367","CHANGELOG.md":"9708ef3d20081cf3aaaa240307c8c4afd3c63733e388fc04dce2dcd9d8c17ff9","Cargo.toml":"47f84058c99149ae5a3bee30595bdcba10359da4f7be28595a1efba9af5d82e7","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"30070acd2831c2c76c7ae43516301da991475e26423fbdbff885e999ed9cb93a","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7b3d4e60961739bc3c0753ed990a208397c4293bf9a91616111e98599624207e","api_guidelines.md":"e3e4c8f2d154822f3949d12b161a58811218848f850247bd1f98b96d059758c9","cargo_embargo.json":"839d29aae7fc3536e3133b534144cda5ad36e1dbf4d53e7da0968576afadfc01","src/capsule.rs":"366d90512135733d39bd7e8d6a3b5711d0f91056358a9551127843c49c4bf39b","src/enums.rs":"20881a47d6228c123337b3b2f4f99c4c8d10eb10a2d35e12cf5afa06c5b48168","src/firmware_storage.rs":"c51f9447ddd61bd82b449b4618ab84a3c626907d5002f2204666a14b701a5455","src/lib.rs":"8a964f1baa5c19f221172f0e79b847bd1f12e7f3221ba3ac24cf3295e3107212","src/protocol/block.rs":"4ee833defa97f50f69bf8665f5573646d9b5b311138feb4cf07c8349b854009d","src/protocol/console.rs":"38ae9212bfef3a6e3812b8945adeabde1bab87978d397ffc32d21d0aaaf75a97","src/protocol/console/serial.rs":"782f14e2cba9e45e1b77e82dca8de72ce71309e1c1edf6113264cd015d901c78","src/protocol/device_path.rs":"6cb1c3f911388a3ba01548b898cf65f5e32a8169719f943d6a61829d0c137f77","src/protocol/device_path/device_path_gen.rs":"2afcecf993f2caeb127a4ae514fd03c8dfa7be0e3a8ef3f09981007c2994e13b","src/protocol/disk.rs":"89f23a29899534e227f5c981f2895f2527b61b184f517c09804ae53fa9703984","src/protocol/driver.rs":"261c76eaddcaeaf433e898baa2f18684f44003466ad1389fef3aaa564dadca08","src/protocol/file_system.rs":"e098024038ea62d8754b323148fcefda748a196de56a4846c70d80aefb8279ec","src/protocol/loaded_image.rs":"2f688e5a3e6b4ba2c61ab77a633630c815eed0f3f49874f2ed03d597cc14e79f","src/protocol/media.rs":"0370e63130e430a0d2a7036ff0d9b5d40c27024702d5a308e150351bd19dc68b","src/protocol/memory_protection.rs":"9e7e0c86b5b2e206d635cba7c54b0c4dc14ad2edf148b2b764cae54fb78c5e90","src/protocol/misc.rs":"71a61e3982dca94bedb581108bcda3245b571e3a9c85049e852ee133b015b44b","src/protocol/mod.rs":"7b2cf632e82822ce4a5b19829b634e9cc0b7066a5ffe9eb7243f73a594f990ad","src/protocol/network/dhcp4.rs":"ddc97b3cb7e9975913819e3b0d60efcc159631b1260fd8fc8053518b1f7ee09d","src/protocol/network/http.rs":"2e805178a2143cc487e2c76b42d4b1869fbdbb32d2c0a7acf308daf2fd44b2d2","src/protocol/network/ip4.rs":"175ce0a6e98da66418c623ac93893566e7226672ef57fa1b2e888cb1467fae9d","src/protocol/network/ip4_config2.rs":"e76ec2f3b3e77ab0dbfd63820129e74ef07c535b7ee22333a5fde81ba150ff1f","src/protocol/network/mod.rs":"cd6acd731b34296379baa4213f239a1e0303520233677f5405f99bbfad529606","src/protocol/network/tls.rs":"11ad1501564e477106410c875bdc271b7c35007abd4ed25fda249cc1a7317478","src/protocol/rng.rs":"f4c0f22467b198f7936948892525e1275d24d69e7c3fc6150325c8815ecf8b12","src/protocol/shell_params.rs":"a678c0cbc9765fac2ed7bb408ff3cb1afd7e48db92d50ebb3129e3337a1f2e24","src/status.rs":"8074551653b21b85a0eb37d181f6142954397064f683124563b69c074a12bdc6","src/table/boot.rs":"5f37202cf6ae5691f09503d24cb9002b765d917c8f4c3c6424cd24e1c607deb0","src/table/configuration.rs":"bc7c60137312100f483e4e28c66cd20e78c15858033d17e646814608be269177","src/table/header.rs":"b5b568701a70f79511ef2abdb04b9d32d78a4fe6b5149e6d74260bd7bb21001b","src/table/mod.rs":"98717d1ed75e36475b6e3d498d7458ad0b7af7f7165b9c183714133db71a56dd","src/table/revision.rs":"464f26e4c581f7491555a66af1e096ed79f74704843472e3974d9ddc67f62351","src/table/runtime.rs":"c55dd9c3942304bbdb729ab1aa5202f04690919214262f35dec456aa9724c780","src/table/system.rs":"4a617c0df160cba52baebc982ab5f97b7f9ce785c8ca9b44e9022af0ddd348a8","src/time.rs":"8586f3d572b6e293670d510ad4c80ca8dbb2783d53bd6cd2f894de4c1bf2b4ba"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b7549318dca7f37a2f3f7eb636389bc3d34c60a89e09c2207230cd269a133949","Android.bp":"628319ae03bd48beba523f93d6b558726cf1e2140b228b8be7fe096f30010c4d","CHANGELOG.md":"9708ef3d20081cf3aaaa240307c8c4afd3c63733e388fc04dce2dcd9d8c17ff9","Cargo.toml":"47f84058c99149ae5a3bee30595bdcba10359da4f7be28595a1efba9af5d82e7","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"30070acd2831c2c76c7ae43516301da991475e26423fbdbff885e999ed9cb93a","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7b3d4e60961739bc3c0753ed990a208397c4293bf9a91616111e98599624207e","api_guidelines.md":"e3e4c8f2d154822f3949d12b161a58811218848f850247bd1f98b96d059758c9","cargo_embargo.json":"964e6f929751c3bb41b7283bd01b53c77a9fe6a5fa0cf2d6c5965e2c0614bdd2","src/capsule.rs":"366d90512135733d39bd7e8d6a3b5711d0f91056358a9551127843c49c4bf39b","src/enums.rs":"20881a47d6228c123337b3b2f4f99c4c8d10eb10a2d35e12cf5afa06c5b48168","src/firmware_storage.rs":"c51f9447ddd61bd82b449b4618ab84a3c626907d5002f2204666a14b701a5455","src/lib.rs":"8a964f1baa5c19f221172f0e79b847bd1f12e7f3221ba3ac24cf3295e3107212","src/protocol/block.rs":"4ee833defa97f50f69bf8665f5573646d9b5b311138feb4cf07c8349b854009d","src/protocol/console.rs":"38ae9212bfef3a6e3812b8945adeabde1bab87978d397ffc32d21d0aaaf75a97","src/protocol/console/serial.rs":"782f14e2cba9e45e1b77e82dca8de72ce71309e1c1edf6113264cd015d901c78","src/protocol/device_path.rs":"6cb1c3f911388a3ba01548b898cf65f5e32a8169719f943d6a61829d0c137f77","src/protocol/device_path/device_path_gen.rs":"2afcecf993f2caeb127a4ae514fd03c8dfa7be0e3a8ef3f09981007c2994e13b","src/protocol/disk.rs":"89f23a29899534e227f5c981f2895f2527b61b184f517c09804ae53fa9703984","src/protocol/driver.rs":"261c76eaddcaeaf433e898baa2f18684f44003466ad1389fef3aaa564dadca08","src/protocol/file_system.rs":"e098024038ea62d8754b323148fcefda748a196de56a4846c70d80aefb8279ec","src/protocol/loaded_image.rs":"2f688e5a3e6b4ba2c61ab77a633630c815eed0f3f49874f2ed03d597cc14e79f","src/protocol/media.rs":"0370e63130e430a0d2a7036ff0d9b5d40c27024702d5a308e150351bd19dc68b","src/protocol/memory_protection.rs":"9e7e0c86b5b2e206d635cba7c54b0c4dc14ad2edf148b2b764cae54fb78c5e90","src/protocol/misc.rs":"71a61e3982dca94bedb581108bcda3245b571e3a9c85049e852ee133b015b44b","src/protocol/mod.rs":"7b2cf632e82822ce4a5b19829b634e9cc0b7066a5ffe9eb7243f73a594f990ad","src/protocol/network/dhcp4.rs":"ddc97b3cb7e9975913819e3b0d60efcc159631b1260fd8fc8053518b1f7ee09d","src/protocol/network/http.rs":"2e805178a2143cc487e2c76b42d4b1869fbdbb32d2c0a7acf308daf2fd44b2d2","src/protocol/network/ip4.rs":"175ce0a6e98da66418c623ac93893566e7226672ef57fa1b2e888cb1467fae9d","src/protocol/network/ip4_config2.rs":"e76ec2f3b3e77ab0dbfd63820129e74ef07c535b7ee22333a5fde81ba150ff1f","src/protocol/network/mod.rs":"cd6acd731b34296379baa4213f239a1e0303520233677f5405f99bbfad529606","src/protocol/network/tls.rs":"11ad1501564e477106410c875bdc271b7c35007abd4ed25fda249cc1a7317478","src/protocol/rng.rs":"f4c0f22467b198f7936948892525e1275d24d69e7c3fc6150325c8815ecf8b12","src/protocol/shell_params.rs":"a678c0cbc9765fac2ed7bb408ff3cb1afd7e48db92d50ebb3129e3337a1f2e24","src/status.rs":"8074551653b21b85a0eb37d181f6142954397064f683124563b69c074a12bdc6","src/table/boot.rs":"5f37202cf6ae5691f09503d24cb9002b765d917c8f4c3c6424cd24e1c607deb0","src/table/configuration.rs":"bc7c60137312100f483e4e28c66cd20e78c15858033d17e646814608be269177","src/table/header.rs":"b5b568701a70f79511ef2abdb04b9d32d78a4fe6b5149e6d74260bd7bb21001b","src/table/mod.rs":"98717d1ed75e36475b6e3d498d7458ad0b7af7f7165b9c183714133db71a56dd","src/table/revision.rs":"464f26e4c581f7491555a66af1e096ed79f74704843472e3974d9ddc67f62351","src/table/runtime.rs":"c55dd9c3942304bbdb729ab1aa5202f04690919214262f35dec456aa9724c780","src/table/system.rs":"4a617c0df160cba52baebc982ab5f97b7f9ce785c8ca9b44e9022af0ddd348a8","src/time.rs":"8586f3d572b6e293670d510ad4c80ca8dbb2783d53bd6cd2f894de4c1bf2b4ba"}}
\ No newline at end of file
diff --git a/crates/uefi-raw/Android.bp b/crates/uefi-raw/Android.bp
index 72bf3c7..7e9cd0a 100644
--- a/crates/uefi-raw/Android.bp
+++ b/crates/uefi-raw/Android.bp
@@ -37,4 +37,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/uefi-raw/cargo_embargo.json b/crates/uefi-raw/cargo_embargo.json
index 5dd7165..18cce97 100644
--- a/crates/uefi-raw/cargo_embargo.json
+++ b/crates/uefi-raw/cargo_embargo.json
@@ -11,5 +11,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/uefi/.android-checksum.json b/crates/uefi/.android-checksum.json
index 541baa3..ae542cd 100644
--- a/crates/uefi/.android-checksum.json
+++ b/crates/uefi/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"31e8f202b1255885868c03133786fbc0c55a3afd312fa9aec549b8f7978dc565","Android.bp":"d597754875614904dbdba308ce462f811966b3368066fe8ffe6cda4956c6c577","CHANGELOG.md":"d451987881eacde3a5a5b7da49ff3586d11b3960b5a79abd0af984fd3a526bcd","Cargo.toml":"239ca00c68350a7bc81ebc6898a07b8c04ff5d6bd1c53017d332536af853b2e1","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"7f1689b563cba2dcc9c7b576445cf0be2173e3fa856fda1ac4e961ba602a27d2","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c9ba66c90f4351b7b90536df70ca6d57c3e3dcb4052a2a8a4b1c88bdac2c9f54","cargo_embargo.json":"18b8e5f3c428b01d851d655d5638e1fb6e17b4c4c12c12e988571d830ad1c507","src/allocator.rs":"ebb00edde81dc120d5e2f37639bc42ad0ef22da061ca1880d19100158cb2d564","src/boot.rs":"73b6723fbc0abbd843aa36d0eb2bf6a353f7125bed11dfd6d02bd3f1c800b662","src/data_types/chars.rs":"16740fcd8c4f5951ceda341be11969794420f5a06c18986e6ef70f442e33e338","src/data_types/guid.rs":"babf8f5c1599d3e14fecf6d2e10d43448377bb94e55414361dcdb4d22201a199","src/data_types/mod.rs":"d8f04bd3558a55f298cea3f3e8a9c30e25204a89a5ea193713c4e9851685e49d","src/data_types/opaque.rs":"928376f924ec9748bbc590f35aab69eb80695b373aab0fd81aaca5625661d2cb","src/data_types/owned_strs.rs":"48e19bf083a2ff459ae5ffc56151322eafb458881a80cbcdf5005e9585ac56c0","src/data_types/strs.rs":"a9f4cf6afec41925d2c546fda30956e672748b5d81364a3aa3b93755c01f2d1c","src/data_types/unaligned_slice.rs":"e58c7e4e12186cd0fc06d3b8b104f9b656311d2e47cc247353963aea6d87811b","src/fs/dir_entry_iter.rs":"b248ed5d1b3593c1744b3600bdff9f6cc611e6d0d072a3fca42063cf7d5c9f7f","src/fs/file_system/error.rs":"79ce948d0c7bbac4272dab5c943909d35ee2752b7ec11d2de7fcba863707c667","src/fs/file_system/fs.rs":"12f42919ab22d4cac7f04e444d25ff20591419e934c52e05755134b819a868ba","src/fs/file_system/mod.rs":"11126fce44d2b96d152ad04b6841be31b8ac2c2302d9c5aebeddf0f7cd00aed1","src/fs/mod.rs":"c22f4e07dbb35e5285c2b63fec957818fa3c577a8893076cf617756817627bf2","src/fs/path/mod.rs":"40f820753fda164d69053e5448755117fc908083270f79d48a1da67264fc60f3","src/fs/path/path.rs":"00d6e26b207b557367181d2f193334ac538c58c83a0ebf9c60249d9e409e7945","src/fs/path/pathbuf.rs":"f7f6514d8a186bfeb25f352d6aefe3eba8ccc1fee1de9e7cf0200f70072e2d82","src/fs/path/validation.rs":"21f3383c68ac3a17b9eb4b1d1ebf061bb77a7b45dfa7a0c7ec50bcff64de9084","src/fs/uefi_types.rs":"9d1c36ad0e3d674c760cfda7beb193ed7a1f2752e2055c56b8b1ebb7d1597d7b","src/helpers/global_allocator.rs":"607445f35a080022e4b2ff7ad2dde9e1d27004e7bba973088913bc25a09154c9","src/helpers/logger.rs":"c6e713e69c9f1122a0019d03802523820153e0e940c010686c7751230d717060","src/helpers/mod.rs":"2f40fcf93d285447dc293730ef94c4f5bd8b1f613ceb3547e536af9305f839cd","src/helpers/panic_handler.rs":"f6df94e5cfb8073403bd8a72021fbc7e9372a34c26efdfb21a39fc7e08e84c4f","src/helpers/println.rs":"b6ec084b41b9fb0e2f783bfae4904c2c444c6b4880bc910e127a9b5b9047412c","src/lib.rs":"55f0db1c7bed72f44efa4176c983635b7cae369d7238955c31b02350607e0ab5","src/macros.rs":"a57a21877bad3c409c40219dff53b78d4f8b171b0d3e4abcd9a8479c644cba86","src/mem/memory_map/api.rs":"231264212f1f38bea629576f0fcc50875c4b29dc8ad65c489cc472b9c707e473","src/mem/memory_map/impl_.rs":"41631a275483dfc78e16d498833babbb0713c5a091764189141c69ae9b149773","src/mem/memory_map/iter.rs":"c00b91ba6d9f54606ab26e05af11d160df057e691ef2a47fc6815f0a7551590b","src/mem/memory_map/mod.rs":"89ca98b577a408aedc5db6aab2ec0bf69052f3c6c871a28a14a1ed4ef3795fb1","src/mem/mod.rs":"864350f2aa6f1b12eea7fdc4498d4084018b267144b2deda584422f5f325e4cd","src/mem/util.rs":"89f0cffa2942d5c1a786273696a2931cbd4bf8fee8cfdcbff8ffca2a52b7b86b","src/polyfill.rs":"11d3685770c015f59aae34505d83163fc946506529a6085605d10e4d2567eccc","src/prelude.rs":"6aa91229395d879fcb3131a2f6cf5f0d72706e43f155feb3a758185ad8a5aa50","src/proto/boot_policy.rs":"de4af6c3a7419d3e5523cef4da2bed1e69e077235daf5577125ef8dbf7109303","src/proto/console/gop.rs":"013c085fa55f58b80fb50a82442f77d0fd9a9b419e5ae22e181115d79c32121e","src/proto/console/mod.rs":"87c88a13fe061c7fb880936b2fedd9707fc83c8114d5d89c7d84f5dff80fdb58","src/proto/console/pointer/mod.rs":"e3e89a82fc16aaef7799054139d49ce04fdcd5f55a4ba12e6c2c7e4753e0fc05","src/proto/console/serial.rs":"112aa112ad6a27c257a205ad1fa391f869051f62d3eb89afde18a726e4aa82f9","src/proto/console/text/input.rs":"3267b91937898c86717d22f1b4ee59fc02c22a8ecd7b3ee9bf617d152af23f56","src/proto/console/text/mod.rs":"258ea25ff7457faf96ac7483c23e82f4e03638b399c5d5c66bbb1f1c844940ea","src/proto/console/text/output.rs":"b652314bbe520a80051074ab8d424b0b847ff9666ffdd62562803717efb3f8ba","src/proto/debug/context.rs":"9f988f770dc533e72ed643ecf98ec695352732da14ff01d25d722c3cdce64642","src/proto/debug/exception.rs":"88f24c19a56ee40737783ac3bafc367692ab71387877bedb916a8f93b8557f70","src/proto/debug/mod.rs":"e4c39dac05007c44060d0fc7472b4d62f3ae014fbf4a5b0c58360353c723cd00","src/proto/device_path/build.rs":"d22da84b6ee2ab1c7100d808df6e3dcf88d3f390252e2bbf6bfe73fd305389d1","src/proto/device_path/device_path_gen.rs":"4fcf846147539612dc4e5790777ee8442d20fff8e12858afafe59fd82f57ef8f","src/proto/device_path/mod.rs":"26fdd0658e87f42a84ed8eacb313049a9b9f8b24be0dbc22ddc52302a922303d","src/proto/device_path/text.rs":"1a481ab288d5c8781d7b017eb8cca85e6f3db77ae03127f2f06944b5000a5953","src/proto/driver/component_name.rs":"45be719b963657a2c1e15efdd40861db896949da342269b72b51779b4d6bde0f","src/proto/driver/mod.rs":"9d81bcf64d039494e62ff094237f670c4460e0a4144c612f9ec3aed4cfb0db73","src/proto/loaded_image.rs":"86fd364d168254c56ce89002881dfcd93d117fce179ce685b5c6460a31d59236","src/proto/media/block.rs":"f0805b327b2df0c7ea8fb9159066ab45836b50dcc3f7c893f0ab15de0cf27d18","src/proto/media/disk.rs":"5e451b5de1024a167188afbf4297fb00cba408e8213b31d6a8384147b79f4595","src/proto/media/file/dir.rs":"816577868e498270ce8e2fecbda8747806253576c62e0c703fa53d1c9d74b3c4","src/proto/media/file/info.rs":"4006b82a6b5c3067c4a775f4f96fd239ee23a572250ec574420940c9145842c9","src/proto/media/file/mod.rs":"06136d3872958ca24b01a3233d420982782f8220363f64237500bab972c1a4ff","src/proto/media/file/regular.rs":"9eb64840e1c0bd48802d74981d4810a0a4d2775fd3fafb25da3c24d5091dfa81","src/proto/media/fs.rs":"69ee22937becda2dff2f3af99d6a44db4b5b18a04af36fab77b4bf76b575a6f8","src/proto/media/load_file.rs":"35da46c11e6200bb14cb52d44884006eeaf1215d347bdb234ffa9dd73c6d1b5f","src/proto/media/mod.rs":"bef1ac3df42d54e96dd1e549c2dc870dd4d82fda48036fd8bd027889ea27d556","src/proto/media/partition.rs":"82635fd11a5ae8cde5d87367b79710f0f9e4f9dc869afba24e6a77dffc1ebd60","src/proto/misc.rs":"7b95128ff07e6e5b8f7ffab40188d40e52007ff6c838135a19200e6cf826f616","src/proto/mod.rs":"191a2c37a31c011ad2322459008ded26f17ce6f238104dae793c0bceb3ef2a17","src/proto/network/mod.rs":"09d83498ac1dd8ca7ccd29345a6a8cc623f1597a43ea8e025dfe00faa516d777","src/proto/network/pxe.rs":"112c31a4ca6dbecfb3dec866c518686ee8720d6670e0b72b8cdede521009aa4a","src/proto/network/snp.rs":"9a4fec2caf775a10415473289f5028f39637fbb5ed8931734a3a9dee44bc0787","src/proto/pi/mod.rs":"2b70de9ca513f120cec2a835e8d3a873d3f832f7ce1f62343808d3032722e5d3","src/proto/pi/mp.rs":"b5ca25a4a9beefb79ff3bc7287206d695957af02b6768096f39a38f16c808182","src/proto/rng.rs":"4e49e16fb075eac019e7a6108dac07901121abac3e1af6e83110c67cdd280020","src/proto/security/memory_protection.rs":"e0edbc12e5698589c68066306d3de0459aee4f260a235e7469756e4782d9f17d","src/proto/security/mod.rs":"7b687e462e39ad896bd9cda19b47530c379277b4fa78b65ba58075eb70bf5690","src/proto/shell_params.rs":"5d847acda3353fa3b74b22f3f534af0b07c1da744d24da4ecb035d702cfffc9c","src/proto/shim/mod.rs":"de6998d92f256bb07199df2f45a15940ba28a737040f6573a46000a78e72bca3","src/proto/string/mod.rs":"180cce5889e362cfd0ee624cebdbbc3763709bed4dfcf0736ac0955fa05b53e1","src/proto/string/unicode_collation.rs":"892f17bbe0b5500eef9cb28747d2ee560e2483eb4e60741e23ce0181c9c13a13","src/proto/tcg/enums.rs":"732f24af4351310bd359897adc304ded7cc5ad3a0863aedcb0b3f9da9dae6244","src/proto/tcg/mod.rs":"b28c5781b577b247ef73454a80be04da03f4589a01be2721b0007b4dda5be91d","src/proto/tcg/v1.rs":"d9d8ed6195bdbff9b9f11856cb1d10302507a2ce45b82c46fc2a58e2ac7d631c","src/proto/tcg/v2.rs":"65b85e59c9d72ac958adaa77d3791f71e701b19a42bc65c2b3dd236103c7cabb","src/result/error.rs":"722c05b29a7d196606aa6a8f25acd0ac325079d26540b73e6f4d50db095fdcda","src/result/mod.rs":"29964d7019a69317eb9547413da5e270a204605d4d5eb13b125aa2aa1636fcfb","src/result/status.rs":"78ea933d3f4a63c689de1d56525d4970d5316c611b1f0a089f84fd413491f98a","src/runtime.rs":"c27903c8d4c550cd820bf047827c88ef6d2da1546d5cd4da2ca2590fecea8759","src/system.rs":"b0bfdcb314a731bfab7b07a707eea8981dbd1dfa5352be8f88f65d1cb806af3c","src/table/cfg.rs":"695f5829582deb0f79088c4ed91d442e44fc334e9213a90c78665e40f465fa7d","src/table/header.rs":"6059d64c6b592a885f30fe805363a848f70b6537d5512461de59f4a5935313c5","src/table/mod.rs":"ef180431a99e14c9db2883d060d7eecb7634d7fffd3b0462aa6861104c2a045e","src/util.rs":"9d07e9260397c88af12a535daae43996dc10b5d8d241b5cc26fcc61d24311e90","tests/memory_map.rs":"0c54908f3c6c058225814a708d1ae3198d353cb916ac0be719dc775a5e38d594"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"31e8f202b1255885868c03133786fbc0c55a3afd312fa9aec549b8f7978dc565","Android.bp":"1c97fdc488088d6c66a387ccf66d4af54778372303578b1f33b16593263937bd","CHANGELOG.md":"d451987881eacde3a5a5b7da49ff3586d11b3960b5a79abd0af984fd3a526bcd","Cargo.toml":"239ca00c68350a7bc81ebc6898a07b8c04ff5d6bd1c53017d332536af853b2e1","LICENSE":"eb272adec43829624ef944827cee5edc5896c80ceaccea3e8e471dadeaeee408","METADATA":"7f1689b563cba2dcc9c7b576445cf0be2173e3fa856fda1ac4e961ba602a27d2","MODULE_LICENSE_MPL":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"c9ba66c90f4351b7b90536df70ca6d57c3e3dcb4052a2a8a4b1c88bdac2c9f54","cargo_embargo.json":"6f25a7b0cbed5c8cf020a1b9ff917069b1b0969116f701b79a14d2e1dd30cc72","src/allocator.rs":"ebb00edde81dc120d5e2f37639bc42ad0ef22da061ca1880d19100158cb2d564","src/boot.rs":"73b6723fbc0abbd843aa36d0eb2bf6a353f7125bed11dfd6d02bd3f1c800b662","src/data_types/chars.rs":"16740fcd8c4f5951ceda341be11969794420f5a06c18986e6ef70f442e33e338","src/data_types/guid.rs":"babf8f5c1599d3e14fecf6d2e10d43448377bb94e55414361dcdb4d22201a199","src/data_types/mod.rs":"d8f04bd3558a55f298cea3f3e8a9c30e25204a89a5ea193713c4e9851685e49d","src/data_types/opaque.rs":"928376f924ec9748bbc590f35aab69eb80695b373aab0fd81aaca5625661d2cb","src/data_types/owned_strs.rs":"48e19bf083a2ff459ae5ffc56151322eafb458881a80cbcdf5005e9585ac56c0","src/data_types/strs.rs":"a9f4cf6afec41925d2c546fda30956e672748b5d81364a3aa3b93755c01f2d1c","src/data_types/unaligned_slice.rs":"e58c7e4e12186cd0fc06d3b8b104f9b656311d2e47cc247353963aea6d87811b","src/fs/dir_entry_iter.rs":"b248ed5d1b3593c1744b3600bdff9f6cc611e6d0d072a3fca42063cf7d5c9f7f","src/fs/file_system/error.rs":"79ce948d0c7bbac4272dab5c943909d35ee2752b7ec11d2de7fcba863707c667","src/fs/file_system/fs.rs":"12f42919ab22d4cac7f04e444d25ff20591419e934c52e05755134b819a868ba","src/fs/file_system/mod.rs":"11126fce44d2b96d152ad04b6841be31b8ac2c2302d9c5aebeddf0f7cd00aed1","src/fs/mod.rs":"c22f4e07dbb35e5285c2b63fec957818fa3c577a8893076cf617756817627bf2","src/fs/path/mod.rs":"40f820753fda164d69053e5448755117fc908083270f79d48a1da67264fc60f3","src/fs/path/path.rs":"00d6e26b207b557367181d2f193334ac538c58c83a0ebf9c60249d9e409e7945","src/fs/path/pathbuf.rs":"f7f6514d8a186bfeb25f352d6aefe3eba8ccc1fee1de9e7cf0200f70072e2d82","src/fs/path/validation.rs":"21f3383c68ac3a17b9eb4b1d1ebf061bb77a7b45dfa7a0c7ec50bcff64de9084","src/fs/uefi_types.rs":"9d1c36ad0e3d674c760cfda7beb193ed7a1f2752e2055c56b8b1ebb7d1597d7b","src/helpers/global_allocator.rs":"607445f35a080022e4b2ff7ad2dde9e1d27004e7bba973088913bc25a09154c9","src/helpers/logger.rs":"c6e713e69c9f1122a0019d03802523820153e0e940c010686c7751230d717060","src/helpers/mod.rs":"2f40fcf93d285447dc293730ef94c4f5bd8b1f613ceb3547e536af9305f839cd","src/helpers/panic_handler.rs":"f6df94e5cfb8073403bd8a72021fbc7e9372a34c26efdfb21a39fc7e08e84c4f","src/helpers/println.rs":"b6ec084b41b9fb0e2f783bfae4904c2c444c6b4880bc910e127a9b5b9047412c","src/lib.rs":"55f0db1c7bed72f44efa4176c983635b7cae369d7238955c31b02350607e0ab5","src/macros.rs":"a57a21877bad3c409c40219dff53b78d4f8b171b0d3e4abcd9a8479c644cba86","src/mem/memory_map/api.rs":"231264212f1f38bea629576f0fcc50875c4b29dc8ad65c489cc472b9c707e473","src/mem/memory_map/impl_.rs":"41631a275483dfc78e16d498833babbb0713c5a091764189141c69ae9b149773","src/mem/memory_map/iter.rs":"c00b91ba6d9f54606ab26e05af11d160df057e691ef2a47fc6815f0a7551590b","src/mem/memory_map/mod.rs":"89ca98b577a408aedc5db6aab2ec0bf69052f3c6c871a28a14a1ed4ef3795fb1","src/mem/mod.rs":"864350f2aa6f1b12eea7fdc4498d4084018b267144b2deda584422f5f325e4cd","src/mem/util.rs":"89f0cffa2942d5c1a786273696a2931cbd4bf8fee8cfdcbff8ffca2a52b7b86b","src/polyfill.rs":"11d3685770c015f59aae34505d83163fc946506529a6085605d10e4d2567eccc","src/prelude.rs":"6aa91229395d879fcb3131a2f6cf5f0d72706e43f155feb3a758185ad8a5aa50","src/proto/boot_policy.rs":"de4af6c3a7419d3e5523cef4da2bed1e69e077235daf5577125ef8dbf7109303","src/proto/console/gop.rs":"013c085fa55f58b80fb50a82442f77d0fd9a9b419e5ae22e181115d79c32121e","src/proto/console/mod.rs":"87c88a13fe061c7fb880936b2fedd9707fc83c8114d5d89c7d84f5dff80fdb58","src/proto/console/pointer/mod.rs":"e3e89a82fc16aaef7799054139d49ce04fdcd5f55a4ba12e6c2c7e4753e0fc05","src/proto/console/serial.rs":"112aa112ad6a27c257a205ad1fa391f869051f62d3eb89afde18a726e4aa82f9","src/proto/console/text/input.rs":"3267b91937898c86717d22f1b4ee59fc02c22a8ecd7b3ee9bf617d152af23f56","src/proto/console/text/mod.rs":"258ea25ff7457faf96ac7483c23e82f4e03638b399c5d5c66bbb1f1c844940ea","src/proto/console/text/output.rs":"b652314bbe520a80051074ab8d424b0b847ff9666ffdd62562803717efb3f8ba","src/proto/debug/context.rs":"9f988f770dc533e72ed643ecf98ec695352732da14ff01d25d722c3cdce64642","src/proto/debug/exception.rs":"88f24c19a56ee40737783ac3bafc367692ab71387877bedb916a8f93b8557f70","src/proto/debug/mod.rs":"e4c39dac05007c44060d0fc7472b4d62f3ae014fbf4a5b0c58360353c723cd00","src/proto/device_path/build.rs":"d22da84b6ee2ab1c7100d808df6e3dcf88d3f390252e2bbf6bfe73fd305389d1","src/proto/device_path/device_path_gen.rs":"4fcf846147539612dc4e5790777ee8442d20fff8e12858afafe59fd82f57ef8f","src/proto/device_path/mod.rs":"26fdd0658e87f42a84ed8eacb313049a9b9f8b24be0dbc22ddc52302a922303d","src/proto/device_path/text.rs":"1a481ab288d5c8781d7b017eb8cca85e6f3db77ae03127f2f06944b5000a5953","src/proto/driver/component_name.rs":"45be719b963657a2c1e15efdd40861db896949da342269b72b51779b4d6bde0f","src/proto/driver/mod.rs":"9d81bcf64d039494e62ff094237f670c4460e0a4144c612f9ec3aed4cfb0db73","src/proto/loaded_image.rs":"86fd364d168254c56ce89002881dfcd93d117fce179ce685b5c6460a31d59236","src/proto/media/block.rs":"f0805b327b2df0c7ea8fb9159066ab45836b50dcc3f7c893f0ab15de0cf27d18","src/proto/media/disk.rs":"5e451b5de1024a167188afbf4297fb00cba408e8213b31d6a8384147b79f4595","src/proto/media/file/dir.rs":"816577868e498270ce8e2fecbda8747806253576c62e0c703fa53d1c9d74b3c4","src/proto/media/file/info.rs":"4006b82a6b5c3067c4a775f4f96fd239ee23a572250ec574420940c9145842c9","src/proto/media/file/mod.rs":"06136d3872958ca24b01a3233d420982782f8220363f64237500bab972c1a4ff","src/proto/media/file/regular.rs":"9eb64840e1c0bd48802d74981d4810a0a4d2775fd3fafb25da3c24d5091dfa81","src/proto/media/fs.rs":"69ee22937becda2dff2f3af99d6a44db4b5b18a04af36fab77b4bf76b575a6f8","src/proto/media/load_file.rs":"35da46c11e6200bb14cb52d44884006eeaf1215d347bdb234ffa9dd73c6d1b5f","src/proto/media/mod.rs":"bef1ac3df42d54e96dd1e549c2dc870dd4d82fda48036fd8bd027889ea27d556","src/proto/media/partition.rs":"82635fd11a5ae8cde5d87367b79710f0f9e4f9dc869afba24e6a77dffc1ebd60","src/proto/misc.rs":"7b95128ff07e6e5b8f7ffab40188d40e52007ff6c838135a19200e6cf826f616","src/proto/mod.rs":"191a2c37a31c011ad2322459008ded26f17ce6f238104dae793c0bceb3ef2a17","src/proto/network/mod.rs":"09d83498ac1dd8ca7ccd29345a6a8cc623f1597a43ea8e025dfe00faa516d777","src/proto/network/pxe.rs":"112c31a4ca6dbecfb3dec866c518686ee8720d6670e0b72b8cdede521009aa4a","src/proto/network/snp.rs":"9a4fec2caf775a10415473289f5028f39637fbb5ed8931734a3a9dee44bc0787","src/proto/pi/mod.rs":"2b70de9ca513f120cec2a835e8d3a873d3f832f7ce1f62343808d3032722e5d3","src/proto/pi/mp.rs":"b5ca25a4a9beefb79ff3bc7287206d695957af02b6768096f39a38f16c808182","src/proto/rng.rs":"4e49e16fb075eac019e7a6108dac07901121abac3e1af6e83110c67cdd280020","src/proto/security/memory_protection.rs":"e0edbc12e5698589c68066306d3de0459aee4f260a235e7469756e4782d9f17d","src/proto/security/mod.rs":"7b687e462e39ad896bd9cda19b47530c379277b4fa78b65ba58075eb70bf5690","src/proto/shell_params.rs":"5d847acda3353fa3b74b22f3f534af0b07c1da744d24da4ecb035d702cfffc9c","src/proto/shim/mod.rs":"de6998d92f256bb07199df2f45a15940ba28a737040f6573a46000a78e72bca3","src/proto/string/mod.rs":"180cce5889e362cfd0ee624cebdbbc3763709bed4dfcf0736ac0955fa05b53e1","src/proto/string/unicode_collation.rs":"892f17bbe0b5500eef9cb28747d2ee560e2483eb4e60741e23ce0181c9c13a13","src/proto/tcg/enums.rs":"732f24af4351310bd359897adc304ded7cc5ad3a0863aedcb0b3f9da9dae6244","src/proto/tcg/mod.rs":"b28c5781b577b247ef73454a80be04da03f4589a01be2721b0007b4dda5be91d","src/proto/tcg/v1.rs":"d9d8ed6195bdbff9b9f11856cb1d10302507a2ce45b82c46fc2a58e2ac7d631c","src/proto/tcg/v2.rs":"65b85e59c9d72ac958adaa77d3791f71e701b19a42bc65c2b3dd236103c7cabb","src/result/error.rs":"722c05b29a7d196606aa6a8f25acd0ac325079d26540b73e6f4d50db095fdcda","src/result/mod.rs":"29964d7019a69317eb9547413da5e270a204605d4d5eb13b125aa2aa1636fcfb","src/result/status.rs":"78ea933d3f4a63c689de1d56525d4970d5316c611b1f0a089f84fd413491f98a","src/runtime.rs":"c27903c8d4c550cd820bf047827c88ef6d2da1546d5cd4da2ca2590fecea8759","src/system.rs":"b0bfdcb314a731bfab7b07a707eea8981dbd1dfa5352be8f88f65d1cb806af3c","src/table/cfg.rs":"695f5829582deb0f79088c4ed91d442e44fc334e9213a90c78665e40f465fa7d","src/table/header.rs":"6059d64c6b592a885f30fe805363a848f70b6537d5512461de59f4a5935313c5","src/table/mod.rs":"ef180431a99e14c9db2883d060d7eecb7634d7fffd3b0462aa6861104c2a045e","src/util.rs":"9d07e9260397c88af12a535daae43996dc10b5d8d241b5cc26fcc61d24311e90","tests/memory_map.rs":"0c54908f3c6c058225814a708d1ae3198d353cb916ac0be719dc775a5e38d594"}}
\ No newline at end of file
diff --git a/crates/uefi/Android.bp b/crates/uefi/Android.bp
index 2290539..37acd25 100644
--- a/crates/uefi/Android.bp
+++ b/crates/uefi/Android.bp
@@ -44,4 +44,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/uefi/cargo_embargo.json b/crates/uefi/cargo_embargo.json
index 85a045b..e2fe62d 100644
--- a/crates/uefi/cargo_embargo.json
+++ b/crates/uefi/cargo_embargo.json
@@ -17,5 +17,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/uguid/.android-checksum.json b/crates/uguid/.android-checksum.json
index 318500b..51526d5 100644
--- a/crates/uguid/.android-checksum.json
+++ b/crates/uguid/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7526aa55e9862b1d1ddcec8f7461aecea5feaac933a18be5bbe7baf67666cce9","Android.bp":"6e4a9b1efcf76aa79e5eca66bda2b9d06fa00d1157fddc9d8178ff60b33807d0","CHANGELOG.md":"a83cff847306f4d5b04e3819e9f4d3bf2c1da182d8fc19c0a8588cef6ee609ea","Cargo.lock":"428c7854884f2552a688b2f22b1d2ecd699b87903da08d36f001ad33c260ac0e","Cargo.toml":"029948eee5f6cd5125a46ed5e2f46cc3b24f1379c2c14f8a9b7dacdf49bd909f","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c2e77e69ac852d51ac6c0fb3cda71c5796efaa7996e181b05d9d8745f48121af","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3ba109f2b008e2f38d0eb14788fcf3573db5e47cdc574100559275c25a47c529","cargo_embargo.json":"a35b242d725323243baa3d6b9295c5ebceb71fd9dd8cb39a2253b91856111069","examples/guid_info.rs":"34aa7045fc4c952b95ce50b91394b6006a26836e01a589d76714f98f7e40fb0d","src/error.rs":"23bb89dafa3e0b6420fa79cf915aa11dd994eb7fcf4534c00c77d71fd3a37956","src/guid.rs":"a958da906daa57c30f203e9ca3e28e102a9ed4862e607b0635fa622fb0f1df79","src/lib.rs":"2c65ec3f9e0ae4384a2daebefb239e086479305bf324665a8eeb5f8fe53b932a","src/util.rs":"0db3fa59ca4b3af15df5c1081fa2515ccc72e13d4cf0e2c184eb395ac6937283","tests/test_guid.rs":"7a3f8169acfac3f49c47dd473d037064c210334634d4c9eb27be302b8ffae670","tests/test_macro_error.rs":"388dd1ea7ae81e5c17dfee4048e7d0358a80ac4035d7cd5fc68b34e7405ca573","tests/test_serde.rs":"64b33970588c1ed720ad617cf39c912da0349b2b5972405af634af89bcd3104b","tests/ui/guid_hex.rs":"d1d559339da09c7c8214adf4ef21a8572446030b3ca23ae5bf95c07451051f0c","tests/ui/guid_hex.stderr":"e102193caf0737227c39df6842b038f99d8375826c6f6557b97a4786fc36c41e","tests/ui/guid_len.rs":"d583320f5e2b4ae1bcea9ba85527d260cb01e47e26d6ae24e7581505255f40f3","tests/ui/guid_len.stderr":"5d01b076d46b79f9c3a3915ad9e67413b210c38dd9171a4bf55307578df5f09d","tests/ui/guid_sep.rs":"22c7dd0cab8b762c52b2e69c34558a3905a72958125125d220c73dc7c7d70a2d","tests/ui/guid_sep.stderr":"8d98e8545c82b9b36bc9c75ab41dbf9ad314586d9384632254a6db4972181f89"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7526aa55e9862b1d1ddcec8f7461aecea5feaac933a18be5bbe7baf67666cce9","Android.bp":"56af684fe88c87ace25d758b18995119ae1507e33d816716dd4ea3099f4422d7","CHANGELOG.md":"a83cff847306f4d5b04e3819e9f4d3bf2c1da182d8fc19c0a8588cef6ee609ea","Cargo.lock":"428c7854884f2552a688b2f22b1d2ecd699b87903da08d36f001ad33c260ac0e","Cargo.toml":"029948eee5f6cd5125a46ed5e2f46cc3b24f1379c2c14f8a9b7dacdf49bd909f","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c2e77e69ac852d51ac6c0fb3cda71c5796efaa7996e181b05d9d8745f48121af","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"3ba109f2b008e2f38d0eb14788fcf3573db5e47cdc574100559275c25a47c529","cargo_embargo.json":"8b8e91fd0d2d908e11824849cb937d6b740109a7aa338b1c6cc3a5896be7042a","examples/guid_info.rs":"34aa7045fc4c952b95ce50b91394b6006a26836e01a589d76714f98f7e40fb0d","src/error.rs":"23bb89dafa3e0b6420fa79cf915aa11dd994eb7fcf4534c00c77d71fd3a37956","src/guid.rs":"a958da906daa57c30f203e9ca3e28e102a9ed4862e607b0635fa622fb0f1df79","src/lib.rs":"2c65ec3f9e0ae4384a2daebefb239e086479305bf324665a8eeb5f8fe53b932a","src/util.rs":"0db3fa59ca4b3af15df5c1081fa2515ccc72e13d4cf0e2c184eb395ac6937283","tests/test_guid.rs":"7a3f8169acfac3f49c47dd473d037064c210334634d4c9eb27be302b8ffae670","tests/test_macro_error.rs":"388dd1ea7ae81e5c17dfee4048e7d0358a80ac4035d7cd5fc68b34e7405ca573","tests/test_serde.rs":"64b33970588c1ed720ad617cf39c912da0349b2b5972405af634af89bcd3104b","tests/ui/guid_hex.rs":"d1d559339da09c7c8214adf4ef21a8572446030b3ca23ae5bf95c07451051f0c","tests/ui/guid_hex.stderr":"e102193caf0737227c39df6842b038f99d8375826c6f6557b97a4786fc36c41e","tests/ui/guid_len.rs":"d583320f5e2b4ae1bcea9ba85527d260cb01e47e26d6ae24e7581505255f40f3","tests/ui/guid_len.stderr":"5d01b076d46b79f9c3a3915ad9e67413b210c38dd9171a4bf55307578df5f09d","tests/ui/guid_sep.rs":"22c7dd0cab8b762c52b2e69c34558a3905a72958125125d220c73dc7c7d70a2d","tests/ui/guid_sep.stderr":"8d98e8545c82b9b36bc9c75ab41dbf9ad314586d9384632254a6db4972181f89"}}
\ No newline at end of file
diff --git a/crates/uguid/Android.bp b/crates/uguid/Android.bp
index c0b89e2..2a49b3f 100644
--- a/crates/uguid/Android.bp
+++ b/crates/uguid/Android.bp
@@ -40,4 +40,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/uguid/cargo_embargo.json b/crates/uguid/cargo_embargo.json
index 6a1faf2..39ccd24 100644
--- a/crates/uguid/cargo_embargo.json
+++ b/crates/uguid/cargo_embargo.json
@@ -15,5 +15,6 @@
"host_supported": false,
"no_std": true
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/unicode-ident/.android-checksum.json b/crates/unicode-ident/.android-checksum.json
index 7b4ef36..fd33f70 100644
--- a/crates/unicode-ident/.android-checksum.json
+++ b/crates/unicode-ident/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"63c811e4a3b188312bac52e9a7887e71b4ccba944eb1d79e31b0ba9e45dcb3cd","Android.bp":"f9aec90402664dab3388204c3884e3c724b950df2fc6040cfd39f6ed76c574f2","Cargo.toml":"e3ca3499503cadb5fa4237d0d7e123aefd084d0c9d0696c2c0e2ccac0679c614","LICENSE":"cff781a735d11de436295256ae4e316224b14f62edeba232cd936ef9c1599977","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-UNICODE":"1a9013de4bc7f20610ef0deb99707295d041ffb7f1606a964d53ab868980d867","METADATA":"7714535b59b0ecc6cd0d7070a5578299097a3ab54db6a91a588e295ecb3cf669","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_UNICODE":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"eb5f57be8102851c4e5778f7e1e18a61b8c27ad1337a3f1c4ca9806cca0987d1","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","benches/xid.rs":"e327d69560b51f41d78ab7feb613cee235174d1ca482da69cf7fcf9c518eb83e","cargo_embargo.json":"bdcc6c649707ed1c905b6d51c95b3ef370012e611ddf1c7caae290a55b4b5363","rules.mk":"c184595645d8cbc5170e8e92e01dc07c0f041e64865e3d570f71ea58f55e10a7","src/lib.rs":"6d7a148e71e1ec047482509458c7c9d2cc85b5b2442de91e1419488362e898ec","src/tables.rs":"2f5c0ab0bcb27a8ad63b7df697d602a988ea4044d910fe69507ab3b6e98c454a","tests/compare.rs":"c0af7d7fe5acac729271bca02f481db1ac11a129503f03b4c143621032cc158f","tests/fst/mod.rs":"47c9b58d447ef0b1baf08681e5b10d1b5bc736949dbab9dd67df795316ef7016","tests/fst/xid_continue.fst":"25ad1d6099bb2a9076372632318e13cbc0203e74aa90fd3a396b2391290f01e2","tests/fst/xid_start.fst":"887c9f515ffdbd373bb924c93c78bd3653c3864df236b55a3689e821602e1ea7","tests/roaring/mod.rs":"c1531fc60b6b43fc6934c9403fedb5f4178d1acb7335fa2b26d49fcf6ddcdc68","tests/static_size.rs":"744163a6fe8cdcd11e32b4b7da337a0c0afe7392d0a96d7dee0518984ffec6ef","tests/tables/mod.rs":"d03c52d87472ce421ba539c4ffdd9e1e5e310a89ea45754ae2aa961824423532","tests/tables/tables.rs":"02970abb0db640cc206f6a79051ed5e85c6f3c699e2d37e6ebed51f336d4fd81","tests/trie/mod.rs":"9d037cb77e439318bdce36698b7e35d36a0225962f6cc861fc171f76608c5504","tests/trie/trie.rs":"2268756cf8771d604747bfdee847a746be3b05706816893b4a9a11139bf70cbe"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"63c811e4a3b188312bac52e9a7887e71b4ccba944eb1d79e31b0ba9e45dcb3cd","Android.bp":"30f2c8c3953f70701ca9b79691627afaf1642016644ebb078143265a71954122","Cargo.toml":"e3ca3499503cadb5fa4237d0d7e123aefd084d0c9d0696c2c0e2ccac0679c614","LICENSE":"cff781a735d11de436295256ae4e316224b14f62edeba232cd936ef9c1599977","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-UNICODE":"1a9013de4bc7f20610ef0deb99707295d041ffb7f1606a964d53ab868980d867","METADATA":"7714535b59b0ecc6cd0d7070a5578299097a3ab54db6a91a588e295ecb3cf669","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_UNICODE":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"eb5f57be8102851c4e5778f7e1e18a61b8c27ad1337a3f1c4ca9806cca0987d1","TEST_MAPPING":"617e0415a751184db19187255aea183f30b2fbd01af79c43cad2461f354d3bff","benches/xid.rs":"e327d69560b51f41d78ab7feb613cee235174d1ca482da69cf7fcf9c518eb83e","cargo_embargo.json":"192dc535f1af33b64a948b6f6fad612f0b49196a60c34134b596d93759227a94","rules.mk":"c184595645d8cbc5170e8e92e01dc07c0f041e64865e3d570f71ea58f55e10a7","src/lib.rs":"6d7a148e71e1ec047482509458c7c9d2cc85b5b2442de91e1419488362e898ec","src/tables.rs":"2f5c0ab0bcb27a8ad63b7df697d602a988ea4044d910fe69507ab3b6e98c454a","tests/compare.rs":"c0af7d7fe5acac729271bca02f481db1ac11a129503f03b4c143621032cc158f","tests/fst/mod.rs":"47c9b58d447ef0b1baf08681e5b10d1b5bc736949dbab9dd67df795316ef7016","tests/fst/xid_continue.fst":"25ad1d6099bb2a9076372632318e13cbc0203e74aa90fd3a396b2391290f01e2","tests/fst/xid_start.fst":"887c9f515ffdbd373bb924c93c78bd3653c3864df236b55a3689e821602e1ea7","tests/roaring/mod.rs":"c1531fc60b6b43fc6934c9403fedb5f4178d1acb7335fa2b26d49fcf6ddcdc68","tests/static_size.rs":"744163a6fe8cdcd11e32b4b7da337a0c0afe7392d0a96d7dee0518984ffec6ef","tests/tables/mod.rs":"d03c52d87472ce421ba539c4ffdd9e1e5e310a89ea45754ae2aa961824423532","tests/tables/tables.rs":"02970abb0db640cc206f6a79051ed5e85c6f3c699e2d37e6ebed51f336d4fd81","tests/trie/mod.rs":"9d037cb77e439318bdce36698b7e35d36a0225962f6cc861fc171f76608c5504","tests/trie/trie.rs":"2268756cf8771d604747bfdee847a746be3b05706816893b4a9a11139bf70cbe"}}
\ No newline at end of file
diff --git a/crates/unicode-ident/Android.bp b/crates/unicode-ident/Android.bp
index 4d15660..89076e8 100644
--- a/crates/unicode-ident/Android.bp
+++ b/crates/unicode-ident/Android.bp
@@ -33,6 +33,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/unicode-ident/cargo_embargo.json b/crates/unicode-ident/cargo_embargo.json
index fd90c86..38cad01 100644
--- a/crates/unicode-ident/cargo_embargo.json
+++ b/crates/unicode-ident/cargo_embargo.json
@@ -1,9 +1,13 @@
{
"package": {
"unicode-ident": {
- "license_text": ["LICENSE-APACHE", "LICENSE-UNICODE"]
+ "license_text": [
+ "LICENSE-APACHE",
+ "LICENSE-UNICODE"
+ ]
}
},
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/unicode-segmentation/.android-checksum.json b/crates/unicode-segmentation/.android-checksum.json
index 55d3435..0976044 100644
--- a/crates/unicode-segmentation/.android-checksum.json
+++ b/crates/unicode-segmentation/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7dfcf3f82eddf538efd0723fc895b0fbd39b7bccc71b4aaa12a7a794bccc62fa","Android.bp":"44abdb1ca2c381d5eec08acb6dee4215bdf4e967c2d79a379ac2679b4834947e","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"abbe7049351be69db4021e094f671d4d9fdfc025b45cfe5ff99edb34257f6896","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"c5dbdf425dc9ceb4650a131b50e6345b6ab0ed0d97ff053b6651de1d92fb56a9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"080e43a157bfbee0a2da3c2ecf02928b84e8d7842d67d42a638374379ece96e0","TEST_MAPPING":"6c73d7bac1423eee57218e76c7eb5d9741bf4772d2de1575f7a3d69bb7366cc2","benches/chars.rs":"b7c2a6c13f37d86d910a6d11ded03f045c5b2b0e17624ab1810c413b155dfca8","benches/word_bounds.rs":"cdda5ca225010679e5520d03401558e1a483af95b564f9cae3be019fa9d93bc2","benches/words.rs":"ea9b259b104917bbfb6e1f718e296238febac9d37d093c65003efef8bda0c660","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","scripts/unicode.py":"1486cb211334ad54646f422a6a2fa4fbda6067fa2c1c58daaae03a8f03f9b866","scripts/unicode_gen_breaktests.py":"eb368a904697cfcd7e0335b2d81b88035b0ad163722577bd331ef5bba9879e93","src/grapheme.rs":"4814180f4c81cca46319c568168ce653f0a5f375c3eda460667b5bc45735bafc","src/lib.rs":"79f858f3be73aaca87608d006592c1aaf634716d6a0245b008bc936710c1652e","src/sentence.rs":"1c7cec6d2588e530496ff1ae3d63a7cd97cb29e4ce886b9442cef0644066ac6e","src/tables.rs":"bad2434d0ca4357a6269c9ad385ef11ea5cc94bf9a73f2eae7aee06dfda9719f","src/word.rs":"781c15af7273ad91cede7e16bef1b8a6d9039149a0a2261926c1c77fafa2142c","tests/test.rs":"e98d394e478affc3965cc476b83563e0ce3905ce4d5cf9e85ca637580277d208","tests/testdata/mod.rs":"cf25659483aa55fb7940a4cbb941f6a10ac46398164e09ccdac355d2d7c85cb8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7dfcf3f82eddf538efd0723fc895b0fbd39b7bccc71b4aaa12a7a794bccc62fa","Android.bp":"3b7c36d73fc1f13f930cb5e646f33febc0fd8dcf74f6008df1dce8827b4547b5","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"abbe7049351be69db4021e094f671d4d9fdfc025b45cfe5ff99edb34257f6896","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"c5dbdf425dc9ceb4650a131b50e6345b6ab0ed0d97ff053b6651de1d92fb56a9","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"080e43a157bfbee0a2da3c2ecf02928b84e8d7842d67d42a638374379ece96e0","TEST_MAPPING":"6c73d7bac1423eee57218e76c7eb5d9741bf4772d2de1575f7a3d69bb7366cc2","benches/chars.rs":"b7c2a6c13f37d86d910a6d11ded03f045c5b2b0e17624ab1810c413b155dfca8","benches/word_bounds.rs":"cdda5ca225010679e5520d03401558e1a483af95b564f9cae3be019fa9d93bc2","benches/words.rs":"ea9b259b104917bbfb6e1f718e296238febac9d37d093c65003efef8bda0c660","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","scripts/unicode.py":"1486cb211334ad54646f422a6a2fa4fbda6067fa2c1c58daaae03a8f03f9b866","scripts/unicode_gen_breaktests.py":"eb368a904697cfcd7e0335b2d81b88035b0ad163722577bd331ef5bba9879e93","src/grapheme.rs":"4814180f4c81cca46319c568168ce653f0a5f375c3eda460667b5bc45735bafc","src/lib.rs":"79f858f3be73aaca87608d006592c1aaf634716d6a0245b008bc936710c1652e","src/sentence.rs":"1c7cec6d2588e530496ff1ae3d63a7cd97cb29e4ce886b9442cef0644066ac6e","src/tables.rs":"bad2434d0ca4357a6269c9ad385ef11ea5cc94bf9a73f2eae7aee06dfda9719f","src/word.rs":"781c15af7273ad91cede7e16bef1b8a6d9039149a0a2261926c1c77fafa2142c","tests/test.rs":"e98d394e478affc3965cc476b83563e0ce3905ce4d5cf9e85ca637580277d208","tests/testdata/mod.rs":"cf25659483aa55fb7940a4cbb941f6a10ac46398164e09ccdac355d2d7c85cb8"}}
\ No newline at end of file
diff --git a/crates/unicode-segmentation/Android.bp b/crates/unicode-segmentation/Android.bp
index 0531bad..880d536 100644
--- a/crates/unicode-segmentation/Android.bp
+++ b/crates/unicode-segmentation/Android.bp
@@ -27,4 +27,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/unicode-segmentation/cargo_embargo.json b/crates/unicode-segmentation/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/unicode-segmentation/cargo_embargo.json
+++ b/crates/unicode-segmentation/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/unicode-width/.android-checksum.json b/crates/unicode-width/.android-checksum.json
index 0bd9223..ed86b8d 100644
--- a/crates/unicode-width/.android-checksum.json
+++ b/crates/unicode-width/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"8e3de79aede94fea16efd285eae4b73ac34bcdb596e05e50cd255dd47675a143","Android.bp":"cc28bddc721b0cc6eb8b2c192fa5dbc85fd71edf61b2e88c0e555ad5514a5e8c","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"3429fa23367d8e29c709a0aabe1fb18c1bb80612db9a1ef585156f3f8cc29d50","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7d1c3abdb74949d730d12adfb04ee54974fe621c8f50c14b25bd26b387b99757","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1a904e49fb4a2398c64528b291872775352286f62be026a071827f266d55cbcf","TEST_MAPPING":"8cf5470ec46a37c85e3e258fd833253eabdc5d1d902cc69d16e167100850bd06","benches/benches.rs":"d48c520608bf761120af28e5aa91520fcbc3fc45a7defe7cd35e671fc67bc913","cargo_embargo.json":"e35f70a87f8cbf6318a380d6c4228142aff731c4f6137f4f3cebbdb2c259795c","scripts/unicode.py":"432f2fc902e270597267ccee9a53959f6a939c5626d822b6b8717387d5714285","src/lib.rs":"51493ace5866fac830607c2b06528c7649c277d9ff7557caa8fb640d83390026","src/tables.rs":"91569fec1e0748594a2569959020fa9d241904ced4c1f7705d9057e2af062332","tests/emoji-test.txt":"749bf24573e3f2611cadfd7ecec727dc3e9bce7f3d96ce7fff1a970e0a31dc65","tests/tests.rs":"59c61b342185d5245b0142e4d3eeac7c01d114a841818e5842e96bb8f25794e6"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"8e3de79aede94fea16efd285eae4b73ac34bcdb596e05e50cd255dd47675a143","Android.bp":"1c05a2f7317f9b1952a5af82b6a32d5158fdb1f085ba02696bbfc9f5e6508ed3","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"3429fa23367d8e29c709a0aabe1fb18c1bb80612db9a1ef585156f3f8cc29d50","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"7d1c3abdb74949d730d12adfb04ee54974fe621c8f50c14b25bd26b387b99757","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1a904e49fb4a2398c64528b291872775352286f62be026a071827f266d55cbcf","TEST_MAPPING":"8cf5470ec46a37c85e3e258fd833253eabdc5d1d902cc69d16e167100850bd06","benches/benches.rs":"d48c520608bf761120af28e5aa91520fcbc3fc45a7defe7cd35e671fc67bc913","cargo_embargo.json":"2b39c30e6610177e271dce3855f1b2a7517533e00c5cc6d60dada8f57ebb4a95","scripts/unicode.py":"432f2fc902e270597267ccee9a53959f6a939c5626d822b6b8717387d5714285","src/lib.rs":"51493ace5866fac830607c2b06528c7649c277d9ff7557caa8fb640d83390026","src/tables.rs":"91569fec1e0748594a2569959020fa9d241904ced4c1f7705d9057e2af062332","tests/emoji-test.txt":"749bf24573e3f2611cadfd7ecec727dc3e9bce7f3d96ce7fff1a970e0a31dc65","tests/tests.rs":"59c61b342185d5245b0142e4d3eeac7c01d114a841818e5842e96bb8f25794e6"}}
\ No newline at end of file
diff --git a/crates/unicode-width/Android.bp b/crates/unicode-width/Android.bp
index 5f02a28..493b097 100644
--- a/crates/unicode-width/Android.bp
+++ b/crates/unicode-width/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/unicode-width/cargo_embargo.json b/crates/unicode-width/cargo_embargo.json
index d1ef02b..779e991 100644
--- a/crates/unicode-width/cargo_embargo.json
+++ b/crates/unicode-width/cargo_embargo.json
@@ -4,8 +4,11 @@
"package": {
"unicode-width": {
"test_data": {
- "tests/tests.rs": ["tests/emoji-test.txt"]
+ "tests/tests.rs": [
+ "tests/emoji-test.txt"
+ ]
}
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/unicode-xid/.android-checksum.json b/crates/unicode-xid/.android-checksum.json
index 84efdb3..9fb692c 100644
--- a/crates/unicode-xid/.android-checksum.json
+++ b/crates/unicode-xid/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"32dab69130189d065b5bbe8952542cbecf34ac9bd37dc1b84d40992c459cdc3a","Android.bp":"d9ef754ca3d910dbbc28db9bc829a7298e05bda9253bd18fb5d5b780d7cd9cec","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"49ebf211bfc6a253edcb1d6f001f3c2c6ae285c1665973b79c86adbfdd41f241","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"5c47d0c103f2051044035a4dd226f94e1e0ebfe66af5a0832f56690f5eb0f593","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"74c5e6f343a30da6e1a117ba3163d8faa2063000fc754c420845ecd75e049a68","TEST_MAPPING":"cc06b25174a2b4c4d4a05bf6047f7c559d1cc4cf991dfb8dba5a7ac244354e75","benches/xid.rs":"b238c8d4e61bd4e872831750aa2d09f196e348d932565df4b2ae95c9b271583e","cargo_embargo.json":"116030207d214b301d7f9fe7bebbf927e60c398cdb4a48ef25e277f302c46de9","rules.mk":"b81dfe147580cef49b59557fdf9bd063272bca019002f17b781916c778b6dbfa","src/lib.rs":"b23b1897bde7ad3d6c063edcc37df8eb909b911cc15241dfc84d1d48d797ce6a","src/tables.rs":"83791d87de670b2b16a9923f4cb3ecb9b8931ceef06990decf4434c6a5054eef","src/tests.rs":"45f6cc8322ee6a419beef63b9867b354fbe0e128aac7753cc2fb9a0191fae794","tests/exhaustive_tests.rs":"100c727463aead282931b62b7cf0cbce1eed8f49949af72590aba276afe5f394"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"32dab69130189d065b5bbe8952542cbecf34ac9bd37dc1b84d40992c459cdc3a","Android.bp":"19b18d8e661202ee4ca26454a60795d9c9d1fca60e415c6e233c21f764fe9fb0","COPYRIGHT":"ab4c8a47ea97e53eb239f5454701fbf35c618d980af54cfe659793662b2a1ebd","Cargo.toml":"49ebf211bfc6a253edcb1d6f001f3c2c6ae285c1665973b79c86adbfdd41f241","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"5c47d0c103f2051044035a4dd226f94e1e0ebfe66af5a0832f56690f5eb0f593","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"74c5e6f343a30da6e1a117ba3163d8faa2063000fc754c420845ecd75e049a68","TEST_MAPPING":"cc06b25174a2b4c4d4a05bf6047f7c559d1cc4cf991dfb8dba5a7ac244354e75","benches/xid.rs":"b238c8d4e61bd4e872831750aa2d09f196e348d932565df4b2ae95c9b271583e","cargo_embargo.json":"fc0ed75baa0a93234d9f55ef3f04105b0ba1a0708f9764725317466da8b72699","rules.mk":"b81dfe147580cef49b59557fdf9bd063272bca019002f17b781916c778b6dbfa","src/lib.rs":"b23b1897bde7ad3d6c063edcc37df8eb909b911cc15241dfc84d1d48d797ce6a","src/tables.rs":"83791d87de670b2b16a9923f4cb3ecb9b8931ceef06990decf4434c6a5054eef","src/tests.rs":"45f6cc8322ee6a419beef63b9867b354fbe0e128aac7753cc2fb9a0191fae794","tests/exhaustive_tests.rs":"100c727463aead282931b62b7cf0cbce1eed8f49949af72590aba276afe5f394"}}
\ No newline at end of file
diff --git a/crates/unicode-xid/Android.bp b/crates/unicode-xid/Android.bp
index f6c5385..42a4527 100644
--- a/crates/unicode-xid/Android.bp
+++ b/crates/unicode-xid/Android.bp
@@ -28,6 +28,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/unicode-xid/cargo_embargo.json b/crates/unicode-xid/cargo_embargo.json
index 774beff..f7a6abe 100644
--- a/crates/unicode-xid/cargo_embargo.json
+++ b/crates/unicode-xid/cargo_embargo.json
@@ -8,5 +8,6 @@
"generate_rulesmk": true,
"tests": false
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/unsafe-libyaml/.android-checksum.json b/crates/unsafe-libyaml/.android-checksum.json
index b9ceada..0d70b4e 100644
--- a/crates/unsafe-libyaml/.android-checksum.json
+++ b/crates/unsafe-libyaml/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2a31911551aa1a78c1ef6fbce16b2a0363964567006662248d781db08710ef7a","Android.bp":"7d50c9fe06da382933a2afeded14baedc7b903fb7404a452458ad6bf0b3bceb8","Cargo.lock":"2165e202a8be62281d9967b776e4e17ecb9d2448e15c9c40835993d4b89e7e47","Cargo.toml":"c85a9f3ce088d1fa81c383f8bfc9e1c30efd7f97618395cc43e79efd0c9333b6","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"cbe3a17aca99b0155fe5b8ff2d61ed092b1e7f65463d62f26c6f0149a3e8f5c6","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a8fefe55942de24b71f1912108227d1fd1ef83491bf696d2915764ca30a7b06d","cargo_embargo.json":"09ff4fb0ae69c3ecca88bba299858db4426ac3e31cc38009de47802b0db38b50","src/api.rs":"0fbbdad4ecc2af905b7e4f7b441ec88ce0ab46a499333c82937772b425b2ad63","src/bin/cstr/mod.rs":"44cb74166d6605511656cb8a6bbf2be38890ad5459363b2d74e7d7887add3429","src/bin/run-emitter-test-suite.rs":"8be1f6bcfaccb238c4b2de575fc89f85c7de83a0e062cf641308ba77c4b656b4","src/bin/run-parser-test-suite.rs":"4f02d3e0c249af6345819dc7c7dfa383c334d1b3828f0fa45b222193295d37b1","src/dumper.rs":"0d9da34f531725fee63375f343c11f228cdc72d382a3d61f39e4c0ff04193d47","src/emitter.rs":"bc0f3c6b9dd5a046f102eccf8c9c1706d3634258b14d6f2f252a91ddd18e3500","src/lib.rs":"18805a618c83e88f6bd6b32b5353424846efcec987f96d96e358e88209101d9f","src/loader.rs":"babf5414eca319a34dac32384a60239c65e610e9935abed2f7f6fc2dfa6d300e","src/macros.rs":"5889e9b9f33bc4bc21d067aacfddcc1b784c1f9743f14ba5e9911062c7dc6a82","src/ops.rs":"7ab8602383f6f6594690216ce5522a6e310f8bcd40b7c5d7860c46ec100d0887","src/parser.rs":"a2796b66878d09cdd61a574a71e1bc6e70b39c75558120c50b335713b42ed139","src/reader.rs":"66e9e94b9730a19679a2e7667cc0b75764202c5a023cc2e97ed6cf82b0e2bf0e","src/scanner.rs":"a11fc1c3e117390e2179c304a99f526a1cbf4d31b25e3121f92ee06e4e6a577a","src/success.rs":"888033636aa4810b9e8e43c43fcbd98934bed02b4427991b37734d788489c6f9","src/writer.rs":"e557062732a3836b9da7bc9dbfa39835b23261b5ecc3676b6b95959e6e71cc16","src/yaml.rs":"3589f1699876a521768d0d336713c4d784f58790502040e7d33d152030d41b46","tests/bin/mod.rs":"d35de652c4fefa1b5a2344e9b40cf250dc539655c5fddfb6d4fe2680da893243","tests/ignorelist/libyaml-emitter":"68b45202abf37cc9fbb72bf982cd757cf0dbb993bc02baa1f6b0956617633135","tests/ignorelist/libyaml-parser":"231824c08a7e3844d28a7090666599cc08dd7509c21e692f49cac91deb709af5","tests/ignorelist/libyaml-parser-error":"f3bd36ea0812fba79874d6575245be3c21ef5b8b06147f3d645e11b540d2c352","tests/test_emitter.rs":"7dc968be8c5e066c12ddd11b2154e03c74d15335299df674ab57fa5b5f9091b8","tests/test_parser.rs":"b90be8285fdfbb37b115dad2d5a66eb29f3bb65ce2026a55b8bdf05557cee081","tests/test_parser_error.rs":"389b7e0cd32625a659b9680006cce1d9c9ae60bc1c172f77cf12290550c9250b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2a31911551aa1a78c1ef6fbce16b2a0363964567006662248d781db08710ef7a","Android.bp":"1f8cb18cc7c6a775d75b90c3b4ee7fbd5360a50c368b8a9225833090dd2fb262","Cargo.lock":"2165e202a8be62281d9967b776e4e17ecb9d2448e15c9c40835993d4b89e7e47","Cargo.toml":"c85a9f3ce088d1fa81c383f8bfc9e1c30efd7f97618395cc43e79efd0c9333b6","LICENSE":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","LICENSE-MIT":"38620a3cfaeec97a9197e8c39e436ea7f0bc86699b1f1c35f1aa41785b6d4eac","METADATA":"cbe3a17aca99b0155fe5b8ff2d61ed092b1e7f65463d62f26c6f0149a3e8f5c6","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"a8fefe55942de24b71f1912108227d1fd1ef83491bf696d2915764ca30a7b06d","cargo_embargo.json":"e3ab62ceb6daa853349ccd2d8afee6b0e3702adb4a2ff4d9e471dc9e5654820d","src/api.rs":"0fbbdad4ecc2af905b7e4f7b441ec88ce0ab46a499333c82937772b425b2ad63","src/bin/cstr/mod.rs":"44cb74166d6605511656cb8a6bbf2be38890ad5459363b2d74e7d7887add3429","src/bin/run-emitter-test-suite.rs":"8be1f6bcfaccb238c4b2de575fc89f85c7de83a0e062cf641308ba77c4b656b4","src/bin/run-parser-test-suite.rs":"4f02d3e0c249af6345819dc7c7dfa383c334d1b3828f0fa45b222193295d37b1","src/dumper.rs":"0d9da34f531725fee63375f343c11f228cdc72d382a3d61f39e4c0ff04193d47","src/emitter.rs":"bc0f3c6b9dd5a046f102eccf8c9c1706d3634258b14d6f2f252a91ddd18e3500","src/lib.rs":"18805a618c83e88f6bd6b32b5353424846efcec987f96d96e358e88209101d9f","src/loader.rs":"babf5414eca319a34dac32384a60239c65e610e9935abed2f7f6fc2dfa6d300e","src/macros.rs":"5889e9b9f33bc4bc21d067aacfddcc1b784c1f9743f14ba5e9911062c7dc6a82","src/ops.rs":"7ab8602383f6f6594690216ce5522a6e310f8bcd40b7c5d7860c46ec100d0887","src/parser.rs":"a2796b66878d09cdd61a574a71e1bc6e70b39c75558120c50b335713b42ed139","src/reader.rs":"66e9e94b9730a19679a2e7667cc0b75764202c5a023cc2e97ed6cf82b0e2bf0e","src/scanner.rs":"a11fc1c3e117390e2179c304a99f526a1cbf4d31b25e3121f92ee06e4e6a577a","src/success.rs":"888033636aa4810b9e8e43c43fcbd98934bed02b4427991b37734d788489c6f9","src/writer.rs":"e557062732a3836b9da7bc9dbfa39835b23261b5ecc3676b6b95959e6e71cc16","src/yaml.rs":"3589f1699876a521768d0d336713c4d784f58790502040e7d33d152030d41b46","tests/bin/mod.rs":"d35de652c4fefa1b5a2344e9b40cf250dc539655c5fddfb6d4fe2680da893243","tests/ignorelist/libyaml-emitter":"68b45202abf37cc9fbb72bf982cd757cf0dbb993bc02baa1f6b0956617633135","tests/ignorelist/libyaml-parser":"231824c08a7e3844d28a7090666599cc08dd7509c21e692f49cac91deb709af5","tests/ignorelist/libyaml-parser-error":"f3bd36ea0812fba79874d6575245be3c21ef5b8b06147f3d645e11b540d2c352","tests/test_emitter.rs":"7dc968be8c5e066c12ddd11b2154e03c74d15335299df674ab57fa5b5f9091b8","tests/test_parser.rs":"b90be8285fdfbb37b115dad2d5a66eb29f3bb65ce2026a55b8bdf05557cee081","tests/test_parser_error.rs":"389b7e0cd32625a659b9680006cce1d9c9ae60bc1c172f77cf12290550c9250b"}}
\ No newline at end of file
diff --git a/crates/unsafe-libyaml/Android.bp b/crates/unsafe-libyaml/Android.bp
index 6558ccd..413c315 100644
--- a/crates/unsafe-libyaml/Android.bp
+++ b/crates/unsafe-libyaml/Android.bp
@@ -27,6 +27,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_binary {
@@ -44,6 +45,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_binary {
@@ -61,4 +63,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/unsafe-libyaml/cargo_embargo.json b/crates/unsafe-libyaml/cargo_embargo.json
index f358548..06e8c36 100644
--- a/crates/unsafe-libyaml/cargo_embargo.json
+++ b/crates/unsafe-libyaml/cargo_embargo.json
@@ -4,5 +4,6 @@
"force_rlib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/userfaultfd-sys/.android-checksum.json b/crates/userfaultfd-sys/.android-checksum.json
index 3c481c4..c799678 100644
--- a/crates/userfaultfd-sys/.android-checksum.json
+++ b/crates/userfaultfd-sys/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1c99072d02edc14b5f1c0c2560d7d2ad38ad212ffa3ef0407d8412ca1c5788df","Android.bp":"fc3e1647b4d08e26669d3cec8989e0759b73dbea6b622a01dc2e2bc34a9dae5b","Cargo.toml":"adcba1730aadfc614afe7e203e264b67d7c2b45dd8110d012aaa3e200443c20f","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"8b6ae8d7483471c6d3e5aa1de516bb2a37d532be5a32fa805e64a369522c99b7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","build.rs":"0617efd7fc5bb5e1d27fe375ec68c2753d1a9b4b07b9ebb81a74eb626d5336d8","cargo2android_consts.bp.fragment":"5ae1ef26ca569329661c3388bcd2f6bcb37487ee6582534d218ea49c6a9e0a22","cargo_embargo.json":"95315eacf19658c2fcf4557ef16deaf4181cc9ca8f5b70336ff26c7e74bf8251","out/bindings.rs":"4f0533c81213cd946d7dfb2cd39621f6c126dd3004bb23107148a10aa3e94d87","patches/Android.bp.patch":"7e83d43d2af41a60aac2d917c5c6cc82b46acf209ef23c7668ea9e2d0c9976cb","patches/dont-compile-userfaultfd_sys_consts.patch":"02af347740ead910391d8c5893697c681dc8ab69e14298d3c658df41f0c6169e","src/consts.c":"72ef35bcfbb7110109a8e7442947db2e39c6024ebc6b9726e713d7b6e69e41ae","src/lib.rs":"83e6998e54c31d5716a8af141fb1daf11931ccfd50d3c867392df989851f5db8","src/linux4_11.rs":"a4069918b7e67cdbbb9204cc62ccfc9087ff5bdaacd8e79aa0b9db6efed0c88b","src/linux4_14.rs":"92bf6df0a6a403c1832ad63c22c92953bcc60f2857a442c85325a3792b63d6bd","src/linux5_7.rs":"36565db79be872b869555bf05a49f714d8e9c2f21b94a1418a54a27d40e79d37","wrapper.h":"83cc7b85f35297dc44ef7ccd00c813d117c67f674f95452b2bd58f7043c48cbe"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1c99072d02edc14b5f1c0c2560d7d2ad38ad212ffa3ef0407d8412ca1c5788df","Android.bp":"0225904823558da682cee37e5c9cc6ebecab9f90d6c6376463bb2cb0532902ea","Cargo.toml":"adcba1730aadfc614afe7e203e264b67d7c2b45dd8110d012aaa3e200443c20f","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"8b6ae8d7483471c6d3e5aa1de516bb2a37d532be5a32fa805e64a369522c99b7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","build.rs":"0617efd7fc5bb5e1d27fe375ec68c2753d1a9b4b07b9ebb81a74eb626d5336d8","cargo2android_consts.bp.fragment":"5ae1ef26ca569329661c3388bcd2f6bcb37487ee6582534d218ea49c6a9e0a22","cargo_embargo.json":"82a250e83f12c8b717c0b83a31b92c70a6b2039d2bc0d6d883ecab77f4b9837d","out/bindings.rs":"4f0533c81213cd946d7dfb2cd39621f6c126dd3004bb23107148a10aa3e94d87","patches/Android.bp.patch":"7e83d43d2af41a60aac2d917c5c6cc82b46acf209ef23c7668ea9e2d0c9976cb","patches/dont-compile-userfaultfd_sys_consts.patch":"02af347740ead910391d8c5893697c681dc8ab69e14298d3c658df41f0c6169e","src/consts.c":"72ef35bcfbb7110109a8e7442947db2e39c6024ebc6b9726e713d7b6e69e41ae","src/lib.rs":"83e6998e54c31d5716a8af141fb1daf11931ccfd50d3c867392df989851f5db8","src/linux4_11.rs":"a4069918b7e67cdbbb9204cc62ccfc9087ff5bdaacd8e79aa0b9db6efed0c88b","src/linux4_14.rs":"92bf6df0a6a403c1832ad63c22c92953bcc60f2857a442c85325a3792b63d6bd","src/linux5_7.rs":"36565db79be872b869555bf05a49f714d8e9c2f21b94a1418a54a27d40e79d37","wrapper.h":"83cc7b85f35297dc44ef7ccd00c813d117c67f674f95452b2bd58f7043c48cbe"}}
\ No newline at end of file
diff --git a/crates/userfaultfd-sys/Android.bp b/crates/userfaultfd-sys/Android.bp
index bb42191..758e172 100644
--- a/crates/userfaultfd-sys/Android.bp
+++ b/crates/userfaultfd-sys/Android.bp
@@ -38,6 +38,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
cc_library_static {
diff --git a/crates/userfaultfd-sys/cargo_embargo.json b/crates/userfaultfd-sys/cargo_embargo.json
index f743bdc..86d0d9c 100644
--- a/crates/userfaultfd-sys/cargo_embargo.json
+++ b/crates/userfaultfd-sys/cargo_embargo.json
@@ -5,5 +5,6 @@
"copy_out": true,
"patch": "patches/Android.bp.patch"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/userfaultfd/.android-checksum.json b/crates/userfaultfd/.android-checksum.json
index ff38ac0..f096452 100644
--- a/crates/userfaultfd/.android-checksum.json
+++ b/crates/userfaultfd/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"707f6a4be076e593b77f9ed3efc1d71043dc945197e09eb70a22502c5ee01db7","Android.bp":"0e228c4d9054d53d6e6f3d12cd94806940c6832752aa26d4973f5d6744498ff2","CHANGELOG.md":"fbab2ca5df5a82186be6d30b3d927079724470c64184fad202971b31704d7d3f","Cargo.lock":"cc02bdc5fd36a7a72913f8a0fad71359cd0e071ee8205ceaa839f35595d28dcd","Cargo.toml":"a5361f1be5e04868daeec7ed5d8a8154bf8df513d9dd2fe24d799f9fe7114617","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"41a29fe2a886c04b541d734c38c199acf651831533e95f7482370d7d48800337","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fd9ce1965c932d374c92e6f7ef1bce654577b899459b1beeb58613af5e71c404","SECURITY.md":"789b18f8e0f486a10dc1899fecb37df69d494277cc1cbd208c28dbd87a1b06b8","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","examples/manpage.rs":"6c96cf8317a638fdac0da10e087848009d7859d2306ddb2d94ad6b7451f83961","src/builder.rs":"1f9c50df3daa56c6f66ea63c9d5c68f6697142086e384bd1d705d786319b9177","src/error.rs":"a6d1cb3c0829710a06716d6f1dcb4912de251788231a21aa6b77d8197ebb97ec","src/event.rs":"1c8c0846ac967c548c1a886de4d055dd1529d5688f0b8e58adc5bfc431a05ca7","src/lib.rs":"67aecd2486394a10220561dd63ecec7533e0ea7d86ab4d5cca194276694faf55","src/raw.rs":"f8a5048506216e12ff0e650adff8e17bd9a6fff4d25380a990ddbc3506ab7959","tests/manpage_example.rs":"20accf0ee454bb0254bbc52bd4eebd44a93e43defde5fd535ea505afe47b7508"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"707f6a4be076e593b77f9ed3efc1d71043dc945197e09eb70a22502c5ee01db7","Android.bp":"17791960d16db047d7df4bb9c71e77853b15f2d2ece6b4ebb85fd33c61dedd61","CHANGELOG.md":"fbab2ca5df5a82186be6d30b3d927079724470c64184fad202971b31704d7d3f","Cargo.lock":"cc02bdc5fd36a7a72913f8a0fad71359cd0e071ee8205ceaa839f35595d28dcd","Cargo.toml":"a5361f1be5e04868daeec7ed5d8a8154bf8df513d9dd2fe24d799f9fe7114617","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"41a29fe2a886c04b541d734c38c199acf651831533e95f7482370d7d48800337","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fd9ce1965c932d374c92e6f7ef1bce654577b899459b1beeb58613af5e71c404","SECURITY.md":"789b18f8e0f486a10dc1899fecb37df69d494277cc1cbd208c28dbd87a1b06b8","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","examples/manpage.rs":"6c96cf8317a638fdac0da10e087848009d7859d2306ddb2d94ad6b7451f83961","src/builder.rs":"1f9c50df3daa56c6f66ea63c9d5c68f6697142086e384bd1d705d786319b9177","src/error.rs":"a6d1cb3c0829710a06716d6f1dcb4912de251788231a21aa6b77d8197ebb97ec","src/event.rs":"1c8c0846ac967c548c1a886de4d055dd1529d5688f0b8e58adc5bfc431a05ca7","src/lib.rs":"67aecd2486394a10220561dd63ecec7533e0ea7d86ab4d5cca194276694faf55","src/raw.rs":"f8a5048506216e12ff0e650adff8e17bd9a6fff4d25380a990ddbc3506ab7959","tests/manpage_example.rs":"20accf0ee454bb0254bbc52bd4eebd44a93e43defde5fd535ea505afe47b7508"}}
\ No newline at end of file
diff --git a/crates/userfaultfd/Android.bp b/crates/userfaultfd/Android.bp
index 922b3d3..fbe5c3b 100644
--- a/crates/userfaultfd/Android.bp
+++ b/crates/userfaultfd/Android.bp
@@ -36,4 +36,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/userfaultfd/cargo_embargo.json b/crates/userfaultfd/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/userfaultfd/cargo_embargo.json
+++ b/crates/userfaultfd/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/utf-8/.android-checksum.json b/crates/utf-8/.android-checksum.json
index c1fe93f..df786cb 100644
--- a/crates/utf-8/.android-checksum.json
+++ b/crates/utf-8/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f3b5bdb2023516aa8434f2dbe0a25209b3ec990bcbb694f7fb635a5a64611e96","Android.bp":"c966a59aeefdb033a25fe6183d827cf122c991d528af26314dca5605acadaef3","Cargo.toml":"1e13a20e2e0c8ecab7f5c91242d9bd817f8ea2529c771e1047ad96166c031df0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"460e0546ccde42ea531d52037fc6dc767241246c6c854f5a125aa9935b984202","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0fddb96ccb1a582e788b7aa2f0a83a352bd99bad9132b921f88f36296e3dc63d","TEST_MAPPING":"e62d493643db90fcab295097bcf9ba02f45c0071532cb1ea2b11431a9dcdf283","benches/from_utf8_lossy.rs":"52c97851b415da5e8674b4398bc43f2e20a1d22b7efe9f53eb33059a20e04ed3","cargo_embargo.json":"84459a3d28b2de537000617d709682791207b299a562af849851183686bc30fe","src/lib.rs":"1b561b0793c6814229ac4b25541de4996f3316ac27f537189654611af2bad324","src/lossy.rs":"f3e3318b1f79c4241ada49d4c6933ac9e3a43b00ae1f1220fc7d199895052124","src/read.rs":"0fa0dba7c64ed8d6204127be6b671f08345d33a463077906224b9c001a0764c5","tests/unit.rs":"5157bf3493d80d51bd07aeb0629362fabff70f02d8ff787072097f5da6c0ff5a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f3b5bdb2023516aa8434f2dbe0a25209b3ec990bcbb694f7fb635a5a64611e96","Android.bp":"a5ba9ca6e066f86399fdb6b13bf67d56af04bea28a74470d3c09d680db537b4a","Cargo.toml":"1e13a20e2e0c8ecab7f5c91242d9bd817f8ea2529c771e1047ad96166c031df0","LICENSE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","LICENSE-APACHE":"50f827348bfd5def2df4f30cb41264072cf9c180bd9ed698437e8d85b2482754","METADATA":"460e0546ccde42ea531d52037fc6dc767241246c6c854f5a125aa9935b984202","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"0fddb96ccb1a582e788b7aa2f0a83a352bd99bad9132b921f88f36296e3dc63d","TEST_MAPPING":"e62d493643db90fcab295097bcf9ba02f45c0071532cb1ea2b11431a9dcdf283","benches/from_utf8_lossy.rs":"52c97851b415da5e8674b4398bc43f2e20a1d22b7efe9f53eb33059a20e04ed3","cargo_embargo.json":"61ba76f81eda0dbd9998d8426930aac96e18eaedc15e4a16ff9573683dec8b04","src/lib.rs":"1b561b0793c6814229ac4b25541de4996f3316ac27f537189654611af2bad324","src/lossy.rs":"f3e3318b1f79c4241ada49d4c6933ac9e3a43b00ae1f1220fc7d199895052124","src/read.rs":"0fa0dba7c64ed8d6204127be6b671f08345d33a463077906224b9c001a0764c5","tests/unit.rs":"5157bf3493d80d51bd07aeb0629362fabff70f02d8ff787072097f5da6c0ff5a"}}
\ No newline at end of file
diff --git a/crates/utf-8/Android.bp b/crates/utf-8/Android.bp
index bf00462..06d62b7 100644
--- a/crates/utf-8/Android.bp
+++ b/crates/utf-8/Android.bp
@@ -27,6 +27,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/utf-8/cargo_embargo.json b/crates/utf-8/cargo_embargo.json
index c8842d1..c885993 100644
--- a/crates/utf-8/cargo_embargo.json
+++ b/crates/utf-8/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/uuid/.android-checksum.json b/crates/uuid/.android-checksum.json
index 7971bbd..26e34ee 100644
--- a/crates/uuid/.android-checksum.json
+++ b/crates/uuid/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b48f0cc4cf809292ff549ecbe481cd627ea2c7a9f79cb7d89045493dafe8698b","Android.bp":"cbb78d551f48e50718537389b7a6e6a72edfb2149e16413ea70be7d1721ba207","Cargo.toml":"f8dcf85d0dd70ed989485d2cba4c74b3c5694fdd716f57e999a7e66db5dcc3c1","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"8d186384d3a42dc1f89ad94bf5f8c16cc5d113ea7641cc9a141d5ec33bb5638b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2f0aec046420374e6a9c9b00ff3017ce2bb4696b5a033a75b3042c5e532306ae","TEST_MAPPING":"e93962d7a70966b064fcb2f8429feb4f97dca1cfaeb526f4ec56a44305c6de69","cargo_embargo.json":"3bf1a98721509650cb9f52cad8d9432fc466b69a9556fc24726caee458caaf0b","rules.mk":"c6a05070a68ecf74533aa73ac4cef3a8ada1f5ef3de138d4c98a79c48f863482","src/builder.rs":"c5d16814a2ec0f239f77b919dcd55d6224acc574080461b49bab53a53c37bd50","src/error.rs":"7d2913559d5179ff0ed4430abe0fea081cd6033c1c89f366c6fe91984f1151cd","src/external.rs":"d5b9021ea1db870ed29525e3290fae1d6ef89ab615d54548830c6632a1353d4c","src/external/arbitrary_support.rs":"e012688d57194c3eb03393fc4c768bba0afd57667c3525f7b36027bf7ab546cd","src/external/borsh_support.rs":"9b7f8438d29dad79dc79efd5db412e8a37e29d567ae21c76f4f3f37febabcd07","src/external/serde_support.rs":"86e708f535cdc16a8ece6f6bdf579c3beee453a7346077263b8636ee1d1d3e50","src/external/slog_support.rs":"beaa766f1e536a65bbe983192feefc3db8510058d81bf098a8265bc33100180b","src/fmt.rs":"80c5fa5eec2e2afcc4d8bfb045b63b3c796ac72fb0b7646d297cf35aa9eabd38","src/lib.rs":"7c1ec79bd1d989c54df90ead2ad870d22bbf19261e6127c4cf2dd4bb572cef53","src/macros.rs":"59262f55948d70b7ca0dcee15c990b6a3ad4fca47705d36ba1e90f88e53e8839","src/md5.rs":"5612c79b17b868220029baf52a87bff31530e607ac2522afdf8677eecb28e780","src/non_nil.rs":"b09342ba0f2a92123a0b3578132e54f5968d7ab40f877eadaf6274847de27074","src/parser.rs":"a0d125589f80f3e30bca52897b58c2fce10473eecca1f2b5253ccc024f19162b","src/rng.rs":"158c5d6336c10007f7fa8ede586e7b2fccc9e28186109c8ca060f6e0086c5bb2","src/sha1.rs":"173b844e6a3975270ea36d235f5b7e406e9612ba95833d811b3602f5107589f0","src/timestamp.rs":"170a2a94271cd6ec9a672c7baa1c7a0adf09e1de06acd80c3bc06cf35600b20b","src/v1.rs":"e52a27d89e344036ffe4408a7b5b5fb326d6fb18ae06704a090c6399b7eb3611","src/v3.rs":"7af107a0c0339cae9b50b8b084c5339caf850fe0cd60bc1b129577ee2f140e67","src/v4.rs":"20ae5609a8f891dca1bd8fd99421121dfe452d9ce7f51d635a6d14b4a09889b5","src/v5.rs":"db4b037b217624c2890372bcf93cda5c8a80710d22c1d6c36e1e9ce807673fd3","src/v6.rs":"b0f8cf1bec6df06aa7c3d06a465c1a795f02a0bb41328b9509a4662c7b4cf89d","src/v7.rs":"6aa389648dd187a86766e420d7b055c79ed1437353590c2440fe04f713a7b650","src/v8.rs":"25b49a2e5e947cffad78ac4b6da187b75469193814eb340eb8a1a9c644021106"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b48f0cc4cf809292ff549ecbe481cd627ea2c7a9f79cb7d89045493dafe8698b","Android.bp":"b8437015c8905b1f50897315bb21fcf91c6dd3ef3348fe3d0cba19affa53a819","Cargo.toml":"f8dcf85d0dd70ed989485d2cba4c74b3c5694fdd716f57e999a7e66db5dcc3c1","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"8d186384d3a42dc1f89ad94bf5f8c16cc5d113ea7641cc9a141d5ec33bb5638b","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"2f0aec046420374e6a9c9b00ff3017ce2bb4696b5a033a75b3042c5e532306ae","TEST_MAPPING":"e93962d7a70966b064fcb2f8429feb4f97dca1cfaeb526f4ec56a44305c6de69","cargo_embargo.json":"f70806c71d64e88150367d54b534de6dadcdece43cd9e41ed47c0d2fdf832d35","rules.mk":"c6a05070a68ecf74533aa73ac4cef3a8ada1f5ef3de138d4c98a79c48f863482","src/builder.rs":"c5d16814a2ec0f239f77b919dcd55d6224acc574080461b49bab53a53c37bd50","src/error.rs":"7d2913559d5179ff0ed4430abe0fea081cd6033c1c89f366c6fe91984f1151cd","src/external.rs":"d5b9021ea1db870ed29525e3290fae1d6ef89ab615d54548830c6632a1353d4c","src/external/arbitrary_support.rs":"e012688d57194c3eb03393fc4c768bba0afd57667c3525f7b36027bf7ab546cd","src/external/borsh_support.rs":"9b7f8438d29dad79dc79efd5db412e8a37e29d567ae21c76f4f3f37febabcd07","src/external/serde_support.rs":"86e708f535cdc16a8ece6f6bdf579c3beee453a7346077263b8636ee1d1d3e50","src/external/slog_support.rs":"beaa766f1e536a65bbe983192feefc3db8510058d81bf098a8265bc33100180b","src/fmt.rs":"80c5fa5eec2e2afcc4d8bfb045b63b3c796ac72fb0b7646d297cf35aa9eabd38","src/lib.rs":"7c1ec79bd1d989c54df90ead2ad870d22bbf19261e6127c4cf2dd4bb572cef53","src/macros.rs":"59262f55948d70b7ca0dcee15c990b6a3ad4fca47705d36ba1e90f88e53e8839","src/md5.rs":"5612c79b17b868220029baf52a87bff31530e607ac2522afdf8677eecb28e780","src/non_nil.rs":"b09342ba0f2a92123a0b3578132e54f5968d7ab40f877eadaf6274847de27074","src/parser.rs":"a0d125589f80f3e30bca52897b58c2fce10473eecca1f2b5253ccc024f19162b","src/rng.rs":"158c5d6336c10007f7fa8ede586e7b2fccc9e28186109c8ca060f6e0086c5bb2","src/sha1.rs":"173b844e6a3975270ea36d235f5b7e406e9612ba95833d811b3602f5107589f0","src/timestamp.rs":"170a2a94271cd6ec9a672c7baa1c7a0adf09e1de06acd80c3bc06cf35600b20b","src/v1.rs":"e52a27d89e344036ffe4408a7b5b5fb326d6fb18ae06704a090c6399b7eb3611","src/v3.rs":"7af107a0c0339cae9b50b8b084c5339caf850fe0cd60bc1b129577ee2f140e67","src/v4.rs":"20ae5609a8f891dca1bd8fd99421121dfe452d9ce7f51d635a6d14b4a09889b5","src/v5.rs":"db4b037b217624c2890372bcf93cda5c8a80710d22c1d6c36e1e9ce807673fd3","src/v6.rs":"b0f8cf1bec6df06aa7c3d06a465c1a795f02a0bb41328b9509a4662c7b4cf89d","src/v7.rs":"6aa389648dd187a86766e420d7b055c79ed1437353590c2440fe04f713a7b650","src/v8.rs":"25b49a2e5e947cffad78ac4b6da187b75469193814eb340eb8a1a9c644021106"}}
\ No newline at end of file
diff --git a/crates/uuid/Android.bp b/crates/uuid/Android.bp
index 653f26c..6b4ddb5 100644
--- a/crates/uuid/Android.bp
+++ b/crates/uuid/Android.bp
@@ -40,6 +40,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
@@ -96,6 +97,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/uuid/cargo_embargo.json b/crates/uuid/cargo_embargo.json
index 342c889..25b1959 100644
--- a/crates/uuid/cargo_embargo.json
+++ b/crates/uuid/cargo_embargo.json
@@ -2,7 +2,9 @@
"run_cargo": false,
"package": {
"uuid": {
- "dep_blocklist": ["libtrybuild"]
+ "dep_blocklist": [
+ "libtrybuild"
+ ]
}
},
"variants": [
@@ -29,5 +31,6 @@
},
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/vhost-user-backend/.android-checksum.json b/crates/vhost-user-backend/.android-checksum.json
index 5113c4c..9f2ed75 100644
--- a/crates/vhost-user-backend/.android-checksum.json
+++ b/crates/vhost-user-backend/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d8c61b6b7c98d7e38326e92eebc90ffe7e5ed84808cd253027adafa6a4bfa0bb","Android.bp":"cd6b2be52d8f135dd9556db8cb245143a8aa23dd93881fdc58ec1718c49578b7","CHANGELOG.md":"860576aca957aa9c52b25fb8d5512b0ea4b6cc8eb0550cc0568cef041227eed7","Cargo.toml":"206479e12b52a8f8de73806c9d34e100cc8bf8d8ef1512af81819404c9e49d4f","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c93b0d28df7f3577caae215d9c749178b97a1a66c0018c481297e62b33e562dc","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"695dc4ab23be4220434deffb4a251dc6191fee81480a159d429885be5a7e74f5","cargo_embargo.json":"fe2083e89dab7eacc669aee293d2f59192ee75569ef7087eacc5f43277fc7436","patches/license.patch":"5dc8b0430708e39fd98174d21bf906ce595c29de10e75be4ba98313ed845da4d","src/backend.rs":"2b4023355287872c0da43e1f9ed43aaa3900c235ea8b49e2df95b90f8feb58b9","src/bitmap.rs":"39467a397ad7e77c0ceb47216a0f0c285621ec831213aae5269fe0df1c41ba9d","src/event_loop.rs":"8b9786ddc315ee68946c00a64361085c8234efa83bfe8b9bea27087c82b7656f","src/handler.rs":"8f04aff8935f7c8e79a74eea54be468f9ccd1c0dc6b7289c019186df8da05cf8","src/lib.rs":"713bff545fb6da9e667ecb9db97a3961e98178ea1f3fa470ddfa7397d58bed2e","src/vring.rs":"8db6a691a37adc91a7e10d5d9d8eb55046613f24d63065f620d24377c56b4e72","tests/vhost-user-server.rs":"339309ffad2976c25a1a8a623be26e5a5b79cc952b27fb04f2c234c2959583e4"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d8c61b6b7c98d7e38326e92eebc90ffe7e5ed84808cd253027adafa6a4bfa0bb","Android.bp":"cd6b2be52d8f135dd9556db8cb245143a8aa23dd93881fdc58ec1718c49578b7","CHANGELOG.md":"860576aca957aa9c52b25fb8d5512b0ea4b6cc8eb0550cc0568cef041227eed7","Cargo.toml":"206479e12b52a8f8de73806c9d34e100cc8bf8d8ef1512af81819404c9e49d4f","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c93b0d28df7f3577caae215d9c749178b97a1a66c0018c481297e62b33e562dc","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"695dc4ab23be4220434deffb4a251dc6191fee81480a159d429885be5a7e74f5","cargo_embargo.json":"a074ef40077aa6b2ebfbe5e36d3063be417f46704655d25eb1c69ff884011160","patches/license.patch":"5dc8b0430708e39fd98174d21bf906ce595c29de10e75be4ba98313ed845da4d","src/backend.rs":"2b4023355287872c0da43e1f9ed43aaa3900c235ea8b49e2df95b90f8feb58b9","src/bitmap.rs":"39467a397ad7e77c0ceb47216a0f0c285621ec831213aae5269fe0df1c41ba9d","src/event_loop.rs":"8b9786ddc315ee68946c00a64361085c8234efa83bfe8b9bea27087c82b7656f","src/handler.rs":"8f04aff8935f7c8e79a74eea54be468f9ccd1c0dc6b7289c019186df8da05cf8","src/lib.rs":"713bff545fb6da9e667ecb9db97a3961e98178ea1f3fa470ddfa7397d58bed2e","src/vring.rs":"8db6a691a37adc91a7e10d5d9d8eb55046613f24d63065f620d24377c56b4e72","tests/vhost-user-server.rs":"339309ffad2976c25a1a8a623be26e5a5b79cc952b27fb04f2c234c2959583e4"}}
\ No newline at end of file
diff --git a/crates/vhost-user-backend/cargo_embargo.json b/crates/vhost-user-backend/cargo_embargo.json
index f1c0329..3185139 100644
--- a/crates/vhost-user-backend/cargo_embargo.json
+++ b/crates/vhost-user-backend/cargo_embargo.json
@@ -9,5 +9,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/vhost/.android-checksum.json b/crates/vhost/.android-checksum.json
index b3c8657..ea97dc5 100644
--- a/crates/vhost/.android-checksum.json
+++ b/crates/vhost/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"cda6a84bffd970ce5cbfe4dcbbc7f9aa02bdc664cb57b9d4248668f072105cb6","Android.bp":"710a465fc5f55d496570395841a3e387869d824e10ecd23b2d075b077a1f8267","CHANGELOG.md":"fac1ec6355f640137b1374ce12924dfe5b5632392e248fa83cdf5aa8862445b1","Cargo.toml":"90374f327391e4c9744863b188455c542f003588b9a8fa14f4318859ae8c4896","LICENSE":"3bf1557714d6b0e032070ae33d7da38af4878dbb84191b4e9e84670d0761ab2a","METADATA":"01df3a278f38f454c86e315dc416f8a200f9d528d6485046cbe6db469ae66cd7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4878afa3b83615901d4f284b8a26182fc6a470bec092fe761a4357ae7594ca1b","cargo_embargo.json":"91d53e8c8687b61faf39b9eca52cd1dd91788656585eac3833de4cecae7400a5","docs/vhost_architecture.drawio":"29b9be089ff140dc9d03dd736e7bc1f838f2a682d16b5bdd7aa7f4bf0f0aae8f","docs/vhost_architecture.png":"4140f450652a186802c2672228e20f313720beaf0fda657726b466b98422121c","patches/LICENSE.patch":"a3e4523846a19f35fd8571ddc9653b3ea86b1e43b0c7ac769ee15188fd7be80b","src/backend.rs":"4bba3a5c4a3cd68797c8a5e4f872a463ee0ab5a7b934dffce4024018d61e2249","src/lib.rs":"adc79f944603ba7f101d0ce0cec05136ff311b85659ab37515c951554b6d21f9","src/net.rs":"42cd43e5df2394a04d4dd986aebc726ae39297274b214e37c070955089bcbc4b","src/vdpa.rs":"51fac586f33ee41e5f154f116d987a1c3279342d018af7c02229db8ffc7f55ee","src/vhost_kern/mod.rs":"62e661975fdc0537177a8cb1ed375aeea438000cf14ff1a154a6d38f22bdee74","src/vhost_kern/net.rs":"c3ea56e092ccf6f4ad85f9bee726b2613df2be009bc7703cf3398d9b4d8a88dc","src/vhost_kern/vdpa.rs":"8ec1d3ae73a25baaa9c5ee0da47bacfc7bfaf3c089e64e074c45f2acea720fde","src/vhost_kern/vhost_binding.rs":"5cca5875878188bd296e4b41e26dcb70b99a64323ced9f047b592b95ee0457c6","src/vhost_kern/vsock.rs":"83465aba44acd3d6f97f2c6dd1c28052d83568ab818635e0e4eafb12eebad833","src/vhost_user/backend.rs":"5f32d3e30085db5561f4c3b1a5b4d23b5674ef4477b48dbcbc26002ea878b872","src/vhost_user/backend_req.rs":"293fcf6ed79c49ae3ea7e80b99ef7e3d21187cd4a306c9ca1fe065e00c5f99f9","src/vhost_user/backend_req_handler.rs":"e114b64263c270a731447dbeda0e9f2d79e94ee51214a260bbb08d545281f986","src/vhost_user/connection.rs":"f51fbd9c61286e65f1f484b569cf600bdc9e3d0e150065f98f5d41066dda9553","src/vhost_user/dummy_backend.rs":"88c1a736be4c1effeb1b73841efc121e41429018ff97fe01046ba246be91eb0f","src/vhost_user/frontend.rs":"73b3ad3a49e01aaa2166f40d83e7ec73b2551c3962b3c6ebce0b991c01ae5394","src/vhost_user/frontend_req_handler.rs":"b51e4d3864c02363116de00687c26e8ad61fd8ea0d3cbe282f56740e9a74c752","src/vhost_user/gpu_backend_req.rs":"bd37285d05d8813419ec653dae05ced04890554de7fc84967c742d11d6bb0370","src/vhost_user/gpu_message.rs":"fd0bd7f13bc90d2a1a7c170b4f36071fcc6506207fc29090b7568711ddb7179e","src/vhost_user/message.rs":"7f499a2226cef46c89f790c6c5992c214a4dcd3a49796deae5f94949e53a8ebb","src/vhost_user/mod.rs":"47e804cfe9ee060da0bad4247be7cdd279d135acc378a59e23c5bf8e43bbb0f3","src/vsock.rs":"65bece8f1752671795e4e5678268e70122fed16e81644fee6c0f5c69501634c8"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"cda6a84bffd970ce5cbfe4dcbbc7f9aa02bdc664cb57b9d4248668f072105cb6","Android.bp":"710a465fc5f55d496570395841a3e387869d824e10ecd23b2d075b077a1f8267","CHANGELOG.md":"fac1ec6355f640137b1374ce12924dfe5b5632392e248fa83cdf5aa8862445b1","Cargo.toml":"90374f327391e4c9744863b188455c542f003588b9a8fa14f4318859ae8c4896","LICENSE":"3bf1557714d6b0e032070ae33d7da38af4878dbb84191b4e9e84670d0761ab2a","METADATA":"01df3a278f38f454c86e315dc416f8a200f9d528d6485046cbe6db469ae66cd7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4878afa3b83615901d4f284b8a26182fc6a470bec092fe761a4357ae7594ca1b","cargo_embargo.json":"184beda8681c8c012f1e98d5d4d5cc589e629f5ad2e7507c4e636b03df852cd6","docs/vhost_architecture.drawio":"29b9be089ff140dc9d03dd736e7bc1f838f2a682d16b5bdd7aa7f4bf0f0aae8f","docs/vhost_architecture.png":"4140f450652a186802c2672228e20f313720beaf0fda657726b466b98422121c","patches/LICENSE.patch":"a3e4523846a19f35fd8571ddc9653b3ea86b1e43b0c7ac769ee15188fd7be80b","src/backend.rs":"4bba3a5c4a3cd68797c8a5e4f872a463ee0ab5a7b934dffce4024018d61e2249","src/lib.rs":"adc79f944603ba7f101d0ce0cec05136ff311b85659ab37515c951554b6d21f9","src/net.rs":"42cd43e5df2394a04d4dd986aebc726ae39297274b214e37c070955089bcbc4b","src/vdpa.rs":"51fac586f33ee41e5f154f116d987a1c3279342d018af7c02229db8ffc7f55ee","src/vhost_kern/mod.rs":"62e661975fdc0537177a8cb1ed375aeea438000cf14ff1a154a6d38f22bdee74","src/vhost_kern/net.rs":"c3ea56e092ccf6f4ad85f9bee726b2613df2be009bc7703cf3398d9b4d8a88dc","src/vhost_kern/vdpa.rs":"8ec1d3ae73a25baaa9c5ee0da47bacfc7bfaf3c089e64e074c45f2acea720fde","src/vhost_kern/vhost_binding.rs":"5cca5875878188bd296e4b41e26dcb70b99a64323ced9f047b592b95ee0457c6","src/vhost_kern/vsock.rs":"83465aba44acd3d6f97f2c6dd1c28052d83568ab818635e0e4eafb12eebad833","src/vhost_user/backend.rs":"5f32d3e30085db5561f4c3b1a5b4d23b5674ef4477b48dbcbc26002ea878b872","src/vhost_user/backend_req.rs":"293fcf6ed79c49ae3ea7e80b99ef7e3d21187cd4a306c9ca1fe065e00c5f99f9","src/vhost_user/backend_req_handler.rs":"e114b64263c270a731447dbeda0e9f2d79e94ee51214a260bbb08d545281f986","src/vhost_user/connection.rs":"f51fbd9c61286e65f1f484b569cf600bdc9e3d0e150065f98f5d41066dda9553","src/vhost_user/dummy_backend.rs":"88c1a736be4c1effeb1b73841efc121e41429018ff97fe01046ba246be91eb0f","src/vhost_user/frontend.rs":"73b3ad3a49e01aaa2166f40d83e7ec73b2551c3962b3c6ebce0b991c01ae5394","src/vhost_user/frontend_req_handler.rs":"b51e4d3864c02363116de00687c26e8ad61fd8ea0d3cbe282f56740e9a74c752","src/vhost_user/gpu_backend_req.rs":"bd37285d05d8813419ec653dae05ced04890554de7fc84967c742d11d6bb0370","src/vhost_user/gpu_message.rs":"fd0bd7f13bc90d2a1a7c170b4f36071fcc6506207fc29090b7568711ddb7179e","src/vhost_user/message.rs":"7f499a2226cef46c89f790c6c5992c214a4dcd3a49796deae5f94949e53a8ebb","src/vhost_user/mod.rs":"47e804cfe9ee060da0bad4247be7cdd279d135acc378a59e23c5bf8e43bbb0f3","src/vsock.rs":"65bece8f1752671795e4e5678268e70122fed16e81644fee6c0f5c69501634c8"}}
\ No newline at end of file
diff --git a/crates/vhost/cargo_embargo.json b/crates/vhost/cargo_embargo.json
index b06c9df..228c9d1 100644
--- a/crates/vhost/cargo_embargo.json
+++ b/crates/vhost/cargo_embargo.json
@@ -14,5 +14,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/virtio-bindings/.android-checksum.json b/crates/virtio-bindings/.android-checksum.json
index 7c2beb2..9d6a2a9 100644
--- a/crates/virtio-bindings/.android-checksum.json
+++ b/crates/virtio-bindings/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"486f7286d246c3ef5779ee8ba20fe4ba6d37786280dab57e2da502eb3aeefd44","Android.bp":"2cf86068412afd5b848ea752934aeca4799834294d9f78e54727e210345d0016","CHANGELOG.md":"91233705518eb20ef24a6b6cc559719c137a9225843d878dba86c152523ce063","CONTRIBUTING.md":"c078d93085cd6dfe674a7e0f42d304ef556429c788b42b9f1e8d46471f0b803a","Cargo.toml":"f92ce779a814b9814467356107808afd7e41545ca7fa97fcc05c716f304e3184","LICENSE":"548a1b19879214e859129329d9c95b413b1a9233e92b0ac1c1a11ab9cf70607f","METADATA":"8dde503b85d2f1fe0426a2ed2a86544ba01a7b294ce3f5f5a0339094f2b4ec3d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5778f4ef289ec381114c817f8577a9b2de3e8ef61a2981ff33675788726f6b","cargo2android_module.bp.fragment":"92cb8791973ff6bc1f3f52b80b7de0034295ea1ac7a0115792bd64626f6c09e8","cargo_embargo.json":"0c2a713006b66323f153433a9f5377f8e707468f214ff7af9d1c2755c4a0a5c5","patches/LICENSE.patch":"6888411d1930b1c4dcf538ab85e5d41ad3fc67bddbaeadca5950dc37e6c14803","src/lib.rs":"aa7f1b54d3306408a97acf0944171c502e3f6bd008e186a59f17e68003e0baf4","src/virtio_blk.rs":"de2ab9c1d46c02a2e8b9a97b0fad36fff04d91f0714c863bc651d82717984f32","src/virtio_config.rs":"270e763a9c5ff5f3eceaad18946707b1b2fe78a045b888905305ba8c839c7e7d","src/virtio_gpu.rs":"e85c0137129e374f738f6dca7a7fa5fa95f9e16c3e823cf027b877f05107dcf2","src/virtio_ids.rs":"973b37434fdd10b6649da25978534b69f4bca72f0448de286a3e8acbf3c3f90c","src/virtio_input.rs":"073a4523a6f8ae4e92f596a64488db4115b734b064b2eccc7fa20424522e9067","src/virtio_mmio.rs":"6c0563b64ca7d4bf4f43186ed799befd088d3ed656d763586a8a106ce595b834","src/virtio_net/generated.rs":"d3fceee8bf0d0fa5f3d194d2dd738463f517b5efbdd9f490b4ab7146c03baae0","src/virtio_net/mod.rs":"4d6049ddca714fea129bda4089587e18d2f273d5c6d87dd4131d5a1ec3931635","src/virtio_ring.rs":"e86dd98f416cfb2fdeb371814b87bb21466e93010a002df1d00caaf3b41c5583","src/virtio_scsi.rs":"bef5fc8c7acac781e557c9dceef3771db8a6840b9d7a8532fbcfb65241af4141"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"486f7286d246c3ef5779ee8ba20fe4ba6d37786280dab57e2da502eb3aeefd44","Android.bp":"2cf86068412afd5b848ea752934aeca4799834294d9f78e54727e210345d0016","CHANGELOG.md":"91233705518eb20ef24a6b6cc559719c137a9225843d878dba86c152523ce063","CONTRIBUTING.md":"c078d93085cd6dfe674a7e0f42d304ef556429c788b42b9f1e8d46471f0b803a","Cargo.toml":"f92ce779a814b9814467356107808afd7e41545ca7fa97fcc05c716f304e3184","LICENSE":"548a1b19879214e859129329d9c95b413b1a9233e92b0ac1c1a11ab9cf70607f","METADATA":"8dde503b85d2f1fe0426a2ed2a86544ba01a7b294ce3f5f5a0339094f2b4ec3d","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bc5778f4ef289ec381114c817f8577a9b2de3e8ef61a2981ff33675788726f6b","cargo2android_module.bp.fragment":"92cb8791973ff6bc1f3f52b80b7de0034295ea1ac7a0115792bd64626f6c09e8","cargo_embargo.json":"323a6f9ab96bb59fff6b9efa53872a65843968ec9e6678948074d743e2ed9fc5","patches/LICENSE.patch":"6888411d1930b1c4dcf538ab85e5d41ad3fc67bddbaeadca5950dc37e6c14803","src/lib.rs":"aa7f1b54d3306408a97acf0944171c502e3f6bd008e186a59f17e68003e0baf4","src/virtio_blk.rs":"de2ab9c1d46c02a2e8b9a97b0fad36fff04d91f0714c863bc651d82717984f32","src/virtio_config.rs":"270e763a9c5ff5f3eceaad18946707b1b2fe78a045b888905305ba8c839c7e7d","src/virtio_gpu.rs":"e85c0137129e374f738f6dca7a7fa5fa95f9e16c3e823cf027b877f05107dcf2","src/virtio_ids.rs":"973b37434fdd10b6649da25978534b69f4bca72f0448de286a3e8acbf3c3f90c","src/virtio_input.rs":"073a4523a6f8ae4e92f596a64488db4115b734b064b2eccc7fa20424522e9067","src/virtio_mmio.rs":"6c0563b64ca7d4bf4f43186ed799befd088d3ed656d763586a8a106ce595b834","src/virtio_net/generated.rs":"d3fceee8bf0d0fa5f3d194d2dd738463f517b5efbdd9f490b4ab7146c03baae0","src/virtio_net/mod.rs":"4d6049ddca714fea129bda4089587e18d2f273d5c6d87dd4131d5a1ec3931635","src/virtio_ring.rs":"e86dd98f416cfb2fdeb371814b87bb21466e93010a002df1d00caaf3b41c5583","src/virtio_scsi.rs":"bef5fc8c7acac781e557c9dceef3771db8a6840b9d7a8532fbcfb65241af4141"}}
\ No newline at end of file
diff --git a/crates/virtio-bindings/cargo_embargo.json b/crates/virtio-bindings/cargo_embargo.json
index 925b6e9..8c9836a 100644
--- a/crates/virtio-bindings/cargo_embargo.json
+++ b/crates/virtio-bindings/cargo_embargo.json
@@ -6,5 +6,6 @@
"add_module_block": "cargo2android_module.bp.fragment"
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/virtio-drivers-and-devices/.android-checksum.json b/crates/virtio-drivers-and-devices/.android-checksum.json
index 4dd9574..5b21d34 100644
--- a/crates/virtio-drivers-and-devices/.android-checksum.json
+++ b/crates/virtio-drivers-and-devices/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f65ad9971708b5e9fe23aca299d7b5264a310a467419ff0e7794427927cdce7e","Android.bp":"67c91d4de91355d1b6ceeb9fcd8fdcc07640121f85af1f1fef2992f4c4a9966f","Cargo.toml":"96372b8482a6d0ae6d48aa672a10c5595fe15bf72f4b4195b5c81a82c895ce99","LICENSE":"ac7199d689b436833681f33b881e0b619be2053c06b122327caabb5a6bdb59f1","METADATA":"a956406ea68c03b46197e8f01aed29fd9da01937f1023d742d4bdbc40ce3b57e","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"219043a36ccfc84d1534a533c60b6a51ab3133a0a545ad910a7b264ffd715a04","cargo_embargo.json":"7b71cc90988f45f9b7d5c3796f6e14007422aa187fefaab637b1e48791e4dc06","patches/rules.mk.diff":"afdb592f46d323d0e04ec3c033fb272fe7f79c28c5ad544f462bdac4c01f661b","rules.mk":"eb16608f20e25294ea89d77e48acea58de2796369e49b8a33ce0cdeffcbdaec0","rust-toolchain.toml":"e29f2ad5748c6738b191d46ca6a4204014c51626eca5c106ab575225d8c915db","src/config.rs":"d3d20c66c228e04dae12242a6b28e04c7e5062a06c0ebd21ce34197c379d7ad6","src/device/blk.rs":"30754d708b893899c7b3ab3eaabb67f83d7884194c5fb0b435779aa1db99c613","src/device/common.rs":"090d853e88b893aebe01606fafcd9cab96d4601f3b7ce3cb6721975801616e0d","src/device/console.rs":"93fbca8aba93d1bd6796df431904d12145104dd7c7c55ab2804a4a2faa07b63f","src/device/console/embedded_io.rs":"5413e487a506ed2699c20e9dd1eaf0014128649f4e342bfb3de6f8f6d440ba6a","src/device/gpu.rs":"103d987c4d61ef92d551dd30ed66f749399722efade48c4546f780ac84517c7f","src/device/input.rs":"935616b220dfd81d8a76d64e0603cf4b30af1f9803aa47f3dfd25605108d6d1e","src/device/mod.rs":"84c2e13a08d50b7ba647b256a747acbe9cc5da5a15781f94084bf3e5e4be5a34","src/device/net/dev.rs":"9279bf99a856e20a58869403b82e463a05ab4c1e41591f06da6f9f1b9e6c6b99","src/device/net/dev_raw.rs":"ccc32379b2419766859f7e294f94a1a62039488c0f9ac78e2e147c480cde598f","src/device/net/mod.rs":"1835cba939ebc327391edb52bc9a61960bb9657c520d81699b223ec90cd62ff1","src/device/net/net_buf.rs":"e8244dc0306578148c6e557405363b0004ae43587c07be2a16dbb2d4a8d8512e","src/device/socket/connectionmanager.rs":"6a8475466cc7c8da82a7c38c32cd9e5ad3215468e1befc7fbb5271156ca20997","src/device/socket/error.rs":"74d56c73ce369aeff74fb2f001833be4efc77f14b1640d46a3ad73bada860db3","src/device/socket/mod.rs":"46ba478462b1c003acf42d449763f0a7457d853ee282f9b9349a6749caa19d2b","src/device/socket/protocol.rs":"8e990eb25c1b5e667801e97380053290bf4e03c62417f83d22d43ae3b0d9c169","src/device/socket/vsock.rs":"a04fc932fd3d8581e4660211a2dc95f5bdf658942286a4d0a21fee87a5d5092e","src/device/sound.rs":"fe4a4d439741c1f3a0af49e4a80bcc28e1a2799c478338147cfcf4af1f4717fe","src/device/sound/fake.rs":"c29ed8453863f6abe9dca76615da835b642497679d12b6a32ce601346e23b39c","src/embedded_io.rs":"fcf955e398d05037e37473a2efce9bc29198263962597193ff49e3c8588f4eac","src/hal.rs":"f2d413f8924bfe50dbd2705f3febffd111a1ae17f160cdb5d9f12159ca3dc803","src/hal/fake.rs":"060d24879ca1a381597cadeb22de59b7d9940c3cca01b6f729729359bbbba071","src/lib.rs":"d8d4e0605da550c8646b7b5c68be8444e41bd488fc8016af34546674a02a6e90","src/queue.rs":"29fc69f616a7fa4785f5b3d53a05f8ee451db1d45fb8fd6f1ee797d18353a0f7","src/queue/owning.rs":"91d6e94764f5919d3e75fc52dd38e88f727452aa9141d2cdaba4b1ee2936cd6a","src/transport/fake.rs":"5e50cc3b5b07c77332542adade2cfd44bd9c205fd06824a6549cf197f187f813","src/transport/mmio.rs":"d6e7dd13ff496d2844b01878f1f189ff7c33df714b23a621b68aee4f0f111b01","src/transport/mod.rs":"f321a2aede13defe52550742e380f98e3e4fe449dfce1e9f2918f9a610c46232","src/transport/pci.rs":"2fc9f2449b7a231214a96223e32874ea41edee8dd08666a98a71d1f29cfed7a2","src/transport/pci/bus.rs":"7cd31b57ab6d95e2a9b66b7fe4c0076fd3279d4efae5cfb152059ed5c5e0f4f9","src/transport/some.rs":"3a528e0d22069583940cd568ea1575cf3a2f5e1d71a5e3a4a5675089bc7c6347","src/transport/x86_64.rs":"2f7f814dea5726ac8092d9b187ef9b84852aa2036a42ff921942fa947124ce0d","src/transport/x86_64/cam.rs":"ad9945e9963383fe64f19af4828b345adaf779e74eff9d5db5a92a98599d0990","src/transport/x86_64/hypercalls.rs":"ecd307178a0d4f6385f279139cfbefed73acd8a1052510ba5f68d1c588bab1c0","src/volatile.rs":"be8d90f7f5339d0276466c026ea78093aa15d96e94226250ac13e21a5f5ba200"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"4a9d56d931bb647c0014d97c7f0ac04b0dfc30e7ad9908036600c1fa250f666b","Android.bp":"67c91d4de91355d1b6ceeb9fcd8fdcc07640121f85af1f1fef2992f4c4a9966f","Cargo.toml":"2f405ccfacf93644caa4694e4f55f14524189cf7df1f5e266e561d8f5277eb65","LICENSE":"ac7199d689b436833681f33b881e0b619be2053c06b122327caabb5a6bdb59f1","METADATA":"045f4f436850fe9c98e654209e93f5dc46e53587612ae6d61ed04b74dc2eb93b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"219043a36ccfc84d1534a533c60b6a51ab3133a0a545ad910a7b264ffd715a04","cargo_embargo.json":"463a95ea648f1e58bbfa6d48c645dc567554e838bf44fc97141f184812fbc54e","patches/rules.mk.diff":"afdb592f46d323d0e04ec3c033fb272fe7f79c28c5ad544f462bdac4c01f661b","rules.mk":"eb16608f20e25294ea89d77e48acea58de2796369e49b8a33ce0cdeffcbdaec0","rust-toolchain.toml":"e29f2ad5748c6738b191d46ca6a4204014c51626eca5c106ab575225d8c915db","src/config.rs":"d3d20c66c228e04dae12242a6b28e04c7e5062a06c0ebd21ce34197c379d7ad6","src/device/blk.rs":"c43c71740f9fde0836be6c40fac37beb060865fa4b495782be9f588b5fb8fc1f","src/device/common.rs":"090d853e88b893aebe01606fafcd9cab96d4601f3b7ce3cb6721975801616e0d","src/device/console.rs":"97756229ef87c607bda05c837ffbfb4e79e60110f16bcb4c35a0eb0af9ac3b9f","src/device/console/embedded_io.rs":"5413e487a506ed2699c20e9dd1eaf0014128649f4e342bfb3de6f8f6d440ba6a","src/device/gpu.rs":"8273d450181c61e6941bc478d374393d4d1ecdbb112363f4b4de6a2afdcb2aa8","src/device/input.rs":"935616b220dfd81d8a76d64e0603cf4b30af1f9803aa47f3dfd25605108d6d1e","src/device/mod.rs":"84c2e13a08d50b7ba647b256a747acbe9cc5da5a15781f94084bf3e5e4be5a34","src/device/net/dev.rs":"9279bf99a856e20a58869403b82e463a05ab4c1e41591f06da6f9f1b9e6c6b99","src/device/net/dev_raw.rs":"ccc32379b2419766859f7e294f94a1a62039488c0f9ac78e2e147c480cde598f","src/device/net/mod.rs":"1835cba939ebc327391edb52bc9a61960bb9657c520d81699b223ec90cd62ff1","src/device/net/net_buf.rs":"e8244dc0306578148c6e557405363b0004ae43587c07be2a16dbb2d4a8d8512e","src/device/socket/connectionmanager.rs":"6f45962c1ac360b84dde5030f232109527cab734157bd11bd305f53539e1a1bf","src/device/socket/error.rs":"74d56c73ce369aeff74fb2f001833be4efc77f14b1640d46a3ad73bada860db3","src/device/socket/mod.rs":"c9b28c32ba41618415114f2480999650165e657ec7447f7cd9eedb8c36b37fe0","src/device/socket/protocol.rs":"8e990eb25c1b5e667801e97380053290bf4e03c62417f83d22d43ae3b0d9c169","src/device/socket/vsock.rs":"eda46d6e3de3214c141ebce3faeeece97c71fbe083dcaa8a23081515ca75b143","src/device/sound.rs":"fe4a4d439741c1f3a0af49e4a80bcc28e1a2799c478338147cfcf4af1f4717fe","src/device/sound/fake.rs":"c29ed8453863f6abe9dca76615da835b642497679d12b6a32ce601346e23b39c","src/embedded_io.rs":"fcf955e398d05037e37473a2efce9bc29198263962597193ff49e3c8588f4eac","src/hal.rs":"34909e1c5cd9fb5cfd2ea6871868608a0e6542cabc26f5bfab6161ee0351c3ac","src/hal/fake.rs":"060d24879ca1a381597cadeb22de59b7d9940c3cca01b6f729729359bbbba071","src/lib.rs":"d45128ded2eba2ef0a5eff64b19e93ff00ab168a749585dcf900177eed633bda","src/queue.rs":"5d8952719f3e19590b26c58860062464e48cb871eaf15df2b0910eb968751bae","src/queue/owning.rs":"91d6e94764f5919d3e75fc52dd38e88f727452aa9141d2cdaba4b1ee2936cd6a","src/transport/fake.rs":"5e50cc3b5b07c77332542adade2cfd44bd9c205fd06824a6549cf197f187f813","src/transport/mmio.rs":"d6e7dd13ff496d2844b01878f1f189ff7c33df714b23a621b68aee4f0f111b01","src/transport/mod.rs":"6b499861c60ce405fe1135e9068b6a0b3323153ab8d2d6b1fa2bf59943e4caa8","src/transport/pci.rs":"2fc9f2449b7a231214a96223e32874ea41edee8dd08666a98a71d1f29cfed7a2","src/transport/pci/bus.rs":"7cd31b57ab6d95e2a9b66b7fe4c0076fd3279d4efae5cfb152059ed5c5e0f4f9","src/transport/some.rs":"3a528e0d22069583940cd568ea1575cf3a2f5e1d71a5e3a4a5675089bc7c6347","src/transport/x86_64.rs":"2f7f814dea5726ac8092d9b187ef9b84852aa2036a42ff921942fa947124ce0d","src/transport/x86_64/cam.rs":"ad9945e9963383fe64f19af4828b345adaf779e74eff9d5db5a92a98599d0990","src/transport/x86_64/hypercalls.rs":"ecd307178a0d4f6385f279139cfbefed73acd8a1052510ba5f68d1c588bab1c0","src/volatile.rs":"55e67a2b1ee94f900402eb1a413ed4dc8ba1747675375fb1ec655b28b8b7963b"}}
\ No newline at end of file
diff --git a/crates/virtio-drivers-and-devices/.cargo-checksum.json b/crates/virtio-drivers-and-devices/.cargo-checksum.json
index b0b6c06..7d52b65 100644
--- a/crates/virtio-drivers-and-devices/.cargo-checksum.json
+++ b/crates/virtio-drivers-and-devices/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"080fd9ce4d835684e3cb84b3730beec4d7772b44048ddcddb741550301ca9ab5","LICENSE":"bf2a1b2f68528d6cb47939394b181236858d3e9c6c5e43b3af0650976567f152","README.md":"a9fb3f382f4799dafe3893aa3d50c55db9a73f212b782a7f1d9e05ad6b56ddc2","rust-toolchain.toml":"3e18e70208ee460635e239a91c142cf67371feafb718b05617ff06f388bf96df","src/config.rs":"7ecf338624732427964901c0a99e5e799ed28b50ee57bcd9bea8cfc467840e1b","src/device/blk.rs":"8af2cc29f1b1c94e6a5dd3eafbe005f9a1af87995ec12534ad701020be922d8e","src/device/common.rs":"24277c9fba38a2c87fa6f12863e6e003d911cc2fedad2b6a053d869e26be0813","src/device/console.rs":"4bcb383910157e95e8779354482e504ee2676c6b7f1f382216914f39c402a46c","src/device/console/embedded_io.rs":"a6dc2d2b65e157e93f2821c544c4127c1cf8743066e292607995845ed68c1315","src/device/gpu.rs":"42bfc652b90e37c3c27fafc5b6f5274e3c59533c1e14082095e6367971e1327f","src/device/input.rs":"5eb0265a91912efddbd0ac993b44d40bbf707e303cf79e9891e9c62d2c53c4b8","src/device/mod.rs":"225fd5d8c894df988d90e30df91477eeff60fefe9c8f5a789a0ae6c10ff1ea8d","src/device/net/dev.rs":"1cd4d08e64fb112d2e24c9a6985d1914f9848ba61984c8fe6d9b4c1798554749","src/device/net/dev_raw.rs":"08a1aa40254ef7c63bbe7812ee9d6673263f2f04798e19fb95cc135c1d321d5c","src/device/net/mod.rs":"cea6029659ed436f03d9b83d4eb36843b4c5c15de93c80b534fda041d223ce95","src/device/net/net_buf.rs":"1885931a2c1d5d35eb22036268e4f0c1105d60d90be391a438013dddd28bc27e","src/device/socket/connectionmanager.rs":"54a963b2645a71977aeb381682493a300c9b70a25f67b637d3dbfb99019a1246","src/device/socket/error.rs":"49b7edd279587b2460487d74cdfbdb35e6167ed5771bdfd252cc4bcda4416bca","src/device/socket/mod.rs":"891945d2e88002653a9588bcf0586d6c62792af8fc133c5d1d11262abffb47c1","src/device/socket/protocol.rs":"1f25ea5f3b786fddaa39f0a851ffae2b0f38da0edb4329f7bcd08c52a162f469","src/device/socket/vsock.rs":"4673e0155921c7bb5e185994c3271bf5ba7a35f362ae7c4acf1383aaa3882685","src/device/sound.rs":"8c1ec761503b498b39c9f584969c7abff0cd3d38f97aa3aa87e71f7f1edb3073","src/device/sound/fake.rs":"23078ffb3557067f39e5ad43134fb6fe2c7dea718f7ba86e18d986dd060311c1","src/embedded_io.rs":"409dc7953ba2dc8f99e19ec3ff859b7e7ca6475ba62eb22dbc1c4a7bfd09fabb","src/hal.rs":"f6defc683d81b15cfbb825372f67702565c4424c9988f9b1abb7854c5b31a10c","src/hal/fake.rs":"3ffb615f79e4a631e254c2c0cbd44df771acb4d2b4c4cbfd110cef9594a8ff8b","src/lib.rs":"49389c75172989100f44d12fbe61afad0f9588882f59a547c031fbba42d6642a","src/queue.rs":"04147914be69f6b5509677d1db24a9d155d9fae1e405ab79e1d2659a6e72364e","src/queue/owning.rs":"fffd8d620bee37446db616fe619b19c77c55c21ae66bcb93d800ca4fd34a70c3","src/transport/fake.rs":"53c4f890676ab5b4eb5f96005438abc7519ba36c67b125ac5a392bd6403b3ce6","src/transport/mmio.rs":"f3276d8a64e4291a6deb47ac29f2311f471901fc0dae38b47c20a18e8812ad70","src/transport/mod.rs":"62170489de007b8f9f3dbbb120302dce66e7e2733dbff1d713621a658b3c39a2","src/transport/pci.rs":"19c0d997a2f960ff5e55678187a6a0c359407fc88877f05de9bff74947b5b11b","src/transport/pci/bus.rs":"68c6a6761288bdbbc9d475ff4098e4e600975e2761ef2b4f63e9e4f6f340a44d","src/transport/some.rs":"18cf079e2da3368a2eb16cb45bf3330f6c61f139b8c796ad642f554a44224675","src/transport/x86_64.rs":"f2252446f6d06a0530b876277f878d4598857331c9a2da752326078292819fe3","src/transport/x86_64/cam.rs":"001a4eb9c434582377a212de1aaa2bccd5b5d5eeb968099fa43b040070f2dfbb","src/transport/x86_64/hypercalls.rs":"83d9c47348fcf920afe48f8e4168e46bc6b2ae3f7130d374aa449bcc332439a7","src/volatile.rs":"ca7005e30d1585ef91d750e354dfe6fb0ea1a427c3ffeb3ea2cfcd73c2611595"},"package":"087f2286ad55b6c36ec93267bcd1cbb740d7f9784879a001f76eea329d488273"}
\ No newline at end of file
+{"files":{"Cargo.toml":"8b140197204b7f3590b5df587efe54fffb449a223500b028b858706cf2d32d45","LICENSE":"bf2a1b2f68528d6cb47939394b181236858d3e9c6c5e43b3af0650976567f152","README.md":"a9fb3f382f4799dafe3893aa3d50c55db9a73f212b782a7f1d9e05ad6b56ddc2","rust-toolchain.toml":"3e18e70208ee460635e239a91c142cf67371feafb718b05617ff06f388bf96df","src/config.rs":"7ecf338624732427964901c0a99e5e799ed28b50ee57bcd9bea8cfc467840e1b","src/device/blk.rs":"83255da3753e02f7abce1d3c8a504756031ca66b4500b5d9b8141598bfaa927b","src/device/common.rs":"24277c9fba38a2c87fa6f12863e6e003d911cc2fedad2b6a053d869e26be0813","src/device/console.rs":"c0fa8f976819f769538c7d004e1414eb088b1d03b1dcb9ddeded3168e63ee97d","src/device/console/embedded_io.rs":"a6dc2d2b65e157e93f2821c544c4127c1cf8743066e292607995845ed68c1315","src/device/gpu.rs":"3b4ed0d0c6b7976e67ee2b4f8623ebf1c3d3d0c9cdd7d43808656171453b8c5d","src/device/input.rs":"5eb0265a91912efddbd0ac993b44d40bbf707e303cf79e9891e9c62d2c53c4b8","src/device/mod.rs":"225fd5d8c894df988d90e30df91477eeff60fefe9c8f5a789a0ae6c10ff1ea8d","src/device/net/dev.rs":"1cd4d08e64fb112d2e24c9a6985d1914f9848ba61984c8fe6d9b4c1798554749","src/device/net/dev_raw.rs":"08a1aa40254ef7c63bbe7812ee9d6673263f2f04798e19fb95cc135c1d321d5c","src/device/net/mod.rs":"cea6029659ed436f03d9b83d4eb36843b4c5c15de93c80b534fda041d223ce95","src/device/net/net_buf.rs":"1885931a2c1d5d35eb22036268e4f0c1105d60d90be391a438013dddd28bc27e","src/device/socket/connectionmanager.rs":"c0f67ee7bc7ef2ede4fb642c63a46d7e751e58609645ec1aabfdee2bed551fad","src/device/socket/error.rs":"49b7edd279587b2460487d74cdfbdb35e6167ed5771bdfd252cc4bcda4416bca","src/device/socket/mod.rs":"cdd335c585279d6e7c3ecd2dcf97c7273bab331c89d262af721fb3daea79b4fa","src/device/socket/protocol.rs":"1f25ea5f3b786fddaa39f0a851ffae2b0f38da0edb4329f7bcd08c52a162f469","src/device/socket/vsock.rs":"f17e3b128e52b7375d391f9a120edfcd9fb975c5dd725f1fe0f58e9f5f005cc2","src/device/sound.rs":"8c1ec761503b498b39c9f584969c7abff0cd3d38f97aa3aa87e71f7f1edb3073","src/device/sound/fake.rs":"23078ffb3557067f39e5ad43134fb6fe2c7dea718f7ba86e18d986dd060311c1","src/embedded_io.rs":"409dc7953ba2dc8f99e19ec3ff859b7e7ca6475ba62eb22dbc1c4a7bfd09fabb","src/hal.rs":"bb03f8ac8012f07bff7ea07e5563fd2dea954193240c5e01a5908bb9f842644d","src/hal/fake.rs":"3ffb615f79e4a631e254c2c0cbd44df771acb4d2b4c4cbfd110cef9594a8ff8b","src/lib.rs":"674ef7233219864c67fa5e9c64746a0521142f990ca73dcb7bf7fda8b0d905ce","src/queue.rs":"dce3c291798dedb68032d8cb4d3283bb2bd86f1bbf2bfc77e38c0bdd125b0dc8","src/queue/owning.rs":"fffd8d620bee37446db616fe619b19c77c55c21ae66bcb93d800ca4fd34a70c3","src/transport/fake.rs":"53c4f890676ab5b4eb5f96005438abc7519ba36c67b125ac5a392bd6403b3ce6","src/transport/mmio.rs":"f3276d8a64e4291a6deb47ac29f2311f471901fc0dae38b47c20a18e8812ad70","src/transport/mod.rs":"f5d851a774cac16613895d469f7e742b259872cc117f580d399914a56052027e","src/transport/pci.rs":"19c0d997a2f960ff5e55678187a6a0c359407fc88877f05de9bff74947b5b11b","src/transport/pci/bus.rs":"68c6a6761288bdbbc9d475ff4098e4e600975e2761ef2b4f63e9e4f6f340a44d","src/transport/some.rs":"18cf079e2da3368a2eb16cb45bf3330f6c61f139b8c796ad642f554a44224675","src/transport/x86_64.rs":"f2252446f6d06a0530b876277f878d4598857331c9a2da752326078292819fe3","src/transport/x86_64/cam.rs":"001a4eb9c434582377a212de1aaa2bccd5b5d5eeb968099fa43b040070f2dfbb","src/transport/x86_64/hypercalls.rs":"83d9c47348fcf920afe48f8e4168e46bc6b2ae3f7130d374aa449bcc332439a7","src/volatile.rs":"4585123a86cb8a92d422a6e5f55b37b9e3eac75d07908b70321d63a73601a0d0"},"package":"603664485269cf027cbbf54a2987426e6333d8fda4d0da65def6de0bc8868f51"}
\ No newline at end of file
diff --git a/crates/virtio-drivers-and-devices/Cargo.toml b/crates/virtio-drivers-and-devices/Cargo.toml
index fb677af..55a5258 100644
--- a/crates/virtio-drivers-and-devices/Cargo.toml
+++ b/crates/virtio-drivers-and-devices/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "virtio-drivers-and-devices"
-version = "0.1.0"
+version = "0.2.0"
authors = [
"Jiajie Chen <[email protected]>",
"Runji Wang <[email protected]>",
@@ -36,6 +36,14 @@
license = "MIT"
repository = "https://github.com/immunant/virtio-drivers-and-devices"
+[features]
+alloc = ["zerocopy/alloc"]
+default = [
+ "alloc",
+ "embedded-io",
+]
+embedded-io = ["dep:embedded-io"]
+
[lib]
name = "virtio_drivers_and_devices"
path = "src/lib.rs"
@@ -64,11 +72,3 @@
[dev-dependencies.zerocopy]
version = "0.8.14"
features = ["alloc"]
-
-[features]
-alloc = ["zerocopy/alloc"]
-default = [
- "alloc",
- "embedded-io",
-]
-embedded-io = ["dep:embedded-io"]
diff --git a/crates/virtio-drivers-and-devices/METADATA b/crates/virtio-drivers-and-devices/METADATA
index c39081e..853bd6f 100644
--- a/crates/virtio-drivers-and-devices/METADATA
+++ b/crates/virtio-drivers-and-devices/METADATA
@@ -1,17 +1,17 @@
name: "virtio-drivers-and-devices"
description: "VirtIO guest drivers and devices. Fork of rcore-os/virtio-drivers."
third_party {
- version: "0.1.0"
+ version: "0.2.0"
license_type: NOTICE
last_upgrade_date {
year: 2025
- month: 2
- day: 28
+ month: 3
+ day: 19
}
homepage: "https://crates.io/crates/virtio-drivers-and-devices"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/virtio-drivers-and-devices/virtio-drivers-and-devices-0.1.0.crate"
- version: "0.1.0"
+ value: "https://static.crates.io/crates/virtio-drivers-and-devices/virtio-drivers-and-devices-0.2.0.crate"
+ version: "0.2.0"
}
}
diff --git a/crates/virtio-drivers-and-devices/cargo_embargo.json b/crates/virtio-drivers-and-devices/cargo_embargo.json
index 94ff6a3..bbe8063 100644
--- a/crates/virtio-drivers-and-devices/cargo_embargo.json
+++ b/crates/virtio-drivers-and-devices/cargo_embargo.json
@@ -15,5 +15,6 @@
"tests": false,
"vendor_available": false,
"generate_androidbp": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/virtio-drivers-and-devices/src/device/blk.rs b/crates/virtio-drivers-and-devices/src/device/blk.rs
index dc4a6c5..143e9f1 100644
--- a/crates/virtio-drivers-and-devices/src/device/blk.rs
+++ b/crates/virtio-drivers-and-devices/src/device/blk.rs
@@ -26,9 +26,9 @@
/// # Example
///
/// ```
-/// # use virtio_drivers::{Error, Hal};
-/// # use virtio_drivers::transport::Transport;
-/// use virtio_drivers::device::blk::{VirtIOBlk, SECTOR_SIZE};
+/// # use virtio_drivers_and_devices::{Error, Hal};
+/// # use virtio_drivers_and_devices::transport::Transport;
+/// use virtio_drivers_and_devices::device::blk::{VirtIOBlk, SECTOR_SIZE};
///
/// # fn example<HalImpl: Hal, T: Transport>(transport: T) -> Result<(), Error> {
/// let mut disk = VirtIOBlk::<HalImpl, _>::new(transport)?;
@@ -212,10 +212,10 @@
/// the same buffers before reading the response.
///
/// ```
- /// # use virtio_drivers::{Error, Hal};
- /// # use virtio_drivers::device::blk::VirtIOBlk;
- /// # use virtio_drivers::transport::Transport;
- /// use virtio_drivers::device::blk::{BlkReq, BlkResp, RespStatus};
+ /// # use virtio_drivers_and_devices::{Error, Hal};
+ /// # use virtio_drivers_and_devices::device::blk::VirtIOBlk;
+ /// # use virtio_drivers_and_devices::transport::Transport;
+ /// use virtio_drivers_and_devices::device::blk::{BlkReq, BlkResp, RespStatus};
///
/// # fn example<H: Hal, T: Transport>(blk: &mut VirtIOBlk<H, T>) -> Result<(), Error> {
/// let mut request = BlkReq::default();
diff --git a/crates/virtio-drivers-and-devices/src/device/console.rs b/crates/virtio-drivers-and-devices/src/device/console.rs
index c8c49d1..f02ae55 100644
--- a/crates/virtio-drivers-and-devices/src/device/console.rs
+++ b/crates/virtio-drivers-and-devices/src/device/console.rs
@@ -29,8 +29,8 @@
/// # Example
///
/// ```
-/// # use virtio_drivers::{Error, Hal, transport::Transport};
-/// use virtio_drivers::device::console::VirtIOConsole;
+/// # use virtio_drivers_and_devices::{Error, Hal, transport::Transport};
+/// use virtio_drivers_and_devices::device::console::VirtIOConsole;
/// # fn example<HalImpl: Hal, T: Transport>(transport: T) -> Result<(), Error> {
/// let mut console = VirtIOConsole::<HalImpl, _>::new(transport)?;
///
diff --git a/crates/virtio-drivers-and-devices/src/device/gpu.rs b/crates/virtio-drivers-and-devices/src/device/gpu.rs
index 75a5fef..22af9a8 100644
--- a/crates/virtio-drivers-and-devices/src/device/gpu.rs
+++ b/crates/virtio-drivers-and-devices/src/device/gpu.rs
@@ -1,7 +1,7 @@
//! Driver for VirtIO GPU devices.
use crate::config::{read_config, ReadOnly, WriteOnly};
-use crate::hal::{BufferDirection, Dma, Hal};
+use crate::hal::{BufferDirection, Dma, DmaMemory, Hal};
use crate::queue::VirtQueue;
use crate::transport::Transport;
use crate::{pages, Error, Result, PAGE_SIZE};
diff --git a/crates/virtio-drivers-and-devices/src/device/socket/connectionmanager.rs b/crates/virtio-drivers-and-devices/src/device/socket/connectionmanager.rs
index 8e823eb..5df3ec6 100644
--- a/crates/virtio-drivers-and-devices/src/device/socket/connectionmanager.rs
+++ b/crates/virtio-drivers-and-devices/src/device/socket/connectionmanager.rs
@@ -1,8 +1,11 @@
use super::{
protocol::VsockAddr, vsock::ConnectionInfo, DisconnectReason, SocketError, VirtIOSocket,
- VsockEvent, VsockEventType, DEFAULT_RX_BUFFER_SIZE,
+ VirtIOSocketDevice, VirtIOSocketManager, VsockEvent, VsockEventType, DEFAULT_RX_BUFFER_SIZE,
};
-use crate::{transport::Transport, Hal, Result};
+use crate::{
+ transport::{DeviceTransport, Transport},
+ DeviceHal, Hal, Result,
+};
use alloc::{boxed::Box, vec::Vec};
use core::cmp::min;
use core::convert::TryInto;
@@ -12,7 +15,7 @@
const DEFAULT_PER_CONNECTION_BUFFER_CAPACITY: u32 = 1024;
-/// A higher level interface for VirtIO socket (vsock) devices.
+/// A higher level interface for VirtIO socket (vsock) drivers.
///
/// This keeps track of multiple vsock connections.
///
@@ -22,9 +25,9 @@
/// # Example
///
/// ```
-/// # use virtio_drivers::{Error, Hal};
-/// # use virtio_drivers::transport::Transport;
-/// use virtio_drivers::device::socket::{VirtIOSocket, VsockAddr, VsockConnectionManager};
+/// # use virtio_drivers_and_devices::{Error, Hal};
+/// # use virtio_drivers_and_devices::transport::Transport;
+/// use virtio_drivers_and_devices::device::socket::{VirtIOSocket, VsockAddr, VsockConnectionManager};
///
/// # fn example<HalImpl: Hal, T: Transport>(transport: T) -> Result<(), Error> {
/// let mut socket = VsockConnectionManager::new(VirtIOSocket::<HalImpl, _>::new(transport)?);
@@ -47,8 +50,55 @@
H: Hal,
T: Transport,
const RX_BUFFER_SIZE: usize = DEFAULT_RX_BUFFER_SIZE,
-> {
- driver: VirtIOSocket<H, T, RX_BUFFER_SIZE>,
+>(VsockConnectionManagerCommon<VirtIOSocket<H, T, RX_BUFFER_SIZE>>);
+
+/// A high level interface for VirtIO socket (vsock) devices.
+pub struct VsockDeviceConnectionManager<H: DeviceHal, T: DeviceTransport>(
+ VsockConnectionManagerCommon<VirtIOSocketDevice<H, T>>,
+);
+
+/// A trait defining shared behavior for VirtIO socket devices and drivers.
+///
+/// All methods are implemented for VsockConnectionManager and VsockDeviceConnectionManager though
+/// the device side must not call the connect method. These are equivalent to the inherent methods
+/// which are kept for backwards compatibility.
+pub trait VsockManager {
+ /// Sends a request to connect to the given destination on the driver side.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Connected` event indicating that the peer has accepted the connection
+ /// before sending data. This panics if called from the device side.
+ fn connect(&mut self, destination: VsockAddr, src_port: u32) -> Result;
+
+ /// Sends the buffer to the destination.
+ fn send(&mut self, dest: VsockAddr, src_port: u32, buffer: &[u8]) -> Result;
+
+ /// Sends a credit update to the given peer.
+ fn update_credit(&mut self, peer: VsockAddr, src_port: u32) -> Result;
+
+ /// Forcibly closes the connection without waiting for the peer.
+ fn force_close(&mut self, dest: VsockAddr, src_port: u32) -> Result;
+
+ /// Allows incoming connections on the given port number.
+ fn listen(&mut self, port: u32);
+
+ /// Polls the vsock device to receive data or other updates.
+ fn poll(&mut self) -> Result<Option<VsockEvent>>;
+
+ /// Requests to shut down the connection cleanly, telling the peer that we won't send or receive
+ /// any more data.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
+ /// shutdown.
+ fn shutdown(&mut self, dest: VsockAddr, src_port: u32) -> Result;
+
+ /// Reads data received from the given connection.
+ fn recv(&mut self, peer: VsockAddr, src_port: u32, buffer: &mut [u8]) -> Result<usize>;
+}
+
+struct VsockConnectionManagerCommon<M: VirtIOSocketManager> {
+ driver: M,
per_connection_buffer_capacity: u32,
connections: Vec<Connection>,
listening_ports: Vec<u32>,
@@ -89,19 +139,234 @@
driver: VirtIOSocket<H, T, RX_BUFFER_SIZE>,
per_connection_buffer_capacity: u32,
) -> Self {
- Self {
+ Self(VsockConnectionManagerCommon {
driver,
connections: Vec::new(),
listening_ports: Vec::new(),
per_connection_buffer_capacity,
- }
+ })
}
/// Returns the CID which has been assigned to this guest.
pub fn guest_cid(&self) -> u64 {
- self.driver.guest_cid()
+ self.0.driver.guest_cid()
}
+ /// Sends a request to connect to the given destination.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Connected` event indicating that the peer has accepted the connection
+ /// before sending data.
+ pub fn connect(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ if self.0.connections.iter().any(|connection| {
+ connection.info.dst == destination && connection.info.src_port == src_port
+ }) {
+ return Err(SocketError::ConnectionExists.into());
+ }
+
+ let new_connection =
+ Connection::new(destination, src_port, self.0.per_connection_buffer_capacity);
+
+ self.0.driver.connect(&new_connection.info)?;
+ debug!("Connection requested: {:?}", new_connection.info);
+ self.0.connections.push(new_connection);
+ Ok(())
+ }
+ /// Allows incoming connections on the given port number.
+ pub fn listen(&mut self, port: u32) {
+ self.0.listen(port)
+ }
+
+ /// Stops allowing incoming connections on the given port number.
+ pub fn unlisten(&mut self, port: u32) {
+ self.0.unlisten(port)
+ }
+
+ /// Sends the buffer to the destination.
+ pub fn send(&mut self, destination: VsockAddr, src_port: u32, buffer: &[u8]) -> Result {
+ self.0.send(destination, src_port, buffer)
+ }
+
+ /// Polls the vsock device to receive data or other updates.
+ pub fn poll(&mut self) -> Result<Option<VsockEvent>> {
+ self.0.poll()
+ }
+
+ /// Reads data received from the given connection.
+ pub fn recv(&mut self, peer: VsockAddr, src_port: u32, buffer: &mut [u8]) -> Result<usize> {
+ self.0.recv(peer, src_port, buffer)
+ }
+
+ /// Returns the number of bytes in the receive buffer available to be read by `recv`.
+ ///
+ /// When the available bytes is 0, it indicates that the receive buffer is empty and does not
+ /// contain any data.
+ pub fn recv_buffer_available_bytes(&mut self, peer: VsockAddr, src_port: u32) -> Result<usize> {
+ self.0.recv_buffer_available_bytes(peer, src_port)
+ }
+
+ /// Sends a credit update to the given peer.
+ pub fn update_credit(&mut self, peer: VsockAddr, src_port: u32) -> Result {
+ self.0.update_credit(peer, src_port)
+ }
+
+ /// Blocks until we get some event from the vsock device.
+ pub fn wait_for_event(&mut self) -> Result<VsockEvent> {
+ self.0.wait_for_event()
+ }
+
+ /// Requests to shut down the connection cleanly, telling the peer that we won't send or receive
+ /// any more data.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
+ /// shutdown.
+ pub fn shutdown(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ self.0.shutdown(destination, src_port)
+ }
+
+ /// Forcibly closes the connection without waiting for the peer.
+ pub fn force_close(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ self.0.force_close(destination, src_port)
+ }
+}
+
+impl<H: DeviceHal, T: DeviceTransport> VsockDeviceConnectionManager<H, T> {
+ /// Construct a new connection manager wrapping the given low-level VirtIO socket driver.
+ pub fn new(driver: VirtIOSocketDevice<H, T>) -> Self {
+ Self::new_with_capacity(driver, DEFAULT_PER_CONNECTION_BUFFER_CAPACITY)
+ }
+
+ /// Construct a new connection manager wrapping the given low-level VirtIO socket driver, with
+ /// the given per-connection buffer capacity.
+ pub fn new_with_capacity(
+ driver: VirtIOSocketDevice<H, T>,
+ per_connection_buffer_capacity: u32,
+ ) -> Self {
+ Self(VsockConnectionManagerCommon {
+ driver,
+ connections: Vec::new(),
+ listening_ports: Vec::new(),
+ per_connection_buffer_capacity,
+ })
+ }
+
+ /// Allows incoming connections on the given port number.
+ pub fn listen(&mut self, port: u32) {
+ self.0.listen(port)
+ }
+
+ /// Stops allowing incoming connections on the given port number.
+ pub fn unlisten(&mut self, port: u32) {
+ self.0.unlisten(port)
+ }
+
+ /// Sends the buffer to the destination.
+ pub fn send(&mut self, destination: VsockAddr, src_port: u32, buffer: &[u8]) -> Result {
+ self.0.send(destination, src_port, buffer)
+ }
+
+ /// Polls the vsock device to receive data or other updates.
+ pub fn poll(&mut self) -> Result<Option<VsockEvent>> {
+ self.0.poll()
+ }
+
+ /// Reads data received from the given connection.
+ pub fn recv(&mut self, peer: VsockAddr, src_port: u32, buffer: &mut [u8]) -> Result<usize> {
+ self.0.recv(peer, src_port, buffer)
+ }
+
+ /// Returns the number of bytes in the receive buffer available to be read by `recv`.
+ ///
+ /// When the available bytes is 0, it indicates that the receive buffer is empty and does not
+ /// contain any data.
+ pub fn recv_buffer_available_bytes(&mut self, peer: VsockAddr, src_port: u32) -> Result<usize> {
+ self.0.recv_buffer_available_bytes(peer, src_port)
+ }
+
+ /// Sends a credit update to the given peer.
+ pub fn update_credit(&mut self, peer: VsockAddr, src_port: u32) -> Result {
+ self.0.update_credit(peer, src_port)
+ }
+
+ /// Blocks until we get some event from the vsock device.
+ pub fn wait_for_event(&mut self) -> Result<VsockEvent> {
+ self.0.wait_for_event()
+ }
+
+ /// Requests to shut down the connection cleanly, telling the peer that we won't send or receive
+ /// any more data.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
+ /// shutdown.
+ pub fn shutdown(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ self.0.shutdown(destination, src_port)
+ }
+
+ /// Forcibly closes the connection without waiting for the peer.
+ pub fn force_close(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ self.0.force_close(destination, src_port)
+ }
+}
+
+impl<H: Hal, T: Transport, const RX_BUFFER_SIZE: usize> VsockManager
+ for VsockConnectionManager<H, T, RX_BUFFER_SIZE>
+{
+ fn connect(&mut self, destination: VsockAddr, src_port: u32) -> Result {
+ Self::connect(self, destination, src_port)
+ }
+ fn send(&mut self, dest: VsockAddr, src_port: u32, buffer: &[u8]) -> Result {
+ Self::send(self, dest, src_port, buffer)
+ }
+ fn update_credit(&mut self, peer: VsockAddr, src_port: u32) -> Result {
+ Self::update_credit(self, peer, src_port)
+ }
+ fn force_close(&mut self, dest: VsockAddr, src_port: u32) -> Result {
+ Self::force_close(self, dest, src_port)
+ }
+ fn listen(&mut self, port: u32) {
+ Self::listen(self, port)
+ }
+ fn poll(&mut self) -> Result<Option<VsockEvent>> {
+ Self::poll(self)
+ }
+ fn shutdown(&mut self, dest: VsockAddr, src_port: u32) -> Result {
+ Self::shutdown(self, dest, src_port)
+ }
+ fn recv(&mut self, peer: VsockAddr, src_port: u32, buffer: &mut [u8]) -> Result<usize> {
+ Self::recv(self, peer, src_port, buffer)
+ }
+}
+
+impl<H: DeviceHal, T: DeviceTransport> VsockManager for VsockDeviceConnectionManager<H, T> {
+ fn connect(&mut self, _destination: VsockAddr, _src_port: u32) -> Result {
+ unreachable!("vsock devices should not make outgoing connections")
+ }
+ fn send(&mut self, dest: VsockAddr, src_port: u32, buffer: &[u8]) -> Result {
+ Self::send(self, dest, src_port, buffer)
+ }
+ fn update_credit(&mut self, peer: VsockAddr, src_port: u32) -> Result {
+ Self::update_credit(self, peer, src_port)
+ }
+ fn force_close(&mut self, dest: VsockAddr, src_port: u32) -> Result {
+ Self::force_close(self, dest, src_port)
+ }
+ fn listen(&mut self, port: u32) {
+ Self::listen(self, port)
+ }
+ fn poll(&mut self) -> Result<Option<VsockEvent>> {
+ Self::poll(self)
+ }
+ fn shutdown(&mut self, dest: VsockAddr, src_port: u32) -> Result {
+ Self::shutdown(self, dest, src_port)
+ }
+ fn recv(&mut self, peer: VsockAddr, src_port: u32, buffer: &mut [u8]) -> Result<usize> {
+ Self::recv(self, peer, src_port, buffer)
+ }
+}
+
+impl<M: VirtIOSocketManager> VsockConnectionManagerCommon<M> {
/// Allows incoming connections on the given port number.
pub fn listen(&mut self, port: u32) {
if !self.listening_ports.contains(&port) {
@@ -114,27 +379,6 @@
self.listening_ports.retain(|p| *p != port);
}
- /// Sends a request to connect to the given destination.
- ///
- /// This returns as soon as the request is sent; you should wait until `poll` returns a
- /// `VsockEventType::Connected` event indicating that the peer has accepted the connection
- /// before sending data.
- pub fn connect(&mut self, destination: VsockAddr, src_port: u32) -> Result {
- if self.connections.iter().any(|connection| {
- connection.info.dst == destination && connection.info.src_port == src_port
- }) {
- return Err(SocketError::ConnectionExists.into());
- }
-
- let new_connection =
- Connection::new(destination, src_port, self.per_connection_buffer_capacity);
-
- self.driver.connect(&new_connection.info)?;
- debug!("Connection requested: {:?}", new_connection.info);
- self.connections.push(new_connection);
- Ok(())
- }
-
/// Sends the buffer to the destination.
pub fn send(&mut self, destination: VsockAddr, src_port: u32, buffer: &[u8]) -> Result {
let (_, connection) = get_connection(&mut self.connections, destination, src_port)?;
@@ -144,12 +388,12 @@
/// Polls the vsock device to receive data or other updates.
pub fn poll(&mut self) -> Result<Option<VsockEvent>> {
- let guest_cid = self.driver.guest_cid();
+ let local_cid = self.driver.local_cid();
let connections = &mut self.connections;
let per_connection_buffer_capacity = self.per_connection_buffer_capacity;
let result = self.driver.poll(|event, body| {
- let connection = get_connection_for_event(connections, &event, guest_cid);
+ let connection = get_connection_for_event(connections, &event, local_cid);
// Skip events which don't match any connection we know about, unless they are a
// connection request.
@@ -157,7 +401,7 @@
connection
} else if let VsockEventType::ConnectionRequest = event.event_type {
// If the requested connection already exists or the CID isn't ours, ignore it.
- if connection.is_some() || event.destination.cid != guest_cid {
+ if connection.is_some() || event.destination.cid != local_cid {
return Ok(None);
}
// Add the new connection to our list, at least for now. It will be removed again
@@ -191,7 +435,7 @@
// The connection must exist because we found it above in the callback.
let (connection_index, connection) =
- get_connection_for_event(connections, &event, guest_cid).unwrap();
+ get_connection_for_event(connections, &event, local_cid).unwrap();
match event.event_type {
VsockEventType::ConnectionRequest => {
diff --git a/crates/virtio-drivers-and-devices/src/device/socket/mod.rs b/crates/virtio-drivers-and-devices/src/device/socket/mod.rs
index 607f739..c152dd0 100644
--- a/crates/virtio-drivers-and-devices/src/device/socket/mod.rs
+++ b/crates/virtio-drivers-and-devices/src/device/socket/mod.rs
@@ -15,11 +15,16 @@
mod vsock;
#[cfg(feature = "alloc")]
-pub use connectionmanager::VsockConnectionManager;
+pub use connectionmanager::{VsockConnectionManager, VsockDeviceConnectionManager, VsockManager};
pub use error::SocketError;
pub use protocol::{StreamShutdown, VsockAddr, VMADDR_CID_HOST};
#[cfg(feature = "alloc")]
-pub use vsock::{ConnectionInfo, DisconnectReason, VirtIOSocket, VsockEvent, VsockEventType};
+pub use vsock::{
+ ConnectionInfo, DisconnectReason, VirtIOSocket, VirtIOSocketDevice, VsockEvent, VsockEventType,
+};
+
+#[cfg(feature = "alloc")]
+pub(crate) use vsock::VirtIOSocketManager;
/// The size in bytes of each buffer used in the RX virtqueue. This must be bigger than
/// `size_of::<VirtioVsockHdr>()`.
diff --git a/crates/virtio-drivers-and-devices/src/device/socket/vsock.rs b/crates/virtio-drivers-and-devices/src/device/socket/vsock.rs
index 8a95ee4..1d4ea48 100644
--- a/crates/virtio-drivers-and-devices/src/device/socket/vsock.rs
+++ b/crates/virtio-drivers-and-devices/src/device/socket/vsock.rs
@@ -4,12 +4,13 @@
use super::error::SocketError;
use super::protocol::{
Feature, StreamShutdown, VirtioVsockConfig, VirtioVsockHdr, VirtioVsockOp, VsockAddr,
+ VMADDR_CID_HOST,
};
use super::DEFAULT_RX_BUFFER_SIZE;
use crate::config::read_config;
-use crate::hal::Hal;
-use crate::queue::{owning::OwningQueue, VirtQueue};
-use crate::transport::Transport;
+use crate::hal::{DeviceHal, Hal};
+use crate::queue::{owning::OwningQueue, DeviceVirtQueue, VirtQueue};
+use crate::transport::{DeviceTransport, Transport};
use crate::Result;
use core::mem::size_of;
use log::debug;
@@ -313,34 +314,182 @@
/// Accepts the given connection from a peer.
pub fn accept(&mut self, connection_info: &ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::accept(self, connection_info)
+ }
+
+ /// Requests the peer to send us a credit update for the given connection.
+ pub fn request_credit(&mut self, connection_info: &ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::request_credit(self, connection_info)
+ }
+
+ /// Sends the buffer to the destination.
+ pub fn send(&mut self, buffer: &[u8], connection_info: &mut ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::send(self, buffer, connection_info)
+ }
+
+ /// Tells the peer how much buffer space we have to receive data.
+ pub fn credit_update(&mut self, connection_info: &ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::credit_update(self, connection_info)
+ }
+
+ /// Polls the RX virtqueue for the next event, and calls the given handler function to handle
+ /// it.
+ pub fn poll(
+ &mut self,
+ handler: impl FnOnce(VsockEvent, &[u8]) -> Result<Option<VsockEvent>>,
+ ) -> Result<Option<VsockEvent>> {
+ <Self as VirtIOSocketManager>::poll(self, handler)
+ }
+
+ /// Requests to shut down the connection cleanly, sending hints about whether we will send or
+ /// receive more data.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
+ /// shutdown.
+ pub fn shutdown_with_hints(
+ &mut self,
+ connection_info: &ConnectionInfo,
+ hints: StreamShutdown,
+ ) -> Result {
+ <Self as VirtIOSocketManager>::shutdown_with_hints(self, connection_info, hints)
+ }
+
+ /// Requests to shut down the connection cleanly, telling the peer that we won't send or receive
+ /// any more data.
+ ///
+ /// This returns as soon as the request is sent; you should wait until `poll` returns a
+ /// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
+ /// shutdown.
+ pub fn shutdown(&mut self, connection_info: &ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::shutdown(self, connection_info)
+ }
+
+ /// Forcibly closes the connection without waiting for the peer.
+ pub fn force_close(&mut self, connection_info: &ConnectionInfo) -> Result {
+ <Self as VirtIOSocketManager>::force_close(self, connection_info)
+ }
+
+ fn send_packet_to_tx_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result {
+ let _len = if buffer.is_empty() {
+ self.tx
+ .add_notify_wait_pop(&[header.as_bytes()], &mut [], &mut self.transport)?
+ } else {
+ self.tx.add_notify_wait_pop(
+ &[header.as_bytes(), buffer],
+ &mut [],
+ &mut self.transport,
+ )?
+ };
+ Ok(())
+ }
+}
+
+impl<H: Hal, T: Transport, const RX_BUFFER_SIZE: usize> VirtIOSocketManager
+ for VirtIOSocket<H, T, RX_BUFFER_SIZE>
+{
+ fn local_cid(&self) -> u64 {
+ self.guest_cid()
+ }
+ fn send_packet_to_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result {
+ self.send_packet_to_tx_queue(header, buffer)
+ }
+ fn poll(
+ &mut self,
+ handler: impl FnOnce(VsockEvent, &[u8]) -> Result<Option<VsockEvent>>,
+ ) -> Result<Option<VsockEvent>> {
+ self.rx.poll(&mut self.transport, |buffer| {
+ let (header, body) = read_header_and_body(buffer)?;
+ VsockEvent::from_header(&header).and_then(|event| handler(event, body))
+ })
+ }
+}
+
+/// A low-level interface for a vsock device implementation
+pub struct VirtIOSocketDevice<H: DeviceHal, T: DeviceTransport> {
+ transport: T,
+ rx: DeviceVirtQueue<H, { QUEUE_SIZE }>,
+ tx: DeviceVirtQueue<H, { QUEUE_SIZE }>,
+ event: DeviceVirtQueue<H, { QUEUE_SIZE }>,
+}
+
+impl<H: DeviceHal, T: DeviceTransport> VirtIOSocketDevice<H, T> {
+ /// Create a new VirtIO Vsock device.
+ pub fn new(mut transport: T) -> Result<Self> {
+ let rx = DeviceVirtQueue::new(&mut transport, RX_QUEUE_IDX)?;
+ let tx = DeviceVirtQueue::new(&mut transport, TX_QUEUE_IDX)?;
+ let event = DeviceVirtQueue::new(&mut transport, EVENT_QUEUE_IDX)?;
+ Ok(Self {
+ transport,
+ rx,
+ tx,
+ event,
+ })
+ }
+}
+
+impl<H: DeviceHal, T: DeviceTransport> VirtIOSocketManager for VirtIOSocketDevice<H, T> {
+ fn local_cid(&self) -> u64 {
+ VMADDR_CID_HOST
+ }
+ fn send_packet_to_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result {
+ if buffer.is_empty() {
+ self.rx
+ .wait_pop_add_notify(&[header.as_bytes()], &mut self.transport)?
+ } else {
+ self.rx
+ .wait_pop_add_notify(&[header.as_bytes(), buffer], &mut self.transport)?
+ }
+ Ok(())
+ }
+ fn poll(
+ &mut self,
+ handler: impl FnOnce(VsockEvent, &[u8]) -> Result<Option<VsockEvent>>,
+ ) -> Result<Option<VsockEvent>> {
+ self.tx.poll(&mut self.transport, |buffer| {
+ let (header, body) = read_header_and_body(buffer)?;
+ VsockEvent::from_header(&header).and_then(|event| handler(event, body))
+ })
+ }
+}
+pub trait VirtIOSocketManager {
+ fn local_cid(&self) -> u64;
+ fn send_packet_to_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result;
+ fn poll(
+ &mut self,
+ handler: impl FnOnce(VsockEvent, &[u8]) -> Result<Option<VsockEvent>>,
+ ) -> Result<Option<VsockEvent>>;
+
+ /// Accepts the given connection from a peer.
+ fn accept(&mut self, connection_info: &ConnectionInfo) -> Result {
let header = VirtioVsockHdr {
op: VirtioVsockOp::Response.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
- self.send_packet_to_tx_queue(&header, &[])
+ self.send_packet_to_queue(&header, &[])
}
/// Requests the peer to send us a credit update for the given connection.
fn request_credit(&mut self, connection_info: &ConnectionInfo) -> Result {
let header = VirtioVsockHdr {
op: VirtioVsockOp::CreditRequest.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
- self.send_packet_to_tx_queue(&header, &[])
+ self.send_packet_to_queue(&header, &[])
}
/// Sends the buffer to the destination.
- pub fn send(&mut self, buffer: &[u8], connection_info: &mut ConnectionInfo) -> Result {
+ fn send(&mut self, buffer: &[u8], connection_info: &mut ConnectionInfo) -> Result {
self.check_peer_buffer_is_sufficient(connection_info, buffer.len())?;
let len = buffer.len() as u32;
let header = VirtioVsockHdr {
op: VirtioVsockOp::Rw.into(),
len: len.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
connection_info.tx_cnt += len;
- self.send_packet_to_tx_queue(&header, buffer)
+ self.send_packet_to_queue(&header, buffer)
}
fn check_peer_buffer_is_sufficient(
@@ -362,24 +511,12 @@
}
/// Tells the peer how much buffer space we have to receive data.
- pub fn credit_update(&mut self, connection_info: &ConnectionInfo) -> Result {
+ fn credit_update(&mut self, connection_info: &ConnectionInfo) -> Result {
let header = VirtioVsockHdr {
op: VirtioVsockOp::CreditUpdate.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
- self.send_packet_to_tx_queue(&header, &[])
- }
-
- /// Polls the RX virtqueue for the next event, and calls the given handler function to handle
- /// it.
- pub fn poll(
- &mut self,
- handler: impl FnOnce(VsockEvent, &[u8]) -> Result<Option<VsockEvent>>,
- ) -> Result<Option<VsockEvent>> {
- self.rx.poll(&mut self.transport, |buffer| {
- let (header, body) = read_header_and_body(buffer)?;
- VsockEvent::from_header(&header).and_then(|event| handler(event, body))
- })
+ self.send_packet_to_queue(&header, &[])
}
/// Requests to shut down the connection cleanly, sending hints about whether we will send or
@@ -388,7 +525,7 @@
/// This returns as soon as the request is sent; you should wait until `poll` returns a
/// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
/// shutdown.
- pub fn shutdown_with_hints(
+ fn shutdown_with_hints(
&mut self,
connection_info: &ConnectionInfo,
hints: StreamShutdown,
@@ -396,9 +533,9 @@
let header = VirtioVsockHdr {
op: VirtioVsockOp::Shutdown.into(),
flags: hints.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
- self.send_packet_to_tx_queue(&header, &[])
+ self.send_packet_to_queue(&header, &[])
}
/// Requests to shut down the connection cleanly, telling the peer that we won't send or receive
@@ -407,7 +544,7 @@
/// This returns as soon as the request is sent; you should wait until `poll` returns a
/// `VsockEventType::Disconnected` event if you want to know that the peer has acknowledged the
/// shutdown.
- pub fn shutdown(&mut self, connection_info: &ConnectionInfo) -> Result {
+ fn shutdown(&mut self, connection_info: &ConnectionInfo) -> Result {
self.shutdown_with_hints(
connection_info,
StreamShutdown::SEND | StreamShutdown::RECEIVE,
@@ -415,26 +552,12 @@
}
/// Forcibly closes the connection without waiting for the peer.
- pub fn force_close(&mut self, connection_info: &ConnectionInfo) -> Result {
+ fn force_close(&mut self, connection_info: &ConnectionInfo) -> Result {
let header = VirtioVsockHdr {
op: VirtioVsockOp::Rst.into(),
- ..connection_info.new_header(self.guest_cid)
+ ..connection_info.new_header(self.local_cid())
};
- self.send_packet_to_tx_queue(&header, &[])?;
- Ok(())
- }
-
- fn send_packet_to_tx_queue(&mut self, header: &VirtioVsockHdr, buffer: &[u8]) -> Result {
- let _len = if buffer.is_empty() {
- self.tx
- .add_notify_wait_pop(&[header.as_bytes()], &mut [], &mut self.transport)?
- } else {
- self.tx.add_notify_wait_pop(
- &[header.as_bytes(), buffer],
- &mut [],
- &mut self.transport,
- )?
- };
+ self.send_packet_to_queue(&header, &[])?;
Ok(())
}
}
diff --git a/crates/virtio-drivers-and-devices/src/hal.rs b/crates/virtio-drivers-and-devices/src/hal.rs
index 64e12e7..2026c92 100644
--- a/crates/virtio-drivers-and-devices/src/hal.rs
+++ b/crates/virtio-drivers-and-devices/src/hal.rs
@@ -7,6 +7,12 @@
/// A physical address as used for virtio.
pub type PhysAddr = usize;
+pub trait DmaMemory {
+ fn paddr(&self) -> usize;
+ fn vaddr(&self, offset: usize) -> NonNull<u8>;
+ fn raw_slice(&self) -> NonNull<[u8]>;
+}
+
/// A region of contiguous physical memory used for DMA.
#[derive(Debug)]
pub struct Dma<H: Hal> {
@@ -40,20 +46,22 @@
_hal: PhantomData,
})
}
+}
+impl<H: Hal> DmaMemory for Dma<H> {
/// Returns the physical address of the start of the DMA region, as seen by devices.
- pub fn paddr(&self) -> usize {
+ fn paddr(&self) -> usize {
self.paddr
}
/// Returns a pointer to the given offset within the DMA region.
- pub fn vaddr(&self, offset: usize) -> NonNull<u8> {
+ fn vaddr(&self, offset: usize) -> NonNull<u8> {
assert!(offset < self.pages * PAGE_SIZE);
NonNull::new((self.vaddr.as_ptr() as usize + offset) as _).unwrap()
}
/// Returns a pointer to the entire DMA region as a slice.
- pub fn raw_slice(&self) -> NonNull<[u8]> {
+ fn raw_slice(&self) -> NonNull<[u8]> {
let raw_slice =
core::ptr::slice_from_raw_parts_mut(self.vaddr(0).as_ptr(), self.pages * PAGE_SIZE);
NonNull::new(raw_slice).unwrap()
@@ -69,6 +77,71 @@
}
}
+#[derive(Debug)]
+pub struct DeviceDma<H: DeviceHal> {
+ paddr: usize,
+ vaddr: NonNull<u8>,
+ pages: usize,
+ _hal: PhantomData<H>,
+ client_id: u16,
+}
+
+// SAFETY: Device DMA memory can be accessed from any thread.
+unsafe impl<H: DeviceHal> Send for DeviceDma<H> {}
+
+// SAFETY: `&DeviceDma` only allows pointers and physical addresses to be returned. Any accesses to
+// the memory requires unsafe code, which is responsible for avoiding data races.
+unsafe impl<H: DeviceHal> Sync for DeviceDma<H> {}
+
+impl<H: DeviceHal> DeviceDma<H> {
+ // SAFETY: The caller must ensure that the memory described by paddr and pages can be mapped by
+ // the type implementing DeviceHal such as a virtqueue or a buffer described by a descriptor.
+ pub unsafe fn new(
+ paddr: PhysAddr,
+ pages: usize,
+ direction: BufferDirection,
+ client_id: u16,
+ ) -> Result<Self> {
+ let vaddr = H::dma_map(paddr, pages, direction, client_id)?;
+ Ok(Self {
+ paddr,
+ vaddr,
+ pages,
+ _hal: PhantomData,
+ client_id,
+ })
+ }
+}
+
+impl<H: DeviceHal> DmaMemory for DeviceDma<H> {
+ /// Returns the physical address of the start of the DMA region, as seen by devices.
+ fn paddr(&self) -> usize {
+ self.paddr
+ }
+
+ /// Returns a pointer to the given offset within the DMA region.
+ fn vaddr(&self, offset: usize) -> NonNull<u8> {
+ assert!(offset < self.pages * PAGE_SIZE);
+ NonNull::new((self.vaddr.as_ptr() as usize + offset) as _).unwrap()
+ }
+
+ /// Returns a pointer to the entire DMA region as a slice.
+ fn raw_slice(&self) -> NonNull<[u8]> {
+ let raw_slice =
+ core::ptr::slice_from_raw_parts_mut(self.vaddr(0).as_ptr(), self.pages * PAGE_SIZE);
+ NonNull::new(raw_slice).unwrap()
+ }
+}
+
+impl<H: DeviceHal> Drop for DeviceDma<H> {
+ fn drop(&mut self) {
+ // SAFETY: DeviceDma::new ensures that paddr, vaddr and pages were passed to
+ // DeviceHal::dma_map for this instance of DeviceDma
+ let err = unsafe { H::dma_unmap(self.paddr, self.vaddr, self.pages) };
+ assert_eq!(err, 0, "failed to unmap DMA");
+ }
+}
+
/// The interface which a particular hardware implementation must implement.
///
/// # Safety
@@ -140,6 +213,39 @@
unsafe fn unshare(paddr: PhysAddr, buffer: NonNull<[u8]>, direction: BufferDirection);
}
+/// Device-side abstraction layer for mapping and unmapping memory shared by the driver.
+///
+/// # Safety
+///
+/// Implementations of this trait must follow the "implementation safety" requirements documented
+/// for each method. Callers must follow the safety requirements documented for the unsafe methods.
+pub trait DeviceHal {
+ /// Maps in memory for a range of physical addresses shared by a VirtIO driver.
+ ///
+ /// Returns the virtual address which the device should use to access it.
+ /// # Implementation safety
+ ///
+ /// Implementations of this method must ensure that the `NonNull<u8>` returned is a
+ /// [_valid_](https://doc.rust-lang.org/std/ptr/index.html#safety) pointer, aligned to
+ /// [`PAGE_SIZE`], and won't alias any other allocations or references in the program until it
+ /// is freed by `dma_unmap`.
+ unsafe fn dma_map(
+ paddr: PhysAddr,
+ pages: usize,
+ direction: BufferDirection,
+ client_id: u16,
+ ) -> Result<NonNull<u8>>;
+
+ /// Unmaps memory previously shared by the driver.
+ ///
+ /// # Safety
+ ///
+ /// The memory must have been mapped in by `dma_map` on the same `DeviceHal` implementation, and
+ /// not yet unmapped. `pages` must be the same number passed to `dma_map` originally, and
+ /// both `paddr` and `vaddr` must be the values returned by `dma_map`.
+ unsafe fn dma_unmap(paddr: PhysAddr, vaddr: NonNull<u8>, pages: usize) -> i32;
+}
+
/// The direction in which a buffer is passed.
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub enum BufferDirection {
diff --git a/crates/virtio-drivers-and-devices/src/lib.rs b/crates/virtio-drivers-and-devices/src/lib.rs
index a1ff972..981dad0 100644
--- a/crates/virtio-drivers-and-devices/src/lib.rs
+++ b/crates/virtio-drivers-and-devices/src/lib.rs
@@ -12,7 +12,7 @@
//!
//! ```
//! use core::ptr::NonNull;
-//! use virtio_drivers::transport::mmio::{MmioTransport, VirtIOHeader};
+//! use virtio_drivers_and_devices::transport::mmio::{MmioTransport, VirtIOHeader};
//!
//! # fn example(mmio_device_address: usize, mmio_size: usize) {
//! let header = NonNull::new(mmio_device_address as *mut VirtIOHeader).unwrap();
@@ -23,9 +23,9 @@
//! You can then check what kind of VirtIO device it is and construct the appropriate driver:
//!
//! ```
-//! # use virtio_drivers::Hal;
+//! # use virtio_drivers_and_devices::Hal;
//! # #[cfg(feature = "alloc")]
-//! use virtio_drivers::{
+//! use virtio_drivers_and_devices::{
//! device::console::VirtIOConsole,
//! transport::{mmio::MmioTransport, DeviceType, Transport},
//! };
@@ -62,7 +62,7 @@
use device::socket::SocketError;
use thiserror::Error;
-pub use self::hal::{BufferDirection, Hal, PhysAddr};
+pub use self::hal::{BufferDirection, DeviceHal, Hal, PhysAddr};
/// The page size in bytes supported by the library (4 KiB).
pub const PAGE_SIZE: usize = 0x1000;
diff --git a/crates/virtio-drivers-and-devices/src/queue.rs b/crates/virtio-drivers-and-devices/src/queue.rs
index e363f0d..c3c03fa 100644
--- a/crates/virtio-drivers-and-devices/src/queue.rs
+++ b/crates/virtio-drivers-and-devices/src/queue.rs
@@ -3,11 +3,13 @@
#[cfg(feature = "alloc")]
pub mod owning;
-use crate::hal::{BufferDirection, Dma, Hal, PhysAddr};
-use crate::transport::Transport;
+use crate::hal::{BufferDirection, DeviceDma, DeviceHal, Dma, DmaMemory, Hal, PhysAddr};
+use crate::transport::{DeviceTransport, Transport};
use crate::{align_up, nonnull_slice_from_raw_parts, pages, Error, Result, PAGE_SIZE};
#[cfg(feature = "alloc")]
use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
use bitflags::bitflags;
#[cfg(test)]
use core::cmp::min;
@@ -29,7 +31,7 @@
#[derive(Debug)]
pub struct VirtQueue<H: Hal, const SIZE: usize> {
/// DMA guard
- layout: VirtQueueLayout<H>,
+ layout: VirtQueueLayout<Dma<H>>,
/// Descriptor table
///
/// The device may be able to modify this, even though it's not supposed to, so we shouldn't
@@ -550,28 +552,290 @@
// data race.
unsafe impl<H: Hal, const SIZE: usize> Sync for VirtQueue<H, SIZE> {}
+#[derive(Debug)]
+pub struct MappedDescriptor<H: DeviceHal> {
+ desc_copy: Descriptor,
+ dma: DeviceDma<H>,
+}
+
+impl<H: DeviceHal> MappedDescriptor<H> {
+ // SAFETY: The caller must ensure that the entire chain of buffers described by desc_copy came
+ // from a device virtqueue descriptor.
+ unsafe fn map_buf(desc_copy: Descriptor, client_id: u16) -> Result<Self> {
+ let direction = if desc_copy.flags.contains(DescFlags::WRITE) {
+ BufferDirection::DeviceToDriver
+ } else {
+ BufferDirection::DriverToDevice
+ };
+ // SAFETY: The safety requirements on this function ensure that the memory region can be
+ // mapped in as DMA memory.
+ let dma = unsafe {
+ DeviceDma::new(
+ desc_copy.addr as PhysAddr,
+ pages(desc_copy.len as usize),
+ direction,
+ client_id,
+ )?
+ };
+ Ok(Self { desc_copy, dma })
+ }
+}
+
+#[derive(Debug)]
+pub struct DeviceVirtQueue<H: DeviceHal, const SIZE: usize> {
+ /// DMA guard
+ layout: VirtQueueLayout<DeviceDma<H>>,
+
+ desc: NonNull<[Descriptor]>,
+ avail: NonNull<AvailRing<SIZE>>,
+ used: NonNull<UsedRing<SIZE>>,
+
+ queue_idx: u16,
+
+ /// Our trusted copy of `avail.idx`.
+ avail_idx: u16,
+ last_used_idx: u16,
+ desc_mapped: [Option<MappedDescriptor<H>>; SIZE],
+ client_id: u16,
+}
+
+impl<H: DeviceHal, const SIZE: usize> DeviceVirtQueue<H, SIZE> {
+ const SIZE_OK: () = assert!(SIZE.is_power_of_two() && SIZE <= u16::MAX as usize);
+
+ pub fn new<T: DeviceTransport>(transport: &mut T, idx: u16) -> Result<Self> {
+ #[allow(clippy::let_unit_value)]
+ let _ = Self::SIZE_OK;
+
+ if transport.max_queue_size(idx) < SIZE as u32 {
+ return Err(Error::InvalidParam);
+ }
+ let client_id = transport.get_client_id();
+
+ let size = SIZE as u16;
+
+ let [paddr, _, used_paddr] = transport.queue_get(idx);
+
+ let layout = if transport.requires_legacy_layout() {
+ // SAFETY: paddr was the physical address returned by the DeviceTransport implementor
+ // for the start of the virtqueue (i.e. descriptor table)
+ unsafe { VirtQueueLayout::map_legacy(size, paddr, client_id)? }
+ } else {
+ // SAFETY: paddr was the physical address returned by the DeviceTransport implementor
+ // for the start of the virtqueue. used_paddr was the physical address returned for the
+ // used vring.
+ unsafe { VirtQueueLayout::map_flexible(size, paddr, used_paddr, client_id)? }
+ };
+ let desc =
+ nonnull_slice_from_raw_parts(layout.descriptors_vaddr().cast::<Descriptor>(), SIZE);
+ let avail = layout.avail_vaddr().cast();
+ let used = layout.used_vaddr().cast();
+ let desc_mapped = [const { None }; SIZE];
+ Ok(DeviceVirtQueue {
+ layout,
+ desc,
+ avail,
+ used,
+ queue_idx: idx,
+ avail_idx: 0,
+ last_used_idx: 0,
+ desc_mapped,
+ client_id,
+ })
+ }
+
+ pub fn wait_pop_add_notify(
+ &mut self,
+ inputs: &[&[u8]],
+ transport: &mut impl DeviceTransport,
+ ) -> Result<()> {
+ #[cfg(feature = "alloc")]
+ {
+ while !self.can_pop() {
+ spin_loop();
+ }
+ // SAFETY: inputs is copied into the first buffer then the they are returned to the used
+ // vring and not accessed again.
+ let (mut buffers, token) = unsafe { self.pop_avail()?.unwrap() };
+
+ let out_buf = &mut buffers[0];
+ let mut copied = 0;
+ for in_buf in inputs {
+ out_buf[copied..copied + in_buf.len()].copy_from_slice(in_buf);
+ copied += in_buf.len();
+ }
+
+ let head_len = copied;
+ self.add_used(token, head_len);
+
+ if self.should_notify() {
+ transport.notify(self.queue_idx);
+ }
+ Ok(())
+ }
+ #[cfg(not(feature = "alloc"))]
+ unreachable!("device virtqueue send loop requires alloc feature")
+ }
+
+ pub fn poll<T>(
+ &mut self,
+ transport: &mut impl DeviceTransport,
+ handler: impl FnOnce(&[u8]) -> Result<Option<T>>,
+ ) -> Result<Option<T>> {
+ #[cfg(feature = "alloc")]
+ {
+ // SAFETY: The buffers are copied to a single, temporary buffer. Then handler is called on
+ // that and the original buffers are returned to the used vring and not accessed again.
+ let Some((buffers, token)) = (unsafe { self.pop_avail()? }) else {
+ return Ok(None);
+ };
+
+ let mut tmp = Vec::new();
+ for in_buf in &buffers {
+ tmp.extend_from_slice(in_buf);
+ }
+ let result = handler(tmp.as_slice());
+
+ let head_len = buffers[0].len();
+ self.add_used(token, head_len);
+
+ if self.should_notify() {
+ transport.notify(self.queue_idx);
+ }
+ result
+ }
+ #[cfg(not(feature = "alloc"))]
+ unreachable!("device virtqueue polling requires alloc feature")
+ }
+
+ fn add_used(&mut self, head: u16, head_len: usize) {
+ let last_used_slot = self.last_used_idx & (SIZE as u16 - 1);
+ // SAFETY: self.used is properly aligned, dereferenceable and initialised instance of
+ // UsedRing
+ unsafe {
+ (*self.used.as_ptr()).ring[usize::from(last_used_slot)].id = u32::from(head);
+ (*self.used.as_ptr()).ring[usize::from(last_used_slot)].len = head_len as u32;
+ }
+
+ fence(Ordering::SeqCst);
+
+ self.last_used_idx = self.last_used_idx.wrapping_add(1);
+ // SAFETY: self.used is properly aligned, dereferenceable and initialised instance of
+ // UsedRing
+ unsafe {
+ (*self.used.as_ptr())
+ .idx
+ .store(self.last_used_idx, Ordering::Release);
+ }
+ }
+
+ fn read_desc(&mut self, index: u16) -> Result<Descriptor> {
+ let index = usize::from(index);
+ // SAFETY: self.desc is a properly aligned, dereferencable and initialised instance of
+ // Descriptor
+ let desc = unsafe { (*self.desc.as_ptr()).get(index) };
+ desc.ok_or(Error::WrongToken).cloned()
+ }
+
+ /// Pop a chain of buffers from the avail vring and return the index of the first buffer.
+ ///
+ /// # Safety
+ ///
+ /// The caller must ensure that the returned buffers are not accessed after the first buffer's
+ /// token has been written to the used vring and the `last_used` index has been updated.
+ #[cfg(feature = "alloc")]
+ unsafe fn pop_avail<'a>(&mut self) -> Result<Option<(Vec<&'a mut [u8]>, u16)>> {
+ let Some(head) = self.peek_avail() else {
+ return Ok(None);
+ };
+ let mut res = Vec::new();
+ let mut next_token = Some(head);
+ while let Some(token) = next_token {
+ let desc = self.read_desc(token)?;
+ assert!(!desc.flags.contains(DescFlags::INDIRECT));
+ next_token = if desc.flags.contains(DescFlags::NEXT) {
+ Some(desc.next)
+ } else {
+ None
+ };
+ let mapped_desc = self
+ .desc_mapped
+ .get_mut(usize::from(token))
+ .ok_or(Error::WrongToken)?;
+ let desc_changed = if let Some(prev_mapped_desc) = mapped_desc {
+ prev_mapped_desc.desc_copy != desc
+ } else {
+ true
+ };
+ if desc_changed {
+ // SAFETY: desc was read from the virtqueue descriptor table and is currently not in
+ // use since it was either obtained by getting the next available index from
+ // peek_avail and using that to index into the descriptor table or through a chain
+ // of buffers starting from the buffer obtained via peek_avail.
+ // Drop impl unmaps the old descriptor's buffer to avoid leaking that memory
+ *mapped_desc = Some(unsafe { MappedDescriptor::map_buf(desc, self.client_id)? });
+ }
+ let mut buffer = mapped_desc.as_ref().unwrap().dma.raw_slice();
+ // SAFETY: Safety delegated to safety requirements on this function.
+ let buffer = unsafe { buffer.as_mut() };
+ res.push(buffer);
+ }
+ self.avail_idx = self.avail_idx.wrapping_add(1);
+ Ok(Some((res, head)))
+ }
+
+ fn can_pop(&self) -> bool {
+ // SAFETY: self.avail points to a valid, aligned, initialised, dereferenceable, readable
+ // instance of AvailRing.
+ self.avail_idx != unsafe { (*self.avail.as_ptr()).idx.load(Ordering::Acquire) }
+ }
+
+ fn peek_avail(&self) -> Option<u16> {
+ if self.can_pop() {
+ let avail_slot = self.avail_idx & (SIZE as u16 - 1);
+ // SAFETY: self.avail points to a valid, aligned, initialised, dereferenceable,
+ // readable instance of AvailRing.
+ Some(unsafe { (*self.avail.as_ptr()).ring[avail_slot as usize] })
+ } else {
+ None
+ }
+ }
+
+ fn should_notify(&self) -> bool {
+ // SAFETY: self.avail points to a valid, aligned, initialised, dereferenceable, readable
+ // instance of AvailRing.
+ unsafe { (*self.avail.as_ptr()).flags.load(Ordering::Acquire) & 0x0001 == 0 }
+ }
+}
+
+// SAFETY: None of the virt queue resources are tied to a particular thread.
+unsafe impl<H: DeviceHal, const SIZE: usize> Send for DeviceVirtQueue<H, SIZE> {}
+
+// SAFETY: A `&DeviceVirtQueue` only allows reading from the various pointers it contains, so there is no
+// data race.
+unsafe impl<H: DeviceHal, const SIZE: usize> Sync for DeviceVirtQueue<H, SIZE> {}
+
/// The inner layout of a VirtQueue.
///
/// Ref: 2.6 Split Virtqueues
#[derive(Debug)]
-enum VirtQueueLayout<H: Hal> {
+enum VirtQueueLayout<D: DmaMemory> {
Legacy {
- dma: Dma<H>,
+ dma: D,
avail_offset: usize,
used_offset: usize,
},
Modern {
/// The region used for the descriptor area and driver area.
- driver_to_device_dma: Dma<H>,
+ driver_to_device_dma: D,
/// The region used for the device area.
- device_to_driver_dma: Dma<H>,
+ device_to_driver_dma: D,
/// The offset from the start of the `driver_to_device_dma` region to the driver area
/// (available ring).
avail_offset: usize,
},
}
-impl<H: Hal> VirtQueueLayout<H> {
+impl<H: Hal> VirtQueueLayout<Dma<H>> {
/// Allocates a single DMA region containing all parts of the virtqueue, following the layout
/// required by legacy interfaces.
///
@@ -603,7 +867,65 @@
avail_offset: desc,
})
}
+}
+impl<H: DeviceHal> VirtQueueLayout<DeviceDma<H>> {
+ // SAFETY: paddr must be memory shared by a virtio driver for a split virtqueue with the legacy
+ // layout and queue_size entries.
+ unsafe fn map_legacy(queue_size: u16, paddr: PhysAddr, client_id: u16) -> Result<Self> {
+ let (desc, avail, used) = queue_part_sizes(queue_size);
+ let size = align_up(desc + avail) + align_up(used);
+ // SAFETY: The safety requirements on this function ensure that this memory region can be
+ // mapped in as DMA memory.
+ let dma =
+ unsafe { DeviceDma::new(paddr, size / PAGE_SIZE, BufferDirection::Both, client_id)? };
+ Ok(Self::Legacy {
+ dma,
+ avail_offset: desc,
+ used_offset: align_up(desc + avail),
+ })
+ }
+
+ // SAFETY: desc_avail_paddr and used_paddr must be memory shared by a virtio driver for a split
+ // virtqueue where the device writeable and driver writeable portions are described by separate
+ // memory regions. Specifically desc_avail_paddr must point to the descriptor table and
+ // available vring and used_paddr must point to the used vring.
+ unsafe fn map_flexible(
+ queue_size: u16,
+ desc_avail_paddr: PhysAddr,
+ used_paddr: PhysAddr,
+ client_id: u16,
+ ) -> Result<Self> {
+ let (desc, avail, used) = queue_part_sizes(queue_size);
+ // SAFETY: The safety requirements on this function ensure that this memory region can be
+ // mapped in as DMA memory.
+ let driver_to_device_dma = unsafe {
+ DeviceDma::new(
+ desc_avail_paddr,
+ pages(desc + avail),
+ BufferDirection::DriverToDevice,
+ client_id,
+ )?
+ };
+ // SAFETY: The safety requirements on this function ensure that this memory region can be
+ // mapped in as DMA memory.
+ let device_to_driver_dma = unsafe {
+ DeviceDma::new(
+ used_paddr,
+ pages(used),
+ BufferDirection::DeviceToDriver,
+ client_id,
+ )?
+ };
+ Ok(Self::Modern {
+ driver_to_device_dma,
+ device_to_driver_dma,
+ avail_offset: desc,
+ })
+ }
+}
+
+impl<D: DmaMemory> VirtQueueLayout<D> {
/// Returns the physical address of the descriptor area.
fn descriptors_paddr(&self) -> PhysAddr {
match self {
@@ -698,7 +1020,7 @@
}
#[repr(C, align(16))]
-#[derive(Clone, Debug, FromBytes, Immutable, IntoBytes, KnownLayout)]
+#[derive(Clone, Debug, FromBytes, Immutable, IntoBytes, KnownLayout, PartialEq)]
pub(crate) struct Descriptor {
addr: u64,
len: u32,
diff --git a/crates/virtio-drivers-and-devices/src/transport/mod.rs b/crates/virtio-drivers-and-devices/src/transport/mod.rs
index aed2267..6f339d4 100644
--- a/crates/virtio-drivers-and-devices/src/transport/mod.rs
+++ b/crates/virtio-drivers-and-devices/src/transport/mod.rs
@@ -15,6 +15,26 @@
pub use some::SomeTransport;
use zerocopy::{FromBytes, Immutable, IntoBytes};
+/// A VirtIO device-side transport layer.
+pub trait DeviceTransport {
+ /// Gets the client VM ID
+ fn get_client_id(&self) -> u16;
+
+ /// Gets the max size of the given queue.
+ fn max_queue_size(&mut self, queue: u16) -> u32;
+
+ /// Returns whether the transport requires queues to use the legacy layout.
+ ///
+ /// Ref: 2.6.2 Legacy Interfaces: A Note on Virtqueue Layout
+ fn requires_legacy_layout(&self) -> bool;
+
+ /// Gets the physical addresses for descriptors, driver area and device area for a given queue.
+ fn queue_get(&mut self, queue: u16) -> [PhysAddr; 3];
+
+ /// Notifies the given queue on the device.
+ fn notify(&mut self, queue: u16);
+}
+
/// A VirtIO transport layer.
pub trait Transport {
/// Gets the device type.
diff --git a/crates/virtio-drivers-and-devices/src/volatile.rs b/crates/virtio-drivers-and-devices/src/volatile.rs
index 16110cb..3aa6266 100644
--- a/crates/virtio-drivers-and-devices/src/volatile.rs
+++ b/crates/virtio-drivers-and-devices/src/volatile.rs
@@ -68,7 +68,7 @@
/// # Usage
/// ```compile_fail
/// # use core::ptr::NonNull;
-/// # use virtio_drivers::volatile::{ReadOnly, volread};
+/// # use virtio_drivers_and_devices::volatile::{ReadOnly, volread};
/// struct MmioDevice {
/// field: ReadOnly<u32>,
/// }
@@ -87,7 +87,7 @@
/// # Usage
/// ```compile_fail
/// # use core::ptr::NonNull;
-/// # use virtio_drivers::volatile::{WriteOnly, volread};
+/// # use virtio_drivers_and_devices::volatile::{WriteOnly, volread};
/// struct MmioDevice {
/// field: WriteOnly<u32>,
/// }
diff --git a/crates/virtio-drivers/.android-checksum.json b/crates/virtio-drivers/.android-checksum.json
index 4e439e9..46506b5 100644
--- a/crates/virtio-drivers/.android-checksum.json
+++ b/crates/virtio-drivers/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"eecaaaec247873472b0c45d8c00bc4299ec84aa7783ab7504309b4c78f2fbd32","Android.bp":"0ebfa1338fac60e2705469057f56a0b07b21510415a9f05df94e0b3d39dd75c8","Cargo.toml":"4bd3ac5cdc851e73664cdd22fabc08491d1b57ff7a0b5680824f1ec4f91cfb39","LICENSE":"ac7199d689b436833681f33b881e0b619be2053c06b122327caabb5a6bdb59f1","METADATA":"3c966d302b15b988073943fef879ba293ae8ac1e3809cb947712636f737529d7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"73fed1c071994c075530feb1dea1c0eca8b8a1959ff81a178530727ffaa4636f","TEST_MAPPING":"7ffa0bced5a01703c33b82d5cfc6feebe888778bbffda68e4c1ecb9c142708ee","cargo_embargo.json":"b01eeb8d3e3f81ca9504c66648df9467259b6bca0e093e4c137c060be96154c9","patches/mmio.patch":"7c2d5295877b9eba9b0647aa6783fade7731f25d39ee7160682189fe32845167","patches/rules.mk.diff":"afdb592f46d323d0e04ec3c033fb272fe7f79c28c5ad544f462bdac4c01f661b","rules.mk":"62b61317fb7462220f9994b5896afc566890ea0b8a2576dba610133f2fe50920","rust-toolchain.toml":"e29f2ad5748c6738b191d46ca6a4204014c51626eca5c106ab575225d8c915db","src/config.rs":"d3d20c66c228e04dae12242a6b28e04c7e5062a06c0ebd21ce34197c379d7ad6","src/device/blk.rs":"30754d708b893899c7b3ab3eaabb67f83d7884194c5fb0b435779aa1db99c613","src/device/common.rs":"090d853e88b893aebe01606fafcd9cab96d4601f3b7ce3cb6721975801616e0d","src/device/console.rs":"93fbca8aba93d1bd6796df431904d12145104dd7c7c55ab2804a4a2faa07b63f","src/device/console/embedded_io.rs":"5413e487a506ed2699c20e9dd1eaf0014128649f4e342bfb3de6f8f6d440ba6a","src/device/gpu.rs":"103d987c4d61ef92d551dd30ed66f749399722efade48c4546f780ac84517c7f","src/device/input.rs":"935616b220dfd81d8a76d64e0603cf4b30af1f9803aa47f3dfd25605108d6d1e","src/device/mod.rs":"84c2e13a08d50b7ba647b256a747acbe9cc5da5a15781f94084bf3e5e4be5a34","src/device/net/dev.rs":"9279bf99a856e20a58869403b82e463a05ab4c1e41591f06da6f9f1b9e6c6b99","src/device/net/dev_raw.rs":"ccc32379b2419766859f7e294f94a1a62039488c0f9ac78e2e147c480cde598f","src/device/net/mod.rs":"1835cba939ebc327391edb52bc9a61960bb9657c520d81699b223ec90cd62ff1","src/device/net/net_buf.rs":"e8244dc0306578148c6e557405363b0004ae43587c07be2a16dbb2d4a8d8512e","src/device/socket/connectionmanager.rs":"6a8475466cc7c8da82a7c38c32cd9e5ad3215468e1befc7fbb5271156ca20997","src/device/socket/error.rs":"74d56c73ce369aeff74fb2f001833be4efc77f14b1640d46a3ad73bada860db3","src/device/socket/mod.rs":"46ba478462b1c003acf42d449763f0a7457d853ee282f9b9349a6749caa19d2b","src/device/socket/protocol.rs":"8e990eb25c1b5e667801e97380053290bf4e03c62417f83d22d43ae3b0d9c169","src/device/socket/vsock.rs":"a04fc932fd3d8581e4660211a2dc95f5bdf658942286a4d0a21fee87a5d5092e","src/device/sound.rs":"fe4a4d439741c1f3a0af49e4a80bcc28e1a2799c478338147cfcf4af1f4717fe","src/device/sound/fake.rs":"c29ed8453863f6abe9dca76615da835b642497679d12b6a32ce601346e23b39c","src/embedded_io.rs":"fcf955e398d05037e37473a2efce9bc29198263962597193ff49e3c8588f4eac","src/hal.rs":"f2d413f8924bfe50dbd2705f3febffd111a1ae17f160cdb5d9f12159ca3dc803","src/hal/fake.rs":"060d24879ca1a381597cadeb22de59b7d9940c3cca01b6f729729359bbbba071","src/lib.rs":"d8d4e0605da550c8646b7b5c68be8444e41bd488fc8016af34546674a02a6e90","src/queue.rs":"29fc69f616a7fa4785f5b3d53a05f8ee451db1d45fb8fd6f1ee797d18353a0f7","src/queue/owning.rs":"91d6e94764f5919d3e75fc52dd38e88f727452aa9141d2cdaba4b1ee2936cd6a","src/transport/fake.rs":"5e50cc3b5b07c77332542adade2cfd44bd9c205fd06824a6549cf197f187f813","src/transport/mmio.rs":"d6e7dd13ff496d2844b01878f1f189ff7c33df714b23a621b68aee4f0f111b01","src/transport/mod.rs":"f321a2aede13defe52550742e380f98e3e4fe449dfce1e9f2918f9a610c46232","src/transport/pci.rs":"2fc9f2449b7a231214a96223e32874ea41edee8dd08666a98a71d1f29cfed7a2","src/transport/pci/bus.rs":"ad5b3a6974c42ad3b0fc9f77c2896ad7c3d2e8189b90dc6f1505fee8ab2e435a","src/transport/some.rs":"3a528e0d22069583940cd568ea1575cf3a2f5e1d71a5e3a4a5675089bc7c6347","src/transport/x86_64.rs":"2f7f814dea5726ac8092d9b187ef9b84852aa2036a42ff921942fa947124ce0d","src/transport/x86_64/cam.rs":"ad9945e9963383fe64f19af4828b345adaf779e74eff9d5db5a92a98599d0990","src/transport/x86_64/hypercalls.rs":"ecd307178a0d4f6385f279139cfbefed73acd8a1052510ba5f68d1c588bab1c0","src/volatile.rs":"bf3fa610ec0f889c0e013bad0bf84abb31c95581b97c00ccfbc7493fad8b695a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"eecaaaec247873472b0c45d8c00bc4299ec84aa7783ab7504309b4c78f2fbd32","Android.bp":"5e8aa02e457f3348bd9358c7d5ed39b7f01710945a101b5f50adf85ffacaab09","Cargo.toml":"4bd3ac5cdc851e73664cdd22fabc08491d1b57ff7a0b5680824f1ec4f91cfb39","LICENSE":"ac7199d689b436833681f33b881e0b619be2053c06b122327caabb5a6bdb59f1","METADATA":"3c966d302b15b988073943fef879ba293ae8ac1e3809cb947712636f737529d7","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"73fed1c071994c075530feb1dea1c0eca8b8a1959ff81a178530727ffaa4636f","TEST_MAPPING":"7ffa0bced5a01703c33b82d5cfc6feebe888778bbffda68e4c1ecb9c142708ee","cargo_embargo.json":"37048d550824acc4143c1d0900b9aff9c210d51592afad0c977ba75bd924d6c5","patches/mmio.patch":"7c2d5295877b9eba9b0647aa6783fade7731f25d39ee7160682189fe32845167","patches/rules.mk.diff":"afdb592f46d323d0e04ec3c033fb272fe7f79c28c5ad544f462bdac4c01f661b","rules.mk":"62b61317fb7462220f9994b5896afc566890ea0b8a2576dba610133f2fe50920","rust-toolchain.toml":"e29f2ad5748c6738b191d46ca6a4204014c51626eca5c106ab575225d8c915db","src/config.rs":"d3d20c66c228e04dae12242a6b28e04c7e5062a06c0ebd21ce34197c379d7ad6","src/device/blk.rs":"30754d708b893899c7b3ab3eaabb67f83d7884194c5fb0b435779aa1db99c613","src/device/common.rs":"090d853e88b893aebe01606fafcd9cab96d4601f3b7ce3cb6721975801616e0d","src/device/console.rs":"93fbca8aba93d1bd6796df431904d12145104dd7c7c55ab2804a4a2faa07b63f","src/device/console/embedded_io.rs":"5413e487a506ed2699c20e9dd1eaf0014128649f4e342bfb3de6f8f6d440ba6a","src/device/gpu.rs":"103d987c4d61ef92d551dd30ed66f749399722efade48c4546f780ac84517c7f","src/device/input.rs":"935616b220dfd81d8a76d64e0603cf4b30af1f9803aa47f3dfd25605108d6d1e","src/device/mod.rs":"84c2e13a08d50b7ba647b256a747acbe9cc5da5a15781f94084bf3e5e4be5a34","src/device/net/dev.rs":"9279bf99a856e20a58869403b82e463a05ab4c1e41591f06da6f9f1b9e6c6b99","src/device/net/dev_raw.rs":"ccc32379b2419766859f7e294f94a1a62039488c0f9ac78e2e147c480cde598f","src/device/net/mod.rs":"1835cba939ebc327391edb52bc9a61960bb9657c520d81699b223ec90cd62ff1","src/device/net/net_buf.rs":"e8244dc0306578148c6e557405363b0004ae43587c07be2a16dbb2d4a8d8512e","src/device/socket/connectionmanager.rs":"6a8475466cc7c8da82a7c38c32cd9e5ad3215468e1befc7fbb5271156ca20997","src/device/socket/error.rs":"74d56c73ce369aeff74fb2f001833be4efc77f14b1640d46a3ad73bada860db3","src/device/socket/mod.rs":"46ba478462b1c003acf42d449763f0a7457d853ee282f9b9349a6749caa19d2b","src/device/socket/protocol.rs":"8e990eb25c1b5e667801e97380053290bf4e03c62417f83d22d43ae3b0d9c169","src/device/socket/vsock.rs":"a04fc932fd3d8581e4660211a2dc95f5bdf658942286a4d0a21fee87a5d5092e","src/device/sound.rs":"fe4a4d439741c1f3a0af49e4a80bcc28e1a2799c478338147cfcf4af1f4717fe","src/device/sound/fake.rs":"c29ed8453863f6abe9dca76615da835b642497679d12b6a32ce601346e23b39c","src/embedded_io.rs":"fcf955e398d05037e37473a2efce9bc29198263962597193ff49e3c8588f4eac","src/hal.rs":"f2d413f8924bfe50dbd2705f3febffd111a1ae17f160cdb5d9f12159ca3dc803","src/hal/fake.rs":"060d24879ca1a381597cadeb22de59b7d9940c3cca01b6f729729359bbbba071","src/lib.rs":"d8d4e0605da550c8646b7b5c68be8444e41bd488fc8016af34546674a02a6e90","src/queue.rs":"29fc69f616a7fa4785f5b3d53a05f8ee451db1d45fb8fd6f1ee797d18353a0f7","src/queue/owning.rs":"91d6e94764f5919d3e75fc52dd38e88f727452aa9141d2cdaba4b1ee2936cd6a","src/transport/fake.rs":"5e50cc3b5b07c77332542adade2cfd44bd9c205fd06824a6549cf197f187f813","src/transport/mmio.rs":"d6e7dd13ff496d2844b01878f1f189ff7c33df714b23a621b68aee4f0f111b01","src/transport/mod.rs":"f321a2aede13defe52550742e380f98e3e4fe449dfce1e9f2918f9a610c46232","src/transport/pci.rs":"2fc9f2449b7a231214a96223e32874ea41edee8dd08666a98a71d1f29cfed7a2","src/transport/pci/bus.rs":"ad5b3a6974c42ad3b0fc9f77c2896ad7c3d2e8189b90dc6f1505fee8ab2e435a","src/transport/some.rs":"3a528e0d22069583940cd568ea1575cf3a2f5e1d71a5e3a4a5675089bc7c6347","src/transport/x86_64.rs":"2f7f814dea5726ac8092d9b187ef9b84852aa2036a42ff921942fa947124ce0d","src/transport/x86_64/cam.rs":"ad9945e9963383fe64f19af4828b345adaf779e74eff9d5db5a92a98599d0990","src/transport/x86_64/hypercalls.rs":"ecd307178a0d4f6385f279139cfbefed73acd8a1052510ba5f68d1c588bab1c0","src/volatile.rs":"bf3fa610ec0f889c0e013bad0bf84abb31c95581b97c00ccfbc7493fad8b695a"}}
\ No newline at end of file
diff --git a/crates/virtio-drivers/Android.bp b/crates/virtio-drivers/Android.bp
index 564e32a..fcf13d2 100644
--- a/crates/virtio-drivers/Android.bp
+++ b/crates/virtio-drivers/Android.bp
@@ -38,6 +38,7 @@
"libcompiler_builtins.rust_sysroot",
"libcore.rust_sysroot",
],
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/virtio-drivers/cargo_embargo.json b/crates/virtio-drivers/cargo_embargo.json
index 4e42f5f..b7430be 100644
--- a/crates/virtio-drivers/cargo_embargo.json
+++ b/crates/virtio-drivers/cargo_embargo.json
@@ -27,5 +27,6 @@
"generate_rulesmk": true,
"tests": false
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/virtio-queue/.android-checksum.json b/crates/virtio-queue/.android-checksum.json
index efab686..df73887 100644
--- a/crates/virtio-queue/.android-checksum.json
+++ b/crates/virtio-queue/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"1d84c1cdf0904020a4157889e6a97fff09cd9868506167e230722751e1cc953d","Android.bp":"e00024b07c58318b2a0c2a7551058b5e3cb97e815712fb2b6b7fffc689c2e6b7","CHANGELOG.md":"c63e4f56c8000b7f632ee298febe28a901717a7bb881319ae58fa48910ee4919","Cargo.toml":"effb3c2c1a6f72d9fef7b75e98f8dfd58614d0c1d0b484731e744a12066b5e77","LICENSE":"92e50f38ce41db887e52d4260a1393fee37d88853f229d49b334b3a21d5e9c73","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-BSD-3-Clause":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","METADATA":"db02b0b1ad79d76c4f379dc487a02516225c4a9d9755dd13795314ba730bc9cf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"322ba862ccece41c6c4e8f58a0996b581baf60fd73e7ccb785d1c76a33e2aeab","benches/main.rs":"5aa2b63bcad7f825a6fcb7a2a0b7db1c7376a36ab19b413107fa0c89cdbb60fd","benches/queue/mod.rs":"962936b0954a80f45aa05c93a18794f64f8be61cfea4e08b6da21429d6ae6aef","cargo_embargo.json":"5b468000ad50d29939121326c44bedb3222833b00184e7619b13c3c976c9a869","docs/TESTING.md":"7e4862cc52b5b83c17e3cfc14c2e187bd341114516c37d4957bc9162ec8caf78","docs/images/descriptor.png":"1cb0eaa0c0e2b5ec3d315b85d8bf5fa91905e7a5a53c220805ff1f23d3b509e7","docs/images/queue.png":"b708659c9ab8458ffb7cb8fb28b13128334e050b1d617f0185493e0e536c7bc0","patches/LICENSE.patch":"bcc774f726c227e07a8b8a9cb91916e005e7873fcfeebd080ba2a6a9c1503cca","src/chain.rs":"7a158b6e8bf6f7eafc697a657d5a95a15cdb8457d1f91704e749f5dcc5c84d13","src/defs.rs":"4f5a94e256306c0c0e17492be2c132263b25cccb142ec7fe7231e1ce520acaf7","src/descriptor.rs":"4cb1ebdb17ee9c3c0720c008d3c69973228ad128bd01d2bc1932dcec7ef651e2","src/descriptor_utils.rs":"b76d75852f8ef0c288bb9bd9a5087b5e921d2f58ff2fa68fe4d434ccf3fce07d","src/lib.rs":"533f6b65bff0dda3f5df02675aec6aa37e262b4b09775e35a68a13183bb9a9cc","src/mock.rs":"12e511aac4d497b3ef5e7d899f05f2fa730094a893138c7b1ae38e4b3cac50fc","src/queue.rs":"fe61a4f6b59e4787f122f9cd196b064bc2d54231f22a7616114619acc7c05eda","src/queue_sync.rs":"912eeca9f42fc09bd311d5cfe162b22a531dad03acaa164ed46f4e3a7f782c01","src/state.rs":"c14de49b558db1c6b060618721897d0f42d12f8af76884c56a62238cf797b6a1"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"1d84c1cdf0904020a4157889e6a97fff09cd9868506167e230722751e1cc953d","Android.bp":"e00024b07c58318b2a0c2a7551058b5e3cb97e815712fb2b6b7fffc689c2e6b7","CHANGELOG.md":"c63e4f56c8000b7f632ee298febe28a901717a7bb881319ae58fa48910ee4919","Cargo.toml":"effb3c2c1a6f72d9fef7b75e98f8dfd58614d0c1d0b484731e744a12066b5e77","LICENSE":"92e50f38ce41db887e52d4260a1393fee37d88853f229d49b334b3a21d5e9c73","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-BSD-3-Clause":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","METADATA":"db02b0b1ad79d76c4f379dc487a02516225c4a9d9755dd13795314ba730bc9cf","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"322ba862ccece41c6c4e8f58a0996b581baf60fd73e7ccb785d1c76a33e2aeab","benches/main.rs":"5aa2b63bcad7f825a6fcb7a2a0b7db1c7376a36ab19b413107fa0c89cdbb60fd","benches/queue/mod.rs":"962936b0954a80f45aa05c93a18794f64f8be61cfea4e08b6da21429d6ae6aef","cargo_embargo.json":"fd3bfa1390ffe5541f51fc35feafcf373497a483347dcb169d96e54a79fcb3ac","docs/TESTING.md":"7e4862cc52b5b83c17e3cfc14c2e187bd341114516c37d4957bc9162ec8caf78","docs/images/descriptor.png":"1cb0eaa0c0e2b5ec3d315b85d8bf5fa91905e7a5a53c220805ff1f23d3b509e7","docs/images/queue.png":"b708659c9ab8458ffb7cb8fb28b13128334e050b1d617f0185493e0e536c7bc0","patches/LICENSE.patch":"bcc774f726c227e07a8b8a9cb91916e005e7873fcfeebd080ba2a6a9c1503cca","src/chain.rs":"7a158b6e8bf6f7eafc697a657d5a95a15cdb8457d1f91704e749f5dcc5c84d13","src/defs.rs":"4f5a94e256306c0c0e17492be2c132263b25cccb142ec7fe7231e1ce520acaf7","src/descriptor.rs":"4cb1ebdb17ee9c3c0720c008d3c69973228ad128bd01d2bc1932dcec7ef651e2","src/descriptor_utils.rs":"b76d75852f8ef0c288bb9bd9a5087b5e921d2f58ff2fa68fe4d434ccf3fce07d","src/lib.rs":"533f6b65bff0dda3f5df02675aec6aa37e262b4b09775e35a68a13183bb9a9cc","src/mock.rs":"12e511aac4d497b3ef5e7d899f05f2fa730094a893138c7b1ae38e4b3cac50fc","src/queue.rs":"fe61a4f6b59e4787f122f9cd196b064bc2d54231f22a7616114619acc7c05eda","src/queue_sync.rs":"912eeca9f42fc09bd311d5cfe162b22a531dad03acaa164ed46f4e3a7f782c01","src/state.rs":"c14de49b558db1c6b060618721897d0f42d12f8af76884c56a62238cf797b6a1"}}
\ No newline at end of file
diff --git a/crates/virtio-queue/cargo_embargo.json b/crates/virtio-queue/cargo_embargo.json
index 8512c9e..cc05a2d 100644
--- a/crates/virtio-queue/cargo_embargo.json
+++ b/crates/virtio-queue/cargo_embargo.json
@@ -6,8 +6,12 @@
"virtio-queue": {
"device_supported": false,
"host_first_multilib": true,
- "license_text": ["LICENSE-APACHE", "LICENSE-BSD-3-Clause"]
+ "license_text": [
+ "LICENSE-APACHE",
+ "LICENSE-BSD-3-Clause"
+ ]
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/virtio-vsock/.android-checksum.json b/crates/virtio-vsock/.android-checksum.json
index c091877..6dc10a4 100644
--- a/crates/virtio-vsock/.android-checksum.json
+++ b/crates/virtio-vsock/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"a52652600eef681e54b14bb74366754eeb047fdca7a8272dcde3ee01ad105fc6","Android.bp":"f7c1300f66215ed1b544ed8c11d1acf74dd50223117913a74603bd533520b60f","CHANGELOG.md":"5883ddc7d0f223b02209e15ff2f8f337f27ad4b3a08b6a760571e9806258ce6c","Cargo.toml":"271588989ace211f34482b5becbfc55e6007792e998ddfb21d1554f8ea7984e1","LICENSE":"d6e9a3aa5ff391bcbc73cbe06c3917ca0e317a4ef341f36c4522090cefb372dc","METADATA":"7cb052987a6e1826711e628a8eb288d0293400d224fff1d559b78481f61db0f1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f667b231d5bb42d9aecf888d791385b1233f9a089426394c7034e6f6bed310af","cargo_embargo.json":"699817be1e026546480a6ab5232466ffb739c68e45af1136227c5add220107c0","patches/LICENSE.patch":"409a83952ca6f4de11bc37cbee9bdf434235757598058a32c337986e126ebfdb","src/lib.rs":"463bca4afe4c0fea6ce7830f488bbd0f27de2f562142f97b28b817e45b6e3948","src/packet.rs":"eab4d6b3a0a78c49957e21e0dc91967373c0d5255e5234ce1a7b52dc96ed303a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"a52652600eef681e54b14bb74366754eeb047fdca7a8272dcde3ee01ad105fc6","Android.bp":"f7c1300f66215ed1b544ed8c11d1acf74dd50223117913a74603bd533520b60f","CHANGELOG.md":"5883ddc7d0f223b02209e15ff2f8f337f27ad4b3a08b6a760571e9806258ce6c","Cargo.toml":"271588989ace211f34482b5becbfc55e6007792e998ddfb21d1554f8ea7984e1","LICENSE":"d6e9a3aa5ff391bcbc73cbe06c3917ca0e317a4ef341f36c4522090cefb372dc","METADATA":"7cb052987a6e1826711e628a8eb288d0293400d224fff1d559b78481f61db0f1","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f667b231d5bb42d9aecf888d791385b1233f9a089426394c7034e6f6bed310af","cargo_embargo.json":"0bf7d72a0b5ec0846c209c1329194301366b7631a3be474d3359c4fe385b7dce","patches/LICENSE.patch":"409a83952ca6f4de11bc37cbee9bdf434235757598058a32c337986e126ebfdb","src/lib.rs":"463bca4afe4c0fea6ce7830f488bbd0f27de2f562142f97b28b817e45b6e3948","src/packet.rs":"eab4d6b3a0a78c49957e21e0dc91967373c0d5255e5234ce1a7b52dc96ed303a"}}
\ No newline at end of file
diff --git a/crates/virtio-vsock/cargo_embargo.json b/crates/virtio-vsock/cargo_embargo.json
index c2459ac..adfdb60 100644
--- a/crates/virtio-vsock/cargo_embargo.json
+++ b/crates/virtio-vsock/cargo_embargo.json
@@ -8,5 +8,6 @@
"host_first_multilib": true
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/vm-memory/.android-checksum.json b/crates/vm-memory/.android-checksum.json
index 952a3d2..4a98b4a 100644
--- a/crates/vm-memory/.android-checksum.json
+++ b/crates/vm-memory/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f9f304274a0aabcc3d64035866612412a10fde67fa95b27a5d93ff7bb07e3df5","Android.bp":"238bfc5dc96577d25cb58ef24aad12682d6d839da1d92e8c3e92ef87aa8e071e","CHANGELOG.md":"af40d72945c8d6d17475d0172a117df330edf1333c198df07399d9c65404eaaa","CODEOWNERS":"b80872e1aad5883a92ced4812545b49f6bcb2d473655c1698e32eda7f5a4848d","Cargo.toml":"a5816b674a0912bb22fa5791d95fab7f6f757b8177008351b1d82ed592331928","DESIGN.md":"88c3aeec99c4cbabebec4e1ce70cfc482d90a0a3aa184c3fccfa5da675dbc549","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c8141f0ddd6c2b9c83d8dcff52c81f41cfabea75cbd55d2bfc3e25f99376a3dd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e60865700f8b53093bec9b3d527fd5f70c7296066d28ba2557de852ebd6707e9","TODO.md":"8e17c765b47c3d395d8f4f31994c01ecd1c0fda50f305292901bfcd1488364bc","benches/guest_memory.rs":"11e14113506e9f1891f86d309721f32b09d3ecde142b0af69d8e2b52d1fe0293","benches/main.rs":"84c672f9a5029433e6e0d81d2fcded7b7ed3bf7ae68922b0adadce868e628cd8","benches/mmap/mod.rs":"76255dccc23dc194388a3e21006ee336663d63c770a212f2a28a803f8aaba14a","benches/volatile.rs":"1c7ade05cc51425d0fc4d85390051d1af48a68397115571c02ac8c94b0ecb0c1","cargo2android_module.bp.fragment":"1c632b6fda8f54d33a0ef9fa375661a2ae8e7399227291bb68d44960ea072d44","cargo_embargo.json":"77b4d03bc110c19d7faae8fc1a845c60ee8a18bdeb82a4109677a809d585b0c8","coverage_config_aarch64.json":"0704342dbbd99d078a309818ccf7d7ad266579b8860c6842cffedbe9f6f2d360","coverage_config_x86_64.json":"d448445ee92aa65d5b000433a1c67df320f2219d2f5bdc861f253085717fcbc8","src/address.rs":"452d68db3350d11662d3f0f4539c6b16a129b5c4feacc8a6506b0bcef8b3cffe","src/atomic.rs":"393bba5d8c72c369f20826cbf603468cbcc8c4087db1a3974f4187309a56009e","src/atomic_integer.rs":"1f62802fc7415e3bc4ee475afcd7846b63f35a87f138e103232e7711af07d834","src/bitmap/backend/atomic_bitmap.rs":"c8fbb5bbf876339b78bb0fb3fc57744f1ac33d844807f82c241cb06f89cabc79","src/bitmap/backend/atomic_bitmap_arc.rs":"c22adafb7ba095d1eb042267f7ed9e6eb0ab98202cb6f0dbf74167d72c925627","src/bitmap/backend/mod.rs":"bdfb9e91bae0328e7aa19f4ece70f7a18999836a7e95d084bf2c0945d0c15919","src/bitmap/backend/slice.rs":"1285932f4095d1ad20d56888b9664f65498517f20ea6eb978911e4d5e4011407","src/bitmap/mod.rs":"216fa29482e98526b6a4ebbb72d7ba962358c820ecbdb478e236df935e2d44ee","src/bytes.rs":"03a3f58c22848fafdbcd99abef5a9ce310dbd97a530499ccb9afa6be190f4d59","src/endian.rs":"5e630d9be4dda02161d5367abdf7b4289d114b240f31fb13d3018af8b19502b4","src/guest_memory.rs":"ec503eba34810309d9e8a0190522d6bb4dea4afab8744532bfa7e53eb097e1ab","src/io.rs":"6f6ec612eec17228792f244841a0db274daaaad037686ad28d73169a3fd44a1c","src/lib.rs":"145bc43cd01f941e60a995ac1311ad7830f11fa1b79ad6768d0bfaef4987399c","src/mmap.rs":"06f5b55b7845966dc94a3d9584dc278d3a9d107b33c67486dc5b089d5921df20","src/mmap_unix.rs":"6191ecfd522a4c834b88bb8c7e75a0ed9667cc61f2a007821545b1bb703a7b4f","src/mmap_windows.rs":"9a465706f8501e150b1f188526f358e38a0cd8784e443746b289d8c029058591","src/mmap_xen.rs":"6ea56e1334e35cd7d07eca47e444790605e186c0d036232c37cb742317d28d3f","src/volatile_memory.rs":"9796ecaf8a927e30b650138589f0888750a51bc4e98c743ed856b317f93067eb"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f9f304274a0aabcc3d64035866612412a10fde67fa95b27a5d93ff7bb07e3df5","Android.bp":"238bfc5dc96577d25cb58ef24aad12682d6d839da1d92e8c3e92ef87aa8e071e","CHANGELOG.md":"af40d72945c8d6d17475d0172a117df330edf1333c198df07399d9c65404eaaa","CODEOWNERS":"b80872e1aad5883a92ced4812545b49f6bcb2d473655c1698e32eda7f5a4848d","Cargo.toml":"a5816b674a0912bb22fa5791d95fab7f6f757b8177008351b1d82ed592331928","DESIGN.md":"88c3aeec99c4cbabebec4e1ce70cfc482d90a0a3aa184c3fccfa5da675dbc549","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"c8141f0ddd6c2b9c83d8dcff52c81f41cfabea75cbd55d2bfc3e25f99376a3dd","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e60865700f8b53093bec9b3d527fd5f70c7296066d28ba2557de852ebd6707e9","TODO.md":"8e17c765b47c3d395d8f4f31994c01ecd1c0fda50f305292901bfcd1488364bc","benches/guest_memory.rs":"11e14113506e9f1891f86d309721f32b09d3ecde142b0af69d8e2b52d1fe0293","benches/main.rs":"84c672f9a5029433e6e0d81d2fcded7b7ed3bf7ae68922b0adadce868e628cd8","benches/mmap/mod.rs":"76255dccc23dc194388a3e21006ee336663d63c770a212f2a28a803f8aaba14a","benches/volatile.rs":"1c7ade05cc51425d0fc4d85390051d1af48a68397115571c02ac8c94b0ecb0c1","cargo2android_module.bp.fragment":"1c632b6fda8f54d33a0ef9fa375661a2ae8e7399227291bb68d44960ea072d44","cargo_embargo.json":"d823b024971eb6fef7f0504ed7863302d08a4741d67d6690a311aed7c1f8992c","coverage_config_aarch64.json":"0704342dbbd99d078a309818ccf7d7ad266579b8860c6842cffedbe9f6f2d360","coverage_config_x86_64.json":"d448445ee92aa65d5b000433a1c67df320f2219d2f5bdc861f253085717fcbc8","src/address.rs":"452d68db3350d11662d3f0f4539c6b16a129b5c4feacc8a6506b0bcef8b3cffe","src/atomic.rs":"393bba5d8c72c369f20826cbf603468cbcc8c4087db1a3974f4187309a56009e","src/atomic_integer.rs":"1f62802fc7415e3bc4ee475afcd7846b63f35a87f138e103232e7711af07d834","src/bitmap/backend/atomic_bitmap.rs":"c8fbb5bbf876339b78bb0fb3fc57744f1ac33d844807f82c241cb06f89cabc79","src/bitmap/backend/atomic_bitmap_arc.rs":"c22adafb7ba095d1eb042267f7ed9e6eb0ab98202cb6f0dbf74167d72c925627","src/bitmap/backend/mod.rs":"bdfb9e91bae0328e7aa19f4ece70f7a18999836a7e95d084bf2c0945d0c15919","src/bitmap/backend/slice.rs":"1285932f4095d1ad20d56888b9664f65498517f20ea6eb978911e4d5e4011407","src/bitmap/mod.rs":"216fa29482e98526b6a4ebbb72d7ba962358c820ecbdb478e236df935e2d44ee","src/bytes.rs":"03a3f58c22848fafdbcd99abef5a9ce310dbd97a530499ccb9afa6be190f4d59","src/endian.rs":"5e630d9be4dda02161d5367abdf7b4289d114b240f31fb13d3018af8b19502b4","src/guest_memory.rs":"ec503eba34810309d9e8a0190522d6bb4dea4afab8744532bfa7e53eb097e1ab","src/io.rs":"6f6ec612eec17228792f244841a0db274daaaad037686ad28d73169a3fd44a1c","src/lib.rs":"145bc43cd01f941e60a995ac1311ad7830f11fa1b79ad6768d0bfaef4987399c","src/mmap.rs":"06f5b55b7845966dc94a3d9584dc278d3a9d107b33c67486dc5b089d5921df20","src/mmap_unix.rs":"6191ecfd522a4c834b88bb8c7e75a0ed9667cc61f2a007821545b1bb703a7b4f","src/mmap_windows.rs":"9a465706f8501e150b1f188526f358e38a0cd8784e443746b289d8c029058591","src/mmap_xen.rs":"6ea56e1334e35cd7d07eca47e444790605e186c0d036232c37cb742317d28d3f","src/volatile_memory.rs":"9796ecaf8a927e30b650138589f0888750a51bc4e98c743ed856b317f93067eb"}}
\ No newline at end of file
diff --git a/crates/vm-memory/cargo_embargo.json b/crates/vm-memory/cargo_embargo.json
index ef818be..053dc57 100644
--- a/crates/vm-memory/cargo_embargo.json
+++ b/crates/vm-memory/cargo_embargo.json
@@ -16,5 +16,6 @@
"add_module_block": "cargo2android_module.bp.fragment"
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/vmm-sys-util/.android-checksum.json b/crates/vmm-sys-util/.android-checksum.json
index 1a5fa9c..79e2875 100644
--- a/crates/vmm-sys-util/.android-checksum.json
+++ b/crates/vmm-sys-util/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f1b897546560c983cad94f0d2f7c69db5623797b49bb45885106eeca7ee3fa87","Android.bp":"d79ea94f81e944551b7cb207259ace47d94bfea507979d41ae17905ab63d05f8","CHANGELOG.md":"e28546118bf3142dbd506c9a32ab772ce6cc9bcb1d28883a08a7ae4569d0ec69","CODEOWNERS":"6b86b470572b6ed9d9513cb1ab89ad3540f9dc9b71bfdb101e086218cf1d7965","Cargo.toml":"5777fe4cc2b2f8d2b0b6fb0e6076e70a3d7adff5b058b564e3e5e95bf603324d","LICENSE":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","LICENSE-BSD-3-Clause":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","METADATA":"85832d2438d3d7dbf9658239a789b6093fc9190d38f9298ea592e55aac06b927","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"518cc7b6f9b2dd9988cc65ebcd5cb752cfa02edb7821166241bca1a1d3dcf077","TEST_MAPPING":"d2a783eed15cfc90355a3d0a8935618cffaf6f28825fc37075c7669a761eaa77","cargo_embargo.json":"c99bae710d503bee5383982cda82df66dc13c43eeca2936d01a82951cdfdd842","coverage_config_aarch64.json":"bbaa2bb4fd29ae79d88b0978175e1028d72ca6ad4b2e4b9cdc21db9647e0f741","coverage_config_x86_64.json":"0606cf44d232fcf83c5a8f2352d5f06caeab00f26c9eaaae02fba4a71138b723","patches/fix-unit-tests.patch":"8af2508f96aeb9da01282a318872c33d74e37e6b64efd314c590c30be592d920","src/errno.rs":"5201555397b1671830b1db83cc9ead038c8bbc45e8e81b9bdbf11621e5491707","src/fam.rs":"8c60ee61041904dacf377017b641197db3ebb74c2c80371b303e1d9b0ed551f0","src/lib.rs":"b8ccbda0ad244032bf4b0a916696624b7a4766c97b43937350484b560566f993","src/linux/aio.rs":"8313537e84f47aa0ee256b93f5523b7b0edf276ee99a8a4f2e44ec21dfe0fec7","src/linux/epoll.rs":"82157430d3183d5e75c83848f97ec86616b4bc9295f65ca61ef2af7e48b5d8f4","src/linux/eventfd.rs":"3d1e4de441e3e13b1343cfae0104f46af6aecf47cc479bad62cfa57f6420e63e","src/linux/fallocate.rs":"e11d6afbe1a95f2753ecce5823cb76ffaf98a2a42d6a1f4800c6cc99d74d1402","src/linux/ioctl.rs":"49b0a77f3d1247e07f883d4e31fe7525fd0a4a2e7c9503833eb5d94cb196a0cf","src/linux/mod.rs":"89f1e9feee6c847aa57bd17888de3d4cfff64c161c66dffb47f6c04874f15028","src/linux/poll.rs":"a8d05698ae8d8b813554ade434124f319fd21d9e7abe2c73f1c52489d8e3f7f1","src/linux/seek_hole.rs":"a60abcae7102ae077e98159d16c2dc0792ae102cb77133b4455b7e95c323b38b","src/linux/signal.rs":"7466b709de84442f864ce4ca532af319a4448f87491047dd374460a282c2c1f1","src/linux/sock_ctrl_msg.rs":"c5889578baa3ebcdbbe4e2b1c5cad43e9bbf6561ae0282adffc114559f276199","src/linux/timerfd.rs":"87cf14fcd289f36f73d7ce8b50e870f5acb3ebf05a78195d66d663091c002c09","src/linux/write_zeroes.rs":"1c75bbd6bd68dbf73d2720ea4b58a091b4f1e92b0566116388058435b86cb383","src/metric.rs":"0590df06a689cc90206a4782e05e340c83260a48e14e7634cfb58c7631981f27","src/rand.rs":"290ac842eae9076c3030731ca2ee73028d802c3d990e718c4ec48fe43f411ec5","src/syscall.rs":"d73446b7ddec45a5612e6f09a2bff729751769f17cb54a4a419c8c055a579d60","src/tempfile.rs":"91a697e54aa712e989ee9e2656f828e29bbf59f64d20105cd39d81a9ed5164ed","src/unix/file_traits.rs":"ae9e8f6d854ddd97db77a84baac41da1b4bf8c592ed26132bdb8352cc77f9309","src/unix/mod.rs":"2ddadad987a63dabcda884cf1ae0e7abb17a2bf4043f3a630b78bd7d05fff303","src/unix/tempdir.rs":"64faed8d950f3cdee433aa14a65e4526539b8060e1951f30d0db444d465dd990","src/unix/terminal.rs":"8ed3dbd6e8c895ffb63ee77b206e3a7653b77e0adc8cc961e1185edf8fab2cf2"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f1b897546560c983cad94f0d2f7c69db5623797b49bb45885106eeca7ee3fa87","Android.bp":"768f607147b227490870ed1733e3f022585020ce1c325f209b2102e8b1fea451","CHANGELOG.md":"e28546118bf3142dbd506c9a32ab772ce6cc9bcb1d28883a08a7ae4569d0ec69","CODEOWNERS":"6b86b470572b6ed9d9513cb1ab89ad3540f9dc9b71bfdb101e086218cf1d7965","Cargo.toml":"5777fe4cc2b2f8d2b0b6fb0e6076e70a3d7adff5b058b564e3e5e95bf603324d","LICENSE":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","LICENSE-BSD-3-Clause":"6effa22075f387e9d0cc10ae8787537cbd3708d2f65d5dd618a3531c876d0c9b","METADATA":"85832d2438d3d7dbf9658239a789b6093fc9190d38f9298ea592e55aac06b927","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"518cc7b6f9b2dd9988cc65ebcd5cb752cfa02edb7821166241bca1a1d3dcf077","TEST_MAPPING":"d2a783eed15cfc90355a3d0a8935618cffaf6f28825fc37075c7669a761eaa77","cargo_embargo.json":"8383f171ce56b6d8bae8f0968867dff92c9c54467281dbd9edafec532bf39c21","coverage_config_aarch64.json":"bbaa2bb4fd29ae79d88b0978175e1028d72ca6ad4b2e4b9cdc21db9647e0f741","coverage_config_x86_64.json":"0606cf44d232fcf83c5a8f2352d5f06caeab00f26c9eaaae02fba4a71138b723","patches/fix-unit-tests.patch":"8af2508f96aeb9da01282a318872c33d74e37e6b64efd314c590c30be592d920","src/errno.rs":"5201555397b1671830b1db83cc9ead038c8bbc45e8e81b9bdbf11621e5491707","src/fam.rs":"8c60ee61041904dacf377017b641197db3ebb74c2c80371b303e1d9b0ed551f0","src/lib.rs":"b8ccbda0ad244032bf4b0a916696624b7a4766c97b43937350484b560566f993","src/linux/aio.rs":"8313537e84f47aa0ee256b93f5523b7b0edf276ee99a8a4f2e44ec21dfe0fec7","src/linux/epoll.rs":"82157430d3183d5e75c83848f97ec86616b4bc9295f65ca61ef2af7e48b5d8f4","src/linux/eventfd.rs":"3d1e4de441e3e13b1343cfae0104f46af6aecf47cc479bad62cfa57f6420e63e","src/linux/fallocate.rs":"e11d6afbe1a95f2753ecce5823cb76ffaf98a2a42d6a1f4800c6cc99d74d1402","src/linux/ioctl.rs":"49b0a77f3d1247e07f883d4e31fe7525fd0a4a2e7c9503833eb5d94cb196a0cf","src/linux/mod.rs":"89f1e9feee6c847aa57bd17888de3d4cfff64c161c66dffb47f6c04874f15028","src/linux/poll.rs":"a8d05698ae8d8b813554ade434124f319fd21d9e7abe2c73f1c52489d8e3f7f1","src/linux/seek_hole.rs":"a60abcae7102ae077e98159d16c2dc0792ae102cb77133b4455b7e95c323b38b","src/linux/signal.rs":"7466b709de84442f864ce4ca532af319a4448f87491047dd374460a282c2c1f1","src/linux/sock_ctrl_msg.rs":"c5889578baa3ebcdbbe4e2b1c5cad43e9bbf6561ae0282adffc114559f276199","src/linux/timerfd.rs":"87cf14fcd289f36f73d7ce8b50e870f5acb3ebf05a78195d66d663091c002c09","src/linux/write_zeroes.rs":"1c75bbd6bd68dbf73d2720ea4b58a091b4f1e92b0566116388058435b86cb383","src/metric.rs":"0590df06a689cc90206a4782e05e340c83260a48e14e7634cfb58c7631981f27","src/rand.rs":"290ac842eae9076c3030731ca2ee73028d802c3d990e718c4ec48fe43f411ec5","src/syscall.rs":"d73446b7ddec45a5612e6f09a2bff729751769f17cb54a4a419c8c055a579d60","src/tempfile.rs":"91a697e54aa712e989ee9e2656f828e29bbf59f64d20105cd39d81a9ed5164ed","src/unix/file_traits.rs":"ae9e8f6d854ddd97db77a84baac41da1b4bf8c592ed26132bdb8352cc77f9309","src/unix/mod.rs":"2ddadad987a63dabcda884cf1ae0e7abb17a2bf4043f3a630b78bd7d05fff303","src/unix/tempdir.rs":"64faed8d950f3cdee433aa14a65e4526539b8060e1951f30d0db444d465dd990","src/unix/terminal.rs":"8ed3dbd6e8c895ffb63ee77b206e3a7653b77e0adc8cc961e1185edf8fab2cf2"}}
\ No newline at end of file
diff --git a/crates/vmm-sys-util/Android.bp b/crates/vmm-sys-util/Android.bp
index 087e184..cac0f5d 100644
--- a/crates/vmm-sys-util/Android.bp
+++ b/crates/vmm-sys-util/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/vmm-sys-util/cargo_embargo.json b/crates/vmm-sys-util/cargo_embargo.json
index d9fd27d..465109c 100644
--- a/crates/vmm-sys-util/cargo_embargo.json
+++ b/crates/vmm-sys-util/cargo_embargo.json
@@ -3,5 +3,6 @@
"libbitflags": "libbitflags-1.3.2"
},
"run_cargo": false,
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/vsock/.android-checksum.json b/crates/vsock/.android-checksum.json
index 0d69122..853ae7e 100644
--- a/crates/vsock/.android-checksum.json
+++ b/crates/vsock/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b5695c18c6aa0e4cadd5ee1b83d3e90719757f947c2a958dc86ebbb5d0e40e8b","Android.bp":"1845fd728256ec7fec8acd8657656bb9bea53ba88d36c5366571ad5e508eb1a2","Cargo.toml":"98a94ed7282f4b1efa42fe4fa663d78833b7c4b7681d0371b13403d2c279a623","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"05f645e49711a9aaca25ce4f1b19515940d53559304078e953c62e19f7b28c56","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"84dc84569aee065a1df9e11ddcdbd9d0a2f93a9d8b66e6ba09205f92b3260ec5","README.md":"896883469e3f3d86eb769a1c8423d53cb6b4018cd819617b228dbef72157c27e","TEST_MAPPING":"bbf0770e9cc3ae9d632b9897b0d87fe9603b3ca7b936212c7cecd71bc56e9e7b","cargo_embargo.json":"9a4b9e47683e1a6fc764b578f222c6271932aeb74af7bf217d239d47d3908f30","src/lib.rs":"ae489919b596b55cbd44dc3bdd36b35cd32bbc2af915a759551f0d92004e58e5","tests/vsock.rs":"89afae8772f4d6b7362b8bd1a7a00c4c506ee12e88e28edc5f8b93b39a01d704"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d47499ff33d1cd6484da4f9cb83be4c5ee5a327e6471c5bce9beae6d0880d308","Android.bp":"3a87748b4858c5f6a0fb18d6b80af91030dbc7ff233e52567e2afadcd2cbb949","Cargo.toml":"5833093b2f4f004dbe9ac6fd22fbd33f852c04d89f6f7d19fc90ca0ba74736e2","LICENSE":"08c42ef8d5abac141491221e376dabb1d06b9c6cd0227b5bf479c5fac2f3b8e4","METADATA":"d00a6eea22c2252579d057ca5e1946ec77578ada3bf826cc306fee57eb61cdb4","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"84dc84569aee065a1df9e11ddcdbd9d0a2f93a9d8b66e6ba09205f92b3260ec5","README.md":"896883469e3f3d86eb769a1c8423d53cb6b4018cd819617b228dbef72157c27e","TEST_MAPPING":"bbf0770e9cc3ae9d632b9897b0d87fe9603b3ca7b936212c7cecd71bc56e9e7b","cargo_embargo.json":"9a4b9e47683e1a6fc764b578f222c6271932aeb74af7bf217d239d47d3908f30","src/lib.rs":"2eda0c5d890c8f3d9b5eee3a5df1a47be96d9ab27bc213b15d7f9a5271679cc8","tests/vsock.rs":"89afae8772f4d6b7362b8bd1a7a00c4c506ee12e88e28edc5f8b93b39a01d704"}}
\ No newline at end of file
diff --git a/crates/vsock/.cargo-checksum.json b/crates/vsock/.cargo-checksum.json
index f499b3d..3aed1ff 100644
--- a/crates/vsock/.cargo-checksum.json
+++ b/crates/vsock/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"e87f2641614cec03396dcc7352eb16bbaeb33e2a2e5ebefb49fa12f2e5dd2c7b","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","Makefile":"1180ddede33e53ffaef028f9294b956adce60aa49cf0d7e6d1ee436edc700d0b","README.md":"60ad77b988f42682c287fd78afb9df51795cffffca99e6ce26184e7f8750ceaa","src/lib.rs":"920f5e6f90f8fd4fbcc3bb4d5383984ad55ef0ca1247fbcfea7092c9d2ec970d","tests/vsock.rs":"b0e674aae03d57af33e467bdf1c7ef23ff3ac1f0700cfcac0800b95260a9fa2f"},"package":"f82e291049535877d607cd861b6820eb622538c88853c1c01df72b1dbed4e32d"}
\ No newline at end of file
+{"files":{"Cargo.toml":"909e6f381cdb747d6e33f427622c2f5f60fe0bedc23f388119058ea2c6e68b21","LICENSE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","Makefile":"1180ddede33e53ffaef028f9294b956adce60aa49cf0d7e6d1ee436edc700d0b","README.md":"60ad77b988f42682c287fd78afb9df51795cffffca99e6ce26184e7f8750ceaa","src/lib.rs":"f0da68ebded80edf073dd1919201377b7fcaa2ae07accbe7174309bc0f680b70","tests/vsock.rs":"b0e674aae03d57af33e467bdf1c7ef23ff3ac1f0700cfcac0800b95260a9fa2f"},"package":"4e8b4d00e672f147fc86a09738fadb1445bd1c0a40542378dfb82909deeee688"}
\ No newline at end of file
diff --git a/crates/vsock/Android.bp b/crates/vsock/Android.bp
index 5ff5a16..e2caf89 100644
--- a/crates/vsock/Android.bp
+++ b/crates/vsock/Android.bp
@@ -18,7 +18,7 @@
host_supported: true,
crate_name: "vsock",
cargo_env_compat: true,
- cargo_pkg_version: "0.5.0",
+ cargo_pkg_version: "0.5.1",
crate_root: "src/lib.rs",
edition: "2021",
rustlibs: [
diff --git a/crates/vsock/Cargo.toml b/crates/vsock/Cargo.toml
index 2b4eddb..844eaef 100644
--- a/crates/vsock/Cargo.toml
+++ b/crates/vsock/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "vsock"
-version = "0.5.0"
+version = "0.5.1"
authors = [
"fsyncd",
"rust-vsock",
@@ -25,17 +25,17 @@
repository = "https://github.com/rust-vsock/vsock-rs"
[dependencies.libc]
-version = "0.2.150"
+version = "0.2.158"
[dependencies.nix]
-version = "0.28.0"
+version = "0.29.0"
features = [
"ioctl",
"socket",
]
[dev-dependencies.rand]
-version = "0.8.3"
+version = "0.8.5"
[dev-dependencies.sha2]
-version = ">=0.8.0"
+version = "0.10.8"
diff --git a/crates/vsock/METADATA b/crates/vsock/METADATA
index 2dd28f3..6474aa2 100644
--- a/crates/vsock/METADATA
+++ b/crates/vsock/METADATA
@@ -1,17 +1,17 @@
name: "vsock"
description: "Virtio socket support for Rust"
third_party {
- version: "0.5.0"
+ version: "0.5.1"
license_type: NOTICE
last_upgrade_date {
- year: 2024
- month: 4
- day: 9
+ year: 2025
+ month: 3
+ day: 19
}
homepage: "https://crates.io/crates/vsock"
identifier {
type: "Archive"
- value: "https://static.crates.io/crates/vsock/vsock-0.5.0.crate"
- version: "0.5.0"
+ value: "https://static.crates.io/crates/vsock/vsock-0.5.1.crate"
+ version: "0.5.1"
}
}
diff --git a/crates/vsock/src/lib.rs b/crates/vsock/src/lib.rs
index 99fcbb9..74c4772 100644
--- a/crates/vsock/src/lib.rs
+++ b/crates/vsock/src/lib.rs
@@ -18,8 +18,8 @@
//! Virtio socket support for Rust.
use libc::{
- accept4, ioctl, sa_family_t, sockaddr, sockaddr_vm, socklen_t, suseconds_t, timeval, AF_VSOCK,
- FIONBIO, SOCK_CLOEXEC,
+ accept, fcntl, ioctl, sa_family_t, sockaddr, sockaddr_vm, socklen_t, suseconds_t, timeval,
+ AF_VSOCK, FD_CLOEXEC, FIONBIO, F_SETFD,
};
use nix::{
ioctl_read_bad,
@@ -28,6 +28,7 @@
sockopt::{ReceiveTimeout, SendTimeout, SocketError},
AddressFamily, Backlog, GetSockOpt, MsgFlags, SetSockOpt, SockFlag, SockType,
},
+ unistd::close,
};
use std::mem::size_of;
use std::net::Shutdown;
@@ -39,16 +40,17 @@
os::fd::{AsFd, BorrowedFd},
};
-pub use libc::{VMADDR_CID_ANY, VMADDR_CID_HOST, VMADDR_CID_HYPERVISOR, VMADDR_CID_LOCAL};
+#[cfg(any(target_os = "linux", target_os = "android"))]
+pub use libc::VMADDR_CID_LOCAL;
+pub use libc::{VMADDR_CID_ANY, VMADDR_CID_HOST, VMADDR_CID_HYPERVISOR};
pub use nix::sys::socket::{SockaddrLike, VsockAddr};
fn new_socket() -> Result<OwnedFd> {
- Ok(socket(
- AddressFamily::Vsock,
- SockType::Stream,
- SockFlag::SOCK_CLOEXEC,
- None,
- )?)
+ #[cfg(not(target_os = "macos"))]
+ let flags = SockFlag::SOCK_CLOEXEC;
+ #[cfg(target_os = "macos")]
+ let flags = SockFlag::empty();
+ Ok(socket(AddressFamily::Vsock, SockType::Stream, flags, None)?)
}
/// An iterator that infinitely accepts connections on a VsockListener.
@@ -115,18 +117,24 @@
svm_reserved1: 0,
svm_port: 0,
svm_cid: 0,
+ #[cfg(not(target_os = "macos"))]
svm_zero: [0u8; 4],
+ #[cfg(target_os = "macos")]
+ svm_len: size_of::<sockaddr_vm>() as u8,
};
let mut vsock_addr_len = size_of::<sockaddr_vm>() as socklen_t;
let socket = unsafe {
- accept4(
+ accept(
self.socket.as_raw_fd(),
&mut vsock_addr as *mut _ as *mut sockaddr,
&mut vsock_addr_len,
- SOCK_CLOEXEC,
)
};
if socket < 0 {
+ return Err(Error::last_os_error());
+ }
+ if unsafe { fcntl(socket, F_SETFD, FD_CLOEXEC) } < 0 {
+ close(socket)?;
Err(Error::last_os_error())
} else {
Ok((
@@ -285,8 +293,8 @@
// https://github.com/rust-lang/libc/issues/1848
#[cfg_attr(target_env = "musl", allow(deprecated))]
- let secs = if dur.as_secs() > libc::time_t::max_value() as u64 {
- libc::time_t::max_value()
+ let secs = if dur.as_secs() > libc::time_t::MAX as u64 {
+ libc::time_t::MAX
} else {
dur.as_secs() as libc::time_t
};
@@ -331,7 +339,11 @@
impl Write for &VsockStream {
fn write(&mut self, buf: &[u8]) -> Result<usize> {
- Ok(send(self.socket.as_raw_fd(), buf, MsgFlags::MSG_NOSIGNAL)?)
+ #[cfg(not(target_os = "macos"))]
+ let flags = MsgFlags::MSG_NOSIGNAL;
+ #[cfg(target_os = "macos")]
+ let flags = MsgFlags::empty();
+ Ok(send(self.socket.as_raw_fd(), buf, flags)?)
}
fn flush(&mut self) -> Result<()> {
diff --git a/crates/vsprintf/.android-checksum.json b/crates/vsprintf/.android-checksum.json
index 1e7a5a4..87011e6 100644
--- a/crates/vsprintf/.android-checksum.json
+++ b/crates/vsprintf/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6f074ea6787c2683365dcc046e42d19a29b6803d745ff8cb04485e5d293ecc8d","Android.bp":"7c537644c19df1aa5e8241f55e9342721113950af90d00421683468b1f38148a","Cargo.toml":"66f5798a7ee07f2504ed3e23a26c868132c9738a89fed102f661610ed178d272","LICENSE":"482266bc37f10d57bef1f2ae6572d4015c429ab5518a04797e83fcb9bae6217b","METADATA":"3f968d1fb75194c325af2c360e269d63436936a6aa1d06f973685d57835297e5","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e468c27e2f0d7cf0f6739bd7a37258bf9c4086719a23c27869642b802069b901","build.rs":"c22b1d6ae2a87d5e09d3b44918c2bfc865ac8ac493c660ec2f734e033d97acec","cargo_embargo.json":"368c52491d18505a33ab3ac2b2171e6ee70550dca768d49c0512a9b4402617ca","patches/Android.bp.patch":"7e8c9c877de696947d0756ac57ed944c9bdf85db3e1c117c2d2560f9d609108f","src/headers.h":"51eccbf55a54a8b69327dd1d41e5476b8f7f1442c48ff226c2e0ef9bbc43c008","src/lib.c":"8f5fbfe0ef70e3e28daddcc7bea44ffafc881638163830fdfd1abf2a0f1f7070","src/lib.rs":"031bd1243192999c3bf91d9e0e5db343f7121015fdeadf6e347edfbd9918ca59","wrapper.bp.fragment":"52591e2a402c9e5bcf9bd317eec674873099762d42fa77e22743ab174d88f1da"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6f074ea6787c2683365dcc046e42d19a29b6803d745ff8cb04485e5d293ecc8d","Android.bp":"34015ede8eeeb03e122fd1eff7cc86d24daf444b96533bc5c68f2e9c0040a480","Cargo.toml":"66f5798a7ee07f2504ed3e23a26c868132c9738a89fed102f661610ed178d272","LICENSE":"482266bc37f10d57bef1f2ae6572d4015c429ab5518a04797e83fcb9bae6217b","METADATA":"3f968d1fb75194c325af2c360e269d63436936a6aa1d06f973685d57835297e5","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"e468c27e2f0d7cf0f6739bd7a37258bf9c4086719a23c27869642b802069b901","build.rs":"c22b1d6ae2a87d5e09d3b44918c2bfc865ac8ac493c660ec2f734e033d97acec","cargo_embargo.json":"50bfc2c50a5f3db4802aaae7e472486309432247b61b88ca34c8d9276e9d5e5f","patches/Android.bp.patch":"7e8c9c877de696947d0756ac57ed944c9bdf85db3e1c117c2d2560f9d609108f","src/headers.h":"51eccbf55a54a8b69327dd1d41e5476b8f7f1442c48ff226c2e0ef9bbc43c008","src/lib.c":"8f5fbfe0ef70e3e28daddcc7bea44ffafc881638163830fdfd1abf2a0f1f7070","src/lib.rs":"031bd1243192999c3bf91d9e0e5db343f7121015fdeadf6e347edfbd9918ca59","wrapper.bp.fragment":"52591e2a402c9e5bcf9bd317eec674873099762d42fa77e22743ab174d88f1da"}}
\ No newline at end of file
diff --git a/crates/vsprintf/Android.bp b/crates/vsprintf/Android.bp
index 85c7e59..fe3d9e2 100644
--- a/crates/vsprintf/Android.bp
+++ b/crates/vsprintf/Android.bp
@@ -29,6 +29,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: ["//external/rust/android-crates-io/crates/libbpf-rs"],
}
diff --git a/crates/vsprintf/cargo_embargo.json b/crates/vsprintf/cargo_embargo.json
index 67bcded..a329239 100644
--- a/crates/vsprintf/cargo_embargo.json
+++ b/crates/vsprintf/cargo_embargo.json
@@ -10,5 +10,6 @@
"libvsprintf": [
"//external/rust/android-crates-io/crates/libbpf-rs"
]
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/walkdir/.android-checksum.json b/crates/walkdir/.android-checksum.json
index 893a11f..e371091 100644
--- a/crates/walkdir/.android-checksum.json
+++ b/crates/walkdir/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"06b407554ac25bacf315f36c6d2d1261bebef0c5f49f9e8608a0b029911b277f","Android.bp":"79806f1392598fe9070b8d7be90bc1d37961f2d2b227b1123354ec9819685b61","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"98749c7f0765de83546dde1a9389103407d650b203bc0d9e398ac946380960eb","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"95a9cac17db07ef4dc1dc2e1641b7f085082270f3351c76a7138633bc235a560","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"09b1ad0484b903768e09a03bb4c5c8764db522b4f1a2e30eb2b157fd56fcbe2f","TEST_MAPPING":"1f9b9771c8673972e55e57e2c699bf35595a81973c44b06fcaf8c27826ab759f","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","compare/nftw.c":"e36640db4224e0a4475b9556f1a37fe8ab3b05c3a51271fe6567c6794987adcc","compare/walk.py":"b27b6447ef9e8a7f4d63cf86afd5ae5ab75bead7c2cab51a1506b70b2794d1c2","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/dent.rs":"ea08c138ac02575dcf956c2113984165b62324db7377c952ab675ea5154106b9","src/error.rs":"cc0baea895cbc2e74a4eca3cd2537e0bf5a301523690df7592e78423430ff58d","src/lib.rs":"14e04ed13af2b4348377433b3deb003cde8dc6c319e0d7b276830772729234de","src/tests/mod.rs":"2a91ba0e31d6cfeaee9d9320b7ba1fb5b13be3ee91d6c8a937dbe3e642105e1b","src/tests/recursive.rs":"c5d88ebc59d5680ff9ff088bd19d7d2e70880fbceb8a0962b6a7d223744cbc63","src/tests/util.rs":"73923062a0301a04a3159c093135ffce8c37f994e68636b7158fc02d5d073fc3","src/util.rs":"7d699e89bfa488ff74125f2be0a0f9beb78ed52959aee72521dd01fa528ebe94"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"06b407554ac25bacf315f36c6d2d1261bebef0c5f49f9e8608a0b029911b277f","Android.bp":"f24903f98d57c3b68f6bc734ef0e81a32de90a7f410a7f8dc5a5376d2a1367a6","COPYING":"7e2095b6d17d2d524a553ce879990287b4ca5be12c3ab759139f32ed920bd01e","Cargo.toml":"98749c7f0765de83546dde1a9389103407d650b203bc0d9e398ac946380960eb","LICENSE":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","LICENSE-MIT":"e477ec620ffb08af8bae12ebe7771ec557bdf198ffd6015add93d41b75b64850","METADATA":"95a9cac17db07ef4dc1dc2e1641b7f085082270f3351c76a7138633bc235a560","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"09b1ad0484b903768e09a03bb4c5c8764db522b4f1a2e30eb2b157fd56fcbe2f","TEST_MAPPING":"1f9b9771c8673972e55e57e2c699bf35595a81973c44b06fcaf8c27826ab759f","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","compare/nftw.c":"e36640db4224e0a4475b9556f1a37fe8ab3b05c3a51271fe6567c6794987adcc","compare/walk.py":"b27b6447ef9e8a7f4d63cf86afd5ae5ab75bead7c2cab51a1506b70b2794d1c2","rustfmt.toml":"180b0b088558e7982d755dba10aa4414920ed11c78cd96063404b84d690fb86f","src/dent.rs":"ea08c138ac02575dcf956c2113984165b62324db7377c952ab675ea5154106b9","src/error.rs":"cc0baea895cbc2e74a4eca3cd2537e0bf5a301523690df7592e78423430ff58d","src/lib.rs":"14e04ed13af2b4348377433b3deb003cde8dc6c319e0d7b276830772729234de","src/tests/mod.rs":"2a91ba0e31d6cfeaee9d9320b7ba1fb5b13be3ee91d6c8a937dbe3e642105e1b","src/tests/recursive.rs":"c5d88ebc59d5680ff9ff088bd19d7d2e70880fbceb8a0962b6a7d223744cbc63","src/tests/util.rs":"73923062a0301a04a3159c093135ffce8c37f994e68636b7158fc02d5d073fc3","src/util.rs":"7d699e89bfa488ff74125f2be0a0f9beb78ed52959aee72521dd01fa528ebe94"}}
\ No newline at end of file
diff --git a/crates/walkdir/Android.bp b/crates/walkdir/Android.bp
index b69abc5..6a23aae 100644
--- a/crates/walkdir/Android.bp
+++ b/crates/walkdir/Android.bp
@@ -28,4 +28,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/walkdir/cargo_embargo.json b/crates/walkdir/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/walkdir/cargo_embargo.json
+++ b/crates/walkdir/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/weak-table/.android-checksum.json b/crates/weak-table/.android-checksum.json
index c1015bd..a0d6e64 100644
--- a/crates/weak-table/.android-checksum.json
+++ b/crates/weak-table/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"95047a484ec21fa8ec55476edda8ee44fd3e335f8b70b8776d03e7cec94616f3","Android.bp":"333ecc8876a147af94e2836efc85fa224f1b71aae48871ff5a75e5b9eeb4506e","CHANGELOG.md":"0da2de2a91e5da41f1a4c8d9d9a7062e31d463614395095bb1f55e25b6d9d396","CMakeLists.txt":"7ec05d38905156332f9ea1d6c7ba0b1da4dad1a9724faa3d35078afccc81e4b9","Cargo.toml":"9141d7c43488817eb23b394ab4bc3a85292a5848e43e97e733fc25785122dd45","LICENSE":"4ad6c1d7355e79dbb8e1baadf57d1b88c90dd9cc24167a7d2884d5105e05c0c2","METADATA":"c7f13d062afe05e76c39d13e1c451d2e2ddc77a5be4739924baf29dcac27c18b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"9a910c2a72adc8fdb0479062ccc17aa9b0a14bc1311b8819191b7070caf08f61","README.md":"bd959a39af2d0925adace698130b834ab7e6e3b1ae6828565333e246755869a1","cargo_embargo.json":"aa45a963da01d3f018be316cd5b7646a5b413ce2611c5218f2914d2e8a9efd0e","release.toml":"1cb38c6b7e91a3fbeec1780f9485761769eefb5acb1dcf951b7d948599b86cfe","src/by_ptr.rs":"9ada3ff1ecd40fa77f5bdadd20c66f927e0d013604a2d4f67076ffcfbf0a41b5","src/compat.rs":"629272527168188dd656d370e4c3157730f7fb19957e66f6bf49472723e69636","src/lib.rs":"4bf4c34c3940c89d06650d44c9e225085393088370108b7af3ed61f9ae31f35f","src/ptr_weak_hash_set.rs":"68833953c0a23470ee9a035e92400f4fd53480fcf2761896ebc0e678a4b29279","src/ptr_weak_key_hash_map.rs":"bff2fb3909cc9fac99cdca772598c862e2a34a4df299575cca959964004349e7","src/ptr_weak_weak_hash_map.rs":"9098cd42f8c584bf44becce954734cbd2a477aa4d1d23b01c142f8bf5c4832ff","src/size_policy.rs":"f5a0024319883e7eadc2df91735af966c0dce99ba04a544c81d5e772040b0a4d","src/traits.rs":"d6a1757e72b4319e74a0f54f177e648317d9770d52782ee011a3bf55b477d65f","src/util.rs":"9f9973a3cf0bc6268eec801e89d56484a7eb49d9673b3f4b5c71c75f0226aa6c","src/weak_hash_set.rs":"62ebe00f044393bbc648dfb76dd6109fa3ac0edb50db66a2cff77184b76b05a5","src/weak_key_hash_map.rs":"9e58e0be91f58a60faa3776e397c4ee700a777bbde0ca50405c2b84d69ccd05d","src/weak_value_hash_map.rs":"3009fafdd6e771870fb58f33ea73b7bb4313858294422734cecb1dfc9d6ae601","src/weak_weak_hash_map.rs":"6cfb63cf5a70e08a5d0d95b760fe253c7f987626378ac8796f8f0f9616b6924b","tests/symbols.rs":"81b7dedd001747bfe7a1dc681deece2d9f17f8605e1b7ae471f1bc87445d70e4","tests/weak_key_hash_map.rs":"f1ab07016c1a5ec79ffcf2b241aefb069c38167354b0b0eeb48ef40cd7b9c05b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"95047a484ec21fa8ec55476edda8ee44fd3e335f8b70b8776d03e7cec94616f3","Android.bp":"e516e8cb7efdff4e1e314c7949ac408917adac669da81117e286f4bba789f7ab","CHANGELOG.md":"0da2de2a91e5da41f1a4c8d9d9a7062e31d463614395095bb1f55e25b6d9d396","CMakeLists.txt":"7ec05d38905156332f9ea1d6c7ba0b1da4dad1a9724faa3d35078afccc81e4b9","Cargo.toml":"9141d7c43488817eb23b394ab4bc3a85292a5848e43e97e733fc25785122dd45","LICENSE":"4ad6c1d7355e79dbb8e1baadf57d1b88c90dd9cc24167a7d2884d5105e05c0c2","METADATA":"c7f13d062afe05e76c39d13e1c451d2e2ddc77a5be4739924baf29dcac27c18b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","Makefile":"9a910c2a72adc8fdb0479062ccc17aa9b0a14bc1311b8819191b7070caf08f61","README.md":"bd959a39af2d0925adace698130b834ab7e6e3b1ae6828565333e246755869a1","cargo_embargo.json":"c111f6b6fe8b0956cba97a452d867dc8c2c228ec4fe42ae45c8a6aac3286bd8d","release.toml":"1cb38c6b7e91a3fbeec1780f9485761769eefb5acb1dcf951b7d948599b86cfe","src/by_ptr.rs":"9ada3ff1ecd40fa77f5bdadd20c66f927e0d013604a2d4f67076ffcfbf0a41b5","src/compat.rs":"629272527168188dd656d370e4c3157730f7fb19957e66f6bf49472723e69636","src/lib.rs":"4bf4c34c3940c89d06650d44c9e225085393088370108b7af3ed61f9ae31f35f","src/ptr_weak_hash_set.rs":"68833953c0a23470ee9a035e92400f4fd53480fcf2761896ebc0e678a4b29279","src/ptr_weak_key_hash_map.rs":"bff2fb3909cc9fac99cdca772598c862e2a34a4df299575cca959964004349e7","src/ptr_weak_weak_hash_map.rs":"9098cd42f8c584bf44becce954734cbd2a477aa4d1d23b01c142f8bf5c4832ff","src/size_policy.rs":"f5a0024319883e7eadc2df91735af966c0dce99ba04a544c81d5e772040b0a4d","src/traits.rs":"d6a1757e72b4319e74a0f54f177e648317d9770d52782ee011a3bf55b477d65f","src/util.rs":"9f9973a3cf0bc6268eec801e89d56484a7eb49d9673b3f4b5c71c75f0226aa6c","src/weak_hash_set.rs":"62ebe00f044393bbc648dfb76dd6109fa3ac0edb50db66a2cff77184b76b05a5","src/weak_key_hash_map.rs":"9e58e0be91f58a60faa3776e397c4ee700a777bbde0ca50405c2b84d69ccd05d","src/weak_value_hash_map.rs":"3009fafdd6e771870fb58f33ea73b7bb4313858294422734cecb1dfc9d6ae601","src/weak_weak_hash_map.rs":"6cfb63cf5a70e08a5d0d95b760fe253c7f987626378ac8796f8f0f9616b6924b","tests/symbols.rs":"81b7dedd001747bfe7a1dc681deece2d9f17f8605e1b7ae471f1bc87445d70e4","tests/weak_key_hash_map.rs":"f1ab07016c1a5ec79ffcf2b241aefb069c38167354b0b0eeb48ef40cd7b9c05b"}}
\ No newline at end of file
diff --git a/crates/weak-table/Android.bp b/crates/weak-table/Android.bp
index 75c197a..acc6862 100644
--- a/crates/weak-table/Android.bp
+++ b/crates/weak-table/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/weak-table/cargo_embargo.json b/crates/weak-table/cargo_embargo.json
index cb908d7..b6c35c7 100644
--- a/crates/weak-table/cargo_embargo.json
+++ b/crates/weak-table/cargo_embargo.json
@@ -1,3 +1,4 @@
{
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/webpki/.android-checksum.json b/crates/webpki/.android-checksum.json
index 6882499..20858dc 100644
--- a/crates/webpki/.android-checksum.json
+++ b/crates/webpki/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"2157a25a3fff366a3c6375d62d33e92019993775175de57fe29b34411c2881a0","Android.bp":"9a3bd4d306e4bc582f7ee122a30a66d84181f55848ec02dc0f432558394ea647","Cargo.toml":"2f668297ec21cc90ffe869f188edcce3f46f6524356b12b5a34fc01889babadf","LICENSE":"7069c9179a26a922a5f0f74c8d210613545a3107bf15d8e6beeffc2e920574b0","METADATA":"27a4d593d52b60e7f2af927514eff0bffbb8f7822097dfd20541d07050882cc0","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddf34e0a936195d4f4ce8c03071042a4323aba29494b38c15a7796af3112d728","TEST_MAPPING":"8a829c3da93cab3cf6635af967855b7282ac7f68c74f2cd3ab96a120908bb551","cargo_embargo.json":"f75b465b495656c9b24594b98d9453ad3ec7c59135c9253511ea8581f5f78f0d","src/budget.rs":"c92fd8f50c166aef948700c4cc3ff9debc9e3efcd6a0132d1a34b300dc0a23df","src/calendar.rs":"916b55ca018f61ad460a15af6f7fcbef1e5e92c8af0709757e77f2bf1b7aa6f3","src/cert.rs":"076ed7f9fb1292bfcb95be25cef7f67faad36d837d00d44e5a0779cbbfab00a2","src/data/README.md":"32d9f76365a81310f40c9a75574554c54a3233a459dea51736c0dac81eb36997","src/data/alg-ecdsa-p256.der":"d8d4460ed4b72d8ceb3088c5ef6db434bcbc6ab81ecc5cc165b3d35efb269f10","src/data/alg-ecdsa-p384.der":"164733b4d5714df62307b8ef433e45a9a9d8a74f7313c11edcfa3031c5b64d8f","src/data/alg-ecdsa-sha256.der":"5171360d5c6f6ae3dcbf800e277d26a714244516b2d4841d435bbd52160ef43a","src/data/alg-ecdsa-sha384.der":"41cfb49a236638da2a01648e1f192a4f0ca5823c3b37952930f4278764d4a7ad","src/data/alg-ed25519.der":"95a4714ceb917d09e5e6143c6ac96b0f6f40edff9281749fa3c98824e7e8c415","src/data/alg-rsa-encryption.der":"09c2e14354a83703ce5e8aedf311fcaa3704fb7a86a64d05a57dcff93849848e","src/data/alg-rsa-pkcs1-sha256.der":"4ab1570f26e4ec4b64db6235e7f1956450954784f63e50e4384e630b86fafdca","src/data/alg-rsa-pkcs1-sha384.der":"77739ad15d8c8644cf3d9a2c8fe999bed7d486dfd9a92e79aa6fd75caef83b3b","src/data/alg-rsa-pkcs1-sha512.der":"e216ca9e00613dad16076adf08e3e25c937ea464b68c071ae61badfbc18e1c9d","src/data/alg-rsa-pss-sha256.der":"ad0e97684b2cd542029f5528336036150e92ebe933006c9bc081fd8906a71951","src/data/alg-rsa-pss-sha384.der":"a359bc1314fb9ea59d5c4c3e674eb65f72c055b6b1e0ed0b67065076a1f64f70","src/data/alg-rsa-pss-sha512.der":"6ea2196c3f13987eeef6cd8d6b0609f9237735cc67559e1319937d866ddcf236","src/der.rs":"d7e4c26a88dbbda0fb742f9b51124625cf421803be206b07d11d5beef0ab7532","src/end_entity.rs":"8f5f8b477ac47b9d346a5783409e05ab567ac8c8b50ced380aa82afbbd71bb97","src/error.rs":"8d66f1977cc77df053e6bfa4a1ada7dc1dad318ad301e6be30838320cbe9a7ee","src/lib.rs":"a54ec9a090578b5405ea32bea3e07f77ca83f1e436dab3f086139e64a21dc2cc","src/name.rs":"79181174a1d594e956ce37441f675cdc4dc3412566806fda1aa33ad857de7022","src/name/dns_name.rs":"4ca8978b6b553e0f573ff0966334b371b2480ec1a2b10e947e9bb86a2b662f81","src/name/ip_address.rs":"0454a59ff38c4d0f64371a0a7662422337be7e4d4243d3093b1b5bcb1e5db14e","src/name/verify.rs":"a9c32acfdb3fd7a57597650f08e7dda8d39b68f6a6856f990b1b05e18c1f9263","src/signed_data.rs":"fa2fc72cadd73abcbb386753409410624b5f9855cb2cba4da0e3889567dc8eff","src/time.rs":"10e6666ee72f8a05a5a2201e970ce4b61a3049a985fbc4a10c38f5da5aa19c74","src/trust_anchor.rs":"a37b170ef22d3044d7a6b7918a1595c0896cbe23d5bb361aff2c0ff1816d1eb0","src/verify_cert.rs":"2b9015bc2f26221e5a4fffb18ff093d04e5367c3d61b8a71009b024468c34a66","tests/dns_name_tests.rs":"75de304eb0012b5837130685a288cde6aaa3f76b6bf7cb9caad3a8b97b3d9640","tests/ed25519/ca.der":"e964b6289fbcea7b59e439dc5cac81069d1458be5d842ca4c6efb19709432dc7","tests/ed25519/ee.der":"a8444a18edc28d1a69c07335b0f8c62f1dab2b2cf4e41421b0c69e86a78891b3","tests/integration.rs":"f0b09b77ba8f81601c073ae5e2f8359db46c4fb4fec78e25c940c28682c96137","tests/misc/serial_neg.der":"12919c7d67791a0e098e1ee587dc9770231eda6d0da2d512770a0a06b5ef639a","tests/misc/serial_zero.der":"9d9ab2b35ef62a7eab8471a35399601cbb9a171595a686f153de6c7d62dc6d07","tests/netflix/ca.der":"9aed872dacd48041cbdc6cfaf6003246e5a0f127f8213a8a5ab237e84e3cab7a","tests/netflix/ee.der":"60a089e5974333839ee06e2cbd0208bcd33e10770bfff4f7d3c7ec4fd9f2da58","tests/netflix/inter.der":"80d457355005ea5b51dd88d83a196c84b6208f71aeecac6349fde52a6678c861","third-party/bettertls/LICENSE":"a69c036bc79a221e0abf26f032c2f80ba4ed9cf7e1d0f8361db03d1a0beb2c80","third-party/bettertls/README.md":"6f69c6e3eae7ae5a6845ace38dd6d913eec0c76a6d7ad2c6045b2cc70fcb45f8","third-party/chromium/LICENSE":"e3baa6bb0da277db5fb2e2726ecde1584731b0f7643835f2cea11b8888419b73","third-party/chromium/data/verify_signed_data/README":"5db9297cf9c64f6edacd05117e3a33517f3344da3c8767e450d8493197772b81","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem":"47f95a68581a1c3677fa1bb33c75ef35c374d7f4168a5822aa6b56ca55d16a52","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem":"b07ada217ec8a942c82560924491965772cd3728bb650b56d523046cbed4ef1a","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem":"9577bfad6e2f97779a954d49aa46fa199410512bfcd8bc5520d68b81b5ccc529","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem":"bed6988102bf185274cd6b7f6d07d4f1341ed07e8fd6959f5b07266f1de66cf7","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem":"70299539eabf0789e465c731aca32010fbdebf535dd905d8c8cfa3edd9b8258f","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem":"59009056bba352c1374e3ce135111bcf173d0ca91c3d1f7ac90b6c65ab4fd76e","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem":"f2bec600fd810d694e00f2baba1c66108af8ef19de509c2ea7f59d6d4914c662","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem":"4202c4fbc4c279c3a9dc5b357ef7e0eef4ab841e8ba8a68be5ffe8e342f685b2","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem":"599d451a3b63142a790c39ca49c448ab99207591f2ac832f59bd989a2dd606b8","third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem":"96982e3ac708d476aa7a0405fb46a937d89be8683eadcf2f19e62205c6d20f4f","third-party/chromium/data/verify_signed_data/ours/make-pss.py":"179a509091f121aa05edffa9ebc5009bc7fa6afbe10bf056d666a08f3fcb1573","third-party/chromium/data/verify_signed_data/ours/priv.pem":"2d24496cf293967962d9194889816caa49f47862d695c8b2173d877952cb1add","third-party/chromium/data/verify_signed_data/ours/pub.pem":"0e56613bcb253f3d7c922b06be9b2386012ed55df82166319f70a5628512716d","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem":"9336eb2f4a3ebb031175418657b417394ea076cd6e01abccf51d8a8dd6be418b","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem":"4a3b5af1ef67caa11ea1eab98f752c13eee5d1470eb98d28a5449026ade3d5d0","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem":"5d8453952c47bb319be069cd41130b28be9c6aeaaf0900118e494dfb19eb5ef6","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem":"a48fdac0c339c2e5ad9152c8246f8a53c417dcef21a6fb6efc1140b1ef456659","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem":"3347d299ce8ec7a6bb569371e39906f5e595e03db2c9304eb090aa53f4e5a0eb","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem":"4bec6dc3e17225438a96b466b1819fc4b873bce06fa811d07256080ad0d994b3","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem":"f853037e70decdfaf9eb4324d5fb8bf5f3b809f7b62eda663e427b4ca20c4340","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem":"3a2d5e30512af718f7069ab86b815e67d7eb7f8c20728e1413505d9122849558","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem":"e914ae3f29a4891047a11c3561789cd6aee5ca90606693cb658adae45c496452","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem":"b7e5a98e2e45c9114195d3b06261563918ee4c1c69b941421f7cf0d1794f717e","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem":"63f12e3419bc354854268c2f511c45b548c5a4d1d187ea61171d76305fe1fd23","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem":"ea5c7330ba69894a137db319383b00814ba3f16af83067e88e9f323dbacd91c0","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem":"e1070a0f2916a83abe362dc3fa7930b834529515aeea2ae70af1024005ed698e","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem":"dc2b4e38551f86b1aab28fd6fff609229e7dc3645a5d4d3a5d038306eb1a9de5","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem":"03a655d2346017a95b6f4833b3b012571fb528355b09178d01a7508ed6d3e26c","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem":"f271fae71d8d1bfd9143650c15bfe2762273258c42439f732f4885809092b2ff","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem":"b8ec12aed7066ff652fb58479e988cdd7715176bf3ccc1bc271ecb89bf0bfdac","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem":"6cdba2bcc874c7473202c8063b61223aa51c8510be968ea8e0ddbbe9c309ee49","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem":"bc2da3e67e40f2bb7e031f9b211ddb526a8a3da36867a39d12391b1e7ce19016","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem":"33eaef74f3018691aa0ce316e030a55bba0910e241389cea4e6024b52ca4cc7a","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem":"a4803fa543b63c98cc134e817c5633ab4b2afe417f8c14cbf0d246fb10fd1ab0","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem":"42344f3decb0f758e8715eba500e43f6ab78825386652ec03d60ae2867009fd1","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem":"6b5acde62f7e91827ddc8c4e3912891e1b9d7221ace3d864bf16df27e1781b03","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem":"d9690c88c4c52b6ec115c6d1258665642f628ec5f2b4feb84600a82b0fae1126","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem":"3f619cfd3bf675c294ce08ba3a693af4c6371b7936d444a2e76f892077ff6d1e","third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem":"128d245f206a7da0f5b6ea532e7f34179c62953dbb182552be7c4f87e94eda02","third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem":"2a4386675270d20b979063c93b162f9db72ed5463cf0c072d0b7e51dde807e4f"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"2157a25a3fff366a3c6375d62d33e92019993775175de57fe29b34411c2881a0","Android.bp":"f9aaf26384b4b520e3dc0228cef5a83e14f374b35349812f7aeb20e28a26508a","Cargo.toml":"2f668297ec21cc90ffe869f188edcce3f46f6524356b12b5a34fc01889babadf","LICENSE":"7069c9179a26a922a5f0f74c8d210613545a3107bf15d8e6beeffc2e920574b0","METADATA":"27a4d593d52b60e7f2af927514eff0bffbb8f7822097dfd20541d07050882cc0","MODULE_LICENSE_BSD":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","MODULE_LICENSE_ISC":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ddf34e0a936195d4f4ce8c03071042a4323aba29494b38c15a7796af3112d728","TEST_MAPPING":"8a829c3da93cab3cf6635af967855b7282ac7f68c74f2cd3ab96a120908bb551","cargo_embargo.json":"af8ba382f594f30ee16250aa2e28d80e7b946f9e0a1ff5a2eb0efa200074adb2","src/budget.rs":"c92fd8f50c166aef948700c4cc3ff9debc9e3efcd6a0132d1a34b300dc0a23df","src/calendar.rs":"916b55ca018f61ad460a15af6f7fcbef1e5e92c8af0709757e77f2bf1b7aa6f3","src/cert.rs":"076ed7f9fb1292bfcb95be25cef7f67faad36d837d00d44e5a0779cbbfab00a2","src/data/README.md":"32d9f76365a81310f40c9a75574554c54a3233a459dea51736c0dac81eb36997","src/data/alg-ecdsa-p256.der":"d8d4460ed4b72d8ceb3088c5ef6db434bcbc6ab81ecc5cc165b3d35efb269f10","src/data/alg-ecdsa-p384.der":"164733b4d5714df62307b8ef433e45a9a9d8a74f7313c11edcfa3031c5b64d8f","src/data/alg-ecdsa-sha256.der":"5171360d5c6f6ae3dcbf800e277d26a714244516b2d4841d435bbd52160ef43a","src/data/alg-ecdsa-sha384.der":"41cfb49a236638da2a01648e1f192a4f0ca5823c3b37952930f4278764d4a7ad","src/data/alg-ed25519.der":"95a4714ceb917d09e5e6143c6ac96b0f6f40edff9281749fa3c98824e7e8c415","src/data/alg-rsa-encryption.der":"09c2e14354a83703ce5e8aedf311fcaa3704fb7a86a64d05a57dcff93849848e","src/data/alg-rsa-pkcs1-sha256.der":"4ab1570f26e4ec4b64db6235e7f1956450954784f63e50e4384e630b86fafdca","src/data/alg-rsa-pkcs1-sha384.der":"77739ad15d8c8644cf3d9a2c8fe999bed7d486dfd9a92e79aa6fd75caef83b3b","src/data/alg-rsa-pkcs1-sha512.der":"e216ca9e00613dad16076adf08e3e25c937ea464b68c071ae61badfbc18e1c9d","src/data/alg-rsa-pss-sha256.der":"ad0e97684b2cd542029f5528336036150e92ebe933006c9bc081fd8906a71951","src/data/alg-rsa-pss-sha384.der":"a359bc1314fb9ea59d5c4c3e674eb65f72c055b6b1e0ed0b67065076a1f64f70","src/data/alg-rsa-pss-sha512.der":"6ea2196c3f13987eeef6cd8d6b0609f9237735cc67559e1319937d866ddcf236","src/der.rs":"d7e4c26a88dbbda0fb742f9b51124625cf421803be206b07d11d5beef0ab7532","src/end_entity.rs":"8f5f8b477ac47b9d346a5783409e05ab567ac8c8b50ced380aa82afbbd71bb97","src/error.rs":"8d66f1977cc77df053e6bfa4a1ada7dc1dad318ad301e6be30838320cbe9a7ee","src/lib.rs":"a54ec9a090578b5405ea32bea3e07f77ca83f1e436dab3f086139e64a21dc2cc","src/name.rs":"79181174a1d594e956ce37441f675cdc4dc3412566806fda1aa33ad857de7022","src/name/dns_name.rs":"4ca8978b6b553e0f573ff0966334b371b2480ec1a2b10e947e9bb86a2b662f81","src/name/ip_address.rs":"0454a59ff38c4d0f64371a0a7662422337be7e4d4243d3093b1b5bcb1e5db14e","src/name/verify.rs":"a9c32acfdb3fd7a57597650f08e7dda8d39b68f6a6856f990b1b05e18c1f9263","src/signed_data.rs":"fa2fc72cadd73abcbb386753409410624b5f9855cb2cba4da0e3889567dc8eff","src/time.rs":"10e6666ee72f8a05a5a2201e970ce4b61a3049a985fbc4a10c38f5da5aa19c74","src/trust_anchor.rs":"a37b170ef22d3044d7a6b7918a1595c0896cbe23d5bb361aff2c0ff1816d1eb0","src/verify_cert.rs":"2b9015bc2f26221e5a4fffb18ff093d04e5367c3d61b8a71009b024468c34a66","tests/dns_name_tests.rs":"75de304eb0012b5837130685a288cde6aaa3f76b6bf7cb9caad3a8b97b3d9640","tests/ed25519/ca.der":"e964b6289fbcea7b59e439dc5cac81069d1458be5d842ca4c6efb19709432dc7","tests/ed25519/ee.der":"a8444a18edc28d1a69c07335b0f8c62f1dab2b2cf4e41421b0c69e86a78891b3","tests/integration.rs":"f0b09b77ba8f81601c073ae5e2f8359db46c4fb4fec78e25c940c28682c96137","tests/misc/serial_neg.der":"12919c7d67791a0e098e1ee587dc9770231eda6d0da2d512770a0a06b5ef639a","tests/misc/serial_zero.der":"9d9ab2b35ef62a7eab8471a35399601cbb9a171595a686f153de6c7d62dc6d07","tests/netflix/ca.der":"9aed872dacd48041cbdc6cfaf6003246e5a0f127f8213a8a5ab237e84e3cab7a","tests/netflix/ee.der":"60a089e5974333839ee06e2cbd0208bcd33e10770bfff4f7d3c7ec4fd9f2da58","tests/netflix/inter.der":"80d457355005ea5b51dd88d83a196c84b6208f71aeecac6349fde52a6678c861","third-party/bettertls/LICENSE":"a69c036bc79a221e0abf26f032c2f80ba4ed9cf7e1d0f8361db03d1a0beb2c80","third-party/bettertls/README.md":"6f69c6e3eae7ae5a6845ace38dd6d913eec0c76a6d7ad2c6045b2cc70fcb45f8","third-party/chromium/LICENSE":"e3baa6bb0da277db5fb2e2726ecde1584731b0f7643835f2cea11b8888419b73","third-party/chromium/data/verify_signed_data/README":"5db9297cf9c64f6edacd05117e3a33517f3344da3c8767e450d8493197772b81","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-spki-params-null.pem":"47f95a68581a1c3677fa1bb33c75ef35c374d7f4168a5822aa6b56ca55d16a52","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-unused-bits-signature.pem":"b07ada217ec8a942c82560924491965772cd3728bb650b56d523046cbed4ef1a","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecdh-key.pem":"9577bfad6e2f97779a954d49aa46fa199410512bfcd8bc5520d68b81b5ccc529","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-ecmqv-key.pem":"bed6988102bf185274cd6b7f6d07d4f1341ed07e8fd6959f5b07266f1de66cf7","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem":"70299539eabf0789e465c731aca32010fbdebf535dd905d8c8cfa3edd9b8258f","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512-wrong-signature-format.pem":"59009056bba352c1374e3ce135111bcf173d0ca91c3d1f7ac90b6c65ab4fd76e","third-party/chromium/data/verify_signed_data/ecdsa-prime256v1-sha512.pem":"f2bec600fd810d694e00f2baba1c66108af8ef19de509c2ea7f59d6d4914c662","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256-corrupted-data.pem":"4202c4fbc4c279c3a9dc5b357ef7e0eef4ab841e8ba8a68be5ffe8e342f685b2","third-party/chromium/data/verify_signed_data/ecdsa-secp384r1-sha256.pem":"599d451a3b63142a790c39ca49c448ab99207591f2ac832f59bd989a2dd606b8","third-party/chromium/data/verify_signed_data/ecdsa-using-rsa-key.pem":"96982e3ac708d476aa7a0405fb46a937d89be8683eadcf2f19e62205c6d20f4f","third-party/chromium/data/verify_signed_data/ours/make-pss.py":"179a509091f121aa05edffa9ebc5009bc7fa6afbe10bf056d666a08f3fcb1573","third-party/chromium/data/verify_signed_data/ours/priv.pem":"2d24496cf293967962d9194889816caa49f47862d695c8b2173d877952cb1add","third-party/chromium/data/verify_signed_data/ours/pub.pem":"0e56613bcb253f3d7c922b06be9b2386012ed55df82166319f70a5628512716d","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32-corrupted-data.pem":"9336eb2f4a3ebb031175418657b417394ea076cd6e01abccf51d8a8dd6be418b","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha256-salt32.pem":"4a3b5af1ef67caa11ea1eab98f752c13eee5d1470eb98d28a5449026ade3d5d0","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48-corrupted-data.pem":"5d8453952c47bb319be069cd41130b28be9c6aeaaf0900118e494dfb19eb5ef6","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha384-salt48.pem":"a48fdac0c339c2e5ad9152c8246f8a53c417dcef21a6fb6efc1140b1ef456659","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64-corrupted-data.pem":"3347d299ce8ec7a6bb569371e39906f5e595e03db2c9304eb090aa53f4e5a0eb","third-party/chromium/data/verify_signed_data/ours/rsa-pss-sha512-salt64.pem":"4bec6dc3e17225438a96b466b1819fc4b873bce06fa811d07256080ad0d994b3","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-length.pem":"f853037e70decdfaf9eb4324d5fb8bf5f3b809f7b62eda663e427b4ca20c4340","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-bad-key-der-null.pem":"3a2d5e30512af718f7069ab86b815e67d7eb7f8c20728e1413505d9122849558","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-key-params-absent.pem":"e914ae3f29a4891047a11c3561789cd6aee5ca90606693cb658adae45c496452","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-using-pss-key-no-params.pem":"b7e5a98e2e45c9114195d3b06261563918ee4c1c69b941421f7cf0d1794f717e","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1-wrong-algorithm.pem":"63f12e3419bc354854268c2f511c45b548c5a4d1d187ea61171d76305fe1fd23","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha1.pem":"ea5c7330ba69894a137db319383b00814ba3f16af83067e88e9f323dbacd91c0","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-key-encoded-ber.pem":"e1070a0f2916a83abe362dc3fa7930b834529515aeea2ae70af1024005ed698e","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-spki-non-null-params.pem":"dc2b4e38551f86b1aab28fd6fff609229e7dc3645a5d4d3a5d038306eb1a9de5","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem":"03a655d2346017a95b6f4833b3b012571fb528355b09178d01a7508ed6d3e26c","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256-using-id-ea-rsa.pem":"f271fae71d8d1bfd9143650c15bfe2762273258c42439f732f4885809092b2ff","third-party/chromium/data/verify_signed_data/rsa-pkcs1-sha256.pem":"b8ec12aed7066ff652fb58479e988cdd7715176bf3ccc1bc271ecb89bf0bfdac","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-no-params.pem":"6cdba2bcc874c7473202c8063b61223aa51c8510be968ea8e0ddbbe9c309ee49","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20-using-pss-key-with-null-params.pem":"bc2da3e67e40f2bb7e031f9b211ddb526a8a3da36867a39d12391b1e7ce19016","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-salt20.pem":"33eaef74f3018691aa0ce316e030a55bba0910e241389cea4e6024b52ca4cc7a","third-party/chromium/data/verify_signed_data/rsa-pss-sha1-wrong-salt.pem":"a4803fa543b63c98cc134e817c5633ab4b2afe417f8c14cbf0d246fb10fd1ab0","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-mgf1-sha512-salt33.pem":"42344f3decb0f758e8715eba500e43f6ab78825386652ec03d60ae2867009fd1","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-params.pem":"6b5acde62f7e91827ddc8c4e3912891e1b9d7221ace3d864bf16df27e1781b03","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10-using-pss-key-with-wrong-params.pem":"d9690c88c4c52b6ec115c6d1258665642f628ec5f2b4feb84600a82b0fae1126","third-party/chromium/data/verify_signed_data/rsa-pss-sha256-salt10.pem":"3f619cfd3bf675c294ce08ba3a693af4c6371b7936d444a2e76f892077ff6d1e","third-party/chromium/data/verify_signed_data/rsa-using-ec-key.pem":"128d245f206a7da0f5b6ea532e7f34179c62953dbb182552be7c4f87e94eda02","third-party/chromium/data/verify_signed_data/rsa2048-pkcs1-sha512.pem":"2a4386675270d20b979063c93b162f9db72ed5463cf0c072d0b7e51dde807e4f"}}
\ No newline at end of file
diff --git a/crates/webpki/Android.bp b/crates/webpki/Android.bp
index 5a46ff4..92c13cd 100644
--- a/crates/webpki/Android.bp
+++ b/crates/webpki/Android.bp
@@ -53,6 +53,7 @@
"//apex_available:platform",
"//apex_available:anyapex",
],
+ min_sdk_version: "29",
}
rust_test {
diff --git a/crates/webpki/cargo_embargo.json b/crates/webpki/cargo_embargo.json
index 73a23c3..0ce9d07 100644
--- a/crates/webpki/cargo_embargo.json
+++ b/crates/webpki/cargo_embargo.json
@@ -9,7 +9,11 @@
"vendor_available": false,
"package": {
"webpki": {
- "license_text": [ "LICENSE", "third-party/chromium/LICENSE"]
+ "license_text": [
+ "LICENSE",
+ "third-party/chromium/LICENSE"
+ ]
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/which/.android-checksum.json b/crates/which/.android-checksum.json
index 36c3d0e..690d9ed 100644
--- a/crates/which/.android-checksum.json
+++ b/crates/which/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"030fa86714956bcf75cce64b9a0c6a4aaf9500fb30427a93dba662f8c183ae4a","Android.bp":"2a2612b96e8e0abe17d735e8b08acf5b5d9e8c08d2351d20ec907bd659e2900d","Cargo.toml":"6d714ab78c0207bf615c01fe5254803e825176b62f8adf7952dd49bd251cacaa","LICENSE":"e267bd914107d29718d4d4c90f2ef5397d4c57977c69640c14d619df5e53fc53","LICENSE.txt":"e267bd914107d29718d4d4c90f2ef5397d4c57977c69640c14d619df5e53fc53","METADATA":"d7e1d04d74c322286a3cbc56fe4e8a2b5a940e542cec50ef2dc066d7bfad5f6b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bb5de92581b0de7594dd217cc66bfbe80467b37eccefe1d11399ff41794182d7","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo_embargo.json":"ab8fe9ae28c2e1ae4815aa7c0dcf4e3043ddfb6eb647d025e0d1a3c7ec3a7ab4","src/checker.rs":"a0d312ce0606e4965f109b870dfee3b3c305f87b8f464f9031b049b11f3ce557","src/error.rs":"a4f0a9cc1ce385d6f6513d8d091d70aec50a235c5d540152fa87a41c1f635ad9","src/finder.rs":"90b660a2d77665f1ffe4291546bf322c484b8331420c6dfd11f411e521169bdd","src/helper.rs":"e856cf85f46ba2ba537e5f6c05f50fffa130f3891e3d63703c36d092667ae2b0","src/lib.rs":"5ae2ff2510b5d6e441e53b86673b1af52e13677b3ad09462a673884f7e41cfa3","tests/basic.rs":"e03a3bc08041488ee1e222256bc7a1793f073531c0554bd4ad1a07e0522b5b39"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"030fa86714956bcf75cce64b9a0c6a4aaf9500fb30427a93dba662f8c183ae4a","Android.bp":"3032337e3b14ccc19d9150e4a8a6455000eb9d1e30a665aa6ace5d4958d25df0","Cargo.toml":"6d714ab78c0207bf615c01fe5254803e825176b62f8adf7952dd49bd251cacaa","LICENSE":"e267bd914107d29718d4d4c90f2ef5397d4c57977c69640c14d619df5e53fc53","LICENSE.txt":"e267bd914107d29718d4d4c90f2ef5397d4c57977c69640c14d619df5e53fc53","METADATA":"d7e1d04d74c322286a3cbc56fe4e8a2b5a940e542cec50ef2dc066d7bfad5f6b","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"bb5de92581b0de7594dd217cc66bfbe80467b37eccefe1d11399ff41794182d7","TEST_MAPPING":"c8e6af96c7e7d36ed743565ba1bc3dc62da4327124c995aeb7052f580ba00ae2","cargo_embargo.json":"9f60acdad07efd57b553a157e62d2e9ed9e020595deab483eb2f78a24f6d4113","src/checker.rs":"a0d312ce0606e4965f109b870dfee3b3c305f87b8f464f9031b049b11f3ce557","src/error.rs":"a4f0a9cc1ce385d6f6513d8d091d70aec50a235c5d540152fa87a41c1f635ad9","src/finder.rs":"90b660a2d77665f1ffe4291546bf322c484b8331420c6dfd11f411e521169bdd","src/helper.rs":"e856cf85f46ba2ba537e5f6c05f50fffa130f3891e3d63703c36d092667ae2b0","src/lib.rs":"5ae2ff2510b5d6e441e53b86673b1af52e13677b3ad09462a673884f7e41cfa3","tests/basic.rs":"e03a3bc08041488ee1e222256bc7a1793f073531c0554bd4ad1a07e0522b5b39"}}
\ No newline at end of file
diff --git a/crates/which/Android.bp b/crates/which/Android.bp
index 2d34a1d..1358300 100644
--- a/crates/which/Android.bp
+++ b/crates/which/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/which/cargo_embargo.json b/crates/which/cargo_embargo.json
index b639cc5..4737641 100644
--- a/crates/which/cargo_embargo.json
+++ b/crates/which/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"features": [],
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/winnow/.android-checksum.json b/crates/winnow/.android-checksum.json
index 9c19bf6..adeadfb 100644
--- a/crates/winnow/.android-checksum.json
+++ b/crates/winnow/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"25566e47240b37650fa70dc7684657f41ca21ec6336eb269add8581c918e4a14","Android.bp":"bd9e9b1ec880cd7acb5695bc0f9bca15976e690781b045e29b770a8b2786e163","Cargo.lock":"88a8646c19ddab7380665a8fecd08d011a24b36552d5d8c620b7838492120be7","Cargo.toml":"97bb1e598001cf806b8811642b709e1e5469546bf5a67d42801f9936ce2c9397","LICENSE":"c0eb8549d2cf81653902a4df95bcbf95657d17ac97ee17d4ac99409be3d02d09","LICENSE-MIT":"c0eb8549d2cf81653902a4df95bcbf95657d17ac97ee17d4ac99409be3d02d09","METADATA":"5040edad3120bc4a377f146da9f61dde61df28c0bccc46582d29196262cb963f","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dab283945bcaeeab1ede8ee4521016c740bfa62b27385f4aedb72ebf38e3a68d","benches/contains_token.rs":"0f11db56776001e13ee9058ac7e2a31832d838bf83a3e0bc850d23bee2a5254c","benches/find_slice.rs":"8b0f978cde8992af1895bb0cf984e4c0b0dc6558f78080b167a58e6a40ced873","benches/iter.rs":"717e3fc61a25b4228ca9afb9e437492da4970e7803ea50865b860274b6180aca","benches/next_slice.rs":"5db6ccaad2bbf9f88c2bbf8573f35c42bbbbdc40813244a9a263fbcc0b6272e5","benches/number.rs":"48898f827b7545f9de081a94aa95715cc3dbae4f36345ff23d4b4f8a020607d3","cargo_embargo.json":"4322d11531d0decc7f497f1c135679c7f1573c2362137121d587bf6d49e21fcb","examples/arithmetic/bench.rs":"58d7c0e48a39d2f439adcbe75e5d537f036646835b712935d14478e2cab2f78a","examples/arithmetic/main.rs":"88eee2a4c18cf58b973bf1764d017d54028d59b8fa156f2b9862fc3f22bd65de","examples/arithmetic/parser.rs":"3d95be05390265e016e59fec0261547fa64146a5b3ab94c03b388eb650f35bc4","examples/arithmetic/parser_ast.rs":"b158850f51d3dd495ba7ccedeab1a39bbcfe86387c5c7ef9cfc2c870866c7178","examples/arithmetic/parser_lexer.rs":"cab8827532dfe7c72990f2817803569fe8ee4ccdad558db8ee13161493d0b113","examples/css/main.rs":"52d266f9f9e8c90e189febf21373ba4af9fb1f006e9671d346deb7403cd4652c","examples/css/parser.rs":"8f19e6aad0c141dd757988b029f67e5cc17a99bae331d931d85e20ad804c89b2","examples/custom_error.rs":"3a247addf688f4d6c85e2a8afb8d030012aeed9a8b85e58c0b6d8bd2d8ab946a","examples/http/bench.rs":"1e5d38c6411b3069bf7a998269fab94da79835c8c0fe9118b3dd271926603133","examples/http/main.rs":"cb229289c242a2c9393b574cdaeaa5f8b8f99d17ae6b7f2b9eed4e770e7004ee","examples/http/parser.rs":"be7dae5d458a3c10a5551d3264e6f685044c03b446263840f009570426510c8f","examples/http/parser_streaming.rs":"833ffc19cfb6494f4dfc8a466e6e1c8222cd5f13d1c15233c25ad229f8c2c04c","examples/ini/bench.rs":"0f563192241369dd34d2d8732c8bc27d802143345d96195782a5668f3fd55c80","examples/ini/main.rs":"975d1297560fd7d4e34d647e8badb31c11ec397c9ea637397fc8e05ded5553b3","examples/ini/parser.rs":"e676777f509fd719c0d3b5b477a417fec402a6bf420dc29ae611e7b378ef3dd7","examples/ini/parser_str.rs":"73147c6612e0aba1d0be5e4963933198205bdf0f5778451b0010582e40735d05","examples/iterator.rs":"0c78e9e20ff9351a68b3a73dcab248d471a64848f31a492a2a3b13d784bbb9de","examples/json/bench.rs":"64a56e56bd183765f6d74d92bf7c0128914d76548b834f80ba2e306ca03705ed","examples/json/json.rs":"35d125cd92b9219401df343ac3d98f7e6fd516cbb3b5f09594aed73e7c3d50c9","examples/json/main.rs":"ffecbd756321e40f1f1df7b7e43439cde68c4facc26a3ed58f91a5503f92b446","examples/json/parser_alt.rs":"00ee33b2c3dd1345be1e6fb284dae27ba25ba7fb5f8109c0a3dc43036d3fe22a","examples/json/parser_dispatch.rs":"4daf0b9adc17b2ed9a839e8e3a448aedc6f4111561a706a5dae2cb388aef20e6","examples/json/parser_partial.rs":"a57051e2044e6a3c095d46932a093baacdeca26535d6c08c2c3488b91a33c44a","examples/json_iterator.rs":"8d3ef40d1dfc70cb8f35a968fce5c392c24241b1d91c36998d0ea303ab25e9cb","examples/ndjson/example.ndjson":"1c013270a2f5ee7d2df2ac6fa1b9d82af68afe954c7a0ed629c04e274d6f7bac","examples/ndjson/main.rs":"1675437d9b57073ff3b350b74f6d91db96147c1b72ed886a8a66d8d1221d1096","examples/ndjson/parser.rs":"067c7ff9c5d92bc2d167bdb02a25dadb680908496a610d3d487da361ada75dc3","examples/s_expression/main.rs":"2e365d7c5e5dbcddfcc4bdc0d73407ed041d270b524125c04e89ec9925c0274e","examples/s_expression/parser.rs":"ecb267b48407a35361281fa9f09d37331e5f6d0decaf69b9366502db64b7bbda","examples/string/main.rs":"a21024f6dbbf0c66189d265851009fe885d9f17ade62a66322baf003384ae305","examples/string/parser.rs":"46394e67d8bd3ab74fb1c80dfed1f4dd8381c097d89c53e8fdf492bd22542ab1","src/_topic/arithmetic.rs":"b79c44c429021dc2f4ce8bd2821b53eed1d65bfe47ba91bd036c17f748e4ceba","src/_topic/error.rs":"7e4a39dffaf5d2b9757d9d995ab3b200321cb3a5c175fd2a5f0880598c001a98","src/_topic/fromstr.rs":"aa7b4d94824efd91a6db87e5477f98f19ac20f931d65d09f064b167b424e8ed6","src/_topic/http.rs":"b4a0854c82f687cd4307b0ba1aba448a1a73cb06409a521b512735900a2a121d","src/_topic/ini.rs":"f7dc4e1c4d824597317e09a5a8737ac5b8578094d616d4cc9aa8367cbeb1747f","src/_topic/json.rs":"7b2c79b6c25bac05b8892cc8c5b93b79e9b0ecb6373d7d3b8928f185f42793c5","src/_topic/language.rs":"95e71875c6b923f4f8eb0debf77697f10084a33b51c857fd227ae826282ca4b8","src/_topic/mod.rs":"1eabc7567c01c58851cc1aa5c30a8896b5b6f87a96189cd9bc16e77401b2961e","src/_topic/nom.rs":"62a63f67aee2ed815f2c4111e30b46445d76b9c6fa275ad1a01e4953fa1d5313","src/_topic/partial.rs":"2ee81a75c384c5e6fe1ebea3eb760be66142749785a5ae97f72e0299895dde2a","src/_topic/performance.rs":"8258b4ad39543d6d851319c55922b4af26711e75b7b171270c2c10337dfcd538","src/_topic/s_expression.rs":"ca745384c41df90add4da390fb5de3b21a3a49a8eeeb069796de2075d5ac86de","src/_topic/stream.rs":"9eeb1f303f6b346f5ba0c64e4b120451c270ce1fb3409162e4d2afee986e2a22","src/_topic/why.rs":"5a05bab7d65ccebdf8852387154d677002dae27697d51b2a0cba999c29a18082","src/_tutorial/chapter_0.rs":"24e4fe727bf0d7a0e50fcd90019c3d11987737bd36d4abd79d399917096ba21a","src/_tutorial/chapter_1.rs":"4b7db4081993b1c231694a83676e714295af67369a99a0f38da72685973d73b1","src/_tutorial/chapter_2.rs":"1d9e8eab1c92a9eb868edb907b1c06ef2fb0145ed9a96d4a829dce548bf0b090","src/_tutorial/chapter_3.rs":"a83a624580d3f09beaea028524f11dbf65090ef87179e8496e07c2429c38fa56","src/_tutorial/chapter_4.rs":"03600ef6c02b080b31181c248e786e8b4a2cdf69862d0f4f8ba11622cfe7b2e7","src/_tutorial/chapter_5.rs":"d42dfc2fb81fbf2bb6bdc38088d93e8c1874172a1358ce23e0e0ce40ccd6dc43","src/_tutorial/chapter_6.rs":"1fe7efd324918c8d91bdec3b4a56d44cc82815d04c75b25bb2b32e4f21f8f2fa","src/_tutorial/chapter_7.rs":"bcb56daa6d06caf0e5de3b471396724731aa595b32898c5b70da030601d35595","src/_tutorial/chapter_8.rs":"ca042e342d96d2a33b9211b975c4b35fde9bd05ae7f61567f28ccb1d4a9407d8","src/_tutorial/mod.rs":"29f78e7b383fa4aa90d72e6452b8d37cf34868dd2d2087f286577c5ce762bb7b","src/ascii/mod.rs":"27c72fdc650b4bd72d7d17799a05efb2c99e678f71e14aa6473abad22ee126cc","src/ascii/tests.rs":"8d5094fbbc19bd8760e886efd9c99d0110368d7a9f5af5d18d06212f785af260","src/binary/bits/mod.rs":"3a9971974c8a66099cb75e5c95140494fa18fa904a2737ccad46ed74f5d9f281","src/binary/bits/tests.rs":"688bd31747f074e974f494bd27103997d790336d34a75e4836aaf011ae7720ac","src/binary/mod.rs":"e909d0778cf8ffd4a64c83b772844f2c298db4d8e25358a12553563a21227959","src/binary/tests.rs":"1a7d8362d43c3cad6eadd0e46280a35f146508f2839967b41d744ca7df913940","src/combinator/branch.rs":"fb3241e3a1403e3f3aecc4ad227ff51cf0c37a3fe54789a84d162782ae119e9a","src/combinator/core.rs":"ad11bf23a0d8d54543aeba8e06eae06a31450b4e5cfb126b600b214b264d2e18","src/combinator/debug/internals.rs":"f68abbdee3651c17971915348c4812834b7c6c38f58f5bb1da8d5b2cd443e337","src/combinator/debug/mod.rs":"1c6e836a80a2c966e71d4f292f021ae10f6ded08c926c76da2fd0e549500ea56","src/combinator/impls.rs":"8dfaa0b5f4a59e8b21651eef38470c1d6ba745e5e32d0873dcbff7da648735c1","src/combinator/mod.rs":"cf29982a9ce75b8272bb687360288649ff44219123e592b7b8e1e8cece42dd65","src/combinator/multi.rs":"6d04a1335e352d6e53d297b7108d2a7a352e648e58a384ea78a7f6a6ac65d597","src/combinator/sequence.rs":"3bf9f13a3757f11bef108d6667f89b0221b3d51151d0f2319916b3fdf1f10458","src/combinator/tests.rs":"fef8396e0a7c25ababe977fdaab1e1d67f6c30ed8e3661959a172d80efff4a54","src/error.rs":"31689eaa54a21ae8501fff089f93aa5f2c02a2187158e460165be6638f1d6fdd","src/lib.rs":"93bda770550a18e4f21ad5ce33490140d5b51714fe0557b860e28774dbe8db58","src/macros/dispatch.rs":"bbbe8f53ee232943ebd51c0388f41ff5dea79b71ad1e41c63b10e5d20fd7c1ad","src/macros/mod.rs":"06eed9d8626d444dbfcff753f83836da4474a9b145fea3992d89877d7f4023e6","src/macros/seq.rs":"e241cd8c2afd9033e2362deb4cfa9da3b88d4b96c4e6b92a0addef2b14b8bbb3","src/macros/tests.rs":"8bd38c7805192e2df69c4972ab8e43f33c6d1f90828c4bb9ce30f0924e9c3ae3","src/parser.rs":"1106a10ab960f91150e9d1bacbfe13bf91e81137327480941012ad8dd234d239","src/stream/impls.rs":"5920f82ab5e4c81e66ad6f30830b9d5adf22178e6a0441eeee92a4dc742bbad3","src/stream/mod.rs":"511b36ff2e27f2859428cbcaa56a65507964ffb097d16a6e3f796e1a1ffba42d","src/stream/tests.rs":"7d40f65e6f32f8fd23b5043b02e2a248c8fff211b71cc32aa8c2d7f9ae40d1e9","src/token/mod.rs":"c5461997b4b750125284a7f23fd5318cdb260bf8c3caa87c1204d12043a090d1","src/token/tests.rs":"ab4892648202709cf7e1a3999563656460efa43c853f64a80cfdc294b7b8bfff"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"25566e47240b37650fa70dc7684657f41ca21ec6336eb269add8581c918e4a14","Android.bp":"bd9e9b1ec880cd7acb5695bc0f9bca15976e690781b045e29b770a8b2786e163","Cargo.lock":"88a8646c19ddab7380665a8fecd08d011a24b36552d5d8c620b7838492120be7","Cargo.toml":"97bb1e598001cf806b8811642b709e1e5469546bf5a67d42801f9936ce2c9397","LICENSE":"c0eb8549d2cf81653902a4df95bcbf95657d17ac97ee17d4ac99409be3d02d09","LICENSE-MIT":"c0eb8549d2cf81653902a4df95bcbf95657d17ac97ee17d4ac99409be3d02d09","METADATA":"5040edad3120bc4a377f146da9f61dde61df28c0bccc46582d29196262cb963f","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dab283945bcaeeab1ede8ee4521016c740bfa62b27385f4aedb72ebf38e3a68d","benches/contains_token.rs":"0f11db56776001e13ee9058ac7e2a31832d838bf83a3e0bc850d23bee2a5254c","benches/find_slice.rs":"8b0f978cde8992af1895bb0cf984e4c0b0dc6558f78080b167a58e6a40ced873","benches/iter.rs":"717e3fc61a25b4228ca9afb9e437492da4970e7803ea50865b860274b6180aca","benches/next_slice.rs":"5db6ccaad2bbf9f88c2bbf8573f35c42bbbbdc40813244a9a263fbcc0b6272e5","benches/number.rs":"48898f827b7545f9de081a94aa95715cc3dbae4f36345ff23d4b4f8a020607d3","cargo_embargo.json":"7a0e0326ef387b89b9983576cec38c4c31c016fed2dcb486e798400e6d36d889","examples/arithmetic/bench.rs":"58d7c0e48a39d2f439adcbe75e5d537f036646835b712935d14478e2cab2f78a","examples/arithmetic/main.rs":"88eee2a4c18cf58b973bf1764d017d54028d59b8fa156f2b9862fc3f22bd65de","examples/arithmetic/parser.rs":"3d95be05390265e016e59fec0261547fa64146a5b3ab94c03b388eb650f35bc4","examples/arithmetic/parser_ast.rs":"b158850f51d3dd495ba7ccedeab1a39bbcfe86387c5c7ef9cfc2c870866c7178","examples/arithmetic/parser_lexer.rs":"cab8827532dfe7c72990f2817803569fe8ee4ccdad558db8ee13161493d0b113","examples/css/main.rs":"52d266f9f9e8c90e189febf21373ba4af9fb1f006e9671d346deb7403cd4652c","examples/css/parser.rs":"8f19e6aad0c141dd757988b029f67e5cc17a99bae331d931d85e20ad804c89b2","examples/custom_error.rs":"3a247addf688f4d6c85e2a8afb8d030012aeed9a8b85e58c0b6d8bd2d8ab946a","examples/http/bench.rs":"1e5d38c6411b3069bf7a998269fab94da79835c8c0fe9118b3dd271926603133","examples/http/main.rs":"cb229289c242a2c9393b574cdaeaa5f8b8f99d17ae6b7f2b9eed4e770e7004ee","examples/http/parser.rs":"be7dae5d458a3c10a5551d3264e6f685044c03b446263840f009570426510c8f","examples/http/parser_streaming.rs":"833ffc19cfb6494f4dfc8a466e6e1c8222cd5f13d1c15233c25ad229f8c2c04c","examples/ini/bench.rs":"0f563192241369dd34d2d8732c8bc27d802143345d96195782a5668f3fd55c80","examples/ini/main.rs":"975d1297560fd7d4e34d647e8badb31c11ec397c9ea637397fc8e05ded5553b3","examples/ini/parser.rs":"e676777f509fd719c0d3b5b477a417fec402a6bf420dc29ae611e7b378ef3dd7","examples/ini/parser_str.rs":"73147c6612e0aba1d0be5e4963933198205bdf0f5778451b0010582e40735d05","examples/iterator.rs":"0c78e9e20ff9351a68b3a73dcab248d471a64848f31a492a2a3b13d784bbb9de","examples/json/bench.rs":"64a56e56bd183765f6d74d92bf7c0128914d76548b834f80ba2e306ca03705ed","examples/json/json.rs":"35d125cd92b9219401df343ac3d98f7e6fd516cbb3b5f09594aed73e7c3d50c9","examples/json/main.rs":"ffecbd756321e40f1f1df7b7e43439cde68c4facc26a3ed58f91a5503f92b446","examples/json/parser_alt.rs":"00ee33b2c3dd1345be1e6fb284dae27ba25ba7fb5f8109c0a3dc43036d3fe22a","examples/json/parser_dispatch.rs":"4daf0b9adc17b2ed9a839e8e3a448aedc6f4111561a706a5dae2cb388aef20e6","examples/json/parser_partial.rs":"a57051e2044e6a3c095d46932a093baacdeca26535d6c08c2c3488b91a33c44a","examples/json_iterator.rs":"8d3ef40d1dfc70cb8f35a968fce5c392c24241b1d91c36998d0ea303ab25e9cb","examples/ndjson/example.ndjson":"1c013270a2f5ee7d2df2ac6fa1b9d82af68afe954c7a0ed629c04e274d6f7bac","examples/ndjson/main.rs":"1675437d9b57073ff3b350b74f6d91db96147c1b72ed886a8a66d8d1221d1096","examples/ndjson/parser.rs":"067c7ff9c5d92bc2d167bdb02a25dadb680908496a610d3d487da361ada75dc3","examples/s_expression/main.rs":"2e365d7c5e5dbcddfcc4bdc0d73407ed041d270b524125c04e89ec9925c0274e","examples/s_expression/parser.rs":"ecb267b48407a35361281fa9f09d37331e5f6d0decaf69b9366502db64b7bbda","examples/string/main.rs":"a21024f6dbbf0c66189d265851009fe885d9f17ade62a66322baf003384ae305","examples/string/parser.rs":"46394e67d8bd3ab74fb1c80dfed1f4dd8381c097d89c53e8fdf492bd22542ab1","src/_topic/arithmetic.rs":"b79c44c429021dc2f4ce8bd2821b53eed1d65bfe47ba91bd036c17f748e4ceba","src/_topic/error.rs":"7e4a39dffaf5d2b9757d9d995ab3b200321cb3a5c175fd2a5f0880598c001a98","src/_topic/fromstr.rs":"aa7b4d94824efd91a6db87e5477f98f19ac20f931d65d09f064b167b424e8ed6","src/_topic/http.rs":"b4a0854c82f687cd4307b0ba1aba448a1a73cb06409a521b512735900a2a121d","src/_topic/ini.rs":"f7dc4e1c4d824597317e09a5a8737ac5b8578094d616d4cc9aa8367cbeb1747f","src/_topic/json.rs":"7b2c79b6c25bac05b8892cc8c5b93b79e9b0ecb6373d7d3b8928f185f42793c5","src/_topic/language.rs":"95e71875c6b923f4f8eb0debf77697f10084a33b51c857fd227ae826282ca4b8","src/_topic/mod.rs":"1eabc7567c01c58851cc1aa5c30a8896b5b6f87a96189cd9bc16e77401b2961e","src/_topic/nom.rs":"62a63f67aee2ed815f2c4111e30b46445d76b9c6fa275ad1a01e4953fa1d5313","src/_topic/partial.rs":"2ee81a75c384c5e6fe1ebea3eb760be66142749785a5ae97f72e0299895dde2a","src/_topic/performance.rs":"8258b4ad39543d6d851319c55922b4af26711e75b7b171270c2c10337dfcd538","src/_topic/s_expression.rs":"ca745384c41df90add4da390fb5de3b21a3a49a8eeeb069796de2075d5ac86de","src/_topic/stream.rs":"9eeb1f303f6b346f5ba0c64e4b120451c270ce1fb3409162e4d2afee986e2a22","src/_topic/why.rs":"5a05bab7d65ccebdf8852387154d677002dae27697d51b2a0cba999c29a18082","src/_tutorial/chapter_0.rs":"24e4fe727bf0d7a0e50fcd90019c3d11987737bd36d4abd79d399917096ba21a","src/_tutorial/chapter_1.rs":"4b7db4081993b1c231694a83676e714295af67369a99a0f38da72685973d73b1","src/_tutorial/chapter_2.rs":"1d9e8eab1c92a9eb868edb907b1c06ef2fb0145ed9a96d4a829dce548bf0b090","src/_tutorial/chapter_3.rs":"a83a624580d3f09beaea028524f11dbf65090ef87179e8496e07c2429c38fa56","src/_tutorial/chapter_4.rs":"03600ef6c02b080b31181c248e786e8b4a2cdf69862d0f4f8ba11622cfe7b2e7","src/_tutorial/chapter_5.rs":"d42dfc2fb81fbf2bb6bdc38088d93e8c1874172a1358ce23e0e0ce40ccd6dc43","src/_tutorial/chapter_6.rs":"1fe7efd324918c8d91bdec3b4a56d44cc82815d04c75b25bb2b32e4f21f8f2fa","src/_tutorial/chapter_7.rs":"bcb56daa6d06caf0e5de3b471396724731aa595b32898c5b70da030601d35595","src/_tutorial/chapter_8.rs":"ca042e342d96d2a33b9211b975c4b35fde9bd05ae7f61567f28ccb1d4a9407d8","src/_tutorial/mod.rs":"29f78e7b383fa4aa90d72e6452b8d37cf34868dd2d2087f286577c5ce762bb7b","src/ascii/mod.rs":"27c72fdc650b4bd72d7d17799a05efb2c99e678f71e14aa6473abad22ee126cc","src/ascii/tests.rs":"8d5094fbbc19bd8760e886efd9c99d0110368d7a9f5af5d18d06212f785af260","src/binary/bits/mod.rs":"3a9971974c8a66099cb75e5c95140494fa18fa904a2737ccad46ed74f5d9f281","src/binary/bits/tests.rs":"688bd31747f074e974f494bd27103997d790336d34a75e4836aaf011ae7720ac","src/binary/mod.rs":"e909d0778cf8ffd4a64c83b772844f2c298db4d8e25358a12553563a21227959","src/binary/tests.rs":"1a7d8362d43c3cad6eadd0e46280a35f146508f2839967b41d744ca7df913940","src/combinator/branch.rs":"fb3241e3a1403e3f3aecc4ad227ff51cf0c37a3fe54789a84d162782ae119e9a","src/combinator/core.rs":"ad11bf23a0d8d54543aeba8e06eae06a31450b4e5cfb126b600b214b264d2e18","src/combinator/debug/internals.rs":"f68abbdee3651c17971915348c4812834b7c6c38f58f5bb1da8d5b2cd443e337","src/combinator/debug/mod.rs":"1c6e836a80a2c966e71d4f292f021ae10f6ded08c926c76da2fd0e549500ea56","src/combinator/impls.rs":"8dfaa0b5f4a59e8b21651eef38470c1d6ba745e5e32d0873dcbff7da648735c1","src/combinator/mod.rs":"cf29982a9ce75b8272bb687360288649ff44219123e592b7b8e1e8cece42dd65","src/combinator/multi.rs":"6d04a1335e352d6e53d297b7108d2a7a352e648e58a384ea78a7f6a6ac65d597","src/combinator/sequence.rs":"3bf9f13a3757f11bef108d6667f89b0221b3d51151d0f2319916b3fdf1f10458","src/combinator/tests.rs":"fef8396e0a7c25ababe977fdaab1e1d67f6c30ed8e3661959a172d80efff4a54","src/error.rs":"31689eaa54a21ae8501fff089f93aa5f2c02a2187158e460165be6638f1d6fdd","src/lib.rs":"93bda770550a18e4f21ad5ce33490140d5b51714fe0557b860e28774dbe8db58","src/macros/dispatch.rs":"bbbe8f53ee232943ebd51c0388f41ff5dea79b71ad1e41c63b10e5d20fd7c1ad","src/macros/mod.rs":"06eed9d8626d444dbfcff753f83836da4474a9b145fea3992d89877d7f4023e6","src/macros/seq.rs":"e241cd8c2afd9033e2362deb4cfa9da3b88d4b96c4e6b92a0addef2b14b8bbb3","src/macros/tests.rs":"8bd38c7805192e2df69c4972ab8e43f33c6d1f90828c4bb9ce30f0924e9c3ae3","src/parser.rs":"1106a10ab960f91150e9d1bacbfe13bf91e81137327480941012ad8dd234d239","src/stream/impls.rs":"5920f82ab5e4c81e66ad6f30830b9d5adf22178e6a0441eeee92a4dc742bbad3","src/stream/mod.rs":"511b36ff2e27f2859428cbcaa56a65507964ffb097d16a6e3f796e1a1ffba42d","src/stream/tests.rs":"7d40f65e6f32f8fd23b5043b02e2a248c8fff211b71cc32aa8c2d7f9ae40d1e9","src/token/mod.rs":"c5461997b4b750125284a7f23fd5318cdb260bf8c3caa87c1204d12043a090d1","src/token/tests.rs":"ab4892648202709cf7e1a3999563656460efa43c853f64a80cfdc294b7b8bfff"}}
\ No newline at end of file
diff --git a/crates/winnow/cargo_embargo.json b/crates/winnow/cargo_embargo.json
index fdcc304..bceff41 100644
--- a/crates/winnow/cargo_embargo.json
+++ b/crates/winnow/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/writeable/.android-checksum.json b/crates/writeable/.android-checksum.json
index 9de9fdd..af1f4aa 100644
--- a/crates/writeable/.android-checksum.json
+++ b/crates/writeable/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"d3ed1f6ef70d3baf5da11403309eda56ddf6c5bb3db31aa85f8ba59dee9d2fd8","Android.bp":"0cd8921ff80aa4ce2079e287f5d600a00548f52b8886f9104f264309f27ab7e0","Cargo.lock":"4452cb83dd9909baffe544a69a0e11e67929918ccb05c9b31bf1a8182caf0099","Cargo.toml":"8f9194d41a1be8f3ae670a2335d41641b8c00b375ad58bb8743095a9610f2d34","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"9376b0a5113b2ee5ebfed22aedbf5c76e3f458fc94724ce4f2e6127847407046","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f6c29da7d58644857d72e2050d4794b0afe57a77abd2a1106791fe374ae017e1","benches/writeable.rs":"91cdab995c478403cd20780269ee27a9e4bbc9da807761e3a6355365d6acb421","cargo_embargo.json":"64ddf3c6870455a83a1a8164e8c557197af4fd3321473df726f7218b56df83e3","examples/writeable_message.rs":"9c58eab62a920aa287a2f2ad84197fd4ae0d5c5aec5db9d41f12ad3e2b805287","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cmp.rs":"15da6ac0b33f9f2ffff799fbe79c081b39392b0f5591d70c31195062857b03da","src/either.rs":"cab557c61bcfbfa9074724f995a3560fb6e0a0877951519b1eb4329d6df90952","src/impls.rs":"8fe1faa512bb934450f95f69e6348b54c9cc457fe1f954edf2cc2a9870eb772c","src/lib.rs":"264d87e6b5d0863df042b8b3cafb081598b822c1f707986b37e5d5c4847a6679","src/ops.rs":"80c975e387931fc968c10cc5995554a03a88b9b7ddbc640b37b5e6a095033137","src/parts_write_adapter.rs":"f647ee01de5822b4cea3138cdc329e52d7de7afe634bdb20cb31362b2cf73b2e","src/testing.rs":"e362becb95e1d8a5838e705504f70be7132c0c0833c9c5c48fd9329fc8ecb0df","src/to_string_or_borrow.rs":"27df588617cbd973dcb9436f0ce14179dbb27e3e1a798c7a99963f3bd7dea4a2","src/try_writeable.rs":"b3db37191f06c6a844c8192ee5c7a65a4ceafb1dbadecdb835b0cf6fd319c0ad","tests/data/data.rs":"a5d8555a21bf293f8b85b066c461825b9d346aae130962041e09a7ecf2dc565c","tests/writeable.rs":"7d930f15a6347751585f23d022d1a13fe530402bc69f7fb0900665791f2d8f6a"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"d3ed1f6ef70d3baf5da11403309eda56ddf6c5bb3db31aa85f8ba59dee9d2fd8","Android.bp":"3f0412bfe7e609e107528577bf9aa307efc60b06c6c86ffc535627d78bf2b76f","Cargo.lock":"4452cb83dd9909baffe544a69a0e11e67929918ccb05c9b31bf1a8182caf0099","Cargo.toml":"8f9194d41a1be8f3ae670a2335d41641b8c00b375ad58bb8743095a9610f2d34","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"9376b0a5113b2ee5ebfed22aedbf5c76e3f458fc94724ce4f2e6127847407046","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"f6c29da7d58644857d72e2050d4794b0afe57a77abd2a1106791fe374ae017e1","benches/writeable.rs":"91cdab995c478403cd20780269ee27a9e4bbc9da807761e3a6355365d6acb421","cargo_embargo.json":"38c3cbbee1794017f5d50bc5b1e42240411e9b10db5084b2e88526abd90e8e09","examples/writeable_message.rs":"9c58eab62a920aa287a2f2ad84197fd4ae0d5c5aec5db9d41f12ad3e2b805287","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cmp.rs":"15da6ac0b33f9f2ffff799fbe79c081b39392b0f5591d70c31195062857b03da","src/either.rs":"cab557c61bcfbfa9074724f995a3560fb6e0a0877951519b1eb4329d6df90952","src/impls.rs":"8fe1faa512bb934450f95f69e6348b54c9cc457fe1f954edf2cc2a9870eb772c","src/lib.rs":"264d87e6b5d0863df042b8b3cafb081598b822c1f707986b37e5d5c4847a6679","src/ops.rs":"80c975e387931fc968c10cc5995554a03a88b9b7ddbc640b37b5e6a095033137","src/parts_write_adapter.rs":"f647ee01de5822b4cea3138cdc329e52d7de7afe634bdb20cb31362b2cf73b2e","src/testing.rs":"e362becb95e1d8a5838e705504f70be7132c0c0833c9c5c48fd9329fc8ecb0df","src/to_string_or_borrow.rs":"27df588617cbd973dcb9436f0ce14179dbb27e3e1a798c7a99963f3bd7dea4a2","src/try_writeable.rs":"b3db37191f06c6a844c8192ee5c7a65a4ceafb1dbadecdb835b0cf6fd319c0ad","tests/data/data.rs":"a5d8555a21bf293f8b85b066c461825b9d346aae130962041e09a7ecf2dc565c","tests/writeable.rs":"7d930f15a6347751585f23d022d1a13fe530402bc69f7fb0900665791f2d8f6a"}}
\ No newline at end of file
diff --git a/crates/writeable/Android.bp b/crates/writeable/Android.bp
index 7b75532..3f7a7c8 100644
--- a/crates/writeable/Android.bp
+++ b/crates/writeable/Android.bp
@@ -31,6 +31,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/writeable/cargo_embargo.json b/crates/writeable/cargo_embargo.json
index 8ddd47f..41096c9 100644
--- a/crates/writeable/cargo_embargo.json
+++ b/crates/writeable/cargo_embargo.json
@@ -7,5 +7,6 @@
"writeable": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/x509-cert/.android-checksum.json b/crates/x509-cert/.android-checksum.json
index c4d02f6..35dfabc 100644
--- a/crates/x509-cert/.android-checksum.json
+++ b/crates/x509-cert/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"4450696ae6ab5f1a7acbf231d29ff4499b76ec5aeafaaada91d9b37017aa7585","Android.bp":"c00f891a3965f596d462e64da0f30780d8e3252f44a7166cd394de8506c20a61","CHANGELOG.md":"69350a877f33e45fd0ee86ac5436f70c9fcb8f69259029307f110ab0b1c73253","Cargo.toml":"30fe6e7745b6594a36e53d3ecbb107e4748b137ad3e4f952443c1a3a84806645","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"0c48e8dc45cdce42b21d98988f544776a3163df86519be1bd15bee1ed3dd8eb7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cfbb7a4795d32dc807fed749c41a13f745e5936dc698235452cf9ea982ec04e5","cargo_embargo.json":"5a95c7f70a6263393974d388575a632347aeb706672c45664a3228ab78fe81c2","rules.mk":"b8adb139cddc201d52ef6d24c4222d6d2a30810dad2ca49de539bd04ae095e48","src/anchor.rs":"6bc92d3e68f6ba9bd9d3688d651e455f359ec7f2f62ac1b4f1f1f1f5c9c83337","src/attr.rs":"1d27c559517156672fc12ca0e7a38cd075db4e55341b08976bce554bd9c4db7c","src/builder.rs":"8638f72af1bc3eca4ae4560ce7276b4df62c30324e80d4c6675adab7533e2bf0","src/certificate.rs":"847c2cc229e02fab606d4496d5449fce06aad99f69cb8b224c61331ced4a6587","src/crl.rs":"62aefab95d5943d54a3155f8ac73563f0fbe1947520958f4ee411b8973ea4e89","src/ext.rs":"98d1cd52285a79b16f0d68de778ac74165d084ce2e174f73798445f4270c9feb","src/ext/pkix.rs":"59e7d6c86147dfaac6aa88ae97fd74f7cd5a7c3139b41e15481496a2e2e4dca2","src/ext/pkix/access.rs":"5dbc7d2d155d3cf200a2a0c57c7f0279c988018172f284d9240d85d8ba2322ca","src/ext/pkix/authkeyid.rs":"61f8053cb614cc1231f764b872652652daeec5ae1407d5b93e047add9535da50","src/ext/pkix/certpolicy.rs":"50ff6430b3450219f36df3438d80bc8ce7be467b06e8c9f39300563a8a8bf7ca","src/ext/pkix/constraints.rs":"8993d558880f382a876c365e2c2cbf632bc3a7abb3e3ac3a46fbe95d9a7beee2","src/ext/pkix/constraints/basic.rs":"b9c1de0725b2bb265187860aa99cbcd48595fd9390cca76ce1839b25c40f449e","src/ext/pkix/constraints/name.rs":"8348eca14eb954584b3bc19ad46cfef29acfe1d2827f81735e6cb4517aa956b5","src/ext/pkix/constraints/policy.rs":"85646bf33d969a6d3b8823ea770419bc9ef94eea93c8bc8203affb90e5fa4e00","src/ext/pkix/crl.rs":"cd703adf57ca4e9744420afa7f1e3947a4e3704a016f77398a33f5b4d6828c6b","src/ext/pkix/crl/dp.rs":"1d88e871eb9b76131dc6c85188fa07db68a5d4848f2f9c7420467bacfcfc827f","src/ext/pkix/keyusage.rs":"45023e818739b40d000fed3a241aedab52ec3a7d707d96b2892e406a3d9cfc1a","src/ext/pkix/name.rs":"65bcfa0e9858bee26af4d2f7cd19a404235af07456142daab2bd59dd4a5863ef","src/ext/pkix/name/dirstr.rs":"33fbbda1bdc27a468d091694e354c9e935911fd8c715cf0cce5af56219166044","src/ext/pkix/name/dp.rs":"4e6d17b6e1ad25f91cc9b3e96ad306b1f5fb029051c95540171e08d1801ee12a","src/ext/pkix/name/ediparty.rs":"ebe08d05b367b48d606b7f2cad14dde996dedf305ad8da683e690b7e75a2333d","src/ext/pkix/name/general.rs":"d4b691503fedf3efac4af09a374eb5e48cef5d1f70a5d4e5549129f43ed24e8e","src/ext/pkix/name/other.rs":"bece63704232359568424cfea04c9b8b57151adcc031d77b777a5ede9cb82540","src/ext/pkix/policymap.rs":"9b5e6b6a4664b5fcafcc4669d98e3422993aa6a2601abb9e6d0ecd8762d1e800","src/ext/pkix/sct.rs":"34710fc07e463f4193e2d8697574d3a6649888f7ddc50c84d9d48ba25d322f1b","src/lib.rs":"fcaad0a0655ffbafe6d542b119d3c66709aa12f883c8ac71ade51f6cf7431650","src/macros.rs":"510656a58db95b7568966285da2f59ffcf7dd907d4ff32c34b13af046172e28d","src/name.rs":"a0a861483a68ac189575a4a0874474ceaf50e89d924b1eadcd3c6e2f1ed527e3","src/request.rs":"b5fe1a2660b1fab89e52e94a762fba696502ff760a0d355f757cf49cc987f4ab","src/serial_number.rs":"e4f2d5248771d488204caa23c81b2e275cbf485546f381513c5e13f58f37147b","src/time.rs":"af9ce954537d08197514e9f26de762cce745b17ef93d27cff33eacaadd8d2cbb","tests/builder.rs":"5342a6864281376f67ae4a390b32c76c97d361a622e9495108a47f53e9524005","tests/certificate.rs":"eefc0a2967f9664380c9020c20e5812e997dd48d3d0c82b308f9cda48c54fcd9","tests/certreq.rs":"fe11eb658f2b7ba8471046f8172077390f95d1ba0c20b56a1c87d232e1378463","tests/crl.rs":"a5dc9d90f3c29801350c26b0593eb121ce5457943ce542611dc2d720e9beb0ac","tests/examples/026EDA6FA1EDFA8C253936C75B5EEBD954BFF452.fake.der":"75786e10feef22caf7b781b16153ca380c791bc90ba8eb121f5a3e815f43199d","tests/examples/026EDA6FA1EDFA8C253936C75B5EEBD954BFF452.fake.pem":"ae81d0bbbd9165ee42710194d495c9353b001a7e7aada03a19c89b8fd6762e55","tests/examples/085B1E2F40254F9C7A2387BE9FF4EC116C326E10.fake.der":"d21f492c91bcc035bbc985f6e49ce87a3c325478bd2f1d87443614c0a7a8b57d","tests/examples/0954e2343dd5efe0a7f0967d69caf33e5f893720.der":"ffc05668f1ce0de35d8dfb37ba0644b188b496f01d24dd913f98eb32853c3e8b","tests/examples/0fcc78fbbca9f32b08b19b032b84f2c86a128f35.der":"52243877830bd0977abaca6de191eda543428e1313d3eb2b2834c7c1f04981bb","tests/examples/15b05c4865410c6b3ff76a4e8f3d87276756bd0c.der":"06fd0bbbbe0ec2911161e44ce32ffd479d37c90718bd0c0613a18171bc55b1c8","tests/examples/16ee54e48c76eaa1052e09010d8faefee95e5ebb.der":"5de01a2f495fe3462633adfc9ac8bb48b3bef561e313ba59c7c20997307140d2","tests/examples/2049a5b28f104b2c6e1a08546f9cfc0353d6fd30.der":"1d3f9c44697b504d9f0e67500f9fbeaab0d15f5524e64f89cca731d9eea77809","tests/examples/21723e7a0fb61a0bd4a29879b82a02b2fb4ad096.der":"735043a0604b36febf8a355972418b75d2c0ea2ce034ae5dd04adea79c0b20af","tests/examples/284A0A3A9B56DD752DAA2E09E2FADEDB858D9338.fake.der":"58285002e787c4745e78090cb2e436a26567887cf53187d4743f276ad704f2d1","tests/examples/28879DABB0FD11618FB74E47BE049D2933866D53.fake.der":"b01dc4763a311fdd96792d37f299c579f3562c672d9657159b206b52616fb623","tests/examples/288C8BCFEE6B89D110DAE2C9873897BF7FF53382.fake.der":"cfc9e7c1dcecd1d6451ab66f9838cc42087f98145f5c4e861cef8e9d198cf9e2","tests/examples/28903a635b5280fae6774c0b6da7d6baa64af2e8.der":"12919c7d67791a0e098e1ee587dc9770231eda6d0da2d512770a0a06b5ef639a","tests/examples/33D8388EDA1E92475EF19075D2EF4093D1CB6F7F.fake.der":"40a08b6bfc6808c1c84a3d6983949dbc5645d111c6aa4f2204ff5542edd39c0b","tests/examples/342cd9d3062da48c346965297f081ebc2ef68fdc.der":"405b4073c9555ff756128f108ddd82d91d9064c0ca9779ed879868a8a133cd6c","tests/examples/554D5FF11DA613A155584D8D4AA07F67724D8077.fake.der":"03324299002e5e1cc88b7ff0062f11554dc396fc18c14b0cca7559a69169f752","tests/examples/GoodCACRL.crl":"0545facc2cb39c8d8fc7ce70f4273b358e522a47fd7a1cdf64f7de2edb34d3aa","tests/examples/GoodCACert.crt":"fac99bf58934b7123b28cbb7996e412cbee7e52c496b54342cd7340309fe3e1d","tests/examples/amazon.der":"2f29cc3f99fd2174688baaece457ac193198c63e0840ad0c79f86240dd3af98e","tests/examples/amazon.pem":"794290f965510d52a2ae4592607cb1c7755f273448249cb6da53ebfb484bde38","tests/examples/crates.io-chain.pem":"04a2052fbe76e2078d0703c26d84f104080263d4ec9653629bf7e48373e64c1a","tests/examples/eca.der":"802c8187d5ddccd8338992f64c7b06f93ac8fd40b0baa94109d59ff69f5aec91","tests/examples/eca_policies.ta":"c1f09b4967382945d9903d9cf7f4a7805523f39d02f0d06448361c893e2cd389","tests/examples/entrust.der":"ba2b9abeb461886a7694cc69900588873390a196ee990a04c924303c9286ca70","tests/examples/entrust_dnConstraint.ta":"b024896247b39b35907d8b6d8d13b44cd7677368989f021b82d3030e9373197d","tests/examples/exostar.der":"54a832e3884cffb2d0a8a7b2f0229b055056605b799d18b91259001cd6b4f7c5","tests/examples/exostar_policyFlags.ta":"ae4628b0855d1ebd56e50d59f03df97d8ee866aa0c7144134531acdcc6783256","tests/examples/p256-priv.der":"d59088d2ee7ae348a2004e1b68310cbb578bdb55d6dfcc818d3d2db5a6fac41c","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/qualcomm.pem":"65a9088c4005f63ea7bc2be4974c55fd9b0362915d806f00eb728f2b30dd01da","tests/examples/raytheon.der":"100b1620083fd0132b8a84f9f388556e8b2db071bdcff6e8fc2635c34bdeb8aa","tests/examples/raytheon_pathLenConstraint.ta":"cd7aac4eca47245f84d3716d39d5f22e0fe1e7f5d867289ce19e34394743d3c9","tests/examples/rsa2048-crt.der":"71ec02da3c975c35a3bffaf8207563930af6a2a4cce77893739a6a194b537560","tests/examples/rsa2048-crt.pem":"3296eab83df1a45b39d5f31247ae13378b0304db1b43592406ef801fe138aab6","tests/examples/rsa2048-csr.der":"9f8bd4b70808b133c510294647dd79bcdf9a1ca473bb9040a5d54a80fa764d42","tests/examples/rsa2048-csr.pem":"70007309164b32603e7f6803ed95a5ae90b780bec64eb8c94c38b1188b5e4525","tests/examples/rsa2048-priv.der":"2e3d02886556a2dc878dd7a77ada1da31ccfccf2bf7e9a7bd95a8af2e69a6a90","tests/examples/rsa2048-prv.der":"b2990cf58ec751a094b322a1d83da5ca872a4da703e843210c38867d6ac8962f","tests/examples/rsa2048-prv.pem":"8a7b693904789775feba3d1f359777e0d260a61a3ebb6ce5d9fa03d7aab2c0c5","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/tscpbcasha256.crl":"d65fda5694a4f1ef96634e132745bf027ddb6a7389d5f859081675a66dfb7dcb","tests/general_name.rs":"365c44f393415793f227a91742416ee4a7aa4e28642f2a7dba1132fee226c8b6","tests/name.rs":"e751de20cddfd5d85ffdd44ba4b7d6124007ef6ba6ea3c24352973170f846cf6","tests/pkix_extensions.rs":"b62c295181af15be496b1951547dad88821037f09cdd5d85f73ac9d192745627","tests/trust_anchor_format.rs":"c897b75bc08e23871fc8fb1d411a3534346edf7e2b705369fff7e9098f71e910","tests/validity.rs":"9a5b74e2d0e6846434356d7091100c337ced43575430dc15e975e6858e957c62"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"4450696ae6ab5f1a7acbf231d29ff4499b76ec5aeafaaada91d9b37017aa7585","Android.bp":"93fd251649cfa0c9d7a216d003cf390f9a99014bc86a2fdbe5745919c5fc185e","CHANGELOG.md":"69350a877f33e45fd0ee86ac5436f70c9fcb8f69259029307f110ab0b1c73253","Cargo.toml":"30fe6e7745b6594a36e53d3ecbb107e4748b137ad3e4f952443c1a3a84806645","LICENSE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","LICENSE-APACHE":"a70b9d6cc87b5937a78beace08f2370fd91d1d12b38f09c5d7e004ece883f9b6","METADATA":"0c48e8dc45cdce42b21d98988f544776a3163df86519be1bd15bee1ed3dd8eb7","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cfbb7a4795d32dc807fed749c41a13f745e5936dc698235452cf9ea982ec04e5","cargo_embargo.json":"cca50f9bf4b0d6dc8c0372eb58609ced466ff6ecfd86f73817fe12d19baba498","rules.mk":"b8adb139cddc201d52ef6d24c4222d6d2a30810dad2ca49de539bd04ae095e48","src/anchor.rs":"6bc92d3e68f6ba9bd9d3688d651e455f359ec7f2f62ac1b4f1f1f1f5c9c83337","src/attr.rs":"1d27c559517156672fc12ca0e7a38cd075db4e55341b08976bce554bd9c4db7c","src/builder.rs":"8638f72af1bc3eca4ae4560ce7276b4df62c30324e80d4c6675adab7533e2bf0","src/certificate.rs":"847c2cc229e02fab606d4496d5449fce06aad99f69cb8b224c61331ced4a6587","src/crl.rs":"62aefab95d5943d54a3155f8ac73563f0fbe1947520958f4ee411b8973ea4e89","src/ext.rs":"98d1cd52285a79b16f0d68de778ac74165d084ce2e174f73798445f4270c9feb","src/ext/pkix.rs":"59e7d6c86147dfaac6aa88ae97fd74f7cd5a7c3139b41e15481496a2e2e4dca2","src/ext/pkix/access.rs":"5dbc7d2d155d3cf200a2a0c57c7f0279c988018172f284d9240d85d8ba2322ca","src/ext/pkix/authkeyid.rs":"61f8053cb614cc1231f764b872652652daeec5ae1407d5b93e047add9535da50","src/ext/pkix/certpolicy.rs":"50ff6430b3450219f36df3438d80bc8ce7be467b06e8c9f39300563a8a8bf7ca","src/ext/pkix/constraints.rs":"8993d558880f382a876c365e2c2cbf632bc3a7abb3e3ac3a46fbe95d9a7beee2","src/ext/pkix/constraints/basic.rs":"b9c1de0725b2bb265187860aa99cbcd48595fd9390cca76ce1839b25c40f449e","src/ext/pkix/constraints/name.rs":"8348eca14eb954584b3bc19ad46cfef29acfe1d2827f81735e6cb4517aa956b5","src/ext/pkix/constraints/policy.rs":"85646bf33d969a6d3b8823ea770419bc9ef94eea93c8bc8203affb90e5fa4e00","src/ext/pkix/crl.rs":"cd703adf57ca4e9744420afa7f1e3947a4e3704a016f77398a33f5b4d6828c6b","src/ext/pkix/crl/dp.rs":"1d88e871eb9b76131dc6c85188fa07db68a5d4848f2f9c7420467bacfcfc827f","src/ext/pkix/keyusage.rs":"45023e818739b40d000fed3a241aedab52ec3a7d707d96b2892e406a3d9cfc1a","src/ext/pkix/name.rs":"65bcfa0e9858bee26af4d2f7cd19a404235af07456142daab2bd59dd4a5863ef","src/ext/pkix/name/dirstr.rs":"33fbbda1bdc27a468d091694e354c9e935911fd8c715cf0cce5af56219166044","src/ext/pkix/name/dp.rs":"4e6d17b6e1ad25f91cc9b3e96ad306b1f5fb029051c95540171e08d1801ee12a","src/ext/pkix/name/ediparty.rs":"ebe08d05b367b48d606b7f2cad14dde996dedf305ad8da683e690b7e75a2333d","src/ext/pkix/name/general.rs":"d4b691503fedf3efac4af09a374eb5e48cef5d1f70a5d4e5549129f43ed24e8e","src/ext/pkix/name/other.rs":"bece63704232359568424cfea04c9b8b57151adcc031d77b777a5ede9cb82540","src/ext/pkix/policymap.rs":"9b5e6b6a4664b5fcafcc4669d98e3422993aa6a2601abb9e6d0ecd8762d1e800","src/ext/pkix/sct.rs":"34710fc07e463f4193e2d8697574d3a6649888f7ddc50c84d9d48ba25d322f1b","src/lib.rs":"fcaad0a0655ffbafe6d542b119d3c66709aa12f883c8ac71ade51f6cf7431650","src/macros.rs":"510656a58db95b7568966285da2f59ffcf7dd907d4ff32c34b13af046172e28d","src/name.rs":"a0a861483a68ac189575a4a0874474ceaf50e89d924b1eadcd3c6e2f1ed527e3","src/request.rs":"b5fe1a2660b1fab89e52e94a762fba696502ff760a0d355f757cf49cc987f4ab","src/serial_number.rs":"e4f2d5248771d488204caa23c81b2e275cbf485546f381513c5e13f58f37147b","src/time.rs":"af9ce954537d08197514e9f26de762cce745b17ef93d27cff33eacaadd8d2cbb","tests/builder.rs":"5342a6864281376f67ae4a390b32c76c97d361a622e9495108a47f53e9524005","tests/certificate.rs":"eefc0a2967f9664380c9020c20e5812e997dd48d3d0c82b308f9cda48c54fcd9","tests/certreq.rs":"fe11eb658f2b7ba8471046f8172077390f95d1ba0c20b56a1c87d232e1378463","tests/crl.rs":"a5dc9d90f3c29801350c26b0593eb121ce5457943ce542611dc2d720e9beb0ac","tests/examples/026EDA6FA1EDFA8C253936C75B5EEBD954BFF452.fake.der":"75786e10feef22caf7b781b16153ca380c791bc90ba8eb121f5a3e815f43199d","tests/examples/026EDA6FA1EDFA8C253936C75B5EEBD954BFF452.fake.pem":"ae81d0bbbd9165ee42710194d495c9353b001a7e7aada03a19c89b8fd6762e55","tests/examples/085B1E2F40254F9C7A2387BE9FF4EC116C326E10.fake.der":"d21f492c91bcc035bbc985f6e49ce87a3c325478bd2f1d87443614c0a7a8b57d","tests/examples/0954e2343dd5efe0a7f0967d69caf33e5f893720.der":"ffc05668f1ce0de35d8dfb37ba0644b188b496f01d24dd913f98eb32853c3e8b","tests/examples/0fcc78fbbca9f32b08b19b032b84f2c86a128f35.der":"52243877830bd0977abaca6de191eda543428e1313d3eb2b2834c7c1f04981bb","tests/examples/15b05c4865410c6b3ff76a4e8f3d87276756bd0c.der":"06fd0bbbbe0ec2911161e44ce32ffd479d37c90718bd0c0613a18171bc55b1c8","tests/examples/16ee54e48c76eaa1052e09010d8faefee95e5ebb.der":"5de01a2f495fe3462633adfc9ac8bb48b3bef561e313ba59c7c20997307140d2","tests/examples/2049a5b28f104b2c6e1a08546f9cfc0353d6fd30.der":"1d3f9c44697b504d9f0e67500f9fbeaab0d15f5524e64f89cca731d9eea77809","tests/examples/21723e7a0fb61a0bd4a29879b82a02b2fb4ad096.der":"735043a0604b36febf8a355972418b75d2c0ea2ce034ae5dd04adea79c0b20af","tests/examples/284A0A3A9B56DD752DAA2E09E2FADEDB858D9338.fake.der":"58285002e787c4745e78090cb2e436a26567887cf53187d4743f276ad704f2d1","tests/examples/28879DABB0FD11618FB74E47BE049D2933866D53.fake.der":"b01dc4763a311fdd96792d37f299c579f3562c672d9657159b206b52616fb623","tests/examples/288C8BCFEE6B89D110DAE2C9873897BF7FF53382.fake.der":"cfc9e7c1dcecd1d6451ab66f9838cc42087f98145f5c4e861cef8e9d198cf9e2","tests/examples/28903a635b5280fae6774c0b6da7d6baa64af2e8.der":"12919c7d67791a0e098e1ee587dc9770231eda6d0da2d512770a0a06b5ef639a","tests/examples/33D8388EDA1E92475EF19075D2EF4093D1CB6F7F.fake.der":"40a08b6bfc6808c1c84a3d6983949dbc5645d111c6aa4f2204ff5542edd39c0b","tests/examples/342cd9d3062da48c346965297f081ebc2ef68fdc.der":"405b4073c9555ff756128f108ddd82d91d9064c0ca9779ed879868a8a133cd6c","tests/examples/554D5FF11DA613A155584D8D4AA07F67724D8077.fake.der":"03324299002e5e1cc88b7ff0062f11554dc396fc18c14b0cca7559a69169f752","tests/examples/GoodCACRL.crl":"0545facc2cb39c8d8fc7ce70f4273b358e522a47fd7a1cdf64f7de2edb34d3aa","tests/examples/GoodCACert.crt":"fac99bf58934b7123b28cbb7996e412cbee7e52c496b54342cd7340309fe3e1d","tests/examples/amazon.der":"2f29cc3f99fd2174688baaece457ac193198c63e0840ad0c79f86240dd3af98e","tests/examples/amazon.pem":"794290f965510d52a2ae4592607cb1c7755f273448249cb6da53ebfb484bde38","tests/examples/crates.io-chain.pem":"04a2052fbe76e2078d0703c26d84f104080263d4ec9653629bf7e48373e64c1a","tests/examples/eca.der":"802c8187d5ddccd8338992f64c7b06f93ac8fd40b0baa94109d59ff69f5aec91","tests/examples/eca_policies.ta":"c1f09b4967382945d9903d9cf7f4a7805523f39d02f0d06448361c893e2cd389","tests/examples/entrust.der":"ba2b9abeb461886a7694cc69900588873390a196ee990a04c924303c9286ca70","tests/examples/entrust_dnConstraint.ta":"b024896247b39b35907d8b6d8d13b44cd7677368989f021b82d3030e9373197d","tests/examples/exostar.der":"54a832e3884cffb2d0a8a7b2f0229b055056605b799d18b91259001cd6b4f7c5","tests/examples/exostar_policyFlags.ta":"ae4628b0855d1ebd56e50d59f03df97d8ee866aa0c7144134531acdcc6783256","tests/examples/p256-priv.der":"d59088d2ee7ae348a2004e1b68310cbb578bdb55d6dfcc818d3d2db5a6fac41c","tests/examples/p256-pub.der":"ab6440b4b3b9de11add8399ed3ace375998b699e98a6a866e64cb153e6e4ed02","tests/examples/qualcomm.pem":"65a9088c4005f63ea7bc2be4974c55fd9b0362915d806f00eb728f2b30dd01da","tests/examples/raytheon.der":"100b1620083fd0132b8a84f9f388556e8b2db071bdcff6e8fc2635c34bdeb8aa","tests/examples/raytheon_pathLenConstraint.ta":"cd7aac4eca47245f84d3716d39d5f22e0fe1e7f5d867289ce19e34394743d3c9","tests/examples/rsa2048-crt.der":"71ec02da3c975c35a3bffaf8207563930af6a2a4cce77893739a6a194b537560","tests/examples/rsa2048-crt.pem":"3296eab83df1a45b39d5f31247ae13378b0304db1b43592406ef801fe138aab6","tests/examples/rsa2048-csr.der":"9f8bd4b70808b133c510294647dd79bcdf9a1ca473bb9040a5d54a80fa764d42","tests/examples/rsa2048-csr.pem":"70007309164b32603e7f6803ed95a5ae90b780bec64eb8c94c38b1188b5e4525","tests/examples/rsa2048-priv.der":"2e3d02886556a2dc878dd7a77ada1da31ccfccf2bf7e9a7bd95a8af2e69a6a90","tests/examples/rsa2048-prv.der":"b2990cf58ec751a094b322a1d83da5ca872a4da703e843210c38867d6ac8962f","tests/examples/rsa2048-prv.pem":"8a7b693904789775feba3d1f359777e0d260a61a3ebb6ce5d9fa03d7aab2c0c5","tests/examples/rsa2048-pub.der":"ae8610c59ff00fa33560b51c864fe2cc9fa894448cc23a9829cd9b0e97477f02","tests/examples/tscpbcasha256.crl":"d65fda5694a4f1ef96634e132745bf027ddb6a7389d5f859081675a66dfb7dcb","tests/general_name.rs":"365c44f393415793f227a91742416ee4a7aa4e28642f2a7dba1132fee226c8b6","tests/name.rs":"e751de20cddfd5d85ffdd44ba4b7d6124007ef6ba6ea3c24352973170f846cf6","tests/pkix_extensions.rs":"b62c295181af15be496b1951547dad88821037f09cdd5d85f73ac9d192745627","tests/trust_anchor_format.rs":"c897b75bc08e23871fc8fb1d411a3534346edf7e2b705369fff7e9098f71e910","tests/validity.rs":"9a5b74e2d0e6846434356d7091100c337ced43575430dc15e975e6858e957c62"}}
\ No newline at end of file
diff --git a/crates/x509-cert/Android.bp b/crates/x509-cert/Android.bp
index 5080661..358181f 100644
--- a/crates/x509-cert/Android.bp
+++ b/crates/x509-cert/Android.bp
@@ -32,6 +32,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
@@ -64,6 +65,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
visibility: [
"//packages/modules/Virtualization:__subpackages__",
"//system/keymint:__subpackages__",
diff --git a/crates/x509-cert/cargo_embargo.json b/crates/x509-cert/cargo_embargo.json
index 651906c..063a4ab 100644
--- a/crates/x509-cert/cargo_embargo.json
+++ b/crates/x509-cert/cargo_embargo.json
@@ -45,5 +45,6 @@
"generate_androidbp": false,
"generate_rulesmk": true
}
- ]
-}
+ ],
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/xml-rs/.android-checksum.json b/crates/xml-rs/.android-checksum.json
index 47a890a..d21adf2 100644
--- a/crates/xml-rs/.android-checksum.json
+++ b/crates/xml-rs/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"f97f509de05c6e76cc6bce0b7590232c24dd75896244f79ad043c0e2e71290f7","Android.bp":"603abb1f198118ce534526a23e2b55510be402b45d3ae957c0e6fd0336d2357f","Cargo.lock":"51361c1562144147d0dcf9197b0f8054a9c60aa0258cd8ed80856f7fce60fbd9","Cargo.toml":"44644447b5bb0e2b0637b796212a4089b1ac347d302f262d322108b2c126a3f2","LICENSE":"5ee63d9db5255c3a45b39c7ecf23338efb6f79d7e928f117804c50c1cb603791","METADATA":"a324afc79813a8c91dc5bc74010759045834951ed56bb24d8ecfac48b18a9732","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37f1ececff2b233ce390949ff43b49abb023ae7396ed0fcb212d7a5ffe762beb","TEST_MAPPING":"4771a6513fe8af5744813691c47c20e878219ba8acf42d7d6ed13afe51e7ffc4","cargo_embargo.json":"9409e1fcb0a4039abc2b98a4709afe51f324df88d4defd2d6a3ff2b5e1a73b49","src/analyze.rs":"031e7a9ad64384c6718f1363d6fc3928cf9ff0c5bf1c4901c1366f40ae92cb3a","src/attribute.rs":"6b529fdaefc47fe11aa8b8ed4d41af79bb14a59960c0b5397545baf6dc7bb69c","src/common.rs":"bd9ca32867a933d3d8a363aa9680c18ee4dae25f67a01a015ab9847e7dbf8709","src/escape.rs":"2315cd2b5247fb401bbe097bf26a2f949178ad2fac87dfb100bdfbb7c64478cc","src/lib.rs":"4faee49dd2bf373f35f991f3c57a2ab2bb148f673889223a3d633f55ce8efe7e","src/macros.rs":"31a6869cc901d8df405f1e7f3ab7430e2e52b917ab20c7fe09f94d46bafbc09f","src/name.rs":"c81514c39b27e0a739333a247a7ea4e236d24aecee9bbb6999271703fdb9de61","src/namespace.rs":"b111bc4b917c700067947ff2e55b7ac20ad6805e376c815afcdee2d67c557754","src/reader.rs":"b202893bc5f4b474e1fe481b30bc1466772bb7f769921956b8b745b45da78c1d","src/reader/config.rs":"570efc7d75935c4a345b47a83130e1c9735472df96b77a19e4a473fe17ec643e","src/reader/error.rs":"2b4efb89b035995d00728c5669a08042399b2390326f481c0463acd736a9cdef","src/reader/events.rs":"58b7348f4350e1d31508091aeb713c637c379e76881e509fa93928b3eb5c1304","src/reader/indexset.rs":"652ad83d2d0196c43ee76e786df5dfa73e1bc110b70640123e853f93d5903b7d","src/reader/lexer.rs":"c9d4ddfaf19636978b8dc92d04724f8da46db821a94ab1c447bb84d56135db4c","src/reader/parser.rs":"cdd1e1d4efc85f9a3df99575c11b9a1eb01545274845c36236812f7528017bf1","src/reader/parser/inside_cdata.rs":"bd480b720b296c5460d0e4f3c8f7585fcf6080fec4d1f8e679605894f3fa4e8b","src/reader/parser/inside_closing_tag_name.rs":"5971e1cd643e2d1fddd720e77dae5b956e5e9717d501770640ab6a4eafb8e057","src/reader/parser/inside_comment.rs":"f76b5e14b10e083fbabe9c32c2f9ea9d083bd4f5e2d0c6aefffb1bc025df2ad9","src/reader/parser/inside_declaration.rs":"695cef79ce0e7156f30914e2cc1393feec16cdaead48d709749070cc75f580e6","src/reader/parser/inside_doctype.rs":"081daaa8732e0890fc50af7a14a5ac58572fce96cd1d295b7e5e3f452aff4fdb","src/reader/parser/inside_opening_tag.rs":"bad4fa350bc30201be71d1682c785f26fda9ee6b57eeff9b39844fb131ce9a70","src/reader/parser/inside_processing_instruction.rs":"aadb24855cdeb8f532a65e8453d09e6bee3a9250e04df14f24219666a1f20951","src/reader/parser/inside_reference.rs":"112af087101090548f7dd19c59afe2574e0d131d9ee9fe84b595260a8fb53c9a","src/reader/parser/outside_tag.rs":"b76241b4269b0cd974faeaaa3455e5aa58da859fe0796f9d8ec76c96d239e58c","src/util.rs":"0c2c12502243808219e86301809760756d8a3f163773374426aa49cc270a2462","src/writer.rs":"d2d9fb8fde82df2e6bdf868b04f8039a0be03042892e94fce78d770f45b7990f","src/writer/config.rs":"0abbd619e9232418e0db251a6d673add1c8a2344ca63d22715335fd4e5bd98e4","src/writer/emitter.rs":"02a1c968f25308c1b43b082ed2d2f6301d86b3eaef924baf1d7e24efe0d05ab1","src/writer/events.rs":"b5f98d3cc13b58ab68012b242af7470a5226075577e66477b8a3ad2459ba7a92"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"f97f509de05c6e76cc6bce0b7590232c24dd75896244f79ad043c0e2e71290f7","Android.bp":"64a83690a7385e627713647027c68f2801731aa270388667e1d92965db939bdb","Cargo.lock":"51361c1562144147d0dcf9197b0f8054a9c60aa0258cd8ed80856f7fce60fbd9","Cargo.toml":"44644447b5bb0e2b0637b796212a4089b1ac347d302f262d322108b2c126a3f2","LICENSE":"5ee63d9db5255c3a45b39c7ecf23338efb6f79d7e928f117804c50c1cb603791","METADATA":"a324afc79813a8c91dc5bc74010759045834951ed56bb24d8ecfac48b18a9732","MODULE_LICENSE_MIT":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"37f1ececff2b233ce390949ff43b49abb023ae7396ed0fcb212d7a5ffe762beb","TEST_MAPPING":"4771a6513fe8af5744813691c47c20e878219ba8acf42d7d6ed13afe51e7ffc4","cargo_embargo.json":"a6f4c9db7c1e7da5b99b9183538dd35dc0d1cf56f365eda58abbc6d2ba677623","src/analyze.rs":"031e7a9ad64384c6718f1363d6fc3928cf9ff0c5bf1c4901c1366f40ae92cb3a","src/attribute.rs":"6b529fdaefc47fe11aa8b8ed4d41af79bb14a59960c0b5397545baf6dc7bb69c","src/common.rs":"bd9ca32867a933d3d8a363aa9680c18ee4dae25f67a01a015ab9847e7dbf8709","src/escape.rs":"2315cd2b5247fb401bbe097bf26a2f949178ad2fac87dfb100bdfbb7c64478cc","src/lib.rs":"4faee49dd2bf373f35f991f3c57a2ab2bb148f673889223a3d633f55ce8efe7e","src/macros.rs":"31a6869cc901d8df405f1e7f3ab7430e2e52b917ab20c7fe09f94d46bafbc09f","src/name.rs":"c81514c39b27e0a739333a247a7ea4e236d24aecee9bbb6999271703fdb9de61","src/namespace.rs":"b111bc4b917c700067947ff2e55b7ac20ad6805e376c815afcdee2d67c557754","src/reader.rs":"b202893bc5f4b474e1fe481b30bc1466772bb7f769921956b8b745b45da78c1d","src/reader/config.rs":"570efc7d75935c4a345b47a83130e1c9735472df96b77a19e4a473fe17ec643e","src/reader/error.rs":"2b4efb89b035995d00728c5669a08042399b2390326f481c0463acd736a9cdef","src/reader/events.rs":"58b7348f4350e1d31508091aeb713c637c379e76881e509fa93928b3eb5c1304","src/reader/indexset.rs":"652ad83d2d0196c43ee76e786df5dfa73e1bc110b70640123e853f93d5903b7d","src/reader/lexer.rs":"c9d4ddfaf19636978b8dc92d04724f8da46db821a94ab1c447bb84d56135db4c","src/reader/parser.rs":"cdd1e1d4efc85f9a3df99575c11b9a1eb01545274845c36236812f7528017bf1","src/reader/parser/inside_cdata.rs":"bd480b720b296c5460d0e4f3c8f7585fcf6080fec4d1f8e679605894f3fa4e8b","src/reader/parser/inside_closing_tag_name.rs":"5971e1cd643e2d1fddd720e77dae5b956e5e9717d501770640ab6a4eafb8e057","src/reader/parser/inside_comment.rs":"f76b5e14b10e083fbabe9c32c2f9ea9d083bd4f5e2d0c6aefffb1bc025df2ad9","src/reader/parser/inside_declaration.rs":"695cef79ce0e7156f30914e2cc1393feec16cdaead48d709749070cc75f580e6","src/reader/parser/inside_doctype.rs":"081daaa8732e0890fc50af7a14a5ac58572fce96cd1d295b7e5e3f452aff4fdb","src/reader/parser/inside_opening_tag.rs":"bad4fa350bc30201be71d1682c785f26fda9ee6b57eeff9b39844fb131ce9a70","src/reader/parser/inside_processing_instruction.rs":"aadb24855cdeb8f532a65e8453d09e6bee3a9250e04df14f24219666a1f20951","src/reader/parser/inside_reference.rs":"112af087101090548f7dd19c59afe2574e0d131d9ee9fe84b595260a8fb53c9a","src/reader/parser/outside_tag.rs":"b76241b4269b0cd974faeaaa3455e5aa58da859fe0796f9d8ec76c96d239e58c","src/util.rs":"0c2c12502243808219e86301809760756d8a3f163773374426aa49cc270a2462","src/writer.rs":"d2d9fb8fde82df2e6bdf868b04f8039a0be03042892e94fce78d770f45b7990f","src/writer/config.rs":"0abbd619e9232418e0db251a6d673add1c8a2344ca63d22715335fd4e5bd98e4","src/writer/emitter.rs":"02a1c968f25308c1b43b082ed2d2f6301d86b3eaef924baf1d7e24efe0d05ab1","src/writer/events.rs":"b5f98d3cc13b58ab68012b242af7470a5226075577e66477b8a3ad2459ba7a92"}}
\ No newline at end of file
diff --git a/crates/xml-rs/Android.bp b/crates/xml-rs/Android.bp
index 42e6890..2adb323 100644
--- a/crates/xml-rs/Android.bp
+++ b/crates/xml-rs/Android.bp
@@ -27,6 +27,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
rust_test {
@@ -59,4 +60,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/xml-rs/cargo_embargo.json b/crates/xml-rs/cargo_embargo.json
index f6ad908..d56e9fc 100644
--- a/crates/xml-rs/cargo_embargo.json
+++ b/crates/xml-rs/cargo_embargo.json
@@ -10,5 +10,6 @@
]
}
},
- "tests": true
-}
+ "tests": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/yaml-rust/.android-checksum.json b/crates/yaml-rust/.android-checksum.json
index 46bfb8b..b57de12 100644
--- a/crates/yaml-rust/.android-checksum.json
+++ b/crates/yaml-rust/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"69b7cd46589be6120a151c26bd581ba82d8496a1e0443cfd92cd8b1c618fd11a","Android.bp":"e9ba4a5a77c2ccb31d5bad167f31a399bddb0ed8df8e3a5883cf7218ada1e002","Cargo.lock":"69768f322adec82a32e83978daa1153bbf55e7157c6be68f27f3c7447e31cc4d","Cargo.toml":"c0cdfdf7bec83bfdca404e687dac79ab100233ae849e3ae68e34dd04273318c5","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1b92fcee669be040fbdb2d04a3f98f533a3312bb45305ae335247f2077960094","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fccf10badf54ccfe1fd013d0b7386856b0b1add8f5835081fc05b4f44d7c9601","appveyor.yml":"3eaecf6d8d175810635c52430ed41d2cef66b373a3c48f596b22f339945c465e","cargo_embargo.json":"15fe18ee1c2671cf391c9ca8da3a0b3c5c7d4cc38015db163a6f03c803662828","examples/dump_yaml.rs":"85df035437ab37550af4a632924366c9de96250b4c57da5f20bcd24787eb43b9","src/emitter.rs":"4af8ab316793642c8e4128c0220ff5e86517f3fb72ffcb285b21f77bedb306d3","src/lib.rs":"b57846e7a9ad2d588877e49c856b615edec2e753cc9ddad0b1a0a159c25ef807","src/parser.rs":"eff33f5e4fd64e95d71e7dc93657955ed2f9f8981e7308db771bc9f48cff0caa","src/scanner.rs":"a142aa9506c884d2058a8d9ac73adb5547ca441df7810b99c1e3844d3c81c630","src/yaml.rs":"059987c65daca63cfe963c50f510252887d8d5043df87be157cf8749f57bb79f","tests/quickcheck.rs":"b61d949522238782ec141fe63f4e5469cbbd5cb5229376337bc4b607eb82f5ff","tests/spec_test.rs":"dbff3206f050780c8503dc8fe5b93d0c015409f1b07537c5e9f6d930579107d4","tests/spec_test.rs.inc":"428e011227d95daecf91f387a7ebb9a240ecd7ba3daf0607962f1d7664b36c05","tests/specexamples.rs.inc":"2640bdf5c548fbbc7e3604828e643c7086bd2efa9ca9bfb80c10f0ce100bf340","tests/specs/cpp2rust.rb":"75a868620ab7d9c608a7ce75f59a9955a0d6c790fc7aee98d42bcdc16e525a79","tests/specs/handler_spec_test.cpp":"3d80a8225ccb86def8c9a4a06867cfc4ec451d50cd9e9a7f43a783f59138a48d","tests/specs/libyaml_fail-01.yaml":"79b824a696c9dbb7310a9226bb243fd0538468765b37a9f2716d538e67809e81","tests/specs/libyaml_fail-02.yaml":"9041fdf9d23a471c9d1f9c50d3a9ac9ba0cdaa307098c769ac056841a16c52c7","tests/specs/libyaml_fail-03.yaml":"e16b4747fe3903bef7c73ab07ed55f4c97eb37c99523a7ac81f906273a2fc884","tests/test_round_trip.rs":"1b94d53d737187029bcc30957c4c2fe26f4f8406db68257532ee173991a87294"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"69b7cd46589be6120a151c26bd581ba82d8496a1e0443cfd92cd8b1c618fd11a","Android.bp":"e9ba4a5a77c2ccb31d5bad167f31a399bddb0ed8df8e3a5883cf7218ada1e002","Cargo.lock":"69768f322adec82a32e83978daa1153bbf55e7157c6be68f27f3c7447e31cc4d","Cargo.toml":"c0cdfdf7bec83bfdca404e687dac79ab100233ae849e3ae68e34dd04273318c5","LICENSE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","LICENSE-APACHE":"3c7cd2396b5b772507febd2615d3d5a55b80103845037df77c87ba6e64872f2c","METADATA":"1b92fcee669be040fbdb2d04a3f98f533a3312bb45305ae335247f2077960094","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"fccf10badf54ccfe1fd013d0b7386856b0b1add8f5835081fc05b4f44d7c9601","appveyor.yml":"3eaecf6d8d175810635c52430ed41d2cef66b373a3c48f596b22f339945c465e","cargo_embargo.json":"6deb6fa80561a29c45c7f20e804eb5031746ec050226309f8dfdccfd8b282ee8","examples/dump_yaml.rs":"85df035437ab37550af4a632924366c9de96250b4c57da5f20bcd24787eb43b9","src/emitter.rs":"4af8ab316793642c8e4128c0220ff5e86517f3fb72ffcb285b21f77bedb306d3","src/lib.rs":"b57846e7a9ad2d588877e49c856b615edec2e753cc9ddad0b1a0a159c25ef807","src/parser.rs":"eff33f5e4fd64e95d71e7dc93657955ed2f9f8981e7308db771bc9f48cff0caa","src/scanner.rs":"a142aa9506c884d2058a8d9ac73adb5547ca441df7810b99c1e3844d3c81c630","src/yaml.rs":"059987c65daca63cfe963c50f510252887d8d5043df87be157cf8749f57bb79f","tests/quickcheck.rs":"b61d949522238782ec141fe63f4e5469cbbd5cb5229376337bc4b607eb82f5ff","tests/spec_test.rs":"dbff3206f050780c8503dc8fe5b93d0c015409f1b07537c5e9f6d930579107d4","tests/spec_test.rs.inc":"428e011227d95daecf91f387a7ebb9a240ecd7ba3daf0607962f1d7664b36c05","tests/specexamples.rs.inc":"2640bdf5c548fbbc7e3604828e643c7086bd2efa9ca9bfb80c10f0ce100bf340","tests/specs/cpp2rust.rb":"75a868620ab7d9c608a7ce75f59a9955a0d6c790fc7aee98d42bcdc16e525a79","tests/specs/handler_spec_test.cpp":"3d80a8225ccb86def8c9a4a06867cfc4ec451d50cd9e9a7f43a783f59138a48d","tests/specs/libyaml_fail-01.yaml":"79b824a696c9dbb7310a9226bb243fd0538468765b37a9f2716d538e67809e81","tests/specs/libyaml_fail-02.yaml":"9041fdf9d23a471c9d1f9c50d3a9ac9ba0cdaa307098c769ac056841a16c52c7","tests/specs/libyaml_fail-03.yaml":"e16b4747fe3903bef7c73ab07ed55f4c97eb37c99523a7ac81f906273a2fc884","tests/test_round_trip.rs":"1b94d53d737187029bcc30957c4c2fe26f4f8406db68257532ee173991a87294"}}
\ No newline at end of file
diff --git a/crates/yaml-rust/cargo_embargo.json b/crates/yaml-rust/cargo_embargo.json
index b696c72..da4d780 100644
--- a/crates/yaml-rust/cargo_embargo.json
+++ b/crates/yaml-rust/cargo_embargo.json
@@ -4,5 +4,6 @@
"device_supported": false
}
},
- "run_cargo": false
-}
+ "run_cargo": false,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/yoke-derive/.android-checksum.json b/crates/yoke-derive/.android-checksum.json
index 847a6a9..8c9de73 100644
--- a/crates/yoke-derive/.android-checksum.json
+++ b/crates/yoke-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"b62bdc2e0eecd71ca626665fc646f88b974cf1da4dbbf8530e0d718724bbc49c","Android.bp":"1bf6c50e49c4882ffc45fb753ccd66716a9090e8d0643cd1c37ff37a0535d59d","Cargo.lock":"8d880ec9e0ffc4a58a1e386ba8ae04414145b6ddf548818ec24c329731294679","Cargo.toml":"5295f7f369ec62c24bb4ec7faeace0d6ef7becdd04304b051018acd75d5be895","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"10bc5e159f9e567626d92d59f358e4a2e2403ef366e7ed547e2c5d503a85366e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1f7adf3490b72cd6823b0e69773a32ffbd5c7f1f4a2bbf549d44b04d17bf7b5c","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/yoke_derive.rs":"d55de1d3eac89c72b0b0087ae6383d61c5d651d13ac13aa6c5993ece60c64eaf","src/lib.rs":"b5f8e9fa20d1d6df293a514f800199ad61e4e87e6b9a2a0ed98e85960525aaf1","src/visitor.rs":"139f6551f2d3c8a1b88c24d6e2a253d5ef93a8c5d67dd442a364ac4bf23a3228"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"b62bdc2e0eecd71ca626665fc646f88b974cf1da4dbbf8530e0d718724bbc49c","Android.bp":"d36ba1d55ab575d7e4256193614c47e547243ffd12722ccbfd2087d88a0809e8","Cargo.lock":"8d880ec9e0ffc4a58a1e386ba8ae04414145b6ddf548818ec24c329731294679","Cargo.toml":"5295f7f369ec62c24bb4ec7faeace0d6ef7becdd04304b051018acd75d5be895","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"10bc5e159f9e567626d92d59f358e4a2e2403ef366e7ed547e2c5d503a85366e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"1f7adf3490b72cd6823b0e69773a32ffbd5c7f1f4a2bbf549d44b04d17bf7b5c","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/yoke_derive.rs":"d55de1d3eac89c72b0b0087ae6383d61c5d651d13ac13aa6c5993ece60c64eaf","src/lib.rs":"b5f8e9fa20d1d6df293a514f800199ad61e4e87e6b9a2a0ed98e85960525aaf1","src/visitor.rs":"139f6551f2d3c8a1b88c24d6e2a253d5ef93a8c5d67dd442a364ac4bf23a3228"}}
\ No newline at end of file
diff --git a/crates/yoke-derive/Android.bp b/crates/yoke-derive/Android.bp
index a411351..2e40dcd 100644
--- a/crates/yoke-derive/Android.bp
+++ b/crates/yoke-derive/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/yoke-derive/cargo_embargo.json b/crates/yoke-derive/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/yoke-derive/cargo_embargo.json
+++ b/crates/yoke-derive/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/yoke/.android-checksum.json b/crates/yoke/.android-checksum.json
index 32715bd..82460f0 100644
--- a/crates/yoke/.android-checksum.json
+++ b/crates/yoke/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"dfcbeb1a7eed0ff6f6e9edf6ec0f4eefb9467d64c239e5eb9a0ba96cda87c753","Android.bp":"72e13e3f48d38bc7d15e897c8fb62854cb6ba238cc7a6b8dbe3966f43548f7ef","Cargo.toml":"ab4c8cb44220d0a526478d73837eb9426c3c3a768e42decda730f859c3add4db","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"25fe4b6e9c0c93bb86ce15107245fb326f410c262d77c93e2f854055aafd2a5c","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d77955268c53928a7c925b4b8696be251fb74fd75784af1deb2ab43c64e28992","cargo_embargo.json":"38be3f7ce7f203ea8c7b1edda9f6cc526618c8e8c0a6ae88c550bdfe2155979f","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cartable_ptr.rs":"1e0b10bcaa77ced90e199abc1d731274f6dd1dfa85e6987f40a9ccfe63f69130","src/either.rs":"fdb8a686a37ebc4c3a3f4fd6a3b7e1ed61da01f97fd77fc3efe056fbc089f128","src/erased.rs":"610e62f5e995ffc6defa8f7c8e314b6b1d10b41234ad4b3eb2fb6c3ad83fef27","src/kinda_sorta_dangling.rs":"0aeb77cbb0e712a1d27a14d64bbd5d9925d60661e79706315e5181e4297b248d","src/lib.rs":"ee09d0de88bd096b37c9028f646738949a78e05ec263209091d897a6b744f0d3","src/macro_impls.rs":"8268c82be4efb49bf3757b0071bb081d59f2bad1a518524e2775776911b49f87","src/trait_hack.rs":"bee6cf50ea7be58fa9e7ccddb49ee75c318c36faf0e836a96d9394f371a7f3fb","src/yoke.rs":"36255a55be687ac2f6062d6f2fbb91ed45491785541e36c18ae6ffb52645a9fe","src/yokeable.rs":"dae3013154f6d067c751cbe43fa086e459faea0a269080f5f6c3245ef94f5305","src/zero_from.rs":"349964ad6c4b7f9454578e8ffcf1e568d21215d9433f1c1e55c19eac76446dae","tests/bincode.rs":"580acf567817c8c856bd54c13ae1eb5517f2bde0a8eb10de632df458a4efbcd0","tests/miri.rs":"220f60903e466ff5d1c8bb3977e05aa35c005f8ae0903d7b543cb58b90fd6aaf"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"dfcbeb1a7eed0ff6f6e9edf6ec0f4eefb9467d64c239e5eb9a0ba96cda87c753","Android.bp":"a3df021e8c2eb10217dbb974c6e1ecac4f05571a975ee97837bba91c3299cf27","Cargo.toml":"ab4c8cb44220d0a526478d73837eb9426c3c3a768e42decda730f859c3add4db","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"25fe4b6e9c0c93bb86ce15107245fb326f410c262d77c93e2f854055aafd2a5c","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"d77955268c53928a7c925b4b8696be251fb74fd75784af1deb2ab43c64e28992","cargo_embargo.json":"354e415f8e58adfd7447d15bdc5f7166f96b62d248288fd14e25c3d1459de6ef","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cartable_ptr.rs":"1e0b10bcaa77ced90e199abc1d731274f6dd1dfa85e6987f40a9ccfe63f69130","src/either.rs":"fdb8a686a37ebc4c3a3f4fd6a3b7e1ed61da01f97fd77fc3efe056fbc089f128","src/erased.rs":"610e62f5e995ffc6defa8f7c8e314b6b1d10b41234ad4b3eb2fb6c3ad83fef27","src/kinda_sorta_dangling.rs":"0aeb77cbb0e712a1d27a14d64bbd5d9925d60661e79706315e5181e4297b248d","src/lib.rs":"ee09d0de88bd096b37c9028f646738949a78e05ec263209091d897a6b744f0d3","src/macro_impls.rs":"8268c82be4efb49bf3757b0071bb081d59f2bad1a518524e2775776911b49f87","src/trait_hack.rs":"bee6cf50ea7be58fa9e7ccddb49ee75c318c36faf0e836a96d9394f371a7f3fb","src/yoke.rs":"36255a55be687ac2f6062d6f2fbb91ed45491785541e36c18ae6ffb52645a9fe","src/yokeable.rs":"dae3013154f6d067c751cbe43fa086e459faea0a269080f5f6c3245ef94f5305","src/zero_from.rs":"349964ad6c4b7f9454578e8ffcf1e568d21215d9433f1c1e55c19eac76446dae","tests/bincode.rs":"580acf567817c8c856bd54c13ae1eb5517f2bde0a8eb10de632df458a4efbcd0","tests/miri.rs":"220f60903e466ff5d1c8bb3977e05aa35c005f8ae0903d7b543cb58b90fd6aaf"}}
\ No newline at end of file
diff --git a/crates/yoke/Android.bp b/crates/yoke/Android.bp
index e158daa..c8080e7 100644
--- a/crates/yoke/Android.bp
+++ b/crates/yoke/Android.bp
@@ -43,6 +43,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/yoke/cargo_embargo.json b/crates/yoke/cargo_embargo.json
index 2591473..af07403 100644
--- a/crates/yoke/cargo_embargo.json
+++ b/crates/yoke/cargo_embargo.json
@@ -13,5 +13,6 @@
"yoke": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerocopy-derive/.android-checksum.json b/crates/zerocopy-derive/.android-checksum.json
index 759779f..e56fb79 100644
--- a/crates/zerocopy-derive/.android-checksum.json
+++ b/crates/zerocopy-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c4ee0020ba56abb96529e9f83915901f8aa4eac4556a9e1cbc56c77d9a66cb6d","Android.bp":"b390cfd49fa6cbdb5c7da4f865d50c8c10e8c2bd7a0b131b48178d5a2123e2b4","Cargo.toml":"0dc06a51ed1b176064315402237309f9f88b5f2a94bedca4886ddaf0a6fa37b2","LICENSE":"06f9864e3037a400a7f71dc1aa0f21e02424bc6a1e64830f099968dd03829208","LICENSE-APACHE":"06f9864e3037a400a7f71dc1aa0f21e02424bc6a1e64830f099968dd03829208","LICENSE-BSD":"d28a77dc4dd456fe1000194260fb4bdf9b97c02e58ff3202c24b1abfdf858f06","METADATA":"a85fa419bdf6646bf42d89a86a344b989fa3a6eab4871c638b6be843ae48c3ed","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"3d5b3f68b29cddd9a4914e197f6c58b71a60e1dd603641a1834a046255d6d13e","cargo_embargo.json":"2cfc52f9eb76af7f4e8556acf0400fb847df8011aaed77c31aaa5e81cb45d4df","rules.mk":"871db36f2f61170d8fb1de7b0bf147135598d2006aa10456ba695f4b921e642d","src/enum.rs":"70e28ee7f7a487985a6bac5d5d4eb984e911560795e05c328e86c84965d5c342","src/ext.rs":"e4ec13ba55bef86ad26761814a4f89265afd324d82d7c2a208aec02a35995cf4","src/lib.rs":"d97205c6e06ee1f8d9455340f495c629f27aaa8e93f4372616643d14e07cefe8","src/output_tests.rs":"388c9b437c1c5c7d3f49c070d8488a78b554630078883456f225b5d9c22c42ec","src/repr.rs":"a089e6413bd65c6b2794cbd94d1e2f4395b416dbc149ba5fc7567d59badaebae","tests/deprecated.rs":"0c0a7b634670fd922c10249dc610cff475685c7f8eddf40b768c035dc3f6a17f","tests/enum_from_zeros.rs":"4e9b6b1d2010276dc6f7148661bd753034ff4046458566e074270b543aeda3f7","tests/enum_known_layout.rs":"8706a65ac5cddcfeca6e9fc9a9ddfe85bb2439f7131d61f809abee67e71f295e","tests/enum_no_cell.rs":"2598305734b25e2f2603b193f8b3de749a3c38aa07bc15810714f6352e877d11","tests/enum_to_bytes.rs":"fbeea1398ee2e0a5884df26491496d117123c05d6690c2318642dfbd870809fe","tests/enum_try_from_bytes.rs":"1de55f76a23f03a5c13415db922b17f8531241686fd1b90e488f30d4bb59e96f","tests/enum_unaligned.rs":"39874beccbc15926c94eff003179babd3b5296dc9f0a47d7d517b693aeab2423","tests/eq.rs":"af8512e887524e2a831518f94c822f4a14e96290637aea4313ea81e3739fbfcb","tests/hash.rs":"d0f5102ada65411bdc5e4804a965a4d00918445df36540cc1c20b3314884da44","tests/hygiene.rs":"bff9a0b5ed4bc0c29b9a943acddd888ef85264cb28f3794579657e9c79ccd143","tests/include.rs":"94d274ca281d92d226641e0404d4faa9aaa8bf24b076d39e1260dbe9ffca7cff","tests/issue_2117.rs":"110dd4df5c464a9b02d29a2c90c9399dc1c9da62f25c06a6e9f07a25c9090ec5","tests/paths_and_modules.rs":"cb236f45352d641dc3fe48e34f83a4e4d1b3ee63aea19f70968b6b609da3dbbe","tests/priv_in_pub.rs":"1775c99899c66b15d0951dd03ee84e65dda736eaa64895340ae2a96dc436b3ea","tests/struct_from_bytes.rs":"56ee10792f5151079c799ffac9175c7c81939ae860cc7094ad175c59c900c949","tests/struct_from_zeros.rs":"451a0c4bbda2b864fda704006af8924a68a048663a3866bbf8fba5a4a6c70d55","tests/struct_known_layout.rs":"bfaf3adc0e8afb9a9490b29898a660a30172cf16bfa982dfd1f878ade2ec7ca3","tests/struct_no_cell.rs":"bc752c287297a3cdd72e2a7d04d761351d70ba9ed9b52d48f6013b6828eb7999","tests/struct_to_bytes.rs":"0524f1c2bed3d61aecafc773a0083daff06aaff64d86561358eef670e7ccacc6","tests/struct_try_from_bytes.rs":"97a10bad00d45f4d4797a976bcf8b777efc800ba884a046f09df1eb3d3a589f6","tests/struct_unaligned.rs":"aeae9c670e0c0c0ccb8d79835453ca7997b4463d66ffa933cc33b6c16e763cc8","tests/trybuild.rs":"6bd309c9df870ee2c95f6009708d4c2f3c5f6710fddcd115fe97603e44ac6283","tests/ui-msrv/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-msrv/derive_transparent.stderr":"d645e510da169f66f4eec6b5b7b0f014ceb24aac6d2a450755287e16679917a3","tests/ui-msrv/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-msrv/enum.stderr":"400846355a435f31db7fcd18dc959df6ac668e6ae80ce5a237238a3b80cdbca8","tests/ui-msrv/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-msrv/enum_from_bytes_u8_too_few.stderr":"52c1f193303999816f7b0757a11117c4ea56f7e7ae73438efe5e8e45b1d53148","tests/ui-msrv/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-msrv/late_compile_pass.stderr":"6f8ad04b127cf898620eace12137fc9610409e28ccf7bf20f9d500cfebcc973f","tests/ui-msrv/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-msrv/mid_compile_pass.stderr":"8db06292e6f738b9f96c2c4b57ddae236a53a3c6a37f97c5ec877b19c4e84d9c","tests/ui-msrv/msrv_specific.rs":"8672b910e03ad7e0cb6a8133cf33dfcb671600fe584f23988c3391c8fd1b5034","tests/ui-msrv/msrv_specific.stderr":"6dc08854ca9888df2ccaba439eaec90c5ff5dbd01891e7b4c8144c602cb58ea1","tests/ui-msrv/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-msrv/struct.stderr":"dec0f0dae9725da5c0f5a5a82761f0ae39493d7b73dcfea72633c910ca720e49","tests/ui-msrv/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-msrv/union.stderr":"116d11f3dc0e8c48b34b97a35acd77bdfae89d6f6e04943c4187bc7cebda3c2f","tests/ui-msrv/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-msrv/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"c50fa04bfada2b6caa57e5e47565e062c4966dae84bf653c6b1c1de7db8cd3ad","tests/ui-nightly/absence_of_deprecated_warning.rs":"57bfe124352c8ffaaad27236337fa9e36892c045961a63945de20d305d717d71","tests/ui-nightly/absence_of_deprecated_warning.stderr":"2e949ae43339d3266b521c044df1c83467564048cb83f331af424f84ffc1304d","tests/ui-nightly/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-nightly/derive_transparent.stderr":"644da03a3149ff483de7d87476964a88f36ff5593f224502b600c8aaf7701f50","tests/ui-nightly/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-nightly/enum.stderr":"c396d5cb9ebb2a2360ec6cb19cdc840342ccd35a9d090645fc0dacfb094f93d4","tests/ui-nightly/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-nightly/enum_from_bytes_u8_too_few.stderr":"5f54bc513207b3eb7486c47fab46ddb2717593aa85f992659d536950024ad988","tests/ui-nightly/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-nightly/late_compile_pass.stderr":"9d550aa2175def865b41632d0607988f7e9fe0d8565cd34f44c050de4d88c347","tests/ui-nightly/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-nightly/mid_compile_pass.stderr":"c781918015830abd9555365ba70b39d0fedc37baf452a5918511a5cf79017184","tests/ui-nightly/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-nightly/struct.stderr":"c4c66523cbe5ec76644591975df07f920ba64e62673d0067e93e079e63452240","tests/ui-nightly/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-nightly/union.stderr":"8dfb47f797306387088b503376926bbe9d699166de64a0e4e892df58c537ac08","tests/ui-nightly/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-nightly/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"10aea1f93a8619febbe4ca9500adba4974608db2a7817c1f277337c4b3871c38","tests/ui-stable/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-stable/derive_transparent.stderr":"ab3b03d6600af57b8cd4191a738dc21645c50d43e92d9a4beab3f61f1e5408e9","tests/ui-stable/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-stable/enum.stderr":"c58fce065d7151cf74d0aa3ec02e26fc6cd7337e49c4c9632a45ef734bf7e7fe","tests/ui-stable/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-stable/enum_from_bytes_u8_too_few.stderr":"cc0181d1f9979c91dc39355e09bedd930a812efb05d55936e60f95f687a257b8","tests/ui-stable/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-stable/late_compile_pass.stderr":"690d557c85c6facf91372abf1926bf084f4722e3fbf7e3eecb5ddf969b0d830e","tests/ui-stable/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-stable/mid_compile_pass.stderr":"4bd6f119c91f2d1b92824688dd93225a8aea5cd8d44bdb57d15e70a93a833c79","tests/ui-stable/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-stable/struct.stderr":"280f70f0d49e4b16acbe4083f7f6196c4bab8f6436ff42ad7298ae0c6e789902","tests/ui-stable/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-stable/union.stderr":"a9db3302db0a71fa61d4112da6c05e56c2d804a0b1b05854bb9370359e2c6530","tests/ui-stable/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-stable/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"0222a5f41fead7d3041ade981686eaf8876c9ee0eaff12706529817d912aa088","tests/union_from_bytes.rs":"d507f7b2817b0b9e47e8b5632204b0b4efc81cf5bf39c03beeb1f123b143b9c9","tests/union_from_zeros.rs":"05af073a7045e641e1fa85de00ee18c9ca844c368dcf4dbe0727d11eff82bc38","tests/union_known_layout.rs":"9ae5f1813b6871c9b4e327afd09523d3427751297af661384c0c3ff0924d2659","tests/union_no_cell.rs":"050c9bb79ea00b07457069b4a0ae30c9dc8c2284596e6a36d08d7f72f073aab2","tests/union_to_bytes.rs":"79d210d161567b23f26c1e6eab8bd28348880cb3dce4047aa6b82ce9a7b1566e","tests/union_try_from_bytes.rs":"9459c83d62f58234123d012d3b15f06c827858a9d682cf97fe36e09739145601","tests/union_unaligned.rs":"40b6ad76ce60d20cf8c5107f3bbfac7ba9196c7c043506fbb5e9136b063e1e29"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c4ee0020ba56abb96529e9f83915901f8aa4eac4556a9e1cbc56c77d9a66cb6d","Android.bp":"3c688d4e2a42542c81e058df1be2418271f56acc3d09d1121703fe678ea99530","Cargo.toml":"0dc06a51ed1b176064315402237309f9f88b5f2a94bedca4886ddaf0a6fa37b2","LICENSE":"06f9864e3037a400a7f71dc1aa0f21e02424bc6a1e64830f099968dd03829208","LICENSE-APACHE":"06f9864e3037a400a7f71dc1aa0f21e02424bc6a1e64830f099968dd03829208","LICENSE-BSD":"d28a77dc4dd456fe1000194260fb4bdf9b97c02e58ff3202c24b1abfdf858f06","METADATA":"a85fa419bdf6646bf42d89a86a344b989fa3a6eab4871c638b6be843ae48c3ed","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","TEST_MAPPING":"3d5b3f68b29cddd9a4914e197f6c58b71a60e1dd603641a1834a046255d6d13e","cargo_embargo.json":"22a28d55056a760b416b8c6cbe7d150324cb1f078b6813860c8f372de3a22c1a","rules.mk":"871db36f2f61170d8fb1de7b0bf147135598d2006aa10456ba695f4b921e642d","src/enum.rs":"70e28ee7f7a487985a6bac5d5d4eb984e911560795e05c328e86c84965d5c342","src/ext.rs":"e4ec13ba55bef86ad26761814a4f89265afd324d82d7c2a208aec02a35995cf4","src/lib.rs":"d97205c6e06ee1f8d9455340f495c629f27aaa8e93f4372616643d14e07cefe8","src/output_tests.rs":"388c9b437c1c5c7d3f49c070d8488a78b554630078883456f225b5d9c22c42ec","src/repr.rs":"a089e6413bd65c6b2794cbd94d1e2f4395b416dbc149ba5fc7567d59badaebae","tests/deprecated.rs":"0c0a7b634670fd922c10249dc610cff475685c7f8eddf40b768c035dc3f6a17f","tests/enum_from_zeros.rs":"4e9b6b1d2010276dc6f7148661bd753034ff4046458566e074270b543aeda3f7","tests/enum_known_layout.rs":"8706a65ac5cddcfeca6e9fc9a9ddfe85bb2439f7131d61f809abee67e71f295e","tests/enum_no_cell.rs":"2598305734b25e2f2603b193f8b3de749a3c38aa07bc15810714f6352e877d11","tests/enum_to_bytes.rs":"fbeea1398ee2e0a5884df26491496d117123c05d6690c2318642dfbd870809fe","tests/enum_try_from_bytes.rs":"1de55f76a23f03a5c13415db922b17f8531241686fd1b90e488f30d4bb59e96f","tests/enum_unaligned.rs":"39874beccbc15926c94eff003179babd3b5296dc9f0a47d7d517b693aeab2423","tests/eq.rs":"af8512e887524e2a831518f94c822f4a14e96290637aea4313ea81e3739fbfcb","tests/hash.rs":"d0f5102ada65411bdc5e4804a965a4d00918445df36540cc1c20b3314884da44","tests/hygiene.rs":"bff9a0b5ed4bc0c29b9a943acddd888ef85264cb28f3794579657e9c79ccd143","tests/include.rs":"94d274ca281d92d226641e0404d4faa9aaa8bf24b076d39e1260dbe9ffca7cff","tests/issue_2117.rs":"110dd4df5c464a9b02d29a2c90c9399dc1c9da62f25c06a6e9f07a25c9090ec5","tests/paths_and_modules.rs":"cb236f45352d641dc3fe48e34f83a4e4d1b3ee63aea19f70968b6b609da3dbbe","tests/priv_in_pub.rs":"1775c99899c66b15d0951dd03ee84e65dda736eaa64895340ae2a96dc436b3ea","tests/struct_from_bytes.rs":"56ee10792f5151079c799ffac9175c7c81939ae860cc7094ad175c59c900c949","tests/struct_from_zeros.rs":"451a0c4bbda2b864fda704006af8924a68a048663a3866bbf8fba5a4a6c70d55","tests/struct_known_layout.rs":"bfaf3adc0e8afb9a9490b29898a660a30172cf16bfa982dfd1f878ade2ec7ca3","tests/struct_no_cell.rs":"bc752c287297a3cdd72e2a7d04d761351d70ba9ed9b52d48f6013b6828eb7999","tests/struct_to_bytes.rs":"0524f1c2bed3d61aecafc773a0083daff06aaff64d86561358eef670e7ccacc6","tests/struct_try_from_bytes.rs":"97a10bad00d45f4d4797a976bcf8b777efc800ba884a046f09df1eb3d3a589f6","tests/struct_unaligned.rs":"aeae9c670e0c0c0ccb8d79835453ca7997b4463d66ffa933cc33b6c16e763cc8","tests/trybuild.rs":"6bd309c9df870ee2c95f6009708d4c2f3c5f6710fddcd115fe97603e44ac6283","tests/ui-msrv/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-msrv/derive_transparent.stderr":"d645e510da169f66f4eec6b5b7b0f014ceb24aac6d2a450755287e16679917a3","tests/ui-msrv/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-msrv/enum.stderr":"400846355a435f31db7fcd18dc959df6ac668e6ae80ce5a237238a3b80cdbca8","tests/ui-msrv/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-msrv/enum_from_bytes_u8_too_few.stderr":"52c1f193303999816f7b0757a11117c4ea56f7e7ae73438efe5e8e45b1d53148","tests/ui-msrv/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-msrv/late_compile_pass.stderr":"6f8ad04b127cf898620eace12137fc9610409e28ccf7bf20f9d500cfebcc973f","tests/ui-msrv/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-msrv/mid_compile_pass.stderr":"8db06292e6f738b9f96c2c4b57ddae236a53a3c6a37f97c5ec877b19c4e84d9c","tests/ui-msrv/msrv_specific.rs":"8672b910e03ad7e0cb6a8133cf33dfcb671600fe584f23988c3391c8fd1b5034","tests/ui-msrv/msrv_specific.stderr":"6dc08854ca9888df2ccaba439eaec90c5ff5dbd01891e7b4c8144c602cb58ea1","tests/ui-msrv/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-msrv/struct.stderr":"dec0f0dae9725da5c0f5a5a82761f0ae39493d7b73dcfea72633c910ca720e49","tests/ui-msrv/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-msrv/union.stderr":"116d11f3dc0e8c48b34b97a35acd77bdfae89d6f6e04943c4187bc7cebda3c2f","tests/ui-msrv/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-msrv/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"c50fa04bfada2b6caa57e5e47565e062c4966dae84bf653c6b1c1de7db8cd3ad","tests/ui-nightly/absence_of_deprecated_warning.rs":"57bfe124352c8ffaaad27236337fa9e36892c045961a63945de20d305d717d71","tests/ui-nightly/absence_of_deprecated_warning.stderr":"2e949ae43339d3266b521c044df1c83467564048cb83f331af424f84ffc1304d","tests/ui-nightly/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-nightly/derive_transparent.stderr":"644da03a3149ff483de7d87476964a88f36ff5593f224502b600c8aaf7701f50","tests/ui-nightly/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-nightly/enum.stderr":"c396d5cb9ebb2a2360ec6cb19cdc840342ccd35a9d090645fc0dacfb094f93d4","tests/ui-nightly/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-nightly/enum_from_bytes_u8_too_few.stderr":"5f54bc513207b3eb7486c47fab46ddb2717593aa85f992659d536950024ad988","tests/ui-nightly/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-nightly/late_compile_pass.stderr":"9d550aa2175def865b41632d0607988f7e9fe0d8565cd34f44c050de4d88c347","tests/ui-nightly/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-nightly/mid_compile_pass.stderr":"c781918015830abd9555365ba70b39d0fedc37baf452a5918511a5cf79017184","tests/ui-nightly/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-nightly/struct.stderr":"c4c66523cbe5ec76644591975df07f920ba64e62673d0067e93e079e63452240","tests/ui-nightly/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-nightly/union.stderr":"8dfb47f797306387088b503376926bbe9d699166de64a0e4e892df58c537ac08","tests/ui-nightly/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-nightly/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"10aea1f93a8619febbe4ca9500adba4974608db2a7817c1f277337c4b3871c38","tests/ui-stable/derive_transparent.rs":"154b27e419fd1ff4a5aeeff3933b991fb76091254862b3a8a21de5d64d5d2cf8","tests/ui-stable/derive_transparent.stderr":"ab3b03d6600af57b8cd4191a738dc21645c50d43e92d9a4beab3f61f1e5408e9","tests/ui-stable/enum.rs":"f40df2de87dc984dc71804de50fff1365df4786f015ed2663af72abee437a048","tests/ui-stable/enum.stderr":"c58fce065d7151cf74d0aa3ec02e26fc6cd7337e49c4c9632a45ef734bf7e7fe","tests/ui-stable/enum_from_bytes_u8_too_few.rs":"7ebf87ce92ba9d3371a9cd58f370d15c74ae7a04877d1a590042fba22e36c214","tests/ui-stable/enum_from_bytes_u8_too_few.stderr":"cc0181d1f9979c91dc39355e09bedd930a812efb05d55936e60f95f687a257b8","tests/ui-stable/late_compile_pass.rs":"e8e0e441f6eca2942e5b096d93a45743a898b845450a635be26a1f21490f5139","tests/ui-stable/late_compile_pass.stderr":"690d557c85c6facf91372abf1926bf084f4722e3fbf7e3eecb5ddf969b0d830e","tests/ui-stable/mid_compile_pass.rs":"ab8d748f6e4ba10396281350dbc9b381563241e41fbdee6c2ac951dd782cd34b","tests/ui-stable/mid_compile_pass.stderr":"4bd6f119c91f2d1b92824688dd93225a8aea5cd8d44bdb57d15e70a93a833c79","tests/ui-stable/struct.rs":"b5f0bb698052a82e835922cc485a98acd93f793a592a40e038eebafbb1d1c664","tests/ui-stable/struct.stderr":"280f70f0d49e4b16acbe4083f7f6196c4bab8f6436ff42ad7298ae0c6e789902","tests/ui-stable/union.rs":"9197226c356c294e1818bf90df5dcfdcf68470e4b110c6fd37bd9b5668a16d6c","tests/ui-stable/union.stderr":"a9db3302db0a71fa61d4112da6c05e56c2d804a0b1b05854bb9370359e2c6530","tests/ui-stable/union_into_bytes_cfg/union_into_bytes_cfg.rs":"95458a42b8ccf01507c061d605a670f3424b15c2c9c7d487145c0cb551e3bbf7","tests/ui-stable/union_into_bytes_cfg/union_into_bytes_cfg.stderr":"0222a5f41fead7d3041ade981686eaf8876c9ee0eaff12706529817d912aa088","tests/union_from_bytes.rs":"d507f7b2817b0b9e47e8b5632204b0b4efc81cf5bf39c03beeb1f123b143b9c9","tests/union_from_zeros.rs":"05af073a7045e641e1fa85de00ee18c9ca844c368dcf4dbe0727d11eff82bc38","tests/union_known_layout.rs":"9ae5f1813b6871c9b4e327afd09523d3427751297af661384c0c3ff0924d2659","tests/union_no_cell.rs":"050c9bb79ea00b07457069b4a0ae30c9dc8c2284596e6a36d08d7f72f073aab2","tests/union_to_bytes.rs":"79d210d161567b23f26c1e6eab8bd28348880cb3dce4047aa6b82ce9a7b1566e","tests/union_try_from_bytes.rs":"9459c83d62f58234123d012d3b15f06c827858a9d682cf97fe36e09739145601","tests/union_unaligned.rs":"40b6ad76ce60d20cf8c5107f3bbfac7ba9196c7c043506fbb5e9136b063e1e29"}}
\ No newline at end of file
diff --git a/crates/zerocopy-derive/Android.bp b/crates/zerocopy-derive/Android.bp
index 869d687..084058a 100644
--- a/crates/zerocopy-derive/Android.bp
+++ b/crates/zerocopy-derive/Android.bp
@@ -31,6 +31,7 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
dirgroup {
diff --git a/crates/zerocopy-derive/cargo_embargo.json b/crates/zerocopy-derive/cargo_embargo.json
index 1dc3922..5238984 100644
--- a/crates/zerocopy-derive/cargo_embargo.json
+++ b/crates/zerocopy-derive/cargo_embargo.json
@@ -1,4 +1,5 @@
{
"run_cargo": false,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerofrom-derive/.android-checksum.json b/crates/zerofrom-derive/.android-checksum.json
index 128cfab..579d2b5 100644
--- a/crates/zerofrom-derive/.android-checksum.json
+++ b/crates/zerofrom-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"6c8da126f01e739790541e8fe9f24353b9268f7beb284e9faff8932dd6c7d4de","Android.bp":"1e4372440b87c3720b2ebbb7db882edefb2ff8ecb135cdf9ba9d1a8a080ac68b","Cargo.lock":"3b3218792ff6809fdbbf50e7ab71a5f90d71dbde3b573d24012ba9e36ba896df","Cargo.toml":"f0f8492279e75786ca31472b0822743283caeffee2a361b1e9f37ea4d0729b6f","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"46d55ed14b76de892616c42405f50afb787b14627df6bbb55a096f199872c02e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dc7e72fa618572b8a335636e66e7c818ee0c26114044118e5fd7285f03395ce8","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/zf_derive.rs":"9b05764709a74aa0326d27b56254b662eb4c9362d1e93c8361c9ab7fd8ce312b","src/lib.rs":"67859596412292b5a78be8d09a0c25f94059dea95f6d967f512e4df90eccde43","src/visitor.rs":"a7d668a43484c7fd77c3836591fee0c2c1e4f69b6b4fb297267d647117a12777"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"6c8da126f01e739790541e8fe9f24353b9268f7beb284e9faff8932dd6c7d4de","Android.bp":"ef073c89d7a65fe3213a7fbf004acdaf9ff9b4a5d6d03393f635e02dc57b7adc","Cargo.lock":"3b3218792ff6809fdbbf50e7ab71a5f90d71dbde3b573d24012ba9e36ba896df","Cargo.toml":"f0f8492279e75786ca31472b0822743283caeffee2a361b1e9f37ea4d0729b6f","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"46d55ed14b76de892616c42405f50afb787b14627df6bbb55a096f199872c02e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"dc7e72fa618572b8a335636e66e7c818ee0c26114044118e5fd7285f03395ce8","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/zf_derive.rs":"9b05764709a74aa0326d27b56254b662eb4c9362d1e93c8361c9ab7fd8ce312b","src/lib.rs":"67859596412292b5a78be8d09a0c25f94059dea95f6d967f512e4df90eccde43","src/visitor.rs":"a7d668a43484c7fd77c3836591fee0c2c1e4f69b6b4fb297267d647117a12777"}}
\ No newline at end of file
diff --git a/crates/zerofrom-derive/Android.bp b/crates/zerofrom-derive/Android.bp
index 59be725..9458443 100644
--- a/crates/zerofrom-derive/Android.bp
+++ b/crates/zerofrom-derive/Android.bp
@@ -32,4 +32,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/zerofrom-derive/cargo_embargo.json b/crates/zerofrom-derive/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/zerofrom-derive/cargo_embargo.json
+++ b/crates/zerofrom-derive/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerofrom/.android-checksum.json b/crates/zerofrom/.android-checksum.json
index 2c2ab84..f785e3d 100644
--- a/crates/zerofrom/.android-checksum.json
+++ b/crates/zerofrom/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"0453c4b732f01f9f4e7a69a93b92879ef97211450ddbdda18b39490ff274c7aa","Android.bp":"8947402d11904e5a284a23780ff71a00edd2542fba9faaa272278b0bdfc9939b","Cargo.toml":"9cfc072357c3dfaf219580b73e684e41888fe832ec6e5de3061b9d3bb0fbc0ac","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"844a58a19d9d39dadcbc2d37ecb630a2d498487ded22addab0a3a795df626d72","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4d5d85c1e7d4ce5d414ab940a7be71fa456e7ae8c48e46c79a7b79b6142ddd7d","cargo_embargo.json":"94c7ce879235b5ef18e5df127310107fdd8ededf1ca9d198d5079dfe82f5010d","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"6331d0a0a94d0a3a445a7b4b61c016f6a93d9918e2637a6d01bce6bfd9415c32","src/macro_impls.rs":"15db23a37d244fe7d90b143e38937b26485da852ab2175b8a4e1314df2bf0150","src/zero_from.rs":"0347fa9e07d257c0f9da2c878f809104151096156e890e42f8899d6bc9c84b0b"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"0453c4b732f01f9f4e7a69a93b92879ef97211450ddbdda18b39490ff274c7aa","Android.bp":"33899d8b15202ac665d6920ad894566a1d162efd084e3f72f9aab73eb72a86ab","Cargo.toml":"9cfc072357c3dfaf219580b73e684e41888fe832ec6e5de3061b9d3bb0fbc0ac","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"844a58a19d9d39dadcbc2d37ecb630a2d498487ded22addab0a3a795df626d72","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4d5d85c1e7d4ce5d414ab940a7be71fa456e7ae8c48e46c79a7b79b6142ddd7d","cargo_embargo.json":"4beb6cae039dea4ccdea29d87215d37a636bae3f76557c7ba0e16b0ba4b941fd","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/lib.rs":"6331d0a0a94d0a3a445a7b4b61c016f6a93d9918e2637a6d01bce6bfd9415c32","src/macro_impls.rs":"15db23a37d244fe7d90b143e38937b26485da852ab2175b8a4e1314df2bf0150","src/zero_from.rs":"0347fa9e07d257c0f9da2c878f809104151096156e890e42f8899d6bc9c84b0b"}}
\ No newline at end of file
diff --git a/crates/zerofrom/Android.bp b/crates/zerofrom/Android.bp
index 50a3e47..daeed97 100644
--- a/crates/zerofrom/Android.bp
+++ b/crates/zerofrom/Android.bp
@@ -36,6 +36,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/zerofrom/cargo_embargo.json b/crates/zerofrom/cargo_embargo.json
index 98369fa..1f1ddda 100644
--- a/crates/zerofrom/cargo_embargo.json
+++ b/crates/zerofrom/cargo_embargo.json
@@ -11,5 +11,6 @@
"zerofrom": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zeroize_derive/.android-checksum.json b/crates/zeroize_derive/.android-checksum.json
index 6d823b3..90b12fb 100644
--- a/crates/zeroize_derive/.android-checksum.json
+++ b/crates/zeroize_derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"bea54ad607599036fd8d450cc77fcc839769ac85a43046e5ac4529f6a2821ff1","Android.bp":"99275bf7c3bdbdd9261779746a461e85f7d139c988352c167e44e6cfcc28d7b9","CHANGELOG.md":"a592d36d7522c6d40ad082cc286287ee6d1f4c1aa5a5909c7d153242a963e2dd","Cargo.toml":"fe5134df1a56e74356e952c704b5eca94555aa4ebb2803bab4cf451530109f6a","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"f0a235885303ce98dc94441ca40a169924a4e691cad7b4a721b8486666c2af18","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7a22e7b2d19b75b27c47191b89b237ed444408a0338ee085775984b3b1f21462","TEST_MAPPING":"f9756a14ecd6f5daa1f771e2d78035ab1526b9dbb21a90a00a0b983d7a46273d","cargo_embargo.json":"21973b8c99b035a05ca6f2e1dd6b848635e8945874fa6d1373027abc842e0cc9","patches/proc_macro.patch":"54f216a29877ff3c46753ddb3307f0014ab4353813f951db803f6477d3f6aadb","rules.mk":"2efcdb0fd479f5e605cb85418dd52cb5b96666f03a82c7f891ef47838cf40820","src/lib.rs":"ab1e6c36c820d8d812b63fecfdbdf6e8f9a6177e1640ccbf85a14d2506175fe9"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"bea54ad607599036fd8d450cc77fcc839769ac85a43046e5ac4529f6a2821ff1","Android.bp":"99275bf7c3bdbdd9261779746a461e85f7d139c988352c167e44e6cfcc28d7b9","CHANGELOG.md":"a592d36d7522c6d40ad082cc286287ee6d1f4c1aa5a5909c7d153242a963e2dd","Cargo.toml":"fe5134df1a56e74356e952c704b5eca94555aa4ebb2803bab4cf451530109f6a","LICENSE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","LICENSE-APACHE":"7c6512d88b3127990067585f24881ba1f182c5c49a04cb1975b226b7be95709e","METADATA":"f0a235885303ce98dc94441ca40a169924a4e691cad7b4a721b8486666c2af18","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"7a22e7b2d19b75b27c47191b89b237ed444408a0338ee085775984b3b1f21462","TEST_MAPPING":"f9756a14ecd6f5daa1f771e2d78035ab1526b9dbb21a90a00a0b983d7a46273d","cargo_embargo.json":"b4d97154a41a6e23ea02968f8006fb337b44a41979bfb1943342398b619b6ef2","patches/proc_macro.patch":"54f216a29877ff3c46753ddb3307f0014ab4353813f951db803f6477d3f6aadb","rules.mk":"2efcdb0fd479f5e605cb85418dd52cb5b96666f03a82c7f891ef47838cf40820","src/lib.rs":"ab1e6c36c820d8d812b63fecfdbdf6e8f9a6177e1640ccbf85a14d2506175fe9"}}
\ No newline at end of file
diff --git a/crates/zeroize_derive/cargo_embargo.json b/crates/zeroize_derive/cargo_embargo.json
index c0af86e..e52c2af 100644
--- a/crates/zeroize_derive/cargo_embargo.json
+++ b/crates/zeroize_derive/cargo_embargo.json
@@ -7,5 +7,6 @@
},
"run_cargo": false,
"tests": true,
- "generate_rulesmk": true
-}
+ "generate_rulesmk": true,
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerotrie/.android-checksum.json b/crates/zerotrie/.android-checksum.json
index 24ade38..ec6a0a9 100644
--- a/crates/zerotrie/.android-checksum.json
+++ b/crates/zerotrie/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"7fca89be9d46293692e32ddafef24b81fca6113a5bde40d4d71a2b68918e2fa5","Android.bp":"3342763ba5e5e4ef82a0b5b720df3df972f9b3f82eb282c871314ef4c88e8be4","Cargo.lock":"35bf92f7f14123b7d022645b99588731274f24684d574ebd97907501aab52106","Cargo.toml":"3dfd580f67c7ca2e689e2b6be23cd5d1c1a73d1c354441008d48d68e9b260c7b","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"1d1f745738c339f62e2112e525e2552d7f63c094751a557b1b359c9e4c26c838","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca2461e60e640469ae3cee7f67c33ca49e2cd188786875da76475fc8dcdb88a6","benches/overview.rs":"df7595a7ecc1dd1739aa74d50b2960df7dadfd784ac744b2a97d8f9b4cd4e1b9","cargo_embargo.json":"51578acca1c0520aaa99b866bef45f2aef7004169fb949cd7344ba0f8925ec9c","examples/first_weekday_for_region.rs":"597edb30a2306ea2cad189acfb80f6ec8af73db2fad1e3b06e9ab250c1216ee1","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/builder/branch_meta.rs":"164633aff8c322d041d64bffcf5f2a77d2dc579b8a27515f4c73a768d47024e9","src/builder/bytestr.rs":"69a9cb9bc96ac2cf28c254506d50f9e47d79431c087d089723e9aea709ce69d4","src/builder/konst/builder.rs":"48556c4d144d8db44a8adfd16fb74e45a3e35ccf5c23ac08fc6a1d210ac7bc2a","src/builder/konst/mod.rs":"27b5828fe1e324e5a3c40abf02d1ae17b1a971961c3acc403b2ecebc0a198260","src/builder/konst/store.rs":"4e898f88aaed40ed60c7cb97647435980ed6307fe59c191f0b8617357918b55b","src/builder/litemap.rs":"c0555fafd92d024afe797112280033915bdcd77c02402a7b9e5e01731191fca6","src/builder/mod.rs":"8659287b8a4963d5b7209304069b19ed599d94182ce7ab179f5ac5a3f1c7244a","src/builder/nonconst/builder.rs":"b731521e49f941efc1e17934771012e9d091bc791974263eb3652732ef15bb05","src/builder/nonconst/mod.rs":"95d7a3504282deddd401fac193661e3d59c7877d26512590c5f17970b351a09c","src/builder/nonconst/store.rs":"c06404796c3ac0f6896bbbf3130cb876a7aa62703c1ec67567cbc3dc5dfb2075","src/byte_phf/builder.rs":"202b468d9dc74fb3a9d86ae995e05f9c4191a1a2b01779e320001990c53ba783","src/byte_phf/cached_owned.rs":"4fef299e889712ae12e7a7b3881aa8e93337542095d069b5a79433ffb7432256","src/byte_phf/mod.rs":"2b835d9a231ba4ee17867fb39bdd2914e6baa8f9d086fd7a869f6ae09feccfb1","src/cursor.rs":"a5a09983b90de5cd5e5edde916c4268a64531c29556c0c04a2f1548729abce5c","src/error.rs":"674bb7b25f9ee70ddd408665f6e98a72d6e1c657cf5643df46faa4768613ce98","src/helpers.rs":"a8a45071e69bbed1331ec693bad97813c32cb25478ef7d92f368497678276b02","src/lib.rs":"f531ab11381cfdae290df14517ef229cb1255591a9b115f86437b0a0ed027d14","src/options.rs":"5cbad0617ebd2b76e0260aa0d3e0a5332fca76d95a05441766c0aba2154bb034","src/reader.rs":"bf9e3d392257b31909d8ab1f50b92ffa012f8e5f5f0acc1dc835c5fd1b9fb26a","src/serde.rs":"6187ca34bb7c50cdf1a9f6dfea7237532c4bb73932a425bb92aed70aa74a2e95","src/varint.rs":"9503e35c7ba5634df4c577d9d21600fc640e9d49ca9b0c5e44aff4f8b48960fa","src/zerotrie.rs":"7bba4b643e83fdcea5ac409cfc593013b48e120619a4c8dfc241495169bd323b","tests/asciitrie_test.rs":"3cfa926bc06b3ff6021663670e1ede9c27b58ff01391dd52264e11515b7ec864","tests/builder_test.rs":"891aa952b02f0f59b083aa5d8e4a8ee5ce6450f4823c10e284505e5049eb8b72","tests/data/data.rs":"6ab515578319d34d8bce25ada3ee80b1976f2040c4a0bccc0f1338a8b96834ac","tests/derive_test.rs":"e197dfc52094346b2d40c07e40eb83bf484a40f7b9a49f339448596e98476ca6","tests/ignorecase_test.rs":"4a7293dad83f7efe4b468de8d7feadd3953098d5fff77346e1897e1534182bb1","tests/locale_aux_test.rs":"f88a1bcf781147c1c318ee75536baa9118e6be4472408e166a5f57dbc9b3a85c"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"7fca89be9d46293692e32ddafef24b81fca6113a5bde40d4d71a2b68918e2fa5","Android.bp":"02d2e7736117427d5d7020902b7c596cca19fabb9355a73efbfe0e852e2c5ca4","Cargo.lock":"35bf92f7f14123b7d022645b99588731274f24684d574ebd97907501aab52106","Cargo.toml":"3dfd580f67c7ca2e689e2b6be23cd5d1c1a73d1c354441008d48d68e9b260c7b","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"1d1f745738c339f62e2112e525e2552d7f63c094751a557b1b359c9e4c26c838","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"ca2461e60e640469ae3cee7f67c33ca49e2cd188786875da76475fc8dcdb88a6","benches/overview.rs":"df7595a7ecc1dd1739aa74d50b2960df7dadfd784ac744b2a97d8f9b4cd4e1b9","cargo_embargo.json":"8d4a65619955678eb59641eda70705abdb03f87b134621597b429f5a5319932b","examples/first_weekday_for_region.rs":"597edb30a2306ea2cad189acfb80f6ec8af73db2fad1e3b06e9ab250c1216ee1","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/builder/branch_meta.rs":"164633aff8c322d041d64bffcf5f2a77d2dc579b8a27515f4c73a768d47024e9","src/builder/bytestr.rs":"69a9cb9bc96ac2cf28c254506d50f9e47d79431c087d089723e9aea709ce69d4","src/builder/konst/builder.rs":"48556c4d144d8db44a8adfd16fb74e45a3e35ccf5c23ac08fc6a1d210ac7bc2a","src/builder/konst/mod.rs":"27b5828fe1e324e5a3c40abf02d1ae17b1a971961c3acc403b2ecebc0a198260","src/builder/konst/store.rs":"4e898f88aaed40ed60c7cb97647435980ed6307fe59c191f0b8617357918b55b","src/builder/litemap.rs":"c0555fafd92d024afe797112280033915bdcd77c02402a7b9e5e01731191fca6","src/builder/mod.rs":"8659287b8a4963d5b7209304069b19ed599d94182ce7ab179f5ac5a3f1c7244a","src/builder/nonconst/builder.rs":"b731521e49f941efc1e17934771012e9d091bc791974263eb3652732ef15bb05","src/builder/nonconst/mod.rs":"95d7a3504282deddd401fac193661e3d59c7877d26512590c5f17970b351a09c","src/builder/nonconst/store.rs":"c06404796c3ac0f6896bbbf3130cb876a7aa62703c1ec67567cbc3dc5dfb2075","src/byte_phf/builder.rs":"202b468d9dc74fb3a9d86ae995e05f9c4191a1a2b01779e320001990c53ba783","src/byte_phf/cached_owned.rs":"4fef299e889712ae12e7a7b3881aa8e93337542095d069b5a79433ffb7432256","src/byte_phf/mod.rs":"2b835d9a231ba4ee17867fb39bdd2914e6baa8f9d086fd7a869f6ae09feccfb1","src/cursor.rs":"a5a09983b90de5cd5e5edde916c4268a64531c29556c0c04a2f1548729abce5c","src/error.rs":"674bb7b25f9ee70ddd408665f6e98a72d6e1c657cf5643df46faa4768613ce98","src/helpers.rs":"a8a45071e69bbed1331ec693bad97813c32cb25478ef7d92f368497678276b02","src/lib.rs":"f531ab11381cfdae290df14517ef229cb1255591a9b115f86437b0a0ed027d14","src/options.rs":"5cbad0617ebd2b76e0260aa0d3e0a5332fca76d95a05441766c0aba2154bb034","src/reader.rs":"bf9e3d392257b31909d8ab1f50b92ffa012f8e5f5f0acc1dc835c5fd1b9fb26a","src/serde.rs":"6187ca34bb7c50cdf1a9f6dfea7237532c4bb73932a425bb92aed70aa74a2e95","src/varint.rs":"9503e35c7ba5634df4c577d9d21600fc640e9d49ca9b0c5e44aff4f8b48960fa","src/zerotrie.rs":"7bba4b643e83fdcea5ac409cfc593013b48e120619a4c8dfc241495169bd323b","tests/asciitrie_test.rs":"3cfa926bc06b3ff6021663670e1ede9c27b58ff01391dd52264e11515b7ec864","tests/builder_test.rs":"891aa952b02f0f59b083aa5d8e4a8ee5ce6450f4823c10e284505e5049eb8b72","tests/data/data.rs":"6ab515578319d34d8bce25ada3ee80b1976f2040c4a0bccc0f1338a8b96834ac","tests/derive_test.rs":"e197dfc52094346b2d40c07e40eb83bf484a40f7b9a49f339448596e98476ca6","tests/ignorecase_test.rs":"4a7293dad83f7efe4b468de8d7feadd3953098d5fff77346e1897e1534182bb1","tests/locale_aux_test.rs":"f88a1bcf781147c1c318ee75536baa9118e6be4472408e166a5f57dbc9b3a85c"}}
\ No newline at end of file
diff --git a/crates/zerotrie/Android.bp b/crates/zerotrie/Android.bp
index 2cde2ab..d22d665 100644
--- a/crates/zerotrie/Android.bp
+++ b/crates/zerotrie/Android.bp
@@ -47,6 +47,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/zerotrie/cargo_embargo.json b/crates/zerotrie/cargo_embargo.json
index c08925a..f1397a4 100644
--- a/crates/zerotrie/cargo_embargo.json
+++ b/crates/zerotrie/cargo_embargo.json
@@ -15,5 +15,6 @@
"zerotrie": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerovec-derive/.android-checksum.json b/crates/zerovec-derive/.android-checksum.json
index eb3aa19..93d0ac7 100644
--- a/crates/zerovec-derive/.android-checksum.json
+++ b/crates/zerovec-derive/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"c0f7a32672ad9ad9b92553df3906f15346a01d9dde91c666748ce3b9e0904d44","Android.bp":"18386ec6fe4615686200429132580213d5eb8e1b639389bd627fc2f3d6ca3af8","Cargo.lock":"3777d156f32753869d82761a50a0fadbbb2fa3c6e1edd48bfb3c1c52e6f69b7d","Cargo.toml":"1152a8a74c1bf28483e1291903afaa9849f05f082ada23a1cc67831b0d0481e6","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"8bfcf7051296f013f2f1eb7f96ccdaa839af47e05b9a83480135cac34835c74e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"197b90245f0698b6a9c8f4eccb992965b4f57f6e3dd97e3823a9fc64a63b70ab","cargo_embargo.json":"0be745f01ba4955b20f2cb5011168c4d8cd396af75c007035ec693c67b17bce7","examples/derives.rs":"77ceb93a7125a3959ec9dea66c5540be3cd1033611b577ecab36e1de85b88168","examples/make.rs":"51c25d7ea0bf994ec127f097ad838a70fb33008263827f580828542bb2af6032","examples/make_var.rs":"9a70808472a71cc459a77c29ef2afb496d1c6438b8964f11e5d00445bb4d9922","src/lib.rs":"363286626318c7b28a00a9d80826a57d63a23052aa5240dfe0f2481c4e41ba19","src/make_ule.rs":"95ead393b6a1aeaa8906efff01d09570b7bf2b22d2fd27691d8b58efbbc7726a","src/make_varule.rs":"f4d9ea1fcc39d95de204e38ee77dfa10b4a2a2bcad03e46463315e2e50448411","src/ule.rs":"f247e31691ef792a659d82968c008dd2df2c2baa1b597ad198f715ead4914fe7","src/utils.rs":"cb973d2c4aa8a67566ac6403d8386070c561a9c778461e327809caab0cc33633","src/varule.rs":"cfcb37316ff8fe39a63f27b9ceea0e387b4aa33a3f565df7dd94f1461f3b5ecf"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"c0f7a32672ad9ad9b92553df3906f15346a01d9dde91c666748ce3b9e0904d44","Android.bp":"70a5634932169926bf1b6d7ba48ac2b6755b479e2d34957bded6b56a8904638b","Cargo.lock":"3777d156f32753869d82761a50a0fadbbb2fa3c6e1edd48bfb3c1c52e6f69b7d","Cargo.toml":"1152a8a74c1bf28483e1291903afaa9849f05f082ada23a1cc67831b0d0481e6","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"8bfcf7051296f013f2f1eb7f96ccdaa839af47e05b9a83480135cac34835c74e","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"197b90245f0698b6a9c8f4eccb992965b4f57f6e3dd97e3823a9fc64a63b70ab","cargo_embargo.json":"122d06a7444cd85238ce1ed56a554dee47092c13f627a0c62b22f7833a264745","examples/derives.rs":"77ceb93a7125a3959ec9dea66c5540be3cd1033611b577ecab36e1de85b88168","examples/make.rs":"51c25d7ea0bf994ec127f097ad838a70fb33008263827f580828542bb2af6032","examples/make_var.rs":"9a70808472a71cc459a77c29ef2afb496d1c6438b8964f11e5d00445bb4d9922","src/lib.rs":"363286626318c7b28a00a9d80826a57d63a23052aa5240dfe0f2481c4e41ba19","src/make_ule.rs":"95ead393b6a1aeaa8906efff01d09570b7bf2b22d2fd27691d8b58efbbc7726a","src/make_varule.rs":"f4d9ea1fcc39d95de204e38ee77dfa10b4a2a2bcad03e46463315e2e50448411","src/ule.rs":"f247e31691ef792a659d82968c008dd2df2c2baa1b597ad198f715ead4914fe7","src/utils.rs":"cb973d2c4aa8a67566ac6403d8386070c561a9c778461e327809caab0cc33633","src/varule.rs":"cfcb37316ff8fe39a63f27b9ceea0e387b4aa33a3f565df7dd94f1461f3b5ecf"}}
\ No newline at end of file
diff --git a/crates/zerovec-derive/Android.bp b/crates/zerovec-derive/Android.bp
index 694cdff..7ddd847 100644
--- a/crates/zerovec-derive/Android.bp
+++ b/crates/zerovec-derive/Android.bp
@@ -31,4 +31,5 @@
],
product_available: true,
vendor_available: true,
+ min_sdk_version: "29",
}
diff --git a/crates/zerovec-derive/cargo_embargo.json b/crates/zerovec-derive/cargo_embargo.json
index 9e26dfe..41e8c50 100644
--- a/crates/zerovec-derive/cargo_embargo.json
+++ b/crates/zerovec-derive/cargo_embargo.json
@@ -1 +1,3 @@
-{}
\ No newline at end of file
+{
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/crates/zerovec/.android-checksum.json b/crates/zerovec/.android-checksum.json
index f0f7fed..12d5780 100644
--- a/crates/zerovec/.android-checksum.json
+++ b/crates/zerovec/.android-checksum.json
@@ -1 +1 @@
-{"package":null,"files":{".cargo-checksum.json":"968ba202f43270775ac5db3694caabf900b9d9cd65b9771d1aa49cbdc42c7dbe","Android.bp":"0bef13d00c6b268d406341455fff7a7b620c5152d4066d5f7e40a18a52d813ae","Cargo.lock":"a7ad35a15ea5a87b541ae5431c91fa843b6c1a71090ec2c5b99d2938b60919a2","Cargo.toml":"64949303fc6d9fb7520d0b044f6464b2a7c99813002d22e34b0def44e9784030","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"de8815efe3136f64e602368a80a86acd81796b98f3f47276f6ef29bbde58a461","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4444b206566bcc2e77259c9068689b45883777eaf4f91813313ccd8e107c1626","benches/vzv.rs":"71f4bedb51d87f5097a63625ce0d154f523186b26e68134e19aba89ee73b1b61","benches/zeromap.rs":"d09993e103f1d632f8397b658e11e184db5049ad4170f0b93b00213f01a6b354","benches/zerovec.rs":"cf14a2e05334ff318bb9ee5fc5d45c2e67e3dc154bc637b5175d32ab7499c79d","benches/zerovec_iai.rs":"4eb4de6715007d45e2383f1f39f220371a0cc19dfecac25b6c53e1e04a2ebbdd","benches/zerovec_serde.rs":"87c5ab89a89066ca0270f9158617f4463ad81fad9ee15003999156d6c0d4bef0","cargo_embargo.json":"09a3f0fc92283d9e217af6af48d06048fd2d5423c8527e6a0de82f6b6b488522","examples/zv_serde.rs":"672c8580c57322eecd71038ecb1a05d82c80f68f339767ce5da5fd25d35d5025","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cow.rs":"e60bd4128f8e54b0bcafdf4eb1904a7c943262cc47626561b1296fa2e758aee1","src/hashmap/algorithms.rs":"f7c353d2f8bf0a1fd469cb08a7eced4e6cdeb4e6832f6840976f0d067d92db1e","src/hashmap/mod.rs":"aca77ea346913e97e5e1eade8573628a907a6976b0ae2f9c74d802fb74fba65b","src/hashmap/serde.rs":"0512682495506545e1f658ef3705fae52d24122236f2686a202d420464d88a82","src/lib.rs":"f1894c050291d171b14aa069f457bc858b9d65efbabd8abe80df6c78c9a2675b","src/map/borrowed.rs":"d5511344dd7418977214222ceb7e27adc21fcbcf1424bb49433c8aeeb56bbe84","src/map/databake.rs":"977fd0499aeac307637b6a5353fa6de80d30019b467258f6ef0eefb327fc4db3","src/map/kv.rs":"f30ab692c67b2f5a59026edfefb87d99485a3a5f038f34256b89c470cb50f0c6","src/map/map.rs":"9ecc60380bbc89304b6e9e0a41227f0bf5f66531fc5af017a1677cac534fd065","src/map/mod.rs":"842729cde98fd8d786d1c6d6d8c91cea47fa2cba56dd16f176241c7ffa4f3ee1","src/map/serde.rs":"0cf7b5470eaac0342786c34d7af54d5b842e74157866f5d72d929c0e19e5933e","src/map/serde_helpers.rs":"5badf682b07f958da369283090aba12a4ca4c769e72c2335da86db39f3707afb","src/map/vecs.rs":"62e425d4108f397302f13ab58ab93992de5883656ab24f7c948cb8f5963691d3","src/map2d/borrowed.rs":"599ee678f06ada503f40bfea4bc8fb977c630450afd5e76d5965c70b100562f6","src/map2d/cursor.rs":"f61a7e7e2aedbad3ed16cf9cc0f0c75049c4c58124743679da12240892ecef07","src/map2d/databake.rs":"6a8fa15bbb5728f8c4a54ef32560a01cd17ba8fe90c0769f1d7c58c4b2ae7bf1","src/map2d/map.rs":"5febedf808208dbbba0f95ad503f30265b8b84d331c9b8ed7b92be29abf3e6dd","src/map2d/mod.rs":"34e2d0d94a8eac154c518194d638290ea60a278317c4ffbedf91555a78917085","src/map2d/serde.rs":"67d5cb054c24af13f0cdc96ca4343434bf9382533456a3d2178b7844e9e6844c","src/samples.rs":"09d82bb72200b02118740454bee6a30ebae56c2ae547fb2397a4f84d5c5182dc","src/ule/chars.rs":"3ea0c749ae43f80b2209f2de98f40d0018d4d9949933e255264ad347737b1506","src/ule/custom.rs":"7e51159fc51441189c809bb1bb09a7c06000d3e0159c17b7280d4d496a7db442","src/ule/encode.rs":"b3335b69e8f579ed6f73a8e89c5ba4d11ef155e1770b5dc096210a519da40b9c","src/ule/macros.rs":"dc8290d7e04533f0678acce17128a8a4579f926037226c7ea89e10503ca0945a","src/ule/mod.rs":"c469caf4b3fa6fef33bbd24d4bf860ea015c069bc9b905b1277b11579d04b75d","src/ule/multi.rs":"88cf70415faff4a6406cf1350d408be796431b838e5b4b9a45d432a351e9bf19","src/ule/niche.rs":"0dcdbb844c26614ed43ff920ef43c24abef4010cde223ff6a8da3e88d0786040","src/ule/option.rs":"2d7883541cd307106ec4e74e125649fbe5e433eb692e942b2ec3faeec5dec580","src/ule/plain.rs":"1dd3f8bf39dd687e2be13a3189f20cfb5929e5e99a9816f49e589be62d574d38","src/ule/slices.rs":"ff7aa3a8e10462b80ff2490d24c318d6256b3472eb29addd4369c21c7b33ad65","src/ule/test_utils.rs":"d63c4bcd060a4ffcfdd9dc1c7ee3eff9ea6be6020d51562d3dfaeae55b6bac78","src/ule/tuple.rs":"b29b03ab09d1c4f0a4efa3d86b67cf91805571e9d1adfe6a581287eb3cbc1049","src/ule/tuplevar.rs":"81041b4c6572af9df77ed181c041580b0eaaeccca26bdf02d4adfa8891b706a3","src/ule/vartuple.rs":"acec9b14d4a69915cc65705bc7e108dc537e0228992eee7dac3da6f5bfc95c01","src/varzerovec/components.rs":"cbfe3f9e660530d06e56ef5250062c04aa710914d3fff431707d03513155920a","src/varzerovec/databake.rs":"d5ffff6202671e9d95e6be5a33dcd18e4a231f993a5d6e4299646e744268d4e8","src/varzerovec/error.rs":"41f6b13eed772f764273fb9643c7c93a1ede8c05c8401d21b39bc754f6def94d","src/varzerovec/lengthless.rs":"2b9bafeae1188b2dc2fbedb63c1a9e279bbc84c60f03b376dab2c04bb7e09cc1","src/varzerovec/mod.rs":"96f8b95e0623b33b61067b97787bae81636f18f631e0b6245d30f5d70967909a","src/varzerovec/owned.rs":"1b9ed26cf0850527eaa3fb2f0380ac4b71d91dc508fe066ac45bad6ad6128236","src/varzerovec/serde.rs":"2807e98d8a1abbad4b13fbdde384aaa2fb4bf06a3bc6fa8d15f47b9d7529589f","src/varzerovec/slice.rs":"616b33d9e4dc6416a7fc86ef3fbf3171d076ec798bc1598c8981939d44f634b5","src/varzerovec/vec.rs":"d9558b250a2bf0cd5549220bec38ecd451287e979d4852e7155fe00d3daa7b1b","src/yoke_impls.rs":"41a518ed6c7b887f4f11aa2081adce13c9bcfa7b793047d82c122752dc615a5d","src/zerofrom_impls.rs":"aa27025e392ec682ba2e96b026a4dd60163b5742c6904f5dfb7e9418e4a440b6","src/zerovec/databake.rs":"4e429463096afd734f04a387b7345ad62493ff71194a1f7f78e01ee9a749543a","src/zerovec/mod.rs":"aad12e7c91ec34d3dcae8eebdb357ab492a7c676d3452581fc26ae8bc942d9ed","src/zerovec/serde.rs":"d498a1a8ef05bef16e2fa1406860da53b0e4d12fae2fb162393d34dd6977466c","src/zerovec/slice.rs":"addc01b6f946ddd12c49a8a1cb8ddc7a429acf49fb42b8c264f4acbd0e060789"}}
\ No newline at end of file
+{"package":null,"files":{".cargo-checksum.json":"968ba202f43270775ac5db3694caabf900b9d9cd65b9771d1aa49cbdc42c7dbe","Android.bp":"eb0dd3c70598ae17a9ad205acbbfef9576ab62facf2736dee56469ec5f8534e0","Cargo.lock":"a7ad35a15ea5a87b541ae5431c91fa843b6c1a71090ec2c5b99d2938b60919a2","Cargo.toml":"64949303fc6d9fb7520d0b044f6464b2a7c99813002d22e34b0def44e9784030","LICENSE":"dc5bf54a256c44c7030f620e2b6abca67aa66635f54789432989d96836c552b9","METADATA":"de8815efe3136f64e602368a80a86acd81796b98f3f47276f6ef29bbde58a461","MODULE_LICENSE_UNICODE_3":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"4444b206566bcc2e77259c9068689b45883777eaf4f91813313ccd8e107c1626","benches/vzv.rs":"71f4bedb51d87f5097a63625ce0d154f523186b26e68134e19aba89ee73b1b61","benches/zeromap.rs":"d09993e103f1d632f8397b658e11e184db5049ad4170f0b93b00213f01a6b354","benches/zerovec.rs":"cf14a2e05334ff318bb9ee5fc5d45c2e67e3dc154bc637b5175d32ab7499c79d","benches/zerovec_iai.rs":"4eb4de6715007d45e2383f1f39f220371a0cc19dfecac25b6c53e1e04a2ebbdd","benches/zerovec_serde.rs":"87c5ab89a89066ca0270f9158617f4463ad81fad9ee15003999156d6c0d4bef0","cargo_embargo.json":"4c9cf2ca89776260f8916358060347dd8fed9aed7369f2b5345da8c77c13b973","examples/zv_serde.rs":"672c8580c57322eecd71038ecb1a05d82c80f68f339767ce5da5fd25d35d5025","icu4x_bionic_dep.bp.fragment":"e67d29f4766a88d822fa9c7c220ddf232e224cbbcd41763ee7d2be4f9c6cc770","src/cow.rs":"e60bd4128f8e54b0bcafdf4eb1904a7c943262cc47626561b1296fa2e758aee1","src/hashmap/algorithms.rs":"f7c353d2f8bf0a1fd469cb08a7eced4e6cdeb4e6832f6840976f0d067d92db1e","src/hashmap/mod.rs":"aca77ea346913e97e5e1eade8573628a907a6976b0ae2f9c74d802fb74fba65b","src/hashmap/serde.rs":"0512682495506545e1f658ef3705fae52d24122236f2686a202d420464d88a82","src/lib.rs":"f1894c050291d171b14aa069f457bc858b9d65efbabd8abe80df6c78c9a2675b","src/map/borrowed.rs":"d5511344dd7418977214222ceb7e27adc21fcbcf1424bb49433c8aeeb56bbe84","src/map/databake.rs":"977fd0499aeac307637b6a5353fa6de80d30019b467258f6ef0eefb327fc4db3","src/map/kv.rs":"f30ab692c67b2f5a59026edfefb87d99485a3a5f038f34256b89c470cb50f0c6","src/map/map.rs":"9ecc60380bbc89304b6e9e0a41227f0bf5f66531fc5af017a1677cac534fd065","src/map/mod.rs":"842729cde98fd8d786d1c6d6d8c91cea47fa2cba56dd16f176241c7ffa4f3ee1","src/map/serde.rs":"0cf7b5470eaac0342786c34d7af54d5b842e74157866f5d72d929c0e19e5933e","src/map/serde_helpers.rs":"5badf682b07f958da369283090aba12a4ca4c769e72c2335da86db39f3707afb","src/map/vecs.rs":"62e425d4108f397302f13ab58ab93992de5883656ab24f7c948cb8f5963691d3","src/map2d/borrowed.rs":"599ee678f06ada503f40bfea4bc8fb977c630450afd5e76d5965c70b100562f6","src/map2d/cursor.rs":"f61a7e7e2aedbad3ed16cf9cc0f0c75049c4c58124743679da12240892ecef07","src/map2d/databake.rs":"6a8fa15bbb5728f8c4a54ef32560a01cd17ba8fe90c0769f1d7c58c4b2ae7bf1","src/map2d/map.rs":"5febedf808208dbbba0f95ad503f30265b8b84d331c9b8ed7b92be29abf3e6dd","src/map2d/mod.rs":"34e2d0d94a8eac154c518194d638290ea60a278317c4ffbedf91555a78917085","src/map2d/serde.rs":"67d5cb054c24af13f0cdc96ca4343434bf9382533456a3d2178b7844e9e6844c","src/samples.rs":"09d82bb72200b02118740454bee6a30ebae56c2ae547fb2397a4f84d5c5182dc","src/ule/chars.rs":"3ea0c749ae43f80b2209f2de98f40d0018d4d9949933e255264ad347737b1506","src/ule/custom.rs":"7e51159fc51441189c809bb1bb09a7c06000d3e0159c17b7280d4d496a7db442","src/ule/encode.rs":"b3335b69e8f579ed6f73a8e89c5ba4d11ef155e1770b5dc096210a519da40b9c","src/ule/macros.rs":"dc8290d7e04533f0678acce17128a8a4579f926037226c7ea89e10503ca0945a","src/ule/mod.rs":"c469caf4b3fa6fef33bbd24d4bf860ea015c069bc9b905b1277b11579d04b75d","src/ule/multi.rs":"88cf70415faff4a6406cf1350d408be796431b838e5b4b9a45d432a351e9bf19","src/ule/niche.rs":"0dcdbb844c26614ed43ff920ef43c24abef4010cde223ff6a8da3e88d0786040","src/ule/option.rs":"2d7883541cd307106ec4e74e125649fbe5e433eb692e942b2ec3faeec5dec580","src/ule/plain.rs":"1dd3f8bf39dd687e2be13a3189f20cfb5929e5e99a9816f49e589be62d574d38","src/ule/slices.rs":"ff7aa3a8e10462b80ff2490d24c318d6256b3472eb29addd4369c21c7b33ad65","src/ule/test_utils.rs":"d63c4bcd060a4ffcfdd9dc1c7ee3eff9ea6be6020d51562d3dfaeae55b6bac78","src/ule/tuple.rs":"b29b03ab09d1c4f0a4efa3d86b67cf91805571e9d1adfe6a581287eb3cbc1049","src/ule/tuplevar.rs":"81041b4c6572af9df77ed181c041580b0eaaeccca26bdf02d4adfa8891b706a3","src/ule/vartuple.rs":"acec9b14d4a69915cc65705bc7e108dc537e0228992eee7dac3da6f5bfc95c01","src/varzerovec/components.rs":"cbfe3f9e660530d06e56ef5250062c04aa710914d3fff431707d03513155920a","src/varzerovec/databake.rs":"d5ffff6202671e9d95e6be5a33dcd18e4a231f993a5d6e4299646e744268d4e8","src/varzerovec/error.rs":"41f6b13eed772f764273fb9643c7c93a1ede8c05c8401d21b39bc754f6def94d","src/varzerovec/lengthless.rs":"2b9bafeae1188b2dc2fbedb63c1a9e279bbc84c60f03b376dab2c04bb7e09cc1","src/varzerovec/mod.rs":"96f8b95e0623b33b61067b97787bae81636f18f631e0b6245d30f5d70967909a","src/varzerovec/owned.rs":"1b9ed26cf0850527eaa3fb2f0380ac4b71d91dc508fe066ac45bad6ad6128236","src/varzerovec/serde.rs":"2807e98d8a1abbad4b13fbdde384aaa2fb4bf06a3bc6fa8d15f47b9d7529589f","src/varzerovec/slice.rs":"616b33d9e4dc6416a7fc86ef3fbf3171d076ec798bc1598c8981939d44f634b5","src/varzerovec/vec.rs":"d9558b250a2bf0cd5549220bec38ecd451287e979d4852e7155fe00d3daa7b1b","src/yoke_impls.rs":"41a518ed6c7b887f4f11aa2081adce13c9bcfa7b793047d82c122752dc615a5d","src/zerofrom_impls.rs":"aa27025e392ec682ba2e96b026a4dd60163b5742c6904f5dfb7e9418e4a440b6","src/zerovec/databake.rs":"4e429463096afd734f04a387b7345ad62493ff71194a1f7f78e01ee9a749543a","src/zerovec/mod.rs":"aad12e7c91ec34d3dcae8eebdb357ab492a7c676d3452581fc26ae8bc942d9ed","src/zerovec/serde.rs":"d498a1a8ef05bef16e2fa1406860da53b0e4d12fae2fb162393d34dd6977466c","src/zerovec/slice.rs":"addc01b6f946ddd12c49a8a1cb8ddc7a429acf49fb42b8c264f4acbd0e060789"}}
\ No newline at end of file
diff --git a/crates/zerovec/Android.bp b/crates/zerovec/Android.bp
index b6a9754..01172c4 100644
--- a/crates/zerovec/Android.bp
+++ b/crates/zerovec/Android.bp
@@ -43,6 +43,7 @@
vendor_available: true,
vendor_ramdisk_available: true,
ramdisk_available: true,
+ min_sdk_version: "29",
target: {
linux_bionic: {
enabled: true,
diff --git a/crates/zerovec/cargo_embargo.json b/crates/zerovec/cargo_embargo.json
index b44072f..3e1693f 100644
--- a/crates/zerovec/cargo_embargo.json
+++ b/crates/zerovec/cargo_embargo.json
@@ -12,5 +12,6 @@
"zerovec": {
"add_module_block": "icu4x_bionic_dep.bp.fragment"
}
- }
-}
+ },
+ "min_sdk_version": "29"
+}
\ No newline at end of file
diff --git a/extra_versions/crates/http/.android-checksum.json b/extra_versions/crates/http/.android-checksum.json
new file mode 100644
index 0000000..69068cb
--- /dev/null
+++ b/extra_versions/crates/http/.android-checksum.json
@@ -0,0 +1 @@
+{"package":null,"files":{".cargo-checksum.json":"b63b1b6789f7e1bc142fe03eb9ddfed6d9fa18929415f89c8060c1a2e9ae5e1e","Android.bp":"6ba678d75ffbbd15e4b7c68c1110a54e467a433cd9ed94016a53eaf5aec8f308","CHANGELOG.md":"3449eaff7575a6a952401813baea594771f5dec54b89d0e7ad9d1231dfeb6d13","Cargo.toml":"90b7d2891e83091e12b7257f84d72837b5ddfd2415d73a524c96d53a9594dbc9","LICENSE":"5edccf9f3f1c9ddb085f73b516c374724e8a9cd6730889230483d1c0d2ac42b9","LICENSE-APACHE":"5edccf9f3f1c9ddb085f73b516c374724e8a9cd6730889230483d1c0d2ac42b9","METADATA":"ab90313946674e6195e8ee82e3adb66a8be5d622dcc470df06a50defdda98a27","MODULE_LICENSE_APACHE2":"0d6f8afa3940b7f06bebee651376d43bc8b0d5b437337be2696d30377451e93a","README.md":"cc0f405692290be85cdd409c418f9d1150ff447af9de495da105544f1ad9e184","cargo_embargo.json":"95ee16c2149bac7717f625544b791636c86a9a976aff51176e199d6929e39db5","src/byte_str.rs":"b105c2488860e77fbff0e6945480bd0b679aff742298fd99a80949c9232765b2","src/convert.rs":"f46b18b0ac361c799b175a4c86d97640c78d4076472bba5fa11c2506d54205bd","src/error.rs":"26b887ba99b36a99ce5c83bd16c8240f2d121063228037b32fa43626157898ae","src/extensions.rs":"9ce18dd6aeb1b5bce7990b0a027d23ad02a31f64936cc4700b8430bdfbf387f2","src/header/map.rs":"c4db825abc25edf27a94ef636075dee926285e1cecf1b30e401dd1e5ddca9347","src/header/mod.rs":"768195299f22a7ef840c0c6008f19d1460d091fabcbc84de36bed83e0aa7e6e3","src/header/name.rs":"f0c77bf3c3cd5001181d86b65a1e9aaf1a444d54ee03d9edb1933d43a80626ac","src/header/value.rs":"9fe1959034e40b6a62ac7e6dec02c410ba2442f3f2efc77d5d0b2f30f71e305a","src/lib.rs":"a0676cebe0007db8ec12546c78c554ca4bc97f2a93db8dbf5d9261c27d947656","src/method.rs":"9a2e1c850fb9a46c64c43c63563961ead4c7a9f4846277bbb1715aedd020e8af","src/request.rs":"0363dde34765355479df3ca3bc08a35afec226e34b4965453d8af24f3266bd36","src/response.rs":"cb54a44744df372f28adf97080ff27b96f1f607eff259efa485e7a59a14fd265","src/status.rs":"863bbee7677651ca829a7197f3332d1491ee04da03a2913920498f10afc0061e","src/uri/authority.rs":"80ffaa8ada0f0c347a7ee3eb3f34f2514f8d33a0f2c5e8323089ac2169737e9d","src/uri/builder.rs":"f8f3c6f2585fa157699f166e0af9784a4671b45cdf27524e510601d0775c644b","src/uri/mod.rs":"1b28ca322ca9335e5622ff56801e4f50256dd350394504fd8dfb394b337839ee","src/uri/path.rs":"ff4c0cdb6dc673c5ce81c222ac1ae7e60f95f0da7d75a8958b8d39a550c9f5f1","src/uri/port.rs":"2ac93ce59ee7a644bfc9aa83dd157fc7bfb9c8581760eb860744d9d22cc6d409","src/uri/scheme.rs":"fffb4ea56225718b8eab6ff2a1846ab1aa8d89ddf615fd8426a877fe21e5cb4e","src/uri/tests.rs":"c2e0e1d4562bd43d30512ebd93f571d2ea00c94f9f516a9ad74aa9c4e05cb092","src/version.rs":"40035d5e64993486dfaa62aac7441d2590a34adc16aaaed250a75fec5ab14f4f","tests/header_map.rs":"840d368422bc4bbd66135c7ed4bceffadc1f3c82b98339cdf5c15afeb8b143b7","tests/header_map_fuzz.rs":"4abebb26eb38b864c8cfacc9f41b5f49635965ef74dc3d748ca089573b07ddeb","tests/status_code.rs":"787f9a5916e08a74ef13b4609f70263996925f252fda31f6ca5b7882fb880aa8"}}
\ No newline at end of file
diff --git a/extra_versions/crates/http/.cargo-checksum.json b/extra_versions/crates/http/.cargo-checksum.json
new file mode 100644
index 0000000..6cff050
--- /dev/null
+++ b/extra_versions/crates/http/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"2df3a57e1185cbfc8eab81f0ea8b9eab3e28854e1c5f5e712ed5db24427f5054","Cargo.toml":"de90ca352de60a54cf5dfedeb4589b7a6ef6e523a2a90fea1a0f956a7e2f7caf","LICENSE-APACHE":"8bb1b50b0e5c9399ae33bd35fab2769010fa6c14e8860c729a52295d84896b7a","LICENSE-MIT":"dc91f8200e4b2a1f9261035d4c18c33c246911a6c0f7b543d75347e61b249cff","README.md":"2b08369b8ce261843a84103642fd4d8b1ab556af6d6397dbc78c19f7025d255a","src/byte_str.rs":"e1131683d8a3234f6b0983ad1f18a46794961ce401d590378370e58c60f4fbdc","src/convert.rs":"a31a4351cd3ee36a58ff4f5b30ce2c8967cde8486faea2d2673a8f8cb74b3204","src/error.rs":"e9a0c5c2af9eb98a23f967d9ff416095c80f6998fbd14a63acebeeca9e8aedac","src/extensions.rs":"5f85c3e1eef53d0fcbd4a24a6c13828790dac74ad60f71cad365e14d39b196a6","src/header/map.rs":"8f4f9022c899abf723294f6017348238f116df939abf54f891bcc74a95cbfe71","src/header/mod.rs":"aa07991ab517f1cef50bd8ebbec6ea76b95d8faedeaa61d3e410b8bf7f737da9","src/header/name.rs":"9554b80b81ea7cfd807c1d6ff52801a07ca675c8d0dffb0eee77c22a3a3a1a26","src/header/value.rs":"ffea8236f38178fa3dd600b893d1eb8b698e3a052aaad2dbdda4a14e1b3c7108","src/lib.rs":"d4bbd2761bc5fb93f71e037c838853c2460ac43e8e176c9e4b7739ece97c4060","src/method.rs":"a40a8219cdbe1071cd448bc154dbe88e78a29d755bca2bde095190bcd595f7dd","src/request.rs":"4bf726a91d5776f11f2d29b270090550838b1cebf812ef5acdd62d00878325fc","src/response.rs":"137adc01d53225ce07c06f8f64cd082af437bcbf297dce20a3a5907e3f2544fe","src/status.rs":"fd9d1c1670bde5f94934ff2a9fa9c7f2db5bbe32a750e4e202bf2775b5c5cac3","src/uri/authority.rs":"605ab42eed3ed6692746a846f845c8f2ba7e34c4738e929e5683714f17c7a162","src/uri/builder.rs":"875506b3a603a6e35557548ed0cf3beb7de0a4d1c898316e7293f3bc2ffb05c5","src/uri/mod.rs":"fd083d2bb380268a2c1c6236aed6f312d469a55cd259fd55b20a801e72e6c8b1","src/uri/path.rs":"1a87eaedf4ce65a0af9020eff5ca4e78d1eaba0a3d05a0a99ed2cc8912054f64","src/uri/port.rs":"a30793678abc96e833d026d96f060244183ab631e19eafbbad8e4643c7bb9d86","src/uri/scheme.rs":"59e6f12d3e1e1ee982e68a4a6556f25e94073ca3d77c372b6d8d71daf8f62f2a","src/uri/tests.rs":"61f88b73490c2442ec12cb0829aa1ddd28f1bce874b4fc6dd7a544c80280aeb1","src/version.rs":"623ef60a450203b051f3457e2f095508b66aaaa799b1447fb1b34d92cb2e7d62","tests/header_map.rs":"749ef0461bff58a01d96b5072268da7b36105f60d0db585e0c616e7e440f1601","tests/header_map_fuzz.rs":"7f8be3f097ceb9e0c5c4b44ef6ae1ee209cd7b6d1ea4b4be45356142792190de","tests/status_code.rs":"4c1bd08baffa6265aad5e837b189c269a3bef9031984b37980c24a8c671ac22c"},"package":"601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"}
\ No newline at end of file
diff --git a/extra_versions/crates/http/Android.bp b/extra_versions/crates/http/Android.bp
new file mode 100644
index 0000000..176a01e
--- /dev/null
+++ b/extra_versions/crates/http/Android.bp
@@ -0,0 +1,36 @@
+// This file is generated by cargo_embargo.
+// Do not modify this file because the changes will be overridden on upgrade.
+
+package {
+ default_applicable_licenses: ["external_rust_crates_http-0.2.12_license"],
+ default_team: "trendy_team_android_rust",
+}
+
+license {
+ name: "external_rust_crates_http-0.2.12_license",
+ visibility: [":__subpackages__"],
+ license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+ license_text: ["LICENSE"],
+}
+
+rust_library {
+ name: "libhttp-0.2.12",
+ host_supported: true,
+ crate_name: "http",
+ cargo_env_compat: true,
+ cargo_pkg_version: "0.2.12",
+ crate_root: "src/lib.rs",
+ edition: "2018",
+ rustlibs: [
+ "libbytes",
+ "libfnv",
+ "libitoa",
+ ],
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ product_available: true,
+ vendor_available: true,
+ min_sdk_version: "29",
+}
diff --git a/extra_versions/crates/http/CHANGELOG.md b/extra_versions/crates/http/CHANGELOG.md
new file mode 100644
index 0000000..40e0476
--- /dev/null
+++ b/extra_versions/crates/http/CHANGELOG.md
@@ -0,0 +1,219 @@
+# 0.2.12 (March 4, 2024)
+
+* Add methods to allow trying to allocate in the `HeaderMap`, returning an error if oversize instead of panicking.
+* Fix `HeaderName::from_lowercase` that could allow NUL bytes in some cases.
+
+# 0.2.11 (November 13, 2023)
+
+* Fix MIRI error in `header::Iter`.
+
+# 0.2.10 (November 10, 2023)
+
+* Fix parsing of `Authority` to handle square brackets in incorrect order.
+* Fix `HeaderMap::with_capacity()` to handle arithmetic overflow.
+
+# 0.2.9 (February 17, 2023)
+
+* Add `HeaderName` constants for `cache-status` and `cdn-cache-control`.
+* Implement `Hash` for `PathAndQuery`.
+* Re-export `HeaderName` at crate root.
+
+# 0.2.8 (June 6, 2022)
+
+* Fix internal usage of uninitialized memory to use `MaybeUninit` inside `HeaderName`.
+
+# 0.2.7 (April 28, 2022)
+
+* MSRV bumped to `1.49`.
+* Add `extend()` method to `Extensions`.
+* Add `From<Authority>` and `From<PathAndQuery>` impls for `Uri`.
+* Make `HeaderName::from_static` a `const fn`.
+
+# 0.2.6 (December 30, 2021)
+
+* Upgrade internal `itoa` dependency to 1.0.
+
+# 0.2.5 (September 21, 2021)
+
+* Add `is_empty()` and `len()` methods to `Extensions`.
+* Add `version_ref()` method to `request::Builder`.
+* Implement `TryFrom<Vec<u8>>` and `TryFrom<String>` for `Authority`, `Uri`, `PathAndQuery`, and `HeaderName`.
+* Make `HeaderValue::from_static` a `const fn`.
+
+# 0.2.4 (April 4, 2021)
+
+* Fix `Uri` parsing to allow `{`, `"`, and `}` in paths.
+
+# 0.2.3 (January 7, 2021)
+
+* Upgrade internal (private) `bytes` dependency to 1.0.
+
+# 0.2.2 (December 14, 2020)
+
+* Fix (potential double) panic of (`HeaderMap`) `OccupiedEntry::remove_entry` and
+ `remove_entry_mult` when multiple values are present. ([#446], [#449] dekellum)
+* Safety audits of (priv) `ByteStr` and refactor of `Authority` ([#408], [#414] sbosnick)
+* Fix `HeaderName` to error instead of panic when input is too long ([#432] [#433] acfoltzer)
+* Allow `StatusCode` to encode values 100-999 without error. Use of the
+ unclassified range 600-999 remains discouraged. ([#144], [#438], [#443] quininer dekellum)
+* Add `String` and `&String` fallible conversions to `PathAndQuery` ([#450] mkindahl)
+* Fix `Authority` (and `Uri`) to error instead of panic on unbalanced brackets
+ ([#435], [#445] aeryz)
+
+# 0.2.1 (March 25, 2020)
+
+* Add `extensions_ref` and `extensions_mut` to `request::Builder` and `response::Builder`.
+
+# 0.2.0 (December 2, 2019)
+
+* Add `Version::HTTP_3` constant.
+* Add `HeaderValue::from_maybe_shared`, `HeaderValue::from_maybe_shared_unchecked`, `Uri::from_maybe_shared`, `Authority::from_maybe_shared`, and `PathAndQuery::from_maybe_shared`.
+* Change `request::Builder`, `response::Builder`, and `uri::Builder` to use by-value methods instead of by-ref.
+* Change from `HttpTryFrom` trait to `std::convert::TryFrom`.
+* Change `HeaderMap::entry` to no longer return a `Result`.
+* Change `HeaderMap::drain` iterator to match the behavior of `IntoIter`.
+* Change `Authority::port` to return an `Option<Port>` instead of `Option<u16>`.
+* Change `Uri::scheme` to return `Option<&Scheme>` instead of `Option<&str>`.
+* Change `Uri::authority` to return `Option<&Authority>` instead of `Option<&str>`.
+* Remove `InvalidUriBytes`, `InvalidHeaderNameBytes`, and `InvalidHeaderValueBytes` error types.
+* Remove `HeaderValue::from_shared`, `HeaderValue::from_shared_unchecked`, `Uri::from_shared`, `Authority::from_shared`, `Scheme::from_shared`, and `PathAndQuery::from_shared`.
+* Remove `Authority::port_part`.
+* Remove `Uri::scheme_part` and `Uri::authority_part`.
+
+# 0.1.20 (November 26, 2019)
+
+* Fix possible double-free if `header::Drain` iterator is `std::mem::forgot`en (#357).
+* Fix possible data race if multiple `header::ValueDrain`s are iterated on different threads (#362).
+* Fix `HeaderMap::reserve` capacity overflows (#360).
+* Fix parsing long authority-form `Uri`s (#351).
+
+# 0.1.19 (October 15, 2019)
+
+* Allow `%` in IPv6 addresses in `Uri` (#343).
+
+# 0.1.18 (July 26, 2019)
+
+* Fix compilation of `HeaderName` parsing on WASM targets (#324).
+* Implement `HttpTryFrom<HashMap>` for `HeaderMap` (#326).
+* Export `http::header::HeaderValue` as `http::HeaderValue`.
+
+# 0.1.17 (April 5, 2019)
+
+* Add `Error::inner_ref()` to view the kind of error (#303)
+* Add `headers_ref()` and `headers_mut()` methods to `request::Builder` and `response::Builder` (#293)
+
+# 0.1.16 (February 19, 2019)
+
+* Fix `Uri` to permit more characters in the `path` (#296)
+
+# 0.1.15 (January 22, 2019)
+
+* Fix `Uri::host()` to include brackets of IPv6 literals (#292)
+* Add `scheme_str` and `port_u16` methods to `Uri` (#287)
+* Add `method_ref`, `uri_ref`, and `headers_ref` to `request::Builder` (#284)
+
+# 0.1.14 (November 21, 2018)
+
+* Add `Port` struct (#252, #255, #265)
+* Introduce `Uri` builder (#219)
+* Empty `Method` no longer considered valid (#262)
+* Fix `Uri` equality when terminating question mark is present (#270)
+* Allow % character in userinfo (#269)
+* Support additional tokens for header names (#271)
+* Export `http::headers::{IterMut, ValuesMut}` (#278)
+
+# 0.1.13 (September 14, 2018)
+
+* impl `fmt::Display` for `HeaderName` (#249)
+* Fix `uri::Authority` parsing when there is no host after an `@` (#248)
+* Fix `Uri` parsing to allow more characters in query strings (#247)
+
+# 0.1.12 (September 7, 2018)
+
+* Fix `HeaderValue` parsing to allow HTABs (#244)
+
+# 0.1.11 (September 5, 2018)
+
+* Add `From<&Self>` for `HeaderValue`, `Method`, and `StatusCode` (#238)
+* Add `Uri::from_static` (#240)
+
+# 0.1.10 (August 8, 2018)
+
+* `impl HttpTryFrom<String>` for HeaderValue (#236)
+
+# 0.1.9 (August 7, 2018)
+
+* Fix double percent encoding (#233)
+* Add additional HttpTryFrom impls (#234)
+
+# 0.1.8 (July 23, 2018)
+
+* Add fuller set of `PartialEq` for `Method` (#221)
+* Reduce size of `HeaderMap` by using `Box<[Entry]>` instea of `Vec` (#224)
+* Reduce size of `Extensions` by storing as `Option<Box<AnyMap>>` (#227)
+* Implement `Iterator::size_hint` for most iterators in `header` (#226)
+
+# 0.1.7 (June 22, 2018)
+
+* Add `From<uN> for HeaderValue` for most integer types (#218).
+* Add `Uri::into_parts()` inherent method (same as `Parts::from(uri)`) (#214).
+* Fix converting `Uri`s in authority-form to `Parts` and then back into `Uri` (#216).
+* Fix `Authority` parsing to reject multiple port sections (#215).
+* Fix parsing 1 character authority-form `Uri`s into illegal forms (#220).
+
+# 0.1.6 (June 13, 2018)
+
+* Add `HeaderName::from_static()` constructor (#195).
+* Add `Authority::from_static()` constructor (#186).
+* Implement `From<HeaderName>` for `HeaderValue` (#184).
+* Fix duplicate keys when iterating over `header::Keys` (#201).
+
+# 0.1.5 (February 28, 2018)
+
+* Add websocket handshake related header constants (#162).
+* Parsing `Authority` with an empty string now returns an error (#164).
+* Implement `PartialEq<u16>` for `StatusCode` (#153).
+* Implement `HttpTryFrom<&Uri>` for `Uri` (#165).
+* Implement `FromStr` for `Method` (#167).
+* Implement `HttpTryFrom<String>` for `Uri` (#171).
+* Add `into_body` fns to `Request` and `Response` (#172).
+* Fix `Request::options` (#177).
+
+# 0.1.4 (January 4, 2018)
+
+* Add PathAndQuery::from_static (#148).
+* Impl PartialOrd / PartialEq for Authority and PathAndQuery (#150).
+* Add `map` fn to `Request` and `Response` (#151).
+
+# 0.1.3 (December 11, 2017)
+
+* Add `Scheme` associated consts for common protos.
+
+# 0.1.2 (November 29, 2017)
+
+* Add Uri accessor for scheme part.
+* Fix Uri parsing bug (#134)
+
+# 0.1.1 (October 9, 2017)
+
+* Provide Uri accessors for parts (#129)
+* Add Request builder helpers. (#123)
+* Misc performance improvements (#126)
+
+# 0.1.0 (September 8, 2017)
+
+* Initial release.
+
+[#144]: https://github.com/hyperium/http/issues/144
+[#408]: https://github.com/hyperium/http/pull/408
+[#414]: https://github.com/hyperium/http/pull/414
+[#432]: https://github.com/hyperium/http/issues/432
+[#433]: https://github.com/hyperium/http/pull/433
+[#438]: https://github.com/hyperium/http/pull/438
+[#443]: https://github.com/hyperium/http/pull/443
+[#446]: https://github.com/hyperium/http/issues/446
+[#449]: https://github.com/hyperium/http/pull/449
+[#450]: https://github.com/hyperium/http/pull/450
+[#435]: https://github.com/hyperium/http/issues/435
+[#445]: https://github.com/hyperium/http/pull/445
+
diff --git a/extra_versions/crates/http/Cargo.toml b/extra_versions/crates/http/Cargo.toml
new file mode 100644
index 0000000..d83b0e9
--- /dev/null
+++ b/extra_versions/crates/http/Cargo.toml
@@ -0,0 +1,60 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+rust-version = "1.49.0"
+name = "http"
+version = "0.2.12"
+authors = [
+ "Alex Crichton <[email protected]>",
+ "Carl Lerche <[email protected]>",
+ "Sean McArthur <[email protected]>",
+]
+description = """
+A set of types for representing HTTP requests and responses.
+"""
+documentation = "https://docs.rs/http"
+readme = "README.md"
+keywords = ["http"]
+categories = ["web-programming"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/hyperium/http"
+
+[dependencies.bytes]
+version = "1"
+
+[dependencies.fnv]
+version = "1.0.5"
+
+[dependencies.itoa]
+version = "1"
+
+[dev-dependencies.doc-comment]
+version = "0.3"
+
+[dev-dependencies.indexmap]
+version = "<=1.8"
+
+[dev-dependencies.quickcheck]
+version = "0.9.0"
+
+[dev-dependencies.rand]
+version = "0.7.0"
+
+[dev-dependencies.seahash]
+version = "3.0.5"
+
+[dev-dependencies.serde]
+version = "1.0"
+
+[dev-dependencies.serde_json]
+version = "1.0"
diff --git a/extra_versions/crates/http/LICENSE b/extra_versions/crates/http/LICENSE
new file mode 120000
index 0000000..6b579aa
--- /dev/null
+++ b/extra_versions/crates/http/LICENSE
@@ -0,0 +1 @@
+LICENSE-APACHE
\ No newline at end of file
diff --git a/extra_versions/crates/http/LICENSE-APACHE b/extra_versions/crates/http/LICENSE-APACHE
new file mode 100644
index 0000000..80176c2
--- /dev/null
+++ b/extra_versions/crates/http/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright 2017 http-rs authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/extra_versions/crates/http/METADATA b/extra_versions/crates/http/METADATA
new file mode 100644
index 0000000..64a040f
--- /dev/null
+++ b/extra_versions/crates/http/METADATA
@@ -0,0 +1,17 @@
+name: "http"
+description: "A set of types for representing HTTP requests and responses."
+third_party {
+ version: "0.2.12"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2025
+ month: 2
+ day: 4
+ }
+ homepage: "https://crates.io/crates/http"
+ identifier {
+ type: "Archive"
+ value: "https://static.crates.io/crates/http/http-0.2.12.crate"
+ version: "0.2.12"
+ }
+}
diff --git a/extra_versions/crates/http/MODULE_LICENSE_APACHE2 b/extra_versions/crates/http/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/extra_versions/crates/http/MODULE_LICENSE_APACHE2
diff --git a/extra_versions/crates/http/README.md b/extra_versions/crates/http/README.md
new file mode 100644
index 0000000..2ae8d56
--- /dev/null
+++ b/extra_versions/crates/http/README.md
@@ -0,0 +1,80 @@
+# HTTP
+
+A general purpose library of common HTTP types
+
+[](https://github.com/hyperium/http/actions?query=workflow%3ACI)
+[](https://crates.io/crates/http)
+[][dox]
+
+More information about this crate can be found in the [crate
+documentation][dox].
+
+[dox]: https://docs.rs/http
+
+## Usage
+
+To use `http`, first add this to your `Cargo.toml`:
+
+```toml
+[dependencies]
+http = "0.2"
+```
+
+Next, add this to your crate:
+
+```rust
+use http::{Request, Response};
+
+fn main() {
+ // ...
+}
+```
+
+## Examples
+
+Create an HTTP request:
+
+```rust
+use http::Request;
+
+fn main() {
+ let request = Request::builder()
+ .uri("https://www.rust-lang.org/")
+ .header("User-Agent", "awesome/1.0")
+ .body(())
+ .unwrap();
+}
+```
+
+Create an HTTP response:
+
+```rust
+use http::{Response, StatusCode};
+
+fn main() {
+ let response = Response::builder()
+ .status(StatusCode::MOVED_PERMANENTLY)
+ .header("Location", "https://www.rust-lang.org/install.html")
+ .body(())
+ .unwrap();
+}
+```
+
+# Supported Rust Versions
+
+This project follows the [Tokio MSRV][msrv] and is currently set to `1.49`.
+
+[msrv]: https://github.com/tokio-rs/tokio/#supported-rust-versions
+
+# License
+
+Licensed under either of
+
+- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://apache.org/licenses/LICENSE-2.0)
+- MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
+
+# Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
diff --git a/extra_versions/crates/http/cargo_embargo.json b/extra_versions/crates/http/cargo_embargo.json
new file mode 100644
index 0000000..106d95e
--- /dev/null
+++ b/extra_versions/crates/http/cargo_embargo.json
@@ -0,0 +1,8 @@
+{
+ "module_name_overrides": {
+ "libhttp": "libhttp-0.2.12",
+ "external_rust_crates_http_license": "external_rust_crates_http-0.2.12_license"
+ },
+ "min_sdk_version": "29",
+ "run_cargo": false
+}
diff --git a/extra_versions/crates/http/src/byte_str.rs b/extra_versions/crates/http/src/byte_str.rs
new file mode 100644
index 0000000..dec222b
--- /dev/null
+++ b/extra_versions/crates/http/src/byte_str.rs
@@ -0,0 +1,85 @@
+use bytes::Bytes;
+
+use std::{ops, str};
+
+#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
+pub(crate) struct ByteStr {
+ // Invariant: bytes contains valid UTF-8
+ bytes: Bytes,
+}
+
+impl ByteStr {
+ #[inline]
+ pub fn new() -> ByteStr {
+ ByteStr {
+ // Invariant: the empty slice is trivially valid UTF-8.
+ bytes: Bytes::new(),
+ }
+ }
+
+ #[inline]
+ pub const fn from_static(val: &'static str) -> ByteStr {
+ ByteStr {
+ // Invariant: val is a str so contains valid UTF-8.
+ bytes: Bytes::from_static(val.as_bytes()),
+ }
+ }
+
+ #[inline]
+ /// ## Panics
+ /// In a debug build this will panic if `bytes` is not valid UTF-8.
+ ///
+ /// ## Safety
+ /// `bytes` must contain valid UTF-8. In a release build it is undefined
+ /// behaviour to call this with `bytes` that is not valid UTF-8.
+ pub unsafe fn from_utf8_unchecked(bytes: Bytes) -> ByteStr {
+ if cfg!(debug_assertions) {
+ match str::from_utf8(&bytes) {
+ Ok(_) => (),
+ Err(err) => panic!(
+ "ByteStr::from_utf8_unchecked() with invalid bytes; error = {}, bytes = {:?}",
+ err, bytes
+ ),
+ }
+ }
+ // Invariant: assumed by the safety requirements of this function.
+ ByteStr { bytes: bytes }
+ }
+}
+
+impl ops::Deref for ByteStr {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ let b: &[u8] = self.bytes.as_ref();
+ // Safety: the invariant of `bytes` is that it contains valid UTF-8.
+ unsafe { str::from_utf8_unchecked(b) }
+ }
+}
+
+impl From<String> for ByteStr {
+ #[inline]
+ fn from(src: String) -> ByteStr {
+ ByteStr {
+ // Invariant: src is a String so contains valid UTF-8.
+ bytes: Bytes::from(src),
+ }
+ }
+}
+
+impl<'a> From<&'a str> for ByteStr {
+ #[inline]
+ fn from(src: &'a str) -> ByteStr {
+ ByteStr {
+ // Invariant: src is a str so contains valid UTF-8.
+ bytes: Bytes::copy_from_slice(src.as_bytes()),
+ }
+ }
+}
+
+impl From<ByteStr> for Bytes {
+ fn from(src: ByteStr) -> Self {
+ src.bytes
+ }
+}
diff --git a/extra_versions/crates/http/src/convert.rs b/extra_versions/crates/http/src/convert.rs
new file mode 100644
index 0000000..aeee221
--- /dev/null
+++ b/extra_versions/crates/http/src/convert.rs
@@ -0,0 +1,17 @@
+macro_rules! if_downcast_into {
+ ($in_ty:ty, $out_ty:ty, $val:ident, $body:expr) => ({
+ if std::any::TypeId::of::<$in_ty>() == std::any::TypeId::of::<$out_ty>() {
+ // Store the value in an `Option` so we can `take`
+ // it after casting to `&mut dyn Any`.
+ let mut slot = Some($val);
+ // Re-write the `$val` ident with the downcasted value.
+ let $val = (&mut slot as &mut dyn std::any::Any)
+ .downcast_mut::<Option<$out_ty>>()
+ .unwrap()
+ .take()
+ .unwrap();
+ // Run the $body in scope of the replaced val.
+ $body
+ }
+ })
+}
diff --git a/extra_versions/crates/http/src/error.rs b/extra_versions/crates/http/src/error.rs
new file mode 100644
index 0000000..762ee1c
--- /dev/null
+++ b/extra_versions/crates/http/src/error.rs
@@ -0,0 +1,160 @@
+use std::error;
+use std::fmt;
+use std::result;
+
+use crate::header;
+use crate::header::MaxSizeReached;
+use crate::method;
+use crate::status;
+use crate::uri;
+
+/// A generic "error" for HTTP connections
+///
+/// This error type is less specific than the error returned from other
+/// functions in this crate, but all other errors can be converted to this
+/// error. Consumers of this crate can typically consume and work with this form
+/// of error for conversions with the `?` operator.
+pub struct Error {
+ inner: ErrorKind,
+}
+
+/// A `Result` typedef to use with the `http::Error` type
+pub type Result<T> = result::Result<T, Error>;
+
+enum ErrorKind {
+ StatusCode(status::InvalidStatusCode),
+ Method(method::InvalidMethod),
+ Uri(uri::InvalidUri),
+ UriParts(uri::InvalidUriParts),
+ HeaderName(header::InvalidHeaderName),
+ HeaderValue(header::InvalidHeaderValue),
+ MaxSizeReached(MaxSizeReached),
+}
+
+impl fmt::Debug for Error {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_tuple("http::Error")
+ // Skip the noise of the ErrorKind enum
+ .field(&self.get_ref())
+ .finish()
+ }
+}
+
+impl fmt::Display for Error {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.get_ref(), f)
+ }
+}
+
+impl Error {
+ /// Return true if the underlying error has the same type as T.
+ pub fn is<T: error::Error + 'static>(&self) -> bool {
+ self.get_ref().is::<T>()
+ }
+
+ /// Return a reference to the lower level, inner error.
+ pub fn get_ref(&self) -> &(dyn error::Error + 'static) {
+ use self::ErrorKind::*;
+
+ match self.inner {
+ StatusCode(ref e) => e,
+ Method(ref e) => e,
+ Uri(ref e) => e,
+ UriParts(ref e) => e,
+ HeaderName(ref e) => e,
+ HeaderValue(ref e) => e,
+ MaxSizeReached(ref e) => e,
+ }
+ }
+}
+
+impl error::Error for Error {
+ // Return any available cause from the inner error. Note the inner error is
+ // not itself the cause.
+ fn source(&self) -> Option<&(dyn error::Error + 'static)> {
+ self.get_ref().source()
+ }
+}
+
+impl From<MaxSizeReached> for Error {
+ fn from(err: MaxSizeReached) -> Error {
+ Error {
+ inner: ErrorKind::MaxSizeReached(err),
+ }
+ }
+}
+
+impl From<status::InvalidStatusCode> for Error {
+ fn from(err: status::InvalidStatusCode) -> Error {
+ Error {
+ inner: ErrorKind::StatusCode(err),
+ }
+ }
+}
+
+impl From<method::InvalidMethod> for Error {
+ fn from(err: method::InvalidMethod) -> Error {
+ Error {
+ inner: ErrorKind::Method(err),
+ }
+ }
+}
+
+impl From<uri::InvalidUri> for Error {
+ fn from(err: uri::InvalidUri) -> Error {
+ Error {
+ inner: ErrorKind::Uri(err),
+ }
+ }
+}
+
+impl From<uri::InvalidUriParts> for Error {
+ fn from(err: uri::InvalidUriParts) -> Error {
+ Error {
+ inner: ErrorKind::UriParts(err),
+ }
+ }
+}
+
+impl From<header::InvalidHeaderName> for Error {
+ fn from(err: header::InvalidHeaderName) -> Error {
+ Error {
+ inner: ErrorKind::HeaderName(err),
+ }
+ }
+}
+
+impl From<header::InvalidHeaderValue> for Error {
+ fn from(err: header::InvalidHeaderValue) -> Error {
+ Error {
+ inner: ErrorKind::HeaderValue(err),
+ }
+ }
+}
+
+impl From<std::convert::Infallible> for Error {
+ fn from(err: std::convert::Infallible) -> Error {
+ match err {}
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn inner_error_is_invalid_status_code() {
+ if let Err(e) = status::StatusCode::from_u16(6666) {
+ let err: Error = e.into();
+ let ie = err.get_ref();
+ assert!(!ie.is::<header::InvalidHeaderValue>());
+ assert!(ie.is::<status::InvalidStatusCode>());
+ ie.downcast_ref::<status::InvalidStatusCode>().unwrap();
+
+ assert!(!err.is::<header::InvalidHeaderValue>());
+ assert!(err.is::<status::InvalidStatusCode>());
+ } else {
+ panic!("Bad status allowed!");
+ }
+ }
+}
diff --git a/extra_versions/crates/http/src/extensions.rs b/extra_versions/crates/http/src/extensions.rs
new file mode 100644
index 0000000..7e815df
--- /dev/null
+++ b/extra_versions/crates/http/src/extensions.rs
@@ -0,0 +1,250 @@
+use std::any::{Any, TypeId};
+use std::collections::HashMap;
+use std::fmt;
+use std::hash::{BuildHasherDefault, Hasher};
+
+type AnyMap = HashMap<TypeId, Box<dyn Any + Send + Sync>, BuildHasherDefault<IdHasher>>;
+
+// With TypeIds as keys, there's no need to hash them. They are already hashes
+// themselves, coming from the compiler. The IdHasher just holds the u64 of
+// the TypeId, and then returns it, instead of doing any bit fiddling.
+#[derive(Default)]
+struct IdHasher(u64);
+
+impl Hasher for IdHasher {
+ fn write(&mut self, _: &[u8]) {
+ unreachable!("TypeId calls write_u64");
+ }
+
+ #[inline]
+ fn write_u64(&mut self, id: u64) {
+ self.0 = id;
+ }
+
+ #[inline]
+ fn finish(&self) -> u64 {
+ self.0
+ }
+}
+
+/// A type map of protocol extensions.
+///
+/// `Extensions` can be used by `Request` and `Response` to store
+/// extra data derived from the underlying protocol.
+#[derive(Default)]
+pub struct Extensions {
+ // If extensions are never used, no need to carry around an empty HashMap.
+ // That's 3 words. Instead, this is only 1 word.
+ map: Option<Box<AnyMap>>,
+}
+
+impl Extensions {
+ /// Create an empty `Extensions`.
+ #[inline]
+ pub fn new() -> Extensions {
+ Extensions { map: None }
+ }
+
+ /// Insert a type into this `Extensions`.
+ ///
+ /// If a extension of this type already existed, it will
+ /// be returned.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// assert!(ext.insert(5i32).is_none());
+ /// assert!(ext.insert(4u8).is_none());
+ /// assert_eq!(ext.insert(9i32), Some(5i32));
+ /// ```
+ pub fn insert<T: Send + Sync + 'static>(&mut self, val: T) -> Option<T> {
+ self.map
+ .get_or_insert_with(|| Box::new(HashMap::default()))
+ .insert(TypeId::of::<T>(), Box::new(val))
+ .and_then(|boxed| {
+ (boxed as Box<dyn Any + 'static>)
+ .downcast()
+ .ok()
+ .map(|boxed| *boxed)
+ })
+ }
+
+ /// Get a reference to a type previously inserted on this `Extensions`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// assert!(ext.get::<i32>().is_none());
+ /// ext.insert(5i32);
+ ///
+ /// assert_eq!(ext.get::<i32>(), Some(&5i32));
+ /// ```
+ pub fn get<T: Send + Sync + 'static>(&self) -> Option<&T> {
+ self.map
+ .as_ref()
+ .and_then(|map| map.get(&TypeId::of::<T>()))
+ .and_then(|boxed| (&**boxed as &(dyn Any + 'static)).downcast_ref())
+ }
+
+ /// Get a mutable reference to a type previously inserted on this `Extensions`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// ext.insert(String::from("Hello"));
+ /// ext.get_mut::<String>().unwrap().push_str(" World");
+ ///
+ /// assert_eq!(ext.get::<String>().unwrap(), "Hello World");
+ /// ```
+ pub fn get_mut<T: Send + Sync + 'static>(&mut self) -> Option<&mut T> {
+ self.map
+ .as_mut()
+ .and_then(|map| map.get_mut(&TypeId::of::<T>()))
+ .and_then(|boxed| (&mut **boxed as &mut (dyn Any + 'static)).downcast_mut())
+ }
+
+ /// Remove a type from this `Extensions`.
+ ///
+ /// If a extension of this type existed, it will be returned.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// ext.insert(5i32);
+ /// assert_eq!(ext.remove::<i32>(), Some(5i32));
+ /// assert!(ext.get::<i32>().is_none());
+ /// ```
+ pub fn remove<T: Send + Sync + 'static>(&mut self) -> Option<T> {
+ self.map
+ .as_mut()
+ .and_then(|map| map.remove(&TypeId::of::<T>()))
+ .and_then(|boxed| {
+ (boxed as Box<dyn Any + 'static>)
+ .downcast()
+ .ok()
+ .map(|boxed| *boxed)
+ })
+ }
+
+ /// Clear the `Extensions` of all inserted extensions.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// ext.insert(5i32);
+ /// ext.clear();
+ ///
+ /// assert!(ext.get::<i32>().is_none());
+ /// ```
+ #[inline]
+ pub fn clear(&mut self) {
+ if let Some(ref mut map) = self.map {
+ map.clear();
+ }
+ }
+
+ /// Check whether the extension set is empty or not.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// assert!(ext.is_empty());
+ /// ext.insert(5i32);
+ /// assert!(!ext.is_empty());
+ /// ```
+ #[inline]
+ pub fn is_empty(&self) -> bool {
+ self.map
+ .as_ref()
+ .map_or(true, |map| map.is_empty())
+ }
+
+ /// Get the numer of extensions available.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext = Extensions::new();
+ /// assert_eq!(ext.len(), 0);
+ /// ext.insert(5i32);
+ /// assert_eq!(ext.len(), 1);
+ /// ```
+ #[inline]
+ pub fn len(&self) -> usize {
+ self.map
+ .as_ref()
+ .map_or(0, |map| map.len())
+ }
+
+ /// Extends `self` with another `Extensions`.
+ ///
+ /// If an instance of a specific type exists in both, the one in `self` is overwritten with the
+ /// one from `other`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Extensions;
+ /// let mut ext_a = Extensions::new();
+ /// ext_a.insert(8u8);
+ /// ext_a.insert(16u16);
+ ///
+ /// let mut ext_b = Extensions::new();
+ /// ext_b.insert(4u8);
+ /// ext_b.insert("hello");
+ ///
+ /// ext_a.extend(ext_b);
+ /// assert_eq!(ext_a.len(), 3);
+ /// assert_eq!(ext_a.get::<u8>(), Some(&4u8));
+ /// assert_eq!(ext_a.get::<u16>(), Some(&16u16));
+ /// assert_eq!(ext_a.get::<&'static str>().copied(), Some("hello"));
+ /// ```
+ pub fn extend(&mut self, other: Self) {
+ if let Some(other) = other.map {
+ if let Some(map) = &mut self.map {
+ map.extend(*other);
+ } else {
+ self.map = Some(other);
+ }
+ }
+ }
+}
+
+impl fmt::Debug for Extensions {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Extensions").finish()
+ }
+}
+
+#[test]
+fn test_extensions() {
+ #[derive(Debug, PartialEq)]
+ struct MyType(i32);
+
+ let mut extensions = Extensions::new();
+
+ extensions.insert(5i32);
+ extensions.insert(MyType(10));
+
+ assert_eq!(extensions.get(), Some(&5i32));
+ assert_eq!(extensions.get_mut(), Some(&mut 5i32));
+
+ assert_eq!(extensions.remove::<i32>(), Some(5i32));
+ assert!(extensions.get::<i32>().is_none());
+
+ assert_eq!(extensions.get::<bool>(), None);
+ assert_eq!(extensions.get(), Some(&MyType(10)));
+}
diff --git a/extra_versions/crates/http/src/header/map.rs b/extra_versions/crates/http/src/header/map.rs
new file mode 100644
index 0000000..36f1c92
--- /dev/null
+++ b/extra_versions/crates/http/src/header/map.rs
@@ -0,0 +1,3909 @@
+use std::collections::HashMap;
+use std::collections::hash_map::RandomState;
+use std::convert::TryFrom;
+use std::hash::{BuildHasher, Hash, Hasher};
+use std::iter::{FromIterator, FusedIterator};
+use std::marker::PhantomData;
+use std::{fmt, mem, ops, ptr, vec};
+
+use crate::Error;
+
+use super::HeaderValue;
+use super::name::{HdrName, HeaderName, InvalidHeaderName};
+
+pub use self::as_header_name::AsHeaderName;
+pub use self::into_header_name::IntoHeaderName;
+
+/// A set of HTTP headers
+///
+/// `HeaderMap` is an multimap of [`HeaderName`] to values.
+///
+/// [`HeaderName`]: struct.HeaderName.html
+///
+/// # Examples
+///
+/// Basic usage
+///
+/// ```
+/// # use http::HeaderMap;
+/// # use http::header::{CONTENT_LENGTH, HOST, LOCATION};
+/// let mut headers = HeaderMap::new();
+///
+/// headers.insert(HOST, "example.com".parse().unwrap());
+/// headers.insert(CONTENT_LENGTH, "123".parse().unwrap());
+///
+/// assert!(headers.contains_key(HOST));
+/// assert!(!headers.contains_key(LOCATION));
+///
+/// assert_eq!(headers[HOST], "example.com");
+///
+/// headers.remove(HOST);
+///
+/// assert!(!headers.contains_key(HOST));
+/// ```
+#[derive(Clone)]
+pub struct HeaderMap<T = HeaderValue> {
+ // Used to mask values to get an index
+ mask: Size,
+ indices: Box<[Pos]>,
+ entries: Vec<Bucket<T>>,
+ extra_values: Vec<ExtraValue<T>>,
+ danger: Danger,
+}
+
+// # Implementation notes
+//
+// Below, you will find a fairly large amount of code. Most of this is to
+// provide the necessary functions to efficiently manipulate the header
+// multimap. The core hashing table is based on robin hood hashing [1]. While
+// this is the same hashing algorithm used as part of Rust's `HashMap` in
+// stdlib, many implementation details are different. The two primary reasons
+// for this divergence are that `HeaderMap` is a multimap and the structure has
+// been optimized to take advantage of the characteristics of HTTP headers.
+//
+// ## Structure Layout
+//
+// Most of the data contained by `HeaderMap` is *not* stored in the hash table.
+// Instead, pairs of header name and *first* associated header value are stored
+// in the `entries` vector. If the header name has more than one associated
+// header value, then additional values are stored in `extra_values`. The actual
+// hash table (`indices`) only maps hash codes to indices in `entries`. This
+// means that, when an eviction happens, the actual header name and value stay
+// put and only a tiny amount of memory has to be copied.
+//
+// Extra values associated with a header name are tracked using a linked list.
+// Links are formed with offsets into `extra_values` and not pointers.
+//
+// [1]: https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing
+
+/// `HeaderMap` entry iterator.
+///
+/// Yields `(&HeaderName, &value)` tuples. The same header name may be yielded
+/// more than once if it has more than one associated value.
+#[derive(Debug)]
+pub struct Iter<'a, T> {
+ map: &'a HeaderMap<T>,
+ entry: usize,
+ cursor: Option<Cursor>,
+}
+
+/// `HeaderMap` mutable entry iterator
+///
+/// Yields `(&HeaderName, &mut value)` tuples. The same header name may be
+/// yielded more than once if it has more than one associated value.
+#[derive(Debug)]
+pub struct IterMut<'a, T> {
+ map: *mut HeaderMap<T>,
+ entry: usize,
+ cursor: Option<Cursor>,
+ lt: PhantomData<&'a mut HeaderMap<T>>,
+}
+
+/// An owning iterator over the entries of a `HeaderMap`.
+///
+/// This struct is created by the `into_iter` method on `HeaderMap`.
+#[derive(Debug)]
+pub struct IntoIter<T> {
+ // If None, pull from `entries`
+ next: Option<usize>,
+ entries: vec::IntoIter<Bucket<T>>,
+ extra_values: Vec<ExtraValue<T>>,
+}
+
+/// An iterator over `HeaderMap` keys.
+///
+/// Each header name is yielded only once, even if it has more than one
+/// associated value.
+#[derive(Debug)]
+pub struct Keys<'a, T> {
+ inner: ::std::slice::Iter<'a, Bucket<T>>,
+}
+
+/// `HeaderMap` value iterator.
+///
+/// Each value contained in the `HeaderMap` will be yielded.
+#[derive(Debug)]
+pub struct Values<'a, T> {
+ inner: Iter<'a, T>,
+}
+
+/// `HeaderMap` mutable value iterator
+#[derive(Debug)]
+pub struct ValuesMut<'a, T> {
+ inner: IterMut<'a, T>,
+}
+
+/// A drain iterator for `HeaderMap`.
+#[derive(Debug)]
+pub struct Drain<'a, T> {
+ idx: usize,
+ len: usize,
+ entries: *mut [Bucket<T>],
+ // If None, pull from `entries`
+ next: Option<usize>,
+ extra_values: *mut Vec<ExtraValue<T>>,
+ lt: PhantomData<&'a mut HeaderMap<T>>,
+}
+
+/// A view to all values stored in a single entry.
+///
+/// This struct is returned by `HeaderMap::get_all`.
+#[derive(Debug)]
+pub struct GetAll<'a, T> {
+ map: &'a HeaderMap<T>,
+ index: Option<usize>,
+}
+
+/// A view into a single location in a `HeaderMap`, which may be vacant or occupied.
+#[derive(Debug)]
+pub enum Entry<'a, T: 'a> {
+ /// An occupied entry
+ Occupied(OccupiedEntry<'a, T>),
+
+ /// A vacant entry
+ Vacant(VacantEntry<'a, T>),
+}
+
+/// A view into a single empty location in a `HeaderMap`.
+///
+/// This struct is returned as part of the `Entry` enum.
+#[derive(Debug)]
+pub struct VacantEntry<'a, T> {
+ map: &'a mut HeaderMap<T>,
+ key: HeaderName,
+ hash: HashValue,
+ probe: usize,
+ danger: bool,
+}
+
+/// A view into a single occupied location in a `HeaderMap`.
+///
+/// This struct is returned as part of the `Entry` enum.
+#[derive(Debug)]
+pub struct OccupiedEntry<'a, T> {
+ map: &'a mut HeaderMap<T>,
+ probe: usize,
+ index: usize,
+}
+
+/// An iterator of all values associated with a single header name.
+#[derive(Debug)]
+pub struct ValueIter<'a, T> {
+ map: &'a HeaderMap<T>,
+ index: usize,
+ front: Option<Cursor>,
+ back: Option<Cursor>,
+}
+
+/// A mutable iterator of all values associated with a single header name.
+#[derive(Debug)]
+pub struct ValueIterMut<'a, T> {
+ map: *mut HeaderMap<T>,
+ index: usize,
+ front: Option<Cursor>,
+ back: Option<Cursor>,
+ lt: PhantomData<&'a mut HeaderMap<T>>,
+}
+
+/// An drain iterator of all values associated with a single header name.
+#[derive(Debug)]
+pub struct ValueDrain<'a, T> {
+ first: Option<T>,
+ next: Option<::std::vec::IntoIter<T>>,
+ lt: PhantomData<&'a mut HeaderMap<T>>,
+}
+
+/// Error returned when max capacity of `HeaderMap` is exceeded
+pub struct MaxSizeReached {
+ _priv: (),
+}
+
+/// Tracks the value iterator state
+#[derive(Debug, Copy, Clone, Eq, PartialEq)]
+enum Cursor {
+ Head,
+ Values(usize),
+}
+
+/// Type used for representing the size of a HeaderMap value.
+///
+/// 32,768 is more than enough entries for a single header map. Setting this
+/// limit enables using `u16` to represent all offsets, which takes 2 bytes
+/// instead of 8 on 64 bit processors.
+///
+/// Setting this limit is especially beneficial for `indices`, making it more
+/// cache friendly. More hash codes can fit in a cache line.
+///
+/// You may notice that `u16` may represent more than 32,768 values. This is
+/// true, but 32,768 should be plenty and it allows us to reserve the top bit
+/// for future usage.
+type Size = u16;
+
+/// This limit falls out from above.
+const MAX_SIZE: usize = 1 << 15;
+
+/// An entry in the hash table. This represents the full hash code for an entry
+/// as well as the position of the entry in the `entries` vector.
+#[derive(Copy, Clone)]
+struct Pos {
+ // Index in the `entries` vec
+ index: Size,
+ // Full hash value for the entry.
+ hash: HashValue,
+}
+
+/// Hash values are limited to u16 as well. While `fast_hash` and `Hasher`
+/// return `usize` hash codes, limiting the effective hash code to the lower 16
+/// bits is fine since we know that the `indices` vector will never grow beyond
+/// that size.
+#[derive(Debug, Copy, Clone, Eq, PartialEq)]
+struct HashValue(u16);
+
+/// Stores the data associated with a `HeaderMap` entry. Only the first value is
+/// included in this struct. If a header name has more than one associated
+/// value, all extra values are stored in the `extra_values` vector. A doubly
+/// linked list of entries is maintained. The doubly linked list is used so that
+/// removing a value is constant time. This also has the nice property of
+/// enabling double ended iteration.
+#[derive(Debug, Clone)]
+struct Bucket<T> {
+ hash: HashValue,
+ key: HeaderName,
+ value: T,
+ links: Option<Links>,
+}
+
+/// The head and tail of the value linked list.
+#[derive(Debug, Copy, Clone)]
+struct Links {
+ next: usize,
+ tail: usize,
+}
+
+/// Access to the `links` value in a slice of buckets.
+///
+/// It's important that no other field is accessed, since it may have been
+/// freed in a `Drain` iterator.
+#[derive(Debug)]
+struct RawLinks<T>(*mut [Bucket<T>]);
+
+/// Node in doubly-linked list of header value entries
+#[derive(Debug, Clone)]
+struct ExtraValue<T> {
+ value: T,
+ prev: Link,
+ next: Link,
+}
+
+/// A header value node is either linked to another node in the `extra_values`
+/// list or it points to an entry in `entries`. The entry in `entries` is the
+/// start of the list and holds the associated header name.
+#[derive(Debug, Copy, Clone, Eq, PartialEq)]
+enum Link {
+ Entry(usize),
+ Extra(usize),
+}
+
+/// Tracks the header map danger level! This relates to the adaptive hashing
+/// algorithm. A HeaderMap starts in the "green" state, when a large number of
+/// collisions are detected, it transitions to the yellow state. At this point,
+/// the header map will either grow and switch back to the green state OR it
+/// will transition to the red state.
+///
+/// When in the red state, a safe hashing algorithm is used and all values in
+/// the header map have to be rehashed.
+#[derive(Clone)]
+enum Danger {
+ Green,
+ Yellow,
+ Red(RandomState),
+}
+
+// Constants related to detecting DOS attacks.
+//
+// Displacement is the number of entries that get shifted when inserting a new
+// value. Forward shift is how far the entry gets stored from the ideal
+// position.
+//
+// The current constant values were picked from another implementation. It could
+// be that there are different values better suited to the header map case.
+const DISPLACEMENT_THRESHOLD: usize = 128;
+const FORWARD_SHIFT_THRESHOLD: usize = 512;
+
+// The default strategy for handling the yellow danger state is to increase the
+// header map capacity in order to (hopefully) reduce the number of collisions.
+// If growing the hash map would cause the load factor to drop bellow this
+// threshold, then instead of growing, the headermap is switched to the red
+// danger state and safe hashing is used instead.
+const LOAD_FACTOR_THRESHOLD: f32 = 0.2;
+
+// Macro used to iterate the hash table starting at a given point, looping when
+// the end is hit.
+macro_rules! probe_loop {
+ ($label:tt: $probe_var: ident < $len: expr, $body: expr) => {
+ debug_assert!($len > 0);
+ $label:
+ loop {
+ if $probe_var < $len {
+ $body
+ $probe_var += 1;
+ } else {
+ $probe_var = 0;
+ }
+ }
+ };
+ ($probe_var: ident < $len: expr, $body: expr) => {
+ debug_assert!($len > 0);
+ loop {
+ if $probe_var < $len {
+ $body
+ $probe_var += 1;
+ } else {
+ $probe_var = 0;
+ }
+ }
+ };
+}
+
+// First part of the robinhood algorithm. Given a key, find the slot in which it
+// will be inserted. This is done by starting at the "ideal" spot. Then scanning
+// until the destination slot is found. A destination slot is either the next
+// empty slot or the next slot that is occupied by an entry that has a lower
+// displacement (displacement is the distance from the ideal spot).
+//
+// This is implemented as a macro instead of a function that takes a closure in
+// order to guarantee that it is "inlined". There is no way to annotate closures
+// to guarantee inlining.
+macro_rules! insert_phase_one {
+ ($map:ident,
+ $key:expr,
+ $probe:ident,
+ $pos:ident,
+ $hash:ident,
+ $danger:ident,
+ $vacant:expr,
+ $occupied:expr,
+ $robinhood:expr) =>
+ {{
+ let $hash = hash_elem_using(&$map.danger, &$key);
+ let mut $probe = desired_pos($map.mask, $hash);
+ let mut dist = 0;
+ let ret;
+
+ // Start at the ideal position, checking all slots
+ probe_loop!('probe: $probe < $map.indices.len(), {
+ if let Some(($pos, entry_hash)) = $map.indices[$probe].resolve() {
+ // The slot is already occupied, but check if it has a lower
+ // displacement.
+ let their_dist = probe_distance($map.mask, entry_hash, $probe);
+
+ if their_dist < dist {
+ // The new key's distance is larger, so claim this spot and
+ // displace the current entry.
+ //
+ // Check if this insertion is above the danger threshold.
+ let $danger =
+ dist >= FORWARD_SHIFT_THRESHOLD && !$map.danger.is_red();
+
+ ret = $robinhood;
+ break 'probe;
+ } else if entry_hash == $hash && $map.entries[$pos].key == $key {
+ // There already is an entry with the same key.
+ ret = $occupied;
+ break 'probe;
+ }
+ } else {
+ // The entry is vacant, use it for this key.
+ let $danger =
+ dist >= FORWARD_SHIFT_THRESHOLD && !$map.danger.is_red();
+
+ ret = $vacant;
+ break 'probe;
+ }
+
+ dist += 1;
+ });
+
+ ret
+ }}
+}
+
+// ===== impl HeaderMap =====
+
+impl HeaderMap {
+ /// Create an empty `HeaderMap`.
+ ///
+ /// The map will be created without any capacity. This function will not
+ /// allocate.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let map = HeaderMap::new();
+ ///
+ /// assert!(map.is_empty());
+ /// assert_eq!(0, map.capacity());
+ /// ```
+ pub fn new() -> Self {
+ HeaderMap::try_with_capacity(0).unwrap()
+ }
+}
+
+impl<T> HeaderMap<T> {
+ /// Create an empty `HeaderMap` with the specified capacity.
+ ///
+ /// The returned map will allocate internal storage in order to hold about
+ /// `capacity` elements without reallocating. However, this is a "best
+ /// effort" as there are usage patterns that could cause additional
+ /// allocations before `capacity` headers are stored in the map.
+ ///
+ /// More capacity than requested may be allocated.
+ ///
+ /// # Panics
+ ///
+ /// This method panics if capacity exceeds max `HeaderMap` capacity.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let map: HeaderMap<u32> = HeaderMap::with_capacity(10);
+ ///
+ /// assert!(map.is_empty());
+ /// assert_eq!(12, map.capacity());
+ /// ```
+ pub fn with_capacity(capacity: usize) -> HeaderMap<T> {
+ Self::try_with_capacity(capacity).expect("size overflows MAX_SIZE")
+ }
+
+ /// Create an empty `HeaderMap` with the specified capacity.
+ ///
+ /// The returned map will allocate internal storage in order to hold about
+ /// `capacity` elements without reallocating. However, this is a "best
+ /// effort" as there are usage patterns that could cause additional
+ /// allocations before `capacity` headers are stored in the map.
+ ///
+ /// More capacity than requested may be allocated.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if `HeaderMap` exceeds max capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let map: HeaderMap<u32> = HeaderMap::try_with_capacity(10).unwrap();
+ ///
+ /// assert!(map.is_empty());
+ /// assert_eq!(12, map.capacity());
+ /// ```
+ pub fn try_with_capacity(capacity: usize) -> Result<HeaderMap<T>, MaxSizeReached> {
+ if capacity == 0 {
+ Ok(HeaderMap {
+ mask: 0,
+ indices: Box::new([]), // as a ZST, this doesn't actually allocate anything
+ entries: Vec::new(),
+ extra_values: Vec::new(),
+ danger: Danger::Green,
+ })
+ } else {
+ let raw_cap = match to_raw_capacity(capacity).checked_next_power_of_two() {
+ Some(c) => c,
+ None => return Err(MaxSizeReached { _priv: () }),
+ };
+ if raw_cap > MAX_SIZE {
+ return Err(MaxSizeReached { _priv: () });
+ }
+ debug_assert!(raw_cap > 0);
+
+ Ok(HeaderMap {
+ mask: (raw_cap - 1) as Size,
+ indices: vec![Pos::none(); raw_cap].into_boxed_slice(),
+ entries: Vec::with_capacity(raw_cap),
+ extra_values: Vec::new(),
+ danger: Danger::Green,
+ })
+ }
+ }
+
+ /// Returns the number of headers stored in the map.
+ ///
+ /// This number represents the total number of **values** stored in the map.
+ /// This number can be greater than or equal to the number of **keys**
+ /// stored given that a single key may have more than one associated value.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{ACCEPT, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert_eq!(0, map.len());
+ ///
+ /// map.insert(ACCEPT, "text/plain".parse().unwrap());
+ /// map.insert(HOST, "localhost".parse().unwrap());
+ ///
+ /// assert_eq!(2, map.len());
+ ///
+ /// map.append(ACCEPT, "text/html".parse().unwrap());
+ ///
+ /// assert_eq!(3, map.len());
+ /// ```
+ pub fn len(&self) -> usize {
+ self.entries.len() + self.extra_values.len()
+ }
+
+ /// Returns the number of keys stored in the map.
+ ///
+ /// This number will be less than or equal to `len()` as each key may have
+ /// more than one associated value.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{ACCEPT, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert_eq!(0, map.keys_len());
+ ///
+ /// map.insert(ACCEPT, "text/plain".parse().unwrap());
+ /// map.insert(HOST, "localhost".parse().unwrap());
+ ///
+ /// assert_eq!(2, map.keys_len());
+ ///
+ /// map.insert(ACCEPT, "text/html".parse().unwrap());
+ ///
+ /// assert_eq!(2, map.keys_len());
+ /// ```
+ pub fn keys_len(&self) -> usize {
+ self.entries.len()
+ }
+
+ /// Returns true if the map contains no elements.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert!(map.is_empty());
+ ///
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// assert!(!map.is_empty());
+ /// ```
+ pub fn is_empty(&self) -> bool {
+ self.entries.len() == 0
+ }
+
+ /// Clears the map, removing all key-value pairs. Keeps the allocated memory
+ /// for reuse.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// map.clear();
+ /// assert!(map.is_empty());
+ /// assert!(map.capacity() > 0);
+ /// ```
+ pub fn clear(&mut self) {
+ self.entries.clear();
+ self.extra_values.clear();
+ self.danger = Danger::Green;
+
+ for e in self.indices.iter_mut() {
+ *e = Pos::none();
+ }
+ }
+
+ /// Returns the number of headers the map can hold without reallocating.
+ ///
+ /// This number is an approximation as certain usage patterns could cause
+ /// additional allocations before the returned capacity is filled.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert_eq!(0, map.capacity());
+ ///
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ /// assert_eq!(6, map.capacity());
+ /// ```
+ pub fn capacity(&self) -> usize {
+ usable_capacity(self.indices.len())
+ }
+
+ /// Reserves capacity for at least `additional` more headers to be inserted
+ /// into the `HeaderMap`.
+ ///
+ /// The header map may reserve more space to avoid frequent reallocations.
+ /// Like with `with_capacity`, this will be a "best effort" to avoid
+ /// allocations until `additional` more headers are inserted. Certain usage
+ /// patterns could cause additional allocations before the number is
+ /// reached.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the new allocation size overflows `HeaderMap` `MAX_SIZE`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.reserve(10);
+ /// # map.insert(HOST, "bar".parse().unwrap());
+ /// ```
+ pub fn reserve(&mut self, additional: usize) {
+ self.try_reserve(additional)
+ .expect("size overflows MAX_SIZE")
+ }
+
+ /// Reserves capacity for at least `additional` more headers to be inserted
+ /// into the `HeaderMap`.
+ ///
+ /// The header map may reserve more space to avoid frequent reallocations.
+ /// Like with `with_capacity`, this will be a "best effort" to avoid
+ /// allocations until `additional` more headers are inserted. Certain usage
+ /// patterns could cause additional allocations before the number is
+ /// reached.
+ ///
+ /// # Errors
+ ///
+ /// This method differs from `reserve` by returning an error instead of
+ /// panicking if the value is too large.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.try_reserve(10).unwrap();
+ /// # map.try_insert(HOST, "bar".parse().unwrap()).unwrap();
+ /// ```
+ pub fn try_reserve(&mut self, additional: usize) -> Result<(), MaxSizeReached> {
+ // TODO: This can't overflow if done properly... since the max # of
+ // elements is u16::MAX.
+ let cap = self
+ .entries
+ .len()
+ .checked_add(additional)
+ .ok_or_else(|| MaxSizeReached::new())?;
+
+ if cap > self.indices.len() {
+ let cap = cap
+ .checked_next_power_of_two()
+ .ok_or_else(|| MaxSizeReached::new())?;
+ if cap > MAX_SIZE {
+ return Err(MaxSizeReached::new());
+ }
+
+ if self.entries.len() == 0 {
+ self.mask = cap as Size - 1;
+ self.indices = vec![Pos::none(); cap].into_boxed_slice();
+ self.entries = Vec::with_capacity(usable_capacity(cap));
+ } else {
+ self.try_grow(cap)?;
+ }
+ }
+
+ Ok(())
+ }
+
+ /// Returns a reference to the value associated with the key.
+ ///
+ /// If there are multiple values associated with the key, then the first one
+ /// is returned. Use `get_all` to get all values associated with a given
+ /// key. Returns `None` if there are no values associated with the key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(map.get("host").is_none());
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// assert_eq!(map.get(HOST).unwrap(), &"hello");
+ /// assert_eq!(map.get("host").unwrap(), &"hello");
+ ///
+ /// map.append(HOST, "world".parse().unwrap());
+ /// assert_eq!(map.get("host").unwrap(), &"hello");
+ /// ```
+ pub fn get<K>(&self, key: K) -> Option<&T>
+ where
+ K: AsHeaderName,
+ {
+ self.get2(&key)
+ }
+
+ fn get2<K>(&self, key: &K) -> Option<&T>
+ where
+ K: AsHeaderName,
+ {
+ match key.find(self) {
+ Some((_, found)) => {
+ let entry = &self.entries[found];
+ Some(&entry.value)
+ }
+ None => None,
+ }
+ }
+
+ /// Returns a mutable reference to the value associated with the key.
+ ///
+ /// If there are multiple values associated with the key, then the first one
+ /// is returned. Use `entry` to get all values associated with a given
+ /// key. Returns `None` if there are no values associated with the key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::default();
+ /// map.insert(HOST, "hello".to_string());
+ /// map.get_mut("host").unwrap().push_str("-world");
+ ///
+ /// assert_eq!(map.get(HOST).unwrap(), &"hello-world");
+ /// ```
+ pub fn get_mut<K>(&mut self, key: K) -> Option<&mut T>
+ where
+ K: AsHeaderName,
+ {
+ match key.find(self) {
+ Some((_, found)) => {
+ let entry = &mut self.entries[found];
+ Some(&mut entry.value)
+ }
+ None => None,
+ }
+ }
+
+ /// Returns a view of all values associated with a key.
+ ///
+ /// The returned view does not incur any allocations and allows iterating
+ /// the values associated with the key. See [`GetAll`] for more details.
+ /// Returns `None` if there are no values associated with the key.
+ ///
+ /// [`GetAll`]: struct.GetAll.html
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// map.append(HOST, "goodbye".parse().unwrap());
+ ///
+ /// let view = map.get_all("host");
+ ///
+ /// let mut iter = view.iter();
+ /// assert_eq!(&"hello", iter.next().unwrap());
+ /// assert_eq!(&"goodbye", iter.next().unwrap());
+ /// assert!(iter.next().is_none());
+ /// ```
+ pub fn get_all<K>(&self, key: K) -> GetAll<'_, T>
+ where
+ K: AsHeaderName,
+ {
+ GetAll {
+ map: self,
+ index: key.find(self).map(|(_, i)| i),
+ }
+ }
+
+ /// Returns true if the map contains a value for the specified key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(!map.contains_key(HOST));
+ ///
+ /// map.insert(HOST, "world".parse().unwrap());
+ /// assert!(map.contains_key("host"));
+ /// ```
+ pub fn contains_key<K>(&self, key: K) -> bool
+ where
+ K: AsHeaderName,
+ {
+ key.find(self).is_some()
+ }
+
+ /// An iterator visiting all key-value pairs.
+ ///
+ /// The iteration order is arbitrary, but consistent across platforms for
+ /// the same crate version. Each key will be yielded once per associated
+ /// value. So, if a key has 3 associated values, it will be yielded 3 times.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// map.append(HOST, "goodbye".parse().unwrap());
+ /// map.insert(CONTENT_LENGTH, "123".parse().unwrap());
+ ///
+ /// for (key, value) in map.iter() {
+ /// println!("{:?}: {:?}", key, value);
+ /// }
+ /// ```
+ pub fn iter(&self) -> Iter<'_, T> {
+ Iter {
+ map: self,
+ entry: 0,
+ cursor: self.entries.first().map(|_| Cursor::Head),
+ }
+ }
+
+ /// An iterator visiting all key-value pairs, with mutable value references.
+ ///
+ /// The iterator order is arbitrary, but consistent across platforms for the
+ /// same crate version. Each key will be yielded once per associated value,
+ /// so if a key has 3 associated values, it will be yielded 3 times.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::default();
+ ///
+ /// map.insert(HOST, "hello".to_string());
+ /// map.append(HOST, "goodbye".to_string());
+ /// map.insert(CONTENT_LENGTH, "123".to_string());
+ ///
+ /// for (key, value) in map.iter_mut() {
+ /// value.push_str("-boop");
+ /// }
+ /// ```
+ pub fn iter_mut(&mut self) -> IterMut<'_, T> {
+ IterMut {
+ map: self as *mut _,
+ entry: 0,
+ cursor: self.entries.first().map(|_| Cursor::Head),
+ lt: PhantomData,
+ }
+ }
+
+ /// An iterator visiting all keys.
+ ///
+ /// The iteration order is arbitrary, but consistent across platforms for
+ /// the same crate version. Each key will be yielded only once even if it
+ /// has multiple associated values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// map.append(HOST, "goodbye".parse().unwrap());
+ /// map.insert(CONTENT_LENGTH, "123".parse().unwrap());
+ ///
+ /// for key in map.keys() {
+ /// println!("{:?}", key);
+ /// }
+ /// ```
+ pub fn keys(&self) -> Keys<'_, T> {
+ Keys {
+ inner: self.entries.iter(),
+ }
+ }
+
+ /// An iterator visiting all values.
+ ///
+ /// The iteration order is arbitrary, but consistent across platforms for
+ /// the same crate version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// map.append(HOST, "goodbye".parse().unwrap());
+ /// map.insert(CONTENT_LENGTH, "123".parse().unwrap());
+ ///
+ /// for value in map.values() {
+ /// println!("{:?}", value);
+ /// }
+ /// ```
+ pub fn values(&self) -> Values<'_, T> {
+ Values { inner: self.iter() }
+ }
+
+ /// An iterator visiting all values mutably.
+ ///
+ /// The iteration order is arbitrary, but consistent across platforms for
+ /// the same crate version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::default();
+ ///
+ /// map.insert(HOST, "hello".to_string());
+ /// map.append(HOST, "goodbye".to_string());
+ /// map.insert(CONTENT_LENGTH, "123".to_string());
+ ///
+ /// for value in map.values_mut() {
+ /// value.push_str("-boop");
+ /// }
+ /// ```
+ pub fn values_mut(&mut self) -> ValuesMut<'_, T> {
+ ValuesMut {
+ inner: self.iter_mut(),
+ }
+ }
+
+ /// Clears the map, returning all entries as an iterator.
+ ///
+ /// The internal memory is kept for reuse.
+ ///
+ /// For each yielded item that has `None` provided for the `HeaderName`,
+ /// then the associated header name is the same as that of the previously
+ /// yielded item. The first yielded item will have `HeaderName` set.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::{CONTENT_LENGTH, HOST};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(HOST, "hello".parse().unwrap());
+ /// map.append(HOST, "goodbye".parse().unwrap());
+ /// map.insert(CONTENT_LENGTH, "123".parse().unwrap());
+ ///
+ /// let mut drain = map.drain();
+ ///
+ ///
+ /// assert_eq!(drain.next(), Some((Some(HOST), "hello".parse().unwrap())));
+ /// assert_eq!(drain.next(), Some((None, "goodbye".parse().unwrap())));
+ ///
+ /// assert_eq!(drain.next(), Some((Some(CONTENT_LENGTH), "123".parse().unwrap())));
+ ///
+ /// assert_eq!(drain.next(), None);
+ /// ```
+ pub fn drain(&mut self) -> Drain<'_, T> {
+ for i in self.indices.iter_mut() {
+ *i = Pos::none();
+ }
+
+ // Memory safety
+ //
+ // When the Drain is first created, it shortens the length of
+ // the source vector to make sure no uninitialized or moved-from
+ // elements are accessible at all if the Drain's destructor never
+ // gets to run.
+
+ let entries = &mut self.entries[..] as *mut _;
+ let extra_values = &mut self.extra_values as *mut _;
+ let len = self.entries.len();
+ unsafe { self.entries.set_len(0); }
+
+ Drain {
+ idx: 0,
+ len,
+ entries,
+ extra_values,
+ next: None,
+ lt: PhantomData,
+ }
+ }
+
+ fn value_iter(&self, idx: Option<usize>) -> ValueIter<'_, T> {
+ use self::Cursor::*;
+
+ if let Some(idx) = idx {
+ let back = {
+ let entry = &self.entries[idx];
+
+ entry.links.map(|l| Values(l.tail)).unwrap_or(Head)
+ };
+
+ ValueIter {
+ map: self,
+ index: idx,
+ front: Some(Head),
+ back: Some(back),
+ }
+ } else {
+ ValueIter {
+ map: self,
+ index: ::std::usize::MAX,
+ front: None,
+ back: None,
+ }
+ }
+ }
+
+ fn value_iter_mut(&mut self, idx: usize) -> ValueIterMut<'_, T> {
+ use self::Cursor::*;
+
+ let back = {
+ let entry = &self.entries[idx];
+
+ entry.links.map(|l| Values(l.tail)).unwrap_or(Head)
+ };
+
+ ValueIterMut {
+ map: self as *mut _,
+ index: idx,
+ front: Some(Head),
+ back: Some(back),
+ lt: PhantomData,
+ }
+ }
+
+ /// Gets the given key's corresponding entry in the map for in-place
+ /// manipulation.
+ ///
+ /// # Panics
+ ///
+ /// This method panics if capacity exceeds max `HeaderMap` capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map: HeaderMap<u32> = HeaderMap::default();
+ ///
+ /// let headers = &[
+ /// "content-length",
+ /// "x-hello",
+ /// "Content-Length",
+ /// "x-world",
+ /// ];
+ ///
+ /// for &header in headers {
+ /// let counter = map.entry(header).or_insert(0);
+ /// *counter += 1;
+ /// }
+ ///
+ /// assert_eq!(map["content-length"], 2);
+ /// assert_eq!(map["x-hello"], 1);
+ /// ```
+ pub fn entry<K>(&mut self, key: K) -> Entry<'_, T>
+ where
+ K: IntoHeaderName,
+ {
+ key.try_entry(self).expect("size overflows MAX_SIZE")
+ }
+
+ /// Gets the given key's corresponding entry in the map for in-place
+ /// manipulation.
+ ///
+ /// # Errors
+ ///
+ /// This method differs from `entry` by allowing types that may not be
+ /// valid `HeaderName`s to passed as the key (such as `String`). If they
+ /// do not parse as a valid `HeaderName`, this returns an
+ /// `InvalidHeaderName` error.
+ ///
+ /// If reserving space goes over the maximum, this will also return an
+ /// error. However, to prevent breaking changes to the return type, the
+ /// error will still say `InvalidHeaderName`, unlike other `try_*` methods
+ /// which return a `MaxSizeReached` error.
+ pub fn try_entry<K>(&mut self, key: K) -> Result<Entry<'_, T>, InvalidHeaderName>
+ where
+ K: AsHeaderName,
+ {
+ key.try_entry(self).map_err(|err| match err {
+ as_header_name::TryEntryError::InvalidHeaderName(e) => e,
+ as_header_name::TryEntryError::MaxSizeReached(_e) => {
+ // Unfortunately, we cannot change the return type of this
+ // method, so the max size reached error needs to be converted
+ // into an InvalidHeaderName. Yay.
+ InvalidHeaderName::new()
+ }
+ })
+ }
+
+ fn try_entry2<K>(&mut self, key: K) -> Result<Entry<'_, T>, MaxSizeReached>
+ where
+ K: Hash + Into<HeaderName>,
+ HeaderName: PartialEq<K>,
+ {
+ // Ensure that there is space in the map
+ self.try_reserve_one()?;
+
+ Ok(insert_phase_one!(
+ self,
+ key,
+ probe,
+ pos,
+ hash,
+ danger,
+ Entry::Vacant(VacantEntry {
+ map: self,
+ hash: hash,
+ key: key.into(),
+ probe: probe,
+ danger: danger,
+ }),
+ Entry::Occupied(OccupiedEntry {
+ map: self,
+ index: pos,
+ probe: probe,
+ }),
+ Entry::Vacant(VacantEntry {
+ map: self,
+ hash: hash,
+ key: key.into(),
+ probe: probe,
+ danger: danger,
+ })
+ ))
+ }
+
+ /// Inserts a key-value pair into the map.
+ ///
+ /// If the map did not previously have this key present, then `None` is
+ /// returned.
+ ///
+ /// If the map did have this key present, the new value is associated with
+ /// the key and all previous values are removed. **Note** that only a single
+ /// one of the previous values is returned. If there are multiple values
+ /// that have been previously associated with the key, then the first one is
+ /// returned. See `insert_mult` on `OccupiedEntry` for an API that returns
+ /// all values.
+ ///
+ /// The key is not updated, though; this matters for types that can be `==`
+ /// without being identical.
+ ///
+ /// # Panics
+ ///
+ /// This method panics if capacity exceeds max `HeaderMap` capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(map.insert(HOST, "world".parse().unwrap()).is_none());
+ /// assert!(!map.is_empty());
+ ///
+ /// let mut prev = map.insert(HOST, "earth".parse().unwrap()).unwrap();
+ /// assert_eq!("world", prev);
+ /// ```
+ pub fn insert<K>(&mut self, key: K, val: T) -> Option<T>
+ where
+ K: IntoHeaderName,
+ {
+ self.try_insert(key, val).expect("size overflows MAX_SIZE")
+ }
+
+ /// Inserts a key-value pair into the map.
+ ///
+ /// If the map did not previously have this key present, then `None` is
+ /// returned.
+ ///
+ /// If the map did have this key present, the new value is associated with
+ /// the key and all previous values are removed. **Note** that only a single
+ /// one of the previous values is returned. If there are multiple values
+ /// that have been previously associated with the key, then the first one is
+ /// returned. See `insert_mult` on `OccupiedEntry` for an API that returns
+ /// all values.
+ ///
+ /// The key is not updated, though; this matters for types that can be `==`
+ /// without being identical.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if `HeaderMap` exceeds max capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(map.try_insert(HOST, "world".parse().unwrap()).unwrap().is_none());
+ /// assert!(!map.is_empty());
+ ///
+ /// let mut prev = map.try_insert(HOST, "earth".parse().unwrap()).unwrap().unwrap();
+ /// assert_eq!("world", prev);
+ /// ```
+ pub fn try_insert<K>(&mut self, key: K, val: T) -> Result<Option<T>, MaxSizeReached>
+ where
+ K: IntoHeaderName,
+ {
+ key.try_insert(self, val)
+ }
+
+ #[inline]
+ fn try_insert2<K>(&mut self, key: K, value: T) -> Result<Option<T>, MaxSizeReached>
+ where
+ K: Hash + Into<HeaderName>,
+ HeaderName: PartialEq<K>,
+ {
+ self.try_reserve_one()?;
+
+ Ok(insert_phase_one!(
+ self,
+ key,
+ probe,
+ pos,
+ hash,
+ danger,
+ // Vacant
+ {
+ let _ = danger; // Make lint happy
+ let index = self.entries.len();
+ self.try_insert_entry(hash, key.into(), value)?;
+ self.indices[probe] = Pos::new(index, hash);
+ None
+ },
+ // Occupied
+ Some(self.insert_occupied(pos, value)),
+ // Robinhood
+ {
+ self.try_insert_phase_two(key.into(), value, hash, probe, danger)?;
+ None
+ }
+ ))
+ }
+
+ /// Set an occupied bucket to the given value
+ #[inline]
+ fn insert_occupied(&mut self, index: usize, value: T) -> T {
+ if let Some(links) = self.entries[index].links {
+ self.remove_all_extra_values(links.next);
+ }
+
+ let entry = &mut self.entries[index];
+ mem::replace(&mut entry.value, value)
+ }
+
+ fn insert_occupied_mult(&mut self, index: usize, value: T) -> ValueDrain<'_, T> {
+ let old;
+ let links;
+
+ {
+ let entry = &mut self.entries[index];
+
+ old = mem::replace(&mut entry.value, value);
+ links = entry.links.take();
+ }
+
+ let raw_links = self.raw_links();
+ let extra_values = &mut self.extra_values;
+
+ let next = links.map(|l| {
+ drain_all_extra_values(raw_links, extra_values, l.next)
+ .into_iter()
+ });
+
+ ValueDrain {
+ first: Some(old),
+ next: next,
+ lt: PhantomData,
+ }
+ }
+
+ /// Inserts a key-value pair into the map.
+ ///
+ /// If the map did not previously have this key present, then `false` is
+ /// returned.
+ ///
+ /// If the map did have this key present, the new value is pushed to the end
+ /// of the list of values currently associated with the key. The key is not
+ /// updated, though; this matters for types that can be `==` without being
+ /// identical.
+ ///
+ /// # Panics
+ ///
+ /// This method panics if capacity exceeds max `HeaderMap` capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(map.insert(HOST, "world".parse().unwrap()).is_none());
+ /// assert!(!map.is_empty());
+ ///
+ /// map.append(HOST, "earth".parse().unwrap());
+ ///
+ /// let values = map.get_all("host");
+ /// let mut i = values.iter();
+ /// assert_eq!("world", *i.next().unwrap());
+ /// assert_eq!("earth", *i.next().unwrap());
+ /// ```
+ pub fn append<K>(&mut self, key: K, value: T) -> bool
+ where
+ K: IntoHeaderName,
+ {
+ self.try_append(key, value)
+ .expect("size overflows MAX_SIZE")
+ }
+
+ /// Inserts a key-value pair into the map.
+ ///
+ /// If the map did not previously have this key present, then `false` is
+ /// returned.
+ ///
+ /// If the map did have this key present, the new value is pushed to the end
+ /// of the list of values currently associated with the key. The key is not
+ /// updated, though; this matters for types that can be `==` without being
+ /// identical.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if `HeaderMap` exceeds max capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// assert!(map.try_insert(HOST, "world".parse().unwrap()).unwrap().is_none());
+ /// assert!(!map.is_empty());
+ ///
+ /// map.try_append(HOST, "earth".parse().unwrap()).unwrap();
+ ///
+ /// let values = map.get_all("host");
+ /// let mut i = values.iter();
+ /// assert_eq!("world", *i.next().unwrap());
+ /// assert_eq!("earth", *i.next().unwrap());
+ /// ```
+ pub fn try_append<K>(&mut self, key: K, value: T) -> Result<bool, MaxSizeReached>
+ where
+ K: IntoHeaderName,
+ {
+ key.try_append(self, value)
+ }
+
+ #[inline]
+ fn try_append2<K>(&mut self, key: K, value: T) -> Result<bool, MaxSizeReached>
+ where
+ K: Hash + Into<HeaderName>,
+ HeaderName: PartialEq<K>,
+ {
+ self.try_reserve_one()?;
+
+ Ok(insert_phase_one!(
+ self,
+ key,
+ probe,
+ pos,
+ hash,
+ danger,
+ // Vacant
+ {
+ let _ = danger;
+ let index = self.entries.len();
+ self.try_insert_entry(hash, key.into(), value)?;
+ self.indices[probe] = Pos::new(index, hash);
+ false
+ },
+ // Occupied
+ {
+ append_value(pos, &mut self.entries[pos], &mut self.extra_values, value);
+ true
+ },
+ // Robinhood
+ {
+ self.try_insert_phase_two(key.into(), value, hash, probe, danger)?;
+
+ false
+ }
+ ))
+ }
+
+ #[inline]
+ fn find<K: ?Sized>(&self, key: &K) -> Option<(usize, usize)>
+ where
+ K: Hash + Into<HeaderName>,
+ HeaderName: PartialEq<K>,
+ {
+ if self.entries.is_empty() {
+ return None;
+ }
+
+ let hash = hash_elem_using(&self.danger, key);
+ let mask = self.mask;
+ let mut probe = desired_pos(mask, hash);
+ let mut dist = 0;
+
+ probe_loop!(probe < self.indices.len(), {
+ if let Some((i, entry_hash)) = self.indices[probe].resolve() {
+ if dist > probe_distance(mask, entry_hash, probe) {
+ // give up when probe distance is too long
+ return None;
+ } else if entry_hash == hash && self.entries[i].key == *key {
+ return Some((probe, i));
+ }
+ } else {
+ return None;
+ }
+
+ dist += 1;
+ });
+ }
+
+ /// phase 2 is post-insert where we forward-shift `Pos` in the indices.
+ #[inline]
+ fn try_insert_phase_two(
+ &mut self,
+ key: HeaderName,
+ value: T,
+ hash: HashValue,
+ probe: usize,
+ danger: bool,
+ ) -> Result<usize, MaxSizeReached> {
+ // Push the value and get the index
+ let index = self.entries.len();
+ self.try_insert_entry(hash, key, value)?;
+
+ let num_displaced = do_insert_phase_two(&mut self.indices, probe, Pos::new(index, hash));
+
+ if danger || num_displaced >= DISPLACEMENT_THRESHOLD {
+ // Increase danger level
+ self.danger.to_yellow();
+ }
+
+ Ok(index)
+ }
+
+ /// Removes a key from the map, returning the value associated with the key.
+ ///
+ /// Returns `None` if the map does not contain the key. If there are
+ /// multiple values associated with the key, then the first one is returned.
+ /// See `remove_entry_mult` on `OccupiedEntry` for an API that yields all
+ /// values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// let prev = map.remove(HOST).unwrap();
+ /// assert_eq!("hello.world", prev);
+ ///
+ /// assert!(map.remove(HOST).is_none());
+ /// ```
+ pub fn remove<K>(&mut self, key: K) -> Option<T>
+ where
+ K: AsHeaderName,
+ {
+ match key.find(self) {
+ Some((probe, idx)) => {
+ if let Some(links) = self.entries[idx].links {
+ self.remove_all_extra_values(links.next);
+ }
+
+ let entry = self.remove_found(probe, idx);
+
+ Some(entry.value)
+ }
+ None => None,
+ }
+ }
+
+ /// Remove an entry from the map.
+ ///
+ /// Warning: To avoid inconsistent state, extra values _must_ be removed
+ /// for the `found` index (via `remove_all_extra_values` or similar)
+ /// _before_ this method is called.
+ #[inline]
+ fn remove_found(&mut self, probe: usize, found: usize) -> Bucket<T> {
+ // index `probe` and entry `found` is to be removed
+ // use swap_remove, but then we need to update the index that points
+ // to the other entry that has to move
+ self.indices[probe] = Pos::none();
+ let entry = self.entries.swap_remove(found);
+
+ // correct index that points to the entry that had to swap places
+ if let Some(entry) = self.entries.get(found) {
+ // was not last element
+ // examine new element in `found` and find it in indices
+ let mut probe = desired_pos(self.mask, entry.hash);
+
+ probe_loop!(probe < self.indices.len(), {
+ if let Some((i, _)) = self.indices[probe].resolve() {
+ if i >= self.entries.len() {
+ // found it
+ self.indices[probe] = Pos::new(found, entry.hash);
+ break;
+ }
+ }
+ });
+
+ // Update links
+ if let Some(links) = entry.links {
+ self.extra_values[links.next].prev = Link::Entry(found);
+ self.extra_values[links.tail].next = Link::Entry(found);
+ }
+ }
+
+ // backward shift deletion in self.indices
+ // after probe, shift all non-ideally placed indices backward
+ if self.entries.len() > 0 {
+ let mut last_probe = probe;
+ let mut probe = probe + 1;
+
+ probe_loop!(probe < self.indices.len(), {
+ if let Some((_, entry_hash)) = self.indices[probe].resolve() {
+ if probe_distance(self.mask, entry_hash, probe) > 0 {
+ self.indices[last_probe] = self.indices[probe];
+ self.indices[probe] = Pos::none();
+ } else {
+ break;
+ }
+ } else {
+ break;
+ }
+
+ last_probe = probe;
+ });
+ }
+
+ entry
+ }
+
+ /// Removes the `ExtraValue` at the given index.
+ #[inline]
+ fn remove_extra_value(&mut self, idx: usize) -> ExtraValue<T> {
+ let raw_links = self.raw_links();
+ remove_extra_value(raw_links, &mut self.extra_values, idx)
+ }
+
+ fn remove_all_extra_values(&mut self, mut head: usize) {
+ loop {
+ let extra = self.remove_extra_value(head);
+
+ if let Link::Extra(idx) = extra.next {
+ head = idx;
+ } else {
+ break;
+ }
+ }
+ }
+
+ #[inline]
+ fn try_insert_entry(
+ &mut self,
+ hash: HashValue,
+ key: HeaderName,
+ value: T,
+ ) -> Result<(), MaxSizeReached> {
+ if self.entries.len() >= MAX_SIZE {
+ return Err(MaxSizeReached::new());
+ }
+
+ self.entries.push(Bucket {
+ hash: hash,
+ key: key,
+ value: value,
+ links: None,
+ });
+
+ Ok(())
+ }
+
+ fn rebuild(&mut self) {
+ // Loop over all entries and re-insert them into the map
+ 'outer: for (index, entry) in self.entries.iter_mut().enumerate() {
+ let hash = hash_elem_using(&self.danger, &entry.key);
+ let mut probe = desired_pos(self.mask, hash);
+ let mut dist = 0;
+
+ // Update the entry's hash code
+ entry.hash = hash;
+
+ probe_loop!(probe < self.indices.len(), {
+ if let Some((_, entry_hash)) = self.indices[probe].resolve() {
+ // if existing element probed less than us, swap
+ let their_dist = probe_distance(self.mask, entry_hash, probe);
+
+ if their_dist < dist {
+ // Robinhood
+ break;
+ }
+ } else {
+ // Vacant slot
+ self.indices[probe] = Pos::new(index, hash);
+ continue 'outer;
+ }
+
+ dist += 1;
+ });
+
+ do_insert_phase_two(&mut self.indices, probe, Pos::new(index, hash));
+ }
+ }
+
+ fn reinsert_entry_in_order(&mut self, pos: Pos) {
+ if let Some((_, entry_hash)) = pos.resolve() {
+ // Find first empty bucket and insert there
+ let mut probe = desired_pos(self.mask, entry_hash);
+
+ probe_loop!(probe < self.indices.len(), {
+ if self.indices[probe].resolve().is_none() {
+ // empty bucket, insert here
+ self.indices[probe] = pos;
+ return;
+ }
+ });
+ }
+ }
+
+ fn try_reserve_one(&mut self) -> Result<(), MaxSizeReached> {
+ let len = self.entries.len();
+
+ if self.danger.is_yellow() {
+ let load_factor = self.entries.len() as f32 / self.indices.len() as f32;
+
+ if load_factor >= LOAD_FACTOR_THRESHOLD {
+ // Transition back to green danger level
+ self.danger.to_green();
+
+ // Double the capacity
+ let new_cap = self.indices.len() * 2;
+
+ // Grow the capacity
+ self.try_grow(new_cap)?;
+ } else {
+ self.danger.to_red();
+
+ // Rebuild hash table
+ for index in self.indices.iter_mut() {
+ *index = Pos::none();
+ }
+
+ self.rebuild();
+ }
+ } else if len == self.capacity() {
+ if len == 0 {
+ let new_raw_cap = 8;
+ self.mask = 8 - 1;
+ self.indices = vec![Pos::none(); new_raw_cap].into_boxed_slice();
+ self.entries = Vec::with_capacity(usable_capacity(new_raw_cap));
+ } else {
+ let raw_cap = self.indices.len();
+ self.try_grow(raw_cap << 1)?;
+ }
+ }
+
+ Ok(())
+ }
+
+ #[inline]
+ fn try_grow(&mut self, new_raw_cap: usize) -> Result<(), MaxSizeReached> {
+ if new_raw_cap > MAX_SIZE {
+ return Err(MaxSizeReached::new());
+ }
+
+ // find first ideally placed element -- start of cluster
+ let mut first_ideal = 0;
+
+ for (i, pos) in self.indices.iter().enumerate() {
+ if let Some((_, entry_hash)) = pos.resolve() {
+ if 0 == probe_distance(self.mask, entry_hash, i) {
+ first_ideal = i;
+ break;
+ }
+ }
+ }
+
+ // visit the entries in an order where we can simply reinsert them
+ // into self.indices without any bucket stealing.
+ let old_indices = mem::replace(
+ &mut self.indices,
+ vec![Pos::none(); new_raw_cap].into_boxed_slice(),
+ );
+ self.mask = new_raw_cap.wrapping_sub(1) as Size;
+
+ for &pos in &old_indices[first_ideal..] {
+ self.reinsert_entry_in_order(pos);
+ }
+
+ for &pos in &old_indices[..first_ideal] {
+ self.reinsert_entry_in_order(pos);
+ }
+
+ // Reserve additional entry slots
+ let more = self.capacity() - self.entries.len();
+ self.entries.reserve_exact(more);
+ Ok(())
+ }
+
+ #[inline]
+ fn raw_links(&mut self) -> RawLinks<T> {
+ RawLinks(&mut self.entries[..] as *mut _)
+ }
+}
+
+/// Removes the `ExtraValue` at the given index.
+#[inline]
+fn remove_extra_value<T>(
+ mut raw_links: RawLinks<T>,
+ extra_values: &mut Vec<ExtraValue<T>>,
+ idx: usize)
+ -> ExtraValue<T>
+{
+ let prev;
+ let next;
+
+ {
+ debug_assert!(extra_values.len() > idx);
+ let extra = &extra_values[idx];
+ prev = extra.prev;
+ next = extra.next;
+ }
+
+ // First unlink the extra value
+ match (prev, next) {
+ (Link::Entry(prev), Link::Entry(next)) => {
+ debug_assert_eq!(prev, next);
+
+ raw_links[prev] = None;
+ }
+ (Link::Entry(prev), Link::Extra(next)) => {
+ debug_assert!(raw_links[prev].is_some());
+
+ raw_links[prev].as_mut().unwrap()
+ .next = next;
+
+ debug_assert!(extra_values.len() > next);
+ extra_values[next].prev = Link::Entry(prev);
+ }
+ (Link::Extra(prev), Link::Entry(next)) => {
+ debug_assert!(raw_links[next].is_some());
+
+ raw_links[next].as_mut().unwrap()
+ .tail = prev;
+
+ debug_assert!(extra_values.len() > prev);
+ extra_values[prev].next = Link::Entry(next);
+ }
+ (Link::Extra(prev), Link::Extra(next)) => {
+ debug_assert!(extra_values.len() > next);
+ debug_assert!(extra_values.len() > prev);
+
+ extra_values[prev].next = Link::Extra(next);
+ extra_values[next].prev = Link::Extra(prev);
+ }
+ }
+
+ // Remove the extra value
+ let mut extra = extra_values.swap_remove(idx);
+
+ // This is the index of the value that was moved (possibly `extra`)
+ let old_idx = extra_values.len();
+
+ // Update the links
+ if extra.prev == Link::Extra(old_idx) {
+ extra.prev = Link::Extra(idx);
+ }
+
+ if extra.next == Link::Extra(old_idx) {
+ extra.next = Link::Extra(idx);
+ }
+
+ // Check if another entry was displaced. If it was, then the links
+ // need to be fixed.
+ if idx != old_idx {
+ let next;
+ let prev;
+
+ {
+ debug_assert!(extra_values.len() > idx);
+ let moved = &extra_values[idx];
+ next = moved.next;
+ prev = moved.prev;
+ }
+
+ // An entry was moved, we have to the links
+ match prev {
+ Link::Entry(entry_idx) => {
+ // It is critical that we do not attempt to read the
+ // header name or value as that memory may have been
+ // "released" already.
+ debug_assert!(raw_links[entry_idx].is_some());
+
+ let links = raw_links[entry_idx].as_mut().unwrap();
+ links.next = idx;
+ }
+ Link::Extra(extra_idx) => {
+ debug_assert!(extra_values.len() > extra_idx);
+ extra_values[extra_idx].next = Link::Extra(idx);
+ }
+ }
+
+ match next {
+ Link::Entry(entry_idx) => {
+ debug_assert!(raw_links[entry_idx].is_some());
+
+ let links = raw_links[entry_idx].as_mut().unwrap();
+ links.tail = idx;
+ }
+ Link::Extra(extra_idx) => {
+ debug_assert!(extra_values.len() > extra_idx);
+ extra_values[extra_idx].prev = Link::Extra(idx);
+ }
+ }
+ }
+
+ debug_assert!({
+ for v in &*extra_values {
+ assert!(v.next != Link::Extra(old_idx));
+ assert!(v.prev != Link::Extra(old_idx));
+ }
+
+ true
+ });
+
+ extra
+}
+
+fn drain_all_extra_values<T>(
+ raw_links: RawLinks<T>,
+ extra_values: &mut Vec<ExtraValue<T>>,
+ mut head: usize)
+ -> Vec<T>
+{
+ let mut vec = Vec::new();
+ loop {
+ let extra = remove_extra_value(raw_links, extra_values, head);
+ vec.push(extra.value);
+
+ if let Link::Extra(idx) = extra.next {
+ head = idx;
+ } else {
+ break;
+ }
+ }
+ vec
+}
+
+impl<'a, T> IntoIterator for &'a HeaderMap<T> {
+ type Item = (&'a HeaderName, &'a T);
+ type IntoIter = Iter<'a, T>;
+
+ fn into_iter(self) -> Iter<'a, T> {
+ self.iter()
+ }
+}
+
+impl<'a, T> IntoIterator for &'a mut HeaderMap<T> {
+ type Item = (&'a HeaderName, &'a mut T);
+ type IntoIter = IterMut<'a, T>;
+
+ fn into_iter(self) -> IterMut<'a, T> {
+ self.iter_mut()
+ }
+}
+
+impl<T> IntoIterator for HeaderMap<T> {
+ type Item = (Option<HeaderName>, T);
+ type IntoIter = IntoIter<T>;
+
+ /// Creates a consuming iterator, that is, one that moves keys and values
+ /// out of the map in arbitrary order. The map cannot be used after calling
+ /// this.
+ ///
+ /// For each yielded item that has `None` provided for the `HeaderName`,
+ /// then the associated header name is the same as that of the previously
+ /// yielded item. The first yielded item will have `HeaderName` set.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage.
+ ///
+ /// ```
+ /// # use http::header;
+ /// # use http::header::*;
+ /// let mut map = HeaderMap::new();
+ /// map.insert(header::CONTENT_LENGTH, "123".parse().unwrap());
+ /// map.insert(header::CONTENT_TYPE, "json".parse().unwrap());
+ ///
+ /// let mut iter = map.into_iter();
+ /// assert_eq!(iter.next(), Some((Some(header::CONTENT_LENGTH), "123".parse().unwrap())));
+ /// assert_eq!(iter.next(), Some((Some(header::CONTENT_TYPE), "json".parse().unwrap())));
+ /// assert!(iter.next().is_none());
+ /// ```
+ ///
+ /// Multiple values per key.
+ ///
+ /// ```
+ /// # use http::header;
+ /// # use http::header::*;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.append(header::CONTENT_LENGTH, "123".parse().unwrap());
+ /// map.append(header::CONTENT_LENGTH, "456".parse().unwrap());
+ ///
+ /// map.append(header::CONTENT_TYPE, "json".parse().unwrap());
+ /// map.append(header::CONTENT_TYPE, "html".parse().unwrap());
+ /// map.append(header::CONTENT_TYPE, "xml".parse().unwrap());
+ ///
+ /// let mut iter = map.into_iter();
+ ///
+ /// assert_eq!(iter.next(), Some((Some(header::CONTENT_LENGTH), "123".parse().unwrap())));
+ /// assert_eq!(iter.next(), Some((None, "456".parse().unwrap())));
+ ///
+ /// assert_eq!(iter.next(), Some((Some(header::CONTENT_TYPE), "json".parse().unwrap())));
+ /// assert_eq!(iter.next(), Some((None, "html".parse().unwrap())));
+ /// assert_eq!(iter.next(), Some((None, "xml".parse().unwrap())));
+ /// assert!(iter.next().is_none());
+ /// ```
+ fn into_iter(self) -> IntoIter<T> {
+ IntoIter {
+ next: None,
+ entries: self.entries.into_iter(),
+ extra_values: self.extra_values,
+ }
+ }
+}
+
+impl<T> FromIterator<(HeaderName, T)> for HeaderMap<T> {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = (HeaderName, T)>,
+ {
+ let mut map = HeaderMap::default();
+ map.extend(iter);
+ map
+ }
+}
+
+/// Try to convert a `HashMap` into a `HeaderMap`.
+///
+/// # Examples
+///
+/// ```
+/// use std::collections::HashMap;
+/// use std::convert::TryInto;
+/// use http::HeaderMap;
+///
+/// let mut map = HashMap::new();
+/// map.insert("X-Custom-Header".to_string(), "my value".to_string());
+///
+/// let headers: HeaderMap = (&map).try_into().expect("valid headers");
+/// assert_eq!(headers["X-Custom-Header"], "my value");
+/// ```
+impl<'a, K, V, T> TryFrom<&'a HashMap<K, V>> for HeaderMap<T>
+ where
+ K: Eq + Hash,
+ HeaderName: TryFrom<&'a K>,
+ <HeaderName as TryFrom<&'a K>>::Error: Into<crate::Error>,
+ T: TryFrom<&'a V>,
+ T::Error: Into<crate::Error>,
+{
+ type Error = Error;
+
+ fn try_from(c: &'a HashMap<K, V>) -> Result<Self, Self::Error> {
+ c.into_iter()
+ .map(|(k, v)| -> crate::Result<(HeaderName, T)> {
+ let name = TryFrom::try_from(k).map_err(Into::into)?;
+ let value = TryFrom::try_from(v).map_err(Into::into)?;
+ Ok((name, value))
+ })
+ .collect()
+ }
+}
+
+impl<T> Extend<(Option<HeaderName>, T)> for HeaderMap<T> {
+ /// Extend a `HeaderMap` with the contents of another `HeaderMap`.
+ ///
+ /// This function expects the yielded items to follow the same structure as
+ /// `IntoIter`.
+ ///
+ /// # Panics
+ ///
+ /// This panics if the first yielded item does not have a `HeaderName`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::*;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// map.insert(ACCEPT, "text/plain".parse().unwrap());
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// let mut extra = HeaderMap::new();
+ ///
+ /// extra.insert(HOST, "foo.bar".parse().unwrap());
+ /// extra.insert(COOKIE, "hello".parse().unwrap());
+ /// extra.append(COOKIE, "world".parse().unwrap());
+ ///
+ /// map.extend(extra);
+ ///
+ /// assert_eq!(map["host"], "foo.bar");
+ /// assert_eq!(map["accept"], "text/plain");
+ /// assert_eq!(map["cookie"], "hello");
+ ///
+ /// let v = map.get_all("host");
+ /// assert_eq!(1, v.iter().count());
+ ///
+ /// let v = map.get_all("cookie");
+ /// assert_eq!(2, v.iter().count());
+ /// ```
+ fn extend<I: IntoIterator<Item = (Option<HeaderName>, T)>>(&mut self, iter: I) {
+ let mut iter = iter.into_iter();
+
+ // The structure of this is a bit weird, but it is mostly to make the
+ // borrow checker happy.
+ let (mut key, mut val) = match iter.next() {
+ Some((Some(key), val)) => (key, val),
+ Some((None, _)) => panic!("expected a header name, but got None"),
+ None => return,
+ };
+
+ 'outer: loop {
+ let mut entry = match self.try_entry2(key).expect("size overflows MAX_SIZE") {
+ Entry::Occupied(mut e) => {
+ // Replace all previous values while maintaining a handle to
+ // the entry.
+ e.insert(val);
+ e
+ }
+ Entry::Vacant(e) => e.insert_entry(val),
+ };
+
+ // As long as `HeaderName` is none, keep inserting the value into
+ // the current entry
+ loop {
+ match iter.next() {
+ Some((Some(k), v)) => {
+ key = k;
+ val = v;
+ continue 'outer;
+ }
+ Some((None, v)) => {
+ entry.append(v);
+ }
+ None => {
+ return;
+ }
+ }
+ }
+ }
+ }
+}
+
+impl<T> Extend<(HeaderName, T)> for HeaderMap<T> {
+ fn extend<I: IntoIterator<Item = (HeaderName, T)>>(&mut self, iter: I) {
+ // Keys may be already present or show multiple times in the iterator.
+ // Reserve the entire hint lower bound if the map is empty.
+ // Otherwise reserve half the hint (rounded up), so the map
+ // will only resize twice in the worst case.
+ let iter = iter.into_iter();
+
+ let reserve = if self.is_empty() {
+ iter.size_hint().0
+ } else {
+ (iter.size_hint().0 + 1) / 2
+ };
+
+ self.reserve(reserve);
+
+ for (k, v) in iter {
+ self.append(k, v);
+ }
+ }
+}
+
+impl<T: PartialEq> PartialEq for HeaderMap<T> {
+ fn eq(&self, other: &HeaderMap<T>) -> bool {
+ if self.len() != other.len() {
+ return false;
+ }
+
+ self.keys()
+ .all(|key| self.get_all(key) == other.get_all(key))
+ }
+}
+
+impl<T: Eq> Eq for HeaderMap<T> {}
+
+impl<T: fmt::Debug> fmt::Debug for HeaderMap<T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_map().entries(self.iter()).finish()
+ }
+}
+
+impl<T> Default for HeaderMap<T> {
+ fn default() -> Self {
+ HeaderMap::try_with_capacity(0).expect("zero capacity should never fail")
+ }
+}
+
+impl<'a, K, T> ops::Index<K> for HeaderMap<T>
+where
+ K: AsHeaderName,
+{
+ type Output = T;
+
+ /// # Panics
+ /// Using the index operator will cause a panic if the header you're querying isn't set.
+ #[inline]
+ fn index(&self, index: K) -> &T {
+ match self.get2(&index) {
+ Some(val) => val,
+ None => panic!("no entry found for key {:?}", index.as_str()),
+ }
+ }
+}
+
+/// phase 2 is post-insert where we forward-shift `Pos` in the indices.
+///
+/// returns the number of displaced elements
+#[inline]
+fn do_insert_phase_two(indices: &mut [Pos], mut probe: usize, mut old_pos: Pos) -> usize {
+ let mut num_displaced = 0;
+
+ probe_loop!(probe < indices.len(), {
+ let pos = &mut indices[probe];
+
+ if pos.is_none() {
+ *pos = old_pos;
+ break;
+ } else {
+ num_displaced += 1;
+ old_pos = mem::replace(pos, old_pos);
+ }
+ });
+
+ num_displaced
+}
+
+#[inline]
+fn append_value<T>(
+ entry_idx: usize,
+ entry: &mut Bucket<T>,
+ extra: &mut Vec<ExtraValue<T>>,
+ value: T,
+) {
+ match entry.links {
+ Some(links) => {
+ let idx = extra.len();
+ extra.push(ExtraValue {
+ value: value,
+ prev: Link::Extra(links.tail),
+ next: Link::Entry(entry_idx),
+ });
+
+ extra[links.tail].next = Link::Extra(idx);
+
+ entry.links = Some(Links { tail: idx, ..links });
+ }
+ None => {
+ let idx = extra.len();
+ extra.push(ExtraValue {
+ value: value,
+ prev: Link::Entry(entry_idx),
+ next: Link::Entry(entry_idx),
+ });
+
+ entry.links = Some(Links {
+ next: idx,
+ tail: idx,
+ });
+ }
+ }
+}
+
+// ===== impl Iter =====
+
+impl<'a, T> Iterator for Iter<'a, T> {
+ type Item = (&'a HeaderName, &'a T);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ use self::Cursor::*;
+
+ if self.cursor.is_none() {
+ if (self.entry + 1) >= self.map.entries.len() {
+ return None;
+ }
+
+ self.entry += 1;
+ self.cursor = Some(Cursor::Head);
+ }
+
+ let entry = &self.map.entries[self.entry];
+
+ match self.cursor.unwrap() {
+ Head => {
+ self.cursor = entry.links.map(|l| Values(l.next));
+ Some((&entry.key, &entry.value))
+ }
+ Values(idx) => {
+ let extra = &self.map.extra_values[idx];
+
+ match extra.next {
+ Link::Entry(_) => self.cursor = None,
+ Link::Extra(i) => self.cursor = Some(Values(i)),
+ }
+
+ Some((&entry.key, &extra.value))
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let map = self.map;
+ debug_assert!(map.entries.len() >= self.entry);
+
+ let lower = map.entries.len() - self.entry;
+ // We could pessimistically guess at the upper bound, saying
+ // that its lower + map.extra_values.len(). That could be
+ // way over though, such as if we're near the end, and have
+ // already gone through several extra values...
+ (lower, None)
+ }
+}
+
+impl<'a, T> FusedIterator for Iter<'a, T> {}
+
+unsafe impl<'a, T: Sync> Sync for Iter<'a, T> {}
+unsafe impl<'a, T: Sync> Send for Iter<'a, T> {}
+
+// ===== impl IterMut =====
+
+impl<'a, T> IterMut<'a, T> {
+ fn next_unsafe(&mut self) -> Option<(&'a HeaderName, *mut T)> {
+ use self::Cursor::*;
+
+ if self.cursor.is_none() {
+ if (self.entry + 1) >= unsafe { &*self.map }.entries.len() {
+ return None;
+ }
+
+ self.entry += 1;
+ self.cursor = Some(Cursor::Head);
+ }
+
+ let entry = unsafe { &mut (*self.map).entries[self.entry] };
+
+ match self.cursor.unwrap() {
+ Head => {
+ self.cursor = entry.links.map(|l| Values(l.next));
+ Some((&entry.key, &mut entry.value as *mut _))
+ }
+ Values(idx) => {
+ let extra = unsafe { &mut (*self.map).extra_values[idx] };
+
+ match extra.next {
+ Link::Entry(_) => self.cursor = None,
+ Link::Extra(i) => self.cursor = Some(Values(i)),
+ }
+
+ Some((&entry.key, &mut extra.value as *mut _))
+ }
+ }
+ }
+}
+
+impl<'a, T> Iterator for IterMut<'a, T> {
+ type Item = (&'a HeaderName, &'a mut T);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.next_unsafe()
+ .map(|(key, ptr)| (key, unsafe { &mut *ptr }))
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let map = unsafe { &*self.map };
+ debug_assert!(map.entries.len() >= self.entry);
+
+ let lower = map.entries.len() - self.entry;
+ // We could pessimistically guess at the upper bound, saying
+ // that its lower + map.extra_values.len(). That could be
+ // way over though, such as if we're near the end, and have
+ // already gone through several extra values...
+ (lower, None)
+ }
+}
+
+impl<'a, T> FusedIterator for IterMut<'a, T> {}
+
+unsafe impl<'a, T: Sync> Sync for IterMut<'a, T> {}
+unsafe impl<'a, T: Send> Send for IterMut<'a, T> {}
+
+// ===== impl Keys =====
+
+impl<'a, T> Iterator for Keys<'a, T> {
+ type Item = &'a HeaderName;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|b| &b.key)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<'a, T> ExactSizeIterator for Keys<'a, T> {}
+impl<'a, T> FusedIterator for Keys<'a, T> {}
+
+// ===== impl Values ====
+
+impl<'a, T> Iterator for Values<'a, T> {
+ type Item = &'a T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|(_, v)| v)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<'a, T> FusedIterator for Values<'a, T> {}
+
+// ===== impl ValuesMut ====
+
+impl<'a, T> Iterator for ValuesMut<'a, T> {
+ type Item = &'a mut T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|(_, v)| v)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<'a, T> FusedIterator for ValuesMut<'a, T> {}
+
+// ===== impl Drain =====
+
+impl<'a, T> Iterator for Drain<'a, T> {
+ type Item = (Option<HeaderName>, T);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(next) = self.next {
+ // Remove the extra value
+
+ let raw_links = RawLinks(self.entries);
+ let extra = unsafe {
+ remove_extra_value(raw_links, &mut *self.extra_values, next)
+ };
+
+ match extra.next {
+ Link::Extra(idx) => self.next = Some(idx),
+ Link::Entry(_) => self.next = None,
+ }
+
+ return Some((None, extra.value));
+ }
+
+ let idx = self.idx;
+
+ if idx == self.len {
+ return None;
+ }
+
+ self.idx += 1;
+
+ unsafe {
+ let entry = &(*self.entries)[idx];
+
+ // Read the header name
+ let key = ptr::read(&entry.key as *const _);
+ let value = ptr::read(&entry.value as *const _);
+ self.next = entry.links.map(|l| l.next);
+
+ Some((Some(key), value))
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // At least this many names... It's unknown if the user wants
+ // to count the extra_values on top.
+ //
+ // For instance, extending a new `HeaderMap` wouldn't need to
+ // reserve the upper-bound in `entries`, only the lower-bound.
+ let lower = self.len - self.idx;
+ let upper = unsafe { (*self.extra_values).len() } + lower;
+ (lower, Some(upper))
+ }
+}
+
+impl<'a, T> FusedIterator for Drain<'a, T> {}
+
+impl<'a, T> Drop for Drain<'a, T> {
+ fn drop(&mut self) {
+ for _ in self {}
+ }
+}
+
+unsafe impl<'a, T: Sync> Sync for Drain<'a, T> {}
+unsafe impl<'a, T: Send> Send for Drain<'a, T> {}
+
+// ===== impl Entry =====
+
+impl<'a, T> Entry<'a, T> {
+ /// Ensures a value is in the entry by inserting the default if empty.
+ ///
+ /// Returns a mutable reference to the **first** value in the entry.
+ ///
+ /// # Panics
+ ///
+ /// This method panics if capacity exceeds max `HeaderMap` capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map: HeaderMap<u32> = HeaderMap::default();
+ ///
+ /// let headers = &[
+ /// "content-length",
+ /// "x-hello",
+ /// "Content-Length",
+ /// "x-world",
+ /// ];
+ ///
+ /// for &header in headers {
+ /// let counter = map.entry(header)
+ /// .or_insert(0);
+ /// *counter += 1;
+ /// }
+ ///
+ /// assert_eq!(map["content-length"], 2);
+ /// assert_eq!(map["x-hello"], 1);
+ /// ```
+ pub fn or_insert(self, default: T) -> &'a mut T {
+ self.or_try_insert(default)
+ .expect("size overflows MAX_SIZE")
+ }
+
+ /// Ensures a value is in the entry by inserting the default if empty.
+ ///
+ /// Returns a mutable reference to the **first** value in the entry.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if `HeaderMap` exceeds max capacity
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map: HeaderMap<u32> = HeaderMap::default();
+ ///
+ /// let headers = &[
+ /// "content-length",
+ /// "x-hello",
+ /// "Content-Length",
+ /// "x-world",
+ /// ];
+ ///
+ /// for &header in headers {
+ /// let counter = map.entry(header)
+ /// .or_try_insert(0)
+ /// .unwrap();
+ /// *counter += 1;
+ /// }
+ ///
+ /// assert_eq!(map["content-length"], 2);
+ /// assert_eq!(map["x-hello"], 1);
+ /// ```
+ pub fn or_try_insert(self, default: T) -> Result<&'a mut T, MaxSizeReached> {
+ use self::Entry::*;
+
+ match self {
+ Occupied(e) => Ok(e.into_mut()),
+ Vacant(e) => e.try_insert(default),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default
+ /// function if empty.
+ ///
+ /// The default function is not called if the entry exists in the map.
+ /// Returns a mutable reference to the **first** value in the entry.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage.
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// let res = map.entry("x-hello")
+ /// .or_insert_with(|| "world".parse().unwrap());
+ ///
+ /// assert_eq!(res, "world");
+ /// ```
+ ///
+ /// The default function is not called if the entry exists in the map.
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.try_insert(HOST, "world".parse().unwrap()).unwrap();
+ ///
+ /// let res = map.try_entry("host")
+ /// .unwrap()
+ /// .or_try_insert_with(|| unreachable!())
+ /// .unwrap();
+ ///
+ ///
+ /// assert_eq!(res, "world");
+ /// ```
+ pub fn or_insert_with<F: FnOnce() -> T>(self, default: F) -> &'a mut T {
+ self.or_try_insert_with(default)
+ .expect("size overflows MAX_SIZE")
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default
+ /// function if empty.
+ ///
+ /// The default function is not called if the entry exists in the map.
+ /// Returns a mutable reference to the **first** value in the entry.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage.
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// let res = map.entry("x-hello")
+ /// .or_insert_with(|| "world".parse().unwrap());
+ ///
+ /// assert_eq!(res, "world");
+ /// ```
+ ///
+ /// The default function is not called if the entry exists in the map.
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.try_insert(HOST, "world".parse().unwrap()).unwrap();
+ ///
+ /// let res = map.try_entry("host")
+ /// .unwrap()
+ /// .or_try_insert_with(|| unreachable!())
+ /// .unwrap();
+ ///
+ ///
+ /// assert_eq!(res, "world");
+ /// ```
+ pub fn or_try_insert_with<F: FnOnce() -> T>(
+ self,
+ default: F,
+ ) -> Result<&'a mut T, MaxSizeReached> {
+ use self::Entry::*;
+
+ match self {
+ Occupied(e) => Ok(e.into_mut()),
+ Vacant(e) => e.try_insert(default()),
+ }
+ }
+
+ /// Returns a reference to the entry's key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert_eq!(map.entry("x-hello").key(), "x-hello");
+ /// ```
+ pub fn key(&self) -> &HeaderName {
+ use self::Entry::*;
+
+ match *self {
+ Vacant(ref e) => e.key(),
+ Occupied(ref e) => e.key(),
+ }
+ }
+}
+
+// ===== impl VacantEntry =====
+
+impl<'a, T> VacantEntry<'a, T> {
+ /// Returns a reference to the entry's key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// assert_eq!(map.entry("x-hello").key().as_str(), "x-hello");
+ /// ```
+ pub fn key(&self) -> &HeaderName {
+ &self.key
+ }
+
+ /// Take ownership of the key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// if let Entry::Vacant(v) = map.entry("x-hello") {
+ /// assert_eq!(v.into_key().as_str(), "x-hello");
+ /// }
+ /// ```
+ pub fn into_key(self) -> HeaderName {
+ self.key
+ }
+
+ /// Insert the value into the entry.
+ ///
+ /// The value will be associated with this entry's key. A mutable reference
+ /// to the inserted value will be returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// if let Entry::Vacant(v) = map.entry("x-hello") {
+ /// v.insert("world".parse().unwrap());
+ /// }
+ ///
+ /// assert_eq!(map["x-hello"], "world");
+ /// ```
+ pub fn insert(self, value: T) -> &'a mut T {
+ self.try_insert(value).expect("size overflows MAX_SIZE")
+ }
+
+ /// Insert the value into the entry.
+ ///
+ /// The value will be associated with this entry's key. A mutable reference
+ /// to the inserted value will be returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry};
+ /// let mut map = HeaderMap::new();
+ ///
+ /// if let Entry::Vacant(v) = map.entry("x-hello") {
+ /// v.insert("world".parse().unwrap());
+ /// }
+ ///
+ /// assert_eq!(map["x-hello"], "world");
+ /// ```
+ pub fn try_insert(self, value: T) -> Result<&'a mut T, MaxSizeReached> {
+ // Ensure that there is space in the map
+ let index =
+ self.map
+ .try_insert_phase_two(self.key, value, self.hash, self.probe, self.danger)?;
+
+ Ok(&mut self.map.entries[index].value)
+ }
+
+ /// Insert the value into the entry.
+ ///
+ /// The value will be associated with this entry's key. The new
+ /// `OccupiedEntry` is returned, allowing for further manipulation.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::*;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// if let Entry::Vacant(v) = map.try_entry("x-hello").unwrap() {
+ /// let mut e = v.try_insert_entry("world".parse().unwrap()).unwrap();
+ /// e.insert("world2".parse().unwrap());
+ /// }
+ ///
+ /// assert_eq!(map["x-hello"], "world2");
+ /// ```
+ pub fn insert_entry(self, value: T) -> OccupiedEntry<'a, T> {
+ self.try_insert_entry(value)
+ .expect("size overflows MAX_SIZE")
+ }
+
+ /// Insert the value into the entry.
+ ///
+ /// The value will be associated with this entry's key. The new
+ /// `OccupiedEntry` is returned, allowing for further manipulation.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::*;
+ /// let mut map = HeaderMap::new();
+ ///
+ /// if let Entry::Vacant(v) = map.try_entry("x-hello").unwrap() {
+ /// let mut e = v.try_insert_entry("world".parse().unwrap()).unwrap();
+ /// e.insert("world2".parse().unwrap());
+ /// }
+ ///
+ /// assert_eq!(map["x-hello"], "world2");
+ /// ```
+ pub fn try_insert_entry(self, value: T) -> Result<OccupiedEntry<'a, T>, MaxSizeReached> {
+ // Ensure that there is space in the map
+ let index =
+ self.map
+ .try_insert_phase_two(self.key, value, self.hash, self.probe, self.danger)?;
+
+ Ok(OccupiedEntry {
+ map: self.map,
+ index: index,
+ probe: self.probe,
+ })
+ }
+}
+
+// ===== impl GetAll =====
+
+impl<'a, T: 'a> GetAll<'a, T> {
+ /// Returns an iterator visiting all values associated with the entry.
+ ///
+ /// Values are iterated in insertion order.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::HeaderMap;
+ /// # use http::header::HOST;
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ /// map.append(HOST, "hello.earth".parse().unwrap());
+ ///
+ /// let values = map.get_all("host");
+ /// let mut iter = values.iter();
+ /// assert_eq!(&"hello.world", iter.next().unwrap());
+ /// assert_eq!(&"hello.earth", iter.next().unwrap());
+ /// assert!(iter.next().is_none());
+ /// ```
+ pub fn iter(&self) -> ValueIter<'a, T> {
+ // This creates a new GetAll struct so that the lifetime
+ // isn't bound to &self.
+ GetAll {
+ map: self.map,
+ index: self.index,
+ }
+ .into_iter()
+ }
+}
+
+impl<'a, T: PartialEq> PartialEq for GetAll<'a, T> {
+ fn eq(&self, other: &Self) -> bool {
+ self.iter().eq(other.iter())
+ }
+}
+
+impl<'a, T> IntoIterator for GetAll<'a, T> {
+ type Item = &'a T;
+ type IntoIter = ValueIter<'a, T>;
+
+ fn into_iter(self) -> ValueIter<'a, T> {
+ self.map.value_iter(self.index)
+ }
+}
+
+impl<'a, 'b: 'a, T> IntoIterator for &'b GetAll<'a, T> {
+ type Item = &'a T;
+ type IntoIter = ValueIter<'a, T>;
+
+ fn into_iter(self) -> ValueIter<'a, T> {
+ self.map.value_iter(self.index)
+ }
+}
+
+// ===== impl ValueIter =====
+
+impl<'a, T: 'a> Iterator for ValueIter<'a, T> {
+ type Item = &'a T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ use self::Cursor::*;
+
+ match self.front {
+ Some(Head) => {
+ let entry = &self.map.entries[self.index];
+
+ if self.back == Some(Head) {
+ self.front = None;
+ self.back = None;
+ } else {
+ // Update the iterator state
+ match entry.links {
+ Some(links) => {
+ self.front = Some(Values(links.next));
+ }
+ None => unreachable!(),
+ }
+ }
+
+ Some(&entry.value)
+ }
+ Some(Values(idx)) => {
+ let extra = &self.map.extra_values[idx];
+
+ if self.front == self.back {
+ self.front = None;
+ self.back = None;
+ } else {
+ match extra.next {
+ Link::Entry(_) => self.front = None,
+ Link::Extra(i) => self.front = Some(Values(i)),
+ }
+ }
+
+ Some(&extra.value)
+ }
+ None => None,
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ match (self.front, self.back) {
+ // Exactly 1 value...
+ (Some(Cursor::Head), Some(Cursor::Head)) => (1, Some(1)),
+ // At least 1...
+ (Some(_), _) => (1, None),
+ // No more values...
+ (None, _) => (0, Some(0)),
+ }
+ }
+}
+
+impl<'a, T: 'a> DoubleEndedIterator for ValueIter<'a, T> {
+ fn next_back(&mut self) -> Option<Self::Item> {
+ use self::Cursor::*;
+
+ match self.back {
+ Some(Head) => {
+ self.front = None;
+ self.back = None;
+ Some(&self.map.entries[self.index].value)
+ }
+ Some(Values(idx)) => {
+ let extra = &self.map.extra_values[idx];
+
+ if self.front == self.back {
+ self.front = None;
+ self.back = None;
+ } else {
+ match extra.prev {
+ Link::Entry(_) => self.back = Some(Head),
+ Link::Extra(idx) => self.back = Some(Values(idx)),
+ }
+ }
+
+ Some(&extra.value)
+ }
+ None => None,
+ }
+ }
+}
+
+impl<'a, T> FusedIterator for ValueIter<'a, T> {}
+
+// ===== impl ValueIterMut =====
+
+impl<'a, T: 'a> Iterator for ValueIterMut<'a, T> {
+ type Item = &'a mut T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ use self::Cursor::*;
+
+ let entry = unsafe { &mut (*self.map).entries[self.index] };
+
+ match self.front {
+ Some(Head) => {
+ if self.back == Some(Head) {
+ self.front = None;
+ self.back = None;
+ } else {
+ // Update the iterator state
+ match entry.links {
+ Some(links) => {
+ self.front = Some(Values(links.next));
+ }
+ None => unreachable!(),
+ }
+ }
+
+ Some(&mut entry.value)
+ }
+ Some(Values(idx)) => {
+ let extra = unsafe { &mut (*self.map).extra_values[idx] };
+
+ if self.front == self.back {
+ self.front = None;
+ self.back = None;
+ } else {
+ match extra.next {
+ Link::Entry(_) => self.front = None,
+ Link::Extra(i) => self.front = Some(Values(i)),
+ }
+ }
+
+ Some(&mut extra.value)
+ }
+ None => None,
+ }
+ }
+}
+
+impl<'a, T: 'a> DoubleEndedIterator for ValueIterMut<'a, T> {
+ fn next_back(&mut self) -> Option<Self::Item> {
+ use self::Cursor::*;
+
+ let entry = unsafe { &mut (*self.map).entries[self.index] };
+
+ match self.back {
+ Some(Head) => {
+ self.front = None;
+ self.back = None;
+ Some(&mut entry.value)
+ }
+ Some(Values(idx)) => {
+ let extra = unsafe { &mut (*self.map).extra_values[idx] };
+
+ if self.front == self.back {
+ self.front = None;
+ self.back = None;
+ } else {
+ match extra.prev {
+ Link::Entry(_) => self.back = Some(Head),
+ Link::Extra(idx) => self.back = Some(Values(idx)),
+ }
+ }
+
+ Some(&mut extra.value)
+ }
+ None => None,
+ }
+ }
+}
+
+impl<'a, T> FusedIterator for ValueIterMut<'a, T> {}
+
+unsafe impl<'a, T: Sync> Sync for ValueIterMut<'a, T> {}
+unsafe impl<'a, T: Send> Send for ValueIterMut<'a, T> {}
+
+// ===== impl IntoIter =====
+
+impl<T> Iterator for IntoIter<T> {
+ type Item = (Option<HeaderName>, T);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(next) = self.next {
+ self.next = match self.extra_values[next].next {
+ Link::Entry(_) => None,
+ Link::Extra(v) => Some(v),
+ };
+
+ let value = unsafe { ptr::read(&self.extra_values[next].value) };
+
+ return Some((None, value));
+ }
+
+ if let Some(bucket) = self.entries.next() {
+ self.next = bucket.links.map(|l| l.next);
+ let name = Some(bucket.key);
+ let value = bucket.value;
+
+ return Some((name, value));
+ }
+
+ None
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (lower, _) = self.entries.size_hint();
+ // There could be more than just the entries upper, as there
+ // could be items in the `extra_values`. We could guess, saying
+ // `upper + extra_values.len()`, but that could overestimate by a lot.
+ (lower, None)
+ }
+}
+
+impl<T> FusedIterator for IntoIter<T> {}
+
+impl<T> Drop for IntoIter<T> {
+ fn drop(&mut self) {
+ // Ensure the iterator is consumed
+ for _ in self.by_ref() {}
+
+ // All the values have already been yielded out.
+ unsafe {
+ self.extra_values.set_len(0);
+ }
+ }
+}
+
+// ===== impl OccupiedEntry =====
+
+impl<'a, T> OccupiedEntry<'a, T> {
+ /// Returns a reference to the entry's key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(e) = map.entry("host") {
+ /// assert_eq!("host", e.key());
+ /// }
+ /// ```
+ pub fn key(&self) -> &HeaderName {
+ &self.map.entries[self.index].key
+ }
+
+ /// Get a reference to the first value in the entry.
+ ///
+ /// Values are stored in insertion order.
+ ///
+ /// # Panics
+ ///
+ /// `get` panics if there are no values associated with the entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// assert_eq!(e.get(), &"hello.world");
+ ///
+ /// e.append("hello.earth".parse().unwrap());
+ ///
+ /// assert_eq!(e.get(), &"hello.world");
+ /// }
+ /// ```
+ pub fn get(&self) -> &T {
+ &self.map.entries[self.index].value
+ }
+
+ /// Get a mutable reference to the first value in the entry.
+ ///
+ /// Values are stored in insertion order.
+ ///
+ /// # Panics
+ ///
+ /// `get_mut` panics if there are no values associated with the entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::default();
+ /// map.insert(HOST, "hello.world".to_string());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// e.get_mut().push_str("-2");
+ /// assert_eq!(e.get(), &"hello.world-2");
+ /// }
+ /// ```
+ pub fn get_mut(&mut self) -> &mut T {
+ &mut self.map.entries[self.index].value
+ }
+
+ /// Converts the `OccupiedEntry` into a mutable reference to the **first**
+ /// value.
+ ///
+ /// The lifetime of the returned reference is bound to the original map.
+ ///
+ /// # Panics
+ ///
+ /// `into_mut` panics if there are no values associated with the entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::default();
+ /// map.insert(HOST, "hello.world".to_string());
+ /// map.append(HOST, "hello.earth".to_string());
+ ///
+ /// if let Entry::Occupied(e) = map.entry("host") {
+ /// e.into_mut().push_str("-2");
+ /// }
+ ///
+ /// assert_eq!("hello.world-2", map["host"]);
+ /// ```
+ pub fn into_mut(self) -> &'a mut T {
+ &mut self.map.entries[self.index].value
+ }
+
+ /// Sets the value of the entry.
+ ///
+ /// All previous values associated with the entry are removed and the first
+ /// one is returned. See `insert_mult` for an API that returns all values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "hello.world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// let mut prev = e.insert("earth".parse().unwrap());
+ /// assert_eq!("hello.world", prev);
+ /// }
+ ///
+ /// assert_eq!("earth", map["host"]);
+ /// ```
+ pub fn insert(&mut self, value: T) -> T {
+ self.map.insert_occupied(self.index, value.into())
+ }
+
+ /// Sets the value of the entry.
+ ///
+ /// This function does the same as `insert` except it returns an iterator
+ /// that yields all values previously associated with the key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ /// map.append(HOST, "world2".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// let mut prev = e.insert_mult("earth".parse().unwrap());
+ /// assert_eq!("world", prev.next().unwrap());
+ /// assert_eq!("world2", prev.next().unwrap());
+ /// assert!(prev.next().is_none());
+ /// }
+ ///
+ /// assert_eq!("earth", map["host"]);
+ /// ```
+ pub fn insert_mult(&mut self, value: T) -> ValueDrain<'_, T> {
+ self.map.insert_occupied_mult(self.index, value.into())
+ }
+
+ /// Insert the value into the entry.
+ ///
+ /// The new value is appended to the end of the entry's value list. All
+ /// previous values associated with the entry are retained.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// e.append("earth".parse().unwrap());
+ /// }
+ ///
+ /// let values = map.get_all("host");
+ /// let mut i = values.iter();
+ /// assert_eq!("world", *i.next().unwrap());
+ /// assert_eq!("earth", *i.next().unwrap());
+ /// ```
+ pub fn append(&mut self, value: T) {
+ let idx = self.index;
+ let entry = &mut self.map.entries[idx];
+ append_value(idx, entry, &mut self.map.extra_values, value.into());
+ }
+
+ /// Remove the entry from the map.
+ ///
+ /// All values associated with the entry are removed and the first one is
+ /// returned. See `remove_entry_mult` for an API that returns all values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(e) = map.entry("host") {
+ /// let mut prev = e.remove();
+ /// assert_eq!("world", prev);
+ /// }
+ ///
+ /// assert!(!map.contains_key("host"));
+ /// ```
+ pub fn remove(self) -> T {
+ self.remove_entry().1
+ }
+
+ /// Remove the entry from the map.
+ ///
+ /// The key and all values associated with the entry are removed and the
+ /// first one is returned. See `remove_entry_mult` for an API that returns
+ /// all values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(e) = map.entry("host") {
+ /// let (key, mut prev) = e.remove_entry();
+ /// assert_eq!("host", key.as_str());
+ /// assert_eq!("world", prev);
+ /// }
+ ///
+ /// assert!(!map.contains_key("host"));
+ /// ```
+ pub fn remove_entry(self) -> (HeaderName, T) {
+ if let Some(links) = self.map.entries[self.index].links {
+ self.map.remove_all_extra_values(links.next);
+ }
+
+ let entry = self.map.remove_found(self.probe, self.index);
+
+ (entry.key, entry.value)
+ }
+
+ /// Remove the entry from the map.
+ ///
+ /// The key and all values associated with the entry are removed and
+ /// returned.
+ pub fn remove_entry_mult(self) -> (HeaderName, ValueDrain<'a, T>) {
+ let raw_links = self.map.raw_links();
+ let extra_values = &mut self.map.extra_values;
+
+ let next = self.map.entries[self.index].links.map(|l| {
+ drain_all_extra_values(raw_links, extra_values, l.next)
+ .into_iter()
+ });
+
+ let entry = self.map.remove_found(self.probe, self.index);
+
+ let drain = ValueDrain {
+ first: Some(entry.value),
+ next,
+ lt: PhantomData,
+ };
+ (entry.key, drain)
+ }
+
+ /// Returns an iterator visiting all values associated with the entry.
+ ///
+ /// Values are iterated in insertion order.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::new();
+ /// map.insert(HOST, "world".parse().unwrap());
+ /// map.append(HOST, "earth".parse().unwrap());
+ ///
+ /// if let Entry::Occupied(e) = map.entry("host") {
+ /// let mut iter = e.iter();
+ /// assert_eq!(&"world", iter.next().unwrap());
+ /// assert_eq!(&"earth", iter.next().unwrap());
+ /// assert!(iter.next().is_none());
+ /// }
+ /// ```
+ pub fn iter(&self) -> ValueIter<'_, T> {
+ self.map.value_iter(Some(self.index))
+ }
+
+ /// Returns an iterator mutably visiting all values associated with the
+ /// entry.
+ ///
+ /// Values are iterated in insertion order.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderMap, Entry, HOST};
+ /// let mut map = HeaderMap::default();
+ /// map.insert(HOST, "world".to_string());
+ /// map.append(HOST, "earth".to_string());
+ ///
+ /// if let Entry::Occupied(mut e) = map.entry("host") {
+ /// for e in e.iter_mut() {
+ /// e.push_str("-boop");
+ /// }
+ /// }
+ ///
+ /// let mut values = map.get_all("host");
+ /// let mut i = values.iter();
+ /// assert_eq!(&"world-boop", i.next().unwrap());
+ /// assert_eq!(&"earth-boop", i.next().unwrap());
+ /// ```
+ pub fn iter_mut(&mut self) -> ValueIterMut<'_, T> {
+ self.map.value_iter_mut(self.index)
+ }
+}
+
+impl<'a, T> IntoIterator for OccupiedEntry<'a, T> {
+ type Item = &'a mut T;
+ type IntoIter = ValueIterMut<'a, T>;
+
+ fn into_iter(self) -> ValueIterMut<'a, T> {
+ self.map.value_iter_mut(self.index)
+ }
+}
+
+impl<'a, 'b: 'a, T> IntoIterator for &'b OccupiedEntry<'a, T> {
+ type Item = &'a T;
+ type IntoIter = ValueIter<'a, T>;
+
+ fn into_iter(self) -> ValueIter<'a, T> {
+ self.iter()
+ }
+}
+
+impl<'a, 'b: 'a, T> IntoIterator for &'b mut OccupiedEntry<'a, T> {
+ type Item = &'a mut T;
+ type IntoIter = ValueIterMut<'a, T>;
+
+ fn into_iter(self) -> ValueIterMut<'a, T> {
+ self.iter_mut()
+ }
+}
+
+// ===== impl ValueDrain =====
+
+impl<'a, T> Iterator for ValueDrain<'a, T> {
+ type Item = T;
+
+ fn next(&mut self) -> Option<T> {
+ if self.first.is_some() {
+ self.first.take()
+ } else if let Some(ref mut extras) = self.next {
+ extras.next()
+ } else {
+ None
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ match (&self.first, &self.next) {
+ // Exactly 1
+ (&Some(_), &None) => (1, Some(1)),
+ // 1 + extras
+ (&Some(_), &Some(ref extras)) => {
+ let (l, u) = extras.size_hint();
+ (l + 1, u.map(|u| u + 1))
+ },
+ // Extras only
+ (&None, &Some(ref extras)) => extras.size_hint(),
+ // No more
+ (&None, &None) => (0, Some(0)),
+ }
+ }
+}
+
+impl<'a, T> FusedIterator for ValueDrain<'a, T> {}
+
+impl<'a, T> Drop for ValueDrain<'a, T> {
+ fn drop(&mut self) {
+ while let Some(_) = self.next() {}
+ }
+}
+
+unsafe impl<'a, T: Sync> Sync for ValueDrain<'a, T> {}
+unsafe impl<'a, T: Send> Send for ValueDrain<'a, T> {}
+
+// ===== impl RawLinks =====
+
+impl<T> Clone for RawLinks<T> {
+ fn clone(&self) -> RawLinks<T> {
+ *self
+ }
+}
+
+impl<T> Copy for RawLinks<T> {}
+
+impl<T> ops::Index<usize> for RawLinks<T> {
+ type Output = Option<Links>;
+
+ fn index(&self, idx: usize) -> &Self::Output {
+ unsafe {
+ &(*self.0)[idx].links
+ }
+ }
+}
+
+impl<T> ops::IndexMut<usize> for RawLinks<T> {
+ fn index_mut(&mut self, idx: usize) -> &mut Self::Output {
+ unsafe {
+ &mut (*self.0)[idx].links
+ }
+ }
+}
+
+// ===== impl Pos =====
+
+impl Pos {
+ #[inline]
+ fn new(index: usize, hash: HashValue) -> Self {
+ debug_assert!(index < MAX_SIZE);
+ Pos {
+ index: index as Size,
+ hash: hash,
+ }
+ }
+
+ #[inline]
+ fn none() -> Self {
+ Pos {
+ index: !0,
+ hash: HashValue(0),
+ }
+ }
+
+ #[inline]
+ fn is_some(&self) -> bool {
+ !self.is_none()
+ }
+
+ #[inline]
+ fn is_none(&self) -> bool {
+ self.index == !0
+ }
+
+ #[inline]
+ fn resolve(&self) -> Option<(usize, HashValue)> {
+ if self.is_some() {
+ Some((self.index as usize, self.hash))
+ } else {
+ None
+ }
+ }
+}
+
+impl Danger {
+ fn is_red(&self) -> bool {
+ match *self {
+ Danger::Red(_) => true,
+ _ => false,
+ }
+ }
+
+ fn to_red(&mut self) {
+ debug_assert!(self.is_yellow());
+ *self = Danger::Red(RandomState::new());
+ }
+
+ fn is_yellow(&self) -> bool {
+ match *self {
+ Danger::Yellow => true,
+ _ => false,
+ }
+ }
+
+ fn to_yellow(&mut self) {
+ match *self {
+ Danger::Green => {
+ *self = Danger::Yellow;
+ }
+ _ => {}
+ }
+ }
+
+ fn to_green(&mut self) {
+ debug_assert!(self.is_yellow());
+ *self = Danger::Green;
+ }
+}
+
+// ===== impl MaxSizeReached =====
+
+impl MaxSizeReached {
+ fn new() -> Self {
+ MaxSizeReached { _priv: () }
+ }
+}
+
+impl fmt::Debug for MaxSizeReached {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_struct("MaxSizeReached")
+ // skip _priv noise
+ .finish()
+ }
+}
+
+impl fmt::Display for MaxSizeReached {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("max size reached")
+ }
+}
+
+impl std::error::Error for MaxSizeReached {}
+
+// ===== impl Utils =====
+
+#[inline]
+fn usable_capacity(cap: usize) -> usize {
+ cap - cap / 4
+}
+
+#[inline]
+fn to_raw_capacity(n: usize) -> usize {
+ match n.checked_add(n / 3) {
+ Some(n) => n,
+ None => panic!(
+ "requested capacity {} too large: overflow while converting to raw capacity",
+ n
+ ),
+ }
+}
+
+#[inline]
+fn desired_pos(mask: Size, hash: HashValue) -> usize {
+ (hash.0 & mask) as usize
+}
+
+/// The number of steps that `current` is forward of the desired position for hash
+#[inline]
+fn probe_distance(mask: Size, hash: HashValue, current: usize) -> usize {
+ current.wrapping_sub(desired_pos(mask, hash)) & mask as usize
+}
+
+fn hash_elem_using<K: ?Sized>(danger: &Danger, k: &K) -> HashValue
+where
+ K: Hash,
+{
+ use fnv::FnvHasher;
+
+ const MASK: u64 = (MAX_SIZE as u64) - 1;
+
+ let hash = match *danger {
+ // Safe hash
+ Danger::Red(ref hasher) => {
+ let mut h = hasher.build_hasher();
+ k.hash(&mut h);
+ h.finish()
+ }
+ // Fast hash
+ _ => {
+ let mut h = FnvHasher::default();
+ k.hash(&mut h);
+ h.finish()
+ }
+ };
+
+ HashValue((hash & MASK) as u16)
+}
+
+/*
+ *
+ * ===== impl IntoHeaderName / AsHeaderName =====
+ *
+ */
+
+mod into_header_name {
+ use super::{Entry, HdrName, HeaderMap, HeaderName, MaxSizeReached};
+
+ /// A marker trait used to identify values that can be used as insert keys
+ /// to a `HeaderMap`.
+ pub trait IntoHeaderName: Sealed {}
+
+ // All methods are on this pub(super) trait, instead of `IntoHeaderName`,
+ // so that they aren't publicly exposed to the world.
+ //
+ // Being on the `IntoHeaderName` trait would mean users could call
+ // `"host".insert(&mut map, "localhost")`.
+ //
+ // Ultimately, this allows us to adjust the signatures of these methods
+ // without breaking any external crate.
+ pub trait Sealed {
+ #[doc(hidden)]
+ fn try_insert<T>(self, map: &mut HeaderMap<T>, val: T)
+ -> Result<Option<T>, MaxSizeReached>;
+
+ #[doc(hidden)]
+ fn try_append<T>(self, map: &mut HeaderMap<T>, val: T) -> Result<bool, MaxSizeReached>;
+
+ #[doc(hidden)]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, MaxSizeReached>;
+ }
+
+ // ==== impls ====
+
+ impl Sealed for HeaderName {
+ #[inline]
+ fn try_insert<T>(
+ self,
+ map: &mut HeaderMap<T>,
+ val: T,
+ ) -> Result<Option<T>, MaxSizeReached> {
+ map.try_insert2(self, val)
+ }
+
+ #[inline]
+ fn try_append<T>(self, map: &mut HeaderMap<T>, val: T) -> Result<bool, MaxSizeReached> {
+ map.try_append2(self, val)
+ }
+
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, MaxSizeReached> {
+ map.try_entry2(self)
+ }
+ }
+
+ impl IntoHeaderName for HeaderName {}
+
+ impl<'a> Sealed for &'a HeaderName {
+ #[inline]
+ fn try_insert<T>(
+ self,
+ map: &mut HeaderMap<T>,
+ val: T,
+ ) -> Result<Option<T>, MaxSizeReached> {
+ map.try_insert2(self, val)
+ }
+ #[inline]
+ fn try_append<T>(self, map: &mut HeaderMap<T>, val: T) -> Result<bool, MaxSizeReached> {
+ map.try_append2(self, val)
+ }
+
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, MaxSizeReached> {
+ map.try_entry2(self)
+ }
+ }
+
+ impl<'a> IntoHeaderName for &'a HeaderName {}
+
+ impl Sealed for &'static str {
+ #[inline]
+ fn try_insert<T>(
+ self,
+ map: &mut HeaderMap<T>,
+ val: T,
+ ) -> Result<Option<T>, MaxSizeReached> {
+ HdrName::from_static(self, move |hdr| map.try_insert2(hdr, val))
+ }
+ #[inline]
+ fn try_append<T>(self, map: &mut HeaderMap<T>, val: T) -> Result<bool, MaxSizeReached> {
+ HdrName::from_static(self, move |hdr| map.try_append2(hdr, val))
+ }
+
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, MaxSizeReached> {
+ HdrName::from_static(self, move |hdr| map.try_entry2(hdr))
+ }
+ }
+
+ impl IntoHeaderName for &'static str {}
+}
+
+mod as_header_name {
+ use super::{Entry, HdrName, HeaderMap, HeaderName, InvalidHeaderName, MaxSizeReached};
+
+ /// A marker trait used to identify values that can be used as search keys
+ /// to a `HeaderMap`.
+ pub trait AsHeaderName: Sealed {}
+
+ // Debug not currently needed, save on compiling it
+ #[allow(missing_debug_implementations)]
+ pub enum TryEntryError {
+ InvalidHeaderName(InvalidHeaderName),
+ MaxSizeReached(MaxSizeReached),
+ }
+
+ impl From<InvalidHeaderName> for TryEntryError {
+ fn from(e: InvalidHeaderName) -> TryEntryError {
+ TryEntryError::InvalidHeaderName(e)
+ }
+ }
+
+ impl From<MaxSizeReached> for TryEntryError {
+ fn from(e: MaxSizeReached) -> TryEntryError {
+ TryEntryError::MaxSizeReached(e)
+ }
+ }
+
+ // All methods are on this pub(super) trait, instead of `AsHeaderName`,
+ // so that they aren't publicly exposed to the world.
+ //
+ // Being on the `AsHeaderName` trait would mean users could call
+ // `"host".find(&map)`.
+ //
+ // Ultimately, this allows us to adjust the signatures of these methods
+ // without breaking any external crate.
+ pub trait Sealed {
+ #[doc(hidden)]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError>;
+
+ #[doc(hidden)]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)>;
+
+ #[doc(hidden)]
+ fn as_str(&self) -> &str;
+ }
+
+ // ==== impls ====
+
+ impl Sealed for HeaderName {
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError> {
+ Ok(map.try_entry2(self)?)
+ }
+
+ #[inline]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)> {
+ map.find(self)
+ }
+
+ fn as_str(&self) -> &str {
+ <HeaderName>::as_str(self)
+ }
+ }
+
+ impl AsHeaderName for HeaderName {}
+
+ impl<'a> Sealed for &'a HeaderName {
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError> {
+ Ok(map.try_entry2(self)?)
+ }
+
+ #[inline]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)> {
+ map.find(*self)
+ }
+
+ fn as_str(&self) -> &str {
+ <HeaderName>::as_str(*self)
+ }
+ }
+
+ impl<'a> AsHeaderName for &'a HeaderName {}
+
+ impl<'a> Sealed for &'a str {
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError> {
+ Ok(HdrName::from_bytes(self.as_bytes(), move |hdr| {
+ map.try_entry2(hdr)
+ })??)
+ }
+
+ #[inline]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)> {
+ HdrName::from_bytes(self.as_bytes(), move |hdr| map.find(&hdr)).unwrap_or(None)
+ }
+
+ fn as_str(&self) -> &str {
+ self
+ }
+ }
+
+ impl<'a> AsHeaderName for &'a str {}
+
+ impl Sealed for String {
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError> {
+ Ok(self.as_str().try_entry(map)?)
+ }
+
+ #[inline]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)> {
+ Sealed::find(&self.as_str(), map)
+ }
+
+ fn as_str(&self) -> &str {
+ self
+ }
+ }
+
+ impl AsHeaderName for String {}
+
+ impl<'a> Sealed for &'a String {
+ #[inline]
+ fn try_entry<T>(self, map: &mut HeaderMap<T>) -> Result<Entry<'_, T>, TryEntryError> {
+ self.as_str().try_entry(map)
+ }
+
+ #[inline]
+ fn find<T>(&self, map: &HeaderMap<T>) -> Option<(usize, usize)> {
+ Sealed::find(*self, map)
+ }
+
+ fn as_str(&self) -> &str {
+ *self
+ }
+ }
+
+ impl<'a> AsHeaderName for &'a String {}
+}
+
+#[test]
+fn test_bounds() {
+ fn check_bounds<T: Send + Send>() {}
+
+ check_bounds::<HeaderMap<()>>();
+ check_bounds::<Iter<'static, ()>>();
+ check_bounds::<IterMut<'static, ()>>();
+ check_bounds::<Keys<'static, ()>>();
+ check_bounds::<Values<'static, ()>>();
+ check_bounds::<ValuesMut<'static, ()>>();
+ check_bounds::<Drain<'static, ()>>();
+ check_bounds::<GetAll<'static, ()>>();
+ check_bounds::<Entry<'static, ()>>();
+ check_bounds::<VacantEntry<'static, ()>>();
+ check_bounds::<OccupiedEntry<'static, ()>>();
+ check_bounds::<ValueIter<'static, ()>>();
+ check_bounds::<ValueIterMut<'static, ()>>();
+ check_bounds::<ValueDrain<'static, ()>>();
+}
+
+#[test]
+fn skip_duplicates_during_key_iteration() {
+ let mut map = HeaderMap::new();
+ map.try_append("a", HeaderValue::from_static("a")).unwrap();
+ map.try_append("a", HeaderValue::from_static("b")).unwrap();
+ assert_eq!(map.keys().count(), map.keys_len());
+}
diff --git a/extra_versions/crates/http/src/header/mod.rs b/extra_versions/crates/http/src/header/mod.rs
new file mode 100644
index 0000000..4995541
--- /dev/null
+++ b/extra_versions/crates/http/src/header/mod.rs
@@ -0,0 +1,175 @@
+//! HTTP header types
+//!
+//! The module provides [`HeaderName`], [`HeaderMap`], and a number of types
+//! used for interacting with `HeaderMap`. These types allow representing both
+//! HTTP/1 and HTTP/2 headers.
+//!
+//! # `HeaderName`
+//!
+//! The `HeaderName` type represents both standard header names as well as
+//! custom header names. The type handles the case insensitive nature of header
+//! names and is used as the key portion of `HeaderMap`. Header names are
+//! normalized to lower case. In other words, when creating a `HeaderName` with
+//! a string, even if upper case characters are included, when getting a string
+//! representation of the `HeaderName`, it will be all lower case. This allows
+//! for faster `HeaderMap` comparison operations.
+//!
+//! The internal representation is optimized to efficiently handle the cases
+//! most commonly encountered when working with HTTP. Standard header names are
+//! special cased and are represented internally as an enum. Short custom
+//! headers will be stored directly in the `HeaderName` struct and will not
+//! incur any allocation overhead, however longer strings will require an
+//! allocation for storage.
+//!
+//! ## Limitations
+//!
+//! `HeaderName` has a max length of 32,768 for header names. Attempting to
+//! parse longer names will result in a panic.
+//!
+//! # `HeaderMap`
+//!
+//! `HeaderMap` is a map structure of header names highly optimized for use
+//! cases common with HTTP. It is a [multimap] structure, where each header name
+//! may have multiple associated header values. Given this, some of the APIs
+//! diverge from [`HashMap`].
+//!
+//! ## Overview
+//!
+//! Just like `HashMap` in Rust's stdlib, `HeaderMap` is based on [Robin Hood
+//! hashing]. This algorithm tends to reduce the worst case search times in the
+//! table and enables high load factors without seriously affecting performance.
+//! Internally, keys and values are stored in vectors. As such, each insertion
+//! will not incur allocation overhead. However, once the underlying vector
+//! storage is full, a larger vector must be allocated and all values copied.
+//!
+//! ## Deterministic ordering
+//!
+//! Unlike Rust's `HashMap`, values in `HeaderMap` are deterministically
+//! ordered. Roughly, values are ordered by insertion. This means that a
+//! function that deterministically operates on a header map can rely on the
+//! iteration order to remain consistent across processes and platforms.
+//!
+//! ## Adaptive hashing
+//!
+//! `HeaderMap` uses an adaptive hashing strategy in order to efficiently handle
+//! most common cases. All standard headers have statically computed hash values
+//! which removes the need to perform any hashing of these headers at runtime.
+//! The default hash function emphasizes performance over robustness. However,
+//! `HeaderMap` detects high collision rates and switches to a secure hash
+//! function in those events. The threshold is set such that only denial of
+//! service attacks should trigger it.
+//!
+//! ## Limitations
+//!
+//! `HeaderMap` can store a maximum of 32,768 headers (header name / value
+//! pairs). Attempting to insert more will result in a panic.
+//!
+//! [`HeaderName`]: struct.HeaderName.html
+//! [`HeaderMap`]: struct.HeaderMap.html
+//! [multimap]: https://en.wikipedia.org/wiki/Multimap
+//! [`HashMap`]: https://doc.rust-lang.org/std/collections/struct.HashMap.html
+//! [Robin Hood hashing]: https://en.wikipedia.org/wiki/Hash_table#Robin_Hood_hashing
+
+mod map;
+mod name;
+mod value;
+
+pub use self::map::{
+ AsHeaderName, Drain, Entry, GetAll, HeaderMap, IntoHeaderName, IntoIter, Iter, IterMut, Keys,
+ MaxSizeReached, OccupiedEntry, VacantEntry, ValueDrain, ValueIter, ValueIterMut, Values,
+ ValuesMut,
+};
+pub use self::name::{HeaderName, InvalidHeaderName};
+pub use self::value::{HeaderValue, InvalidHeaderValue, ToStrError};
+
+// Use header name constants
+pub use self::name::{
+ ACCEPT,
+ ACCEPT_CHARSET,
+ ACCEPT_ENCODING,
+ ACCEPT_LANGUAGE,
+ ACCEPT_RANGES,
+ ACCESS_CONTROL_ALLOW_CREDENTIALS,
+ ACCESS_CONTROL_ALLOW_HEADERS,
+ ACCESS_CONTROL_ALLOW_METHODS,
+ ACCESS_CONTROL_ALLOW_ORIGIN,
+ ACCESS_CONTROL_EXPOSE_HEADERS,
+ ACCESS_CONTROL_MAX_AGE,
+ ACCESS_CONTROL_REQUEST_HEADERS,
+ ACCESS_CONTROL_REQUEST_METHOD,
+ AGE,
+ ALLOW,
+ ALT_SVC,
+ AUTHORIZATION,
+ CACHE_CONTROL,
+ CACHE_STATUS,
+ CDN_CACHE_CONTROL,
+ CONNECTION,
+ CONTENT_DISPOSITION,
+ CONTENT_ENCODING,
+ CONTENT_LANGUAGE,
+ CONTENT_LENGTH,
+ CONTENT_LOCATION,
+ CONTENT_RANGE,
+ CONTENT_SECURITY_POLICY,
+ CONTENT_SECURITY_POLICY_REPORT_ONLY,
+ CONTENT_TYPE,
+ COOKIE,
+ DNT,
+ DATE,
+ ETAG,
+ EXPECT,
+ EXPIRES,
+ FORWARDED,
+ FROM,
+ HOST,
+ IF_MATCH,
+ IF_MODIFIED_SINCE,
+ IF_NONE_MATCH,
+ IF_RANGE,
+ IF_UNMODIFIED_SINCE,
+ LAST_MODIFIED,
+ LINK,
+ LOCATION,
+ MAX_FORWARDS,
+ ORIGIN,
+ PRAGMA,
+ PROXY_AUTHENTICATE,
+ PROXY_AUTHORIZATION,
+ PUBLIC_KEY_PINS,
+ PUBLIC_KEY_PINS_REPORT_ONLY,
+ RANGE,
+ REFERER,
+ REFERRER_POLICY,
+ REFRESH,
+ RETRY_AFTER,
+ SEC_WEBSOCKET_ACCEPT,
+ SEC_WEBSOCKET_EXTENSIONS,
+ SEC_WEBSOCKET_KEY,
+ SEC_WEBSOCKET_PROTOCOL,
+ SEC_WEBSOCKET_VERSION,
+ SERVER,
+ SET_COOKIE,
+ STRICT_TRANSPORT_SECURITY,
+ TE,
+ TRAILER,
+ TRANSFER_ENCODING,
+ UPGRADE,
+ UPGRADE_INSECURE_REQUESTS,
+ USER_AGENT,
+ VARY,
+ VIA,
+ WARNING,
+ WWW_AUTHENTICATE,
+ X_CONTENT_TYPE_OPTIONS,
+ X_DNS_PREFETCH_CONTROL,
+ X_FRAME_OPTIONS,
+ X_XSS_PROTECTION,
+};
+
+/// Maximum length of a header name
+///
+/// Generally, 64kb for a header name is WAY too much than would ever be needed
+/// in practice. Restricting it to this size enables using `u16` values to
+/// represent offsets when dealing with header names.
+const MAX_HEADER_NAME_LEN: usize = (1 << 16) - 1;
diff --git a/extra_versions/crates/http/src/header/name.rs b/extra_versions/crates/http/src/header/name.rs
new file mode 100644
index 0000000..e51bc35
--- /dev/null
+++ b/extra_versions/crates/http/src/header/name.rs
@@ -0,0 +1,1880 @@
+use crate::byte_str::ByteStr;
+use bytes::{Bytes, BytesMut};
+
+use std::borrow::Borrow;
+use std::error::Error;
+use std::convert::{TryFrom};
+use std::hash::{Hash, Hasher};
+use std::mem::MaybeUninit;
+use std::str::FromStr;
+use std::fmt;
+
+/// Represents an HTTP header field name
+///
+/// Header field names identify the header. Header sets may include multiple
+/// headers with the same name. The HTTP specification defines a number of
+/// standard headers, but HTTP messages may include non-standard header names as
+/// well as long as they adhere to the specification.
+///
+/// `HeaderName` is used as the [`HeaderMap`] key. Constants are available for
+/// all standard header names in the [`header`] module.
+///
+/// # Representation
+///
+/// `HeaderName` represents standard header names using an `enum`, as such they
+/// will not require an allocation for storage. All custom header names are
+/// lower cased upon conversion to a `HeaderName` value. This avoids the
+/// overhead of dynamically doing lower case conversion during the hash code
+/// computation and the comparison operation.
+///
+/// [`HeaderMap`]: struct.HeaderMap.html
+/// [`header`]: index.html
+#[derive(Clone, Eq, PartialEq, Hash)]
+pub struct HeaderName {
+ inner: Repr<Custom>,
+}
+
+// Almost a full `HeaderName`
+#[derive(Debug, Hash)]
+pub struct HdrName<'a> {
+ inner: Repr<MaybeLower<'a>>,
+}
+
+#[derive(Debug, Clone, Eq, PartialEq, Hash)]
+enum Repr<T> {
+ Standard(StandardHeader),
+ Custom(T),
+}
+
+// Used to hijack the Hash impl
+#[derive(Debug, Clone, Eq, PartialEq)]
+struct Custom(ByteStr);
+
+#[derive(Debug, Clone)]
+// Invariant: If lower then buf is valid UTF-8.
+struct MaybeLower<'a> {
+ buf: &'a [u8],
+ lower: bool,
+}
+
+/// A possible error when converting a `HeaderName` from another type.
+pub struct InvalidHeaderName {
+ _priv: (),
+}
+
+macro_rules! standard_headers {
+ (
+ $(
+ $(#[$docs:meta])*
+ ($konst:ident, $upcase:ident, $name_bytes:literal);
+ )+
+ ) => {
+ #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
+ enum StandardHeader {
+ $(
+ $konst,
+ )+
+ }
+
+ $(
+ $(#[$docs])*
+ pub const $upcase: HeaderName = HeaderName {
+ inner: Repr::Standard(StandardHeader::$konst),
+ };
+ )+
+
+ impl StandardHeader {
+ #[inline]
+ fn as_str(&self) -> &'static str {
+ match *self {
+ // Safety: test_parse_standard_headers ensures these &[u8]s are &str-safe.
+ $(
+ StandardHeader::$konst => unsafe { std::str::from_utf8_unchecked( $name_bytes ) },
+ )+
+ }
+ }
+
+ const fn from_bytes(name_bytes: &[u8]) -> Option<StandardHeader> {
+ match name_bytes {
+ $(
+ $name_bytes => Some(StandardHeader::$konst),
+ )+
+ _ => None,
+ }
+ }
+ }
+
+ #[cfg(test)]
+ const TEST_HEADERS: &'static [(StandardHeader, &'static [u8])] = &[
+ $(
+ (StandardHeader::$konst, $name_bytes),
+ )+
+ ];
+
+ #[test]
+ fn test_parse_standard_headers() {
+ for &(std, name_bytes) in TEST_HEADERS {
+ // Test lower case
+ assert_eq!(HeaderName::from_bytes(name_bytes).unwrap(), HeaderName::from(std));
+
+ // Test upper case
+ let upper = std::str::from_utf8(name_bytes).expect("byte string constants are all utf-8").to_uppercase();
+ assert_eq!(HeaderName::from_bytes(upper.as_bytes()).unwrap(), HeaderName::from(std));
+ }
+ }
+
+ #[test]
+ fn test_standard_headers_into_bytes() {
+ for &(std, name_bytes) in TEST_HEADERS {
+ let name = std::str::from_utf8(name_bytes).unwrap();
+ let std = HeaderName::from(std);
+ // Test lower case
+ let bytes: Bytes =
+ HeaderName::from_bytes(name_bytes).unwrap().inner.into();
+ assert_eq!(bytes, name);
+ assert_eq!(HeaderName::from_bytes(name_bytes).unwrap(), std);
+
+ // Test upper case
+ let upper = name.to_uppercase();
+ let bytes: Bytes =
+ HeaderName::from_bytes(upper.as_bytes()).unwrap().inner.into();
+ assert_eq!(bytes, name_bytes);
+ assert_eq!(HeaderName::from_bytes(upper.as_bytes()).unwrap(),
+ std);
+ }
+
+ }
+ }
+}
+
+// Generate constants for all standard HTTP headers. This includes a static hash
+// code for the "fast hash" path. The hash code for static headers *do not* have
+// to match the text representation of those headers. This is because header
+// strings are always converted to the static values (when they match) before
+// being hashed. This means that it is impossible to compare the static hash
+// code of CONTENT_LENGTH with "content-length".
+standard_headers! {
+ /// Advertises which content types the client is able to understand.
+ ///
+ /// The Accept request HTTP header advertises which content types, expressed
+ /// as MIME types, the client is able to understand. Using content
+ /// negotiation, the server then selects one of the proposals, uses it and
+ /// informs the client of its choice with the Content-Type response header.
+ /// Browsers set adequate values for this header depending of the context
+ /// where the request is done: when fetching a CSS stylesheet a different
+ /// value is set for the request than when fetching an image, video or a
+ /// script.
+ (Accept, ACCEPT, b"accept");
+
+ /// Advertises which character set the client is able to understand.
+ ///
+ /// The Accept-Charset request HTTP header advertises which character set
+ /// the client is able to understand. Using content negotiation, the server
+ /// then selects one of the proposals, uses it and informs the client of its
+ /// choice within the Content-Type response header. Browsers usually don't
+ /// set this header as the default value for each content type is usually
+ /// correct and transmitting it would allow easier fingerprinting.
+ ///
+ /// If the server cannot serve any matching character set, it can
+ /// theoretically send back a 406 (Not Acceptable) error code. But, for a
+ /// better user experience, this is rarely done and the more common way is
+ /// to ignore the Accept-Charset header in this case.
+ (AcceptCharset, ACCEPT_CHARSET, b"accept-charset");
+
+ /// Advertises which content encoding the client is able to understand.
+ ///
+ /// The Accept-Encoding request HTTP header advertises which content
+ /// encoding, usually a compression algorithm, the client is able to
+ /// understand. Using content negotiation, the server selects one of the
+ /// proposals, uses it and informs the client of its choice with the
+ /// Content-Encoding response header.
+ ///
+ /// Even if both the client and the server supports the same compression
+ /// algorithms, the server may choose not to compress the body of a
+ /// response, if the identity value is also acceptable. Two common cases
+ /// lead to this:
+ ///
+ /// * The data to be sent is already compressed and a second compression
+ /// won't lead to smaller data to be transmitted. This may the case with
+ /// some image formats;
+ ///
+ /// * The server is overloaded and cannot afford the computational overhead
+ /// induced by the compression requirement. Typically, Microsoft recommends
+ /// not to compress if a server use more than 80 % of its computational
+ /// power.
+ ///
+ /// As long as the identity value, meaning no encryption, is not explicitly
+ /// forbidden, by an identity;q=0 or a *;q=0 without another explicitly set
+ /// value for identity, the server must never send back a 406 Not Acceptable
+ /// error.
+ (AcceptEncoding, ACCEPT_ENCODING, b"accept-encoding");
+
+ /// Advertises which languages the client is able to understand.
+ ///
+ /// The Accept-Language request HTTP header advertises which languages the
+ /// client is able to understand, and which locale variant is preferred.
+ /// Using content negotiation, the server then selects one of the proposals,
+ /// uses it and informs the client of its choice with the Content-Language
+ /// response header. Browsers set adequate values for this header according
+ /// their user interface language and even if a user can change it, this
+ /// happens rarely (and is frown upon as it leads to fingerprinting).
+ ///
+ /// This header is a hint to be used when the server has no way of
+ /// determining the language via another way, like a specific URL, that is
+ /// controlled by an explicit user decision. It is recommended that the
+ /// server never overrides an explicit decision. The content of the
+ /// Accept-Language is often out of the control of the user (like when
+ /// traveling and using an Internet Cafe in a different country); the user
+ /// may also want to visit a page in another language than the locale of
+ /// their user interface.
+ ///
+ /// If the server cannot serve any matching language, it can theoretically
+ /// send back a 406 (Not Acceptable) error code. But, for a better user
+ /// experience, this is rarely done and more common way is to ignore the
+ /// Accept-Language header in this case.
+ (AcceptLanguage, ACCEPT_LANGUAGE, b"accept-language");
+
+ /// Marker used by the server to advertise partial request support.
+ ///
+ /// The Accept-Ranges response HTTP header is a marker used by the server to
+ /// advertise its support of partial requests. The value of this field
+ /// indicates the unit that can be used to define a range.
+ ///
+ /// In presence of an Accept-Ranges header, the browser may try to resume an
+ /// interrupted download, rather than to start it from the start again.
+ (AcceptRanges, ACCEPT_RANGES, b"accept-ranges");
+
+ /// Preflight response indicating if the response to the request can be
+ /// exposed to the page.
+ ///
+ /// The Access-Control-Allow-Credentials response header indicates whether
+ /// or not the response to the request can be exposed to the page. It can be
+ /// exposed when the true value is returned; it can't in other cases.
+ ///
+ /// Credentials are cookies, authorization headers or TLS client
+ /// certificates.
+ ///
+ /// When used as part of a response to a preflight request, this indicates
+ /// whether or not the actual request can be made using credentials. Note
+ /// that simple GET requests are not preflighted, and so if a request is
+ /// made for a resource with credentials, if this header is not returned
+ /// with the resource, the response is ignored by the browser and not
+ /// returned to web content.
+ ///
+ /// The Access-Control-Allow-Credentials header works in conjunction with
+ /// the XMLHttpRequest.withCredentials property or with the credentials
+ /// option in the Request() constructor of the Fetch API. Credentials must
+ /// be set on both sides (the Access-Control-Allow-Credentials header and in
+ /// the XHR or Fetch request) in order for the CORS request with credentials
+ /// to succeed.
+ (AccessControlAllowCredentials, ACCESS_CONTROL_ALLOW_CREDENTIALS, b"access-control-allow-credentials");
+
+ /// Preflight response indicating permitted HTTP headers.
+ ///
+ /// The Access-Control-Allow-Headers response header is used in response to
+ /// a preflight request to indicate which HTTP headers will be available via
+ /// Access-Control-Expose-Headers when making the actual request.
+ ///
+ /// The simple headers, Accept, Accept-Language, Content-Language,
+ /// Content-Type (but only with a MIME type of its parsed value (ignoring
+ /// parameters) of either application/x-www-form-urlencoded,
+ /// multipart/form-data, or text/plain), are always available and don't need
+ /// to be listed by this header.
+ ///
+ /// This header is required if the request has an
+ /// Access-Control-Request-Headers header.
+ (AccessControlAllowHeaders, ACCESS_CONTROL_ALLOW_HEADERS, b"access-control-allow-headers");
+
+ /// Preflight header response indicating permitted access methods.
+ ///
+ /// The Access-Control-Allow-Methods response header specifies the method or
+ /// methods allowed when accessing the resource in response to a preflight
+ /// request.
+ (AccessControlAllowMethods, ACCESS_CONTROL_ALLOW_METHODS, b"access-control-allow-methods");
+
+ /// Indicates whether the response can be shared with resources with the
+ /// given origin.
+ (AccessControlAllowOrigin, ACCESS_CONTROL_ALLOW_ORIGIN, b"access-control-allow-origin");
+
+ /// Indicates which headers can be exposed as part of the response by
+ /// listing their names.
+ (AccessControlExposeHeaders, ACCESS_CONTROL_EXPOSE_HEADERS, b"access-control-expose-headers");
+
+ /// Indicates how long the results of a preflight request can be cached.
+ (AccessControlMaxAge, ACCESS_CONTROL_MAX_AGE, b"access-control-max-age");
+
+ /// Informs the server which HTTP headers will be used when an actual
+ /// request is made.
+ (AccessControlRequestHeaders, ACCESS_CONTROL_REQUEST_HEADERS, b"access-control-request-headers");
+
+ /// Informs the server know which HTTP method will be used when the actual
+ /// request is made.
+ (AccessControlRequestMethod, ACCESS_CONTROL_REQUEST_METHOD, b"access-control-request-method");
+
+ /// Indicates the time in seconds the object has been in a proxy cache.
+ ///
+ /// The Age header is usually close to zero. If it is Age: 0, it was
+ /// probably just fetched from the origin server; otherwise It is usually
+ /// calculated as a difference between the proxy's current date and the Date
+ /// general header included in the HTTP response.
+ (Age, AGE, b"age");
+
+ /// Lists the set of methods support by a resource.
+ ///
+ /// This header must be sent if the server responds with a 405 Method Not
+ /// Allowed status code to indicate which request methods can be used. An
+ /// empty Allow header indicates that the resource allows no request
+ /// methods, which might occur temporarily for a given resource, for
+ /// example.
+ (Allow, ALLOW, b"allow");
+
+ /// Advertises the availability of alternate services to clients.
+ (AltSvc, ALT_SVC, b"alt-svc");
+
+ /// Contains the credentials to authenticate a user agent with a server.
+ ///
+ /// Usually this header is included after the server has responded with a
+ /// 401 Unauthorized status and the WWW-Authenticate header.
+ (Authorization, AUTHORIZATION, b"authorization");
+
+ /// Specifies directives for caching mechanisms in both requests and
+ /// responses.
+ ///
+ /// Caching directives are unidirectional, meaning that a given directive in
+ /// a request is not implying that the same directive is to be given in the
+ /// response.
+ (CacheControl, CACHE_CONTROL, b"cache-control");
+
+ /// Indicates how caches have handled a response and its corresponding request.
+ ///
+ /// See [RFC 9211](https://www.rfc-editor.org/rfc/rfc9211.html).
+ (CacheStatus, CACHE_STATUS, b"cache-status");
+
+ /// Specifies directives that allow origin servers to control the behavior of CDN caches
+ /// interposed between them and clients separately from other caches that might handle the
+ /// response.
+ ///
+ /// See [RFC 9213](https://www.rfc-editor.org/rfc/rfc9213.html).
+ (CdnCacheControl, CDN_CACHE_CONTROL, b"cdn-cache-control");
+
+ /// Controls whether or not the network connection stays open after the
+ /// current transaction finishes.
+ ///
+ /// If the value sent is keep-alive, the connection is persistent and not
+ /// closed, allowing for subsequent requests to the same server to be done.
+ ///
+ /// Except for the standard hop-by-hop headers (Keep-Alive,
+ /// Transfer-Encoding, TE, Connection, Trailer, Upgrade, Proxy-Authorization
+ /// and Proxy-Authenticate), any hop-by-hop headers used by the message must
+ /// be listed in the Connection header, so that the first proxy knows he has
+ /// to consume them and not to forward them further. Standard hop-by-hop
+ /// headers can be listed too (it is often the case of Keep-Alive, but this
+ /// is not mandatory.
+ (Connection, CONNECTION, b"connection");
+
+ /// Indicates if the content is expected to be displayed inline.
+ ///
+ /// In a regular HTTP response, the Content-Disposition response header is a
+ /// header indicating if the content is expected to be displayed inline in
+ /// the browser, that is, as a Web page or as part of a Web page, or as an
+ /// attachment, that is downloaded and saved locally.
+ ///
+ /// In a multipart/form-data body, the HTTP Content-Disposition general
+ /// header is a header that can be used on the subpart of a multipart body
+ /// to give information about the field it applies to. The subpart is
+ /// delimited by the boundary defined in the Content-Type header. Used on
+ /// the body itself, Content-Disposition has no effect.
+ ///
+ /// The Content-Disposition header is defined in the larger context of MIME
+ /// messages for e-mail, but only a subset of the possible parameters apply
+ /// to HTTP forms and POST requests. Only the value form-data, as well as
+ /// the optional directive name and filename, can be used in the HTTP
+ /// context.
+ (ContentDisposition, CONTENT_DISPOSITION, b"content-disposition");
+
+ /// Used to compress the media-type.
+ ///
+ /// When present, its value indicates what additional content encoding has
+ /// been applied to the entity-body. It lets the client know, how to decode
+ /// in order to obtain the media-type referenced by the Content-Type header.
+ ///
+ /// It is recommended to compress data as much as possible and therefore to
+ /// use this field, but some types of resources, like jpeg images, are
+ /// already compressed. Sometimes using additional compression doesn't
+ /// reduce payload size and can even make the payload longer.
+ (ContentEncoding, CONTENT_ENCODING, b"content-encoding");
+
+ /// Used to describe the languages intended for the audience.
+ ///
+ /// This header allows a user to differentiate according to the users' own
+ /// preferred language. For example, if "Content-Language: de-DE" is set, it
+ /// says that the document is intended for German language speakers
+ /// (however, it doesn't indicate the document is written in German. For
+ /// example, it might be written in English as part of a language course for
+ /// German speakers).
+ ///
+ /// If no Content-Language is specified, the default is that the content is
+ /// intended for all language audiences. Multiple language tags are also
+ /// possible, as well as applying the Content-Language header to various
+ /// media types and not only to textual documents.
+ (ContentLanguage, CONTENT_LANGUAGE, b"content-language");
+
+ /// Indicates the size of the entity-body.
+ ///
+ /// The header value must be a decimal indicating the number of octets sent
+ /// to the recipient.
+ (ContentLength, CONTENT_LENGTH, b"content-length");
+
+ /// Indicates an alternate location for the returned data.
+ ///
+ /// The principal use case is to indicate the URL of the resource
+ /// transmitted as the result of content negotiation.
+ ///
+ /// Location and Content-Location are different: Location indicates the
+ /// target of a redirection (or the URL of a newly created document), while
+ /// Content-Location indicates the direct URL to use to access the resource,
+ /// without the need of further content negotiation. Location is a header
+ /// associated with the response, while Content-Location is associated with
+ /// the entity returned.
+ (ContentLocation, CONTENT_LOCATION, b"content-location");
+
+ /// Indicates where in a full body message a partial message belongs.
+ (ContentRange, CONTENT_RANGE, b"content-range");
+
+ /// Allows controlling resources the user agent is allowed to load for a
+ /// given page.
+ ///
+ /// With a few exceptions, policies mostly involve specifying server origins
+ /// and script endpoints. This helps guard against cross-site scripting
+ /// attacks (XSS).
+ (ContentSecurityPolicy, CONTENT_SECURITY_POLICY, b"content-security-policy");
+
+ /// Allows experimenting with policies by monitoring their effects.
+ ///
+ /// The HTTP Content-Security-Policy-Report-Only response header allows web
+ /// developers to experiment with policies by monitoring (but not enforcing)
+ /// their effects. These violation reports consist of JSON documents sent
+ /// via an HTTP POST request to the specified URI.
+ (ContentSecurityPolicyReportOnly, CONTENT_SECURITY_POLICY_REPORT_ONLY, b"content-security-policy-report-only");
+
+ /// Used to indicate the media type of the resource.
+ ///
+ /// In responses, a Content-Type header tells the client what the content
+ /// type of the returned content actually is. Browsers will do MIME sniffing
+ /// in some cases and will not necessarily follow the value of this header;
+ /// to prevent this behavior, the header X-Content-Type-Options can be set
+ /// to nosniff.
+ ///
+ /// In requests, (such as POST or PUT), the client tells the server what
+ /// type of data is actually sent.
+ (ContentType, CONTENT_TYPE, b"content-type");
+
+ /// Contains stored HTTP cookies previously sent by the server with the
+ /// Set-Cookie header.
+ ///
+ /// The Cookie header might be omitted entirely, if the privacy setting of
+ /// the browser are set to block them, for example.
+ (Cookie, COOKIE, b"cookie");
+
+ /// Indicates the client's tracking preference.
+ ///
+ /// This header lets users indicate whether they would prefer privacy rather
+ /// than personalized content.
+ (Dnt, DNT, b"dnt");
+
+ /// Contains the date and time at which the message was originated.
+ (Date, DATE, b"date");
+
+ /// Identifier for a specific version of a resource.
+ ///
+ /// This header allows caches to be more efficient, and saves bandwidth, as
+ /// a web server does not need to send a full response if the content has
+ /// not changed. On the other side, if the content has changed, etags are
+ /// useful to help prevent simultaneous updates of a resource from
+ /// overwriting each other ("mid-air collisions").
+ ///
+ /// If the resource at a given URL changes, a new Etag value must be
+ /// generated. Etags are therefore similar to fingerprints and might also be
+ /// used for tracking purposes by some servers. A comparison of them allows
+ /// to quickly determine whether two representations of a resource are the
+ /// same, but they might also be set to persist indefinitely by a tracking
+ /// server.
+ (Etag, ETAG, b"etag");
+
+ /// Indicates expectations that need to be fulfilled by the server in order
+ /// to properly handle the request.
+ ///
+ /// The only expectation defined in the specification is Expect:
+ /// 100-continue, to which the server shall respond with:
+ ///
+ /// * 100 if the information contained in the header is sufficient to cause
+ /// an immediate success,
+ ///
+ /// * 417 (Expectation Failed) if it cannot meet the expectation; or any
+ /// other 4xx status otherwise.
+ ///
+ /// For example, the server may reject a request if its Content-Length is
+ /// too large.
+ ///
+ /// No common browsers send the Expect header, but some other clients such
+ /// as cURL do so by default.
+ (Expect, EXPECT, b"expect");
+
+ /// Contains the date/time after which the response is considered stale.
+ ///
+ /// Invalid dates, like the value 0, represent a date in the past and mean
+ /// that the resource is already expired.
+ ///
+ /// If there is a Cache-Control header with the "max-age" or "s-max-age"
+ /// directive in the response, the Expires header is ignored.
+ (Expires, EXPIRES, b"expires");
+
+ /// Contains information from the client-facing side of proxy servers that
+ /// is altered or lost when a proxy is involved in the path of the request.
+ ///
+ /// The alternative and de-facto standard versions of this header are the
+ /// X-Forwarded-For, X-Forwarded-Host and X-Forwarded-Proto headers.
+ ///
+ /// This header is used for debugging, statistics, and generating
+ /// location-dependent content and by design it exposes privacy sensitive
+ /// information, such as the IP address of the client. Therefore the user's
+ /// privacy must be kept in mind when deploying this header.
+ (Forwarded, FORWARDED, b"forwarded");
+
+ /// Contains an Internet email address for a human user who controls the
+ /// requesting user agent.
+ ///
+ /// If you are running a robotic user agent (e.g. a crawler), the From
+ /// header should be sent, so you can be contacted if problems occur on
+ /// servers, such as if the robot is sending excessive, unwanted, or invalid
+ /// requests.
+ (From, FROM, b"from");
+
+ /// Specifies the domain name of the server and (optionally) the TCP port
+ /// number on which the server is listening.
+ ///
+ /// If no port is given, the default port for the service requested (e.g.,
+ /// "80" for an HTTP URL) is implied.
+ ///
+ /// A Host header field must be sent in all HTTP/1.1 request messages. A 400
+ /// (Bad Request) status code will be sent to any HTTP/1.1 request message
+ /// that lacks a Host header field or contains more than one.
+ (Host, HOST, b"host");
+
+ /// Makes a request conditional based on the E-Tag.
+ ///
+ /// For GET and HEAD methods, the server will send back the requested
+ /// resource only if it matches one of the listed ETags. For PUT and other
+ /// non-safe methods, it will only upload the resource in this case.
+ ///
+ /// The comparison with the stored ETag uses the strong comparison
+ /// algorithm, meaning two files are considered identical byte to byte only.
+ /// This is weakened when the W/ prefix is used in front of the ETag.
+ ///
+ /// There are two common use cases:
+ ///
+ /// * For GET and HEAD methods, used in combination with an Range header, it
+ /// can guarantee that the new ranges requested comes from the same resource
+ /// than the previous one. If it doesn't match, then a 416 (Range Not
+ /// Satisfiable) response is returned.
+ ///
+ /// * For other methods, and in particular for PUT, If-Match can be used to
+ /// prevent the lost update problem. It can check if the modification of a
+ /// resource that the user wants to upload will not override another change
+ /// that has been done since the original resource was fetched. If the
+ /// request cannot be fulfilled, the 412 (Precondition Failed) response is
+ /// returned.
+ (IfMatch, IF_MATCH, b"if-match");
+
+ /// Makes a request conditional based on the modification date.
+ ///
+ /// The If-Modified-Since request HTTP header makes the request conditional:
+ /// the server will send back the requested resource, with a 200 status,
+ /// only if it has been last modified after the given date. If the request
+ /// has not been modified since, the response will be a 304 without any
+ /// body; the Last-Modified header will contain the date of last
+ /// modification. Unlike If-Unmodified-Since, If-Modified-Since can only be
+ /// used with a GET or HEAD.
+ ///
+ /// When used in combination with If-None-Match, it is ignored, unless the
+ /// server doesn't support If-None-Match.
+ ///
+ /// The most common use case is to update a cached entity that has no
+ /// associated ETag.
+ (IfModifiedSince, IF_MODIFIED_SINCE, b"if-modified-since");
+
+ /// Makes a request conditional based on the E-Tag.
+ ///
+ /// The If-None-Match HTTP request header makes the request conditional. For
+ /// GET and HEAD methods, the server will send back the requested resource,
+ /// with a 200 status, only if it doesn't have an ETag matching the given
+ /// ones. For other methods, the request will be processed only if the
+ /// eventually existing resource's ETag doesn't match any of the values
+ /// listed.
+ ///
+ /// When the condition fails for GET and HEAD methods, then the server must
+ /// return HTTP status code 304 (Not Modified). For methods that apply
+ /// server-side changes, the status code 412 (Precondition Failed) is used.
+ /// Note that the server generating a 304 response MUST generate any of the
+ /// following header fields that would have been sent in a 200 (OK) response
+ /// to the same request: Cache-Control, Content-Location, Date, ETag,
+ /// Expires, and Vary.
+ ///
+ /// The comparison with the stored ETag uses the weak comparison algorithm,
+ /// meaning two files are considered identical not only if they are
+ /// identical byte to byte, but if the content is equivalent. For example,
+ /// two pages that would differ only by the date of generation in the footer
+ /// would be considered as identical.
+ ///
+ /// When used in combination with If-Modified-Since, it has precedence (if
+ /// the server supports it).
+ ///
+ /// There are two common use cases:
+ ///
+ /// * For `GET` and `HEAD` methods, to update a cached entity that has an associated ETag.
+ /// * For other methods, and in particular for `PUT`, `If-None-Match` used with
+ /// the `*` value can be used to save a file not known to exist,
+ /// guaranteeing that another upload didn't happen before, losing the data
+ /// of the previous put; this problems is the variation of the lost update
+ /// problem.
+ (IfNoneMatch, IF_NONE_MATCH, b"if-none-match");
+
+ /// Makes a request conditional based on range.
+ ///
+ /// The If-Range HTTP request header makes a range request conditional: if
+ /// the condition is fulfilled, the range request will be issued and the
+ /// server sends back a 206 Partial Content answer with the appropriate
+ /// body. If the condition is not fulfilled, the full resource is sent back,
+ /// with a 200 OK status.
+ ///
+ /// This header can be used either with a Last-Modified validator, or with
+ /// an ETag, but not with both.
+ ///
+ /// The most common use case is to resume a download, to guarantee that the
+ /// stored resource has not been modified since the last fragment has been
+ /// received.
+ (IfRange, IF_RANGE, b"if-range");
+
+ /// Makes the request conditional based on the last modification date.
+ ///
+ /// The If-Unmodified-Since request HTTP header makes the request
+ /// conditional: the server will send back the requested resource, or accept
+ /// it in the case of a POST or another non-safe method, only if it has not
+ /// been last modified after the given date. If the request has been
+ /// modified after the given date, the response will be a 412 (Precondition
+ /// Failed) error.
+ ///
+ /// There are two common use cases:
+ ///
+ /// * In conjunction non-safe methods, like POST, it can be used to
+ /// implement an optimistic concurrency control, like done by some wikis:
+ /// editions are rejected if the stored document has been modified since the
+ /// original has been retrieved.
+ ///
+ /// * In conjunction with a range request with a If-Range header, it can be
+ /// used to ensure that the new fragment requested comes from an unmodified
+ /// document.
+ (IfUnmodifiedSince, IF_UNMODIFIED_SINCE, b"if-unmodified-since");
+
+ /// Content-Types that are acceptable for the response.
+ (LastModified, LAST_MODIFIED, b"last-modified");
+
+ /// Allows the server to point an interested client to another resource
+ /// containing metadata about the requested resource.
+ (Link, LINK, b"link");
+
+ /// Indicates the URL to redirect a page to.
+ ///
+ /// The Location response header indicates the URL to redirect a page to. It
+ /// only provides a meaning when served with a 3xx status response.
+ ///
+ /// The HTTP method used to make the new request to fetch the page pointed
+ /// to by Location depends of the original method and of the kind of
+ /// redirection:
+ ///
+ /// * If 303 (See Also) responses always lead to the use of a GET method,
+ /// 307 (Temporary Redirect) and 308 (Permanent Redirect) don't change the
+ /// method used in the original request;
+ ///
+ /// * 301 (Permanent Redirect) and 302 (Found) doesn't change the method
+ /// most of the time, though older user-agents may (so you basically don't
+ /// know).
+ ///
+ /// All responses with one of these status codes send a Location header.
+ ///
+ /// Beside redirect response, messages with 201 (Created) status also
+ /// include the Location header. It indicates the URL to the newly created
+ /// resource.
+ ///
+ /// Location and Content-Location are different: Location indicates the
+ /// target of a redirection (or the URL of a newly created resource), while
+ /// Content-Location indicates the direct URL to use to access the resource
+ /// when content negotiation happened, without the need of further content
+ /// negotiation. Location is a header associated with the response, while
+ /// Content-Location is associated with the entity returned.
+ (Location, LOCATION, b"location");
+
+ /// Indicates the max number of intermediaries the request should be sent
+ /// through.
+ (MaxForwards, MAX_FORWARDS, b"max-forwards");
+
+ /// Indicates where a fetch originates from.
+ ///
+ /// It doesn't include any path information, but only the server name. It is
+ /// sent with CORS requests, as well as with POST requests. It is similar to
+ /// the Referer header, but, unlike this header, it doesn't disclose the
+ /// whole path.
+ (Origin, ORIGIN, b"origin");
+
+ /// HTTP/1.0 header usually used for backwards compatibility.
+ ///
+ /// The Pragma HTTP/1.0 general header is an implementation-specific header
+ /// that may have various effects along the request-response chain. It is
+ /// used for backwards compatibility with HTTP/1.0 caches where the
+ /// Cache-Control HTTP/1.1 header is not yet present.
+ (Pragma, PRAGMA, b"pragma");
+
+ /// Defines the authentication method that should be used to gain access to
+ /// a proxy.
+ ///
+ /// Unlike `www-authenticate`, the `proxy-authenticate` header field applies
+ /// only to the next outbound client on the response chain. This is because
+ /// only the client that chose a given proxy is likely to have the
+ /// credentials necessary for authentication. However, when multiple proxies
+ /// are used within the same administrative domain, such as office and
+ /// regional caching proxies within a large corporate network, it is common
+ /// for credentials to be generated by the user agent and passed through the
+ /// hierarchy until consumed. Hence, in such a configuration, it will appear
+ /// as if Proxy-Authenticate is being forwarded because each proxy will send
+ /// the same challenge set.
+ ///
+ /// The `proxy-authenticate` header is sent along with a `407 Proxy
+ /// Authentication Required`.
+ (ProxyAuthenticate, PROXY_AUTHENTICATE, b"proxy-authenticate");
+
+ /// Contains the credentials to authenticate a user agent to a proxy server.
+ ///
+ /// This header is usually included after the server has responded with a
+ /// 407 Proxy Authentication Required status and the Proxy-Authenticate
+ /// header.
+ (ProxyAuthorization, PROXY_AUTHORIZATION, b"proxy-authorization");
+
+ /// Associates a specific cryptographic public key with a certain server.
+ ///
+ /// This decreases the risk of MITM attacks with forged certificates. If one
+ /// or several keys are pinned and none of them are used by the server, the
+ /// browser will not accept the response as legitimate, and will not display
+ /// it.
+ (PublicKeyPins, PUBLIC_KEY_PINS, b"public-key-pins");
+
+ /// Sends reports of pinning violation to the report-uri specified in the
+ /// header.
+ ///
+ /// Unlike `Public-Key-Pins`, this header still allows browsers to connect
+ /// to the server if the pinning is violated.
+ (PublicKeyPinsReportOnly, PUBLIC_KEY_PINS_REPORT_ONLY, b"public-key-pins-report-only");
+
+ /// Indicates the part of a document that the server should return.
+ ///
+ /// Several parts can be requested with one Range header at once, and the
+ /// server may send back these ranges in a multipart document. If the server
+ /// sends back ranges, it uses the 206 Partial Content for the response. If
+ /// the ranges are invalid, the server returns the 416 Range Not Satisfiable
+ /// error. The server can also ignore the Range header and return the whole
+ /// document with a 200 status code.
+ (Range, RANGE, b"range");
+
+ /// Contains the address of the previous web page from which a link to the
+ /// currently requested page was followed.
+ ///
+ /// The Referer header allows servers to identify where people are visiting
+ /// them from and may use that data for analytics, logging, or optimized
+ /// caching, for example.
+ (Referer, REFERER, b"referer");
+
+ /// Governs which referrer information should be included with requests
+ /// made.
+ (ReferrerPolicy, REFERRER_POLICY, b"referrer-policy");
+
+ /// Informs the web browser that the current page or frame should be
+ /// refreshed.
+ (Refresh, REFRESH, b"refresh");
+
+ /// The Retry-After response HTTP header indicates how long the user agent
+ /// should wait before making a follow-up request. There are two main cases
+ /// this header is used:
+ ///
+ /// * When sent with a 503 (Service Unavailable) response, it indicates how
+ /// long the service is expected to be unavailable.
+ ///
+ /// * When sent with a redirect response, such as 301 (Moved Permanently),
+ /// it indicates the minimum time that the user agent is asked to wait
+ /// before issuing the redirected request.
+ (RetryAfter, RETRY_AFTER, b"retry-after");
+
+ /// The |Sec-WebSocket-Accept| header field is used in the WebSocket
+ /// opening handshake. It is sent from the server to the client to
+ /// confirm that the server is willing to initiate the WebSocket
+ /// connection.
+ (SecWebSocketAccept, SEC_WEBSOCKET_ACCEPT, b"sec-websocket-accept");
+
+ /// The |Sec-WebSocket-Extensions| header field is used in the WebSocket
+ /// opening handshake. It is initially sent from the client to the
+ /// server, and then subsequently sent from the server to the client, to
+ /// agree on a set of protocol-level extensions to use for the duration
+ /// of the connection.
+ (SecWebSocketExtensions, SEC_WEBSOCKET_EXTENSIONS, b"sec-websocket-extensions");
+
+ /// The |Sec-WebSocket-Key| header field is used in the WebSocket opening
+ /// handshake. It is sent from the client to the server to provide part
+ /// of the information used by the server to prove that it received a
+ /// valid WebSocket opening handshake. This helps ensure that the server
+ /// does not accept connections from non-WebSocket clients (e.g., HTTP
+ /// clients) that are being abused to send data to unsuspecting WebSocket
+ /// servers.
+ (SecWebSocketKey, SEC_WEBSOCKET_KEY, b"sec-websocket-key");
+
+ /// The |Sec-WebSocket-Protocol| header field is used in the WebSocket
+ /// opening handshake. It is sent from the client to the server and back
+ /// from the server to the client to confirm the subprotocol of the
+ /// connection. This enables scripts to both select a subprotocol and be
+ /// sure that the server agreed to serve that subprotocol.
+ (SecWebSocketProtocol, SEC_WEBSOCKET_PROTOCOL, b"sec-websocket-protocol");
+
+ /// The |Sec-WebSocket-Version| header field is used in the WebSocket
+ /// opening handshake. It is sent from the client to the server to
+ /// indicate the protocol version of the connection. This enables
+ /// servers to correctly interpret the opening handshake and subsequent
+ /// data being sent from the data, and close the connection if the server
+ /// cannot interpret that data in a safe manner.
+ (SecWebSocketVersion, SEC_WEBSOCKET_VERSION, b"sec-websocket-version");
+
+ /// Contains information about the software used by the origin server to
+ /// handle the request.
+ ///
+ /// Overly long and detailed Server values should be avoided as they
+ /// potentially reveal internal implementation details that might make it
+ /// (slightly) easier for attackers to find and exploit known security
+ /// holes.
+ (Server, SERVER, b"server");
+
+ /// Used to send cookies from the server to the user agent.
+ (SetCookie, SET_COOKIE, b"set-cookie");
+
+ /// Tells the client to communicate with HTTPS instead of using HTTP.
+ (StrictTransportSecurity, STRICT_TRANSPORT_SECURITY, b"strict-transport-security");
+
+ /// Informs the server of transfer encodings willing to be accepted as part
+ /// of the response.
+ ///
+ /// See also the Transfer-Encoding response header for more details on
+ /// transfer encodings. Note that chunked is always acceptable for HTTP/1.1
+ /// recipients and you that don't have to specify "chunked" using the TE
+ /// header. However, it is useful for setting if the client is accepting
+ /// trailer fields in a chunked transfer coding using the "trailers" value.
+ (Te, TE, b"te");
+
+ /// Allows the sender to include additional fields at the end of chunked
+ /// messages.
+ (Trailer, TRAILER, b"trailer");
+
+ /// Specifies the form of encoding used to safely transfer the entity to the
+ /// client.
+ ///
+ /// `transfer-encoding` is a hop-by-hop header, that is applying to a
+ /// message between two nodes, not to a resource itself. Each segment of a
+ /// multi-node connection can use different `transfer-encoding` values. If
+ /// you want to compress data over the whole connection, use the end-to-end
+ /// header `content-encoding` header instead.
+ ///
+ /// When present on a response to a `HEAD` request that has no body, it
+ /// indicates the value that would have applied to the corresponding `GET`
+ /// message.
+ (TransferEncoding, TRANSFER_ENCODING, b"transfer-encoding");
+
+ /// Contains a string that allows identifying the requesting client's
+ /// software.
+ (UserAgent, USER_AGENT, b"user-agent");
+
+ /// Used as part of the exchange to upgrade the protocol.
+ (Upgrade, UPGRADE, b"upgrade");
+
+ /// Sends a signal to the server expressing the client’s preference for an
+ /// encrypted and authenticated response.
+ (UpgradeInsecureRequests, UPGRADE_INSECURE_REQUESTS, b"upgrade-insecure-requests");
+
+ /// Determines how to match future requests with cached responses.
+ ///
+ /// The `vary` HTTP response header determines how to match future request
+ /// headers to decide whether a cached response can be used rather than
+ /// requesting a fresh one from the origin server. It is used by the server
+ /// to indicate which headers it used when selecting a representation of a
+ /// resource in a content negotiation algorithm.
+ ///
+ /// The `vary` header should be set on a 304 Not Modified response exactly
+ /// like it would have been set on an equivalent 200 OK response.
+ (Vary, VARY, b"vary");
+
+ /// Added by proxies to track routing.
+ ///
+ /// The `via` general header is added by proxies, both forward and reverse
+ /// proxies, and can appear in the request headers and the response headers.
+ /// It is used for tracking message forwards, avoiding request loops, and
+ /// identifying the protocol capabilities of senders along the
+ /// request/response chain.
+ (Via, VIA, b"via");
+
+ /// General HTTP header contains information about possible problems with
+ /// the status of the message.
+ ///
+ /// More than one `warning` header may appear in a response. Warning header
+ /// fields can in general be applied to any message, however some warn-codes
+ /// are specific to caches and can only be applied to response messages.
+ (Warning, WARNING, b"warning");
+
+ /// Defines the authentication method that should be used to gain access to
+ /// a resource.
+ (WwwAuthenticate, WWW_AUTHENTICATE, b"www-authenticate");
+
+ /// Marker used by the server to indicate that the MIME types advertised in
+ /// the `content-type` headers should not be changed and be followed.
+ ///
+ /// This allows to opt-out of MIME type sniffing, or, in other words, it is
+ /// a way to say that the webmasters knew what they were doing.
+ ///
+ /// This header was introduced by Microsoft in IE 8 as a way for webmasters
+ /// to block content sniffing that was happening and could transform
+ /// non-executable MIME types into executable MIME types. Since then, other
+ /// browsers have introduced it, even if their MIME sniffing algorithms were
+ /// less aggressive.
+ ///
+ /// Site security testers usually expect this header to be set.
+ (XContentTypeOptions, X_CONTENT_TYPE_OPTIONS, b"x-content-type-options");
+
+ /// Controls DNS prefetching.
+ ///
+ /// The `x-dns-prefetch-control` HTTP response header controls DNS
+ /// prefetching, a feature by which browsers proactively perform domain name
+ /// resolution on both links that the user may choose to follow as well as
+ /// URLs for items referenced by the document, including images, CSS,
+ /// JavaScript, and so forth.
+ ///
+ /// This prefetching is performed in the background, so that the DNS is
+ /// likely to have been resolved by the time the referenced items are
+ /// needed. This reduces latency when the user clicks a link.
+ (XDnsPrefetchControl, X_DNS_PREFETCH_CONTROL, b"x-dns-prefetch-control");
+
+ /// Indicates whether or not a browser should be allowed to render a page in
+ /// a frame.
+ ///
+ /// Sites can use this to avoid clickjacking attacks, by ensuring that their
+ /// content is not embedded into other sites.
+ ///
+ /// The added security is only provided if the user accessing the document
+ /// is using a browser supporting `x-frame-options`.
+ (XFrameOptions, X_FRAME_OPTIONS, b"x-frame-options");
+
+ /// Stop pages from loading when an XSS attack is detected.
+ ///
+ /// The HTTP X-XSS-Protection response header is a feature of Internet
+ /// Explorer, Chrome and Safari that stops pages from loading when they
+ /// detect reflected cross-site scripting (XSS) attacks. Although these
+ /// protections are largely unnecessary in modern browsers when sites
+ /// implement a strong Content-Security-Policy that disables the use of
+ /// inline JavaScript ('unsafe-inline'), they can still provide protections
+ /// for users of older web browsers that don't yet support CSP.
+ (XXssProtection, X_XSS_PROTECTION, b"x-xss-protection");
+}
+
+/// Valid header name characters
+///
+/// ```not_rust
+/// field-name = token
+/// separators = "(" | ")" | "<" | ">" | "@"
+/// | "," | ";" | ":" | "\" | <">
+/// | "/" | "[" | "]" | "?" | "="
+/// | "{" | "}" | SP | HT
+/// token = 1*tchar
+/// tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
+/// / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
+/// / DIGIT / ALPHA
+/// ; any VCHAR, except delimiters
+/// ```
+// HEADER_CHARS maps every byte that is 128 or larger to 0 so everything that is
+// mapped by HEADER_CHARS, maps to a valid single-byte UTF-8 codepoint.
+const HEADER_CHARS: [u8; 256] = [
+ // 0 1 2 3 4 5 6 7 8 9
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2x
+ 0, 0, 0, b'!', b'"', b'#', b'$', b'%', b'&', b'\'', // 3x
+ 0, 0, b'*', b'+', 0, b'-', b'.', 0, b'0', b'1', // 4x
+ b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', 0, 0, // 5x
+ 0, 0, 0, 0, 0, b'a', b'b', b'c', b'd', b'e', // 6x
+ b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', // 7x
+ b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', // 8x
+ b'z', 0, 0, 0, b'^', b'_', b'`', b'a', b'b', b'c', // 9x
+ b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', // 10x
+ b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', // 11x
+ b'x', b'y', b'z', 0, b'|', 0, b'~', 0, 0, 0, // 12x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 13x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 15x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 17x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 18x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 19x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 21x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 22x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 23x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 24x
+ 0, 0, 0, 0, 0, 0 // 25x
+];
+
+/// Valid header name characters for HTTP/2.0 and HTTP/3.0
+// HEADER_CHARS_H2 maps every byte that is 128 or larger to 0 so everything that is
+// mapped by HEADER_CHARS_H2, maps to a valid single-byte UTF-8 codepoint.
+const HEADER_CHARS_H2: [u8; 256] = [
+ // 0 1 2 3 4 5 6 7 8 9
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2x
+ 0, 0, 0, b'!', b'"', b'#', b'$', b'%', b'&', b'\'', // 3x
+ 0, 0, b'*', b'+', 0, b'-', b'.', 0, b'0', b'1', // 4x
+ b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', 0, 0, // 5x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x
+ 0, 0, 0, 0, b'^', b'_', b'`', b'a', b'b', b'c', // 9x
+ b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', // 10x
+ b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', // 11x
+ b'x', b'y', b'z', 0, b'|', 0, b'~', 0, 0, 0, // 12x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 13x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 15x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 17x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 18x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 19x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 21x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 22x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 23x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 24x
+ 0, 0, 0, 0, 0, 0 // 25x
+];
+
+fn parse_hdr<'a>(
+ data: &'a [u8],
+ b: &'a mut [MaybeUninit<u8>; SCRATCH_BUF_SIZE],
+ table: &[u8; 256],
+) -> Result<HdrName<'a>, InvalidHeaderName> {
+ match data.len() {
+ 0 => Err(InvalidHeaderName::new()),
+ len @ 1..=SCRATCH_BUF_SIZE => {
+ // Read from data into the buffer - transforming using `table` as we go
+ data.iter()
+ .zip(b.iter_mut())
+ .for_each(|(index, out)| *out = MaybeUninit::new(table[*index as usize]));
+ // Safety: len bytes of b were just initialized.
+ let name: &'a [u8] = unsafe { slice_assume_init(&b[0..len]) };
+ match StandardHeader::from_bytes(name) {
+ Some(sh) => Ok(sh.into()),
+ None => {
+ if name.contains(&0) {
+ Err(InvalidHeaderName::new())
+ } else {
+ Ok(HdrName::custom(name, true))
+ }
+ }
+ }
+ }
+ SCRATCH_BUF_OVERFLOW..=super::MAX_HEADER_NAME_LEN => Ok(HdrName::custom(data, false)),
+ _ => Err(InvalidHeaderName::new()),
+ }
+}
+
+
+
+impl<'a> From<StandardHeader> for HdrName<'a> {
+ fn from(hdr: StandardHeader) -> HdrName<'a> {
+ HdrName { inner: Repr::Standard(hdr) }
+ }
+}
+
+impl HeaderName {
+ /// Converts a slice of bytes to an HTTP header name.
+ ///
+ /// This function normalizes the input.
+ pub fn from_bytes(src: &[u8]) -> Result<HeaderName, InvalidHeaderName> {
+ let mut buf = uninit_u8_array();
+ // Precondition: HEADER_CHARS is a valid table for parse_hdr().
+ match parse_hdr(src, &mut buf, &HEADER_CHARS)?.inner {
+ Repr::Standard(std) => Ok(std.into()),
+ Repr::Custom(MaybeLower { buf, lower: true }) => {
+ let buf = Bytes::copy_from_slice(buf);
+ // Safety: the invariant on MaybeLower ensures buf is valid UTF-8.
+ let val = unsafe { ByteStr::from_utf8_unchecked(buf) };
+ Ok(Custom(val).into())
+ }
+ Repr::Custom(MaybeLower { buf, lower: false }) => {
+ use bytes::{BufMut};
+ let mut dst = BytesMut::with_capacity(buf.len());
+
+ for b in buf.iter() {
+ // HEADER_CHARS maps all bytes to valid single-byte UTF-8
+ let b = HEADER_CHARS[*b as usize];
+
+ if b == 0 {
+ return Err(InvalidHeaderName::new());
+ }
+
+ dst.put_u8(b);
+ }
+
+ // Safety: the loop above maps all bytes in buf to valid single byte
+ // UTF-8 before copying them into dst. This means that dst (and hence
+ // dst.freeze()) is valid UTF-8.
+ let val = unsafe { ByteStr::from_utf8_unchecked(dst.freeze()) };
+
+ Ok(Custom(val).into())
+ }
+ }
+ }
+
+ /// Converts a slice of bytes to an HTTP header name.
+ ///
+ /// This function expects the input to only contain lowercase characters.
+ /// This is useful when decoding HTTP/2.0 or HTTP/3.0 headers. Both
+ /// require that all headers be represented in lower case.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::*;
+ ///
+ /// // Parsing a lower case header
+ /// let hdr = HeaderName::from_lowercase(b"content-length").unwrap();
+ /// assert_eq!(CONTENT_LENGTH, hdr);
+ ///
+ /// // Parsing a header that contains uppercase characters
+ /// assert!(HeaderName::from_lowercase(b"Content-Length").is_err());
+ /// ```
+ pub fn from_lowercase(src: &[u8]) -> Result<HeaderName, InvalidHeaderName> {
+ let mut buf = uninit_u8_array();
+ // Precondition: HEADER_CHARS_H2 is a valid table for parse_hdr()
+ match parse_hdr(src, &mut buf, &HEADER_CHARS_H2)?.inner {
+ Repr::Standard(std) => Ok(std.into()),
+ Repr::Custom(MaybeLower { buf, lower: true }) => {
+ let buf = Bytes::copy_from_slice(buf);
+ // Safety: the invariant on MaybeLower ensures buf is valid UTF-8.
+ let val = unsafe { ByteStr::from_utf8_unchecked(buf) };
+ Ok(Custom(val).into())
+ }
+ Repr::Custom(MaybeLower { buf, lower: false }) => {
+ for &b in buf.iter() {
+ // HEADER_CHARS_H2 maps all bytes that are not valid single-byte
+ // UTF-8 to 0 so this check returns an error for invalid UTF-8.
+ if HEADER_CHARS_H2[b as usize] == 0 {
+ return Err(InvalidHeaderName::new());
+ }
+ }
+
+ let buf = Bytes::copy_from_slice(buf);
+ // Safety: the loop above checks that each byte of buf (either
+ // version) is valid UTF-8.
+ let val = unsafe { ByteStr::from_utf8_unchecked(buf) };
+ Ok(Custom(val).into())
+ }
+ }
+ }
+
+ /// Converts a static string to a HTTP header name.
+ ///
+ /// This function requires the static string to only contain lowercase
+ /// characters, numerals and symbols, as per the HTTP/2.0 specification
+ /// and header names internal representation within this library.
+ ///
+ /// # Panics
+ ///
+ /// This function panics when the static string is a invalid header.
+ ///
+ /// Until [Allow panicking in constants](https://github.com/rust-lang/rfcs/pull/2345)
+ /// makes its way into stable, the panic message at compile-time is
+ /// going to look cryptic, but should at least point at your header value:
+ ///
+ /// ```text
+ /// error: any use of this value will cause an error
+ /// --> http/src/header/name.rs:1241:13
+ /// |
+ /// 1241 | ([] as [u8; 0])[0]; // Invalid header name
+ /// | ^^^^^^^^^^^^^^^^^^
+ /// | |
+ /// | index out of bounds: the length is 0 but the index is 0
+ /// | inside `http::HeaderName::from_static` at http/src/header/name.rs:1241:13
+ /// | inside `INVALID_NAME` at src/main.rs:3:34
+ /// |
+ /// ::: src/main.rs:3:1
+ /// |
+ /// 3 | const INVALID_NAME: HeaderName = HeaderName::from_static("Capitalized");
+ /// | ------------------------------------------------------------------------
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::*;
+ /// // Parsing a standard header
+ /// let hdr = HeaderName::from_static("content-length");
+ /// assert_eq!(CONTENT_LENGTH, hdr);
+ ///
+ /// // Parsing a custom header
+ /// let CUSTOM_HEADER: &'static str = "custom-header";
+ ///
+ /// let a = HeaderName::from_lowercase(b"custom-header").unwrap();
+ /// let b = HeaderName::from_static(CUSTOM_HEADER);
+ /// assert_eq!(a, b);
+ /// ```
+ ///
+ /// ```should_panic
+ /// # use http::header::*;
+ /// #
+ /// // Parsing a header that contains invalid symbols(s):
+ /// HeaderName::from_static("content{}{}length"); // This line panics!
+ ///
+ /// // Parsing a header that contains invalid uppercase characters.
+ /// let a = HeaderName::from_static("foobar");
+ /// let b = HeaderName::from_static("FOOBAR"); // This line panics!
+ /// ```
+ #[allow(unconditional_panic)] // required for the panic circumvention
+ pub const fn from_static(src: &'static str) -> HeaderName {
+ let name_bytes = src.as_bytes();
+ if let Some(standard) = StandardHeader::from_bytes(name_bytes) {
+ return HeaderName{
+ inner: Repr::Standard(standard),
+ };
+ }
+
+ if name_bytes.len() == 0 || name_bytes.len() > super::MAX_HEADER_NAME_LEN || {
+ let mut i = 0;
+ loop {
+ if i >= name_bytes.len() {
+ break false;
+ } else if HEADER_CHARS_H2[name_bytes[i] as usize] == 0 {
+ break true;
+ }
+ i += 1;
+ }
+ } {
+ ([] as [u8; 0])[0]; // Invalid header name
+ }
+
+ HeaderName {
+ inner: Repr::Custom(Custom(ByteStr::from_static(src)))
+ }
+ }
+
+ /// Returns a `str` representation of the header.
+ ///
+ /// The returned string will always be lower case.
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ match self.inner {
+ Repr::Standard(v) => v.as_str(),
+ Repr::Custom(ref v) => &*v.0,
+ }
+ }
+
+ pub(super) fn into_bytes(self) -> Bytes {
+ self.inner.into()
+ }
+}
+
+impl FromStr for HeaderName {
+ type Err = InvalidHeaderName;
+
+ fn from_str(s: &str) -> Result<HeaderName, InvalidHeaderName> {
+ HeaderName::from_bytes(s.as_bytes()).map_err(|_| InvalidHeaderName { _priv: () })
+ }
+}
+
+impl AsRef<str> for HeaderName {
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl AsRef<[u8]> for HeaderName {
+ fn as_ref(&self) -> &[u8] {
+ self.as_str().as_bytes()
+ }
+}
+
+impl Borrow<str> for HeaderName {
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl fmt::Debug for HeaderName {
+ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(self.as_str(), fmt)
+ }
+}
+
+impl fmt::Display for HeaderName {
+ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), fmt)
+ }
+}
+
+impl InvalidHeaderName {
+ pub(super) fn new() -> InvalidHeaderName {
+ InvalidHeaderName { _priv: () }
+ }
+}
+
+impl<'a> From<&'a HeaderName> for HeaderName {
+ fn from(src: &'a HeaderName) -> HeaderName {
+ src.clone()
+ }
+}
+
+#[doc(hidden)]
+impl<T> From<Repr<T>> for Bytes
+where
+ T: Into<Bytes>,
+{
+ fn from(repr: Repr<T>) -> Bytes {
+ match repr {
+ Repr::Standard(header) => Bytes::from_static(header.as_str().as_bytes()),
+ Repr::Custom(header) => header.into(),
+ }
+ }
+}
+
+impl From<Custom> for Bytes {
+ #[inline]
+ fn from(Custom(inner): Custom) -> Bytes {
+ Bytes::from(inner)
+ }
+}
+
+impl<'a> TryFrom<&'a str> for HeaderName {
+ type Error = InvalidHeaderName;
+ #[inline]
+ fn try_from(s: &'a str) -> Result<Self, Self::Error> {
+ Self::from_bytes(s.as_bytes())
+ }
+}
+
+impl<'a> TryFrom<&'a String> for HeaderName {
+ type Error = InvalidHeaderName;
+ #[inline]
+ fn try_from(s: &'a String) -> Result<Self, Self::Error> {
+ Self::from_bytes(s.as_bytes())
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for HeaderName {
+ type Error = InvalidHeaderName;
+ #[inline]
+ fn try_from(s: &'a [u8]) -> Result<Self, Self::Error> {
+ Self::from_bytes(s)
+ }
+}
+
+impl TryFrom<String> for HeaderName {
+ type Error = InvalidHeaderName;
+
+ #[inline]
+ fn try_from(s: String) -> Result<Self, Self::Error> {
+ Self::from_bytes(s.as_bytes())
+ }
+}
+
+impl TryFrom<Vec<u8>> for HeaderName {
+ type Error = InvalidHeaderName;
+
+ #[inline]
+ fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error> {
+ Self::from_bytes(&vec)
+ }
+}
+
+#[doc(hidden)]
+impl From<StandardHeader> for HeaderName {
+ fn from(src: StandardHeader) -> HeaderName {
+ HeaderName {
+ inner: Repr::Standard(src),
+ }
+ }
+}
+
+#[doc(hidden)]
+impl From<Custom> for HeaderName {
+ fn from(src: Custom) -> HeaderName {
+ HeaderName {
+ inner: Repr::Custom(src),
+ }
+ }
+}
+
+impl<'a> PartialEq<&'a HeaderName> for HeaderName {
+ #[inline]
+ fn eq(&self, other: &&'a HeaderName) -> bool {
+ *self == **other
+ }
+}
+
+impl<'a> PartialEq<HeaderName> for &'a HeaderName {
+ #[inline]
+ fn eq(&self, other: &HeaderName) -> bool {
+ *other == *self
+ }
+}
+
+impl PartialEq<str> for HeaderName {
+ /// Performs a case-insensitive comparison of the string against the header
+ /// name
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use http::header::CONTENT_LENGTH;
+ ///
+ /// assert_eq!(CONTENT_LENGTH, "content-length");
+ /// assert_eq!(CONTENT_LENGTH, "Content-Length");
+ /// assert_ne!(CONTENT_LENGTH, "content length");
+ /// ```
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ eq_ignore_ascii_case(self.as_ref(), other.as_bytes())
+ }
+}
+
+impl PartialEq<HeaderName> for str {
+ /// Performs a case-insensitive comparison of the string against the header
+ /// name
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use http::header::CONTENT_LENGTH;
+ ///
+ /// assert_eq!(CONTENT_LENGTH, "content-length");
+ /// assert_eq!(CONTENT_LENGTH, "Content-Length");
+ /// assert_ne!(CONTENT_LENGTH, "content length");
+ /// ```
+ #[inline]
+ fn eq(&self, other: &HeaderName) -> bool {
+ *other == *self
+ }
+}
+
+impl<'a> PartialEq<&'a str> for HeaderName {
+ /// Performs a case-insensitive comparison of the string against the header
+ /// name
+ #[inline]
+ fn eq(&self, other: &&'a str) -> bool {
+ *self == **other
+ }
+}
+
+impl<'a> PartialEq<HeaderName> for &'a str {
+ /// Performs a case-insensitive comparison of the string against the header
+ /// name
+ #[inline]
+ fn eq(&self, other: &HeaderName) -> bool {
+ *other == *self
+ }
+}
+
+impl fmt::Debug for InvalidHeaderName {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_struct("InvalidHeaderName")
+ // skip _priv noise
+ .finish()
+ }
+}
+
+impl fmt::Display for InvalidHeaderName {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("invalid HTTP header name")
+ }
+}
+
+impl Error for InvalidHeaderName {}
+
+// ===== HdrName =====
+
+impl<'a> HdrName<'a> {
+ // Precondition: if lower then buf is valid UTF-8
+ fn custom(buf: &'a [u8], lower: bool) -> HdrName<'a> {
+ HdrName {
+ // Invariant (on MaybeLower): follows from the precondition
+ inner: Repr::Custom(MaybeLower {
+ buf: buf,
+ lower: lower,
+ }),
+ }
+ }
+
+ pub fn from_bytes<F, U>(hdr: &[u8], f: F) -> Result<U, InvalidHeaderName>
+ where F: FnOnce(HdrName<'_>) -> U,
+ {
+ let mut buf = uninit_u8_array();
+ // Precondition: HEADER_CHARS is a valid table for parse_hdr().
+ let hdr = parse_hdr(hdr, &mut buf, &HEADER_CHARS)?;
+ Ok(f(hdr))
+ }
+
+ pub fn from_static<F, U>(hdr: &'static str, f: F) -> U
+ where
+ F: FnOnce(HdrName<'_>) -> U,
+ {
+ let mut buf = uninit_u8_array();
+ let hdr =
+ // Precondition: HEADER_CHARS is a valid table for parse_hdr().
+ parse_hdr(hdr.as_bytes(), &mut buf, &HEADER_CHARS).expect("static str is invalid name");
+ f(hdr)
+ }
+}
+
+#[doc(hidden)]
+impl<'a> From<HdrName<'a>> for HeaderName {
+ fn from(src: HdrName<'a>) -> HeaderName {
+ match src.inner {
+ Repr::Standard(s) => HeaderName {
+ inner: Repr::Standard(s),
+ },
+ Repr::Custom(maybe_lower) => {
+ if maybe_lower.lower {
+ let buf = Bytes::copy_from_slice(&maybe_lower.buf[..]);
+ // Safety: the invariant on MaybeLower ensures buf is valid UTF-8.
+ let byte_str = unsafe { ByteStr::from_utf8_unchecked(buf) };
+
+ HeaderName {
+ inner: Repr::Custom(Custom(byte_str)),
+ }
+ } else {
+ use bytes::BufMut;
+ let mut dst = BytesMut::with_capacity(maybe_lower.buf.len());
+
+ for b in maybe_lower.buf.iter() {
+ // HEADER_CHARS maps each byte to a valid single-byte UTF-8
+ // codepoint.
+ dst.put_u8(HEADER_CHARS[*b as usize]);
+ }
+
+ // Safety: the loop above maps each byte of maybe_lower.buf to a
+ // valid single-byte UTF-8 codepoint before copying it into dst.
+ // dst (and hence dst.freeze()) is thus valid UTF-8.
+ let buf = unsafe { ByteStr::from_utf8_unchecked(dst.freeze()) };
+
+ HeaderName {
+ inner: Repr::Custom(Custom(buf)),
+ }
+ }
+ }
+ }
+ }
+}
+
+#[doc(hidden)]
+impl<'a> PartialEq<HdrName<'a>> for HeaderName {
+ #[inline]
+ fn eq(&self, other: &HdrName<'a>) -> bool {
+ match self.inner {
+ Repr::Standard(a) => match other.inner {
+ Repr::Standard(b) => a == b,
+ _ => false,
+ },
+ Repr::Custom(Custom(ref a)) => match other.inner {
+ Repr::Custom(ref b) => {
+ if b.lower {
+ a.as_bytes() == b.buf
+ } else {
+ eq_ignore_ascii_case(a.as_bytes(), b.buf)
+ }
+ }
+ _ => false,
+ },
+ }
+ }
+}
+
+// ===== Custom =====
+
+impl Hash for Custom {
+ #[inline]
+ fn hash<H: Hasher>(&self, hasher: &mut H) {
+ hasher.write(self.0.as_bytes())
+ }
+}
+
+// ===== MaybeLower =====
+
+impl<'a> Hash for MaybeLower<'a> {
+ #[inline]
+ fn hash<H: Hasher>(&self, hasher: &mut H) {
+ if self.lower {
+ hasher.write(self.buf);
+ } else {
+ for &b in self.buf {
+ hasher.write(&[HEADER_CHARS[b as usize]]);
+ }
+ }
+ }
+}
+
+// Assumes that the left hand side is already lower case
+#[inline]
+fn eq_ignore_ascii_case(lower: &[u8], s: &[u8]) -> bool {
+ if lower.len() != s.len() {
+ return false;
+ }
+
+ lower.iter().zip(s).all(|(a, b)| {
+ *a == HEADER_CHARS[*b as usize]
+ })
+}
+
+// Utility functions for MaybeUninit<>. These are drawn from unstable API's on
+// MaybeUninit<> itself.
+const SCRATCH_BUF_SIZE: usize = 64;
+const SCRATCH_BUF_OVERFLOW: usize = SCRATCH_BUF_SIZE + 1;
+
+fn uninit_u8_array() -> [MaybeUninit<u8>; SCRATCH_BUF_SIZE] {
+ let arr = MaybeUninit::<[MaybeUninit<u8>; SCRATCH_BUF_SIZE]>::uninit();
+ // Safety: assume_init() is claiming that an array of MaybeUninit<>
+ // has been initilized, but MaybeUninit<>'s do not require initilizaton.
+ unsafe { arr.assume_init() }
+}
+
+// Assuming all the elements are initilized, get a slice of them.
+//
+// Safety: All elements of `slice` must be initilized to prevent
+// undefined behavior.
+unsafe fn slice_assume_init<T>(slice: &[MaybeUninit<T>]) -> &[T] {
+ &*(slice as *const [MaybeUninit<T>] as *const [T])
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use self::StandardHeader::Vary;
+
+ #[test]
+ fn test_bounds() {
+ fn check_bounds<T: Sync + Send>() {}
+ check_bounds::<HeaderName>();
+ }
+
+ #[test]
+ fn test_parse_invalid_headers() {
+ for i in 0..128 {
+ let hdr = vec![1u8; i];
+ assert!(HeaderName::from_bytes(&hdr).is_err(), "{} invalid header chars did not fail", i);
+ }
+ }
+
+ const ONE_TOO_LONG: &[u8] = &[b'a'; super::super::MAX_HEADER_NAME_LEN+1];
+
+ #[test]
+ fn test_invalid_name_lengths() {
+ assert!(
+ HeaderName::from_bytes(&[]).is_err(),
+ "zero-length header name is an error",
+ );
+
+ let long = &ONE_TOO_LONG[0..super::super::MAX_HEADER_NAME_LEN];
+
+ let long_str = std::str::from_utf8(long).unwrap();
+ assert_eq!(HeaderName::from_static(long_str), long_str); // shouldn't panic!
+
+ assert!(
+ HeaderName::from_bytes(long).is_ok(),
+ "max header name length is ok",
+ );
+ assert!(
+ HeaderName::from_bytes(ONE_TOO_LONG).is_err(),
+ "longer than max header name length is an error",
+ );
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_static_invalid_name_lengths() {
+ // Safety: ONE_TOO_LONG contains only the UTF-8 safe, single-byte codepoint b'a'.
+ let _ = HeaderName::from_static(unsafe { std::str::from_utf8_unchecked(ONE_TOO_LONG) });
+ }
+
+ #[test]
+ fn test_from_hdr_name() {
+ use self::StandardHeader::Vary;
+
+ let name = HeaderName::from(HdrName {
+ inner: Repr::Standard(Vary),
+ });
+
+ assert_eq!(name.inner, Repr::Standard(Vary));
+
+ let name = HeaderName::from(HdrName {
+ inner: Repr::Custom(MaybeLower {
+ buf: b"hello-world",
+ lower: true,
+ }),
+ });
+
+ assert_eq!(name.inner, Repr::Custom(Custom(ByteStr::from_static("hello-world"))));
+
+ let name = HeaderName::from(HdrName {
+ inner: Repr::Custom(MaybeLower {
+ buf: b"Hello-World",
+ lower: false,
+ }),
+ });
+
+ assert_eq!(name.inner, Repr::Custom(Custom(ByteStr::from_static("hello-world"))));
+ }
+
+ #[test]
+ fn test_eq_hdr_name() {
+ use self::StandardHeader::Vary;
+
+ let a = HeaderName { inner: Repr::Standard(Vary) };
+ let b = HdrName { inner: Repr::Standard(Vary) };
+
+ assert_eq!(a, b);
+
+ let a = HeaderName { inner: Repr::Custom(Custom(ByteStr::from_static("vaary"))) };
+ assert_ne!(a, b);
+
+ let b = HdrName { inner: Repr::Custom(MaybeLower {
+ buf: b"vaary",
+ lower: true,
+ })};
+
+ assert_eq!(a, b);
+
+ let b = HdrName { inner: Repr::Custom(MaybeLower {
+ buf: b"vaary",
+ lower: false,
+ })};
+
+ assert_eq!(a, b);
+
+ let b = HdrName { inner: Repr::Custom(MaybeLower {
+ buf: b"VAARY",
+ lower: false,
+ })};
+
+ assert_eq!(a, b);
+
+ let a = HeaderName { inner: Repr::Standard(Vary) };
+ assert_ne!(a, b);
+ }
+
+ #[test]
+ fn test_from_static_std() {
+ let a = HeaderName { inner: Repr::Standard(Vary) };
+
+ let b = HeaderName::from_static("vary");
+ assert_eq!(a, b);
+
+ let b = HeaderName::from_static("vaary");
+ assert_ne!(a, b);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_std_uppercase() {
+ HeaderName::from_static("Vary");
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_std_symbol() {
+ HeaderName::from_static("vary{}");
+ }
+
+ // MaybeLower { lower: true }
+ #[test]
+ fn test_from_static_custom_short() {
+ let a = HeaderName { inner: Repr::Custom(Custom(ByteStr::from_static("customheader"))) };
+ let b = HeaderName::from_static("customheader");
+ assert_eq!(a, b);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_custom_short_uppercase() {
+ HeaderName::from_static("custom header");
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_custom_short_symbol() {
+ HeaderName::from_static("CustomHeader");
+ }
+
+ // MaybeLower { lower: false }
+ #[test]
+ fn test_from_static_custom_long() {
+ let a = HeaderName { inner: Repr::Custom(Custom(ByteStr::from_static(
+ "longer-than-63--thisheaderislongerthansixtythreecharactersandthushandleddifferent"
+ ))) };
+ let b = HeaderName::from_static(
+ "longer-than-63--thisheaderislongerthansixtythreecharactersandthushandleddifferent"
+ );
+ assert_eq!(a, b);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_custom_long_uppercase() {
+ HeaderName::from_static(
+ "Longer-Than-63--ThisHeaderIsLongerThanSixtyThreeCharactersAndThusHandledDifferent"
+ );
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_custom_long_symbol() {
+ HeaderName::from_static(
+ "longer-than-63--thisheader{}{}{}{}islongerthansixtythreecharactersandthushandleddifferent"
+ );
+ }
+
+ #[test]
+ fn test_from_static_custom_single_char() {
+ let a = HeaderName { inner: Repr::Custom(Custom(ByteStr::from_static("a"))) };
+ let b = HeaderName::from_static("a");
+ assert_eq!(a, b);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_from_static_empty() {
+ HeaderName::from_static("");
+ }
+
+ #[test]
+ fn test_all_tokens() {
+ HeaderName::from_static("!#$%&'*+-.^_`|~0123456789abcdefghijklmnopqrstuvwxyz");
+ }
+
+ #[test]
+ fn test_from_lowercase() {
+ HeaderName::from_lowercase(&[0; 10]).unwrap_err();
+ HeaderName::from_lowercase(&[b'A'; 10]).unwrap_err();
+ HeaderName::from_lowercase(&[0x1; 10]).unwrap_err();
+ HeaderName::from_lowercase(&[0xFF; 10]).unwrap_err();
+ //HeaderName::from_lowercase(&[0; 100]).unwrap_err();
+ HeaderName::from_lowercase(&[b'A'; 100]).unwrap_err();
+ HeaderName::from_lowercase(&[0x1; 100]).unwrap_err();
+ HeaderName::from_lowercase(&[0xFF; 100]).unwrap_err();
+ }
+}
diff --git a/extra_versions/crates/http/src/header/value.rs b/extra_versions/crates/http/src/header/value.rs
new file mode 100644
index 0000000..bf05f16
--- /dev/null
+++ b/extra_versions/crates/http/src/header/value.rs
@@ -0,0 +1,795 @@
+use bytes::{Bytes, BytesMut};
+
+use std::convert::TryFrom;
+use std::error::Error;
+use std::fmt::Write;
+use std::str::FromStr;
+use std::{cmp, fmt, mem, str};
+
+use crate::header::name::HeaderName;
+
+/// Represents an HTTP header field value.
+///
+/// In practice, HTTP header field values are usually valid ASCII. However, the
+/// HTTP spec allows for a header value to contain opaque bytes as well. In this
+/// case, the header field value is not able to be represented as a string.
+///
+/// To handle this, the `HeaderValue` is useable as a type and can be compared
+/// with strings and implements `Debug`. A `to_str` fn is provided that returns
+/// an `Err` if the header value contains non visible ascii characters.
+#[derive(Clone, Hash)]
+pub struct HeaderValue {
+ inner: Bytes,
+ is_sensitive: bool,
+}
+
+/// A possible error when converting a `HeaderValue` from a string or byte
+/// slice.
+pub struct InvalidHeaderValue {
+ _priv: (),
+}
+
+/// A possible error when converting a `HeaderValue` to a string representation.
+///
+/// Header field values may contain opaque bytes, in which case it is not
+/// possible to represent the value as a string.
+#[derive(Debug)]
+pub struct ToStrError {
+ _priv: (),
+}
+
+impl HeaderValue {
+ /// Convert a static string to a `HeaderValue`.
+ ///
+ /// This function will not perform any copying, however the string is
+ /// checked to ensure that no invalid characters are present. Only visible
+ /// ASCII characters (32-127) are permitted.
+ ///
+ /// # Panics
+ ///
+ /// This function panics if the argument contains invalid header value
+ /// characters.
+ ///
+ /// Until [Allow panicking in constants](https://github.com/rust-lang/rfcs/pull/2345)
+ /// makes its way into stable, the panic message at compile-time is
+ /// going to look cryptic, but should at least point at your header value:
+ ///
+ /// ```text
+ /// error: any use of this value will cause an error
+ /// --> http/src/header/value.rs:67:17
+ /// |
+ /// 67 | ([] as [u8; 0])[0]; // Invalid header value
+ /// | ^^^^^^^^^^^^^^^^^^
+ /// | |
+ /// | index out of bounds: the length is 0 but the index is 0
+ /// | inside `HeaderValue::from_static` at http/src/header/value.rs:67:17
+ /// | inside `INVALID_HEADER` at src/main.rs:73:33
+ /// |
+ /// ::: src/main.rs:73:1
+ /// |
+ /// 73 | const INVALID_HEADER: HeaderValue = HeaderValue::from_static("жsome value");
+ /// | ----------------------------------------------------------------------------
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_static("hello");
+ /// assert_eq!(val, "hello");
+ /// ```
+ #[inline]
+ #[allow(unconditional_panic)] // required for the panic circumvention
+ pub const fn from_static(src: &'static str) -> HeaderValue {
+ let bytes = src.as_bytes();
+ let mut i = 0;
+ while i < bytes.len() {
+ if !is_visible_ascii(bytes[i]) {
+ ([] as [u8; 0])[0]; // Invalid header value
+ }
+ i += 1;
+ }
+
+ HeaderValue {
+ inner: Bytes::from_static(bytes),
+ is_sensitive: false,
+ }
+ }
+
+ /// Attempt to convert a string to a `HeaderValue`.
+ ///
+ /// If the argument contains invalid header value characters, an error is
+ /// returned. Only visible ASCII characters (32-127) are permitted. Use
+ /// `from_bytes` to create a `HeaderValue` that includes opaque octets
+ /// (128-255).
+ ///
+ /// This function is intended to be replaced in the future by a `TryFrom`
+ /// implementation once the trait is stabilized in std.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_str("hello").unwrap();
+ /// assert_eq!(val, "hello");
+ /// ```
+ ///
+ /// An invalid value
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_str("\n");
+ /// assert!(val.is_err());
+ /// ```
+ #[inline]
+ pub fn from_str(src: &str) -> Result<HeaderValue, InvalidHeaderValue> {
+ HeaderValue::try_from_generic(src, |s| Bytes::copy_from_slice(s.as_bytes()))
+ }
+
+ /// Converts a HeaderName into a HeaderValue
+ ///
+ /// Since every valid HeaderName is a valid HeaderValue this is done infallibly.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::{HeaderValue, HeaderName};
+ /// # use http::header::ACCEPT;
+ /// let val = HeaderValue::from_name(ACCEPT);
+ /// assert_eq!(val, HeaderValue::from_bytes(b"accept").unwrap());
+ /// ```
+ #[inline]
+ pub fn from_name(name: HeaderName) -> HeaderValue {
+ name.into()
+ }
+
+ /// Attempt to convert a byte slice to a `HeaderValue`.
+ ///
+ /// If the argument contains invalid header value bytes, an error is
+ /// returned. Only byte values between 32 and 255 (inclusive) are permitted,
+ /// excluding byte 127 (DEL).
+ ///
+ /// This function is intended to be replaced in the future by a `TryFrom`
+ /// implementation once the trait is stabilized in std.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_bytes(b"hello\xfa").unwrap();
+ /// assert_eq!(val, &b"hello\xfa"[..]);
+ /// ```
+ ///
+ /// An invalid value
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_bytes(b"\n");
+ /// assert!(val.is_err());
+ /// ```
+ #[inline]
+ pub fn from_bytes(src: &[u8]) -> Result<HeaderValue, InvalidHeaderValue> {
+ HeaderValue::try_from_generic(src, Bytes::copy_from_slice)
+ }
+
+ /// Attempt to convert a `Bytes` buffer to a `HeaderValue`.
+ ///
+ /// This will try to prevent a copy if the type passed is the type used
+ /// internally, and will copy the data if it is not.
+ pub fn from_maybe_shared<T>(src: T) -> Result<HeaderValue, InvalidHeaderValue>
+ where
+ T: AsRef<[u8]> + 'static,
+ {
+ if_downcast_into!(T, Bytes, src, {
+ return HeaderValue::from_shared(src);
+ });
+
+ HeaderValue::from_bytes(src.as_ref())
+ }
+
+ /// Convert a `Bytes` directly into a `HeaderValue` without validating.
+ ///
+ /// This function does NOT validate that illegal bytes are not contained
+ /// within the buffer.
+ pub unsafe fn from_maybe_shared_unchecked<T>(src: T) -> HeaderValue
+ where
+ T: AsRef<[u8]> + 'static,
+ {
+ if cfg!(debug_assertions) {
+ match HeaderValue::from_maybe_shared(src) {
+ Ok(val) => val,
+ Err(_err) => {
+ panic!("HeaderValue::from_maybe_shared_unchecked() with invalid bytes");
+ }
+ }
+ } else {
+
+ if_downcast_into!(T, Bytes, src, {
+ return HeaderValue {
+ inner: src,
+ is_sensitive: false,
+ };
+ });
+
+ let src = Bytes::copy_from_slice(src.as_ref());
+ HeaderValue {
+ inner: src,
+ is_sensitive: false,
+ }
+ }
+ }
+
+ fn from_shared(src: Bytes) -> Result<HeaderValue, InvalidHeaderValue> {
+ HeaderValue::try_from_generic(src, std::convert::identity)
+ }
+
+ fn try_from_generic<T: AsRef<[u8]>, F: FnOnce(T) -> Bytes>(src: T, into: F) -> Result<HeaderValue, InvalidHeaderValue> {
+ for &b in src.as_ref() {
+ if !is_valid(b) {
+ return Err(InvalidHeaderValue { _priv: () });
+ }
+ }
+ Ok(HeaderValue {
+ inner: into(src),
+ is_sensitive: false,
+ })
+ }
+
+ /// Yields a `&str` slice if the `HeaderValue` only contains visible ASCII
+ /// chars.
+ ///
+ /// This function will perform a scan of the header value, checking all the
+ /// characters.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_static("hello");
+ /// assert_eq!(val.to_str().unwrap(), "hello");
+ /// ```
+ pub fn to_str(&self) -> Result<&str, ToStrError> {
+ let bytes = self.as_ref();
+
+ for &b in bytes {
+ if !is_visible_ascii(b) {
+ return Err(ToStrError { _priv: () });
+ }
+ }
+
+ unsafe { Ok(str::from_utf8_unchecked(bytes)) }
+ }
+
+ /// Returns the length of `self`.
+ ///
+ /// This length is in bytes.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_static("hello");
+ /// assert_eq!(val.len(), 5);
+ /// ```
+ #[inline]
+ pub fn len(&self) -> usize {
+ self.as_ref().len()
+ }
+
+ /// Returns true if the `HeaderValue` has a length of zero bytes.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_static("");
+ /// assert!(val.is_empty());
+ ///
+ /// let val = HeaderValue::from_static("hello");
+ /// assert!(!val.is_empty());
+ /// ```
+ #[inline]
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Converts a `HeaderValue` to a byte slice.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let val = HeaderValue::from_static("hello");
+ /// assert_eq!(val.as_bytes(), b"hello");
+ /// ```
+ #[inline]
+ pub fn as_bytes(&self) -> &[u8] {
+ self.as_ref()
+ }
+
+ /// Mark that the header value represents sensitive information.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let mut val = HeaderValue::from_static("my secret");
+ ///
+ /// val.set_sensitive(true);
+ /// assert!(val.is_sensitive());
+ ///
+ /// val.set_sensitive(false);
+ /// assert!(!val.is_sensitive());
+ /// ```
+ #[inline]
+ pub fn set_sensitive(&mut self, val: bool) {
+ self.is_sensitive = val;
+ }
+
+ /// Returns `true` if the value represents sensitive data.
+ ///
+ /// Sensitive data could represent passwords or other data that should not
+ /// be stored on disk or in memory. By marking header values as sensitive,
+ /// components using this crate can be instructed to treat them with special
+ /// care for security reasons. For example, caches can avoid storing
+ /// sensitive values, and HPACK encoders used by HTTP/2.0 implementations
+ /// can choose not to compress them.
+ ///
+ /// Additionally, sensitive values will be masked by the `Debug`
+ /// implementation of `HeaderValue`.
+ ///
+ /// Note that sensitivity is not factored into equality or ordering.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::header::HeaderValue;
+ /// let mut val = HeaderValue::from_static("my secret");
+ ///
+ /// val.set_sensitive(true);
+ /// assert!(val.is_sensitive());
+ ///
+ /// val.set_sensitive(false);
+ /// assert!(!val.is_sensitive());
+ /// ```
+ #[inline]
+ pub fn is_sensitive(&self) -> bool {
+ self.is_sensitive
+ }
+}
+
+impl AsRef<[u8]> for HeaderValue {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.inner.as_ref()
+ }
+}
+
+impl fmt::Debug for HeaderValue {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if self.is_sensitive {
+ f.write_str("Sensitive")
+ } else {
+ f.write_str("\"")?;
+ let mut from = 0;
+ let bytes = self.as_bytes();
+ for (i, &b) in bytes.iter().enumerate() {
+ if !is_visible_ascii(b) || b == b'"' {
+ if from != i {
+ f.write_str(unsafe { str::from_utf8_unchecked(&bytes[from..i]) })?;
+ }
+ if b == b'"' {
+ f.write_str("\\\"")?;
+ } else {
+ write!(f, "\\x{:x}", b)?;
+ }
+ from = i + 1;
+ }
+ }
+
+ f.write_str(unsafe { str::from_utf8_unchecked(&bytes[from..]) })?;
+ f.write_str("\"")
+ }
+ }
+}
+
+impl From<HeaderName> for HeaderValue {
+ #[inline]
+ fn from(h: HeaderName) -> HeaderValue {
+ HeaderValue {
+ inner: h.into_bytes(),
+ is_sensitive: false,
+ }
+ }
+}
+
+macro_rules! from_integers {
+ ($($name:ident: $t:ident => $max_len:expr),*) => {$(
+ impl From<$t> for HeaderValue {
+ fn from(num: $t) -> HeaderValue {
+ let mut buf = if mem::size_of::<BytesMut>() - 1 < $max_len {
+ // On 32bit platforms, BytesMut max inline size
+ // is 15 bytes, but the $max_len could be bigger.
+ //
+ // The likelihood of the number *actually* being
+ // that big is very small, so only allocate
+ // if the number needs that space.
+ //
+ // The largest decimal number in 15 digits:
+ // It wold be 10.pow(15) - 1, but this is a constant
+ // version.
+ if num as u64 > 999_999_999_999_999_999 {
+ BytesMut::with_capacity($max_len)
+ } else {
+ // fits inline...
+ BytesMut::new()
+ }
+ } else {
+ // full value fits inline, so don't allocate!
+ BytesMut::new()
+ };
+ let _ = buf.write_str(::itoa::Buffer::new().format(num));
+ HeaderValue {
+ inner: buf.freeze(),
+ is_sensitive: false,
+ }
+ }
+ }
+
+ #[test]
+ fn $name() {
+ let n: $t = 55;
+ let val = HeaderValue::from(n);
+ assert_eq!(val, &n.to_string());
+
+ let n = ::std::$t::MAX;
+ let val = HeaderValue::from(n);
+ assert_eq!(val, &n.to_string());
+ }
+ )*};
+}
+
+from_integers! {
+ // integer type => maximum decimal length
+
+ // u8 purposely left off... HeaderValue::from(b'3') could be confusing
+ from_u16: u16 => 5,
+ from_i16: i16 => 6,
+ from_u32: u32 => 10,
+ from_i32: i32 => 11,
+ from_u64: u64 => 20,
+ from_i64: i64 => 20
+}
+
+#[cfg(target_pointer_width = "16")]
+from_integers! {
+ from_usize: usize => 5,
+ from_isize: isize => 6
+}
+
+#[cfg(target_pointer_width = "32")]
+from_integers! {
+ from_usize: usize => 10,
+ from_isize: isize => 11
+}
+
+#[cfg(target_pointer_width = "64")]
+from_integers! {
+ from_usize: usize => 20,
+ from_isize: isize => 20
+}
+
+#[cfg(test)]
+mod from_header_name_tests {
+ use super::*;
+ use crate::header::map::HeaderMap;
+ use crate::header::name;
+
+ #[test]
+ fn it_can_insert_header_name_as_header_value() {
+ let mut map = HeaderMap::new();
+ map.insert(name::UPGRADE, name::SEC_WEBSOCKET_PROTOCOL.into());
+ map.insert(
+ name::ACCEPT,
+ name::HeaderName::from_bytes(b"hello-world").unwrap().into(),
+ );
+
+ assert_eq!(
+ map.get(name::UPGRADE).unwrap(),
+ HeaderValue::from_bytes(b"sec-websocket-protocol").unwrap()
+ );
+
+ assert_eq!(
+ map.get(name::ACCEPT).unwrap(),
+ HeaderValue::from_bytes(b"hello-world").unwrap()
+ );
+ }
+}
+
+impl FromStr for HeaderValue {
+ type Err = InvalidHeaderValue;
+
+ #[inline]
+ fn from_str(s: &str) -> Result<HeaderValue, Self::Err> {
+ HeaderValue::from_str(s)
+ }
+}
+
+impl<'a> From<&'a HeaderValue> for HeaderValue {
+ #[inline]
+ fn from(t: &'a HeaderValue) -> Self {
+ t.clone()
+ }
+}
+
+impl<'a> TryFrom<&'a str> for HeaderValue {
+ type Error = InvalidHeaderValue;
+
+ #[inline]
+ fn try_from(t: &'a str) -> Result<Self, Self::Error> {
+ t.parse()
+ }
+}
+
+impl<'a> TryFrom<&'a String> for HeaderValue {
+ type Error = InvalidHeaderValue;
+ #[inline]
+ fn try_from(s: &'a String) -> Result<Self, Self::Error> {
+ Self::from_bytes(s.as_bytes())
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for HeaderValue {
+ type Error = InvalidHeaderValue;
+
+ #[inline]
+ fn try_from(t: &'a [u8]) -> Result<Self, Self::Error> {
+ HeaderValue::from_bytes(t)
+ }
+}
+
+impl TryFrom<String> for HeaderValue {
+ type Error = InvalidHeaderValue;
+
+ #[inline]
+ fn try_from(t: String) -> Result<Self, Self::Error> {
+ HeaderValue::from_shared(t.into())
+ }
+}
+
+impl TryFrom<Vec<u8>> for HeaderValue {
+ type Error = InvalidHeaderValue;
+
+ #[inline]
+ fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error> {
+ HeaderValue::from_shared(vec.into())
+ }
+}
+
+#[cfg(test)]
+mod try_from_header_name_tests {
+ use super::*;
+ use crate::header::name;
+
+ #[test]
+ fn it_converts_using_try_from() {
+ assert_eq!(
+ HeaderValue::try_from(name::UPGRADE).unwrap(),
+ HeaderValue::from_bytes(b"upgrade").unwrap()
+ );
+ }
+}
+
+const fn is_visible_ascii(b: u8) -> bool {
+ b >= 32 && b < 127 || b == b'\t'
+}
+
+#[inline]
+fn is_valid(b: u8) -> bool {
+ b >= 32 && b != 127 || b == b'\t'
+}
+
+impl fmt::Debug for InvalidHeaderValue {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_struct("InvalidHeaderValue")
+ // skip _priv noise
+ .finish()
+ }
+}
+
+impl fmt::Display for InvalidHeaderValue {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("failed to parse header value")
+ }
+}
+
+impl Error for InvalidHeaderValue {}
+
+impl fmt::Display for ToStrError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("failed to convert header to a str")
+ }
+}
+
+impl Error for ToStrError {}
+
+// ===== PartialEq / PartialOrd =====
+
+impl PartialEq for HeaderValue {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ self.inner == other.inner
+ }
+}
+
+impl Eq for HeaderValue {}
+
+impl PartialOrd for HeaderValue {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ self.inner.partial_cmp(&other.inner)
+ }
+}
+
+impl Ord for HeaderValue {
+ #[inline]
+ fn cmp(&self, other: &Self) -> cmp::Ordering {
+ self.inner.cmp(&other.inner)
+ }
+}
+
+impl PartialEq<str> for HeaderValue {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ self.inner == other.as_bytes()
+ }
+}
+
+impl PartialEq<[u8]> for HeaderValue {
+ #[inline]
+ fn eq(&self, other: &[u8]) -> bool {
+ self.inner == other
+ }
+}
+
+impl PartialOrd<str> for HeaderValue {
+ #[inline]
+ fn partial_cmp(&self, other: &str) -> Option<cmp::Ordering> {
+ (*self.inner).partial_cmp(other.as_bytes())
+ }
+}
+
+impl PartialOrd<[u8]> for HeaderValue {
+ #[inline]
+ fn partial_cmp(&self, other: &[u8]) -> Option<cmp::Ordering> {
+ (*self.inner).partial_cmp(other)
+ }
+}
+
+impl PartialEq<HeaderValue> for str {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ *other == *self
+ }
+}
+
+impl PartialEq<HeaderValue> for [u8] {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ *other == *self
+ }
+}
+
+impl PartialOrd<HeaderValue> for str {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ self.as_bytes().partial_cmp(other.as_bytes())
+ }
+}
+
+impl PartialOrd<HeaderValue> for [u8] {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ self.partial_cmp(other.as_bytes())
+ }
+}
+
+impl PartialEq<String> for HeaderValue {
+ #[inline]
+ fn eq(&self, other: &String) -> bool {
+ *self == &other[..]
+ }
+}
+
+impl PartialOrd<String> for HeaderValue {
+ #[inline]
+ fn partial_cmp(&self, other: &String) -> Option<cmp::Ordering> {
+ self.inner.partial_cmp(other.as_bytes())
+ }
+}
+
+impl PartialEq<HeaderValue> for String {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ *other == *self
+ }
+}
+
+impl PartialOrd<HeaderValue> for String {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ self.as_bytes().partial_cmp(other.as_bytes())
+ }
+}
+
+impl<'a> PartialEq<HeaderValue> for &'a HeaderValue {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ **self == *other
+ }
+}
+
+impl<'a> PartialOrd<HeaderValue> for &'a HeaderValue {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ (**self).partial_cmp(other)
+ }
+}
+
+impl<'a, T: ?Sized> PartialEq<&'a T> for HeaderValue
+where
+ HeaderValue: PartialEq<T>,
+{
+ #[inline]
+ fn eq(&self, other: &&'a T) -> bool {
+ *self == **other
+ }
+}
+
+impl<'a, T: ?Sized> PartialOrd<&'a T> for HeaderValue
+where
+ HeaderValue: PartialOrd<T>,
+{
+ #[inline]
+ fn partial_cmp(&self, other: &&'a T) -> Option<cmp::Ordering> {
+ self.partial_cmp(*other)
+ }
+}
+
+impl<'a> PartialEq<HeaderValue> for &'a str {
+ #[inline]
+ fn eq(&self, other: &HeaderValue) -> bool {
+ *other == *self
+ }
+}
+
+impl<'a> PartialOrd<HeaderValue> for &'a str {
+ #[inline]
+ fn partial_cmp(&self, other: &HeaderValue) -> Option<cmp::Ordering> {
+ self.as_bytes().partial_cmp(other.as_bytes())
+ }
+}
+
+#[test]
+fn test_try_from() {
+ HeaderValue::try_from(vec![127]).unwrap_err();
+}
+
+#[test]
+fn test_debug() {
+ let cases = &[
+ ("hello", "\"hello\""),
+ ("hello \"world\"", "\"hello \\\"world\\\"\""),
+ ("\u{7FFF}hello", "\"\\xe7\\xbf\\xbfhello\""),
+ ];
+
+ for &(value, expected) in cases {
+ let val = HeaderValue::from_bytes(value.as_bytes()).unwrap();
+ let actual = format!("{:?}", val);
+ assert_eq!(expected, actual);
+ }
+
+ let mut sensitive = HeaderValue::from_static("password");
+ sensitive.set_sensitive(true);
+ assert_eq!("Sensitive", format!("{:?}", sensitive));
+}
diff --git a/extra_versions/crates/http/src/lib.rs b/extra_versions/crates/http/src/lib.rs
new file mode 100644
index 0000000..d5b3e2d
--- /dev/null
+++ b/extra_versions/crates/http/src/lib.rs
@@ -0,0 +1,211 @@
+#![doc(html_root_url = "https://docs.rs/http/0.2.11")]
+
+//! A general purpose library of common HTTP types
+//!
+//! This crate is a general purpose library for common types found when working
+//! with the HTTP protocol. You'll find `Request` and `Response` types for
+//! working as either a client or a server as well as all of their components.
+//! Notably you'll find `Uri` for what a `Request` is requesting, a `Method`
+//! for how it's being requested, a `StatusCode` for what sort of response came
+//! back, a `Version` for how this was communicated, and
+//! `HeaderName`/`HeaderValue` definitions to get grouped in a `HeaderMap` to
+//! work with request/response headers.
+//!
+//! You will notably *not* find an implementation of sending requests or
+//! spinning up a server in this crate. It's intended that this crate is the
+//! "standard library" for HTTP clients and servers without dictating any
+//! particular implementation. Note that this crate is still early on in its
+//! lifecycle so the support libraries that integrate with the `http` crate are
+//! a work in progress! Stay tuned and we'll be sure to highlight crates here
+//! in the future.
+//!
+//! ## Requests and Responses
+//!
+//! Perhaps the main two types in this crate are the `Request` and `Response`
+//! types. A `Request` could either be constructed to get sent off as a client
+//! or it can also be received to generate a `Response` for a server. Similarly
+//! as a client a `Response` is what you get after sending a `Request`, whereas
+//! on a server you'll be manufacturing a `Response` to send back to the client.
+//!
+//! Each type has a number of accessors for the component fields. For as a
+//! server you might want to inspect a requests URI to dispatch it:
+//!
+//! ```
+//! use http::{Request, Response};
+//!
+//! fn response(req: Request<()>) -> http::Result<Response<()>> {
+//! match req.uri().path() {
+//! "/" => index(req),
+//! "/foo" => foo(req),
+//! "/bar" => bar(req),
+//! _ => not_found(req),
+//! }
+//! }
+//! # fn index(_req: Request<()>) -> http::Result<Response<()>> { panic!() }
+//! # fn foo(_req: Request<()>) -> http::Result<Response<()>> { panic!() }
+//! # fn bar(_req: Request<()>) -> http::Result<Response<()>> { panic!() }
+//! # fn not_found(_req: Request<()>) -> http::Result<Response<()>> { panic!() }
+//! ```
+//!
+//! On a `Request` you'll also find accessors like `method` to return a
+//! `Method` and `headers` to inspect the various headers. A `Response`
+//! has similar methods for headers, the status code, etc.
+//!
+//! In addition to getters, request/response types also have mutable accessors
+//! to edit the request/response:
+//!
+//! ```
+//! use http::{HeaderValue, Response, StatusCode};
+//! use http::header::CONTENT_TYPE;
+//!
+//! fn add_server_headers<T>(response: &mut Response<T>) {
+//! response.headers_mut()
+//! .insert(CONTENT_TYPE, HeaderValue::from_static("text/html"));
+//! *response.status_mut() = StatusCode::OK;
+//! }
+//! ```
+//!
+//! And finally, one of the most important aspects of requests/responses, the
+//! body! The `Request` and `Response` types in this crate are *generic* in
+//! what their body is. This allows downstream libraries to use different
+//! representations such as `Request<Vec<u8>>`, `Response<impl Read>`,
+//! `Request<impl Stream<Item = Vec<u8>, Error = _>>`, or even
+//! `Response<MyCustomType>` where the custom type was deserialized from JSON.
+//!
+//! The body representation is intentionally flexible to give downstream
+//! libraries maximal flexibility in implementing the body as appropriate.
+//!
+//! ## HTTP Headers
+//!
+//! Another major piece of functionality in this library is HTTP header
+//! interpretation and generation. The `HeaderName` type serves as a way to
+//! define header *names*, or what's to the left of the colon. A `HeaderValue`
+//! conversely is the header *value*, or what's to the right of a colon.
+//!
+//! For example, if you have an HTTP request that looks like:
+//!
+//! ```http
+//! GET /foo HTTP/1.1
+//! Accept: text/html
+//! ```
+//!
+//! Then `"Accept"` is a `HeaderName` while `"text/html"` is a `HeaderValue`.
+//! Each of these is a dedicated type to allow for a number of interesting
+//! optimizations and to also encode the static guarantees of each type. For
+//! example a `HeaderName` is always a valid `&str`, but a `HeaderValue` may
+//! not be valid UTF-8.
+//!
+//! The most common header names are already defined for you as constant values
+//! in the `header` module of this crate. For example:
+//!
+//! ```
+//! use http::header::{self, HeaderName};
+//!
+//! let name: HeaderName = header::ACCEPT;
+//! assert_eq!(name.as_str(), "accept");
+//! ```
+//!
+//! You can, however, also parse header names from strings:
+//!
+//! ```
+//! use http::header::{self, HeaderName};
+//!
+//! let name = "Accept".parse::<HeaderName>().unwrap();
+//! assert_eq!(name, header::ACCEPT);
+//! ```
+//!
+//! Header values can be created from string literals through the `from_static`
+//! function:
+//!
+//! ```
+//! use http::HeaderValue;
+//!
+//! let value = HeaderValue::from_static("text/html");
+//! assert_eq!(value.as_bytes(), b"text/html");
+//! ```
+//!
+//! And header values can also be parsed like names:
+//!
+//! ```
+//! use http::HeaderValue;
+//!
+//! let value = "text/html";
+//! let value = value.parse::<HeaderValue>().unwrap();
+//! ```
+//!
+//! Most HTTP requests and responses tend to come with more than one header, so
+//! it's not too useful to just work with names and values only! This crate also
+//! provides a `HeaderMap` type which is a specialized hash map for keys as
+//! `HeaderName` and generic values. This type, like header names, is optimized
+//! for common usage but should continue to scale with your needs over time.
+//!
+//! # URIs
+//!
+//! Each HTTP `Request` has an associated URI with it. This may just be a path
+//! like `/index.html` but it could also be an absolute URL such as
+//! `https://www.rust-lang.org/index.html`. A `URI` has a number of accessors to
+//! interpret it:
+//!
+//! ```
+//! use http::Uri;
+//! use http::uri::Scheme;
+//!
+//! let uri = "https://www.rust-lang.org/index.html".parse::<Uri>().unwrap();
+//!
+//! assert_eq!(uri.scheme(), Some(&Scheme::HTTPS));
+//! assert_eq!(uri.host(), Some("www.rust-lang.org"));
+//! assert_eq!(uri.path(), "/index.html");
+//! assert_eq!(uri.query(), None);
+//! ```
+
+#![deny(missing_docs, missing_debug_implementations)]
+
+#[cfg(test)]
+#[macro_use]
+extern crate doc_comment;
+
+#[cfg(test)]
+doctest!("../README.md");
+
+#[macro_use]
+mod convert;
+
+pub mod header;
+pub mod method;
+pub mod request;
+pub mod response;
+pub mod status;
+pub mod uri;
+pub mod version;
+
+mod byte_str;
+mod error;
+mod extensions;
+
+pub use crate::error::{Error, Result};
+pub use crate::extensions::Extensions;
+#[doc(no_inline)]
+pub use crate::header::{HeaderMap, HeaderName, HeaderValue};
+pub use crate::method::Method;
+pub use crate::request::Request;
+pub use crate::response::Response;
+pub use crate::status::StatusCode;
+pub use crate::uri::Uri;
+pub use crate::version::Version;
+
+fn _assert_types() {
+ fn assert_send<T: Send>() {}
+ fn assert_sync<T: Sync>() {}
+
+ assert_send::<Request<()>>();
+ assert_send::<Response<()>>();
+
+ assert_sync::<Request<()>>();
+ assert_sync::<Response<()>>();
+}
+
+mod sealed {
+ /// Private trait to this crate to prevent traits from being implemented in
+ /// downstream crates.
+ pub trait Sealed {}
+}
diff --git a/extra_versions/crates/http/src/method.rs b/extra_versions/crates/http/src/method.rs
new file mode 100644
index 0000000..04261a3
--- /dev/null
+++ b/extra_versions/crates/http/src/method.rs
@@ -0,0 +1,473 @@
+//! The HTTP request method
+//!
+//! This module contains HTTP-method related structs and errors and such. The
+//! main type of this module, `Method`, is also reexported at the root of the
+//! crate as `http::Method` and is intended for import through that location
+//! primarily.
+//!
+//! # Examples
+//!
+//! ```
+//! use http::Method;
+//!
+//! assert_eq!(Method::GET, Method::from_bytes(b"GET").unwrap());
+//! assert!(Method::GET.is_idempotent());
+//! assert_eq!(Method::POST.as_str(), "POST");
+//! ```
+
+use self::Inner::*;
+use self::extension::{InlineExtension, AllocatedExtension};
+
+use std::convert::AsRef;
+use std::error::Error;
+use std::str::FromStr;
+use std::convert::TryFrom;
+use std::{fmt, str};
+
+/// The Request Method (VERB)
+///
+/// This type also contains constants for a number of common HTTP methods such
+/// as GET, POST, etc.
+///
+/// Currently includes 8 variants representing the 8 methods defined in
+/// [RFC 7230](https://tools.ietf.org/html/rfc7231#section-4.1), plus PATCH,
+/// and an Extension variant for all extensions.
+///
+/// # Examples
+///
+/// ```
+/// use http::Method;
+///
+/// assert_eq!(Method::GET, Method::from_bytes(b"GET").unwrap());
+/// assert!(Method::GET.is_idempotent());
+/// assert_eq!(Method::POST.as_str(), "POST");
+/// ```
+#[derive(Clone, PartialEq, Eq, Hash)]
+pub struct Method(Inner);
+
+/// A possible error value when converting `Method` from bytes.
+pub struct InvalidMethod {
+ _priv: (),
+}
+
+#[derive(Clone, PartialEq, Eq, Hash)]
+enum Inner {
+ Options,
+ Get,
+ Post,
+ Put,
+ Delete,
+ Head,
+ Trace,
+ Connect,
+ Patch,
+ // If the extension is short enough, store it inline
+ ExtensionInline(InlineExtension),
+ // Otherwise, allocate it
+ ExtensionAllocated(AllocatedExtension),
+}
+
+
+impl Method {
+ /// GET
+ pub const GET: Method = Method(Get);
+
+ /// POST
+ pub const POST: Method = Method(Post);
+
+ /// PUT
+ pub const PUT: Method = Method(Put);
+
+ /// DELETE
+ pub const DELETE: Method = Method(Delete);
+
+ /// HEAD
+ pub const HEAD: Method = Method(Head);
+
+ /// OPTIONS
+ pub const OPTIONS: Method = Method(Options);
+
+ /// CONNECT
+ pub const CONNECT: Method = Method(Connect);
+
+ /// PATCH
+ pub const PATCH: Method = Method(Patch);
+
+ /// TRACE
+ pub const TRACE: Method = Method(Trace);
+
+ /// Converts a slice of bytes to an HTTP method.
+ pub fn from_bytes(src: &[u8]) -> Result<Method, InvalidMethod> {
+ match src.len() {
+ 0 => Err(InvalidMethod::new()),
+ 3 => match src {
+ b"GET" => Ok(Method(Get)),
+ b"PUT" => Ok(Method(Put)),
+ _ => Method::extension_inline(src),
+ },
+ 4 => match src {
+ b"POST" => Ok(Method(Post)),
+ b"HEAD" => Ok(Method(Head)),
+ _ => Method::extension_inline(src),
+ },
+ 5 => match src {
+ b"PATCH" => Ok(Method(Patch)),
+ b"TRACE" => Ok(Method(Trace)),
+ _ => Method::extension_inline(src),
+ },
+ 6 => match src {
+ b"DELETE" => Ok(Method(Delete)),
+ _ => Method::extension_inline(src),
+ },
+ 7 => match src {
+ b"OPTIONS" => Ok(Method(Options)),
+ b"CONNECT" => Ok(Method(Connect)),
+ _ => Method::extension_inline(src),
+ },
+ _ => {
+ if src.len() < InlineExtension::MAX {
+ Method::extension_inline(src)
+ } else {
+ let allocated = AllocatedExtension::new(src)?;
+
+ Ok(Method(ExtensionAllocated(allocated)))
+ }
+ }
+ }
+ }
+
+ fn extension_inline(src: &[u8]) -> Result<Method, InvalidMethod> {
+ let inline = InlineExtension::new(src)?;
+
+ Ok(Method(ExtensionInline(inline)))
+ }
+
+ /// Whether a method is considered "safe", meaning the request is
+ /// essentially read-only.
+ ///
+ /// See [the spec](https://tools.ietf.org/html/rfc7231#section-4.2.1)
+ /// for more words.
+ pub fn is_safe(&self) -> bool {
+ match self.0 {
+ Get | Head | Options | Trace => true,
+ _ => false,
+ }
+ }
+
+ /// Whether a method is considered "idempotent", meaning the request has
+ /// the same result if executed multiple times.
+ ///
+ /// See [the spec](https://tools.ietf.org/html/rfc7231#section-4.2.2) for
+ /// more words.
+ pub fn is_idempotent(&self) -> bool {
+ match self.0 {
+ Put | Delete => true,
+ _ => self.is_safe(),
+ }
+ }
+
+ /// Return a &str representation of the HTTP method
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ match self.0 {
+ Options => "OPTIONS",
+ Get => "GET",
+ Post => "POST",
+ Put => "PUT",
+ Delete => "DELETE",
+ Head => "HEAD",
+ Trace => "TRACE",
+ Connect => "CONNECT",
+ Patch => "PATCH",
+ ExtensionInline(ref inline) => inline.as_str(),
+ ExtensionAllocated(ref allocated) => allocated.as_str(),
+ }
+ }
+}
+
+impl AsRef<str> for Method {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'a> PartialEq<&'a Method> for Method {
+ #[inline]
+ fn eq(&self, other: &&'a Method) -> bool {
+ self == *other
+ }
+}
+
+impl<'a> PartialEq<Method> for &'a Method {
+ #[inline]
+ fn eq(&self, other: &Method) -> bool {
+ *self == other
+ }
+}
+
+impl PartialEq<str> for Method {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ self.as_ref() == other
+ }
+}
+
+impl PartialEq<Method> for str {
+ #[inline]
+ fn eq(&self, other: &Method) -> bool {
+ self == other.as_ref()
+ }
+}
+
+impl<'a> PartialEq<&'a str> for Method {
+ #[inline]
+ fn eq(&self, other: &&'a str) -> bool {
+ self.as_ref() == *other
+ }
+}
+
+impl<'a> PartialEq<Method> for &'a str {
+ #[inline]
+ fn eq(&self, other: &Method) -> bool {
+ *self == other.as_ref()
+ }
+}
+
+impl fmt::Debug for Method {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(self.as_ref())
+ }
+}
+
+impl fmt::Display for Method {
+ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt.write_str(self.as_ref())
+ }
+}
+
+impl Default for Method {
+ #[inline]
+ fn default() -> Method {
+ Method::GET
+ }
+}
+
+impl<'a> From<&'a Method> for Method {
+ #[inline]
+ fn from(t: &'a Method) -> Self {
+ t.clone()
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for Method {
+ type Error = InvalidMethod;
+
+ #[inline]
+ fn try_from(t: &'a [u8]) -> Result<Self, Self::Error> {
+ Method::from_bytes(t)
+ }
+}
+
+impl<'a> TryFrom<&'a str> for Method {
+ type Error = InvalidMethod;
+
+ #[inline]
+ fn try_from(t: &'a str) -> Result<Self, Self::Error> {
+ TryFrom::try_from(t.as_bytes())
+ }
+}
+
+impl FromStr for Method {
+ type Err = InvalidMethod;
+
+ #[inline]
+ fn from_str(t: &str) -> Result<Self, Self::Err> {
+ TryFrom::try_from(t)
+ }
+}
+
+impl InvalidMethod {
+ fn new() -> InvalidMethod {
+ InvalidMethod { _priv: () }
+ }
+}
+
+impl fmt::Debug for InvalidMethod {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_struct("InvalidMethod")
+ // skip _priv noise
+ .finish()
+ }
+}
+
+impl fmt::Display for InvalidMethod {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("invalid HTTP method")
+ }
+}
+
+impl Error for InvalidMethod {}
+
+mod extension {
+ use super::InvalidMethod;
+ use std::str;
+
+ #[derive(Clone, PartialEq, Eq, Hash)]
+ // Invariant: the first self.1 bytes of self.0 are valid UTF-8.
+ pub struct InlineExtension([u8; InlineExtension::MAX], u8);
+
+ #[derive(Clone, PartialEq, Eq, Hash)]
+ // Invariant: self.0 contains valid UTF-8.
+ pub struct AllocatedExtension(Box<[u8]>);
+
+ impl InlineExtension {
+ // Method::from_bytes() assumes this is at least 7
+ pub const MAX: usize = 15;
+
+ pub fn new(src: &[u8]) -> Result<InlineExtension, InvalidMethod> {
+ let mut data: [u8; InlineExtension::MAX] = Default::default();
+
+ write_checked(src, &mut data)?;
+
+ // Invariant: write_checked ensures that the first src.len() bytes
+ // of data are valid UTF-8.
+ Ok(InlineExtension(data, src.len() as u8))
+ }
+
+ pub fn as_str(&self) -> &str {
+ let InlineExtension(ref data, len) = self;
+ // Safety: the invariant of InlineExtension ensures that the first
+ // len bytes of data contain valid UTF-8.
+ unsafe {str::from_utf8_unchecked(&data[..*len as usize])}
+ }
+ }
+
+ impl AllocatedExtension {
+ pub fn new(src: &[u8]) -> Result<AllocatedExtension, InvalidMethod> {
+ let mut data: Vec<u8> = vec![0; src.len()];
+
+ write_checked(src, &mut data)?;
+
+ // Invariant: data is exactly src.len() long and write_checked
+ // ensures that the first src.len() bytes of data are valid UTF-8.
+ Ok(AllocatedExtension(data.into_boxed_slice()))
+ }
+
+ pub fn as_str(&self) -> &str {
+ // Safety: the invariant of AllocatedExtension ensures that self.0
+ // contains valid UTF-8.
+ unsafe {str::from_utf8_unchecked(&self.0)}
+ }
+ }
+
+ // From the HTTP spec section 5.1.1, the HTTP method is case-sensitive and can
+ // contain the following characters:
+ //
+ // ```
+ // method = token
+ // token = 1*tchar
+ // tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." /
+ // "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA
+ // ```
+ //
+ // https://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01#Method
+ //
+ // Note that this definition means that any &[u8] that consists solely of valid
+ // characters is also valid UTF-8 because the valid method characters are a
+ // subset of the valid 1 byte UTF-8 encoding.
+ const METHOD_CHARS: [u8; 256] = [
+ // 0 1 2 3 4 5 6 7 8 9
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 1x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 2x
+ b'\0', b'\0', b'\0', b'!', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 3x
+ b'\0', b'\0', b'*', b'+', b'\0', b'-', b'.', b'\0', b'0', b'1', // 4x
+ b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b'\0', b'\0', // 5x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'A', b'B', b'C', b'D', b'E', // 6x
+ b'F', b'G', b'H', b'I', b'J', b'K', b'L', b'M', b'N', b'O', // 7x
+ b'P', b'Q', b'R', b'S', b'T', b'U', b'V', b'W', b'X', b'Y', // 8x
+ b'Z', b'\0', b'\0', b'\0', b'^', b'_', b'`', b'a', b'b', b'c', // 9x
+ b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', // 10x
+ b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', // 11x
+ b'x', b'y', b'z', b'\0', b'|', b'\0', b'~', b'\0', b'\0', b'\0', // 12x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 13x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 14x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 15x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 16x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 17x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 18x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 19x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 20x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 21x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 22x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 23x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', b'\0', // 24x
+ b'\0', b'\0', b'\0', b'\0', b'\0', b'\0' // 25x
+ ];
+
+ // write_checked ensures (among other things) that the first src.len() bytes
+ // of dst are valid UTF-8
+ fn write_checked(src: &[u8], dst: &mut [u8]) -> Result<(), InvalidMethod> {
+ for (i, &b) in src.iter().enumerate() {
+ let b = METHOD_CHARS[b as usize];
+
+ if b == 0 {
+ return Err(InvalidMethod::new());
+ }
+
+ dst[i] = b;
+ }
+
+ Ok(())
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn test_method_eq() {
+ assert_eq!(Method::GET, Method::GET);
+ assert_eq!(Method::GET, "GET");
+ assert_eq!(&Method::GET, "GET");
+
+ assert_eq!("GET", Method::GET);
+ assert_eq!("GET", &Method::GET);
+
+ assert_eq!(&Method::GET, Method::GET);
+ assert_eq!(Method::GET, &Method::GET);
+ }
+
+ #[test]
+ fn test_invalid_method() {
+ assert!(Method::from_str("").is_err());
+ assert!(Method::from_bytes(b"").is_err());
+ assert!(Method::from_bytes(&[0xC0]).is_err()); // invalid utf-8
+ assert!(Method::from_bytes(&[0x10]).is_err()); // invalid method characters
+ }
+
+ #[test]
+ fn test_is_idempotent() {
+ assert!(Method::OPTIONS.is_idempotent());
+ assert!(Method::GET.is_idempotent());
+ assert!(Method::PUT.is_idempotent());
+ assert!(Method::DELETE.is_idempotent());
+ assert!(Method::HEAD.is_idempotent());
+ assert!(Method::TRACE.is_idempotent());
+
+ assert!(!Method::POST.is_idempotent());
+ assert!(!Method::CONNECT.is_idempotent());
+ assert!(!Method::PATCH.is_idempotent());
+ }
+
+ #[test]
+ fn test_extension_method() {
+ assert_eq!(Method::from_str("WOW").unwrap(), "WOW");
+ assert_eq!(Method::from_str("wOw!!").unwrap(), "wOw!!");
+
+ let long_method = "This_is_a_very_long_method.It_is_valid_but_unlikely.";
+ assert_eq!(Method::from_str(&long_method).unwrap(), long_method);
+ }
+}
diff --git a/extra_versions/crates/http/src/request.rs b/extra_versions/crates/http/src/request.rs
new file mode 100644
index 0000000..9940ae0
--- /dev/null
+++ b/extra_versions/crates/http/src/request.rs
@@ -0,0 +1,1087 @@
+//! HTTP request types.
+//!
+//! This module contains structs related to HTTP requests, notably the
+//! `Request` type itself as well as a builder to create requests. Typically
+//! you'll import the `http::Request` type rather than reaching into this
+//! module itself.
+//!
+//! # Examples
+//!
+//! Creating a `Request` to send
+//!
+//! ```no_run
+//! use http::{Request, Response};
+//!
+//! let mut request = Request::builder()
+//! .uri("https://www.rust-lang.org/")
+//! .header("User-Agent", "my-awesome-agent/1.0");
+//!
+//! if needs_awesome_header() {
+//! request = request.header("Awesome", "yes");
+//! }
+//!
+//! let response = send(request.body(()).unwrap());
+//!
+//! # fn needs_awesome_header() -> bool {
+//! # true
+//! # }
+//! #
+//! fn send(req: Request<()>) -> Response<()> {
+//! // ...
+//! # panic!()
+//! }
+//! ```
+//!
+//! Inspecting a request to see what was sent.
+//!
+//! ```
+//! use http::{Request, Response, StatusCode};
+//!
+//! fn respond_to(req: Request<()>) -> http::Result<Response<()>> {
+//! if req.uri() != "/awesome-url" {
+//! return Response::builder()
+//! .status(StatusCode::NOT_FOUND)
+//! .body(())
+//! }
+//!
+//! let has_awesome_header = req.headers().contains_key("Awesome");
+//! let body = req.body();
+//!
+//! // ...
+//! # panic!()
+//! }
+//! ```
+
+use std::any::Any;
+use std::convert::{TryFrom};
+use std::fmt;
+
+use crate::header::{HeaderMap, HeaderName, HeaderValue};
+use crate::method::Method;
+use crate::version::Version;
+use crate::{Extensions, Result, Uri};
+
+/// Represents an HTTP request.
+///
+/// An HTTP request consists of a head and a potentially optional body. The body
+/// component is generic, enabling arbitrary types to represent the HTTP body.
+/// For example, the body could be `Vec<u8>`, a `Stream` of byte chunks, or a
+/// value that has been deserialized.
+///
+/// # Examples
+///
+/// Creating a `Request` to send
+///
+/// ```no_run
+/// use http::{Request, Response};
+///
+/// let mut request = Request::builder()
+/// .uri("https://www.rust-lang.org/")
+/// .header("User-Agent", "my-awesome-agent/1.0");
+///
+/// if needs_awesome_header() {
+/// request = request.header("Awesome", "yes");
+/// }
+///
+/// let response = send(request.body(()).unwrap());
+///
+/// # fn needs_awesome_header() -> bool {
+/// # true
+/// # }
+/// #
+/// fn send(req: Request<()>) -> Response<()> {
+/// // ...
+/// # panic!()
+/// }
+/// ```
+///
+/// Inspecting a request to see what was sent.
+///
+/// ```
+/// use http::{Request, Response, StatusCode};
+///
+/// fn respond_to(req: Request<()>) -> http::Result<Response<()>> {
+/// if req.uri() != "/awesome-url" {
+/// return Response::builder()
+/// .status(StatusCode::NOT_FOUND)
+/// .body(())
+/// }
+///
+/// let has_awesome_header = req.headers().contains_key("Awesome");
+/// let body = req.body();
+///
+/// // ...
+/// # panic!()
+/// }
+/// ```
+///
+/// Deserialize a request of bytes via json:
+///
+/// ```
+/// # extern crate serde;
+/// # extern crate serde_json;
+/// # extern crate http;
+/// use http::Request;
+/// use serde::de;
+///
+/// fn deserialize<T>(req: Request<Vec<u8>>) -> serde_json::Result<Request<T>>
+/// where for<'de> T: de::Deserialize<'de>,
+/// {
+/// let (parts, body) = req.into_parts();
+/// let body = serde_json::from_slice(&body)?;
+/// Ok(Request::from_parts(parts, body))
+/// }
+/// #
+/// # fn main() {}
+/// ```
+///
+/// Or alternatively, serialize the body of a request to json
+///
+/// ```
+/// # extern crate serde;
+/// # extern crate serde_json;
+/// # extern crate http;
+/// use http::Request;
+/// use serde::ser;
+///
+/// fn serialize<T>(req: Request<T>) -> serde_json::Result<Request<Vec<u8>>>
+/// where T: ser::Serialize,
+/// {
+/// let (parts, body) = req.into_parts();
+/// let body = serde_json::to_vec(&body)?;
+/// Ok(Request::from_parts(parts, body))
+/// }
+/// #
+/// # fn main() {}
+/// ```
+pub struct Request<T> {
+ head: Parts,
+ body: T,
+}
+
+/// Component parts of an HTTP `Request`
+///
+/// The HTTP request head consists of a method, uri, version, and a set of
+/// header fields.
+pub struct Parts {
+ /// The request's method
+ pub method: Method,
+
+ /// The request's URI
+ pub uri: Uri,
+
+ /// The request's version
+ pub version: Version,
+
+ /// The request's headers
+ pub headers: HeaderMap<HeaderValue>,
+
+ /// The request's extensions
+ pub extensions: Extensions,
+
+ _priv: (),
+}
+
+/// An HTTP request builder
+///
+/// This type can be used to construct an instance or `Request`
+/// through a builder-like pattern.
+#[derive(Debug)]
+pub struct Builder {
+ inner: Result<Parts>,
+}
+
+impl Request<()> {
+ /// Creates a new builder-style object to manufacture a `Request`
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request = Request::builder()
+ /// .method("GET")
+ /// .uri("https://www.rust-lang.org/")
+ /// .header("X-Custom-Foo", "Bar")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ #[inline]
+ pub fn builder() -> Builder {
+ Builder::new()
+ }
+
+ /// Creates a new `Builder` initialized with a GET method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::get("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn get<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::GET).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a PUT method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::put("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn put<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::PUT).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a POST method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::post("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn post<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::POST).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a DELETE method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::delete("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn delete<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::DELETE).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with an OPTIONS method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::options("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// # assert_eq!(*request.method(), Method::OPTIONS);
+ /// ```
+ pub fn options<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::OPTIONS).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a HEAD method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::head("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn head<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::HEAD).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a CONNECT method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::connect("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn connect<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+
+ {
+ Builder::new().method(Method::CONNECT).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a PATCH method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::patch("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn patch<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ Builder::new().method(Method::PATCH).uri(uri)
+ }
+
+ /// Creates a new `Builder` initialized with a TRACE method and the given URI.
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Request`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::trace("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn trace<T>(uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ Builder::new().method(Method::TRACE).uri(uri)
+ }
+}
+
+impl<T> Request<T> {
+ /// Creates a new blank `Request` with the body
+ ///
+ /// The component parts of this request will be set to their default, e.g.
+ /// the GET method, no headers, etc.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request = Request::new("hello world");
+ ///
+ /// assert_eq!(*request.method(), Method::GET);
+ /// assert_eq!(*request.body(), "hello world");
+ /// ```
+ #[inline]
+ pub fn new(body: T) -> Request<T> {
+ Request {
+ head: Parts::new(),
+ body: body,
+ }
+ }
+
+ /// Creates a new `Request` with the given components parts and body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request = Request::new("hello world");
+ /// let (mut parts, body) = request.into_parts();
+ /// parts.method = Method::POST;
+ ///
+ /// let request = Request::from_parts(parts, body);
+ /// ```
+ #[inline]
+ pub fn from_parts(parts: Parts, body: T) -> Request<T> {
+ Request {
+ head: parts,
+ body: body,
+ }
+ }
+
+ /// Returns a reference to the associated HTTP method.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<()> = Request::default();
+ /// assert_eq!(*request.method(), Method::GET);
+ /// ```
+ #[inline]
+ pub fn method(&self) -> &Method {
+ &self.head.method
+ }
+
+ /// Returns a mutable reference to the associated HTTP method.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut request: Request<()> = Request::default();
+ /// *request.method_mut() = Method::PUT;
+ /// assert_eq!(*request.method(), Method::PUT);
+ /// ```
+ #[inline]
+ pub fn method_mut(&mut self) -> &mut Method {
+ &mut self.head.method
+ }
+
+ /// Returns a reference to the associated URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<()> = Request::default();
+ /// assert_eq!(*request.uri(), *"/");
+ /// ```
+ #[inline]
+ pub fn uri(&self) -> &Uri {
+ &self.head.uri
+ }
+
+ /// Returns a mutable reference to the associated URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut request: Request<()> = Request::default();
+ /// *request.uri_mut() = "/hello".parse().unwrap();
+ /// assert_eq!(*request.uri(), *"/hello");
+ /// ```
+ #[inline]
+ pub fn uri_mut(&mut self) -> &mut Uri {
+ &mut self.head.uri
+ }
+
+ /// Returns the associated version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<()> = Request::default();
+ /// assert_eq!(request.version(), Version::HTTP_11);
+ /// ```
+ #[inline]
+ pub fn version(&self) -> Version {
+ self.head.version
+ }
+
+ /// Returns a mutable reference to the associated version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut request: Request<()> = Request::default();
+ /// *request.version_mut() = Version::HTTP_2;
+ /// assert_eq!(request.version(), Version::HTTP_2);
+ /// ```
+ #[inline]
+ pub fn version_mut(&mut self) -> &mut Version {
+ &mut self.head.version
+ }
+
+ /// Returns a reference to the associated header field map.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<()> = Request::default();
+ /// assert!(request.headers().is_empty());
+ /// ```
+ #[inline]
+ pub fn headers(&self) -> &HeaderMap<HeaderValue> {
+ &self.head.headers
+ }
+
+ /// Returns a mutable reference to the associated header field map.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::*;
+ /// let mut request: Request<()> = Request::default();
+ /// request.headers_mut().insert(HOST, HeaderValue::from_static("world"));
+ /// assert!(!request.headers().is_empty());
+ /// ```
+ #[inline]
+ pub fn headers_mut(&mut self) -> &mut HeaderMap<HeaderValue> {
+ &mut self.head.headers
+ }
+
+ /// Returns a reference to the associated extensions.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<()> = Request::default();
+ /// assert!(request.extensions().get::<i32>().is_none());
+ /// ```
+ #[inline]
+ pub fn extensions(&self) -> &Extensions {
+ &self.head.extensions
+ }
+
+ /// Returns a mutable reference to the associated extensions.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::*;
+ /// let mut request: Request<()> = Request::default();
+ /// request.extensions_mut().insert("hello");
+ /// assert_eq!(request.extensions().get(), Some(&"hello"));
+ /// ```
+ #[inline]
+ pub fn extensions_mut(&mut self) -> &mut Extensions {
+ &mut self.head.extensions
+ }
+
+ /// Returns a reference to the associated HTTP body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request: Request<String> = Request::default();
+ /// assert!(request.body().is_empty());
+ /// ```
+ #[inline]
+ pub fn body(&self) -> &T {
+ &self.body
+ }
+
+ /// Returns a mutable reference to the associated HTTP body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut request: Request<String> = Request::default();
+ /// request.body_mut().push_str("hello world");
+ /// assert!(!request.body().is_empty());
+ /// ```
+ #[inline]
+ pub fn body_mut(&mut self) -> &mut T {
+ &mut self.body
+ }
+
+ /// Consumes the request, returning just the body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::Request;
+ /// let request = Request::new(10);
+ /// let body = request.into_body();
+ /// assert_eq!(body, 10);
+ /// ```
+ #[inline]
+ pub fn into_body(self) -> T {
+ self.body
+ }
+
+ /// Consumes the request returning the head and body parts.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request = Request::new(());
+ /// let (parts, body) = request.into_parts();
+ /// assert_eq!(parts.method, Method::GET);
+ /// ```
+ #[inline]
+ pub fn into_parts(self) -> (Parts, T) {
+ (self.head, self.body)
+ }
+
+ /// Consumes the request returning a new request with body mapped to the
+ /// return type of the passed in function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let request = Request::builder().body("some string").unwrap();
+ /// let mapped_request: Request<&[u8]> = request.map(|b| {
+ /// assert_eq!(b, "some string");
+ /// b.as_bytes()
+ /// });
+ /// assert_eq!(mapped_request.body(), &"some string".as_bytes());
+ /// ```
+ #[inline]
+ pub fn map<F, U>(self, f: F) -> Request<U>
+ where
+ F: FnOnce(T) -> U,
+ {
+ Request {
+ body: f(self.body),
+ head: self.head,
+ }
+ }
+}
+
+impl<T: Default> Default for Request<T> {
+ fn default() -> Request<T> {
+ Request::new(T::default())
+ }
+}
+
+impl<T: fmt::Debug> fmt::Debug for Request<T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Request")
+ .field("method", self.method())
+ .field("uri", self.uri())
+ .field("version", &self.version())
+ .field("headers", self.headers())
+ // omits Extensions because not useful
+ .field("body", self.body())
+ .finish()
+ }
+}
+
+impl Parts {
+ /// Creates a new default instance of `Parts`
+ fn new() -> Parts {
+ Parts {
+ method: Method::default(),
+ uri: Uri::default(),
+ version: Version::default(),
+ headers: HeaderMap::default(),
+ extensions: Extensions::default(),
+ _priv: (),
+ }
+ }
+}
+
+impl fmt::Debug for Parts {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Parts")
+ .field("method", &self.method)
+ .field("uri", &self.uri)
+ .field("version", &self.version)
+ .field("headers", &self.headers)
+ // omits Extensions because not useful
+ // omits _priv because not useful
+ .finish()
+ }
+}
+
+impl Builder {
+ /// Creates a new default instance of `Builder` to construct a `Request`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let req = request::Builder::new()
+ /// .method("POST")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ #[inline]
+ pub fn new() -> Builder {
+ Builder::default()
+ }
+
+ /// Set the HTTP method for this request.
+ ///
+ /// By default this is `GET`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let req = Request::builder()
+ /// .method("POST")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn method<T>(self, method: T) -> Builder
+ where
+ Method: TryFrom<T>,
+ <Method as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.and_then(move |mut head| {
+ let method = TryFrom::try_from(method).map_err(Into::into)?;
+ head.method = method;
+ Ok(head)
+ })
+ }
+
+ /// Get the HTTP Method for this request.
+ ///
+ /// By default this is `GET`. If builder has error, returns None.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let mut req = Request::builder();
+ /// assert_eq!(req.method_ref(),Some(&Method::GET));
+ ///
+ /// req = req.method("POST");
+ /// assert_eq!(req.method_ref(),Some(&Method::POST));
+ /// ```
+ pub fn method_ref(&self) -> Option<&Method> {
+ self.inner.as_ref().ok().map(|h| &h.method)
+ }
+
+ /// Set the URI for this request.
+ ///
+ /// By default this is `/`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let req = Request::builder()
+ /// .uri("https://www.rust-lang.org/")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn uri<T>(self, uri: T) -> Builder
+ where
+ Uri: TryFrom<T>,
+ <Uri as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.and_then(move |mut head| {
+ head.uri = TryFrom::try_from(uri).map_err(Into::into)?;
+ Ok(head)
+ })
+ }
+
+ /// Get the URI for this request
+ ///
+ /// By default this is `/`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let mut req = Request::builder();
+ /// assert_eq!(req.uri_ref().unwrap(), "/" );
+ ///
+ /// req = req.uri("https://www.rust-lang.org/");
+ /// assert_eq!(req.uri_ref().unwrap(), "https://www.rust-lang.org/" );
+ /// ```
+ pub fn uri_ref(&self) -> Option<&Uri> {
+ self.inner.as_ref().ok().map(|h| &h.uri)
+ }
+
+ /// Set the HTTP version for this request.
+ ///
+ /// By default this is HTTP/1.1
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let req = Request::builder()
+ /// .version(Version::HTTP_2)
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn version(self, version: Version) -> Builder {
+ self.and_then(move |mut head| {
+ head.version = version;
+ Ok(head)
+ })
+ }
+
+ /// Get the HTTP version for this request
+ ///
+ /// By default this is HTTP/1.1.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let mut req = Request::builder();
+ /// assert_eq!(req.version_ref().unwrap(), &Version::HTTP_11 );
+ ///
+ /// req = req.version(Version::HTTP_2);
+ /// assert_eq!(req.version_ref().unwrap(), &Version::HTTP_2 );
+ /// ```
+ pub fn version_ref(&self) -> Option<&Version> {
+ self.inner.as_ref().ok().map(|h| &h.version)
+ }
+
+ /// Appends a header to this request builder.
+ ///
+ /// This function will append the provided key/value as a header to the
+ /// internal `HeaderMap` being constructed. Essentially this is equivalent
+ /// to calling `HeaderMap::append`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::HeaderValue;
+ ///
+ /// let req = Request::builder()
+ /// .header("Accept", "text/html")
+ /// .header("X-Custom-Foo", "bar")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn header<K, V>(self, key: K, value: V) -> Builder
+ where
+ HeaderName: TryFrom<K>,
+ <HeaderName as TryFrom<K>>::Error: Into<crate::Error>,
+ HeaderValue: TryFrom<V>,
+ <HeaderValue as TryFrom<V>>::Error: Into<crate::Error>,
+ {
+ self.and_then(move |mut head| {
+ let name = <HeaderName as TryFrom<K>>::try_from(key).map_err(Into::into)?;
+ let value = <HeaderValue as TryFrom<V>>::try_from(value).map_err(Into::into)?;
+ head.headers.try_append(name, value)?;
+ Ok(head)
+ })
+ }
+
+ /// Get header on this request builder.
+ /// when builder has error returns None
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Request;
+ /// let req = Request::builder()
+ /// .header("Accept", "text/html")
+ /// .header("X-Custom-Foo", "bar");
+ /// let headers = req.headers_ref().unwrap();
+ /// assert_eq!( headers["Accept"], "text/html" );
+ /// assert_eq!( headers["X-Custom-Foo"], "bar" );
+ /// ```
+ pub fn headers_ref(&self) -> Option<&HeaderMap<HeaderValue>> {
+ self.inner.as_ref().ok().map(|h| &h.headers)
+ }
+
+ /// Get headers on this request builder.
+ ///
+ /// When builder has error returns None.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::{header::HeaderValue, Request};
+ /// let mut req = Request::builder();
+ /// {
+ /// let headers = req.headers_mut().unwrap();
+ /// headers.insert("Accept", HeaderValue::from_static("text/html"));
+ /// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar"));
+ /// }
+ /// let headers = req.headers_ref().unwrap();
+ /// assert_eq!( headers["Accept"], "text/html" );
+ /// assert_eq!( headers["X-Custom-Foo"], "bar" );
+ /// ```
+ pub fn headers_mut(&mut self) -> Option<&mut HeaderMap<HeaderValue>> {
+ self.inner.as_mut().ok().map(|h| &mut h.headers)
+ }
+
+ /// Adds an extension to this builder
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let req = Request::builder()
+ /// .extension("My Extension")
+ /// .body(())
+ /// .unwrap();
+ ///
+ /// assert_eq!(req.extensions().get::<&'static str>(),
+ /// Some(&"My Extension"));
+ /// ```
+ pub fn extension<T>(self, extension: T) -> Builder
+ where
+ T: Any + Send + Sync + 'static,
+ {
+ self.and_then(move |mut head| {
+ head.extensions.insert(extension);
+ Ok(head)
+ })
+ }
+
+ /// Get a reference to the extensions for this request builder.
+ ///
+ /// If the builder has an error, this returns `None`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Request;
+ /// let req = Request::builder().extension("My Extension").extension(5u32);
+ /// let extensions = req.extensions_ref().unwrap();
+ /// assert_eq!(extensions.get::<&'static str>(), Some(&"My Extension"));
+ /// assert_eq!(extensions.get::<u32>(), Some(&5u32));
+ /// ```
+ pub fn extensions_ref(&self) -> Option<&Extensions> {
+ self.inner.as_ref().ok().map(|h| &h.extensions)
+ }
+
+ /// Get a mutable reference to the extensions for this request builder.
+ ///
+ /// If the builder has an error, this returns `None`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Request;
+ /// let mut req = Request::builder().extension("My Extension");
+ /// let mut extensions = req.extensions_mut().unwrap();
+ /// assert_eq!(extensions.get::<&'static str>(), Some(&"My Extension"));
+ /// extensions.insert(5u32);
+ /// assert_eq!(extensions.get::<u32>(), Some(&5u32));
+ /// ```
+ pub fn extensions_mut(&mut self) -> Option<&mut Extensions> {
+ self.inner.as_mut().ok().map(|h| &mut h.extensions)
+ }
+
+ /// "Consumes" this builder, using the provided `body` to return a
+ /// constructed `Request`.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if any previously configured argument
+ /// failed to parse or get converted to the internal representation. For
+ /// example if an invalid `head` was specified via `header("Foo",
+ /// "Bar\r\n")` the error will be returned when this function is called
+ /// rather than when `header` was called.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let request = Request::builder()
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn body<T>(self, body: T) -> Result<Request<T>> {
+ self.inner.map(move |head| {
+ Request {
+ head,
+ body,
+ }
+ })
+ }
+
+ // private
+
+ fn and_then<F>(self, func: F) -> Self
+ where
+ F: FnOnce(Parts) -> Result<Parts>
+ {
+ Builder {
+ inner: self.inner.and_then(func),
+ }
+ }
+}
+
+impl Default for Builder {
+ #[inline]
+ fn default() -> Builder {
+ Builder {
+ inner: Ok(Parts::new()),
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn it_can_map_a_body_from_one_type_to_another() {
+ let request = Request::builder().body("some string").unwrap();
+ let mapped_request = request.map(|s| {
+ assert_eq!(s, "some string");
+ 123u32
+ });
+ assert_eq!(mapped_request.body(), &123u32);
+ }
+}
diff --git a/extra_versions/crates/http/src/response.rs b/extra_versions/crates/http/src/response.rs
new file mode 100644
index 0000000..1e88a3e
--- /dev/null
+++ b/extra_versions/crates/http/src/response.rs
@@ -0,0 +1,793 @@
+//! HTTP response types.
+//!
+//! This module contains structs related to HTTP responses, notably the
+//! `Response` type itself as well as a builder to create responses. Typically
+//! you'll import the `http::Response` type rather than reaching into this
+//! module itself.
+//!
+//! # Examples
+//!
+//! Creating a `Response` to return
+//!
+//! ```
+//! use http::{Request, Response, StatusCode};
+//!
+//! fn respond_to(req: Request<()>) -> http::Result<Response<()>> {
+//! let mut builder = Response::builder()
+//! .header("Foo", "Bar")
+//! .status(StatusCode::OK);
+//!
+//! if req.headers().contains_key("Another-Header") {
+//! builder = builder.header("Another-Header", "Ack");
+//! }
+//!
+//! builder.body(())
+//! }
+//! ```
+//!
+//! A simple 404 handler
+//!
+//! ```
+//! use http::{Request, Response, StatusCode};
+//!
+//! fn not_found(_req: Request<()>) -> http::Result<Response<()>> {
+//! Response::builder()
+//! .status(StatusCode::NOT_FOUND)
+//! .body(())
+//! }
+//! ```
+//!
+//! Or otherwise inspecting the result of a request:
+//!
+//! ```no_run
+//! use http::{Request, Response};
+//!
+//! fn get(url: &str) -> http::Result<Response<()>> {
+//! // ...
+//! # panic!()
+//! }
+//!
+//! let response = get("https://www.rust-lang.org/").unwrap();
+//!
+//! if !response.status().is_success() {
+//! panic!("failed to get a successful response status!");
+//! }
+//!
+//! if let Some(date) = response.headers().get("Date") {
+//! // we've got a `Date` header!
+//! }
+//!
+//! let body = response.body();
+//! // ...
+//! ```
+
+use std::any::Any;
+use std::convert::TryFrom;
+use std::fmt;
+
+use crate::header::{HeaderMap, HeaderName, HeaderValue};
+use crate::status::StatusCode;
+use crate::version::Version;
+use crate::{Extensions, Result};
+
+/// Represents an HTTP response
+///
+/// An HTTP response consists of a head and a potentially optional body. The body
+/// component is generic, enabling arbitrary types to represent the HTTP body.
+/// For example, the body could be `Vec<u8>`, a `Stream` of byte chunks, or a
+/// value that has been deserialized.
+///
+/// Typically you'll work with responses on the client side as the result of
+/// sending a `Request` and on the server you'll be generating a `Response` to
+/// send back to the client.
+///
+/// # Examples
+///
+/// Creating a `Response` to return
+///
+/// ```
+/// use http::{Request, Response, StatusCode};
+///
+/// fn respond_to(req: Request<()>) -> http::Result<Response<()>> {
+/// let mut builder = Response::builder()
+/// .header("Foo", "Bar")
+/// .status(StatusCode::OK);
+///
+/// if req.headers().contains_key("Another-Header") {
+/// builder = builder.header("Another-Header", "Ack");
+/// }
+///
+/// builder.body(())
+/// }
+/// ```
+///
+/// A simple 404 handler
+///
+/// ```
+/// use http::{Request, Response, StatusCode};
+///
+/// fn not_found(_req: Request<()>) -> http::Result<Response<()>> {
+/// Response::builder()
+/// .status(StatusCode::NOT_FOUND)
+/// .body(())
+/// }
+/// ```
+///
+/// Or otherwise inspecting the result of a request:
+///
+/// ```no_run
+/// use http::{Request, Response};
+///
+/// fn get(url: &str) -> http::Result<Response<()>> {
+/// // ...
+/// # panic!()
+/// }
+///
+/// let response = get("https://www.rust-lang.org/").unwrap();
+///
+/// if !response.status().is_success() {
+/// panic!("failed to get a successful response status!");
+/// }
+///
+/// if let Some(date) = response.headers().get("Date") {
+/// // we've got a `Date` header!
+/// }
+///
+/// let body = response.body();
+/// // ...
+/// ```
+///
+/// Deserialize a response of bytes via json:
+///
+/// ```
+/// # extern crate serde;
+/// # extern crate serde_json;
+/// # extern crate http;
+/// use http::Response;
+/// use serde::de;
+///
+/// fn deserialize<T>(res: Response<Vec<u8>>) -> serde_json::Result<Response<T>>
+/// where for<'de> T: de::Deserialize<'de>,
+/// {
+/// let (parts, body) = res.into_parts();
+/// let body = serde_json::from_slice(&body)?;
+/// Ok(Response::from_parts(parts, body))
+/// }
+/// #
+/// # fn main() {}
+/// ```
+///
+/// Or alternatively, serialize the body of a response to json
+///
+/// ```
+/// # extern crate serde;
+/// # extern crate serde_json;
+/// # extern crate http;
+/// use http::Response;
+/// use serde::ser;
+///
+/// fn serialize<T>(res: Response<T>) -> serde_json::Result<Response<Vec<u8>>>
+/// where T: ser::Serialize,
+/// {
+/// let (parts, body) = res.into_parts();
+/// let body = serde_json::to_vec(&body)?;
+/// Ok(Response::from_parts(parts, body))
+/// }
+/// #
+/// # fn main() {}
+/// ```
+pub struct Response<T> {
+ head: Parts,
+ body: T,
+}
+
+/// Component parts of an HTTP `Response`
+///
+/// The HTTP response head consists of a status, version, and a set of
+/// header fields.
+pub struct Parts {
+ /// The response's status
+ pub status: StatusCode,
+
+ /// The response's version
+ pub version: Version,
+
+ /// The response's headers
+ pub headers: HeaderMap<HeaderValue>,
+
+ /// The response's extensions
+ pub extensions: Extensions,
+
+ _priv: (),
+}
+
+/// An HTTP response builder
+///
+/// This type can be used to construct an instance of `Response` through a
+/// builder-like pattern.
+#[derive(Debug)]
+pub struct Builder {
+ inner: Result<Parts>,
+}
+
+impl Response<()> {
+ /// Creates a new builder-style object to manufacture a `Response`
+ ///
+ /// This method returns an instance of `Builder` which can be used to
+ /// create a `Response`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response = Response::builder()
+ /// .status(200)
+ /// .header("X-Custom-Foo", "Bar")
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ #[inline]
+ pub fn builder() -> Builder {
+ Builder::new()
+ }
+}
+
+impl<T> Response<T> {
+ /// Creates a new blank `Response` with the body
+ ///
+ /// The component ports of this response will be set to their default, e.g.
+ /// the ok status, no headers, etc.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response = Response::new("hello world");
+ ///
+ /// assert_eq!(response.status(), StatusCode::OK);
+ /// assert_eq!(*response.body(), "hello world");
+ /// ```
+ #[inline]
+ pub fn new(body: T) -> Response<T> {
+ Response {
+ head: Parts::new(),
+ body: body,
+ }
+ }
+
+ /// Creates a new `Response` with the given head and body
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response = Response::new("hello world");
+ /// let (mut parts, body) = response.into_parts();
+ ///
+ /// parts.status = StatusCode::BAD_REQUEST;
+ /// let response = Response::from_parts(parts, body);
+ ///
+ /// assert_eq!(response.status(), StatusCode::BAD_REQUEST);
+ /// assert_eq!(*response.body(), "hello world");
+ /// ```
+ #[inline]
+ pub fn from_parts(parts: Parts, body: T) -> Response<T> {
+ Response {
+ head: parts,
+ body: body,
+ }
+ }
+
+ /// Returns the `StatusCode`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<()> = Response::default();
+ /// assert_eq!(response.status(), StatusCode::OK);
+ /// ```
+ #[inline]
+ pub fn status(&self) -> StatusCode {
+ self.head.status
+ }
+
+ /// Returns a mutable reference to the associated `StatusCode`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut response: Response<()> = Response::default();
+ /// *response.status_mut() = StatusCode::CREATED;
+ /// assert_eq!(response.status(), StatusCode::CREATED);
+ /// ```
+ #[inline]
+ pub fn status_mut(&mut self) -> &mut StatusCode {
+ &mut self.head.status
+ }
+
+ /// Returns a reference to the associated version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<()> = Response::default();
+ /// assert_eq!(response.version(), Version::HTTP_11);
+ /// ```
+ #[inline]
+ pub fn version(&self) -> Version {
+ self.head.version
+ }
+
+ /// Returns a mutable reference to the associated version.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut response: Response<()> = Response::default();
+ /// *response.version_mut() = Version::HTTP_2;
+ /// assert_eq!(response.version(), Version::HTTP_2);
+ /// ```
+ #[inline]
+ pub fn version_mut(&mut self) -> &mut Version {
+ &mut self.head.version
+ }
+
+ /// Returns a reference to the associated header field map.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<()> = Response::default();
+ /// assert!(response.headers().is_empty());
+ /// ```
+ #[inline]
+ pub fn headers(&self) -> &HeaderMap<HeaderValue> {
+ &self.head.headers
+ }
+
+ /// Returns a mutable reference to the associated header field map.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::*;
+ /// let mut response: Response<()> = Response::default();
+ /// response.headers_mut().insert(HOST, HeaderValue::from_static("world"));
+ /// assert!(!response.headers().is_empty());
+ /// ```
+ #[inline]
+ pub fn headers_mut(&mut self) -> &mut HeaderMap<HeaderValue> {
+ &mut self.head.headers
+ }
+
+ /// Returns a reference to the associated extensions.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<()> = Response::default();
+ /// assert!(response.extensions().get::<i32>().is_none());
+ /// ```
+ #[inline]
+ pub fn extensions(&self) -> &Extensions {
+ &self.head.extensions
+ }
+
+ /// Returns a mutable reference to the associated extensions.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::*;
+ /// let mut response: Response<()> = Response::default();
+ /// response.extensions_mut().insert("hello");
+ /// assert_eq!(response.extensions().get(), Some(&"hello"));
+ /// ```
+ #[inline]
+ pub fn extensions_mut(&mut self) -> &mut Extensions {
+ &mut self.head.extensions
+ }
+
+ /// Returns a reference to the associated HTTP body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<String> = Response::default();
+ /// assert!(response.body().is_empty());
+ /// ```
+ #[inline]
+ pub fn body(&self) -> &T {
+ &self.body
+ }
+
+ /// Returns a mutable reference to the associated HTTP body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let mut response: Response<String> = Response::default();
+ /// response.body_mut().push_str("hello world");
+ /// assert!(!response.body().is_empty());
+ /// ```
+ #[inline]
+ pub fn body_mut(&mut self) -> &mut T {
+ &mut self.body
+ }
+
+ /// Consumes the response, returning just the body.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::Response;
+ /// let response = Response::new(10);
+ /// let body = response.into_body();
+ /// assert_eq!(body, 10);
+ /// ```
+ #[inline]
+ pub fn into_body(self) -> T {
+ self.body
+ }
+
+ /// Consumes the response returning the head and body parts.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response: Response<()> = Response::default();
+ /// let (parts, body) = response.into_parts();
+ /// assert_eq!(parts.status, StatusCode::OK);
+ /// ```
+ #[inline]
+ pub fn into_parts(self) -> (Parts, T) {
+ (self.head, self.body)
+ }
+
+ /// Consumes the response returning a new response with body mapped to the
+ /// return type of the passed in function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// let response = Response::builder().body("some string").unwrap();
+ /// let mapped_response: Response<&[u8]> = response.map(|b| {
+ /// assert_eq!(b, "some string");
+ /// b.as_bytes()
+ /// });
+ /// assert_eq!(mapped_response.body(), &"some string".as_bytes());
+ /// ```
+ #[inline]
+ pub fn map<F, U>(self, f: F) -> Response<U>
+ where
+ F: FnOnce(T) -> U,
+ {
+ Response {
+ body: f(self.body),
+ head: self.head,
+ }
+ }
+}
+
+impl<T: Default> Default for Response<T> {
+ #[inline]
+ fn default() -> Response<T> {
+ Response::new(T::default())
+ }
+}
+
+impl<T: fmt::Debug> fmt::Debug for Response<T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Response")
+ .field("status", &self.status())
+ .field("version", &self.version())
+ .field("headers", self.headers())
+ // omits Extensions because not useful
+ .field("body", self.body())
+ .finish()
+ }
+}
+
+impl Parts {
+ /// Creates a new default instance of `Parts`
+ fn new() -> Parts {
+ Parts {
+ status: StatusCode::default(),
+ version: Version::default(),
+ headers: HeaderMap::default(),
+ extensions: Extensions::default(),
+ _priv: (),
+ }
+ }
+}
+
+impl fmt::Debug for Parts {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("Parts")
+ .field("status", &self.status)
+ .field("version", &self.version)
+ .field("headers", &self.headers)
+ // omits Extensions because not useful
+ // omits _priv because not useful
+ .finish()
+ }
+}
+
+impl Builder {
+ /// Creates a new default instance of `Builder` to construct either a
+ /// `Head` or a `Response`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let response = response::Builder::new()
+ /// .status(200)
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ #[inline]
+ pub fn new() -> Builder {
+ Builder::default()
+ }
+
+ /// Set the HTTP status for this response.
+ ///
+ /// By default this is `200`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let response = Response::builder()
+ /// .status(200)
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn status<T>(self, status: T) -> Builder
+ where
+ StatusCode: TryFrom<T>,
+ <StatusCode as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.and_then(move |mut head| {
+ head.status = TryFrom::try_from(status).map_err(Into::into)?;
+ Ok(head)
+ })
+ }
+
+ /// Set the HTTP version for this response.
+ ///
+ /// By default this is HTTP/1.1
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let response = Response::builder()
+ /// .version(Version::HTTP_2)
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn version(self, version: Version) -> Builder {
+ self.and_then(move |mut head| {
+ head.version = version;
+ Ok(head)
+ })
+ }
+
+ /// Appends a header to this response builder.
+ ///
+ /// This function will append the provided key/value as a header to the
+ /// internal `HeaderMap` being constructed. Essentially this is equivalent
+ /// to calling `HeaderMap::append`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::HeaderValue;
+ ///
+ /// let response = Response::builder()
+ /// .header("Content-Type", "text/html")
+ /// .header("X-Custom-Foo", "bar")
+ /// .header("content-length", 0)
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn header<K, V>(self, key: K, value: V) -> Builder
+ where
+ HeaderName: TryFrom<K>,
+ <HeaderName as TryFrom<K>>::Error: Into<crate::Error>,
+ HeaderValue: TryFrom<V>,
+ <HeaderValue as TryFrom<V>>::Error: Into<crate::Error>,
+ {
+ self.and_then(move |mut head| {
+ let name = <HeaderName as TryFrom<K>>::try_from(key).map_err(Into::into)?;
+ let value = <HeaderValue as TryFrom<V>>::try_from(value).map_err(Into::into)?;
+ head.headers.try_append(name, value)?;
+ Ok(head)
+ })
+ }
+
+ /// Get header on this response builder.
+ ///
+ /// When builder has error returns None.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Response;
+ /// # use http::header::HeaderValue;
+ /// let res = Response::builder()
+ /// .header("Accept", "text/html")
+ /// .header("X-Custom-Foo", "bar");
+ /// let headers = res.headers_ref().unwrap();
+ /// assert_eq!( headers["Accept"], "text/html" );
+ /// assert_eq!( headers["X-Custom-Foo"], "bar" );
+ /// ```
+ pub fn headers_ref(&self) -> Option<&HeaderMap<HeaderValue>> {
+ self.inner.as_ref().ok().map(|h| &h.headers)
+ }
+
+ /// Get header on this response builder.
+ /// when builder has error returns None
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::*;
+ /// # use http::header::HeaderValue;
+ /// # use http::response::Builder;
+ /// let mut res = Response::builder();
+ /// {
+ /// let headers = res.headers_mut().unwrap();
+ /// headers.insert("Accept", HeaderValue::from_static("text/html"));
+ /// headers.insert("X-Custom-Foo", HeaderValue::from_static("bar"));
+ /// }
+ /// let headers = res.headers_ref().unwrap();
+ /// assert_eq!( headers["Accept"], "text/html" );
+ /// assert_eq!( headers["X-Custom-Foo"], "bar" );
+ /// ```
+ pub fn headers_mut(&mut self) -> Option<&mut HeaderMap<HeaderValue>> {
+ self.inner.as_mut().ok().map(|h| &mut h.headers)
+ }
+
+ /// Adds an extension to this builder
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let response = Response::builder()
+ /// .extension("My Extension")
+ /// .body(())
+ /// .unwrap();
+ ///
+ /// assert_eq!(response.extensions().get::<&'static str>(),
+ /// Some(&"My Extension"));
+ /// ```
+ pub fn extension<T>(self, extension: T) -> Builder
+ where
+ T: Any + Send + Sync + 'static,
+ {
+ self.and_then(move |mut head| {
+ head.extensions.insert(extension);
+ Ok(head)
+ })
+ }
+
+ /// Get a reference to the extensions for this response builder.
+ ///
+ /// If the builder has an error, this returns `None`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Response;
+ /// let res = Response::builder().extension("My Extension").extension(5u32);
+ /// let extensions = res.extensions_ref().unwrap();
+ /// assert_eq!(extensions.get::<&'static str>(), Some(&"My Extension"));
+ /// assert_eq!(extensions.get::<u32>(), Some(&5u32));
+ /// ```
+ pub fn extensions_ref(&self) -> Option<&Extensions> {
+ self.inner.as_ref().ok().map(|h| &h.extensions)
+ }
+
+ /// Get a mutable reference to the extensions for this response builder.
+ ///
+ /// If the builder has an error, this returns `None`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Response;
+ /// let mut res = Response::builder().extension("My Extension");
+ /// let mut extensions = res.extensions_mut().unwrap();
+ /// assert_eq!(extensions.get::<&'static str>(), Some(&"My Extension"));
+ /// extensions.insert(5u32);
+ /// assert_eq!(extensions.get::<u32>(), Some(&5u32));
+ /// ```
+ pub fn extensions_mut(&mut self) -> Option<&mut Extensions> {
+ self.inner.as_mut().ok().map(|h| &mut h.extensions)
+ }
+
+ /// "Consumes" this builder, using the provided `body` to return a
+ /// constructed `Response`.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if any previously configured argument
+ /// failed to parse or get converted to the internal representation. For
+ /// example if an invalid `head` was specified via `header("Foo",
+ /// "Bar\r\n")` the error will be returned when this function is called
+ /// rather than when `header` was called.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let response = Response::builder()
+ /// .body(())
+ /// .unwrap();
+ /// ```
+ pub fn body<T>(self, body: T) -> Result<Response<T>> {
+ self.inner.map(move |head| {
+ Response {
+ head,
+ body,
+ }
+ })
+ }
+
+ // private
+
+ fn and_then<F>(self, func: F) -> Self
+ where
+ F: FnOnce(Parts) -> Result<Parts>
+ {
+ Builder {
+ inner: self.inner.and_then(func),
+ }
+ }
+}
+
+impl Default for Builder {
+ #[inline]
+ fn default() -> Builder {
+ Builder {
+ inner: Ok(Parts::new()),
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn it_can_map_a_body_from_one_type_to_another() {
+ let response = Response::builder().body("some string").unwrap();
+ let mapped_response = response.map(|s| {
+ assert_eq!(s, "some string");
+ 123u32
+ });
+ assert_eq!(mapped_response.body(), &123u32);
+ }
+}
diff --git a/extra_versions/crates/http/src/status.rs b/extra_versions/crates/http/src/status.rs
new file mode 100644
index 0000000..d98d24c
--- /dev/null
+++ b/extra_versions/crates/http/src/status.rs
@@ -0,0 +1,588 @@
+//! HTTP status codes
+//!
+//! This module contains HTTP-status code related structs an errors. The main
+//! type in this module is `StatusCode` which is not intended to be used through
+//! this module but rather the `http::StatusCode` type.
+//!
+//! # Examples
+//!
+//! ```
+//! use http::StatusCode;
+//!
+//! assert_eq!(StatusCode::from_u16(200).unwrap(), StatusCode::OK);
+//! assert_eq!(StatusCode::NOT_FOUND, 404);
+//! assert!(StatusCode::OK.is_success());
+//! ```
+
+use std::convert::TryFrom;
+use std::num::NonZeroU16;
+use std::error::Error;
+use std::fmt;
+use std::str::FromStr;
+
+/// An HTTP status code (`status-code` in RFC 7230 et al.).
+///
+/// Constants are provided for known status codes, including those in the IANA
+/// [HTTP Status Code Registry](
+/// https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml).
+///
+/// Status code values in the range 100-999 (inclusive) are supported by this
+/// type. Values in the range 100-599 are semantically classified by the most
+/// significant digit. See [`StatusCode::is_success`], etc. Values above 599
+/// are unclassified but allowed for legacy compatibility, though their use is
+/// discouraged. Applications may interpret such values as protocol errors.
+///
+/// # Examples
+///
+/// ```
+/// use http::StatusCode;
+///
+/// assert_eq!(StatusCode::from_u16(200).unwrap(), StatusCode::OK);
+/// assert_eq!(StatusCode::NOT_FOUND.as_u16(), 404);
+/// assert!(StatusCode::OK.is_success());
+/// ```
+#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
+pub struct StatusCode(NonZeroU16);
+
+/// A possible error value when converting a `StatusCode` from a `u16` or `&str`
+///
+/// This error indicates that the supplied input was not a valid number, was less
+/// than 100, or was greater than 999.
+pub struct InvalidStatusCode {
+ _priv: (),
+}
+
+impl StatusCode {
+ /// Converts a u16 to a status code.
+ ///
+ /// The function validates the correctness of the supplied u16. It must be
+ /// greater or equal to 100 and less than 1000.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use http::StatusCode;
+ ///
+ /// let ok = StatusCode::from_u16(200).unwrap();
+ /// assert_eq!(ok, StatusCode::OK);
+ ///
+ /// let err = StatusCode::from_u16(99);
+ /// assert!(err.is_err());
+ /// ```
+ #[inline]
+ pub fn from_u16(src: u16) -> Result<StatusCode, InvalidStatusCode> {
+ if src < 100 || src >= 1000 {
+ return Err(InvalidStatusCode::new());
+ }
+
+ NonZeroU16::new(src)
+ .map(StatusCode)
+ .ok_or_else(InvalidStatusCode::new)
+ }
+
+ /// Converts a &[u8] to a status code
+ pub fn from_bytes(src: &[u8]) -> Result<StatusCode, InvalidStatusCode> {
+ if src.len() != 3 {
+ return Err(InvalidStatusCode::new());
+ }
+
+ let a = src[0].wrapping_sub(b'0') as u16;
+ let b = src[1].wrapping_sub(b'0') as u16;
+ let c = src[2].wrapping_sub(b'0') as u16;
+
+ if a == 0 || a > 9 || b > 9 || c > 9 {
+ return Err(InvalidStatusCode::new());
+ }
+
+ let status = (a * 100) + (b * 10) + c;
+ NonZeroU16::new(status)
+ .map(StatusCode)
+ .ok_or_else(InvalidStatusCode::new)
+ }
+
+ /// Returns the `u16` corresponding to this `StatusCode`.
+ ///
+ /// # Note
+ ///
+ /// This is the same as the `From<StatusCode>` implementation, but
+ /// included as an inherent method because that implementation doesn't
+ /// appear in rustdocs, as well as a way to force the type instead of
+ /// relying on inference.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// let status = http::StatusCode::OK;
+ /// assert_eq!(status.as_u16(), 200);
+ /// ```
+ #[inline]
+ pub fn as_u16(&self) -> u16 {
+ (*self).into()
+ }
+
+ /// Returns a &str representation of the `StatusCode`
+ ///
+ /// The return value only includes a numerical representation of the
+ /// status code. The canonical reason is not included.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// let status = http::StatusCode::OK;
+ /// assert_eq!(status.as_str(), "200");
+ /// ```
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ let offset = (self.0.get() - 100) as usize;
+ let offset = offset * 3;
+
+ // Invariant: self has checked range [100, 999] and CODE_DIGITS is
+ // ASCII-only, of length 900 * 3 = 2700 bytes
+
+ #[cfg(debug_assertions)]
+ { &CODE_DIGITS[offset..offset+3] }
+
+ #[cfg(not(debug_assertions))]
+ unsafe { CODE_DIGITS.get_unchecked(offset..offset+3) }
+ }
+
+ /// Get the standardised `reason-phrase` for this status code.
+ ///
+ /// This is mostly here for servers writing responses, but could potentially have application
+ /// at other times.
+ ///
+ /// The reason phrase is defined as being exclusively for human readers. You should avoid
+ /// deriving any meaning from it at all costs.
+ ///
+ /// Bear in mind also that in HTTP/2.0 and HTTP/3.0 the reason phrase is abolished from
+ /// transmission, and so this canonical reason phrase really is the only reason phrase you’ll
+ /// find.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// let status = http::StatusCode::OK;
+ /// assert_eq!(status.canonical_reason(), Some("OK"));
+ /// ```
+ pub fn canonical_reason(&self) -> Option<&'static str> {
+ canonical_reason(self.0.get())
+ }
+
+ /// Check if status is within 100-199.
+ #[inline]
+ pub fn is_informational(&self) -> bool {
+ 200 > self.0.get() && self.0.get() >= 100
+ }
+
+ /// Check if status is within 200-299.
+ #[inline]
+ pub fn is_success(&self) -> bool {
+ 300 > self.0.get() && self.0.get() >= 200
+ }
+
+ /// Check if status is within 300-399.
+ #[inline]
+ pub fn is_redirection(&self) -> bool {
+ 400 > self.0.get() && self.0.get() >= 300
+ }
+
+ /// Check if status is within 400-499.
+ #[inline]
+ pub fn is_client_error(&self) -> bool {
+ 500 > self.0.get() && self.0.get() >= 400
+ }
+
+ /// Check if status is within 500-599.
+ #[inline]
+ pub fn is_server_error(&self) -> bool {
+ 600 > self.0.get() && self.0.get() >= 500
+ }
+}
+
+impl fmt::Debug for StatusCode {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(&self.0, f)
+ }
+}
+
+/// Formats the status code, *including* the canonical reason.
+///
+/// # Example
+///
+/// ```
+/// # use http::StatusCode;
+/// assert_eq!(format!("{}", StatusCode::OK), "200 OK");
+/// ```
+impl fmt::Display for StatusCode {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(
+ f,
+ "{} {}",
+ u16::from(*self),
+ self.canonical_reason().unwrap_or("<unknown status code>")
+ )
+ }
+}
+
+impl Default for StatusCode {
+ #[inline]
+ fn default() -> StatusCode {
+ StatusCode::OK
+ }
+}
+
+impl PartialEq<u16> for StatusCode {
+ #[inline]
+ fn eq(&self, other: &u16) -> bool {
+ self.as_u16() == *other
+ }
+}
+
+impl PartialEq<StatusCode> for u16 {
+ #[inline]
+ fn eq(&self, other: &StatusCode) -> bool {
+ *self == other.as_u16()
+ }
+}
+
+impl From<StatusCode> for u16 {
+ #[inline]
+ fn from(status: StatusCode) -> u16 {
+ status.0.get()
+ }
+}
+
+impl FromStr for StatusCode {
+ type Err = InvalidStatusCode;
+
+ fn from_str(s: &str) -> Result<StatusCode, InvalidStatusCode> {
+ StatusCode::from_bytes(s.as_ref())
+ }
+}
+
+impl<'a> From<&'a StatusCode> for StatusCode {
+ #[inline]
+ fn from(t: &'a StatusCode) -> Self {
+ t.clone()
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for StatusCode {
+ type Error = InvalidStatusCode;
+
+ #[inline]
+ fn try_from(t: &'a [u8]) -> Result<Self, Self::Error> {
+ StatusCode::from_bytes(t)
+ }
+}
+
+impl<'a> TryFrom<&'a str> for StatusCode {
+ type Error = InvalidStatusCode;
+
+ #[inline]
+ fn try_from(t: &'a str) -> Result<Self, Self::Error> {
+ t.parse()
+ }
+}
+
+impl TryFrom<u16> for StatusCode {
+ type Error = InvalidStatusCode;
+
+ #[inline]
+ fn try_from(t: u16) -> Result<Self, Self::Error> {
+ StatusCode::from_u16(t)
+ }
+}
+
+macro_rules! status_codes {
+ (
+ $(
+ $(#[$docs:meta])*
+ ($num:expr, $konst:ident, $phrase:expr);
+ )+
+ ) => {
+ impl StatusCode {
+ $(
+ $(#[$docs])*
+ pub const $konst: StatusCode = StatusCode(unsafe { NonZeroU16::new_unchecked($num) });
+ )+
+
+ }
+
+ fn canonical_reason(num: u16) -> Option<&'static str> {
+ match num {
+ $(
+ $num => Some($phrase),
+ )+
+ _ => None
+ }
+ }
+ }
+}
+
+status_codes! {
+ /// 100 Continue
+ /// [[RFC7231, Section 6.2.1](https://tools.ietf.org/html/rfc7231#section-6.2.1)]
+ (100, CONTINUE, "Continue");
+ /// 101 Switching Protocols
+ /// [[RFC7231, Section 6.2.2](https://tools.ietf.org/html/rfc7231#section-6.2.2)]
+ (101, SWITCHING_PROTOCOLS, "Switching Protocols");
+ /// 102 Processing
+ /// [[RFC2518](https://tools.ietf.org/html/rfc2518)]
+ (102, PROCESSING, "Processing");
+
+ /// 200 OK
+ /// [[RFC7231, Section 6.3.1](https://tools.ietf.org/html/rfc7231#section-6.3.1)]
+ (200, OK, "OK");
+ /// 201 Created
+ /// [[RFC7231, Section 6.3.2](https://tools.ietf.org/html/rfc7231#section-6.3.2)]
+ (201, CREATED, "Created");
+ /// 202 Accepted
+ /// [[RFC7231, Section 6.3.3](https://tools.ietf.org/html/rfc7231#section-6.3.3)]
+ (202, ACCEPTED, "Accepted");
+ /// 203 Non-Authoritative Information
+ /// [[RFC7231, Section 6.3.4](https://tools.ietf.org/html/rfc7231#section-6.3.4)]
+ (203, NON_AUTHORITATIVE_INFORMATION, "Non Authoritative Information");
+ /// 204 No Content
+ /// [[RFC7231, Section 6.3.5](https://tools.ietf.org/html/rfc7231#section-6.3.5)]
+ (204, NO_CONTENT, "No Content");
+ /// 205 Reset Content
+ /// [[RFC7231, Section 6.3.6](https://tools.ietf.org/html/rfc7231#section-6.3.6)]
+ (205, RESET_CONTENT, "Reset Content");
+ /// 206 Partial Content
+ /// [[RFC7233, Section 4.1](https://tools.ietf.org/html/rfc7233#section-4.1)]
+ (206, PARTIAL_CONTENT, "Partial Content");
+ /// 207 Multi-Status
+ /// [[RFC4918](https://tools.ietf.org/html/rfc4918)]
+ (207, MULTI_STATUS, "Multi-Status");
+ /// 208 Already Reported
+ /// [[RFC5842](https://tools.ietf.org/html/rfc5842)]
+ (208, ALREADY_REPORTED, "Already Reported");
+
+ /// 226 IM Used
+ /// [[RFC3229](https://tools.ietf.org/html/rfc3229)]
+ (226, IM_USED, "IM Used");
+
+ /// 300 Multiple Choices
+ /// [[RFC7231, Section 6.4.1](https://tools.ietf.org/html/rfc7231#section-6.4.1)]
+ (300, MULTIPLE_CHOICES, "Multiple Choices");
+ /// 301 Moved Permanently
+ /// [[RFC7231, Section 6.4.2](https://tools.ietf.org/html/rfc7231#section-6.4.2)]
+ (301, MOVED_PERMANENTLY, "Moved Permanently");
+ /// 302 Found
+ /// [[RFC7231, Section 6.4.3](https://tools.ietf.org/html/rfc7231#section-6.4.3)]
+ (302, FOUND, "Found");
+ /// 303 See Other
+ /// [[RFC7231, Section 6.4.4](https://tools.ietf.org/html/rfc7231#section-6.4.4)]
+ (303, SEE_OTHER, "See Other");
+ /// 304 Not Modified
+ /// [[RFC7232, Section 4.1](https://tools.ietf.org/html/rfc7232#section-4.1)]
+ (304, NOT_MODIFIED, "Not Modified");
+ /// 305 Use Proxy
+ /// [[RFC7231, Section 6.4.5](https://tools.ietf.org/html/rfc7231#section-6.4.5)]
+ (305, USE_PROXY, "Use Proxy");
+ /// 307 Temporary Redirect
+ /// [[RFC7231, Section 6.4.7](https://tools.ietf.org/html/rfc7231#section-6.4.7)]
+ (307, TEMPORARY_REDIRECT, "Temporary Redirect");
+ /// 308 Permanent Redirect
+ /// [[RFC7238](https://tools.ietf.org/html/rfc7238)]
+ (308, PERMANENT_REDIRECT, "Permanent Redirect");
+
+ /// 400 Bad Request
+ /// [[RFC7231, Section 6.5.1](https://tools.ietf.org/html/rfc7231#section-6.5.1)]
+ (400, BAD_REQUEST, "Bad Request");
+ /// 401 Unauthorized
+ /// [[RFC7235, Section 3.1](https://tools.ietf.org/html/rfc7235#section-3.1)]
+ (401, UNAUTHORIZED, "Unauthorized");
+ /// 402 Payment Required
+ /// [[RFC7231, Section 6.5.2](https://tools.ietf.org/html/rfc7231#section-6.5.2)]
+ (402, PAYMENT_REQUIRED, "Payment Required");
+ /// 403 Forbidden
+ /// [[RFC7231, Section 6.5.3](https://tools.ietf.org/html/rfc7231#section-6.5.3)]
+ (403, FORBIDDEN, "Forbidden");
+ /// 404 Not Found
+ /// [[RFC7231, Section 6.5.4](https://tools.ietf.org/html/rfc7231#section-6.5.4)]
+ (404, NOT_FOUND, "Not Found");
+ /// 405 Method Not Allowed
+ /// [[RFC7231, Section 6.5.5](https://tools.ietf.org/html/rfc7231#section-6.5.5)]
+ (405, METHOD_NOT_ALLOWED, "Method Not Allowed");
+ /// 406 Not Acceptable
+ /// [[RFC7231, Section 6.5.6](https://tools.ietf.org/html/rfc7231#section-6.5.6)]
+ (406, NOT_ACCEPTABLE, "Not Acceptable");
+ /// 407 Proxy Authentication Required
+ /// [[RFC7235, Section 3.2](https://tools.ietf.org/html/rfc7235#section-3.2)]
+ (407, PROXY_AUTHENTICATION_REQUIRED, "Proxy Authentication Required");
+ /// 408 Request Timeout
+ /// [[RFC7231, Section 6.5.7](https://tools.ietf.org/html/rfc7231#section-6.5.7)]
+ (408, REQUEST_TIMEOUT, "Request Timeout");
+ /// 409 Conflict
+ /// [[RFC7231, Section 6.5.8](https://tools.ietf.org/html/rfc7231#section-6.5.8)]
+ (409, CONFLICT, "Conflict");
+ /// 410 Gone
+ /// [[RFC7231, Section 6.5.9](https://tools.ietf.org/html/rfc7231#section-6.5.9)]
+ (410, GONE, "Gone");
+ /// 411 Length Required
+ /// [[RFC7231, Section 6.5.10](https://tools.ietf.org/html/rfc7231#section-6.5.10)]
+ (411, LENGTH_REQUIRED, "Length Required");
+ /// 412 Precondition Failed
+ /// [[RFC7232, Section 4.2](https://tools.ietf.org/html/rfc7232#section-4.2)]
+ (412, PRECONDITION_FAILED, "Precondition Failed");
+ /// 413 Payload Too Large
+ /// [[RFC7231, Section 6.5.11](https://tools.ietf.org/html/rfc7231#section-6.5.11)]
+ (413, PAYLOAD_TOO_LARGE, "Payload Too Large");
+ /// 414 URI Too Long
+ /// [[RFC7231, Section 6.5.12](https://tools.ietf.org/html/rfc7231#section-6.5.12)]
+ (414, URI_TOO_LONG, "URI Too Long");
+ /// 415 Unsupported Media Type
+ /// [[RFC7231, Section 6.5.13](https://tools.ietf.org/html/rfc7231#section-6.5.13)]
+ (415, UNSUPPORTED_MEDIA_TYPE, "Unsupported Media Type");
+ /// 416 Range Not Satisfiable
+ /// [[RFC7233, Section 4.4](https://tools.ietf.org/html/rfc7233#section-4.4)]
+ (416, RANGE_NOT_SATISFIABLE, "Range Not Satisfiable");
+ /// 417 Expectation Failed
+ /// [[RFC7231, Section 6.5.14](https://tools.ietf.org/html/rfc7231#section-6.5.14)]
+ (417, EXPECTATION_FAILED, "Expectation Failed");
+ /// 418 I'm a teapot
+ /// [curiously not registered by IANA but [RFC2324](https://tools.ietf.org/html/rfc2324)]
+ (418, IM_A_TEAPOT, "I'm a teapot");
+
+ /// 421 Misdirected Request
+ /// [RFC7540, Section 9.1.2](http://tools.ietf.org/html/rfc7540#section-9.1.2)
+ (421, MISDIRECTED_REQUEST, "Misdirected Request");
+ /// 422 Unprocessable Entity
+ /// [[RFC4918](https://tools.ietf.org/html/rfc4918)]
+ (422, UNPROCESSABLE_ENTITY, "Unprocessable Entity");
+ /// 423 Locked
+ /// [[RFC4918](https://tools.ietf.org/html/rfc4918)]
+ (423, LOCKED, "Locked");
+ /// 424 Failed Dependency
+ /// [[RFC4918](https://tools.ietf.org/html/rfc4918)]
+ (424, FAILED_DEPENDENCY, "Failed Dependency");
+
+ /// 426 Upgrade Required
+ /// [[RFC7231, Section 6.5.15](https://tools.ietf.org/html/rfc7231#section-6.5.15)]
+ (426, UPGRADE_REQUIRED, "Upgrade Required");
+
+ /// 428 Precondition Required
+ /// [[RFC6585](https://tools.ietf.org/html/rfc6585)]
+ (428, PRECONDITION_REQUIRED, "Precondition Required");
+ /// 429 Too Many Requests
+ /// [[RFC6585](https://tools.ietf.org/html/rfc6585)]
+ (429, TOO_MANY_REQUESTS, "Too Many Requests");
+
+ /// 431 Request Header Fields Too Large
+ /// [[RFC6585](https://tools.ietf.org/html/rfc6585)]
+ (431, REQUEST_HEADER_FIELDS_TOO_LARGE, "Request Header Fields Too Large");
+
+ /// 451 Unavailable For Legal Reasons
+ /// [[RFC7725](http://tools.ietf.org/html/rfc7725)]
+ (451, UNAVAILABLE_FOR_LEGAL_REASONS, "Unavailable For Legal Reasons");
+
+ /// 500 Internal Server Error
+ /// [[RFC7231, Section 6.6.1](https://tools.ietf.org/html/rfc7231#section-6.6.1)]
+ (500, INTERNAL_SERVER_ERROR, "Internal Server Error");
+ /// 501 Not Implemented
+ /// [[RFC7231, Section 6.6.2](https://tools.ietf.org/html/rfc7231#section-6.6.2)]
+ (501, NOT_IMPLEMENTED, "Not Implemented");
+ /// 502 Bad Gateway
+ /// [[RFC7231, Section 6.6.3](https://tools.ietf.org/html/rfc7231#section-6.6.3)]
+ (502, BAD_GATEWAY, "Bad Gateway");
+ /// 503 Service Unavailable
+ /// [[RFC7231, Section 6.6.4](https://tools.ietf.org/html/rfc7231#section-6.6.4)]
+ (503, SERVICE_UNAVAILABLE, "Service Unavailable");
+ /// 504 Gateway Timeout
+ /// [[RFC7231, Section 6.6.5](https://tools.ietf.org/html/rfc7231#section-6.6.5)]
+ (504, GATEWAY_TIMEOUT, "Gateway Timeout");
+ /// 505 HTTP Version Not Supported
+ /// [[RFC7231, Section 6.6.6](https://tools.ietf.org/html/rfc7231#section-6.6.6)]
+ (505, HTTP_VERSION_NOT_SUPPORTED, "HTTP Version Not Supported");
+ /// 506 Variant Also Negotiates
+ /// [[RFC2295](https://tools.ietf.org/html/rfc2295)]
+ (506, VARIANT_ALSO_NEGOTIATES, "Variant Also Negotiates");
+ /// 507 Insufficient Storage
+ /// [[RFC4918](https://tools.ietf.org/html/rfc4918)]
+ (507, INSUFFICIENT_STORAGE, "Insufficient Storage");
+ /// 508 Loop Detected
+ /// [[RFC5842](https://tools.ietf.org/html/rfc5842)]
+ (508, LOOP_DETECTED, "Loop Detected");
+
+ /// 510 Not Extended
+ /// [[RFC2774](https://tools.ietf.org/html/rfc2774)]
+ (510, NOT_EXTENDED, "Not Extended");
+ /// 511 Network Authentication Required
+ /// [[RFC6585](https://tools.ietf.org/html/rfc6585)]
+ (511, NETWORK_AUTHENTICATION_REQUIRED, "Network Authentication Required");
+}
+
+impl InvalidStatusCode {
+ fn new() -> InvalidStatusCode {
+ InvalidStatusCode {
+ _priv: (),
+ }
+ }
+}
+
+impl fmt::Debug for InvalidStatusCode {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ f.debug_struct("InvalidStatusCode")
+ // skip _priv noise
+ .finish()
+ }
+}
+
+impl fmt::Display for InvalidStatusCode {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("invalid status code")
+ }
+}
+
+impl Error for InvalidStatusCode {}
+
+// A string of packed 3-ASCII-digit status code values for the supported range
+// of [100, 999] (900 codes, 2700 bytes).
+const CODE_DIGITS: &'static str = "\
+100101102103104105106107108109110111112113114115116117118119\
+120121122123124125126127128129130131132133134135136137138139\
+140141142143144145146147148149150151152153154155156157158159\
+160161162163164165166167168169170171172173174175176177178179\
+180181182183184185186187188189190191192193194195196197198199\
+200201202203204205206207208209210211212213214215216217218219\
+220221222223224225226227228229230231232233234235236237238239\
+240241242243244245246247248249250251252253254255256257258259\
+260261262263264265266267268269270271272273274275276277278279\
+280281282283284285286287288289290291292293294295296297298299\
+300301302303304305306307308309310311312313314315316317318319\
+320321322323324325326327328329330331332333334335336337338339\
+340341342343344345346347348349350351352353354355356357358359\
+360361362363364365366367368369370371372373374375376377378379\
+380381382383384385386387388389390391392393394395396397398399\
+400401402403404405406407408409410411412413414415416417418419\
+420421422423424425426427428429430431432433434435436437438439\
+440441442443444445446447448449450451452453454455456457458459\
+460461462463464465466467468469470471472473474475476477478479\
+480481482483484485486487488489490491492493494495496497498499\
+500501502503504505506507508509510511512513514515516517518519\
+520521522523524525526527528529530531532533534535536537538539\
+540541542543544545546547548549550551552553554555556557558559\
+560561562563564565566567568569570571572573574575576577578579\
+580581582583584585586587588589590591592593594595596597598599\
+600601602603604605606607608609610611612613614615616617618619\
+620621622623624625626627628629630631632633634635636637638639\
+640641642643644645646647648649650651652653654655656657658659\
+660661662663664665666667668669670671672673674675676677678679\
+680681682683684685686687688689690691692693694695696697698699\
+700701702703704705706707708709710711712713714715716717718719\
+720721722723724725726727728729730731732733734735736737738739\
+740741742743744745746747748749750751752753754755756757758759\
+760761762763764765766767768769770771772773774775776777778779\
+780781782783784785786787788789790791792793794795796797798799\
+800801802803804805806807808809810811812813814815816817818819\
+820821822823824825826827828829830831832833834835836837838839\
+840841842843844845846847848849850851852853854855856857858859\
+860861862863864865866867868869870871872873874875876877878879\
+880881882883884885886887888889890891892893894895896897898899\
+900901902903904905906907908909910911912913914915916917918919\
+920921922923924925926927928929930931932933934935936937938939\
+940941942943944945946947948949950951952953954955956957958959\
+960961962963964965966967968969970971972973974975976977978979\
+980981982983984985986987988989990991992993994995996997998999";
diff --git a/extra_versions/crates/http/src/uri/authority.rs b/extra_versions/crates/http/src/uri/authority.rs
new file mode 100644
index 0000000..f41ddd1
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/authority.rs
@@ -0,0 +1,684 @@
+use std::convert::TryFrom;
+use std::hash::{Hash, Hasher};
+use std::str::FromStr;
+use std::{cmp, fmt, str};
+
+use bytes::Bytes;
+
+use super::{ErrorKind, InvalidUri, Port, URI_CHARS};
+use crate::byte_str::ByteStr;
+
+/// Represents the authority component of a URI.
+#[derive(Clone)]
+pub struct Authority {
+ pub(super) data: ByteStr,
+}
+
+impl Authority {
+ pub(super) fn empty() -> Self {
+ Authority {
+ data: ByteStr::new(),
+ }
+ }
+
+ // Not public while `bytes` is unstable.
+ pub(super) fn from_shared(s: Bytes) -> Result<Self, InvalidUri> {
+ // Precondition on create_authority: trivially satisfied by the
+ // identity clousre
+ create_authority(s, |s| s)
+ }
+
+ /// Attempt to convert an `Authority` from a static string.
+ ///
+ /// This function will not perform any copying, and the string will be
+ /// checked if it is empty or contains an invalid character.
+ ///
+ /// # Panics
+ ///
+ /// This function panics if the argument contains invalid characters or
+ /// is empty.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority = Authority::from_static("example.com");
+ /// assert_eq!(authority.host(), "example.com");
+ /// ```
+ pub fn from_static(src: &'static str) -> Self {
+ Authority::from_shared(Bytes::from_static(src.as_bytes()))
+ .expect("static str is not valid authority")
+ }
+
+ /// Attempt to convert a `Bytes` buffer to a `Authority`.
+ ///
+ /// This will try to prevent a copy if the type passed is the type used
+ /// internally, and will copy the data if it is not.
+ pub fn from_maybe_shared<T>(src: T) -> Result<Self, InvalidUri>
+ where
+ T: AsRef<[u8]> + 'static,
+ {
+ if_downcast_into!(T, Bytes, src, {
+ return Authority::from_shared(src);
+ });
+
+ Authority::try_from(src.as_ref())
+ }
+
+ // Note: this may return an *empty* Authority. You might want `parse_non_empty`.
+ // Postcondition: for all Ok() returns, s[..ret.unwrap()] is valid UTF-8 where
+ // ret is the return value.
+ pub(super) fn parse(s: &[u8]) -> Result<usize, InvalidUri> {
+ let mut colon_cnt = 0u32;
+ let mut start_bracket = false;
+ let mut end_bracket = false;
+ let mut has_percent = false;
+ let mut end = s.len();
+ let mut at_sign_pos = None;
+ const MAX_COLONS: u32 = 8; // e.g., [FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80
+
+ // Among other things, this loop checks that every byte in s up to the
+ // first '/', '?', or '#' is a valid URI character (or in some contexts,
+ // a '%'). This means that each such byte is a valid single-byte UTF-8
+ // code point.
+ for (i, &b) in s.iter().enumerate() {
+ match URI_CHARS[b as usize] {
+ b'/' | b'?' | b'#' => {
+ end = i;
+ break;
+ }
+ b':' => {
+ if colon_cnt >= MAX_COLONS {
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+ colon_cnt += 1;
+ }
+ b'[' => {
+ if has_percent || start_bracket {
+ // Something other than the userinfo has a `%`, so reject it.
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+ start_bracket = true;
+ }
+ b']' => {
+ if (!start_bracket) || end_bracket {
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+ end_bracket = true;
+
+ // Those were part of an IPv6 hostname, so forget them...
+ colon_cnt = 0;
+ has_percent = false;
+ }
+ b'@' => {
+ at_sign_pos = Some(i);
+
+ // Those weren't a port colon, but part of the
+ // userinfo, so it needs to be forgotten.
+ colon_cnt = 0;
+ has_percent = false;
+ }
+ 0 if b == b'%' => {
+ // Per https://tools.ietf.org/html/rfc3986#section-3.2.1 and
+ // https://url.spec.whatwg.org/#authority-state
+ // the userinfo can have a percent-encoded username and password,
+ // so record that a `%` was found. If this turns out to be
+ // part of the userinfo, this flag will be cleared.
+ // Also per https://tools.ietf.org/html/rfc6874, percent-encoding can
+ // be used to indicate a zone identifier.
+ // If the flag hasn't been cleared at the end, that means this
+ // was part of the hostname (and not part of an IPv6 address), and
+ // will fail with an error.
+ has_percent = true;
+ }
+ 0 => {
+ return Err(ErrorKind::InvalidUriChar.into());
+ }
+ _ => {}
+ }
+ }
+
+ if start_bracket ^ end_bracket {
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+
+ if colon_cnt > 1 {
+ // Things like 'localhost:8080:3030' are rejected.
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+
+ if end > 0 && at_sign_pos == Some(end - 1) {
+ // If there's nothing after an `@`, this is bonkers.
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+
+ if has_percent {
+ // Something after the userinfo has a `%`, so reject it.
+ return Err(ErrorKind::InvalidAuthority.into());
+ }
+
+ Ok(end)
+ }
+
+ // Parse bytes as an Authority, not allowing an empty string.
+ //
+ // This should be used by functions that allow a user to parse
+ // an `Authority` by itself.
+ //
+ // Postcondition: for all Ok() returns, s[..ret.unwrap()] is valid UTF-8 where
+ // ret is the return value.
+ fn parse_non_empty(s: &[u8]) -> Result<usize, InvalidUri> {
+ if s.is_empty() {
+ return Err(ErrorKind::Empty.into());
+ }
+ Authority::parse(s)
+ }
+
+ /// Get the host of this `Authority`.
+ ///
+ /// The host subcomponent of authority is identified by an IP literal
+ /// encapsulated within square brackets, an IPv4 address in dotted- decimal
+ /// form, or a registered name. The host subcomponent is **case-insensitive**.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |---------|
+ /// |
+ /// host
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let authority: Authority = "example.org:80".parse().unwrap();
+ ///
+ /// assert_eq!(authority.host(), "example.org");
+ /// ```
+ #[inline]
+ pub fn host(&self) -> &str {
+ host(self.as_str())
+ }
+
+ /// Get the port part of this `Authority`.
+ ///
+ /// The port subcomponent of authority is designated by an optional port
+ /// number following the host and delimited from it by a single colon (":")
+ /// character. It can be turned into a decimal port number with the `as_u16`
+ /// method or as a `str` with the `as_str` method.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-|
+ /// |
+ /// port
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Authority with port
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority: Authority = "example.org:80".parse().unwrap();
+ ///
+ /// let port = authority.port().unwrap();
+ /// assert_eq!(port.as_u16(), 80);
+ /// assert_eq!(port.as_str(), "80");
+ /// ```
+ ///
+ /// Authority without port
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority: Authority = "example.org".parse().unwrap();
+ ///
+ /// assert!(authority.port().is_none());
+ /// ```
+ pub fn port(&self) -> Option<Port<&str>> {
+ let bytes = self.as_str();
+ bytes
+ .rfind(":")
+ .and_then(|i| Port::from_str(&bytes[i + 1..]).ok())
+ }
+
+ /// Get the port of this `Authority` as a `u16`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority: Authority = "example.org:80".parse().unwrap();
+ ///
+ /// assert_eq!(authority.port_u16(), Some(80));
+ /// ```
+ pub fn port_u16(&self) -> Option<u16> {
+ self.port().and_then(|p| Some(p.as_u16()))
+ }
+
+ /// Return a str representation of the authority
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ &self.data[..]
+ }
+}
+
+// Purposefully not public while `bytes` is unstable.
+// impl TryFrom<Bytes> for Authority
+
+impl AsRef<str> for Authority {
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl PartialEq for Authority {
+ fn eq(&self, other: &Authority) -> bool {
+ self.data.eq_ignore_ascii_case(&other.data)
+ }
+}
+
+impl Eq for Authority {}
+
+/// Case-insensitive equality
+///
+/// # Examples
+///
+/// ```
+/// # use http::uri::Authority;
+/// let authority: Authority = "HELLO.com".parse().unwrap();
+/// assert_eq!(authority, "hello.coM");
+/// assert_eq!("hello.com", authority);
+/// ```
+impl PartialEq<str> for Authority {
+ fn eq(&self, other: &str) -> bool {
+ self.data.eq_ignore_ascii_case(other)
+ }
+}
+
+impl PartialEq<Authority> for str {
+ fn eq(&self, other: &Authority) -> bool {
+ self.eq_ignore_ascii_case(other.as_str())
+ }
+}
+
+impl<'a> PartialEq<Authority> for &'a str {
+ fn eq(&self, other: &Authority) -> bool {
+ self.eq_ignore_ascii_case(other.as_str())
+ }
+}
+
+impl<'a> PartialEq<&'a str> for Authority {
+ fn eq(&self, other: &&'a str) -> bool {
+ self.data.eq_ignore_ascii_case(other)
+ }
+}
+
+impl PartialEq<String> for Authority {
+ fn eq(&self, other: &String) -> bool {
+ self.data.eq_ignore_ascii_case(other.as_str())
+ }
+}
+
+impl PartialEq<Authority> for String {
+ fn eq(&self, other: &Authority) -> bool {
+ self.as_str().eq_ignore_ascii_case(other.as_str())
+ }
+}
+
+/// Case-insensitive ordering
+///
+/// # Examples
+///
+/// ```
+/// # use http::uri::Authority;
+/// let authority: Authority = "DEF.com".parse().unwrap();
+/// assert!(authority < "ghi.com");
+/// assert!(authority > "abc.com");
+/// ```
+impl PartialOrd for Authority {
+ fn partial_cmp(&self, other: &Authority) -> Option<cmp::Ordering> {
+ let left = self.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl PartialOrd<str> for Authority {
+ fn partial_cmp(&self, other: &str) -> Option<cmp::Ordering> {
+ let left = self.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl PartialOrd<Authority> for str {
+ fn partial_cmp(&self, other: &Authority) -> Option<cmp::Ordering> {
+ let left = self.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl<'a> PartialOrd<Authority> for &'a str {
+ fn partial_cmp(&self, other: &Authority) -> Option<cmp::Ordering> {
+ let left = self.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl<'a> PartialOrd<&'a str> for Authority {
+ fn partial_cmp(&self, other: &&'a str) -> Option<cmp::Ordering> {
+ let left = self.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl PartialOrd<String> for Authority {
+ fn partial_cmp(&self, other: &String) -> Option<cmp::Ordering> {
+ let left = self.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+impl PartialOrd<Authority> for String {
+ fn partial_cmp(&self, other: &Authority) -> Option<cmp::Ordering> {
+ let left = self.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ let right = other.data.as_bytes().iter().map(|b| b.to_ascii_lowercase());
+ left.partial_cmp(right)
+ }
+}
+
+/// Case-insensitive hashing
+///
+/// # Examples
+///
+/// ```
+/// # use http::uri::Authority;
+/// # use std::hash::{Hash, Hasher};
+/// # use std::collections::hash_map::DefaultHasher;
+///
+/// let a: Authority = "HELLO.com".parse().unwrap();
+/// let b: Authority = "hello.coM".parse().unwrap();
+///
+/// let mut s = DefaultHasher::new();
+/// a.hash(&mut s);
+/// let a = s.finish();
+///
+/// let mut s = DefaultHasher::new();
+/// b.hash(&mut s);
+/// let b = s.finish();
+///
+/// assert_eq!(a, b);
+/// ```
+impl Hash for Authority {
+ fn hash<H>(&self, state: &mut H)
+ where
+ H: Hasher,
+ {
+ self.data.len().hash(state);
+ for &b in self.data.as_bytes() {
+ state.write_u8(b.to_ascii_lowercase());
+ }
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for Authority {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a [u8]) -> Result<Self, Self::Error> {
+ // parse first, and only turn into Bytes if valid
+
+ // Preconditon on create_authority: copy_from_slice() copies all of
+ // bytes from the [u8] parameter into a new Bytes
+ create_authority(s, |s| Bytes::copy_from_slice(s))
+ }
+}
+
+impl<'a> TryFrom<&'a str> for Authority {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a str) -> Result<Self, Self::Error> {
+ TryFrom::try_from(s.as_bytes())
+ }
+}
+
+impl TryFrom<Vec<u8>> for Authority {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error> {
+ Authority::from_shared(vec.into())
+ }
+}
+
+impl TryFrom<String> for Authority {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(t: String) -> Result<Self, Self::Error> {
+ Authority::from_shared(t.into())
+ }
+}
+
+impl FromStr for Authority {
+ type Err = InvalidUri;
+
+ fn from_str(s: &str) -> Result<Self, InvalidUri> {
+ TryFrom::try_from(s)
+ }
+}
+
+impl fmt::Debug for Authority {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(self.as_str())
+ }
+}
+
+impl fmt::Display for Authority {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(self.as_str())
+ }
+}
+
+fn host(auth: &str) -> &str {
+ let host_port = auth
+ .rsplitn(2, '@')
+ .next()
+ .expect("split always has at least 1 item");
+
+ if host_port.as_bytes()[0] == b'[' {
+ let i = host_port
+ .find(']')
+ .expect("parsing should validate brackets");
+ // ..= ranges aren't available in 1.20, our minimum Rust version...
+ &host_port[0..i + 1]
+ } else {
+ host_port
+ .split(':')
+ .next()
+ .expect("split always has at least 1 item")
+ }
+}
+
+// Precondition: f converts all of the bytes in the passed in B into the
+// returned Bytes.
+fn create_authority<B, F>(b: B, f: F) -> Result<Authority, InvalidUri>
+where
+ B: AsRef<[u8]>,
+ F: FnOnce(B) -> Bytes,
+{
+ let s = b.as_ref();
+ let authority_end = Authority::parse_non_empty(s)?;
+
+ if authority_end != s.len() {
+ return Err(ErrorKind::InvalidUriChar.into());
+ }
+
+ let bytes = f(b);
+
+ Ok(Authority {
+ // Safety: the postcondition on parse_non_empty() and the check against
+ // s.len() ensure that b is valid UTF-8. The precondition on f ensures
+ // that this is carried through to bytes.
+ data: unsafe { ByteStr::from_utf8_unchecked(bytes) },
+ })
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn parse_empty_string_is_error() {
+ let err = Authority::parse_non_empty(b"").unwrap_err();
+ assert_eq!(err.0, ErrorKind::Empty);
+ }
+
+ #[test]
+ fn equal_to_self_of_same_authority() {
+ let authority1: Authority = "example.com".parse().unwrap();
+ let authority2: Authority = "EXAMPLE.COM".parse().unwrap();
+ assert_eq!(authority1, authority2);
+ assert_eq!(authority2, authority1);
+ }
+
+ #[test]
+ fn not_equal_to_self_of_different_authority() {
+ let authority1: Authority = "example.com".parse().unwrap();
+ let authority2: Authority = "test.com".parse().unwrap();
+ assert_ne!(authority1, authority2);
+ assert_ne!(authority2, authority1);
+ }
+
+ #[test]
+ fn equates_with_a_str() {
+ let authority: Authority = "example.com".parse().unwrap();
+ assert_eq!(&authority, "EXAMPLE.com");
+ assert_eq!("EXAMPLE.com", &authority);
+ assert_eq!(authority, "EXAMPLE.com");
+ assert_eq!("EXAMPLE.com", authority);
+ }
+
+ #[test]
+ fn from_static_equates_with_a_str() {
+ let authority = Authority::from_static("example.com");
+ assert_eq!(authority, "example.com");
+ }
+
+ #[test]
+ fn not_equal_with_a_str_of_a_different_authority() {
+ let authority: Authority = "example.com".parse().unwrap();
+ assert_ne!(&authority, "test.com");
+ assert_ne!("test.com", &authority);
+ assert_ne!(authority, "test.com");
+ assert_ne!("test.com", authority);
+ }
+
+ #[test]
+ fn equates_with_a_string() {
+ let authority: Authority = "example.com".parse().unwrap();
+ assert_eq!(authority, "EXAMPLE.com".to_string());
+ assert_eq!("EXAMPLE.com".to_string(), authority);
+ }
+
+ #[test]
+ fn equates_with_a_string_of_a_different_authority() {
+ let authority: Authority = "example.com".parse().unwrap();
+ assert_ne!(authority, "test.com".to_string());
+ assert_ne!("test.com".to_string(), authority);
+ }
+
+ #[test]
+ fn compares_to_self() {
+ let authority1: Authority = "abc.com".parse().unwrap();
+ let authority2: Authority = "def.com".parse().unwrap();
+ assert!(authority1 < authority2);
+ assert!(authority2 > authority1);
+ }
+
+ #[test]
+ fn compares_with_a_str() {
+ let authority: Authority = "def.com".parse().unwrap();
+ // with ref
+ assert!(&authority < "ghi.com");
+ assert!("ghi.com" > &authority);
+ assert!(&authority > "abc.com");
+ assert!("abc.com" < &authority);
+
+ // no ref
+ assert!(authority < "ghi.com");
+ assert!("ghi.com" > authority);
+ assert!(authority > "abc.com");
+ assert!("abc.com" < authority);
+ }
+
+ #[test]
+ fn compares_with_a_string() {
+ let authority: Authority = "def.com".parse().unwrap();
+ assert!(authority < "ghi.com".to_string());
+ assert!("ghi.com".to_string() > authority);
+ assert!(authority > "abc.com".to_string());
+ assert!("abc.com".to_string() < authority);
+ }
+
+ #[test]
+ fn allows_percent_in_userinfo() {
+ let authority_str = "a%2f:b%[email protected]";
+ let authority: Authority = authority_str.parse().unwrap();
+ assert_eq!(authority, authority_str);
+ }
+
+ #[test]
+ fn rejects_percent_in_hostname() {
+ let err = Authority::parse_non_empty(b"example%2f.com").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+
+ let err = Authority::parse_non_empty(b"a%2f:b%2f@example%2f.com").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+ }
+
+ #[test]
+ fn allows_percent_in_ipv6_address() {
+ let authority_str = "[fe80::1:2:3:4%25eth0]";
+ let result: Authority = authority_str.parse().unwrap();
+ assert_eq!(result, authority_str);
+ }
+
+ #[test]
+ fn reject_obviously_invalid_ipv6_address() {
+ let err = Authority::parse_non_empty(b"[0:1:2:3:4:5:6:7:8:9:10:11:12:13:14]").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+ }
+
+ #[test]
+ fn rejects_percent_outside_ipv6_address() {
+ let err = Authority::parse_non_empty(b"1234%20[fe80::1:2:3:4]").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+
+ let err = Authority::parse_non_empty(b"[fe80::1:2:3:4]%20").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+ }
+
+ #[test]
+ fn rejects_invalid_utf8() {
+ let err = Authority::try_from([0xc0u8].as_ref()).unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidUriChar);
+
+ let err = Authority::from_shared(Bytes::from_static([0xc0u8].as_ref())).unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidUriChar);
+ }
+
+ #[test]
+ fn rejects_invalid_use_of_brackets() {
+ let err = Authority::parse_non_empty(b"[]@[").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+
+ // reject tie-fighter
+ let err = Authority::parse_non_empty(b"]o[").unwrap_err();
+ assert_eq!(err.0, ErrorKind::InvalidAuthority);
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/builder.rs b/extra_versions/crates/http/src/uri/builder.rs
new file mode 100644
index 0000000..825c0fa
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/builder.rs
@@ -0,0 +1,197 @@
+use std::convert::{TryFrom, TryInto};
+
+use super::{Authority, Parts, PathAndQuery, Scheme};
+use crate::Uri;
+
+/// A builder for `Uri`s.
+///
+/// This type can be used to construct an instance of `Uri`
+/// through a builder pattern.
+#[derive(Debug)]
+pub struct Builder {
+ parts: Result<Parts, crate::Error>,
+}
+
+impl Builder {
+ /// Creates a new default instance of `Builder` to construct a `Uri`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let uri = uri::Builder::new()
+ /// .scheme("https")
+ /// .authority("hyper.rs")
+ /// .path_and_query("/")
+ /// .build()
+ /// .unwrap();
+ /// ```
+ #[inline]
+ pub fn new() -> Builder {
+ Builder::default()
+ }
+
+ /// Set the `Scheme` for this URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let mut builder = uri::Builder::new();
+ /// builder.scheme("https");
+ /// ```
+ pub fn scheme<T>(self, scheme: T) -> Self
+ where
+ Scheme: TryFrom<T>,
+ <Scheme as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.map(move |mut parts| {
+ let scheme = scheme.try_into().map_err(Into::into)?;
+ parts.scheme = Some(scheme);
+ Ok(parts)
+ })
+ }
+
+ /// Set the `Authority` for this URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let uri = uri::Builder::new()
+ /// .authority("tokio.rs")
+ /// .build()
+ /// .unwrap();
+ /// ```
+ pub fn authority<T>(self, auth: T) -> Self
+ where
+ Authority: TryFrom<T>,
+ <Authority as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.map(move |mut parts| {
+ let auth = auth.try_into().map_err(Into::into)?;
+ parts.authority = Some(auth);
+ Ok(parts)
+ })
+ }
+
+ /// Set the `PathAndQuery` for this URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let uri = uri::Builder::new()
+ /// .path_and_query("/hello?foo=bar")
+ /// .build()
+ /// .unwrap();
+ /// ```
+ pub fn path_and_query<T>(self, p_and_q: T) -> Self
+ where
+ PathAndQuery: TryFrom<T>,
+ <PathAndQuery as TryFrom<T>>::Error: Into<crate::Error>,
+ {
+ self.map(move |mut parts| {
+ let p_and_q = p_and_q.try_into().map_err(Into::into)?;
+ parts.path_and_query = Some(p_and_q);
+ Ok(parts)
+ })
+ }
+
+ /// Consumes this builder, and tries to construct a valid `Uri` from
+ /// the configured pieces.
+ ///
+ /// # Errors
+ ///
+ /// This function may return an error if any previously configured argument
+ /// failed to parse or get converted to the internal representation. For
+ /// example if an invalid `scheme` was specified via `scheme("!@#%/^")`
+ /// the error will be returned when this function is called rather than
+ /// when `scheme` was called.
+ ///
+ /// Additionally, the various forms of URI require certain combinations of
+ /// parts to be set to be valid. If the parts don't fit into any of the
+ /// valid forms of URI, a new error is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::*;
+ ///
+ /// let uri = Uri::builder()
+ /// .build()
+ /// .unwrap();
+ /// ```
+ pub fn build(self) -> Result<Uri, crate::Error> {
+ let parts = self.parts?;
+ Uri::from_parts(parts).map_err(Into::into)
+ }
+
+ // private
+
+ fn map<F>(self, func: F) -> Self
+ where
+ F: FnOnce(Parts) -> Result<Parts, crate::Error>,
+ {
+
+ Builder {
+ parts: self.parts.and_then(func),
+ }
+ }
+}
+
+impl Default for Builder {
+ #[inline]
+ fn default() -> Builder {
+ Builder {
+ parts: Ok(Parts::default()),
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn build_from_str() {
+ let uri = Builder::new()
+ .scheme(Scheme::HTTP)
+ .authority("hyper.rs")
+ .path_and_query("/foo?a=1")
+ .build()
+ .unwrap();
+ assert_eq!(uri.scheme_str(), Some("http"));
+ assert_eq!(uri.authority().unwrap().host(), "hyper.rs");
+ assert_eq!(uri.path(), "/foo");
+ assert_eq!(uri.query(), Some("a=1"));
+ }
+
+ #[test]
+ fn build_from_string() {
+ for i in 1..10 {
+ let uri = Builder::new()
+ .path_and_query(format!("/foo?a={}", i))
+ .build()
+ .unwrap();
+ let expected_query = format!("a={}", i);
+ assert_eq!(uri.path(), "/foo");
+ assert_eq!(uri.query(), Some(expected_query.as_str()));
+ }
+ }
+
+ #[test]
+ fn build_from_string_ref() {
+ for i in 1..10 {
+ let p_a_q = format!("/foo?a={}", i);
+ let uri = Builder::new().path_and_query(&p_a_q).build().unwrap();
+ let expected_query = format!("a={}", i);
+ assert_eq!(uri.path(), "/foo");
+ assert_eq!(uri.query(), Some(expected_query.as_str()));
+ }
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/mod.rs b/extra_versions/crates/http/src/uri/mod.rs
new file mode 100644
index 0000000..5ebd47b
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/mod.rs
@@ -0,0 +1,1118 @@
+//! URI component of request and response lines
+//!
+//! This module primarily contains the `Uri` type which is a component of all
+//! HTTP requests and also reexports this type at the root of the crate. A URI
+//! is not always a "full URL" in the sense of something you'd type into a web
+//! browser, but HTTP requests may only have paths on servers but may have full
+//! schemes and hostnames on clients.
+//!
+//! # Examples
+//!
+//! ```
+//! use http::Uri;
+//!
+//! let uri = "/foo/bar?baz".parse::<Uri>().unwrap();
+//! assert_eq!(uri.path(), "/foo/bar");
+//! assert_eq!(uri.query(), Some("baz"));
+//! assert_eq!(uri.host(), None);
+//!
+//! let uri = "https://www.rust-lang.org/install.html".parse::<Uri>().unwrap();
+//! assert_eq!(uri.scheme_str(), Some("https"));
+//! assert_eq!(uri.host(), Some("www.rust-lang.org"));
+//! assert_eq!(uri.path(), "/install.html");
+//! ```
+
+use crate::byte_str::ByteStr;
+use std::convert::TryFrom;
+
+use bytes::Bytes;
+
+use std::error::Error;
+use std::hash::{Hash, Hasher};
+use std::str::{self, FromStr};
+use std::{fmt, u16, u8};
+
+use self::scheme::Scheme2;
+
+pub use self::authority::Authority;
+pub use self::builder::Builder;
+pub use self::path::PathAndQuery;
+pub use self::port::Port;
+pub use self::scheme::Scheme;
+
+mod authority;
+mod builder;
+mod path;
+mod port;
+mod scheme;
+#[cfg(test)]
+mod tests;
+
+/// The URI component of a request.
+///
+/// For HTTP 1, this is included as part of the request line. From Section 5.3,
+/// Request Target:
+///
+/// > Once an inbound connection is obtained, the client sends an HTTP
+/// > request message (Section 3) with a request-target derived from the
+/// > target URI. There are four distinct formats for the request-target,
+/// > depending on both the method being requested and whether the request
+/// > is to a proxy.
+/// >
+/// > ```notrust
+/// > request-target = origin-form
+/// > / absolute-form
+/// > / authority-form
+/// > / asterisk-form
+/// > ```
+///
+/// The URI is structured as follows:
+///
+/// ```notrust
+/// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+/// |-| |-------------------------------||--------| |-------------------| |-----|
+/// | | | | |
+/// scheme authority path query fragment
+/// ```
+///
+/// For HTTP 2.0, the URI is encoded using pseudoheaders.
+///
+/// # Examples
+///
+/// ```
+/// use http::Uri;
+///
+/// let uri = "/foo/bar?baz".parse::<Uri>().unwrap();
+/// assert_eq!(uri.path(), "/foo/bar");
+/// assert_eq!(uri.query(), Some("baz"));
+/// assert_eq!(uri.host(), None);
+///
+/// let uri = "https://www.rust-lang.org/install.html".parse::<Uri>().unwrap();
+/// assert_eq!(uri.scheme_str(), Some("https"));
+/// assert_eq!(uri.host(), Some("www.rust-lang.org"));
+/// assert_eq!(uri.path(), "/install.html");
+/// ```
+#[derive(Clone)]
+pub struct Uri {
+ scheme: Scheme,
+ authority: Authority,
+ path_and_query: PathAndQuery,
+}
+
+/// The various parts of a URI.
+///
+/// This struct is used to provide to and retrieve from a URI.
+#[derive(Debug, Default)]
+pub struct Parts {
+ /// The scheme component of a URI
+ pub scheme: Option<Scheme>,
+
+ /// The authority component of a URI
+ pub authority: Option<Authority>,
+
+ /// The origin-form component of a URI
+ pub path_and_query: Option<PathAndQuery>,
+
+ /// Allow extending in the future
+ _priv: (),
+}
+
+/// An error resulting from a failed attempt to construct a URI.
+#[derive(Debug)]
+pub struct InvalidUri(ErrorKind);
+
+/// An error resulting from a failed attempt to construct a URI.
+#[derive(Debug)]
+pub struct InvalidUriParts(InvalidUri);
+
+#[derive(Debug, Eq, PartialEq)]
+enum ErrorKind {
+ InvalidUriChar,
+ InvalidScheme,
+ InvalidAuthority,
+ InvalidPort,
+ InvalidFormat,
+ SchemeMissing,
+ AuthorityMissing,
+ PathAndQueryMissing,
+ TooLong,
+ Empty,
+ SchemeTooLong,
+}
+
+// u16::MAX is reserved for None
+const MAX_LEN: usize = (u16::MAX - 1) as usize;
+
+// URI_CHARS is a table of valid characters in a URI. An entry in the table is
+// 0 for invalid characters. For valid characters the entry is itself (i.e.
+// the entry for 33 is b'!' because b'!' == 33u8). An important characteristic
+// of this table is that all entries above 127 are invalid. This makes all of the
+// valid entries a valid single-byte UTF-8 code point. This means that a slice
+// of such valid entries is valid UTF-8.
+const URI_CHARS: [u8; 256] = [
+ // 0 1 2 3 4 5 6 7 8 9
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2x
+ 0, 0, 0, b'!', 0, b'#', b'$', 0, b'&', b'\'', // 3x
+ b'(', b')', b'*', b'+', b',', b'-', b'.', b'/', b'0', b'1', // 4x
+ b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b':', b';', // 5x
+ 0, b'=', 0, b'?', b'@', b'A', b'B', b'C', b'D', b'E', // 6x
+ b'F', b'G', b'H', b'I', b'J', b'K', b'L', b'M', b'N', b'O', // 7x
+ b'P', b'Q', b'R', b'S', b'T', b'U', b'V', b'W', b'X', b'Y', // 8x
+ b'Z', b'[', 0, b']', 0, b'_', 0, b'a', b'b', b'c', // 9x
+ b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', // 10x
+ b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', // 11x
+ b'x', b'y', b'z', 0, 0, 0, b'~', 0, 0, 0, // 12x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 13x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 15x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 17x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 18x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 19x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 21x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 22x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 23x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 24x
+ 0, 0, 0, 0, 0, 0 // 25x
+];
+
+impl Uri {
+ /// Creates a new builder-style object to manufacture a `Uri`.
+ ///
+ /// This method returns an instance of `Builder` which can be usd to
+ /// create a `Uri`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use http::Uri;
+ ///
+ /// let uri = Uri::builder()
+ /// .scheme("https")
+ /// .authority("hyper.rs")
+ /// .path_and_query("/")
+ /// .build()
+ /// .unwrap();
+ /// ```
+ pub fn builder() -> Builder {
+ Builder::new()
+ }
+
+ /// Attempt to convert a `Parts` into a `Uri`.
+ ///
+ /// # Examples
+ ///
+ /// Relative URI
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let mut parts = Parts::default();
+ /// parts.path_and_query = Some("/foo".parse().unwrap());
+ ///
+ /// let uri = Uri::from_parts(parts).unwrap();
+ ///
+ /// assert_eq!(uri.path(), "/foo");
+ ///
+ /// assert!(uri.scheme().is_none());
+ /// assert!(uri.authority().is_none());
+ /// ```
+ ///
+ /// Absolute URI
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let mut parts = Parts::default();
+ /// parts.scheme = Some("http".parse().unwrap());
+ /// parts.authority = Some("foo.com".parse().unwrap());
+ /// parts.path_and_query = Some("/foo".parse().unwrap());
+ ///
+ /// let uri = Uri::from_parts(parts).unwrap();
+ ///
+ /// assert_eq!(uri.scheme().unwrap().as_str(), "http");
+ /// assert_eq!(uri.authority().unwrap(), "foo.com");
+ /// assert_eq!(uri.path(), "/foo");
+ /// ```
+ pub fn from_parts(src: Parts) -> Result<Uri, InvalidUriParts> {
+ if src.scheme.is_some() {
+ if src.authority.is_none() {
+ return Err(ErrorKind::AuthorityMissing.into());
+ }
+
+ if src.path_and_query.is_none() {
+ return Err(ErrorKind::PathAndQueryMissing.into());
+ }
+ } else {
+ if src.authority.is_some() && src.path_and_query.is_some() {
+ return Err(ErrorKind::SchemeMissing.into());
+ }
+ }
+
+ let scheme = match src.scheme {
+ Some(scheme) => scheme,
+ None => Scheme {
+ inner: Scheme2::None,
+ },
+ };
+
+ let authority = match src.authority {
+ Some(authority) => authority,
+ None => Authority::empty(),
+ };
+
+ let path_and_query = match src.path_and_query {
+ Some(path_and_query) => path_and_query,
+ None => PathAndQuery::empty(),
+ };
+
+ Ok(Uri {
+ scheme: scheme,
+ authority: authority,
+ path_and_query: path_and_query,
+ })
+ }
+
+ /// Attempt to convert a `Bytes` buffer to a `Uri`.
+ ///
+ /// This will try to prevent a copy if the type passed is the type used
+ /// internally, and will copy the data if it is not.
+ pub fn from_maybe_shared<T>(src: T) -> Result<Self, InvalidUri>
+ where
+ T: AsRef<[u8]> + 'static,
+ {
+ if_downcast_into!(T, Bytes, src, {
+ return Uri::from_shared(src);
+ });
+
+ Uri::try_from(src.as_ref())
+ }
+
+ // Not public while `bytes` is unstable.
+ fn from_shared(s: Bytes) -> Result<Uri, InvalidUri> {
+ use self::ErrorKind::*;
+
+ if s.len() > MAX_LEN {
+ return Err(TooLong.into());
+ }
+
+ match s.len() {
+ 0 => {
+ return Err(Empty.into());
+ }
+ 1 => match s[0] {
+ b'/' => {
+ return Ok(Uri {
+ scheme: Scheme::empty(),
+ authority: Authority::empty(),
+ path_and_query: PathAndQuery::slash(),
+ });
+ }
+ b'*' => {
+ return Ok(Uri {
+ scheme: Scheme::empty(),
+ authority: Authority::empty(),
+ path_and_query: PathAndQuery::star(),
+ });
+ }
+ _ => {
+ let authority = Authority::from_shared(s)?;
+
+ return Ok(Uri {
+ scheme: Scheme::empty(),
+ authority: authority,
+ path_and_query: PathAndQuery::empty(),
+ });
+ }
+ },
+ _ => {}
+ }
+
+ if s[0] == b'/' {
+ return Ok(Uri {
+ scheme: Scheme::empty(),
+ authority: Authority::empty(),
+ path_and_query: PathAndQuery::from_shared(s)?,
+ });
+ }
+
+ parse_full(s)
+ }
+
+ /// Convert a `Uri` from a static string.
+ ///
+ /// This function will not perform any copying, however the string is
+ /// checked to ensure that it is valid.
+ ///
+ /// # Panics
+ ///
+ /// This function panics if the argument is an invalid URI.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::Uri;
+ /// let uri = Uri::from_static("http://example.com/foo");
+ ///
+ /// assert_eq!(uri.host().unwrap(), "example.com");
+ /// assert_eq!(uri.path(), "/foo");
+ /// ```
+ pub fn from_static(src: &'static str) -> Self {
+ let s = Bytes::from_static(src.as_bytes());
+ match Uri::from_shared(s) {
+ Ok(uri) => uri,
+ Err(e) => panic!("static str is not valid URI: {}", e),
+ }
+ }
+
+ /// Convert a `Uri` into `Parts`.
+ ///
+ /// # Note
+ ///
+ /// This is just an inherent method providing the same functionality as
+ /// `let parts: Parts = uri.into()`
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let uri: Uri = "/foo".parse().unwrap();
+ ///
+ /// let parts = uri.into_parts();
+ ///
+ /// assert_eq!(parts.path_and_query.unwrap(), "/foo");
+ ///
+ /// assert!(parts.scheme.is_none());
+ /// assert!(parts.authority.is_none());
+ /// ```
+ #[inline]
+ pub fn into_parts(self) -> Parts {
+ self.into()
+ }
+
+ /// Returns the path & query components of the Uri
+ #[inline]
+ pub fn path_and_query(&self) -> Option<&PathAndQuery> {
+ if !self.scheme.inner.is_none() || self.authority.data.is_empty() {
+ Some(&self.path_and_query)
+ } else {
+ None
+ }
+ }
+
+ /// Get the path of this `Uri`.
+ ///
+ /// Both relative and absolute URIs contain a path component, though it
+ /// might be the empty string. The path component is **case sensitive**.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |--------|
+ /// |
+ /// path
+ /// ```
+ ///
+ /// If the URI is `*` then the path component is equal to `*`.
+ ///
+ /// # Examples
+ ///
+ /// A relative URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ ///
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.path(), "/hello/world");
+ /// ```
+ ///
+ /// An absolute URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.path(), "/hello/world");
+ /// ```
+ #[inline]
+ pub fn path(&self) -> &str {
+ if self.has_path() {
+ self.path_and_query.path()
+ } else {
+ ""
+ }
+ }
+
+ /// Get the scheme of this `Uri`.
+ ///
+ /// The URI scheme refers to a specification for assigning identifiers
+ /// within that scheme. Only absolute URIs contain a scheme component, but
+ /// not all absolute URIs will contain a scheme component. Although scheme
+ /// names are case-insensitive, the canonical form is lowercase.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-|
+ /// |
+ /// scheme
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Absolute URI
+ ///
+ /// ```
+ /// use http::uri::{Scheme, Uri};
+ ///
+ /// let uri: Uri = "http://example.org/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.scheme(), Some(&Scheme::HTTP));
+ /// ```
+ ///
+ ///
+ /// Relative URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.scheme().is_none());
+ /// ```
+ #[inline]
+ pub fn scheme(&self) -> Option<&Scheme> {
+ if self.scheme.inner.is_none() {
+ None
+ } else {
+ Some(&self.scheme)
+ }
+ }
+
+ /// Get the scheme of this `Uri` as a `&str`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.scheme_str(), Some("http"));
+ /// ```
+ #[inline]
+ pub fn scheme_str(&self) -> Option<&str> {
+ if self.scheme.inner.is_none() {
+ None
+ } else {
+ Some(self.scheme.as_str())
+ }
+ }
+
+ /// Get the authority of this `Uri`.
+ ///
+ /// The authority is a hierarchical element for naming authority such that
+ /// the remainder of the URI is delegated to that authority. For HTTP, the
+ /// authority consists of the host and port. The host portion of the
+ /// authority is **case-insensitive**.
+ ///
+ /// The authority also includes a `username:password` component, however
+ /// the use of this is deprecated and should be avoided.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-------------------------------|
+ /// |
+ /// authority
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Absolute URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org:80/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.authority().map(|a| a.as_str()), Some("example.org:80"));
+ /// ```
+ ///
+ ///
+ /// Relative URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.authority().is_none());
+ /// ```
+ #[inline]
+ pub fn authority(&self) -> Option<&Authority> {
+ if self.authority.data.is_empty() {
+ None
+ } else {
+ Some(&self.authority)
+ }
+ }
+
+ /// Get the host of this `Uri`.
+ ///
+ /// The host subcomponent of authority is identified by an IP literal
+ /// encapsulated within square brackets, an IPv4 address in dotted- decimal
+ /// form, or a registered name. The host subcomponent is **case-insensitive**.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |---------|
+ /// |
+ /// host
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Absolute URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org:80/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.host(), Some("example.org"));
+ /// ```
+ ///
+ ///
+ /// Relative URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.host().is_none());
+ /// ```
+ #[inline]
+ pub fn host(&self) -> Option<&str> {
+ self.authority().map(|a| a.host())
+ }
+
+ /// Get the port part of this `Uri`.
+ ///
+ /// The port subcomponent of authority is designated by an optional port
+ /// number following the host and delimited from it by a single colon (":")
+ /// character. It can be turned into a decimal port number with the `as_u16`
+ /// method or as a `str` with the `as_str` method.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-|
+ /// |
+ /// port
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Absolute URI with port
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org:80/hello/world".parse().unwrap();
+ ///
+ /// let port = uri.port().unwrap();
+ /// assert_eq!(port.as_u16(), 80);
+ /// ```
+ ///
+ /// Absolute URI without port
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.port().is_none());
+ /// ```
+ ///
+ /// Relative URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.port().is_none());
+ /// ```
+ pub fn port(&self) -> Option<Port<&str>> {
+ self.authority().and_then(|a| a.port())
+ }
+
+ /// Get the port of this `Uri` as a `u16`.
+ ///
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use http::{Uri, uri::Port};
+ /// let uri: Uri = "http://example.org:80/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(uri.port_u16(), Some(80));
+ /// ```
+ pub fn port_u16(&self) -> Option<u16> {
+ self.port().and_then(|p| Some(p.as_u16()))
+ }
+
+ /// Get the query string of this `Uri`, starting after the `?`.
+ ///
+ /// The query component contains non-hierarchical data that, along with data
+ /// in the path component, serves to identify a resource within the scope of
+ /// the URI's scheme and naming authority (if any). The query component is
+ /// indicated by the first question mark ("?") character and terminated by a
+ /// number sign ("#") character or by the end of the URI.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-------------------|
+ /// |
+ /// query
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// Absolute URI
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "http://example.org/hello/world?key=value".parse().unwrap();
+ ///
+ /// assert_eq!(uri.query(), Some("key=value"));
+ /// ```
+ ///
+ /// Relative URI with a query string component
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world?key=value&foo=bar".parse().unwrap();
+ ///
+ /// assert_eq!(uri.query(), Some("key=value&foo=bar"));
+ /// ```
+ ///
+ /// Relative URI without a query string component
+ ///
+ /// ```
+ /// # use http::Uri;
+ /// let uri: Uri = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(uri.query().is_none());
+ /// ```
+ #[inline]
+ pub fn query(&self) -> Option<&str> {
+ self.path_and_query.query()
+ }
+
+ fn has_path(&self) -> bool {
+ !self.path_and_query.data.is_empty() || !self.scheme.inner.is_none()
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for Uri {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(t: &'a [u8]) -> Result<Self, Self::Error> {
+ Uri::from_shared(Bytes::copy_from_slice(t))
+ }
+}
+
+impl<'a> TryFrom<&'a str> for Uri {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(t: &'a str) -> Result<Self, Self::Error> {
+ t.parse()
+ }
+}
+
+impl<'a> TryFrom<&'a String> for Uri {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(t: &'a String) -> Result<Self, Self::Error> {
+ t.parse()
+ }
+}
+
+impl TryFrom<String> for Uri {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(t: String) -> Result<Self, Self::Error> {
+ Uri::from_shared(Bytes::from(t))
+ }
+}
+
+impl<'a> TryFrom<Vec<u8>> for Uri {
+ type Error = InvalidUri;
+
+ #[inline]
+ fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error> {
+ Uri::from_shared(Bytes::from(vec))
+ }
+}
+
+impl TryFrom<Parts> for Uri {
+ type Error = InvalidUriParts;
+
+ #[inline]
+ fn try_from(src: Parts) -> Result<Self, Self::Error> {
+ Uri::from_parts(src)
+ }
+}
+
+impl<'a> TryFrom<&'a Uri> for Uri {
+ type Error = crate::Error;
+
+ #[inline]
+ fn try_from(src: &'a Uri) -> Result<Self, Self::Error> {
+ Ok(src.clone())
+ }
+}
+
+/// Convert an `Authority` into a `Uri`.
+impl From<Authority> for Uri {
+ fn from(authority: Authority) -> Self {
+ Self {
+ scheme: Scheme::empty(),
+ authority,
+ path_and_query: PathAndQuery::empty(),
+ }
+ }
+}
+
+/// Convert a `PathAndQuery` into a `Uri`.
+impl From<PathAndQuery> for Uri {
+ fn from(path_and_query: PathAndQuery) -> Self {
+ Self {
+ scheme: Scheme::empty(),
+ authority: Authority::empty(),
+ path_and_query,
+ }
+ }
+}
+
+/// Convert a `Uri` into `Parts`
+impl From<Uri> for Parts {
+ fn from(src: Uri) -> Self {
+ let path_and_query = if src.has_path() {
+ Some(src.path_and_query)
+ } else {
+ None
+ };
+
+ let scheme = match src.scheme.inner {
+ Scheme2::None => None,
+ _ => Some(src.scheme),
+ };
+
+ let authority = if src.authority.data.is_empty() {
+ None
+ } else {
+ Some(src.authority)
+ };
+
+ Parts {
+ scheme: scheme,
+ authority: authority,
+ path_and_query: path_and_query,
+ _priv: (),
+ }
+ }
+}
+
+fn parse_full(mut s: Bytes) -> Result<Uri, InvalidUri> {
+ // Parse the scheme
+ let scheme = match Scheme2::parse(&s[..])? {
+ Scheme2::None => Scheme2::None,
+ Scheme2::Standard(p) => {
+ // TODO: use truncate
+ let _ = s.split_to(p.len() + 3);
+ Scheme2::Standard(p)
+ }
+ Scheme2::Other(n) => {
+ // Grab the protocol
+ let mut scheme = s.split_to(n + 3);
+
+ // Strip ://, TODO: truncate
+ let _ = scheme.split_off(n);
+
+ // Allocate the ByteStr
+ let val = unsafe { ByteStr::from_utf8_unchecked(scheme) };
+
+ Scheme2::Other(Box::new(val))
+ }
+ };
+
+ // Find the end of the authority. The scheme will already have been
+ // extracted.
+ let authority_end = Authority::parse(&s[..])?;
+
+ if scheme.is_none() {
+ if authority_end != s.len() {
+ return Err(ErrorKind::InvalidFormat.into());
+ }
+
+ let authority = Authority {
+ data: unsafe { ByteStr::from_utf8_unchecked(s) },
+ };
+
+ return Ok(Uri {
+ scheme: scheme.into(),
+ authority: authority,
+ path_and_query: PathAndQuery::empty(),
+ });
+ }
+
+ // Authority is required when absolute
+ if authority_end == 0 {
+ return Err(ErrorKind::InvalidFormat.into());
+ }
+
+ let authority = s.split_to(authority_end);
+ let authority = Authority {
+ data: unsafe { ByteStr::from_utf8_unchecked(authority) },
+ };
+
+ Ok(Uri {
+ scheme: scheme.into(),
+ authority: authority,
+ path_and_query: PathAndQuery::from_shared(s)?,
+ })
+}
+
+impl FromStr for Uri {
+ type Err = InvalidUri;
+
+ #[inline]
+ fn from_str(s: &str) -> Result<Uri, InvalidUri> {
+ Uri::try_from(s.as_bytes())
+ }
+}
+
+impl PartialEq for Uri {
+ fn eq(&self, other: &Uri) -> bool {
+ if self.scheme() != other.scheme() {
+ return false;
+ }
+
+ if self.authority() != other.authority() {
+ return false;
+ }
+
+ if self.path() != other.path() {
+ return false;
+ }
+
+ if self.query() != other.query() {
+ return false;
+ }
+
+ true
+ }
+}
+
+impl PartialEq<str> for Uri {
+ fn eq(&self, other: &str) -> bool {
+ let mut other = other.as_bytes();
+ let mut absolute = false;
+
+ if let Some(scheme) = self.scheme() {
+ let scheme = scheme.as_str().as_bytes();
+ absolute = true;
+
+ if other.len() < scheme.len() + 3 {
+ return false;
+ }
+
+ if !scheme.eq_ignore_ascii_case(&other[..scheme.len()]) {
+ return false;
+ }
+
+ other = &other[scheme.len()..];
+
+ if &other[..3] != b"://" {
+ return false;
+ }
+
+ other = &other[3..];
+ }
+
+ if let Some(auth) = self.authority() {
+ let len = auth.data.len();
+ absolute = true;
+
+ if other.len() < len {
+ return false;
+ }
+
+ if !auth.data.as_bytes().eq_ignore_ascii_case(&other[..len]) {
+ return false;
+ }
+
+ other = &other[len..];
+ }
+
+ let path = self.path();
+
+ if other.len() < path.len() || path.as_bytes() != &other[..path.len()] {
+ if absolute && path == "/" {
+ // PathAndQuery can be omitted, fall through
+ } else {
+ return false;
+ }
+ } else {
+ other = &other[path.len()..];
+ }
+
+ if let Some(query) = self.query() {
+ if other.len() == 0 {
+ return query.len() == 0;
+ }
+
+ if other[0] != b'?' {
+ return false;
+ }
+
+ other = &other[1..];
+
+ if other.len() < query.len() {
+ return false;
+ }
+
+ if query.as_bytes() != &other[..query.len()] {
+ return false;
+ }
+
+ other = &other[query.len()..];
+ }
+
+ other.is_empty() || other[0] == b'#'
+ }
+}
+
+impl PartialEq<Uri> for str {
+ fn eq(&self, uri: &Uri) -> bool {
+ uri == self
+ }
+}
+
+impl<'a> PartialEq<&'a str> for Uri {
+ fn eq(&self, other: &&'a str) -> bool {
+ self == *other
+ }
+}
+
+impl<'a> PartialEq<Uri> for &'a str {
+ fn eq(&self, uri: &Uri) -> bool {
+ uri == *self
+ }
+}
+
+impl Eq for Uri {}
+
+/// Returns a `Uri` representing `/`
+impl Default for Uri {
+ #[inline]
+ fn default() -> Uri {
+ Uri {
+ scheme: Scheme::empty(),
+ authority: Authority::empty(),
+ path_and_query: PathAndQuery::slash(),
+ }
+ }
+}
+
+impl fmt::Display for Uri {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if let Some(scheme) = self.scheme() {
+ write!(f, "{}://", scheme)?;
+ }
+
+ if let Some(authority) = self.authority() {
+ write!(f, "{}", authority)?;
+ }
+
+ write!(f, "{}", self.path())?;
+
+ if let Some(query) = self.query() {
+ write!(f, "?{}", query)?;
+ }
+
+ Ok(())
+ }
+}
+
+impl fmt::Debug for Uri {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self, f)
+ }
+}
+
+impl From<ErrorKind> for InvalidUri {
+ fn from(src: ErrorKind) -> InvalidUri {
+ InvalidUri(src)
+ }
+}
+
+impl From<ErrorKind> for InvalidUriParts {
+ fn from(src: ErrorKind) -> InvalidUriParts {
+ InvalidUriParts(src.into())
+ }
+}
+
+impl InvalidUri {
+ fn s(&self) -> &str {
+ match self.0 {
+ ErrorKind::InvalidUriChar => "invalid uri character",
+ ErrorKind::InvalidScheme => "invalid scheme",
+ ErrorKind::InvalidAuthority => "invalid authority",
+ ErrorKind::InvalidPort => "invalid port",
+ ErrorKind::InvalidFormat => "invalid format",
+ ErrorKind::SchemeMissing => "scheme missing",
+ ErrorKind::AuthorityMissing => "authority missing",
+ ErrorKind::PathAndQueryMissing => "path missing",
+ ErrorKind::TooLong => "uri too long",
+ ErrorKind::Empty => "empty string",
+ ErrorKind::SchemeTooLong => "scheme too long",
+ }
+ }
+}
+
+impl fmt::Display for InvalidUri {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.s().fmt(f)
+ }
+}
+
+impl Error for InvalidUri {}
+
+impl fmt::Display for InvalidUriParts {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.0.fmt(f)
+ }
+}
+
+impl Error for InvalidUriParts {}
+
+impl Hash for Uri {
+ fn hash<H>(&self, state: &mut H)
+ where
+ H: Hasher,
+ {
+ if !self.scheme.inner.is_none() {
+ self.scheme.hash(state);
+ state.write_u8(0xff);
+ }
+
+ if let Some(auth) = self.authority() {
+ auth.hash(state);
+ }
+
+ Hash::hash_slice(self.path().as_bytes(), state);
+
+ if let Some(query) = self.query() {
+ b'?'.hash(state);
+ Hash::hash_slice(query.as_bytes(), state);
+ }
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/path.rs b/extra_versions/crates/http/src/uri/path.rs
new file mode 100644
index 0000000..be2cb65
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/path.rs
@@ -0,0 +1,564 @@
+use std::convert::TryFrom;
+use std::str::FromStr;
+use std::{cmp, fmt, hash, str};
+
+use bytes::Bytes;
+
+use super::{ErrorKind, InvalidUri};
+use crate::byte_str::ByteStr;
+
+/// Represents the path component of a URI
+#[derive(Clone)]
+pub struct PathAndQuery {
+ pub(super) data: ByteStr,
+ pub(super) query: u16,
+}
+
+const NONE: u16 = ::std::u16::MAX;
+
+impl PathAndQuery {
+ // Not public while `bytes` is unstable.
+ pub(super) fn from_shared(mut src: Bytes) -> Result<Self, InvalidUri> {
+ let mut query = NONE;
+ let mut fragment = None;
+
+ // block for iterator borrow
+ {
+ let mut iter = src.as_ref().iter().enumerate();
+
+ // path ...
+ for (i, &b) in &mut iter {
+ // See https://url.spec.whatwg.org/#path-state
+ match b {
+ b'?' => {
+ debug_assert_eq!(query, NONE);
+ query = i as u16;
+ break;
+ }
+ b'#' => {
+ fragment = Some(i);
+ break;
+ }
+
+ // This is the range of bytes that don't need to be
+ // percent-encoded in the path. If it should have been
+ // percent-encoded, then error.
+ 0x21 |
+ 0x24..=0x3B |
+ 0x3D |
+ 0x40..=0x5F |
+ 0x61..=0x7A |
+ 0x7C |
+ 0x7E => {},
+
+ // These are code points that are supposed to be
+ // percent-encoded in the path but there are clients
+ // out there sending them as is and httparse accepts
+ // to parse those requests, so they are allowed here
+ // for parity.
+ //
+ // For reference, those are code points that are used
+ // to send requests with JSON directly embedded in
+ // the URI path. Yes, those things happen for real.
+ b'"' |
+ b'{' | b'}' => {},
+
+ _ => return Err(ErrorKind::InvalidUriChar.into()),
+ }
+ }
+
+ // query ...
+ if query != NONE {
+ for (i, &b) in iter {
+ match b {
+ // While queries *should* be percent-encoded, most
+ // bytes are actually allowed...
+ // See https://url.spec.whatwg.org/#query-state
+ //
+ // Allowed: 0x21 / 0x24 - 0x3B / 0x3D / 0x3F - 0x7E
+ 0x21 |
+ 0x24..=0x3B |
+ 0x3D |
+ 0x3F..=0x7E => {},
+
+ b'#' => {
+ fragment = Some(i);
+ break;
+ }
+
+ _ => return Err(ErrorKind::InvalidUriChar.into()),
+ }
+ }
+ }
+ }
+
+ if let Some(i) = fragment {
+ src.truncate(i);
+ }
+
+ Ok(PathAndQuery {
+ data: unsafe { ByteStr::from_utf8_unchecked(src) },
+ query: query,
+ })
+ }
+
+ /// Convert a `PathAndQuery` from a static string.
+ ///
+ /// This function will not perform any copying, however the string is
+ /// checked to ensure that it is valid.
+ ///
+ /// # Panics
+ ///
+ /// This function panics if the argument is an invalid path and query.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let v = PathAndQuery::from_static("/hello?world");
+ ///
+ /// assert_eq!(v.path(), "/hello");
+ /// assert_eq!(v.query(), Some("world"));
+ /// ```
+ #[inline]
+ pub fn from_static(src: &'static str) -> Self {
+ let src = Bytes::from_static(src.as_bytes());
+
+ PathAndQuery::from_shared(src).unwrap()
+ }
+
+ /// Attempt to convert a `Bytes` buffer to a `PathAndQuery`.
+ ///
+ /// This will try to prevent a copy if the type passed is the type used
+ /// internally, and will copy the data if it is not.
+ pub fn from_maybe_shared<T>(src: T) -> Result<Self, InvalidUri>
+ where
+ T: AsRef<[u8]> + 'static,
+ {
+ if_downcast_into!(T, Bytes, src, {
+ return PathAndQuery::from_shared(src);
+ });
+
+ PathAndQuery::try_from(src.as_ref())
+ }
+
+ pub(super) fn empty() -> Self {
+ PathAndQuery {
+ data: ByteStr::new(),
+ query: NONE,
+ }
+ }
+
+ pub(super) fn slash() -> Self {
+ PathAndQuery {
+ data: ByteStr::from_static("/"),
+ query: NONE,
+ }
+ }
+
+ pub(super) fn star() -> Self {
+ PathAndQuery {
+ data: ByteStr::from_static("*"),
+ query: NONE,
+ }
+ }
+
+ /// Returns the path component
+ ///
+ /// The path component is **case sensitive**.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |--------|
+ /// |
+ /// path
+ /// ```
+ ///
+ /// If the URI is `*` then the path component is equal to `*`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::*;
+ ///
+ /// let path_and_query: PathAndQuery = "/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(path_and_query.path(), "/hello/world");
+ /// ```
+ #[inline]
+ pub fn path(&self) -> &str {
+ let ret = if self.query == NONE {
+ &self.data[..]
+ } else {
+ &self.data[..self.query as usize]
+ };
+
+ if ret.is_empty() {
+ return "/";
+ }
+
+ ret
+ }
+
+ /// Returns the query string component
+ ///
+ /// The query component contains non-hierarchical data that, along with data
+ /// in the path component, serves to identify a resource within the scope of
+ /// the URI's scheme and naming authority (if any). The query component is
+ /// indicated by the first question mark ("?") character and terminated by a
+ /// number sign ("#") character or by the end of the URI.
+ ///
+ /// ```notrust
+ /// abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
+ /// |-------------------|
+ /// |
+ /// query
+ /// ```
+ ///
+ /// # Examples
+ ///
+ /// With a query string component
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let path_and_query: PathAndQuery = "/hello/world?key=value&foo=bar".parse().unwrap();
+ ///
+ /// assert_eq!(path_and_query.query(), Some("key=value&foo=bar"));
+ /// ```
+ ///
+ /// Without a query string component
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let path_and_query: PathAndQuery = "/hello/world".parse().unwrap();
+ ///
+ /// assert!(path_and_query.query().is_none());
+ /// ```
+ #[inline]
+ pub fn query(&self) -> Option<&str> {
+ if self.query == NONE {
+ None
+ } else {
+ let i = self.query + 1;
+ Some(&self.data[i as usize..])
+ }
+ }
+
+ /// Returns the path and query as a string component.
+ ///
+ /// # Examples
+ ///
+ /// With a query string component
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let path_and_query: PathAndQuery = "/hello/world?key=value&foo=bar".parse().unwrap();
+ ///
+ /// assert_eq!(path_and_query.as_str(), "/hello/world?key=value&foo=bar");
+ /// ```
+ ///
+ /// Without a query string component
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let path_and_query: PathAndQuery = "/hello/world".parse().unwrap();
+ ///
+ /// assert_eq!(path_and_query.as_str(), "/hello/world");
+ /// ```
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ let ret = &self.data[..];
+ if ret.is_empty() {
+ return "/";
+ }
+ ret
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for PathAndQuery {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a [u8]) -> Result<Self, Self::Error> {
+ PathAndQuery::from_shared(Bytes::copy_from_slice(s))
+ }
+}
+
+impl<'a> TryFrom<&'a str> for PathAndQuery {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a str) -> Result<Self, Self::Error> {
+ TryFrom::try_from(s.as_bytes())
+ }
+}
+
+impl<'a> TryFrom<Vec<u8>> for PathAndQuery {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error> {
+ PathAndQuery::from_shared(vec.into())
+ }
+}
+
+impl TryFrom<String> for PathAndQuery {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: String) -> Result<Self, Self::Error> {
+ PathAndQuery::from_shared(s.into())
+ }
+}
+
+impl TryFrom<&String> for PathAndQuery {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &String) -> Result<Self, Self::Error> {
+ TryFrom::try_from(s.as_bytes())
+ }
+}
+
+impl FromStr for PathAndQuery {
+ type Err = InvalidUri;
+ #[inline]
+ fn from_str(s: &str) -> Result<Self, InvalidUri> {
+ TryFrom::try_from(s)
+ }
+}
+
+impl fmt::Debug for PathAndQuery {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self, f)
+ }
+}
+
+impl fmt::Display for PathAndQuery {
+ fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if !self.data.is_empty() {
+ match self.data.as_bytes()[0] {
+ b'/' | b'*' => write!(fmt, "{}", &self.data[..]),
+ _ => write!(fmt, "/{}", &self.data[..]),
+ }
+ } else {
+ write!(fmt, "/")
+ }
+ }
+}
+
+impl hash::Hash for PathAndQuery {
+ fn hash<H: hash::Hasher>(&self, state: &mut H) {
+ self.data.hash(state);
+ }
+}
+
+// ===== PartialEq / PartialOrd =====
+
+impl PartialEq for PathAndQuery {
+ #[inline]
+ fn eq(&self, other: &PathAndQuery) -> bool {
+ self.data == other.data
+ }
+}
+
+impl Eq for PathAndQuery {}
+
+impl PartialEq<str> for PathAndQuery {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ self.as_str() == other
+ }
+}
+
+impl<'a> PartialEq<PathAndQuery> for &'a str {
+ #[inline]
+ fn eq(&self, other: &PathAndQuery) -> bool {
+ self == &other.as_str()
+ }
+}
+
+impl<'a> PartialEq<&'a str> for PathAndQuery {
+ #[inline]
+ fn eq(&self, other: &&'a str) -> bool {
+ self.as_str() == *other
+ }
+}
+
+impl PartialEq<PathAndQuery> for str {
+ #[inline]
+ fn eq(&self, other: &PathAndQuery) -> bool {
+ self == other.as_str()
+ }
+}
+
+impl PartialEq<String> for PathAndQuery {
+ #[inline]
+ fn eq(&self, other: &String) -> bool {
+ self.as_str() == other.as_str()
+ }
+}
+
+impl PartialEq<PathAndQuery> for String {
+ #[inline]
+ fn eq(&self, other: &PathAndQuery) -> bool {
+ self.as_str() == other.as_str()
+ }
+}
+
+impl PartialOrd for PathAndQuery {
+ #[inline]
+ fn partial_cmp(&self, other: &PathAndQuery) -> Option<cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl PartialOrd<str> for PathAndQuery {
+ #[inline]
+ fn partial_cmp(&self, other: &str) -> Option<cmp::Ordering> {
+ self.as_str().partial_cmp(other)
+ }
+}
+
+impl PartialOrd<PathAndQuery> for str {
+ #[inline]
+ fn partial_cmp(&self, other: &PathAndQuery) -> Option<cmp::Ordering> {
+ self.partial_cmp(other.as_str())
+ }
+}
+
+impl<'a> PartialOrd<&'a str> for PathAndQuery {
+ #[inline]
+ fn partial_cmp(&self, other: &&'a str) -> Option<cmp::Ordering> {
+ self.as_str().partial_cmp(*other)
+ }
+}
+
+impl<'a> PartialOrd<PathAndQuery> for &'a str {
+ #[inline]
+ fn partial_cmp(&self, other: &PathAndQuery) -> Option<cmp::Ordering> {
+ self.partial_cmp(&other.as_str())
+ }
+}
+
+impl PartialOrd<String> for PathAndQuery {
+ #[inline]
+ fn partial_cmp(&self, other: &String) -> Option<cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl PartialOrd<PathAndQuery> for String {
+ #[inline]
+ fn partial_cmp(&self, other: &PathAndQuery) -> Option<cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn equal_to_self_of_same_path() {
+ let p1: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ let p2: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ assert_eq!(p1, p2);
+ assert_eq!(p2, p1);
+ }
+
+ #[test]
+ fn not_equal_to_self_of_different_path() {
+ let p1: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ let p2: PathAndQuery = "/world&foo=bar".parse().unwrap();
+ assert_ne!(p1, p2);
+ assert_ne!(p2, p1);
+ }
+
+ #[test]
+ fn equates_with_a_str() {
+ let path_and_query: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ assert_eq!(&path_and_query, "/hello/world&foo=bar");
+ assert_eq!("/hello/world&foo=bar", &path_and_query);
+ assert_eq!(path_and_query, "/hello/world&foo=bar");
+ assert_eq!("/hello/world&foo=bar", path_and_query);
+ }
+
+ #[test]
+ fn not_equal_with_a_str_of_a_different_path() {
+ let path_and_query: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ // as a reference
+ assert_ne!(&path_and_query, "/hello&foo=bar");
+ assert_ne!("/hello&foo=bar", &path_and_query);
+ // without reference
+ assert_ne!(path_and_query, "/hello&foo=bar");
+ assert_ne!("/hello&foo=bar", path_and_query);
+ }
+
+ #[test]
+ fn equates_with_a_string() {
+ let path_and_query: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ assert_eq!(path_and_query, "/hello/world&foo=bar".to_string());
+ assert_eq!("/hello/world&foo=bar".to_string(), path_and_query);
+ }
+
+ #[test]
+ fn not_equal_with_a_string_of_a_different_path() {
+ let path_and_query: PathAndQuery = "/hello/world&foo=bar".parse().unwrap();
+ assert_ne!(path_and_query, "/hello&foo=bar".to_string());
+ assert_ne!("/hello&foo=bar".to_string(), path_and_query);
+ }
+
+ #[test]
+ fn compares_to_self() {
+ let p1: PathAndQuery = "/a/world&foo=bar".parse().unwrap();
+ let p2: PathAndQuery = "/b/world&foo=bar".parse().unwrap();
+ assert!(p1 < p2);
+ assert!(p2 > p1);
+ }
+
+ #[test]
+ fn compares_with_a_str() {
+ let path_and_query: PathAndQuery = "/b/world&foo=bar".parse().unwrap();
+ // by ref
+ assert!(&path_and_query < "/c/world&foo=bar");
+ assert!("/c/world&foo=bar" > &path_and_query);
+ assert!(&path_and_query > "/a/world&foo=bar");
+ assert!("/a/world&foo=bar" < &path_and_query);
+
+ // by val
+ assert!(path_and_query < "/c/world&foo=bar");
+ assert!("/c/world&foo=bar" > path_and_query);
+ assert!(path_and_query > "/a/world&foo=bar");
+ assert!("/a/world&foo=bar" < path_and_query);
+ }
+
+ #[test]
+ fn compares_with_a_string() {
+ let path_and_query: PathAndQuery = "/b/world&foo=bar".parse().unwrap();
+ assert!(path_and_query < "/c/world&foo=bar".to_string());
+ assert!("/c/world&foo=bar".to_string() > path_and_query);
+ assert!(path_and_query > "/a/world&foo=bar".to_string());
+ assert!("/a/world&foo=bar".to_string() < path_and_query);
+ }
+
+ #[test]
+ fn ignores_valid_percent_encodings() {
+ assert_eq!("/a%20b", pq("/a%20b?r=1").path());
+ assert_eq!("qr=%31", pq("/a/b?qr=%31").query().unwrap());
+ }
+
+ #[test]
+ fn ignores_invalid_percent_encodings() {
+ assert_eq!("/a%%b", pq("/a%%b?r=1").path());
+ assert_eq!("/aaa%", pq("/aaa%").path());
+ assert_eq!("/aaa%", pq("/aaa%?r=1").path());
+ assert_eq!("/aa%2", pq("/aa%2").path());
+ assert_eq!("/aa%2", pq("/aa%2?r=1").path());
+ assert_eq!("qr=%3", pq("/a/b?qr=%3").query().unwrap());
+ }
+
+ #[test]
+ fn json_is_fine() {
+ assert_eq!(r#"/{"bread":"baguette"}"#, pq(r#"/{"bread":"baguette"}"#).path());
+ }
+
+ fn pq(s: &str) -> PathAndQuery {
+ s.parse().expect(&format!("parsing {}", s))
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/port.rs b/extra_versions/crates/http/src/uri/port.rs
new file mode 100644
index 0000000..8f5c5f3
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/port.rs
@@ -0,0 +1,151 @@
+use std::fmt;
+
+use super::{ErrorKind, InvalidUri};
+
+/// The port component of a URI.
+pub struct Port<T> {
+ port: u16,
+ repr: T,
+}
+
+impl<T> Port<T> {
+ /// Returns the port number as a `u16`.
+ ///
+ /// # Examples
+ ///
+ /// Port as `u16`.
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority: Authority = "example.org:80".parse().unwrap();
+ ///
+ /// let port = authority.port().unwrap();
+ /// assert_eq!(port.as_u16(), 80);
+ /// ```
+ pub fn as_u16(&self) -> u16 {
+ self.port
+ }
+}
+
+impl<T> Port<T>
+where
+ T: AsRef<str>,
+{
+ /// Converts a `str` to a port number.
+ ///
+ /// The supplied `str` must be a valid u16.
+ pub(crate) fn from_str(bytes: T) -> Result<Self, InvalidUri> {
+ bytes
+ .as_ref()
+ .parse::<u16>()
+ .map(|port| Port { port, repr: bytes })
+ .map_err(|_| ErrorKind::InvalidPort.into())
+ }
+
+ /// Returns the port number as a `str`.
+ ///
+ /// # Examples
+ ///
+ /// Port as `str`.
+ ///
+ /// ```
+ /// # use http::uri::Authority;
+ /// let authority: Authority = "example.org:80".parse().unwrap();
+ ///
+ /// let port = authority.port().unwrap();
+ /// assert_eq!(port.as_str(), "80");
+ /// ```
+ pub fn as_str(&self) -> &str {
+ self.repr.as_ref()
+ }
+}
+
+impl<T> fmt::Debug for Port<T>
+where
+ T: fmt::Debug,
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_tuple("Port").field(&self.port).finish()
+ }
+}
+
+impl<T> fmt::Display for Port<T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ // Use `u16::fmt` so that it respects any formatting flags that
+ // may have been set (like padding, align, etc).
+ fmt::Display::fmt(&self.port, f)
+ }
+}
+
+impl<T> From<Port<T>> for u16 {
+ fn from(port: Port<T>) -> Self {
+ port.as_u16()
+ }
+}
+
+impl<T> AsRef<str> for Port<T>
+where
+ T: AsRef<str>,
+{
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<T, U> PartialEq<Port<U>> for Port<T> {
+ fn eq(&self, other: &Port<U>) -> bool {
+ self.port == other.port
+ }
+}
+
+impl<T> PartialEq<u16> for Port<T> {
+ fn eq(&self, other: &u16) -> bool {
+ self.port == *other
+ }
+}
+
+impl<T> PartialEq<Port<T>> for u16 {
+ fn eq(&self, other: &Port<T>) -> bool {
+ other.port == *self
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn partialeq_port() {
+ let port_a = Port::from_str("8080").unwrap();
+ let port_b = Port::from_str("8080").unwrap();
+ assert_eq!(port_a, port_b);
+ }
+
+ #[test]
+ fn partialeq_port_different_reprs() {
+ let port_a = Port {
+ repr: "8081",
+ port: 8081,
+ };
+ let port_b = Port {
+ repr: String::from("8081"),
+ port: 8081,
+ };
+ assert_eq!(port_a, port_b);
+ assert_eq!(port_b, port_a);
+ }
+
+ #[test]
+ fn partialeq_u16() {
+ let port = Port::from_str("8080").unwrap();
+ // test equals in both directions
+ assert_eq!(port, 8080);
+ assert_eq!(8080, port);
+ }
+
+ #[test]
+ fn u16_from_port() {
+ let port = Port::from_str("8080").unwrap();
+ assert_eq!(8080, u16::from(port));
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/scheme.rs b/extra_versions/crates/http/src/uri/scheme.rs
new file mode 100644
index 0000000..682b11e
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/scheme.rs
@@ -0,0 +1,363 @@
+use std::convert::TryFrom;
+use std::fmt;
+use std::hash::{Hash, Hasher};
+use std::str::FromStr;
+
+use bytes::Bytes;
+
+use super::{ErrorKind, InvalidUri};
+use crate::byte_str::ByteStr;
+
+/// Represents the scheme component of a URI
+#[derive(Clone)]
+pub struct Scheme {
+ pub(super) inner: Scheme2,
+}
+
+#[derive(Clone, Debug)]
+pub(super) enum Scheme2<T = Box<ByteStr>> {
+ None,
+ Standard(Protocol),
+ Other(T),
+}
+
+#[derive(Copy, Clone, Debug)]
+pub(super) enum Protocol {
+ Http,
+ Https,
+}
+
+impl Scheme {
+ /// HTTP protocol scheme
+ pub const HTTP: Scheme = Scheme {
+ inner: Scheme2::Standard(Protocol::Http),
+ };
+
+ /// HTTP protocol over TLS.
+ pub const HTTPS: Scheme = Scheme {
+ inner: Scheme2::Standard(Protocol::Https),
+ };
+
+ pub(super) fn empty() -> Self {
+ Scheme {
+ inner: Scheme2::None,
+ }
+ }
+
+ /// Return a str representation of the scheme
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use http::uri::*;
+ /// let scheme: Scheme = "http".parse().unwrap();
+ /// assert_eq!(scheme.as_str(), "http");
+ /// ```
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ use self::Protocol::*;
+ use self::Scheme2::*;
+
+ match self.inner {
+ Standard(Http) => "http",
+ Standard(Https) => "https",
+ Other(ref v) => &v[..],
+ None => unreachable!(),
+ }
+ }
+}
+
+impl<'a> TryFrom<&'a [u8]> for Scheme {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a [u8]) -> Result<Self, Self::Error> {
+ use self::Scheme2::*;
+
+ match Scheme2::parse_exact(s)? {
+ None => Err(ErrorKind::InvalidScheme.into()),
+ Standard(p) => Ok(Standard(p).into()),
+ Other(_) => {
+ let bytes = Bytes::copy_from_slice(s);
+
+ // Safety: postcondition on parse_exact() means that s and
+ // hence bytes are valid UTF-8.
+ let string = unsafe { ByteStr::from_utf8_unchecked(bytes) };
+
+ Ok(Other(Box::new(string)).into())
+ }
+ }
+ }
+}
+
+impl<'a> TryFrom<&'a str> for Scheme {
+ type Error = InvalidUri;
+ #[inline]
+ fn try_from(s: &'a str) -> Result<Self, Self::Error> {
+ TryFrom::try_from(s.as_bytes())
+ }
+}
+
+impl FromStr for Scheme {
+ type Err = InvalidUri;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ TryFrom::try_from(s)
+ }
+}
+
+impl fmt::Debug for Scheme {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(self.as_str(), f)
+ }
+}
+
+impl fmt::Display for Scheme {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(self.as_str())
+ }
+}
+
+impl AsRef<str> for Scheme {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl PartialEq for Scheme {
+ fn eq(&self, other: &Scheme) -> bool {
+ use self::Protocol::*;
+ use self::Scheme2::*;
+
+ match (&self.inner, &other.inner) {
+ (&Standard(Http), &Standard(Http)) => true,
+ (&Standard(Https), &Standard(Https)) => true,
+ (&Other(ref a), &Other(ref b)) => a.eq_ignore_ascii_case(b),
+ (&None, _) | (_, &None) => unreachable!(),
+ _ => false,
+ }
+ }
+}
+
+impl Eq for Scheme {}
+
+/// Case-insensitive equality
+///
+/// # Examples
+///
+/// ```
+/// # use http::uri::Scheme;
+/// let scheme: Scheme = "HTTP".parse().unwrap();
+/// assert_eq!(scheme, *"http");
+/// ```
+impl PartialEq<str> for Scheme {
+ fn eq(&self, other: &str) -> bool {
+ self.as_str().eq_ignore_ascii_case(other)
+ }
+}
+
+/// Case-insensitive equality
+impl PartialEq<Scheme> for str {
+ fn eq(&self, other: &Scheme) -> bool {
+ other == self
+ }
+}
+
+/// Case-insensitive hashing
+impl Hash for Scheme {
+ fn hash<H>(&self, state: &mut H)
+ where
+ H: Hasher,
+ {
+ match self.inner {
+ Scheme2::None => (),
+ Scheme2::Standard(Protocol::Http) => state.write_u8(1),
+ Scheme2::Standard(Protocol::Https) => state.write_u8(2),
+ Scheme2::Other(ref other) => {
+ other.len().hash(state);
+ for &b in other.as_bytes() {
+ state.write_u8(b.to_ascii_lowercase());
+ }
+ }
+ }
+ }
+}
+
+impl<T> Scheme2<T> {
+ pub(super) fn is_none(&self) -> bool {
+ match *self {
+ Scheme2::None => true,
+ _ => false,
+ }
+ }
+}
+
+// Require the scheme to not be too long in order to enable further
+// optimizations later.
+const MAX_SCHEME_LEN: usize = 64;
+
+// scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+//
+// SCHEME_CHARS is a table of valid characters in the scheme part of a URI. An
+// entry in the table is 0 for invalid characters. For valid characters the
+// entry is itself (i.e. the entry for 43 is b'+' because b'+' == 43u8). An
+// important characteristic of this table is that all entries above 127 are
+// invalid. This makes all of the valid entries a valid single-byte UTF-8 code
+// point. This means that a slice of such valid entries is valid UTF-8.
+const SCHEME_CHARS: [u8; 256] = [
+ // 0 1 2 3 4 5 6 7 8 9
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3x
+ 0, 0, 0, b'+', 0, b'-', b'.', 0, b'0', b'1', // 4x
+ b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9', b':', 0, // 5x
+ 0, 0, 0, 0, 0, b'A', b'B', b'C', b'D', b'E', // 6x
+ b'F', b'G', b'H', b'I', b'J', b'K', b'L', b'M', b'N', b'O', // 7x
+ b'P', b'Q', b'R', b'S', b'T', b'U', b'V', b'W', b'X', b'Y', // 8x
+ b'Z', 0, 0, 0, 0, 0, 0, b'a', b'b', b'c', // 9x
+ b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', // 10x
+ b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', // 11x
+ b'x', b'y', b'z', 0, 0, 0, b'~', 0, 0, 0, // 12x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 13x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 14x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 15x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 17x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 18x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 19x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 21x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 22x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 23x
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 24x
+ 0, 0, 0, 0, 0, 0 // 25x
+];
+
+impl Scheme2<usize> {
+ // Postcondition: On all Ok() returns, s is valid UTF-8
+ fn parse_exact(s: &[u8]) -> Result<Scheme2<()>, InvalidUri> {
+ match s {
+ b"http" => Ok(Protocol::Http.into()),
+ b"https" => Ok(Protocol::Https.into()),
+ _ => {
+ if s.len() > MAX_SCHEME_LEN {
+ return Err(ErrorKind::SchemeTooLong.into());
+ }
+
+ // check that each byte in s is a SCHEME_CHARS which implies
+ // that it is a valid single byte UTF-8 code point.
+ for &b in s {
+ match SCHEME_CHARS[b as usize] {
+ b':' => {
+ // Don't want :// here
+ return Err(ErrorKind::InvalidScheme.into());
+ }
+ 0 => {
+ return Err(ErrorKind::InvalidScheme.into());
+ }
+ _ => {}
+ }
+ }
+
+ Ok(Scheme2::Other(()))
+ }
+ }
+ }
+
+ pub(super) fn parse(s: &[u8]) -> Result<Scheme2<usize>, InvalidUri> {
+ if s.len() >= 7 {
+ // Check for HTTP
+ if s[..7].eq_ignore_ascii_case(b"http://") {
+ // Prefix will be striped
+ return Ok(Protocol::Http.into());
+ }
+ }
+
+ if s.len() >= 8 {
+ // Check for HTTPs
+ if s[..8].eq_ignore_ascii_case(b"https://") {
+ return Ok(Protocol::Https.into());
+ }
+ }
+
+ if s.len() > 3 {
+ for i in 0..s.len() {
+ let b = s[i];
+
+ match SCHEME_CHARS[b as usize] {
+ b':' => {
+ // Not enough data remaining
+ if s.len() < i + 3 {
+ break;
+ }
+
+ // Not a scheme
+ if &s[i + 1..i + 3] != b"//" {
+ break;
+ }
+
+ if i > MAX_SCHEME_LEN {
+ return Err(ErrorKind::SchemeTooLong.into());
+ }
+
+ // Return scheme
+ return Ok(Scheme2::Other(i));
+ }
+ // Invald scheme character, abort
+ 0 => break,
+ _ => {}
+ }
+ }
+ }
+
+ Ok(Scheme2::None)
+ }
+}
+
+impl Protocol {
+ pub(super) fn len(&self) -> usize {
+ match *self {
+ Protocol::Http => 4,
+ Protocol::Https => 5,
+ }
+ }
+}
+
+impl<T> From<Protocol> for Scheme2<T> {
+ fn from(src: Protocol) -> Self {
+ Scheme2::Standard(src)
+ }
+}
+
+#[doc(hidden)]
+impl From<Scheme2> for Scheme {
+ fn from(src: Scheme2) -> Self {
+ Scheme { inner: src }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn scheme_eq_to_str() {
+ assert_eq!(&scheme("http"), "http");
+ assert_eq!(&scheme("https"), "https");
+ assert_eq!(&scheme("ftp"), "ftp");
+ assert_eq!(&scheme("my+funky+scheme"), "my+funky+scheme");
+ }
+
+ #[test]
+ fn invalid_scheme_is_error() {
+ Scheme::try_from("my_funky_scheme").expect_err("Unexpectly valid Scheme");
+
+ // Invalid UTF-8
+ Scheme::try_from([0xC0].as_ref()).expect_err("Unexpectly valid Scheme");
+ }
+
+ fn scheme(s: &str) -> Scheme {
+ s.parse().expect(&format!("Invalid scheme: {}", s))
+ }
+}
diff --git a/extra_versions/crates/http/src/uri/tests.rs b/extra_versions/crates/http/src/uri/tests.rs
new file mode 100644
index 0000000..719cb94
--- /dev/null
+++ b/extra_versions/crates/http/src/uri/tests.rs
@@ -0,0 +1,519 @@
+use std::str::FromStr;
+
+use super::{ErrorKind, InvalidUri, Port, Uri, URI_CHARS};
+
+#[test]
+fn test_char_table() {
+ for (i, &v) in URI_CHARS.iter().enumerate() {
+ if v != 0 {
+ assert_eq!(i, v as usize);
+ }
+ }
+}
+
+macro_rules! part {
+ ($s:expr) => {
+ Some(&$s.parse().unwrap())
+ };
+}
+
+macro_rules! test_parse {
+ (
+ $test_name:ident,
+ $str:expr,
+ $alt:expr,
+ $($method:ident = $value:expr,)*
+ ) => (
+ #[test]
+ fn $test_name() {
+ let orig_str = $str;
+ let uri = match Uri::from_str(orig_str) {
+ Ok(uri) => uri,
+ Err(err) => {
+ panic!("parse error {:?} from {:?}", err, orig_str);
+ },
+ };
+ $(
+ assert_eq!(uri.$method(), $value, "{}: uri = {:?}", stringify!($method), uri);
+ )+
+ assert_eq!(uri, orig_str, "partial eq to original str");
+ assert_eq!(uri, uri.clone(), "clones are equal");
+
+ let new_str = uri.to_string();
+ let new_uri = Uri::from_str(&new_str).expect("to_string output parses again as a Uri");
+ assert_eq!(new_uri, orig_str, "round trip still equals original str");
+
+ const ALT: &'static [&'static str] = &$alt;
+
+ for &alt in ALT.iter() {
+ let other: Uri = alt.parse().unwrap();
+ assert_eq!(uri, *alt);
+ assert_eq!(uri, other);
+ }
+ }
+ );
+}
+
+test_parse! {
+ test_uri_parse_path_and_query,
+ "/some/path/here?and=then&hello#and-bye",
+ [],
+
+ scheme = None,
+ authority = None,
+ path = "/some/path/here",
+ query = Some("and=then&hello"),
+ host = None,
+}
+
+test_parse! {
+ test_uri_parse_absolute_form,
+ "http://127.0.0.1:61761/chunks",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1:61761"),
+ path = "/chunks",
+ query = None,
+ host = Some("127.0.0.1"),
+ port = Port::from_str("61761").ok(),
+}
+
+test_parse! {
+ test_uri_parse_absolute_form_without_path,
+ "https://127.0.0.1:61761",
+ ["https://127.0.0.1:61761/"],
+
+ scheme = part!("https"),
+ authority = part!("127.0.0.1:61761"),
+ path = "/",
+ query = None,
+ host = Some("127.0.0.1"),
+ port = Port::from_str("61761").ok(),
+}
+
+test_parse! {
+ test_uri_parse_asterisk_form,
+ "*",
+ [],
+
+ scheme = None,
+ authority = None,
+ path = "*",
+ query = None,
+ host = None,
+}
+
+test_parse! {
+ test_uri_parse_authority_no_port,
+ "localhost",
+ ["LOCALHOST", "LocaLHOSt"],
+
+ scheme = None,
+ authority = part!("localhost"),
+ path = "",
+ query = None,
+ port = None,
+ host = Some("localhost"),
+}
+
+test_parse! {
+ test_uri_authority_only_one_character_issue_197,
+ "S",
+ [],
+
+ scheme = None,
+ authority = part!("S"),
+ path = "",
+ query = None,
+ port = None,
+ host = Some("S"),
+}
+
+test_parse! {
+ test_uri_parse_authority_form,
+ "localhost:3000",
+ ["localhosT:3000"],
+
+ scheme = None,
+ authority = part!("localhost:3000"),
+ path = "",
+ query = None,
+ host = Some("localhost"),
+ port = Port::from_str("3000").ok(),
+}
+
+test_parse! {
+ test_uri_parse_absolute_with_default_port_http,
+ "http://127.0.0.1:80",
+ ["http://127.0.0.1:80/"],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1:80"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = Port::from_str("80").ok(),
+}
+
+test_parse! {
+ test_uri_parse_absolute_with_default_port_https,
+ "https://127.0.0.1:443",
+ ["https://127.0.0.1:443/"],
+
+ scheme = part!("https"),
+ authority = part!("127.0.0.1:443"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = Port::from_str("443").ok(),
+}
+
+test_parse! {
+ test_uri_parse_fragment_questionmark,
+ "http://127.0.0.1/#?",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_path_with_terminating_questionmark,
+ "http://127.0.0.1/path?",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1"),
+ path = "/path",
+ query = Some(""),
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_absolute_form_with_empty_path_and_nonempty_query,
+ "http://127.0.0.1?foo=bar",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1"),
+ path = "/",
+ query = Some("foo=bar"),
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_absolute_form_with_empty_path_and_fragment_with_slash,
+ "http://127.0.0.1#foo/bar",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_absolute_form_with_empty_path_and_fragment_with_questionmark,
+ "http://127.0.0.1#foo?bar",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_long_host_with_no_scheme,
+ "thequickbrownfoxjumpedoverthelazydogtofindthelargedangerousdragon.localhost",
+ [],
+
+ scheme = None,
+ authority = part!("thequickbrownfoxjumpedoverthelazydogtofindthelargedangerousdragon.localhost"),
+ path = "",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_uri_parse_long_host_with_port_and_no_scheme,
+ "thequickbrownfoxjumpedoverthelazydogtofindthelargedangerousdragon.localhost:1234",
+ [],
+
+ scheme = None,
+ authority = part!("thequickbrownfoxjumpedoverthelazydogtofindthelargedangerousdragon.localhost:1234"),
+ path = "",
+ query = None,
+ port = Port::from_str("1234").ok(),
+}
+
+test_parse! {
+ test_userinfo1,
+ "http://a:[email protected]:1234/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("a:[email protected]:1234"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = Port::from_str("1234").ok(),
+}
+
+test_parse! {
+ test_userinfo2,
+ "http://a:[email protected]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("a:[email protected]"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_userinfo3,
+ "http://[email protected]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[email protected]"),
+ host = Some("127.0.0.1"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_userinfo_with_port,
+ "user@localhost:3000",
+ [],
+
+ scheme = None,
+ authority = part!("user@localhost:3000"),
+ path = "",
+ query = None,
+ host = Some("localhost"),
+ port = Port::from_str("3000").ok(),
+}
+
+test_parse! {
+ test_userinfo_pass_with_port,
+ "user:pass@localhost:3000",
+ [],
+
+ scheme = None,
+ authority = part!("user:pass@localhost:3000"),
+ path = "",
+ query = None,
+ host = Some("localhost"),
+ port = Port::from_str("3000").ok(),
+}
+
+test_parse! {
+ test_ipv6,
+ "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"),
+ host = Some("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_ipv6_shorthand,
+ "http://[::1]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[::1]"),
+ host = Some("[::1]"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_ipv6_shorthand2,
+ "http://[::]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[::]"),
+ host = Some("[::]"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_ipv6_shorthand3,
+ "http://[2001:db8::2:1]/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[2001:db8::2:1]"),
+ host = Some("[2001:db8::2:1]"),
+ path = "/",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_ipv6_with_port,
+ "http://[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8008/",
+ [],
+
+ scheme = part!("http"),
+ authority = part!("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8008"),
+ host = Some("[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"),
+ path = "/",
+ query = None,
+ port = Port::from_str("8008").ok(),
+}
+
+test_parse! {
+ test_percentage_encoded_path,
+ "/echo/abcdefgh_i-j%20/abcdefg_i-j%20478",
+ [],
+
+ scheme = None,
+ authority = None,
+ host = None,
+ path = "/echo/abcdefgh_i-j%20/abcdefg_i-j%20478",
+ query = None,
+ port = None,
+}
+
+test_parse! {
+ test_path_permissive,
+ "/foo=bar|baz\\^~%",
+ [],
+
+ path = "/foo=bar|baz\\^~%",
+}
+
+test_parse! {
+ test_query_permissive,
+ "/?foo={bar|baz}\\^`",
+ [],
+
+ query = Some("foo={bar|baz}\\^`"),
+}
+
+#[test]
+fn test_uri_parse_error() {
+ fn err(s: &str) {
+ Uri::from_str(s).unwrap_err();
+ }
+
+ err("http://");
+ err("htt:p//host");
+ err("hyper.rs/");
+ err("hyper.rs?key=val");
+ err("?key=val");
+ err("localhost/");
+ err("localhost?key=val");
+ err("\0");
+ err("http://[::1");
+ err("http://::1]");
+ err("localhost:8080:3030");
+ err("@");
+ err("http://username:password@/wut");
+
+ // illegal queries
+ err("/?foo\rbar");
+ err("/?foo\nbar");
+ err("/?<");
+ err("/?>");
+}
+
+#[test]
+fn test_max_uri_len() {
+ let mut uri = vec![];
+ uri.extend(b"http://localhost/");
+ uri.extend(vec![b'a'; 70 * 1024]);
+
+ let uri = String::from_utf8(uri).unwrap();
+ let res: Result<Uri, InvalidUri> = uri.parse();
+
+ assert_eq!(res.unwrap_err().0, ErrorKind::TooLong);
+}
+
+#[test]
+fn test_overflowing_scheme() {
+ let mut uri = vec![];
+ uri.extend(vec![b'a'; 256]);
+ uri.extend(b"://localhost/");
+
+ let uri = String::from_utf8(uri).unwrap();
+ let res: Result<Uri, InvalidUri> = uri.parse();
+
+ assert_eq!(res.unwrap_err().0, ErrorKind::SchemeTooLong);
+}
+
+#[test]
+fn test_max_length_scheme() {
+ let mut uri = vec![];
+ uri.extend(vec![b'a'; 64]);
+ uri.extend(b"://localhost/");
+
+ let uri = String::from_utf8(uri).unwrap();
+ let uri: Uri = uri.parse().unwrap();
+
+ assert_eq!(uri.scheme_str().unwrap().len(), 64);
+}
+
+#[test]
+fn test_uri_to_path_and_query() {
+ let cases = vec![
+ ("/", "/"),
+ ("/foo?bar", "/foo?bar"),
+ ("/foo?bar#nope", "/foo?bar"),
+ ("http://hyper.rs", "/"),
+ ("http://hyper.rs/", "/"),
+ ("http://hyper.rs/path", "/path"),
+ ("http://hyper.rs?query", "/?query"),
+ ("*", "*"),
+ ];
+
+ for case in cases {
+ let uri = Uri::from_str(case.0).unwrap();
+ let s = uri.path_and_query().unwrap().to_string();
+
+ assert_eq!(s, case.1);
+ }
+}
+
+#[test]
+fn test_authority_uri_parts_round_trip() {
+ let s = "hyper.rs";
+ let uri = Uri::from_str(s).expect("first parse");
+ assert_eq!(uri, s);
+ assert_eq!(uri.to_string(), s);
+
+ let parts = uri.into_parts();
+ let uri2 = Uri::from_parts(parts).expect("from_parts");
+ assert_eq!(uri2, s);
+ assert_eq!(uri2.to_string(), s);
+}
+
+#[test]
+fn test_partial_eq_path_with_terminating_questionmark() {
+ let a = "/path";
+ let uri = Uri::from_str("/path?").expect("first parse");
+
+ assert_eq!(uri, a);
+}
diff --git a/extra_versions/crates/http/src/version.rs b/extra_versions/crates/http/src/version.rs
new file mode 100644
index 0000000..d8b7130
--- /dev/null
+++ b/extra_versions/crates/http/src/version.rs
@@ -0,0 +1,75 @@
+//! HTTP version
+//!
+//! This module contains a definition of the `Version` type. The `Version`
+//! type is intended to be accessed through the root of the crate
+//! (`http::Version`) rather than this module.
+//!
+//! The `Version` type contains constants that represent the various versions
+//! of the HTTP protocol.
+//!
+//! # Examples
+//!
+//! ```
+//! use http::Version;
+//!
+//! let http11 = Version::HTTP_11;
+//! let http2 = Version::HTTP_2;
+//! assert!(http11 != http2);
+//!
+//! println!("{:?}", http2);
+//! ```
+
+use std::fmt;
+
+/// Represents a version of the HTTP spec.
+#[derive(PartialEq, PartialOrd, Copy, Clone, Eq, Ord, Hash)]
+pub struct Version(Http);
+
+impl Version {
+ /// `HTTP/0.9`
+ pub const HTTP_09: Version = Version(Http::Http09);
+
+ /// `HTTP/1.0`
+ pub const HTTP_10: Version = Version(Http::Http10);
+
+ /// `HTTP/1.1`
+ pub const HTTP_11: Version = Version(Http::Http11);
+
+ /// `HTTP/2.0`
+ pub const HTTP_2: Version = Version(Http::H2);
+
+ /// `HTTP/3.0`
+ pub const HTTP_3: Version = Version(Http::H3);
+}
+
+#[derive(PartialEq, PartialOrd, Copy, Clone, Eq, Ord, Hash)]
+enum Http {
+ Http09,
+ Http10,
+ Http11,
+ H2,
+ H3,
+ __NonExhaustive,
+}
+
+impl Default for Version {
+ #[inline]
+ fn default() -> Version {
+ Version::HTTP_11
+ }
+}
+
+impl fmt::Debug for Version {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ use self::Http::*;
+
+ f.write_str(match self.0 {
+ Http09 => "HTTP/0.9",
+ Http10 => "HTTP/1.0",
+ Http11 => "HTTP/1.1",
+ H2 => "HTTP/2.0",
+ H3 => "HTTP/3.0",
+ __NonExhaustive => unreachable!(),
+ })
+ }
+}
diff --git a/extra_versions/crates/http/tests/header_map.rs b/extra_versions/crates/http/tests/header_map.rs
new file mode 100644
index 0000000..f2beba0
--- /dev/null
+++ b/extra_versions/crates/http/tests/header_map.rs
@@ -0,0 +1,638 @@
+use http::header::*;
+use http::*;
+
+#[test]
+fn smoke() {
+ let mut headers = HeaderMap::new();
+
+ assert!(headers.get("hello").is_none());
+
+ let name: HeaderName = "hello".parse().unwrap();
+
+ match headers.entry(&name) {
+ Entry::Vacant(e) => {
+ e.insert("world".parse().unwrap());
+ }
+ _ => panic!(),
+ }
+
+ assert!(headers.get("hello").is_some());
+
+ match headers.entry(&name) {
+ Entry::Occupied(mut e) => {
+ assert_eq!(e.get(), &"world");
+
+ // Push another value
+ e.append("zomg".parse().unwrap());
+
+ let mut i = e.iter();
+
+ assert_eq!(*i.next().unwrap(), "world");
+ assert_eq!(*i.next().unwrap(), "zomg");
+ assert!(i.next().is_none());
+ }
+ _ => panic!(),
+ }
+}
+
+#[test]
+#[should_panic]
+fn reserve_over_capacity() {
+ // See https://github.com/hyperium/http/issues/352
+ let mut headers = HeaderMap::<u32>::with_capacity(32);
+ headers.reserve(50_000); // over MAX_SIZE
+}
+
+#[test]
+fn with_capacity_max() {
+ // The largest capacity such that (cap + cap / 3) < MAX_SIZE.
+ HeaderMap::<u32>::with_capacity(24_576);
+}
+
+#[test]
+#[should_panic]
+fn with_capacity_overflow() {
+ HeaderMap::<u32>::with_capacity(24_577);
+}
+
+#[test]
+#[should_panic]
+fn reserve_overflow() {
+ // See https://github.com/hyperium/http/issues/352
+ let mut headers = HeaderMap::<u32>::with_capacity(0);
+ headers.reserve(std::usize::MAX); // next_power_of_two overflows
+}
+
+#[test]
+fn drain() {
+ let mut headers = HeaderMap::new();
+
+ // Insert a single value
+ let name: HeaderName = "hello".parse().unwrap();
+ headers.insert(name, "world".parse().unwrap());
+
+ {
+ let mut iter = headers.drain();
+ let (name, value) = iter.next().unwrap();
+ assert_eq!(name.unwrap().as_str(), "hello");
+
+ assert_eq!(value, "world");
+
+ assert!(iter.next().is_none());
+ }
+
+ assert!(headers.is_empty());
+
+ // Insert two sequential values
+ headers.insert(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world".parse().unwrap(),
+ );
+ headers.insert(
+ "zomg".parse::<HeaderName>().unwrap(),
+ "bar".parse().unwrap(),
+ );
+ headers.append(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world2".parse().unwrap(),
+ );
+
+ // Drain...
+ {
+ let mut iter = headers.drain();
+
+ let (name, value) = iter.next().unwrap();
+ assert_eq!(name.unwrap().as_str(), "hello");
+ assert_eq!(value, "world");
+
+ let (name, value) = iter.next().unwrap();
+ assert_eq!(name, None);
+ assert_eq!(value, "world2");
+
+ let (name, value) = iter.next().unwrap();
+ assert_eq!(name.unwrap().as_str(), "zomg");
+ assert_eq!(value, "bar");
+
+ assert!(iter.next().is_none());
+ }
+}
+
+#[test]
+fn drain_drop_immediately() {
+ // test mem::forgetting does not double-free
+
+ let mut headers = HeaderMap::new();
+ headers.insert("hello", "world".parse().unwrap());
+ headers.insert("zomg", "bar".parse().unwrap());
+ headers.append("hello", "world2".parse().unwrap());
+
+ let iter = headers.drain();
+ assert_eq!(iter.size_hint(), (2, Some(3)));
+ // not consuming `iter`
+}
+
+#[test]
+fn drain_forget() {
+ // test mem::forgetting does not double-free
+
+ let mut headers = HeaderMap::<HeaderValue>::new();
+ headers.insert("hello", "world".parse().unwrap());
+ headers.insert("zomg", "bar".parse().unwrap());
+
+ assert_eq!(headers.len(), 2);
+
+ {
+ let mut iter = headers.drain();
+ assert_eq!(iter.size_hint(), (2, Some(2)));
+ let _ = iter.next().unwrap();
+ std::mem::forget(iter);
+ }
+
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn drain_entry() {
+ let mut headers = HeaderMap::new();
+
+ headers.insert(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world".parse().unwrap(),
+ );
+ headers.insert(
+ "zomg".parse::<HeaderName>().unwrap(),
+ "foo".parse().unwrap(),
+ );
+ headers.append(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world2".parse().unwrap(),
+ );
+ headers.insert(
+ "more".parse::<HeaderName>().unwrap(),
+ "words".parse().unwrap(),
+ );
+ headers.append(
+ "more".parse::<HeaderName>().unwrap(),
+ "insertions".parse().unwrap(),
+ );
+ assert_eq!(5, headers.len());
+
+ // Using insert_mult
+ {
+ let mut e = match headers.entry("hello") {
+ Entry::Occupied(e) => e,
+ _ => panic!(),
+ };
+
+ let vals: Vec<_> = e.insert_mult("wat".parse().unwrap()).collect();
+ assert_eq!(2, vals.len());
+ assert_eq!(vals[0], "world");
+ assert_eq!(vals[1], "world2");
+ }
+
+ assert_eq!(5-2+1, headers.len());
+}
+
+#[test]
+fn eq() {
+ let mut a = HeaderMap::new();
+ let mut b = HeaderMap::new();
+
+ assert_eq!(a, b);
+
+ a.insert(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world".parse().unwrap(),
+ );
+ assert_ne!(a, b);
+
+ b.insert(
+ "hello".parse::<HeaderName>().unwrap(),
+ "world".parse().unwrap(),
+ );
+ assert_eq!(a, b);
+
+ a.insert("foo".parse::<HeaderName>().unwrap(), "bar".parse().unwrap());
+ a.append("foo".parse::<HeaderName>().unwrap(), "baz".parse().unwrap());
+ assert_ne!(a, b);
+
+ b.insert("foo".parse::<HeaderName>().unwrap(), "bar".parse().unwrap());
+ assert_ne!(a, b);
+
+ b.append("foo".parse::<HeaderName>().unwrap(), "baz".parse().unwrap());
+ assert_eq!(a, b);
+
+ a.append("a".parse::<HeaderName>().unwrap(), "a".parse().unwrap());
+ a.append("a".parse::<HeaderName>().unwrap(), "b".parse().unwrap());
+ b.append("a".parse::<HeaderName>().unwrap(), "b".parse().unwrap());
+ b.append("a".parse::<HeaderName>().unwrap(), "a".parse().unwrap());
+
+ assert_ne!(a, b);
+}
+
+#[test]
+fn into_header_name() {
+ let mut m = HeaderMap::new();
+ m.insert(HOST, "localhost".parse().unwrap());
+ m.insert(&ACCEPT, "*/*".parse().unwrap());
+ m.insert("connection", "keep-alive".parse().unwrap());
+
+ m.append(LOCATION, "/".parse().unwrap());
+ m.append(&VIA, "bob".parse().unwrap());
+ m.append("transfer-encoding", "chunked".parse().unwrap());
+
+ assert_eq!(m.len(), 6);
+}
+
+#[test]
+fn as_header_name() {
+ let mut m = HeaderMap::new();
+ let v: HeaderValue = "localhost".parse().unwrap();
+ m.insert(HOST, v.clone());
+
+ let expected = Some(&v);
+
+ assert_eq!(m.get("host"), expected);
+ assert_eq!(m.get(&HOST), expected);
+
+ let s = String::from("host");
+ assert_eq!(m.get(&s), expected);
+ assert_eq!(m.get(s.as_str()), expected);
+}
+
+#[test]
+fn insert_all_std_headers() {
+ let mut m = HeaderMap::new();
+
+ for (i, hdr) in STD.iter().enumerate() {
+ m.insert(hdr.clone(), hdr.as_str().parse().unwrap());
+
+ for j in 0..(i + 1) {
+ assert_eq!(m[&STD[j]], STD[j].as_str());
+ }
+
+ if i != 0 {
+ for j in (i + 1)..STD.len() {
+ assert!(
+ m.get(&STD[j]).is_none(),
+ "contained {}; j={}",
+ STD[j].as_str(),
+ j
+ );
+ }
+ }
+ }
+}
+
+#[test]
+fn insert_79_custom_std_headers() {
+ let mut h = HeaderMap::new();
+ let hdrs = custom_std(79);
+
+ for (i, hdr) in hdrs.iter().enumerate() {
+ h.insert(hdr.clone(), hdr.as_str().parse().unwrap());
+
+ for j in 0..(i + 1) {
+ assert_eq!(h[&hdrs[j]], hdrs[j].as_str());
+ }
+
+ for j in (i + 1)..hdrs.len() {
+ assert!(h.get(&hdrs[j]).is_none());
+ }
+ }
+}
+
+#[test]
+fn append_multiple_values() {
+ let mut map = HeaderMap::new();
+
+ map.append(header::CONTENT_TYPE, "json".parse().unwrap());
+ map.append(header::CONTENT_TYPE, "html".parse().unwrap());
+ map.append(header::CONTENT_TYPE, "xml".parse().unwrap());
+
+ let vals = map
+ .get_all(&header::CONTENT_TYPE)
+ .iter()
+ .collect::<Vec<_>>();
+
+ assert_eq!(&vals, &[&"json", &"html", &"xml"]);
+}
+
+fn custom_std(n: usize) -> Vec<HeaderName> {
+ (0..n)
+ .map(|i| {
+ let s = format!("{}-{}", STD[i % STD.len()].as_str(), i);
+ s.parse().unwrap()
+ })
+ .collect()
+}
+
+const STD: &'static [HeaderName] = &[
+ ACCEPT,
+ ACCEPT_CHARSET,
+ ACCEPT_ENCODING,
+ ACCEPT_LANGUAGE,
+ ACCEPT_RANGES,
+ ACCESS_CONTROL_ALLOW_CREDENTIALS,
+ ACCESS_CONTROL_ALLOW_HEADERS,
+ ACCESS_CONTROL_ALLOW_METHODS,
+ ACCESS_CONTROL_ALLOW_ORIGIN,
+ ACCESS_CONTROL_EXPOSE_HEADERS,
+ ACCESS_CONTROL_MAX_AGE,
+ ACCESS_CONTROL_REQUEST_HEADERS,
+ ACCESS_CONTROL_REQUEST_METHOD,
+ AGE,
+ ALLOW,
+ ALT_SVC,
+ AUTHORIZATION,
+ CACHE_CONTROL,
+ CACHE_STATUS,
+ CDN_CACHE_CONTROL,
+ CONNECTION,
+ CONTENT_DISPOSITION,
+ CONTENT_ENCODING,
+ CONTENT_LANGUAGE,
+ CONTENT_LENGTH,
+ CONTENT_LOCATION,
+ CONTENT_RANGE,
+ CONTENT_SECURITY_POLICY,
+ CONTENT_SECURITY_POLICY_REPORT_ONLY,
+ CONTENT_TYPE,
+ COOKIE,
+ DNT,
+ DATE,
+ ETAG,
+ EXPECT,
+ EXPIRES,
+ FORWARDED,
+ FROM,
+ HOST,
+ IF_MATCH,
+ IF_MODIFIED_SINCE,
+ IF_NONE_MATCH,
+ IF_RANGE,
+ IF_UNMODIFIED_SINCE,
+ LAST_MODIFIED,
+ LINK,
+ LOCATION,
+ MAX_FORWARDS,
+ ORIGIN,
+ PRAGMA,
+ PROXY_AUTHENTICATE,
+ PROXY_AUTHORIZATION,
+ PUBLIC_KEY_PINS,
+ PUBLIC_KEY_PINS_REPORT_ONLY,
+ RANGE,
+ REFERER,
+ REFERRER_POLICY,
+ RETRY_AFTER,
+ SERVER,
+ SET_COOKIE,
+ STRICT_TRANSPORT_SECURITY,
+ TE,
+ TRAILER,
+ TRANSFER_ENCODING,
+ USER_AGENT,
+ UPGRADE,
+ UPGRADE_INSECURE_REQUESTS,
+ VARY,
+ VIA,
+ WARNING,
+ WWW_AUTHENTICATE,
+ X_CONTENT_TYPE_OPTIONS,
+ X_DNS_PREFETCH_CONTROL,
+ X_FRAME_OPTIONS,
+ X_XSS_PROTECTION,
+];
+
+#[test]
+fn get_invalid() {
+ let mut headers = HeaderMap::new();
+ headers.insert("foo", "bar".parse().unwrap());
+ assert!(headers.get("Evil\r\nKey").is_none());
+}
+
+#[test]
+#[should_panic]
+fn insert_invalid() {
+ let mut headers = HeaderMap::new();
+ headers.insert("evil\r\nfoo", "bar".parse().unwrap());
+}
+
+#[test]
+fn value_htab() {
+ // RFC 7230 Section 3.2:
+ // > field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
+ HeaderValue::from_static("hello\tworld");
+ HeaderValue::from_str("hello\tworld").unwrap();
+}
+
+
+#[test]
+fn remove_multiple_a() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+ headers.insert(VARY, "*".parse().unwrap());
+
+ assert_eq!(headers.len(), 6);
+
+ let cookie = headers.remove(SET_COOKIE);
+ assert_eq!(cookie, Some("cookie_1=value 1".parse().unwrap()));
+ assert_eq!(headers.len(), 3);
+
+ let via = headers.remove(VIA);
+ assert_eq!(via, Some("1.1 example.com".parse().unwrap()));
+ assert_eq!(headers.len(), 1);
+
+ let vary = headers.remove(VARY);
+ assert_eq!(vary, Some("*".parse().unwrap()));
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_multiple_b() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+ headers.insert(VARY, "*".parse().unwrap());
+
+ assert_eq!(headers.len(), 6);
+
+ let vary = headers.remove(VARY);
+ assert_eq!(vary, Some("*".parse().unwrap()));
+ assert_eq!(headers.len(), 5);
+
+ let via = headers.remove(VIA);
+ assert_eq!(via, Some("1.1 example.com".parse().unwrap()));
+ assert_eq!(headers.len(), 3);
+
+ let cookie = headers.remove(SET_COOKIE);
+ assert_eq!(cookie, Some("cookie_1=value 1".parse().unwrap()));
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_multi_0() {
+ let mut headers = HeaderMap::new();
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 0);
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_multi_0_others() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 0);
+ assert_eq!(headers.len(), 2);
+}
+
+#[test]
+fn remove_entry_multi_1() {
+ let mut headers = HeaderMap::new();
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 1);
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_multi_1_other() {
+ let mut headers = HeaderMap::new();
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 1);
+ assert_eq!(headers.len(), 1);
+
+ let vias = remove_all_values(&mut headers, VIA);
+ assert_eq!(vias.len(), 1);
+ assert_eq!(headers.len(), 0);
+}
+
+// For issue hyperimum/http#446
+#[test]
+fn remove_entry_multi_2() {
+ let mut headers = HeaderMap::new();
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 2);
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_multi_3() {
+ let mut headers = HeaderMap::new();
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 3);
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_multi_3_others() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+ headers.insert(VARY, "*".parse().unwrap());
+
+ let cookies = remove_all_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookies.len(), 3);
+ assert_eq!(headers.len(), 3);
+
+ let vias = remove_all_values(&mut headers, VIA);
+ assert_eq!(vias.len(), 2);
+ assert_eq!(headers.len(), 1);
+
+ let varies = remove_all_values(&mut headers, VARY);
+ assert_eq!(varies.len(), 1);
+ assert_eq!(headers.len(), 0);
+}
+
+fn remove_all_values<K>(headers: &mut HeaderMap, key: K) -> Vec<HeaderValue>
+ where K: IntoHeaderName
+{
+ match headers.entry(key) {
+ Entry::Occupied(e) => e.remove_entry_mult().1.collect(),
+ Entry::Vacant(_) => vec![],
+ }
+}
+
+#[test]
+fn remove_entry_3_others_a() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+ headers.insert(VARY, "*".parse().unwrap());
+
+ assert_eq!(headers.len(), 6);
+
+ let cookie = remove_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookie, Some("cookie_1=value 1".parse().unwrap()));
+ assert_eq!(headers.len(), 3);
+
+ let via = remove_values(&mut headers, VIA);
+ assert_eq!(via, Some("1.1 example.com".parse().unwrap()));
+ assert_eq!(headers.len(), 1);
+
+ let vary = remove_values(&mut headers, VARY);
+ assert_eq!(vary, Some("*".parse().unwrap()));
+ assert_eq!(headers.len(), 0);
+}
+
+#[test]
+fn remove_entry_3_others_b() {
+ let mut headers = HeaderMap::new();
+ headers.insert(VIA, "1.1 example.com".parse().unwrap());
+ headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
+ headers.append(VIA, "1.1 other.com".parse().unwrap());
+ headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
+ headers.insert(VARY, "*".parse().unwrap());
+
+ assert_eq!(headers.len(), 6);
+
+ let vary = remove_values(&mut headers, VARY);
+ assert_eq!(vary, Some("*".parse().unwrap()));
+ assert_eq!(headers.len(), 5);
+
+ let via = remove_values(&mut headers, VIA);
+ assert_eq!(via, Some("1.1 example.com".parse().unwrap()));
+ assert_eq!(headers.len(), 3);
+
+ let cookie = remove_values(&mut headers, SET_COOKIE);
+ assert_eq!(cookie, Some("cookie_1=value 1".parse().unwrap()));
+ assert_eq!(headers.len(), 0);
+}
+
+fn remove_values<K>(headers: &mut HeaderMap, key: K) -> Option<HeaderValue>
+ where K: IntoHeaderName
+{
+ match headers.entry(key) {
+ Entry::Occupied(e) => Some(e.remove_entry().1),
+ Entry::Vacant(_) => None,
+ }
+}
diff --git a/extra_versions/crates/http/tests/header_map_fuzz.rs b/extra_versions/crates/http/tests/header_map_fuzz.rs
new file mode 100644
index 0000000..c3af2e5
--- /dev/null
+++ b/extra_versions/crates/http/tests/header_map_fuzz.rs
@@ -0,0 +1,376 @@
+use http::header::*;
+use http::*;
+
+use quickcheck::{Arbitrary, Gen, QuickCheck, TestResult};
+use rand::rngs::StdRng;
+use rand::seq::SliceRandom;
+use rand::{Rng, SeedableRng};
+
+use std::collections::HashMap;
+
+#[cfg(not(miri))]
+#[test]
+fn header_map_fuzz() {
+ fn prop(fuzz: Fuzz) -> TestResult {
+ fuzz.run();
+ TestResult::from_bool(true)
+ }
+
+ QuickCheck::new().quickcheck(prop as fn(Fuzz) -> TestResult)
+}
+
+#[derive(Debug, Clone)]
+#[allow(dead_code)]
+struct Fuzz {
+ // The magic seed that makes the test case reproducible
+ seed: [u8; 32],
+
+ // Actions to perform
+ steps: Vec<Step>,
+
+ // Number of steps to drop
+ reduce: usize,
+}
+
+#[derive(Debug)]
+struct Weight {
+ insert: usize,
+ remove: usize,
+ append: usize,
+}
+
+#[derive(Debug, Clone)]
+struct Step {
+ action: Action,
+ expect: AltMap,
+}
+
+#[derive(Debug, Clone)]
+enum Action {
+ Insert {
+ name: HeaderName, // Name to insert
+ val: HeaderValue, // Value to insert
+ old: Option<HeaderValue>, // Old value
+ },
+ Append {
+ name: HeaderName,
+ val: HeaderValue,
+ ret: bool,
+ },
+ Remove {
+ name: HeaderName, // Name to remove
+ val: Option<HeaderValue>, // Value to get
+ },
+}
+
+// An alternate implementation of HeaderMap backed by HashMap
+#[derive(Debug, Clone, Default)]
+struct AltMap {
+ map: HashMap<HeaderName, Vec<HeaderValue>>,
+}
+
+impl Fuzz {
+ fn new(seed: [u8; 32]) -> Fuzz {
+ // Seed the RNG
+ let mut rng = StdRng::from_seed(seed);
+
+ let mut steps = vec![];
+ let mut expect = AltMap::default();
+ let num = rng.gen_range(5, 500);
+
+ let weight = Weight {
+ insert: rng.gen_range(1, 10),
+ remove: rng.gen_range(1, 10),
+ append: rng.gen_range(1, 10),
+ };
+
+ while steps.len() < num {
+ steps.push(expect.gen_step(&weight, &mut rng));
+ }
+
+ Fuzz {
+ seed: seed,
+ steps: steps,
+ reduce: 0,
+ }
+ }
+
+ fn run(self) {
+ // Create a new header map
+ let mut map = HeaderMap::new();
+
+ // Number of steps to perform
+ let take = self.steps.len() - self.reduce;
+
+ for step in self.steps.into_iter().take(take) {
+ step.action.apply(&mut map);
+
+ step.expect.assert_identical(&map);
+ }
+ }
+}
+
+impl Arbitrary for Fuzz {
+ fn arbitrary<G: Gen>(g: &mut G) -> Self {
+ Fuzz::new(Rng::gen(g))
+ }
+}
+
+impl AltMap {
+ fn gen_step(&mut self, weight: &Weight, rng: &mut StdRng) -> Step {
+ let action = self.gen_action(weight, rng);
+
+ Step {
+ action: action,
+ expect: self.clone(),
+ }
+ }
+
+ /// This will also apply the action against `self`
+ fn gen_action(&mut self, weight: &Weight, rng: &mut StdRng) -> Action {
+ let sum = weight.insert + weight.remove + weight.append;
+
+ let mut num = rng.gen_range(0, sum);
+
+ if num < weight.insert {
+ return self.gen_insert(rng);
+ }
+
+ num -= weight.insert;
+
+ if num < weight.remove {
+ return self.gen_remove(rng);
+ }
+
+ num -= weight.remove;
+
+ if num < weight.append {
+ return self.gen_append(rng);
+ }
+
+ unreachable!();
+ }
+
+ fn gen_insert(&mut self, rng: &mut StdRng) -> Action {
+ let name = self.gen_name(4, rng);
+ let val = gen_header_value(rng);
+ let old = self.insert(name.clone(), val.clone());
+
+ Action::Insert {
+ name: name,
+ val: val,
+ old: old,
+ }
+ }
+
+ fn gen_remove(&mut self, rng: &mut StdRng) -> Action {
+ let name = self.gen_name(-4, rng);
+ let val = self.remove(&name);
+
+ Action::Remove {
+ name: name,
+ val: val,
+ }
+ }
+
+ fn gen_append(&mut self, rng: &mut StdRng) -> Action {
+ let name = self.gen_name(-5, rng);
+ let val = gen_header_value(rng);
+
+ let vals = self.map.entry(name.clone()).or_insert(vec![]);
+
+ let ret = !vals.is_empty();
+ vals.push(val.clone());
+
+ Action::Append {
+ name: name,
+ val: val,
+ ret: ret,
+ }
+ }
+
+ /// Negative numbers weigh finding an existing header higher
+ fn gen_name(&self, weight: i32, rng: &mut StdRng) -> HeaderName {
+ let mut existing = rng.gen_ratio(1, weight.abs() as u32);
+
+ if weight < 0 {
+ existing = !existing;
+ }
+
+ if existing {
+ // Existing header
+ if let Some(name) = self.find_random_name(rng) {
+ name
+ } else {
+ gen_header_name(rng)
+ }
+ } else {
+ gen_header_name(rng)
+ }
+ }
+
+ fn find_random_name(&self, rng: &mut StdRng) -> Option<HeaderName> {
+ if self.map.is_empty() {
+ None
+ } else {
+ let n = rng.gen_range(0, self.map.len());
+ self.map.keys().nth(n).map(Clone::clone)
+ }
+ }
+
+ fn insert(&mut self, name: HeaderName, val: HeaderValue) -> Option<HeaderValue> {
+ let old = self.map.insert(name, vec![val]);
+ old.and_then(|v| v.into_iter().next())
+ }
+
+ fn remove(&mut self, name: &HeaderName) -> Option<HeaderValue> {
+ self.map.remove(name).and_then(|v| v.into_iter().next())
+ }
+
+ fn assert_identical(&self, other: &HeaderMap<HeaderValue>) {
+ assert_eq!(self.map.len(), other.keys_len());
+
+ for (key, val) in &self.map {
+ // Test get
+ assert_eq!(other.get(key), val.get(0));
+
+ // Test get_all
+ let vals = other.get_all(key);
+ let actual: Vec<_> = vals.iter().collect();
+ assert_eq!(&actual[..], &val[..]);
+ }
+ }
+}
+
+impl Action {
+ fn apply(self, map: &mut HeaderMap<HeaderValue>) {
+ match self {
+ Action::Insert { name, val, old } => {
+ let actual = map.insert(name, val);
+ assert_eq!(actual, old);
+ }
+ Action::Remove { name, val } => {
+ // Just to help track the state, load all associated values.
+ let _ = map.get_all(&name).iter().collect::<Vec<_>>();
+
+ let actual = map.remove(&name);
+ assert_eq!(actual, val);
+ }
+ Action::Append { name, val, ret } => {
+ assert_eq!(ret, map.append(name, val));
+ }
+ }
+ }
+}
+
+fn gen_header_name(g: &mut StdRng) -> HeaderName {
+ const STANDARD_HEADERS: &'static [HeaderName] = &[
+ header::ACCEPT,
+ header::ACCEPT_CHARSET,
+ header::ACCEPT_ENCODING,
+ header::ACCEPT_LANGUAGE,
+ header::ACCEPT_RANGES,
+ header::ACCESS_CONTROL_ALLOW_CREDENTIALS,
+ header::ACCESS_CONTROL_ALLOW_HEADERS,
+ header::ACCESS_CONTROL_ALLOW_METHODS,
+ header::ACCESS_CONTROL_ALLOW_ORIGIN,
+ header::ACCESS_CONTROL_EXPOSE_HEADERS,
+ header::ACCESS_CONTROL_MAX_AGE,
+ header::ACCESS_CONTROL_REQUEST_HEADERS,
+ header::ACCESS_CONTROL_REQUEST_METHOD,
+ header::AGE,
+ header::ALLOW,
+ header::ALT_SVC,
+ header::AUTHORIZATION,
+ header::CACHE_CONTROL,
+ header::CACHE_STATUS,
+ header::CDN_CACHE_CONTROL,
+ header::CONNECTION,
+ header::CONTENT_DISPOSITION,
+ header::CONTENT_ENCODING,
+ header::CONTENT_LANGUAGE,
+ header::CONTENT_LENGTH,
+ header::CONTENT_LOCATION,
+ header::CONTENT_RANGE,
+ header::CONTENT_SECURITY_POLICY,
+ header::CONTENT_SECURITY_POLICY_REPORT_ONLY,
+ header::CONTENT_TYPE,
+ header::COOKIE,
+ header::DNT,
+ header::DATE,
+ header::ETAG,
+ header::EXPECT,
+ header::EXPIRES,
+ header::FORWARDED,
+ header::FROM,
+ header::HOST,
+ header::IF_MATCH,
+ header::IF_MODIFIED_SINCE,
+ header::IF_NONE_MATCH,
+ header::IF_RANGE,
+ header::IF_UNMODIFIED_SINCE,
+ header::LAST_MODIFIED,
+ header::LINK,
+ header::LOCATION,
+ header::MAX_FORWARDS,
+ header::ORIGIN,
+ header::PRAGMA,
+ header::PROXY_AUTHENTICATE,
+ header::PROXY_AUTHORIZATION,
+ header::PUBLIC_KEY_PINS,
+ header::PUBLIC_KEY_PINS_REPORT_ONLY,
+ header::RANGE,
+ header::REFERER,
+ header::REFERRER_POLICY,
+ header::REFRESH,
+ header::RETRY_AFTER,
+ header::SEC_WEBSOCKET_ACCEPT,
+ header::SEC_WEBSOCKET_EXTENSIONS,
+ header::SEC_WEBSOCKET_KEY,
+ header::SEC_WEBSOCKET_PROTOCOL,
+ header::SEC_WEBSOCKET_VERSION,
+ header::SERVER,
+ header::SET_COOKIE,
+ header::STRICT_TRANSPORT_SECURITY,
+ header::TE,
+ header::TRAILER,
+ header::TRANSFER_ENCODING,
+ header::UPGRADE,
+ header::UPGRADE_INSECURE_REQUESTS,
+ header::USER_AGENT,
+ header::VARY,
+ header::VIA,
+ header::WARNING,
+ header::WWW_AUTHENTICATE,
+ header::X_CONTENT_TYPE_OPTIONS,
+ header::X_DNS_PREFETCH_CONTROL,
+ header::X_FRAME_OPTIONS,
+ header::X_XSS_PROTECTION,
+ ];
+
+ if g.gen_ratio(1, 2) {
+ STANDARD_HEADERS.choose(g).unwrap().clone()
+ } else {
+ let value = gen_string(g, 1, 25);
+ HeaderName::from_bytes(value.as_bytes()).unwrap()
+ }
+}
+
+fn gen_header_value(g: &mut StdRng) -> HeaderValue {
+ let value = gen_string(g, 0, 70);
+ HeaderValue::from_bytes(value.as_bytes()).unwrap()
+}
+
+fn gen_string(g: &mut StdRng, min: usize, max: usize) -> String {
+ let bytes: Vec<_> = (min..max)
+ .map(|_| {
+ // Chars to pick from
+ b"ABCDEFGHIJKLMNOPQRSTUVabcdefghilpqrstuvwxyz----"
+ .choose(g)
+ .unwrap()
+ .clone()
+ })
+ .collect();
+
+ String::from_utf8(bytes).unwrap()
+}
diff --git a/extra_versions/crates/http/tests/status_code.rs b/extra_versions/crates/http/tests/status_code.rs
new file mode 100644
index 0000000..160df6b
--- /dev/null
+++ b/extra_versions/crates/http/tests/status_code.rs
@@ -0,0 +1,82 @@
+use http::*;
+
+#[test]
+fn from_bytes() {
+ for ok in &[
+ "100", "101", "199", "200", "250", "299", "321", "399", "499", "599", "600", "999"
+ ] {
+ assert!(StatusCode::from_bytes(ok.as_bytes()).is_ok());
+ }
+
+ for not_ok in &[
+ "0", "00", "10", "40", "99", "000", "010", "099", "1000", "1999",
+ ] {
+ assert!(StatusCode::from_bytes(not_ok.as_bytes()).is_err());
+ }
+}
+
+#[test]
+fn equates_with_u16() {
+ let status = StatusCode::from_u16(200u16).unwrap();
+ assert_eq!(200u16, status);
+ assert_eq!(status, 200u16);
+}
+
+#[test]
+fn roundtrip() {
+ for s in 100..1000 {
+ let sstr = s.to_string();
+ let status = StatusCode::from_bytes(sstr.as_bytes()).unwrap();
+ assert_eq!(s, u16::from(status));
+ assert_eq!(sstr, status.as_str());
+ }
+}
+
+#[test]
+fn is_informational() {
+ assert!(status_code(100).is_informational());
+ assert!(status_code(199).is_informational());
+
+ assert!(!status_code(200).is_informational());
+}
+
+#[test]
+fn is_success() {
+ assert!(status_code(200).is_success());
+ assert!(status_code(299).is_success());
+
+ assert!(!status_code(199).is_success());
+ assert!(!status_code(300).is_success());
+}
+
+#[test]
+fn is_redirection() {
+ assert!(status_code(300).is_redirection());
+ assert!(status_code(399).is_redirection());
+
+ assert!(!status_code(299).is_redirection());
+ assert!(!status_code(400).is_redirection());
+}
+
+#[test]
+fn is_client_error() {
+ assert!(status_code(400).is_client_error());
+ assert!(status_code(499).is_client_error());
+
+ assert!(!status_code(399).is_client_error());
+ assert!(!status_code(500).is_client_error());
+}
+
+#[test]
+fn is_server_error() {
+ assert!(status_code(500).is_server_error());
+ assert!(status_code(599).is_server_error());
+
+ assert!(!status_code(499).is_server_error());
+ assert!(!status_code(600).is_server_error());
+}
+
+/// Helper method for readability
+fn status_code(status_code: u16) -> StatusCode {
+ StatusCode::from_u16(status_code).unwrap()
+}
diff --git a/extra_versions/pseudo_crate/Cargo.lock b/extra_versions/pseudo_crate/Cargo.lock
index e9ea61d..1de9c19 100644
--- a/extra_versions/pseudo_crate/Cargo.lock
+++ b/extra_versions/pseudo_crate/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "ahash"
@@ -21,6 +21,7 @@
"clap",
"clap_lex 0.3.2",
"hashbrown",
+ "http",
"jni",
"protobuf",
"protobuf-codegen",
@@ -120,6 +121,12 @@
]
[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
name = "getrandom"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -149,6 +156,17 @@
]
[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -159,6 +177,12 @@
]
[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
name = "jni"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/extra_versions/pseudo_crate/Cargo.toml b/extra_versions/pseudo_crate/Cargo.toml
index 33db5f5..e64ea45 100644
--- a/extra_versions/pseudo_crate/Cargo.toml
+++ b/extra_versions/pseudo_crate/Cargo.toml
@@ -10,6 +10,7 @@
clap = "=3.2.23"
clap_lex = "=0.3.2"
hashbrown = "=0.12.3"
+http = "=0.2.12"
jni = "=0.20.0"
protobuf = "=2.27.1"
protobuf-codegen = "=2.27.1"
diff --git a/extra_versions/pseudo_crate/crate-list.txt b/extra_versions/pseudo_crate/crate-list.txt
index d6b94ff..4335ae9 100644
--- a/extra_versions/pseudo_crate/crate-list.txt
+++ b/extra_versions/pseudo_crate/crate-list.txt
@@ -2,6 +2,7 @@
clap
clap_lex
hashbrown
+http
jni
protobuf
protobuf-codegen
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index fa1334a..0100ee5 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -138,9 +138,11 @@
"byteorder",
"bytes",
"camino",
+ "cargo-platform",
"cast",
"cesu8",
"cexpr",
+ "cfg-expr",
"cfg-if",
"chrono",
"ciborium",
@@ -194,6 +196,7 @@
"drm-fourcc",
"either",
"enum-as-inner",
+ "enum-primitive-derive",
"enumn",
"env_filter",
"env_logger 0.10.2",
@@ -246,6 +249,7 @@
"hashlink 0.10.0",
"heck 0.5.0",
"hex",
+ "home",
"hound",
"http 0.2.12",
"http-body",
@@ -345,6 +349,7 @@
"open-enum",
"open-enum-derive",
"openssl-macros",
+ "os_pipe",
"os_str_bytes",
"p9",
"p9_wire_format_derive",
@@ -405,9 +410,11 @@
"rustc-demangle",
"rustc-demangle-capi",
"rustc-hash 2.1.1",
+ "rustc-stable-hash",
"rustix",
"rustversion",
"ryu",
+ "safe-mmio",
"same-file",
"scopeguard",
"sec1",
@@ -428,11 +435,13 @@
"shlex",
"signal-hook",
"signal-hook-registry",
+ "simd-adler32",
"siphasher",
"slab",
"slotmap",
"smallvec",
"smccc",
+ "smol_str",
"socket2",
"spdx",
"spidev",
@@ -444,7 +453,7 @@
"strsim 0.11.1",
"strum",
"strum_macros",
- "syn 2.0.98",
+ "syn 2.0.100",
"syn-mid",
"sync_wrapper 1.0.2",
"synstructure",
@@ -558,20 +567,19 @@
[[package]]
name = "android_log-sys"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ecc8056bf6ab9892dcd53216c83d1597487d7dacac16c8df6b877d127df9937"
+checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d"
[[package]]
name = "android_logger"
-version = "0.13.3"
+version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c494134f746c14dc653a35a4ea5aca24ac368529da5370ecf41fe0341c35772f"
+checksum = "f6f39be698127218cca460cb624878c9aa4e2b47dba3b277963d2bf00bad263b"
dependencies = [
"android_log-sys",
- "env_logger 0.10.2",
+ "env_filter",
"log",
- "once_cell",
]
[[package]]
@@ -700,7 +708,7 @@
"argh_shared",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -743,7 +751,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -754,13 +762,13 @@
[[package]]
name = "async-trait"
-version = "0.1.87"
+version = "0.1.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97"
+checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -938,7 +946,7 @@
"regex",
"rustc-hash 1.1.0",
"shlex",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -961,7 +969,7 @@
"regex",
"rustc-hash 1.1.0",
"shlex",
- "syn 2.0.98",
+ "syn 2.0.100",
"which",
]
@@ -1068,7 +1076,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1121,6 +1129,15 @@
checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
[[package]]
+name = "cargo-platform"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "cast"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1153,6 +1170,15 @@
]
[[package]]
+name = "cfg-expr"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a2b34126159980f92da2a08bdec0694fd80fb5eb9e48aff25d20a0d8dfa710d"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1160,12 +1186,6 @@
[[package]]
name = "cfg_aliases"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
-
-[[package]]
-name = "cfg_aliases"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
@@ -1299,7 +1319,7 @@
"heck 0.4.1",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1678,7 +1698,7 @@
"proc-macro2 1.0.94",
"quote 1.0.40",
"strsim 0.11.1",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1689,7 +1709,7 @@
dependencies = [
"darling_core",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1741,7 +1761,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1761,7 +1781,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1790,7 +1810,7 @@
"diplomat_core",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1813,7 +1833,7 @@
"serde",
"smallvec",
"strck",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1845,7 +1865,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -1996,7 +2016,18 @@
"heck 0.5.0",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
+]
+
+[[package]]
+name = "enum-primitive-derive"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c"
+dependencies = [
+ "num-traits",
+ "quote 1.0.40",
+ "syn 2.0.100",
]
[[package]]
@@ -2007,7 +2038,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -2210,9 +2241,9 @@
[[package]]
name = "foldhash"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f"
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "font-kit"
@@ -2266,7 +2297,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -2372,7 +2403,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -2578,7 +2609,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -2797,6 +2828,15 @@
]
[[package]]
+name = "home"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
name = "hound"
version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3822,9 +3862,9 @@
[[package]]
name = "libz-sys"
-version = "1.1.21"
+version = "1.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa"
+checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d"
dependencies = [
"cc",
"libc 0.2.161",
@@ -3855,7 +3895,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -3991,7 +4031,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4059,7 +4099,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4165,7 +4205,7 @@
"darling",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4177,7 +4217,7 @@
"darling",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4244,7 +4284,7 @@
"cfg-if",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4291,38 +4331,26 @@
[[package]]
name = "nix"
-version = "0.28.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
-dependencies = [
- "bitflags 2.9.0",
- "cfg-if",
- "cfg_aliases 0.1.1",
- "libc 0.2.161",
- "memoffset",
-]
-
-[[package]]
-name = "nix"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags 2.9.0",
"cfg-if",
- "cfg_aliases 0.2.1",
+ "cfg_aliases",
"libc 0.2.161",
+ "memoffset",
]
[[package]]
name = "no-panic"
-version = "0.1.33"
+version = "0.1.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f7da86466fe446079286ef4b2f6d789755b610a9d85da8477633f734d2697e8"
+checksum = "113d1abd5bb3dc25a75d9b3a973f40e31eb03e0bae23c172b32cca4bcb9cfad2"
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4384,7 +4412,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4444,7 +4472,7 @@
"proc-macro-crate 3.1.0",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4519,7 +4547,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4545,7 +4573,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4577,6 +4605,16 @@
]
[[package]]
+name = "os_pipe"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982"
+dependencies = [
+ "libc 0.2.161",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
name = "os_str_bytes"
version = "6.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4706,7 +4744,7 @@
"quote 1.0.40",
"serde",
"serde_json",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4777,7 +4815,7 @@
"pest_meta",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4818,7 +4856,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -4966,9 +5004,12 @@
[[package]]
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy 0.8.23",
+]
[[package]]
name = "predicates"
@@ -5017,7 +5058,7 @@
checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb"
dependencies = [
"proc-macro2 1.0.94",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -5353,7 +5394,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -5458,6 +5499,12 @@
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
[[package]]
+name = "rustc-stable-hash"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08"
+
+[[package]]
name = "rustc_version"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5492,6 +5539,15 @@
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
+name = "safe-mmio"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a2880901c2c082170ccf8a4d156f2b3707faf09cc1fac31d08cba224b2a9cb5"
+dependencies = [
+ "zerocopy 0.8.23",
+]
+
+[[package]]
name = "safer-ffi"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5529,7 +5585,7 @@
"proc-macro-error",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"thiserror 1.0.49",
]
@@ -5633,7 +5689,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -5866,6 +5922,15 @@
checksum = "617d17f088ec733e5a6b86da6ce4cce1414e6e856d6061c16dda51cceae6f68c"
[[package]]
+name = "smol_str"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "socket2"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6004,7 +6069,7 @@
"proc-macro2 1.0.94",
"quote 1.0.40",
"rustversion",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6037,9 +6102,9 @@
[[package]]
name = "syn"
-version = "2.0.98"
+version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
@@ -6054,7 +6119,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6077,7 +6142,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6172,7 +6237,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6183,7 +6248,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6317,7 +6382,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6353,7 +6418,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6548,7 +6613,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6680,7 +6745,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6878,7 +6943,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -6955,9 +7020,9 @@
[[package]]
name = "virtio-drivers-and-devices"
-version = "0.1.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "087f2286ad55b6c36ec93267bcd1cbb740d7f9784879a001f76eea329d488273"
+checksum = "603664485269cf027cbbf54a2987426e6333d8fda4d0da65def6de0bc8868f51"
dependencies = [
"bitflags 2.9.0",
"embedded-io",
@@ -7023,12 +7088,12 @@
[[package]]
name = "vsock"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f82e291049535877d607cd861b6820eb622538c88853c1c01df72b1dbed4e32d"
+checksum = "4e8b4d00e672f147fc86a09738fadb1445bd1c0a40542378dfb82909deeee688"
dependencies = [
"libc 0.2.161",
- "nix 0.28.0",
+ "nix 0.29.0",
]
[[package]]
@@ -7129,7 +7194,7 @@
"once_cell",
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"wasm-bindgen-shared",
]
@@ -7151,7 +7216,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -7657,7 +7722,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"synstructure",
]
@@ -7669,7 +7734,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"synstructure",
]
@@ -7699,7 +7764,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -7710,7 +7775,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -7730,7 +7795,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
"synstructure",
]
@@ -7751,7 +7816,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
@@ -7784,7 +7849,7 @@
dependencies = [
"proc-macro2 1.0.94",
"quote 1.0.40",
- "syn 2.0.98",
+ "syn 2.0.100",
]
[[package]]
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index b184900..eb2143e 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -12,8 +12,8 @@
ahash = "=0.8.11"
aho-corasick = "=0.7.20"
android_bp = "=0.3.0"
-android_log-sys = "=0.3.1"
-android_logger = "=0.13.3"
+android_log-sys = "=0.3.2"
+android_logger = "=0.15.0"
anes = "=0.2.0"
annotate-snippets = "=0.9.2"
anstyle = "=1.0.10"
@@ -28,7 +28,7 @@
async-stream = "=0.3.6"
async-stream-impl = "=0.3.6"
async-task = "=4.7.1"
-async-trait = "=0.1.87"
+async-trait = "=0.1.88"
atomic = "=0.6.0"
atty = "=0.2.14"
axum = "=0.6.20"
@@ -48,9 +48,11 @@
byteorder = "=1.5.0"
bytes = "=1.10.1"
camino = "=1.1.9"
+cargo-platform = "=0.1.9"
cast = "=0.3.0"
cesu8 = "=1.1.0"
cexpr = "=0.6.0"
+cfg-expr = "=0.18.0"
cfg-if = "=1.0.0"
chrono = "=0.4.39"
ciborium = "=0.2.2"
@@ -104,6 +106,7 @@
drm-fourcc = "=2.2.0"
either = "=1.15.0"
enum-as-inner = "=0.6.1"
+enum-primitive-derive = "=0.3.0"
enumn = "=0.1.14"
env_filter = "=0.1.3"
env_logger = "=0.10.2"
@@ -118,7 +121,7 @@
flagset = "=0.4.6"
flate2 = "=1.0.35"
fnv = "=1.0.7"
-foldhash = "=0.1.4"
+foldhash = "=0.1.5"
foreign-types = "=0.3.2"
foreign-types-shared = "=0.1.1"
form_urlencoded = "=1.2.1"
@@ -156,6 +159,7 @@
hashlink = "=0.10.0"
heck = "=0.5.0"
hex = "=0.4.3"
+home = "=0.5.11"
hound = "=3.5.1"
http = "=0.2.12"
http-body = "=0.4.6"
@@ -203,7 +207,7 @@
libsqlite3-sys = "=0.30.1"
libtest-mimic = "=0.6.1"
libusb1-sys = "=0.7.0"
-libz-sys = "=1.1.21"
+libz-sys = "=1.1.22"
linked-hash-map = "=0.5.6"
linkme = "=0.3.31"
linkme-impl = "=0.3.31"
@@ -239,7 +243,7 @@
moveit = "=0.6.0"
named-lock = "=0.3.0"
nix = "=0.29.0"
-no-panic = "=0.1.33"
+no-panic = "=0.1.35"
nom = "=7.1.3"
num-bigint = "=0.4.6"
num-complex = "=0.4.6"
@@ -255,6 +259,7 @@
open-enum = "=0.5.2"
open-enum-derive = "=0.5.2"
openssl-macros = "=0.1.1"
+os_pipe = "=1.2.1"
os_str_bytes = "=6.6.1"
p9 = "=0.2.3"
p9_wire_format_derive = "=0.2.3"
@@ -283,7 +288,7 @@
poll_token_derive = "=0.1.0"
portable-atomic = "=1.9.0"
potential_utf = "=0.1.2"
-ppv-lite86 = "=0.2.17"
+ppv-lite86 = "=0.2.21"
predicates = "=3.1.3"
predicates-core = "=1.0.9"
predicates-tree = "=1.0.11"
@@ -315,9 +320,11 @@
rustc-demangle = "=0.1.24"
rustc-demangle-capi = "=0.1.0"
rustc-hash = "=2.1.1"
+rustc-stable-hash = "=0.1.2"
rustix = "=0.38.31"
rustversion = "=1.0.20"
ryu = "=1.0.20"
+safe-mmio = "=0.2.1"
same-file = "=1.0.6"
scopeguard = "=1.2.0"
sec1 = "=0.7.3"
@@ -338,11 +345,13 @@
shlex = "=1.3.0"
signal-hook = "=0.3.17"
signal-hook-registry = "=1.4.2"
+simd-adler32 = "=0.3.7"
siphasher = "=1.0.1"
slab = "=0.4.9"
slotmap = "=1.0.7"
smallvec = "=1.14.0"
smccc = "=0.1.1"
+smol_str = "=0.2.2"
socket2 = "=0.5.8"
spdx = "=0.10.8"
spidev = "=0.7.0"
@@ -354,7 +363,7 @@
strsim = "=0.11.1"
strum = "=0.27.1"
strum_macros = "=0.27.1"
-syn = "=2.0.98"
+syn = "=2.0.100"
syn-mid = "=0.6.0"
sync_wrapper = "=1.0.2"
synstructure = "=0.13.1"
@@ -419,12 +428,12 @@
vhost-user-backend = "=0.17.0"
virtio-bindings = "=0.2.4"
virtio-drivers = "=0.9.0"
-virtio-drivers-and-devices = "=0.1.0"
+virtio-drivers-and-devices = "=0.2.0"
virtio-queue = "=0.14.0"
virtio-vsock = "=0.8.0"
vm-memory = "=0.16.1"
vmm-sys-util = "=0.12.1"
-vsock = "=0.5.0"
+vsock = "=0.5.1"
vsprintf = "=2.0.0"
vulkano = "=0.33.0"
walkdir = "=2.5.0"
diff --git a/pseudo_crate/crate-list.txt b/pseudo_crate/crate-list.txt
index a03a9e4..abae5b4 100644
--- a/pseudo_crate/crate-list.txt
+++ b/pseudo_crate/crate-list.txt
@@ -39,9 +39,11 @@
byteorder
bytes
camino
+cargo-platform
cast
cesu8
cexpr
+cfg-expr
cfg-if
chrono
ciborium
@@ -95,6 +97,7 @@
drm-fourcc
either
enum-as-inner
+enum-primitive-derive
enumn
env_filter
env_logger
@@ -147,6 +150,7 @@
hashlink
heck
hex
+home
hound
http
http-body
@@ -249,6 +253,7 @@
open-enum
open-enum-derive
openssl-macros
+os_pipe
os_str_bytes
p9
p9_wire_format_derive
@@ -309,9 +314,11 @@
rustc-demangle
rustc-demangle-capi
rustc-hash
+rustc-stable-hash
rustix
rustversion
ryu
+safe-mmio
same-file
scopeguard
sec1
@@ -332,11 +339,13 @@
shlex
signal-hook
signal-hook-registry
+simd-adler32
siphasher
slab
slotmap
smallvec
smccc
+smol_str
socket2
spdx
spidev