File 1817900-13-112a1.patch of Package seamonkey.18168

# HG changeset patch
# User Mike Hommey <mh+mozilla@glandium.org>
# Date 1677114768 0
#      Thu Feb 23 01:12:48 2023 +0000
# Node ID a9dbdd8183fe6ee0c9439feb8af9164fe2580024
# Parent  b834f206aede6bd2190e0e80e3ab517665d74ae8
Bug 1817900 - Update encoding_rs to 0.8.32. r=emilio,supply-chain-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D170433

diff --git a/Cargo.lock b/Cargo.lock
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -527,19 +527,19 @@ version = "0.1.0"
 dependencies = [
  "encoding_rs",
  "nserror",
  "nsstring",
 ]
 
 [[package]]
 name = "encoding_rs"
-version = "0.8.31"
+version = "0.8.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"
 dependencies = [
  "cfg-if 1.0.0",
  "packed_simd_2",
 ]
 
 [[package]]
 name = "env_logger"
 version = "0.4.3"
diff --git a/third_party/rust/encoding_rs/.cargo-checksum.json b/third_party/rust/encoding_rs/.cargo-checksum.json
--- a/third_party/rust/encoding_rs/.cargo-checksum.json
+++ b/third_party/rust/encoding_rs/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"CONTRIBUTING.md":"ca1901f3e8532fb4cec894fd3664f0eaa898c0c4b961d1b992d1ed54eacf362a","COPYRIGHT":"11789f45bb180841cd362a5eee6789c68ddb573a11105e30768c308a6add0190","Cargo.toml":"abf2c7d17500cfa1148b76b9a8a8574873a6f6de90d6110d0d8f6b519c8c99f6","Ideas.md":"b7452893f500163868d8de52c09addaf91e1632454ed02e892c467ed7ec39dbd","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","LICENSE-WHATWG":"838118388fe5c2e7f1dbbaeed13e1c7f3ebf88be91319c7c1d77c18e987d1a50","README.md":"bcb4b59cfc5f48fbaba954b8ae4daa9eaecf9044afc89208a78a7e995c321b81","build.rs":"9276ee24ef71433d46323c15296b3fbbb29c0b37c4b1ca45416587f14ba8e777","ci/miri.sh":"43cb8d82f49e3bfe2d2274b6ccd6f0714a4188ccef0cecc040829883cfdbee25","doc/Big5.txt":"f73a2edc5cb6c2d140ba6e07f4542e1c4a234950378acde1df93480f0ca0be0b","doc/EUC-JP.txt":"ee2818b907d0137f40a9ab9fd525fc700a44dbdddb6cf0c157a656566bae4bf1","doc/EUC-KR.txt":"71d9e2ccf3b124e8bdfb433c8cf2773fd878077038d0cec3c7237a50f4a78a30","doc/GBK.txt":"c1b522b5a799884e5001da661f42c5a8f4d0acb9ef1d74b206f22b5f65365606","doc/IBM866.txt":"a5a433e804d0f83af785015179fbc1d9b0eaf1f7960efcd04093e136b51fbd0e","doc/ISO-2022-JP.txt":"af86684f5a8f0e2868d7b2c292860140c3d2e5527530ca091f1b28198e8e2fe6","doc/ISO-8859-10.txt":"6d3949ad7c81ca176895101ed81a1db7df1060d64e262880b94bd31bb344ab4d","doc/ISO-8859-13.txt":"3951dd89cf93f7729148091683cf8511f4529388b7dc8dcd0d62eaed55be93fa","doc/ISO-8859-14.txt":"3d330784a0374fd255a38b47949675cc7168c800530534b0a01cac6edc623adc","doc/ISO-8859-15.txt":"24b1084aab5127a85aab99153f86e24694d0a3615f53b5ce23683f97cf66c47a","doc/ISO-8859-16.txt":"ce0272559b92ba76d7a7e476f6424ae4a5cc72e75b183611b08392e44add4d25","doc/ISO-8859-2.txt":"18ceff88c13d1b5ba455a3919b1e3de489045c4c3d2dd7e8527c125c75d54aad","doc/ISO-8859-3.txt":"21798404c68f4f5db59223362f24999da96968c0628427321fccce7d2849a130","doc/ISO-8859-4.txt":"d27f6520c6c5bfbcc19176b71d081cdb3bccde1622bb3e420d5680e812632d53","doc/ISO-8859-5.txt":"a10ec8d6ea7a78ad15da7275f6cb1a3365118527e28f9af6d0d5830501303f3a","doc/ISO-8859-6.txt":"ccda8a2efc96115336bdd77776637b9712425e44fbcf745353b9057fbef144e7","doc/ISO-8859-7.txt":"17900fa1f27a445958f0a77d7d9056be375a6bd7ee4492aa680c7c1500bab85e","doc/ISO-8859-8-I.txt":"8357555646d54265a9b9ffa3e68b08d132312f1561c60108ff9b8b1167b6ecf2","doc/ISO-8859-8.txt":"72cd6f3afb7b4a9c16a66a362473315770b7755d72c86c870e52fc3eba86c8af","doc/KOI8-R.txt":"839cf19a38da994488004ed7814b1f6151640156a9a2af02bf2efca745fb5966","doc/KOI8-U.txt":"0cc76624ed1f024183e2298b7e019957da2c70c8ca06e0fc4e6f353f50a5054f","doc/Shift_JIS.txt":"34c49141818cb9ddbcf59cc858f78a79be8ad148d563f26415108ae1f148443f","doc/UTF-16BE.txt":"e2e280d8acbaa6d2a6b3569d60e17500a285f2baa0df3363dd85537cd5a1ef8f","doc/UTF-16LE.txt":"70bdc170e3fc5298ba68f10125fb5eeb8b077036cc96bb4416c4de396f6d76c1","doc/UTF-8.txt":"ea7bae742e613010ced002cf4b601a737d2203fad65e115611451bc4428f548a","doc/gb18030.txt":"dc71378a8f07a2d8659f69ee81fb8791fef56ba86f124b429978285237bb4a7b","doc/macintosh.txt":"57491e53866711b4672d9b9ff35380b9dac9e0d8e3d6c20bdd6140603687c023","doc/replacement.txt":"4b6c3bbd7999d9d4108a281594bd02d13607e334a95465afff8c2c08d395f0e4","doc/windows-1250.txt":"61296bb6a21cdab602300d32ecfba434cb82de5ac3bc88d58710d2f125e28d39","doc/windows-1251.txt":"7deea1c61dea1485c8ff02db2c7d578db7a9aab63ab1cfd02ec04b515864689e","doc/windows-1252.txt":"933ef3bdddfce5ee132b9f1a1aa8b47423d2587bbe475b19028d0a6d38e180b6","doc/windows-1253.txt":"1a38748b88e99071a5c7b3d5456ead4caedeabab50d50d658be105bc113714de","doc/windows-1254.txt":"f8372f86c6f8d642563cd6ddc025260553292a39423df1683a98670bd7bf2b47","doc/windows-1255.txt":"4e5852494730054e2da258a74e1b9d780abbcdd8ce22ebc218ca2efe9e90493d","doc/windows-1256.txt":"c0879c5172abedead302a406e8f60d9cd9598694a0ffa4fd288ffe4fef7b8ea1","doc/windows-1257.txt":"c28a0c9f964fcb2b46d21f537c402446501a2800670481d6abf9fd9e9018d523","doc/windows-1258.txt":"5019ae4d61805c79aacbf17c93793342dbb098d65a1837783bc3e2c6d6a23602","doc/windows-874.txt":"4ef0e4501c5feba8b17aee1818602ed44b36ca8475db771ce2fc16d392cabecc","doc/x-mac-cyrillic.txt":"58be154d8a888ca3d484b83b44f749823ef339ab27f14d90ca9a856f5050a8bd","doc/x-user-defined.txt":"f9cd07c4321bf5cfb0be4bdddd251072999b04a6cf7a6f5bc63709a84e2c1ffc","generate-encoding-data.py":"be989dd25c6b946e3e8745fdc8e8a80fcf24b3be99ad0b4b78153ba3f6ab6310","rustfmt.toml":"85c1a3b4382fd89e991cbb81b70fb52780472edc064c963943cdaaa56e0a2030","src/ascii.rs":"5c94c74e9b3f48706a4a6dc2d860702a991687a2ac314319cf38cb6d8fb1eabe","src/big5.rs":"ec6e2913011a38e9a3e825a1731f139a7ca1d5b264fefae51a3cc1a68a57cef9","src/data.rs":"8a617cc57032092d65850eb27e00de687c80aea3299e839a1f58b42d0b35abf3","src/euc_jp.rs":"32047f5b540188c4cb19c07165f846b9786a09f18e315ed3e9bda1293dae52aa","src/euc_kr.rs":"9b25afc72d9378700eecfac58d55ad1c5946d6cd0ccde2c29c08200ef2de6bb9","src/gb18030.rs":"808587168d73f0c80f8520f0ca9b161866ed2efeb17a05e85fdf3b8efe7ba28a","src/handles.rs":"cc83dc0754751d67f5688a65c5e0191cba02f6bacce81a0813a243cba55eef7a","src/iso_2022_jp.rs":"9bb485e82574f4b7d4b2364f0ff276acb6a0bc111758420a3b0ec5e04c196652","src/lib.rs":"a64116a6d46ab30ce91deabdb4c5388f03be632326e8a00110bfb0c598474a0a","src/macros.rs":"200997f8870de8bfd8cdc475e92115df42108c0df661e49d3d1cbc32056e1d99","src/mem.rs":"e33f94f18a9dc53f0425c14de238dca22ff028baff4e9bca89d780ac6d581d71","src/replacement.rs":"7660b34a53f8c1ca2bdfa0e51e843ec28326950952ad8bc96569feb93ac62308","src/shift_jis.rs":"6951ae67e36b1a12fa3a30734957f444d8b1b4ae0e2bde52060b29bd0f16d9d9","src/simd_funcs.rs":"103ab4f21229270f97f5ca639ad4f8d82e0d5099974b63db4b3faa486012064b","src/single_byte.rs":"3c9e9c1f946ae622c725ba9421240c1faa9a05e95fa10dd4642a25cb276a1edc","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"23a2e11b02b3b8d15fb5613a625e3edb2c61e70e3c581abfd638719a4088200d","src/testing.rs":"f59e671e95a98a56f6b573e8c6be4d71e670bf52f7e20eb1605d990aafa1894e","src/utf_16.rs":"c071a147fad38d750c2c247e141b76b929a48007b99f26b2922b9caecdaf2f25","src/utf_8.rs":"4bbda750d4cfcc1031d42b358955a5ef94381dbaf9c8820cfa7354fad2ede4a7","src/variant.rs":"1fab5363588a1554a7169de8731ea9cded7ac63ea35caabdd1c27a8dde68c27b","src/x_user_defined.rs":"c9c010730dfb9f141d4fed19350c08a21af240913a54bb64f5ca89ff93b6b7d1"},"package":"9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"}
\ No newline at end of file
+{"files":{"CONTRIBUTING.md":"ca1901f3e8532fb4cec894fd3664f0eaa898c0c4b961d1b992d1ed54eacf362a","COPYRIGHT":"11789f45bb180841cd362a5eee6789c68ddb573a11105e30768c308a6add0190","Cargo.toml":"ea1bdb0b73a66e4a6b25d8fdda6b64cadea8e99ac89f9739eeada6801d5e9010","Ideas.md":"b7452893f500163868d8de52c09addaf91e1632454ed02e892c467ed7ec39dbd","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","LICENSE-WHATWG":"838118388fe5c2e7f1dbbaeed13e1c7f3ebf88be91319c7c1d77c18e987d1a50","README.md":"8781ee38bba8ab4e752b2d63d7674d8ce4a557af896221434dd057a1198a9ed4","ci/miri.sh":"43cb8d82f49e3bfe2d2274b6ccd6f0714a4188ccef0cecc040829883cfdbee25","doc/Big5.txt":"f73a2edc5cb6c2d140ba6e07f4542e1c4a234950378acde1df93480f0ca0be0b","doc/EUC-JP.txt":"ee2818b907d0137f40a9ab9fd525fc700a44dbdddb6cf0c157a656566bae4bf1","doc/EUC-KR.txt":"71d9e2ccf3b124e8bdfb433c8cf2773fd878077038d0cec3c7237a50f4a78a30","doc/GBK.txt":"c1b522b5a799884e5001da661f42c5a8f4d0acb9ef1d74b206f22b5f65365606","doc/IBM866.txt":"a5a433e804d0f83af785015179fbc1d9b0eaf1f7960efcd04093e136b51fbd0e","doc/ISO-2022-JP.txt":"af86684f5a8f0e2868d7b2c292860140c3d2e5527530ca091f1b28198e8e2fe6","doc/ISO-8859-10.txt":"6d3949ad7c81ca176895101ed81a1db7df1060d64e262880b94bd31bb344ab4d","doc/ISO-8859-13.txt":"3951dd89cf93f7729148091683cf8511f4529388b7dc8dcd0d62eaed55be93fa","doc/ISO-8859-14.txt":"3d330784a0374fd255a38b47949675cc7168c800530534b0a01cac6edc623adc","doc/ISO-8859-15.txt":"24b1084aab5127a85aab99153f86e24694d0a3615f53b5ce23683f97cf66c47a","doc/ISO-8859-16.txt":"ce0272559b92ba76d7a7e476f6424ae4a5cc72e75b183611b08392e44add4d25","doc/ISO-8859-2.txt":"18ceff88c13d1b5ba455a3919b1e3de489045c4c3d2dd7e8527c125c75d54aad","doc/ISO-8859-3.txt":"21798404c68f4f5db59223362f24999da96968c0628427321fccce7d2849a130","doc/ISO-8859-4.txt":"d27f6520c6c5bfbcc19176b71d081cdb3bccde1622bb3e420d5680e812632d53","doc/ISO-8859-5.txt":"a10ec8d6ea7a78ad15da7275f6cb1a3365118527e28f9af6d0d5830501303f3a","doc/ISO-8859-6.txt":"ccda8a2efc96115336bdd77776637b9712425e44fbcf745353b9057fbef144e7","doc/ISO-8859-7.txt":"17900fa1f27a445958f0a77d7d9056be375a6bd7ee4492aa680c7c1500bab85e","doc/ISO-8859-8-I.txt":"8357555646d54265a9b9ffa3e68b08d132312f1561c60108ff9b8b1167b6ecf2","doc/ISO-8859-8.txt":"72cd6f3afb7b4a9c16a66a362473315770b7755d72c86c870e52fc3eba86c8af","doc/KOI8-R.txt":"839cf19a38da994488004ed7814b1f6151640156a9a2af02bf2efca745fb5966","doc/KOI8-U.txt":"0cc76624ed1f024183e2298b7e019957da2c70c8ca06e0fc4e6f353f50a5054f","doc/Shift_JIS.txt":"34c49141818cb9ddbcf59cc858f78a79be8ad148d563f26415108ae1f148443f","doc/UTF-16BE.txt":"e2e280d8acbaa6d2a6b3569d60e17500a285f2baa0df3363dd85537cd5a1ef8f","doc/UTF-16LE.txt":"70bdc170e3fc5298ba68f10125fb5eeb8b077036cc96bb4416c4de396f6d76c1","doc/UTF-8.txt":"ea7bae742e613010ced002cf4b601a737d2203fad65e115611451bc4428f548a","doc/gb18030.txt":"dc71378a8f07a2d8659f69ee81fb8791fef56ba86f124b429978285237bb4a7b","doc/macintosh.txt":"57491e53866711b4672d9b9ff35380b9dac9e0d8e3d6c20bdd6140603687c023","doc/replacement.txt":"4b6c3bbd7999d9d4108a281594bd02d13607e334a95465afff8c2c08d395f0e4","doc/windows-1250.txt":"61296bb6a21cdab602300d32ecfba434cb82de5ac3bc88d58710d2f125e28d39","doc/windows-1251.txt":"7deea1c61dea1485c8ff02db2c7d578db7a9aab63ab1cfd02ec04b515864689e","doc/windows-1252.txt":"933ef3bdddfce5ee132b9f1a1aa8b47423d2587bbe475b19028d0a6d38e180b6","doc/windows-1253.txt":"1a38748b88e99071a5c7b3d5456ead4caedeabab50d50d658be105bc113714de","doc/windows-1254.txt":"f8372f86c6f8d642563cd6ddc025260553292a39423df1683a98670bd7bf2b47","doc/windows-1255.txt":"4e5852494730054e2da258a74e1b9d780abbcdd8ce22ebc218ca2efe9e90493d","doc/windows-1256.txt":"c0879c5172abedead302a406e8f60d9cd9598694a0ffa4fd288ffe4fef7b8ea1","doc/windows-1257.txt":"c28a0c9f964fcb2b46d21f537c402446501a2800670481d6abf9fd9e9018d523","doc/windows-1258.txt":"5019ae4d61805c79aacbf17c93793342dbb098d65a1837783bc3e2c6d6a23602","doc/windows-874.txt":"4ef0e4501c5feba8b17aee1818602ed44b36ca8475db771ce2fc16d392cabecc","doc/x-mac-cyrillic.txt":"58be154d8a888ca3d484b83b44f749823ef339ab27f14d90ca9a856f5050a8bd","doc/x-user-defined.txt":"f9cd07c4321bf5cfb0be4bdddd251072999b04a6cf7a6f5bc63709a84e2c1ffc","generate-encoding-data.py":"be989dd25c6b946e3e8745fdc8e8a80fcf24b3be99ad0b4b78153ba3f6ab6310","rustfmt.toml":"85c1a3b4382fd89e991cbb81b70fb52780472edc064c963943cdaaa56e0a2030","src/ascii.rs":"c44c002641adb5ebc4368707a8cc0a076d2f33e6a5c27b1b69988eb515f5653d","src/big5.rs":"ec6e2913011a38e9a3e825a1731f139a7ca1d5b264fefae51a3cc1a68a57cef9","src/data.rs":"8a617cc57032092d65850eb27e00de687c80aea3299e839a1f58b42d0b35abf3","src/euc_jp.rs":"32047f5b540188c4cb19c07165f846b9786a09f18e315ed3e9bda1293dae52aa","src/euc_kr.rs":"9b25afc72d9378700eecfac58d55ad1c5946d6cd0ccde2c29c08200ef2de6bb9","src/gb18030.rs":"808587168d73f0c80f8520f0ca9b161866ed2efeb17a05e85fdf3b8efe7ba28a","src/handles.rs":"cc83dc0754751d67f5688a65c5e0191cba02f6bacce81a0813a243cba55eef7a","src/iso_2022_jp.rs":"9bb485e82574f4b7d4b2364f0ff276acb6a0bc111758420a3b0ec5e04c196652","src/lib.rs":"1dc07b818e45846b16ddcaf0de46c8862dd7df8099123ec38b95c3f8ad9c91ec","src/macros.rs":"200997f8870de8bfd8cdc475e92115df42108c0df661e49d3d1cbc32056e1d99","src/mem.rs":"0bf34103e0ad1b842a13a082dee2b920b05cf4fb0f145c9ee7f608f4cb4a544f","src/replacement.rs":"7660b34a53f8c1ca2bdfa0e51e843ec28326950952ad8bc96569feb93ac62308","src/shift_jis.rs":"6951ae67e36b1a12fa3a30734957f444d8b1b4ae0e2bde52060b29bd0f16d9d9","src/simd_funcs.rs":"2612aba86e1d201096d7e47a859bc3444f85934cc82d8adc6d39a4304d9eecfc","src/single_byte.rs":"3c9e9c1f946ae622c725ba9421240c1faa9a05e95fa10dd4642a25cb276a1edc","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"23a2e11b02b3b8d15fb5613a625e3edb2c61e70e3c581abfd638719a4088200d","src/testing.rs":"f59e671e95a98a56f6b573e8c6be4d71e670bf52f7e20eb1605d990aafa1894e","src/utf_16.rs":"c071a147fad38d750c2c247e141b76b929a48007b99f26b2922b9caecdaf2f25","src/utf_8.rs":"7b7d887b347f1aefa03246b028a36a72758a4ce76c28f3b45c19467851aa7839","src/variant.rs":"1fab5363588a1554a7169de8731ea9cded7ac63ea35caabdd1c27a8dde68c27b","src/x_user_defined.rs":"c9c010730dfb9f141d4fed19350c08a21af240913a54bb64f5ca89ff93b6b7d1"},"package":"071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394"}
\ No newline at end of file
diff --git a/third_party/rust/encoding_rs/Cargo.toml b/third_party/rust/encoding_rs/Cargo.toml
--- a/third_party/rust/encoding_rs/Cargo.toml
+++ b/third_party/rust/encoding_rs/Cargo.toml
@@ -7,17 +7,17 @@
 #
 # 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 = "encoding_rs"
-version = "0.8.31"
+version = "0.8.32"
 authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
 description = "A Gecko-oriented implementation of the Encoding Standard"
 homepage = "https://docs.rs/encoding_rs/"
 documentation = "https://docs.rs/encoding_rs/"
 readme = "README.md"
 keywords = [
     "encoding",
     "web",
diff --git a/third_party/rust/encoding_rs/README.md b/third_party/rust/encoding_rs/README.md
--- a/third_party/rust/encoding_rs/README.md
+++ b/third_party/rust/encoding_rs/README.md
@@ -440,21 +440,27 @@ To regenerate the generated code:
 - [x] Replace uconv with encoding_rs in Gecko.
 - [x] Implement the rust-encoding API in terms of encoding_rs.
 - [x] Add SIMD acceleration for Aarch64.
 - [x] Investigate the use of NEON on 32-bit ARM.
 - [ ] ~Investigate Björn Höhrmann's lookup table acceleration for UTF-8 as
       adapted to Rust in rust-encoding.~
 - [x] Add actually fast CJK encode options.
 - [ ] ~Investigate [Bob Steagall's lookup table acceleration for UTF-8](https://github.com/BobSteagall/CppNow2018/blob/master/FastConversionFromUTF-8/Fast%20Conversion%20From%20UTF-8%20with%20C%2B%2B%2C%20DFAs%2C%20and%20SSE%20Intrinsics%20-%20Bob%20Steagall%20-%20C%2B%2BNow%202018.pdf).~
-- [ ] Provide a build mode that works without `alloc` (with lesser API surface).
+- [x] Provide a build mode that works without `alloc` (with lesser API surface).
 - [ ] Migrate to `std::simd` once it is stable and declare 1.0.
 
 ## Release Notes
 
+### 0.8.32
+
+* Removed `build.rs`. (This removal should resolve false positives reported by some antivirus products. This may break some build configurations that have opted out of Rust's guarantees against future build breakage.)
+* Internal change to what API is used for reinterpreting the lane configuration of SIMD vectors.
+* Documentation improvements.
+
 ### 0.8.31
 
 * Use SPDX with parentheses now that crates.io supports parentheses.
 
 ### 0.8.30
 
 * Update the licensing information to take into account the WHATWG data license change.
 
diff --git a/third_party/rust/encoding_rs/build.rs b/third_party/rust/encoding_rs/build.rs
deleted file mode 100644
--- a/third_party/rust/encoding_rs/build.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-fn main() {
-    // This does not enable `RUSTC_BOOTSTRAP=1` for `packed_simd`.
-    // You still need to knowingly have a setup that makes
-    // `packed_simd` compile. Therefore, having this file on
-    // crates.io is harmless in terms of users of `encoding_rs`
-    // accidentally depending on nightly features. Having this
-    // here means that if you knowingly want this, you only
-    // need to maintain a fork of `packed_simd` without _also_
-    // having to maintain a fork of `encoding_rs`.
-    #[cfg(feature = "simd-accel")]
-    println!("cargo:rustc-env=RUSTC_BOOTSTRAP=1");
-}
diff --git a/third_party/rust/encoding_rs/src/ascii.rs b/third_party/rust/encoding_rs/src/ascii.rs
--- a/third_party/rust/encoding_rs/src/ascii.rs
+++ b/third_party/rust/encoding_rs/src/ascii.rs
@@ -35,24 +35,22 @@ cfg_if! {
     if #[cfg(feature = "simd-accel")] {
         #[allow(unused_imports)]
         use ::core::intrinsics::unlikely;
         #[allow(unused_imports)]
         use ::core::intrinsics::likely;
     } else {
         #[allow(dead_code)]
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn unlikely(b: bool) -> bool {
+        fn unlikely(b: bool) -> bool {
             b
         }
         #[allow(dead_code)]
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn likely(b: bool) -> bool {
+        fn likely(b: bool) -> bool {
             b
         }
     }
 }
 
 // `as` truncates, so works on 32-bit, too.
 #[allow(dead_code)]
 pub const ASCII_MASK: usize = 0x8080_8080_8080_8080u64 as usize;
diff --git a/third_party/rust/encoding_rs/src/lib.rs b/third_party/rust/encoding_rs/src/lib.rs
--- a/third_party/rust/encoding_rs/src/lib.rs
+++ b/third_party/rust/encoding_rs/src/lib.rs
@@ -164,18 +164,20 @@
 //! assert_eq!(&output[..], expectation);
 //! assert!(!total_had_errors);
 //! ```
 //!
 //! ## UTF-16LE, UTF-16BE and Unicode Encoding Schemes
 //!
 //! The Encoding Standard doesn't specify encoders for UTF-16LE and UTF-16BE,
 //! __so this crate does not provide encoders for those encodings__!
-//! Along with the replacement encoding, their _output encoding_ is UTF-8,
-//! so you get an UTF-8 encoder if you request an encoder for them.
+//! Along with the replacement encoding, their _output encoding_ (i.e. the
+//! encoding used for form submission and error handling in the query string
+//! of URLs) is UTF-8, so you get an UTF-8 encoder if you request an encoder
+//! for them.
 //!
 //! Additionally, the Encoding Standard factors BOM handling into wrapper
 //! algorithms so that BOM handling isn't part of the definition of the
 //! encodings themselves. The Unicode _encoding schemes_ in the Unicode
 //! Standard define BOM handling or lack thereof as part of the encoding
 //! scheme.
 //!
 //! When used with the `_without_bom_handling` entry points, the UTF-16LE
@@ -193,16 +195,20 @@
 //! not part of the behavior of the UTF-16 _encoding scheme_ per the
 //! Unicode Standard.
 //!
 //! The UTF-32 family of Unicode encoding schemes is not supported
 //! by this crate. The Encoding Standard doesn't define any UTF-32
 //! family encodings, since they aren't necessary for consuming Web
 //! content.
 //!
+//! While gb18030 is capable of representing U+FEFF, the Encoding
+//! Standard does not treat the gb18030 byte representation of U+FEFF
+//! as a BOM, so neither does this crate.
+//!
 //! ## ISO-8859-1
 //!
 //! ISO-8859-1 does not exist as a distinct encoding from windows-1252 in
 //! the Encoding Standard. Therefore, an encoding that maps the unsigned
 //! byte value to the same Unicode scalar value is not available via
 //! `Encoding` in this crate.
 //!
 //! However, the functions whose name starts with `convert` and contains
@@ -252,17 +258,18 @@
 //! For single-byte DOS encodings beyond the ones supported by the Encoding
 //! Standard, there is the [`oem_cp`](https://crates.io/crates/oem_cp) crate.
 //!
 //! # Preparing Text for the Encoders
 //!
 //! Normalizing text into Unicode Normalization Form C prior to encoding text
 //! into a legacy encoding minimizes unmappable characters. Text can be
 //! normalized to Unicode Normalization Form C using the
-//! [`unic-normal`](https://crates.io/crates/unic-normal) crate.
+//! [`icu_normalizer`](https://crates.io/crates/icu_normalizer) crate, which
+//! is part of [ICU4X](https://icu4x.unicode.org/).
 //!
 //! The exception is windows-1258, which after normalizing to Unicode
 //! Normalization Form C requires tone marks to be decomposed in order to
 //! minimize unmappable characters. Vietnamese tone marks can be decomposed
 //! using the [`detone`](https://crates.io/crates/detone) crate.
 //!
 //! # Streaming & Non-Streaming; Rust & C/C++
 //!
@@ -277,32 +284,32 @@
 //!
 //! There is no analogous C API exposed via FFI, mainly because C doesn't have
 //! standard types for growable byte buffers and Unicode strings that know
 //! their length.
 //!
 //! The C API (header file generated at `target/include/encoding_rs.h` when
 //! building encoding_rs) can, in turn, be wrapped for use from C++. Such a
 //! C++ wrapper can re-create the non-streaming API in C++ for C++ callers.
-//! The C binding comes with a [C++14 wrapper][2] that uses standard library +
+//! The C binding comes with a [C++17 wrapper][2] that uses standard library +
 //! [GSL][3] types and that recreates the non-streaming API in C++ on top of
-//! the streaming API. A C++ wrapper with XPCOM/MFBT types is being developed
-//! as part of Mozilla [bug 1261841][4].
+//! the streaming API. A C++ wrapper with XPCOM/MFBT types is available as
+//! [`mozilla::Encoding`][4].
 //!
 //! The `Encoding` type is common to both the streaming and non-streaming
 //! modes. In the streaming mode, decoding operations are performed with a
 //! `Decoder` and encoding operations with an `Encoder` object obtained via
 //! `Encoding`. In the non-streaming mode, decoding and encoding operations are
 //! performed using methods on `Encoding` objects themselves, so the `Decoder`
 //! and `Encoder` objects are not used at all.
 //!
 //! [1]: https://github.com/hsivonen/encoding_c
 //! [2]: https://github.com/hsivonen/encoding_c/blob/master/include/encoding_rs_cpp.h
 //! [3]: https://github.com/Microsoft/GSL/
-//! [4]: https://bugzilla.mozilla.org/show_bug.cgi?id=encoding_rs
+//! [4]: https://searchfox.org/mozilla-central/source/intl/Encoding.h
 //!
 //! # Memory management
 //!
 //! The non-streaming mode never performs heap allocations (even the methods
 //! that write into a `Vec<u8>` or a `String` by taking them as arguments do
 //! not reallocate the backing buffer of the `Vec<u8>` or the `String`). That
 //! is, the non-streaming mode uses caller-allocated buffers exclusively.
 //!
@@ -677,17 +684,17 @@
 //! <tr><td>TIS-620</td><td>windows-874</td></tr>
 //! </tbody>
 //! </table>
 //!
 //! See the section [_UTF-16LE, UTF-16BE and Unicode Encoding Schemes_](#utf-16le-utf-16be-and-unicode-encoding-schemes)
 //! for discussion about the UTF-16 family.
 
 #![no_std]
-#![cfg_attr(feature = "simd-accel", feature(stdsimd, core_intrinsics))]
+#![cfg_attr(feature = "simd-accel", feature(core_intrinsics))]
 
 #[cfg(feature = "alloc")]
 #[cfg_attr(test, macro_use)]
 extern crate alloc;
 
 extern crate core;
 #[macro_use]
 extern crate cfg_if;
@@ -2917,33 +2924,38 @@ impl Encoding {
     /// U+0000...U+007F and vice versa.
     #[cfg(feature = "alloc")]
     #[inline]
     fn is_potentially_borrowable(&'static self) -> bool {
         !(self == REPLACEMENT || self == UTF_16BE || self == UTF_16LE)
     }
 
     /// Returns the _output encoding_ of this encoding. This is UTF-8 for
-    /// UTF-16BE, UTF-16LE and replacement and the encoding itself otherwise.
+    /// UTF-16BE, UTF-16LE, and replacement and the encoding itself otherwise.
+    ///
+    /// _Note:_ The _output encoding_ concept is needed for form submission and
+    /// error handling in the query strings of URLs in the Web Platform.
     ///
     /// Available via the C wrapper.
     #[inline]
     pub fn output_encoding(&'static self) -> &'static Encoding {
         if self == REPLACEMENT || self == UTF_16BE || self == UTF_16LE {
             UTF_8
         } else {
             self
         }
     }
 
     /// Decode complete input to `Cow<'a, str>` _with BOM sniffing_ and with
     /// malformed sequences replaced with the REPLACEMENT CHARACTER when the
     /// entire input is available as a single buffer (i.e. the end of the
     /// buffer marks the end of the stream).
     ///
+    /// The BOM, if any, does not appear in the output.
+    ///
     /// This method implements the (non-streaming version of) the
     /// [_decode_](https://encoding.spec.whatwg.org/#decode) spec concept.
     ///
     /// The second item in the returned tuple is the encoding that was actually
     /// used (which may differ from this encoding thanks to BOM sniffing).
     ///
     /// The third item in the returned tuple indicates whether there were
     /// malformed sequences (that were replaced with the REPLACEMENT CHARACTER).
@@ -2980,16 +2992,18 @@ impl Encoding {
         (cow, encoding, had_errors)
     }
 
     /// Decode complete input to `Cow<'a, str>` _with BOM removal_ and with
     /// malformed sequences replaced with the REPLACEMENT CHARACTER when the
     /// entire input is available as a single buffer (i.e. the end of the
     /// buffer marks the end of the stream).
     ///
+    /// Only an initial byte sequence that is a BOM for this encoding is removed.
+    ///
     /// When invoked on `UTF_8`, this method implements the (non-streaming
     /// version of) the
     /// [_UTF-8 decode_](https://encoding.spec.whatwg.org/#utf-8-decode) spec
     /// concept.
     ///
     /// The second item in the returned pair indicates whether there were
     /// malformed sequences (that were replaced with the REPLACEMENT CHARACTER).
     ///
@@ -3212,31 +3226,32 @@ impl Encoding {
                 debug_assert_eq!(read, input.len());
                 Some(Cow::Owned(string))
             }
             DecoderResult::Malformed(_, _) => None,
             DecoderResult::OutputFull => unreachable!(),
         }
     }
 
-    /// Encode complete input to `Cow<'a, [u8]>` with unmappable characters
-    /// replaced with decimal numeric character references when the entire input
-    /// is available as a single buffer (i.e. the end of the buffer marks the
-    /// end of the stream).
+    /// Encode complete input to `Cow<'a, [u8]>` using the
+    /// [_output encoding_](Encoding::output_encoding) of this encoding with
+    /// unmappable characters replaced with decimal numeric character references
+    /// when the entire input is available as a single buffer (i.e. the end of
+    /// the buffer marks the end of the stream).
     ///
     /// This method implements the (non-streaming version of) the
     /// [_encode_](https://encoding.spec.whatwg.org/#encode) spec concept. For
     /// the [_UTF-8 encode_](https://encoding.spec.whatwg.org/#utf-8-encode)
     /// spec concept, it is slightly more efficient to use
     /// <code><var>string</var>.as_bytes()</code> instead of invoking this
     /// method on `UTF_8`.
     ///
     /// The second item in the returned tuple is the encoding that was actually
-    /// used (which may differ from this encoding thanks to some encodings
-    /// having UTF-8 as their output encoding).
+    /// used (*which may differ from this encoding thanks to some encodings
+    /// having UTF-8 as their output encoding*).
     ///
     /// The third item in the returned tuple indicates whether there were
     /// unmappable characters (that were replaced with HTML numeric character
     /// references).
     ///
     /// _Note:_ It is wrong to use this when the input buffer represents only
     /// a segment of the input instead of the whole input. Use `new_encoder()`
     /// when encoding segmented output.
@@ -3315,17 +3330,18 @@ impl Encoding {
 
     fn new_variant_decoder(&'static self) -> VariantDecoder {
         self.variant.new_variant_decoder()
     }
 
     /// Instantiates a new decoder for this encoding with BOM sniffing enabled.
     ///
     /// BOM sniffing may cause the returned decoder to morph into a decoder
-    /// for UTF-8, UTF-16LE or UTF-16BE instead of this encoding.
+    /// for UTF-8, UTF-16LE or UTF-16BE instead of this encoding. The BOM
+    /// does not appear in the output.
     ///
     /// Available via the C wrapper.
     #[inline]
     pub fn new_decoder(&'static self) -> Decoder {
         Decoder::new(self, self.new_variant_decoder(), BomHandling::Sniff)
     }
 
     /// Instantiates a new decoder for this encoding with BOM removal.
@@ -3353,17 +3369,21 @@ impl Encoding {
     /// instead of this method to cause the BOM to be removed.
     ///
     /// Available via the C wrapper.
     #[inline]
     pub fn new_decoder_without_bom_handling(&'static self) -> Decoder {
         Decoder::new(self, self.new_variant_decoder(), BomHandling::Off)
     }
 
-    /// Instantiates a new encoder for the output encoding of this encoding.
+    /// Instantiates a new encoder for the [_output encoding_](Encoding::output_encoding)
+    /// of this encoding.
+    ///
+    /// _Note:_ The output encoding of UTF-16BE, UTF-16LE, and replacement is UTF-8. There
+    /// is no encoder for UTF-16BE, UTF-16LE, and replacement themselves.
     ///
     /// Available via the C wrapper.
     #[inline]
     pub fn new_encoder(&'static self) -> Encoder {
         let enc = self.output_encoding();
         enc.variant.new_encoder(enc)
     }
 
diff --git a/third_party/rust/encoding_rs/src/mem.rs b/third_party/rust/encoding_rs/src/mem.rs
--- a/third_party/rust/encoding_rs/src/mem.rs
+++ b/third_party/rust/encoding_rs/src/mem.rs
@@ -45,23 +45,21 @@ macro_rules! non_fuzz_debug_assert {
 }
 
 cfg_if! {
     if #[cfg(feature = "simd-accel")] {
         use ::core::intrinsics::likely;
         use ::core::intrinsics::unlikely;
     } else {
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn likely(b: bool) -> bool {
+        fn likely(b: bool) -> bool {
             b
         }
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn unlikely(b: bool) -> bool {
+        fn unlikely(b: bool) -> bool {
             b
         }
     }
 }
 
 /// Classification of text as Latin1 (all code points are below U+0100),
 /// left-to-right with some non-Latin1 characters or as containing at least
 /// some right-to-left characters.
@@ -910,17 +908,17 @@ pub fn is_utf8_bidi(buffer: &[u8]) -> bo
                                         *(UTF8_DATA.table.get_unchecked(byte as usize + 0x80))
                                     },
                             ) | u16::from(third >> 6)
                                 | (u16::from(fourth & 0xC0) << 2))
                                 != 0x202
                             {
                                 return true;
                             }
-                            if unsafe { unlikely(second == 0x90 || second == 0x9E) } {
+                            if unlikely(second == 0x90 || second == 0x9E) {
                                 let third = src[read + 2];
                                 if third >= 0xA0 {
                                     return true;
                                 }
                             }
                             read += 4;
                         }
                         _ => {
@@ -1168,17 +1166,17 @@ pub fn is_str_bidi(buffer: &str) -> bool
         if let Some((mut byte, mut read)) = validate_ascii(bytes) {
             'inner: loop {
                 // At this point, `byte` is not included in `read`.
                 if byte < 0xE0 {
                     if byte >= 0x80 {
                         // Two-byte
                         // Adding `unlikely` here improved throughput on
                         // Russian plain text by 33%!
-                        if unsafe { unlikely(byte >= 0xD6) } {
+                        if unlikely(byte >= 0xD6) {
                             if byte == 0xD6 {
                                 let second = bytes[read + 1];
                                 if second > 0x8F {
                                     return true;
                                 }
                             } else {
                                 return true;
                             }
@@ -1192,17 +1190,17 @@ pub fn is_str_bidi(buffer: &str) -> bool
                         // ASCII space, comma and period in non-Latin context.
                         // However, the extra branch seems to cost more than it's
                         // worth.
                         bytes = &bytes[read..];
                         continue 'outer;
                     }
                 } else if byte < 0xF0 {
                     // Three-byte
-                    if unsafe { unlikely(!in_inclusive_range8(byte, 0xE3, 0xEE) && byte != 0xE1) } {
+                    if unlikely(!in_inclusive_range8(byte, 0xE3, 0xEE) && byte != 0xE1) {
                         let second = bytes[read + 1];
                         if byte == 0xE0 {
                             if second < 0xA4 {
                                 return true;
                             }
                         } else if byte == 0xE2 {
                             let third = bytes[read + 2];
                             if second == 0x80 {
@@ -1241,17 +1239,17 @@ pub fn is_str_bidi(buffer: &str) -> bool
                                 }
                             }
                         }
                     }
                     read += 3;
                 } else {
                     // Four-byte
                     let second = bytes[read + 1];
-                    if unsafe { unlikely(byte == 0xF0 && (second == 0x90 || second == 0x9E)) } {
+                    if unlikely(byte == 0xF0 && (second == 0x90 || second == 0x9E)) {
                         let third = bytes[read + 2];
                         if third >= 0xA0 {
                             return true;
                         }
                     }
                     read += 4;
                 }
                 // The comparison is always < or == and never >, but including
@@ -1655,17 +1653,17 @@ pub fn convert_utf16_to_utf8_partial(src
     // The two functions called below are marked `inline(never)` to make
     // transitions from the hot part (first function) into the cold part
     // (second function) go through a return and another call to discouge
     // the CPU from speculating from the hot code into the cold code.
     // Letting the transitions be mere intra-function jumps, even to
     // basic blocks out-of-lined to the end of the function would wipe
     // away a quarter of Arabic encode performance on Haswell!
     let (read, written) = convert_utf16_to_utf8_partial_inner(src, dst);
-    if unsafe { likely(read == src.len()) } {
+    if likely(read == src.len()) {
         return (read, written);
     }
     let (tail_read, tail_written) =
         convert_utf16_to_utf8_partial_tail(&src[read..], &mut dst[written..]);
     (read + tail_read, written + tail_written)
 }
 
 /// Converts potentially-invalid UTF-16 to valid UTF-8 with errors replaced
diff --git a/third_party/rust/encoding_rs/src/simd_funcs.rs b/third_party/rust/encoding_rs/src/simd_funcs.rs
--- a/third_party/rust/encoding_rs/src/simd_funcs.rs
+++ b/third_party/rust/encoding_rs/src/simd_funcs.rs
@@ -4,17 +4,17 @@
 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
 // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
 // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
 use packed_simd::u16x8;
 use packed_simd::u8x16;
-use packed_simd::FromBits;
+use packed_simd::IntoBits;
 
 // TODO: Migrate unaligned access to stdlib code if/when the RFC
 // https://github.com/rust-lang/rfcs/pull/1725 is implemented.
 
 #[inline(always)]
 pub unsafe fn load16_unaligned(ptr: *const u8) -> u8x16 {
     let mut simd = ::core::mem::uninitialized();
     ::core::ptr::copy_nonoverlapping(ptr, &mut simd as *mut u8x16 as *mut u8, 16);
@@ -67,18 +67,16 @@ cfg_if! {
         use core::arch::x86_64::__m128i;
         use core::arch::x86_64::_mm_movemask_epi8;
         use core::arch::x86_64::_mm_packus_epi16;
     } else if #[cfg(all(target_feature = "sse2", target_arch = "x86"))] {
         use core::arch::x86::__m128i;
         use core::arch::x86::_mm_movemask_epi8;
         use core::arch::x86::_mm_packus_epi16;
     } else if #[cfg(target_arch = "aarch64")]{
-        use core::arch::aarch64::uint8x16_t;
-        use core::arch::aarch64::uint16x8_t;
         use core::arch::aarch64::vmaxvq_u8;
         use core::arch::aarch64::vmaxvq_u16;
     } else {
 
     }
 }
 
 // #[inline(always)]
@@ -97,49 +95,49 @@ cfg_if! {
 pub fn simd_byte_swap(s: u16x8) -> u16x8 {
     let left = s << 8;
     let right = s >> 8;
     left | right
 }
 
 #[inline(always)]
 pub fn to_u16_lanes(s: u8x16) -> u16x8 {
-    u16x8::from_bits(s)
+    s.into_bits()
 }
 
 cfg_if! {
     if #[cfg(target_feature = "sse2")] {
 
         // Expose low-level mask instead of higher-level conclusion,
         // because the non-ASCII case would perform less well otherwise.
         #[inline(always)]
         pub fn mask_ascii(s: u8x16) -> i32 {
             unsafe {
-                _mm_movemask_epi8(__m128i::from_bits(s))
+                _mm_movemask_epi8(s.into_bits())
             }
         }
 
     } else {
 
     }
 }
 
 cfg_if! {
     if #[cfg(target_feature = "sse2")] {
         #[inline(always)]
         pub fn simd_is_ascii(s: u8x16) -> bool {
             unsafe {
-                _mm_movemask_epi8(__m128i::from_bits(s)) == 0
+                _mm_movemask_epi8(s.into_bits()) == 0
             }
         }
     } else if #[cfg(target_arch = "aarch64")]{
         #[inline(always)]
         pub fn simd_is_ascii(s: u8x16) -> bool {
             unsafe {
-                vmaxvq_u8(uint8x16_t::from_bits(s)) < 0x80
+                vmaxvq_u8(s.into_bits()) < 0x80
             }
         }
     } else {
         #[inline(always)]
         pub fn simd_is_ascii(s: u8x16) -> bool {
             // This optimizes better on ARM than
             // the lt formulation.
             let highest_ascii = u8x16::splat(0x7F);
@@ -157,41 +155,41 @@ cfg_if! {
             }
             let above_str_latin1 = u8x16::splat(0xC4);
             s.lt(above_str_latin1).all()
         }
     } else if #[cfg(target_arch = "aarch64")]{
         #[inline(always)]
         pub fn simd_is_str_latin1(s: u8x16) -> bool {
             unsafe {
-                vmaxvq_u8(uint8x16_t::from_bits(s)) < 0xC4
+                vmaxvq_u8(s.into_bits()) < 0xC4
             }
         }
     } else {
         #[inline(always)]
         pub fn simd_is_str_latin1(s: u8x16) -> bool {
             let above_str_latin1 = u8x16::splat(0xC4);
             s.lt(above_str_latin1).all()
         }
     }
 }
 
 cfg_if! {
     if #[cfg(target_arch = "aarch64")]{
         #[inline(always)]
         pub fn simd_is_basic_latin(s: u16x8) -> bool {
             unsafe {
-                vmaxvq_u16(uint16x8_t::from_bits(s)) < 0x80
+                vmaxvq_u16(s.into_bits()) < 0x80
             }
         }
 
         #[inline(always)]
         pub fn simd_is_latin1(s: u16x8) -> bool {
             unsafe {
-                vmaxvq_u16(uint16x8_t::from_bits(s)) < 0x100
+                vmaxvq_u16(s.into_bits()) < 0x100
             }
         }
     } else {
         #[inline(always)]
         pub fn simd_is_basic_latin(s: u16x8) -> bool {
             let above_ascii = u16x8::splat(0x80);
             s.lt(above_ascii).all()
         }
@@ -214,17 +212,17 @@ pub fn contains_surrogates(s: u16x8) -> 
     (s & mask).eq(surrogate_bits).any()
 }
 
 cfg_if! {
     if #[cfg(target_arch = "aarch64")]{
         macro_rules! aarch64_return_false_if_below_hebrew {
             ($s:ident) => ({
                 unsafe {
-                    if vmaxvq_u16(uint16x8_t::from_bits($s)) < 0x0590 {
+                    if vmaxvq_u16($s.into_bits()) < 0x0590 {
                         return false;
                     }
                 }
             })
         }
 
         macro_rules! non_aarch64_return_false_if_all {
             ($s:ident) => ()
@@ -291,34 +289,34 @@ pub fn simd_unpack(s: u8x16) -> (u16x8, 
             u8x16::splat(0),
             [0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23]
         );
         let second: u8x16 = shuffle!(
             s,
             u8x16::splat(0),
             [8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31]
         );
-        (u16x8::from_bits(first), u16x8::from_bits(second))
+        (first.into_bits(), second.into_bits())
     }
 }
 
 cfg_if! {
     if #[cfg(target_feature = "sse2")] {
         #[inline(always)]
         pub fn simd_pack(a: u16x8, b: u16x8) -> u8x16 {
             unsafe {
-                u8x16::from_bits(_mm_packus_epi16(__m128i::from_bits(a), __m128i::from_bits(b)))
+                _mm_packus_epi16(a.into_bits(), b.into_bits()).into_bits()
             }
         }
     } else {
         #[inline(always)]
         pub fn simd_pack(a: u16x8, b: u16x8) -> u8x16 {
             unsafe {
-                let first = u8x16::from_bits(a);
-                let second = u8x16::from_bits(b);
+                let first: u8x16 = a.into_bits();
+                let second: u8x16 = b.into_bits();
                 shuffle!(
                     first,
                     second,
                     [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]
                 )
             }
         }
     }
diff --git a/third_party/rust/encoding_rs/src/utf_8.rs b/third_party/rust/encoding_rs/src/utf_8.rs
--- a/third_party/rust/encoding_rs/src/utf_8.rs
+++ b/third_party/rust/encoding_rs/src/utf_8.rs
@@ -16,23 +16,21 @@ use crate::mem::convert_utf16_to_utf8_pa
 use crate::variant::*;
 
 cfg_if! {
     if #[cfg(feature = "simd-accel")] {
         use ::core::intrinsics::unlikely;
         use ::core::intrinsics::likely;
     } else {
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn unlikely(b: bool) -> bool {
+        fn unlikely(b: bool) -> bool {
             b
         }
         #[inline(always)]
-        // Unsafe to match the intrinsic, which is needlessly unsafe.
-        unsafe fn likely(b: bool) -> bool {
+        fn likely(b: bool) -> bool {
             b
         }
     }
 }
 
 #[repr(align(64))] // Align to cache lines
 pub struct Utf8Data {
     pub table: [u8; 384],
@@ -83,63 +81,63 @@ pub fn utf8_valid_up_to(src: &[u8]) -> u
             }
         };
         // Check for the longest sequence to avoid checking twice for the
         // multi-byte sequences. This can't overflow with 64-bit address space,
         // because full 64 bits aren't in use. In the 32-bit PAE case, for this
         // to overflow would mean that the source slice would be so large that
         // the address space of the process would not have space for any code.
         // Therefore, the slice cannot be so long that this would overflow.
-        if unsafe { likely(read + 4 <= src.len()) } {
+        if likely(read + 4 <= src.len()) {
             'inner: loop {
                 // At this point, `byte` is not included in `read`, because we
                 // don't yet know that a) the UTF-8 sequence is valid and b) that there
                 // is output space if it is an astral sequence.
                 // Inspecting the lead byte directly is faster than what the
                 // std lib does!
-                if unsafe { likely(in_inclusive_range8(byte, 0xC2, 0xDF)) } {
+                if likely(in_inclusive_range8(byte, 0xC2, 0xDF)) {
                     // Two-byte
                     let second = unsafe { *(src.get_unchecked(read + 1)) };
                     if !in_inclusive_range8(second, 0x80, 0xBF) {
                         break 'outer;
                     }
                     read += 2;
 
                     // Next lead (manually inlined)
-                    if unsafe { likely(read + 4 <= src.len()) } {
+                    if likely(read + 4 <= src.len()) {
                         byte = unsafe { *(src.get_unchecked(read)) };
                         if byte < 0x80 {
                             read += 1;
                             continue 'outer;
                         }
                         continue 'inner;
                     }
                     break 'inner;
                 }
-                if unsafe { likely(byte < 0xF0) } {
+                if likely(byte < 0xF0) {
                     'three: loop {
                         // Three-byte
                         let second = unsafe { *(src.get_unchecked(read + 1)) };
                         let third = unsafe { *(src.get_unchecked(read + 2)) };
                         if ((UTF8_DATA.table[usize::from(second)]
                             & unsafe { *(UTF8_DATA.table.get_unchecked(byte as usize + 0x80)) })
                             | (third >> 6))
                             != 2
                         {
                             break 'outer;
                         }
                         read += 3;
 
                         // Next lead (manually inlined)
-                        if unsafe { likely(read + 4 <= src.len()) } {
+                        if likely(read + 4 <= src.len()) {
                             byte = unsafe { *(src.get_unchecked(read)) };
                             if in_inclusive_range8(byte, 0xE0, 0xEF) {
                                 continue 'three;
                             }
-                            if unsafe { likely(byte < 0x80) } {
+                            if likely(byte < 0x80) {
                                 read += 1;
                                 continue 'outer;
                             }
                             continue 'inner;
                         }
                         break 'inner;
                     }
                 }
@@ -154,17 +152,17 @@ pub fn utf8_valid_up_to(src: &[u8]) -> u
                     | (u16::from(fourth & 0xC0) << 2))
                     != 0x202
                 {
                     break 'outer;
                 }
                 read += 4;
 
                 // Next lead
-                if unsafe { likely(read + 4 <= src.len()) } {
+                if likely(read + 4 <= src.len()) {
                     byte = unsafe { *(src.get_unchecked(read)) };
                     if byte < 0x80 {
                         read += 1;
                         continue 'outer;
                     }
                     continue 'inner;
                 }
                 break 'inner;
@@ -253,56 +251,56 @@ pub fn convert_utf8_to_utf16_up_to_inval
             }
         };
         // Check for the longest sequence to avoid checking twice for the
         // multi-byte sequences. This can't overflow with 64-bit address space,
         // because full 64 bits aren't in use. In the 32-bit PAE case, for this
         // to overflow would mean that the source slice would be so large that
         // the address space of the process would not have space for any code.
         // Therefore, the slice cannot be so long that this would overflow.
-        if unsafe { likely(read + 4 <= src.len()) } {
+        if likely(read + 4 <= src.len()) {
             'inner: loop {
                 // At this point, `byte` is not included in `read`, because we
                 // don't yet know that a) the UTF-8 sequence is valid and b) that there
                 // is output space if it is an astral sequence.
                 // We know, thanks to `ascii_to_basic_latin` that there is output
                 // space for at least one UTF-16 code unit, so no need to check
                 // for output space in the BMP cases.
                 // Inspecting the lead byte directly is faster than what the
                 // std lib does!
-                if unsafe { likely(in_inclusive_range8(byte, 0xC2, 0xDF)) } {
+                if likely(in_inclusive_range8(byte, 0xC2, 0xDF)) {
                     // Two-byte
                     let second = unsafe { *(src.get_unchecked(read + 1)) };
                     if !in_inclusive_range8(second, 0x80, 0xBF) {
                         break 'outer;
                     }
                     unsafe {
                         *(dst.get_unchecked_mut(written)) =
                             ((u16::from(byte) & 0x1F) << 6) | (u16::from(second) & 0x3F)
                     };
                     read += 2;
                     written += 1;
 
                     // Next lead (manually inlined)
                     if written == dst.len() {
                         break 'outer;
                     }
-                    if unsafe { likely(read + 4 <= src.len()) } {
+                    if likely(read + 4 <= src.len()) {
                         byte = unsafe { *(src.get_unchecked(read)) };
                         if byte < 0x80 {
                             unsafe { *(dst.get_unchecked_mut(written)) = u16::from(byte) };
                             read += 1;
                             written += 1;
                             continue 'outer;
                         }
                         continue 'inner;
                     }
                     break 'inner;
                 }
-                if unsafe { likely(byte < 0xF0) } {
+                if likely(byte < 0xF0) {
                     'three: loop {
                         // Three-byte
                         let second = unsafe { *(src.get_unchecked(read + 1)) };
                         let third = unsafe { *(src.get_unchecked(read + 2)) };
                         if ((UTF8_DATA.table[usize::from(second)]
                             & unsafe { *(UTF8_DATA.table.get_unchecked(byte as usize + 0x80)) })
                             | (third >> 6))
                             != 2
@@ -315,22 +313,22 @@ pub fn convert_utf8_to_utf16_up_to_inval
                         unsafe { *(dst.get_unchecked_mut(written)) = point };
                         read += 3;
                         written += 1;
 
                         // Next lead (manually inlined)
                         if written == dst.len() {
                             break 'outer;
                         }
-                        if unsafe { likely(read + 4 <= src.len()) } {
+                        if likely(read + 4 <= src.len()) {
                             byte = unsafe { *(src.get_unchecked(read)) };
                             if in_inclusive_range8(byte, 0xE0, 0xEF) {
                                 continue 'three;
                             }
-                            if unsafe { likely(byte < 0x80) } {
+                            if likely(byte < 0x80) {
                                 unsafe { *(dst.get_unchecked_mut(written)) = u16::from(byte) };
                                 read += 1;
                                 written += 1;
                                 continue 'outer;
                             }
                             continue 'inner;
                         }
                         break 'inner;
@@ -362,17 +360,17 @@ pub fn convert_utf8_to_utf16_up_to_inval
                 };
                 read += 4;
                 written += 2;
 
                 // Next lead
                 if written == dst.len() {
                     break 'outer;
                 }
-                if unsafe { likely(read + 4 <= src.len()) } {
+                if likely(read + 4 <= src.len()) {
                     byte = unsafe { *(src.get_unchecked(read)) };
                     if byte < 0x80 {
                         unsafe { *(dst.get_unchecked_mut(written)) = u16::from(byte) };
                         read += 1;
                         written += 1;
                         continue 'outer;
                     }
                     continue 'inner;
@@ -649,28 +647,28 @@ pub fn convert_utf16_to_utf8_partial_inn
                         *(dst.get_unchecked_mut(written)) = (unit >> 6) as u8 | 0xC0u8;
                         written += 1;
                         *(dst.get_unchecked_mut(written)) = (unit & 0x3F) as u8 | 0x80u8;
                         written += 1;
                     }
                     break;
                 }
                 let unit_minus_surrogate_start = unit.wrapping_sub(0xD800);
-                if unsafe { likely(unit_minus_surrogate_start > (0xDFFF - 0xD800)) } {
+                if likely(unit_minus_surrogate_start > (0xDFFF - 0xD800)) {
                     unsafe {
                         *(dst.get_unchecked_mut(written)) = (unit >> 12) as u8 | 0xE0u8;
                         written += 1;
                         *(dst.get_unchecked_mut(written)) = ((unit & 0xFC0) >> 6) as u8 | 0x80u8;
                         written += 1;
                         *(dst.get_unchecked_mut(written)) = (unit & 0x3F) as u8 | 0x80u8;
                         written += 1;
                     }
                     break;
                 }
-                if unsafe { likely(unit_minus_surrogate_start <= (0xDBFF - 0xD800)) } {
+                if likely(unit_minus_surrogate_start <= (0xDBFF - 0xD800)) {
                     // high surrogate
                     // read > src.len() is impossible, but using
                     // >= instead of == allows the compiler to elide a bound check.
                     if read >= src.len() {
                         debug_assert_eq!(read, src.len());
                         // Unpaired surrogate at the end of the buffer.
                         unsafe {
                             *(dst.get_unchecked_mut(written)) = 0xEFu8;
@@ -679,17 +677,17 @@ pub fn convert_utf16_to_utf8_partial_inn
                             written += 1;
                             *(dst.get_unchecked_mut(written)) = 0xBDu8;
                             written += 1;
                         }
                         return (read, written);
                     }
                     let second = src[read];
                     let second_minus_low_surrogate_start = second.wrapping_sub(0xDC00);
-                    if unsafe { likely(second_minus_low_surrogate_start <= (0xDFFF - 0xDC00)) } {
+                    if likely(second_minus_low_surrogate_start <= (0xDFFF - 0xDC00)) {
                         // The next code unit is a low surrogate. Advance position.
                         read += 1;
                         let astral = (u32::from(unit) << 10) + u32::from(second)
                             - (((0xD800u32 << 10) - 0x10000u32) + 0xDC00u32);
                         unsafe {
                             *(dst.get_unchecked_mut(written)) = (astral >> 18) as u8 | 0xF0u8;
                             written += 1;
                             *(dst.get_unchecked_mut(written)) =
@@ -721,17 +719,17 @@ pub fn convert_utf16_to_utf8_partial_inn
             // Now see if the next unit is Basic Latin
             // read > src.len() is impossible, but using
             // >= instead of == allows the compiler to elide a bound check.
             if read >= src.len() {
                 debug_assert_eq!(read, src.len());
                 return (read, written);
             }
             unit = src[read];
-            if unsafe { unlikely(unit < 0x80) } {
+            if unlikely(unit < 0x80) {
                 // written > dst.len() is impossible, but using
                 // >= instead of == allows the compiler to elide a bound check.
                 if written >= dst.len() {
                     debug_assert_eq!(written, dst.len());
                     return (read, written);
                 }
                 dst[written] = unit as u8;
                 read += 1;
openSUSE Build Service is sponsored by